73 Commits

Author SHA1 Message Date
GreenComfyTea
9e18f27f14 chore: Bump version to 2.7.4 2025-12-31 10:17:22 +02:00
GreenComfyTea
b013eca872 feat: Added partial spanish localization by LLDan 2025-12-31 10:16:48 +02:00
GreenComfyTea
837c45bb33 Update README.md 2024-09-07 10:44:40 +03:00
Artjoms Lužnovs
30f76efd37 Bump version to v2.7.3 2024-09-07 10:37:44 +03:00
GreenComfyTea
dad031af4b Merge pull request #72 from Krude/main
Create de-de (German) translation
2024-09-07 10:26:32 +03:00
Krude
2f355308ce Update de-de.json
Add 2 more untranslated strings I missed, and slight changes to better reflect Capcom's official word choices.
2024-09-02 19:56:16 +02:00
Krude
c6708876b1 Add untranslated string for Deadly Poison to de-de 2024-08-31 20:41:32 +02:00
Krude
a6160f77fd Create de-de.json
Create German translation for MHR Overlay v2.7.2
2024-08-31 20:27:24 +02:00
GreenComfyTea
e0e7c9d824 Update README.md 2024-06-29 10:47:58 +03:00
GreenComfyTea
3bd627fdfb Update README.md 2024-06-29 10:47:36 +03:00
GreenComfyTea
beeb45db46 Bump version to v2.7.2 2024-06-29 10:39:08 +03:00
GreenComfyTea
a82168fc4e Micro optimizations 2024-06-29 10:38:51 +03:00
GreenComfyTea
d62a72a778 [Monster UI] Fix an issue when run away monsters UI was not disappearing 2024-06-29 10:38:29 +03:00
GreenComfyTea
2390bfe8ac Bump version to v2.7.1 2024-05-23 18:35:07 +03:00
GreenComfyTea
7398bab9ea [Buff UI] Fix buffs not working when Sorting by Timer/Duration is selected 2024-05-12 10:26:43 +03:00
GreenComfyTea
877a48583a Update russian localization 2024-05-11 08:26:14 +03:00
GreenComfyTea
ee6dfe2139 Hide some errors 2024-05-11 08:06:20 +03:00
GreenComfyTea
d4c52617d9 Add Endemic Life Head Tracking 2024-05-06 19:08:08 +03:00
GreenComfyTea
30d858b1f8 Bump version to 2.7 2024-05-06 18:45:16 +03:00
GreenComfyTea
3c8f5019ab Grammar 2024-05-06 18:44:49 +03:00
GreenComfyTea
4caa69930d Add Small and Large Monster Head Tracking 2024-05-06 18:44:33 +03:00
GreenComfyTea
874c89daa5 Update README.md 2024-04-10 13:53:11 +03:00
GreenComfyTea
26590a3e0b Bump version to v2.6.6 2024-03-01 16:57:15 +02:00
GreenComfyTea
1439498a67 [Hunting Horn -> Bead of Resonance]: Fixed in online when not host 2024-03-01 16:57:01 +02:00
GreenComfyTea
6a876ccdb4 Revert "Whitelist default.json localization file"
This reverts commit 9560dad602.
2024-02-09 10:48:45 +02:00
GreenComfyTea
9560dad602 Whitelist default.json localization file 2024-02-09 10:46:56 +02:00
GreenComfyTea
032b77ca95 Bump version to v2.6.5 2024-02-09 10:42:53 +02:00
GreenComfyTea
efdaae5b5a Formatting 2024-02-09 10:42:37 +02:00
GreenComfyTea
419d25070b Make keyboard.update() event-based 2024-02-09 10:42:21 +02:00
GreenComfyTea
bee2e7d873 Update README.md 2024-01-27 13:43:29 +02:00
GreenComfyTea
9bcc1142f6 Update README.md 2024-01-22 20:23:21 +02:00
GreenComfyTea
afec53e5f1 Bump version to 2.6.4 2024-01-22 19:38:42 +02:00
GreenComfyTea
b3cfa61660 Buff UI -> Fix Rampage Skills filters not working 2024-01-22 19:38:11 +02:00
GreenComfyTea
2f10a5d9e5 Buff UI -> Fix Harvest Moon not getting cleared when the buff expires or when skill is switched 2024-01-22 19:37:42 +02:00
GreenComfyTea
0dc74d4cc9 Buff UI -> Clear buff data on error 2024-01-22 19:36:12 +02:00
GreenComfyTea
9b82e27725 Bump version to 2.6.3 2023-10-29 15:36:43 +02:00
GreenComfyTea
2a3c8106d5 Fix: Power Shealthe, Sonic Boom, Bead of Resonance 2023-10-29 15:36:26 +02:00
GreenComfyTea
3b89ce8303 Bump version to v2.6.2 2023-10-24 10:15:42 +03:00
GreenComfyTea
f2e23626cf Fix creating DEFAULT file in /data/ when no config 2023-10-24 10:15:19 +03:00
GreenComfyTea
8a55873e14 Bump version to 2.6.1 2023-10-16 08:56:48 +03:00
GreenComfyTea
b93bdd0338 Add Buff UI and Stats UI to Hotkeys
+ Fix a Bug when Removed Hotkey was not Saved in the Config
+ Allow Changing Selected Hotkey when Any Other Hotkey is Waiting for a Keypress
2023-10-16 08:55:46 +03:00
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
53 changed files with 7406 additions and 2862 deletions

View File

@@ -34,14 +34,14 @@
<img alt="Platform" src="https://custom-icon-badges.demolab.com/badge/platform-win%20%7C%20linux%20%7C%20steam%20deck-blue?logo=device-desktop" /> <img alt="Platform" src="https://custom-icon-badges.demolab.com/badge/platform-win%20%7C%20linux%20%7C%20steam%20deck-blue?logo=device-desktop" />
</a> </a>
<a href=""> <a href="">
<img alt="Maintenance" src="https://custom-icon-badges.demolab.com/maintenance/yes/2023?logo=tools" /> <img alt="Maintenance" src="https://custom-icon-badges.demolab.com/maintenance/yes/2024?logo=tools" />
</a> </a>
<br> <br>
<a href="https://www.nexusmods.com/monsterhunterrise/mods/26"> <a href="https://www.nexusmods.com/monsterhunterrise/mods/26">
<img alt="REFramework Dependency" src="https://custom-icon-badges.demolab.com/badge/dependency-REFramework%20v1.503%2B-green?logo=package-dependencies" /> <img alt="REFramework Dependency" src="https://custom-icon-badges.demolab.com/badge/dependency-REFramework%20v1.5.7%2B-green?logo=package-dependencies" />
</a> </a>
<a href="https://www.nexusmods.com/monsterhunterrise/mods/134"> <a href="https://www.nexusmods.com/monsterhunterrise/mods/134">
<img alt="REFramework Direct2D Dependency" src="https://custom-icon-badges.demolab.com/badge/dependency-REFramework%20Direct2D%20v0.4.0%2B-yellow?logo=package-dependencies" /> <img alt="REFramework Direct2D Dependency" src="https://custom-icon-badges.demolab.com/badge/dependency-REFramework%20Direct2D%20v1.0.1%2B-green?logo=package-dependencies" />
</a> </a>
<br> <br>
<br> <br>
@@ -135,33 +135,35 @@
* **[Troubleshooting](https://github.com/GreenComfyTea/MHR-Overlay/wiki/Troubleshooting)** * **[Troubleshooting](https://github.com/GreenComfyTea/MHR-Overlay/wiki/Troubleshooting)**
# Requirements # Requirements
1. [REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26) (v1.503+); 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. 2. **[REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134)** (v1.0.0+) - Needed for Unicode Support.
# How to install: # How to install:
1. Install [REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26); 1. Install **[REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26)**;
2. Install [REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134); 2. Install **[REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134)**;
>**:pushpin: Windows:** Works normally. >**: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: 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: 3. Download the mod:
* Official release can be downloaded from [Nexus Mods](https://www.nexusmods.com/monsterhunterrise/mods/50); * 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! * 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. 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 # Credits
**GreenComfyTea** - creator of the mod and it's main contributor. **[GreenComfyTea](https://github.com/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. **[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.
**praydog2** - creator of [REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26). Contributed huge improvements to the performance of the mod. **[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** - creator of [coavins damage meter](https://www.nexusmods.com/monsterhunterrise/mods/68) 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. **[neatnet](https://github.com/neatnet)** - Korean translation.
**s9000008, mcc1** - Traditional Chinese translation. **[s9000008](https://github.com/s9000008)**, **[mcc1](https://github.com/mcc1)** - Traditional Chinese translation.
**etnAtker**, **sukiqwq** - Simplified Chinese translation. **[etnAtker](https://github.com/etnAtker)**, **[sukiqwq](https://github.com/sukiqwq)** - Simplified Chinese translation.
**AKILAND0214** - Japanese translation. **[AKILAND0214](https://github.com/AKILAND0214)** - Japanese translation.
**[Krude](https://github.com/Krude)** - German translation.
*** ***
# Support # Support

View File

@@ -271,242 +271,253 @@ log.info("[MHR Overlay] Loaded.");
-- #region -- #region
local function update_modules(module_visibility_config, flow_state_name) 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 current_config = config.current_config;
local success = pcall(small_monster_UI.update);
if module_visibility_config.small_monster_UI and current_config.small_monster_UI.enabled then
local success, error = pcall(small_monster_UI.update);
if not success then 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
end end
local large_monster_UI_config = config.current_config.large_monster_UI; local large_monster_UI_config = current_config.large_monster_UI;
local dynamic_enabled = large_monster_UI_config.dynamic.enabled and module_visibility_config.large_monster_dynamic_UI; local dynamic_enabled = large_monster_UI_config.dynamic.enabled and module_visibility_config.large_monster_dynamic_UI;
local static_enabled = large_monster_UI_config.static.enabled and module_visibility_config.large_monster_static_UI; local static_enabled = large_monster_UI_config.static.enabled and module_visibility_config.large_monster_static_UI;
local highlighted_enabled = large_monster_UI_config.highlighted.enabled and module_visibility_config.large_monster_highlighted_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 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 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
end end
if config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then if 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 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
end end
if config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then if 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 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
end end
if config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then if 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 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 end
end end
local function draw_modules(module_visibility_config, flow_state_name) 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 current_config = config.current_config;
local success = pcall(small_monster_UI.draw);
if module_visibility_config.small_monster_UI and current_config.small_monster_UI.enabled then
local success, error = pcall(small_monster_UI.draw);
if not success then 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
end end
local large_monster_UI_config = config.current_config.large_monster_UI; local large_monster_UI_config = current_config.large_monster_UI;
local dynamic_enabled = large_monster_UI_config.dynamic.enabled and module_visibility_config.large_monster_dynamic_UI; local dynamic_enabled = large_monster_UI_config.dynamic.enabled and module_visibility_config.large_monster_dynamic_UI;
local static_enabled = large_monster_UI_config.static.enabled and module_visibility_config.large_monster_static_UI; local static_enabled = large_monster_UI_config.static.enabled and module_visibility_config.large_monster_static_UI;
local highlighted_enabled = large_monster_UI_config.highlighted.enabled and module_visibility_config.large_monster_highlighted_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 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 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
end end
if config.current_config.time_UI.enabled and module_visibility_config.time_UI then if 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 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
end end
if config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then if 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 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
end end
if config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then if 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 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
end end
if config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then if 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 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
end end
if config.current_config.stats_UI.enabled and module_visibility_config.stats_UI then if 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 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 end
end end
local function update_UI() local function update_UI()
if quest_status.flow_state == quest_status.flow_states.IN_TRAINING_AREA then local current_config = config.current_config;
local module_visibility_config = current_config.global_settings.module_visibility;
local flow_states = quest_status.flow_states;
local large_monster_UI_config = config.current_config.large_monster_UI; if quest_status.flow_state == flow_states.IN_TRAINING_AREA then
local module_visibility_config = config.current_config.global_settings.module_visibility.in_training_area;
local dynamic_enabled = large_monster_UI_config.dynamic.enabled and module_visibility_config.large_monster_dynamic_UI; local large_monster_UI_config = current_config.large_monster_UI;
local static_enabled = large_monster_UI_config.static.enabled and module_visibility_config.large_monster_static_UI; local module_visibility_in_training_area_config = module_visibility_config.in_training_area;
local highlighted_enabled = large_monster_UI_config.highlighted.enabled and module_visibility_config.large_monster_highlighted_UI;
local dynamic_enabled = large_monster_UI_config.dynamic.enabled and module_visibility_in_training_area_config.large_monster_dynamic_UI;
local static_enabled = large_monster_UI_config.static.enabled and module_visibility_in_training_area_config.large_monster_static_UI;
local highlighted_enabled = large_monster_UI_config.highlighted.enabled and module_visibility_in_training_area_config.large_monster_highlighted_UI;
if dynamic_enabled or static_enabled or highlighted_enabled then if dynamic_enabled or static_enabled or highlighted_enabled then
local success = pcall(large_monster_UI.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 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
end end
if config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then if current_config.damage_meter_UI.enabled and module_visibility_in_training_area_config.damage_meter_UI then
local success = pcall(damage_meter_UI.update); local success, error = pcall(damage_meter_UI.update);
if not success then 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
end end
if config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then if current_config.endemic_life_UI.enabled and module_visibility_in_training_area_config.endemic_life_UI then
local success = pcall(env_creature_UI.update); local success, error = pcall(env_creature_UI.update);
if not success then 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
end end
if config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then if current_config.buff_UI.enabled and module_visibility_in_training_area_config.buff_UI then
local success = pcall(buff_UI.update); local success, error = pcall(buff_UI.update);
if not success then 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
end end
elseif quest_status.flow_state == quest_status.flow_states.CUTSCENE then elseif quest_status.flow_state == flow_states.CUTSCENE then
update_modules(config.current_config.global_settings.module_visibility.cutscene, "Cutscene"); update_modules(module_visibility_config.cutscene, "Cutscene");
elseif quest_status.flow_state == quest_status.flow_states.LOADING_QUEST then elseif quest_status.flow_state == flow_states.LOADING_QUEST then
update_modules(config.current_config.global_settings.module_visibility.loading_quest, "Loading Quest"); update_modules(module_visibility_config.loading_quest, "Loading Quest");
elseif quest_status.flow_state == quest_status.flow_states.QUEST_START_ANIMATION then elseif quest_status.flow_state == flow_states.QUEST_START_ANIMATION then
update_modules(config.current_config.global_settings.module_visibility.quest_start_animation, "Quest Start Animation"); update_modules(module_visibility_config.quest_start_animation, "Quest Start Animation");
elseif quest_status.flow_state >= quest_status.flow_states.PLAYING_QUEST and quest_status.flow_state <= quest_status.flow_states.WYVERN_RIDING_START_ANIMATION then elseif quest_status.flow_state >= flow_states.PLAYING_QUEST and quest_status.flow_state <= flow_states.WYVERN_RIDING_START_ANIMATION then
update_modules(config.current_config.global_settings.module_visibility.playing_quest, "Playing Quest"); update_modules(module_visibility_config.playing_quest, "Playing Quest");
elseif quest_status.flow_state == quest_status.flow_states.KILLCAM then elseif quest_status.flow_state == flow_states.KILLCAM then
update_modules(config.current_config.global_settings.module_visibility.killcam, "Killcam"); update_modules(module_visibility_config.killcam, "Killcam");
elseif quest_status.flow_state == quest_status.flow_states.QUEST_END_TIMER then elseif quest_status.flow_state == flow_states.QUEST_END_TIMER then
update_modules(config.current_config.global_settings.module_visibility.quest_end_timer, "Quest End Timer"); update_modules(module_visibility_config.quest_end_timer, "Quest End Timer");
elseif quest_status.flow_state == quest_status.flow_states.QUEST_END_ANIMATION then elseif quest_status.flow_state == flow_states.QUEST_END_ANIMATION then
update_modules(config.current_config.global_settings.module_visibility.quest_end_animation, "Quest End Animation"); update_modules(module_visibility_config.quest_end_animation, "Quest End Animation");
elseif quest_status.flow_state == quest_status.flow_states.QUEST_END_SCREEN then elseif quest_status.flow_state == flow_states.QUEST_END_SCREEN then
update_modules(config.current_config.global_settings.module_visibility.quest_end_screen, "Quest End Screen"); update_modules(module_visibility_config.quest_end_screen, "Quest End Screen");
elseif quest_status.flow_state == quest_status.flow_states.REWARD_SCREEN then elseif quest_status.flow_state == flow_states.REWARD_SCREEN then
update_modules(config.current_config.global_settings.module_visibility.reward_screen, "Reward Screen"); update_modules(module_visibility_config.reward_screen, "Reward Screen");
elseif quest_status.flow_state == quest_status.flow_states.SUMMARY_SCREEN then elseif quest_status.flow_state == flow_states.SUMMARY_SCREEN then
update_modules(config.current_config.global_settings.module_visibility.summary_screen, "Summary Screen"); update_modules(module_visibility_config.summary_screen, "Summary Screen");
end end
end end
local function draw_loop() local function draw_loop()
if quest_status.flow_state == quest_status.flow_states.IN_LOBBY then local current_config = config.current_config;
local module_visibility_config = config.current_config.global_settings.module_visibility.in_lobby; local module_visibility_config = current_config.global_settings.module_visibility;
local flow_states = quest_status.flow_states;
if config.current_config.stats_UI.enabled and module_visibility_config.stats_UI then if quest_status.flow_state == flow_states.IN_LOBBY then
local success = pcall(stats_UI.draw); local module_visibility_in_lobby_config = module_visibility_config.in_lobby;
if current_config.stats_UI.enabled and module_visibility_in_lobby_config.stats_UI then
local success, error = pcall(stats_UI.draw);
if not success then 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
end end
elseif quest_status.flow_state == quest_status.flow_states.IN_TRAINING_AREA then elseif quest_status.flow_state == flow_states.IN_TRAINING_AREA then
local large_monster_UI_config = config.current_config.large_monster_UI; local large_monster_UI_config = current_config.large_monster_UI;
local module_visibility_config = config.current_config.global_settings.module_visibility.in_training_area; local module_visibility_in_training_area_config = module_visibility_config.in_training_area;
local dynamic_enabled = large_monster_UI_config.dynamic.enabled and module_visibility_config.large_monster_dynamic_UI; local dynamic_enabled = large_monster_UI_config.dynamic.enabled and module_visibility_in_training_area_config.large_monster_dynamic_UI;
local static_enabled = large_monster_UI_config.static.enabled and module_visibility_config.large_monster_static_UI; local static_enabled = large_monster_UI_config.static.enabled and module_visibility_in_training_area_config.large_monster_static_UI;
local highlighted_enabled = large_monster_UI_config.highlighted.enabled and module_visibility_config.large_monster_highlighted_UI; local highlighted_enabled = large_monster_UI_config.highlighted.enabled and module_visibility_in_training_area_config.large_monster_highlighted_UI;
if dynamic_enabled or static_enabled or highlighted_enabled then if dynamic_enabled or static_enabled or highlighted_enabled then
local success = pcall(large_monster_UI.draw, dynamic_enabled, static_enabled, highlighted_enabled); local success, error = pcall(large_monster_UI.draw, dynamic_enabled, static_enabled, highlighted_enabled);
if not success then 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
end end
if config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then if current_config.damage_meter_UI.enabled and module_visibility_in_training_area_config.damage_meter_UI then
local success = pcall(damage_meter_UI.draw); local success, error = pcall(damage_meter_UI.draw);
if not success then 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
end end
if config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then if current_config.endemic_life_UI.enabled and module_visibility_in_training_area_config.endemic_life_UI then
local success = pcall(env_creature_UI.draw); local success, error = pcall(env_creature_UI.draw);
if not success then 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
end end
if config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then if current_config.buff_UI.enabled and module_visibility_in_training_area_config.buff_UI then
local success = pcall(buff_UI.draw); local success, error = pcall(buff_UI.draw);
if not success then 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
end end
if config.current_config.stats_UI.enabled and module_visibility_config.stats_UI then if current_config.stats_UI.enabled and module_visibility_in_training_area_config.stats_UI then
local success = pcall(stats_UI.draw); local success, error = pcall(stats_UI.draw);
if not success then 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
end end
elseif quest_status.flow_state == flow_states.CUTSCENE then
elseif quest_status.flow_state == quest_status.flow_states.CUTSCENE then draw_modules(module_visibility_config.cutscene, "Cutscene");
draw_modules(config.current_config.global_settings.module_visibility.cutscene, "Cutscene"); elseif quest_status.flow_state == flow_states.LOADING_QUEST then
elseif quest_status.flow_state == quest_status.flow_states.LOADING_QUEST then draw_modules(module_visibility_config.loading_quest, "Loading Quest");
draw_modules(config.current_config.global_settings.module_visibility.loading_quest, "Loading Quest"); elseif quest_status.flow_state == flow_states.QUEST_START_ANIMATION then
elseif quest_status.flow_state == quest_status.flow_states.QUEST_START_ANIMATION then draw_modules(module_visibility_config.quest_start_animation, "Quest Start Animation");
draw_modules(config.current_config.global_settings.module_visibility.quest_start_animation, "Quest Start Animation"); elseif quest_status.flow_state >= flow_states.PLAYING_QUEST and quest_status.flow_state <= flow_states.WYVERN_RIDING_START_ANIMATION then
elseif quest_status.flow_state >= quest_status.flow_states.PLAYING_QUEST and quest_status.flow_state <= quest_status.flow_states.WYVERN_RIDING_START_ANIMATION then draw_modules(module_visibility_config.playing_quest, "Playing Quest");
draw_modules(config.current_config.global_settings.module_visibility.playing_quest, "Playing Quest"); elseif quest_status.flow_state == flow_states.KILLCAM then
elseif quest_status.flow_state == quest_status.flow_states.KILLCAM then draw_modules(module_visibility_config.killcam, "Killcam");
draw_modules(config.current_config.global_settings.module_visibility.killcam, "Killcam"); elseif quest_status.flow_state == flow_states.QUEST_END_TIMER then
elseif quest_status.flow_state == quest_status.flow_states.QUEST_END_TIMER then draw_modules(module_visibility_config.quest_end_timer, "Quest End Timer");
draw_modules(config.current_config.global_settings.module_visibility.quest_end_timer, "Quest End Timer"); elseif quest_status.flow_state == flow_states.QUEST_END_ANIMATION then
elseif quest_status.flow_state == quest_status.flow_states.QUEST_END_ANIMATION then draw_modules(module_visibility_config.quest_end_animation, "Quest End Animation");
draw_modules(config.current_config.global_settings.module_visibility.quest_end_animation, "Quest End Animation"); elseif quest_status.flow_state == flow_states.QUEST_END_SCREEN then
elseif quest_status.flow_state == quest_status.flow_states.QUEST_END_SCREEN then draw_modules(module_visibility_config.quest_end_screen, "Quest End Screen");
draw_modules(config.current_config.global_settings.module_visibility.quest_end_screen, "Quest End Screen"); elseif quest_status.flow_state == flow_states.REWARD_SCREEN then
elseif quest_status.flow_state == quest_status.flow_states.REWARD_SCREEN then draw_modules(module_visibility_config.reward_screen, "Reward Screen");
draw_modules(config.current_config.global_settings.module_visibility.reward_screen, "Reward Screen"); elseif quest_status.flow_state == flow_states.SUMMARY_SCREEN then
elseif quest_status.flow_state == quest_status.flow_states.SUMMARY_SCREEN then draw_modules(module_visibility_config.summary_screen, "Summary Screen");
draw_modules(config.current_config.global_settings.module_visibility.summary_screen, "Summary Screen");
end end
end end
@@ -543,7 +554,6 @@ end
re.on_frame(function() re.on_frame(function()
time.update_timers(); time.update_timers();
keyboard.update();
if d2d == nil or not config.current_config.global_settings.renderer.use_d2d_if_available then if d2d == nil or not config.current_config.global_settings.renderer.use_d2d_if_available then
draw_loop(); draw_loop();

View File

@@ -45,8 +45,8 @@ local package = package;
this.list = { this.list = {
fireblight = nil, fireblight = nil,
waterblight = nil, waterblight = nil,
iceblight = nil,
thunderblight = nil, thunderblight = nil,
iceblight = nil,
dragonblight = nil, dragonblight = nil,
blastblight = nil, blastblight = nil,
minor_bubbleblight = nil, minor_bubbleblight = nil,
@@ -57,6 +57,7 @@ this.list = {
deadly_poison = nil, deadly_poison = nil,
stun = nil, stun = nil,
paralysis = nil, paralysis = nil,
falling_asleep = nil,
sleep = nil, sleep = nil,
defense_down = nil, defense_down = nil,
resistance_down = nil, resistance_down = nil,
@@ -65,17 +66,52 @@ this.list = {
webbed = nil, webbed = nil,
stench = nil, stench = nil,
leeched = nil, leeched = nil,
whirlwind = nil, -- whirlwind = nil,
bleeding = nil, bleeding = nil,
frenzy = nil, frenzy = nil,
frenzy_overcome = nil, frenzy_overcome = nil,
frenzy_infection = nil,
engulfed = nil, engulfed = nil,
frostblight = nil, frostblight = nil,
muck = 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; 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"); local fire_duration_timer_field = player_quest_base_type_def:get_field("_FireLDurationTimer");
-- Waterblight -- Waterblight
local water_duration_timer_field = player_quest_base_type_def:get_field("_WaterLDurationTimer"); 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 -- Thunderblight
local thunder_duration_timer_field = player_quest_base_type_def:get_field("_ThunderLDurationTimer"); 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 -- Dragonblight
local dragon_duration_timer_field = player_quest_base_type_def:get_field("_DragonLDurationTimer"); local dragon_duration_timer_field = player_quest_base_type_def:get_field("_DragonLDurationTimer");
-- blastblight -- 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"); local virus_overcome_buff_timer_field = player_data_type_def:get_field("_VirusOvercomeBuffTimer");
function this.update(player, player_data) 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: -- Missing:
-- whirlwind? -- whirlwind?
-- Wind Pressure? -- Wind Pressure?
@@ -164,42 +194,68 @@ function this.update(player, player_data)
this.update_muck(player); this.update_muck(player);
this.update_frenzy_infection(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); this.update_abnormal_status("fireblight", 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); this.update_abnormal_status("waterblight", nil, nil, player, water_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); this.update_abnormal_status("thunderblight", nil, nil, player, thunder_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); this.update_abnormal_status("iceblight", 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); this.update_abnormal_status("dragonblight", nil, nil, player, dragon_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); this.update_abnormal_status("blastblight", nil, nil, player, bomb_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); this.update_abnormal_status("hellfireblight", nil, nil, player, oni_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); this.update_abnormal_status("bloodblight", nil, nil, player, mystery_debuff_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("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); this.update_abnormal_status("stun", 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); this.update_abnormal_status("paralysis", 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); this.update_abnormal_status("falling_asleep", 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); this.update_abnormal_status("defense_down", 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("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); this.update_abnormal_status("tremor", 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); this.update_abnormal_status("roar", 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); this.update_abnormal_status("webbed", 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); this.update_abnormal_status("stench", 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); this.update_abnormal_status("leeched", nil, nil, player, blooding_enemy_timer_field, 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("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); this.update_abnormal_status("frenzy", 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); this.update_abnormal_status("frenzy_overcome", 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_sleep(player); this.update_sleep(player);
end 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) 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); local poison_level = poison_level_field:get_data(player);
if poison_level == nil then if poison_level == nil then
error_handler.report("abnormal_statuses.update_poison", "Failed to access Data: poison_level"); error_handler.report("abnormal_statuses.update_poison", "Failed to Access Data: poison_level");
this.list.poison = nil;
this.list.deadly_poison = nil;
return; return;
end end
@@ -210,18 +266,33 @@ function this.update_poison(player)
end end
if poison_level == 1 then 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; this.list.deadly_poison = nil;
else 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; this.list.poison = nil;
end end
end end
function this.update_bubbleblight(player) 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); local bubble_type = bubble_type_field:get_data(player);
if bubble_type == nil then if bubble_type == nil then
error_handler.report("abnormal_statuses.update_bubbleblight", "Failed to access Data: bubble_Type"); error_handler.report("abnormal_statuses.update_bubbleblight", "Failed to Access Data: bubble_Type");
this.list.minor_bubbleblight = nil;
this.list.major_bubbleblight = nil;
return; return;
end end
@@ -232,24 +303,30 @@ function this.update_bubbleblight(player)
end end
if bubble_type == 1 then 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; this.list.major_bubbleblight = nil;
else 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; this.list.minor_bubbleblight = nil;
end end
end end
function this.update_muck(player) function this.update_muck(player)
if this.apply_filter("muck") then
return;
end
local is_mud_damage = get_is_mud_damage_method:call(player); local is_mud_damage = get_is_mud_damage_method:call(player);
if is_mud_damage == nil then if is_mud_damage == nil then
error_handler.report("abnormal_statuses.update_generic_boolean_value_method", "Failed to access Data: is_mud_damage"); error_handler.report("abnormal_statuses.update_generic_boolean_value_method", "Failed to Access Data: is_mud_damage");
this.list.muck = nil;
return; return;
end end
local is_gold_mud_damage = get_is_gold_mud_damage_method:call(player); local is_gold_mud_damage = get_is_gold_mud_damage_method:call(player);
if is_gold_mud_damage == nil then if is_gold_mud_damage == nil then
error_handler.report("abnormal_statuses.update_generic_boolean_value_method", "Failed to access Data: is_gold_mud_damage"); error_handler.report("abnormal_statuses.update_generic_boolean_value_method", "Failed to Access Data: is_gold_mud_damage");
this.list.muck = nil;
return; return;
end end
@@ -258,19 +335,25 @@ function this.update_muck(player)
return; return;
end end
buffs.update_generic(ailments_type_name, "muck", this.get_abnormal_status_name); this.update_generic("muck");
end end
function this.update_frenzy_infection(player) 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); local virus_accumulator_value = virus_accumulator_field:get_data(player);
if virus_accumulator_value == nil then if virus_accumulator_value == nil then
error_handler.report("abnormal_statuses.update_frenzy_infection", "Failed to access Data: virus_accumulator_value"); error_handler.report("abnormal_statuses.update_frenzy_infection", "Failed to Access Data: virus_accumulator_value");
this.list.frenzy_infection = nil;
return; return;
end end
local virus_timer = virus_timer_field:get_data(player); local virus_timer = virus_timer_field:get_data(player);
if virus_timer == nil then if virus_timer == nil then
error_handler.report("abnormal_statuses.update_frenzy_infection", "Failed to access Data: virus_timer"); error_handler.report("abnormal_statuses.update_frenzy_infection", "Failed to Access Data: virus_timer");
this.list.frenzy_infection = nil;
return; return;
end end
@@ -281,28 +364,39 @@ function this.update_frenzy_infection(player)
local timer = frenzy_infected_duration - (virus_accumulator_value + virus_timer / 60); 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 end
function this.update_sleep(player) function this.update_sleep(player)
if this.apply_filter("sleep") then
this.list.sleep = nil;
return;
end
if this.list.falling_asleep ~= nil then if this.list.falling_asleep ~= nil then
this.list.sleep = nil; this.list.sleep = nil;
return; return;
end 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 end
function this.init_names() function this.init_all_UI()
for abnormal_status_key, debuff in pairs(this.list) do for abnormal_status_key, abnormal_status in pairs(this.list) do
debuff.name = this.get_abnormal_status_name(abnormal_status_key); buffs.init_UI(abnormal_status);
end end
end end
function this.get_abnormal_status_name(abnormal_status_key) function this.init_names()
local abnormal_status_name = language.current_language.ailments[abnormal_status_key]; 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 if abnormal_status_name == nil then
return abnormal_status_key; return key;
end end
return abnormal_status_name; return abnormal_status_name;

View File

@@ -52,40 +52,9 @@ local os = os;
local ValueType = ValueType; local ValueType = ValueType;
local package = package; 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 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 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 player_base_type_def = find_master_player_method:get_return_type();
local get_player_data_method = player_base_type_def:get_method("get_PlayerData"); 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.timer = duration;
buff.duration = duration; buff.duration = duration;
buff.is_active = true; buff.is_visible = true;
buff.timer_percentage = 0; buff.timer_percentage = 0;
@@ -142,19 +111,40 @@ function this.init_buffs()
this.list = {}; this.list = {};
end 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) 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); buff.buff_UI = buff_UI_entity.new(cached_config.bar, cached_config.name_label, cached_config.timer_label);
end end
function this.init_names() function this.init_names()
abnormal_statuses.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(); skills.init_names();
weapon_skills.init_names(); weapon_skills.init_names();
otomo_moves.init_names();
misc_buffs.init_names(); misc_buffs.init_names();
end end
local tere = {}; local tere = {};
local tere2 = {};
local tere3 = {};
function this.update() function this.update()
if not config.current_config.buff_UI.enabled then if not config.current_config.buff_UI.enabled then
@@ -162,7 +152,7 @@ function this.update()
end end
if singletons.player_manager == nil then if singletons.player_manager == nil then
error_handler.report("buffs.update", "Failed to access Data: player_manager"); error_handler.report("buffs.update", "Failed to Access Data: player_manager");
return; return;
end end
@@ -174,7 +164,7 @@ function this.update()
local master_player = find_master_player_method:call(singletons.player_manager); local master_player = find_master_player_method:call(singletons.player_manager);
if master_player == nil then if master_player == nil then
error_handler.report("buffs.update", "Failed to access Data: master_player"); error_handler.report("buffs.update", "Failed to Access Data: master_player");
return; return;
end end
@@ -182,53 +172,46 @@ function this.update()
local master_player_data = get_player_data_method:call(master_player); local master_player_data = get_player_data_method:call(master_player);
if master_player_data == nil then if master_player_data == nil then
error_handler.report("buffs.update", "Failed to access Data: master_player_data"); error_handler.report("buffs.update", "Failed to Access Data: master_player_data");
return; return;
end end
local weapon_type = player_weapon_type_field:get_data(master_player); local weapon_type = player_weapon_type_field:get_data(master_player);
if weapon_type == nil then 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; return;
end end
local is_player_lobby_base = master_player:get_type_definition() == player_lobby_base_type_def; local is_player_lobby_base = master_player:get_type_definition() == player_lobby_base_type_def;
item_buffs.update(master_player_data); item_buffs.update(master_player_data, item_parameter);
otomo_moves.update(master_player_data);
rampage_skills.update(master_player_data); rampage_skills.update(master_player_data);
otomo_moves.update(master_player_data);
if not is_player_lobby_base then 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); 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); 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 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 end
function this.update_timer(buff, timer, duration) function this.update_timer(buff, timer)
buff.is_visible = true;
if timer == nil then if timer == nil then
return; return;
end end
@@ -237,10 +220,8 @@ function this.update_timer(buff, timer, duration)
timer = 0; timer = 0;
end end
duration = duration or timer; if timer > buff.duration or timer > buff.timer then
buff.duration = timer;
if duration > buff.duration then
buff.duration = duration;
end end
local minutes_left = math.floor(timer / 60); local minutes_left = math.floor(timer / 60);
@@ -254,14 +235,17 @@ function this.update_timer(buff, timer, duration)
end end
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, value_owner, value_holder,
timer_owner, timer_holder, timer_owner, timer_holder,
duration_owner, duration_holder,
is_infinite, minimal_value, level_breakpoints) 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 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 if minimal_value == nil then minimal_value = 1; end
local level = 1; local level = 1;
@@ -275,7 +259,8 @@ function this.update_generic_buff(buff_list, buff_type, buff_key, get_name_funct
end end
if value == nil then if value == nil then
error_handler.report("buffs.update_generic_number", string.format("Failed to access Data: %s_value", buff_key)); error_handler.report("buffs.update_generic_number", string.format("Failed to Access Data: %s_value", buff_key));
buff_list[buff_key] = nil;
return; return;
end end
@@ -311,7 +296,8 @@ function this.update_generic_buff(buff_list, buff_type, buff_key, get_name_funct
end end
if timer == nil then if timer == nil then
error_handler.report("buffs.update_generic_number", string.format("Failed to access Data: %s_timer", buff_key)); error_handler.report("buffs.update_generic_number", string.format("Failed to Access Data: %s_timer", buff_key));
buff_list[buff_key] = nil;
return; return;
end end
@@ -327,41 +313,62 @@ function this.update_generic_buff(buff_list, buff_type, buff_key, get_name_funct
end end
end end
local duration = nil; return this.update_generic(buff_list, get_name_function, buff_type, buff_key, level, timer);
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);
end end
function this.update_generic(buff_list, buff_type, buff_key, get_name_function, level, timer, duration) function this.update_generic(buff_list, get_name_function, buff_type, buff_key, level, timer)
duration = duration or timer;
level = level or 1; level = level or 1;
local buff = buff_list[buff_key]; local buff = buff_list[buff_key];
if buff == nil then if buff == nil then
local name = get_name_function(buff_key); 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; buff_list[buff_key] = buff;
else else
if buff.level ~= level then
buff.duration = timer;
end
buff.level = level; buff.level = level;
this.update_timer(buff, timer, duration); this.update_timer(buff, timer);
end end
return buff; return buff;
end 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) function this.draw(buff, buff_UI, position_on_screen, opacity_scale)
buff_UI_entity.draw(buff, buff_UI, position_on_screen, opacity_scale); buff_UI_entity.draw(buff, buff_UI, position_on_screen, opacity_scale);
end end

View File

@@ -8,6 +8,7 @@ local players;
local utils; local utils;
local language; local language;
local error_handler; local error_handler;
local time;
local sdk = sdk; local sdk = sdk;
local tostring = tostring; local tostring = tostring;
@@ -44,17 +45,30 @@ local package = package;
this.list = { this.list = {
dango_adrenaline = nil, dango_adrenaline = nil,
dango_booster = nil, dango_booster = nil,
dango_connector = nil,
dango_defender = nil,
dango_flyer = nil,
dango_glutton = nil,
dango_hunter = nil,
dango_insurance = nil, dango_insurance = nil,
dango_insurance_defense_up = 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 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_polisher = 1,
-- dango_rider = 2, -- dango_rider = 2,
dango_adrenaline = 3, dango_adrenaline = 3,
@@ -84,7 +98,7 @@ local dango_ids = {
-- dango_trainer = 27, -- dango_trainer = 27,
dango_booster = 28, dango_booster = 28,
-- dango_feet = 29, -- dango_feet = 29,
-- dango_bulker = 30, dango_bulker = 30,
dango_insurance = 31, dango_insurance = 31,
-- dango_reviver = 32, -- dango_reviver = 32,
-- dango_summoner = 33, -- dango_summoner = 33,
@@ -113,24 +127,21 @@ local dango_ids = {
super_recovery_dango = 56 super_recovery_dango = 56
}; };
this.is_dango_adrenaline_active = false; this.is_dango_adrenaline_active = false;
local dango_skills_type_name = "dango_skills"; local dango_skills_type_name = "dango_skills";
local dango_bulker_attack_up = 15; local dango_bulker_attack_up = 15;
local previous_super_recovery_dango_timer = 0; local previous_super_recovery_dango_timer = 0;
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager"); 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 has_anyone_kitchen_skill_in_quest_method = player_manager_type_def:get_method("hasAnyoneKitchenSkillInQuest");
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 player_data_type_def = sdk.find_type_definition("snow.player.PlayerData"); local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Dango Defender -- 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 -- Dango Booster
local kitchen_skill_027_timer_field = player_data_type_def:get_field("_KitchenSkill027Timer"); local kitchen_skill_027_timer_field = player_data_type_def:get_field("_KitchenSkill027Timer");
-- Dango Glutton -- 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"); local player_base_type_def = sdk.find_type_definition("snow.player.PlayerBase");
-- Dango Adrenaline -- 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 -- 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_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"); local get_is_kitchen_skill_wire_stop_regene_method = player_base_type_def:get_method("get_IsKitchenSkill_WireStop_Regene");
-- Super Recovery Dango -- Super Recovery Dango
local get_kitchen_skill_surume_regene_timer_method = player_base_type_def:get_method("get_KitchenSkill_Surume_RegeneTimer"); 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 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)"); 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 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 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) 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_adrenaline();
this.update_dango_hunter(player_data); this.update_dango_hunter(player_data);
this.update_dango_insurance(); this.update_dango_insurance();
@@ -184,89 +181,69 @@ function this.update(player, player_data)
this.update_dango_flyer(player); this.update_dango_flyer(player);
this.update_super_recovery_dango(player); this.update_super_recovery_dango(player);
buffs.update_generic_buff(this.list, dango_skills_type_name, "dango_defender", this.get_dango_name, this.update_dango_skill("dango_booster", nil, nil, player_data, kitchen_skill_027_timer_field);
player_data, is_enable_kitchen_skill_048_reduce_method, nil, nil, nil, nil, true); 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, function this.update_dango_skill(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
nil, nil, player_data, kitchen_skill_027_timer_field); 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, function this.update_generic(key, level, timer)
nil, nil, player_data, kitchen_skill_045_timer_field); 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, function this.apply_filter(key)
nil, nil, player_data, kitchen_skill_054_timer_field); return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.dango_skills, key);
end end
function this.update_dango_adrenaline() function this.update_dango_adrenaline()
if this.apply_filter("dango_adrenaline") then
return;
end
if not this.is_dango_adrenaline_active then if not this.is_dango_adrenaline_active then
this.list.dango_adrenaline = nil; this.list.dango_adrenaline = nil;
return; return;
end end
buffs.update_generic(this.list, dango_skills_type_name, "dango_adrenaline", this.get_dango_name); this.update_generic("dango_adrenaline");
end end
function this.update_dango_insurance() function this.update_dango_insurance()
if this.apply_filter("dango_insurance") then
return;
end
if singletons.player_manager == nil then if singletons.player_manager == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: player_manager"); error_handler.report("dango_skills.update_dango_insurance", "Failed to Access Data: player_manager");
this.list.dango_insurance = nil;
return; return;
end end
if singletons.quest_manager == nil then if singletons.quest_manager == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: quest_manager"); error_handler.report("dango_skills.update_dango_insurance", "Failed to Access Data: quest_manager");
this.list.dango_insurance = nil;
return; return;
end end
local player_skill_list_array = get_player_skill_method:call(singletons.player_manager); local has_insurance_skill = has_anyone_kitchen_skill_in_quest_method:call(singletons.player_manager, dango_skill_ids.dango_insurance);
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 flag_cat_skill_insurance = flag_cat_skill_insurance_field:get_data(singletons.quest_manager); local flag_cat_skill_insurance = flag_cat_skill_insurance_field:get_data(singletons.quest_manager);
if flag_cat_skill_insurance == nil then if flag_cat_skill_insurance == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: flag_cat_skill_insurance"); error_handler.report("dango_skills.update_dango_insurance", "Failed to Access Data: flag_cat_skill_insurance");
this.list.dango_insurance = nil;
return; return;
end end
local is_cat_skill_insurance = is_cat_skill_insurance_method:call(singletons.quest_manager, flag_cat_skill_insurance); local is_cat_skill_insurance = is_cat_skill_insurance_method:call(singletons.quest_manager, flag_cat_skill_insurance);
if is_cat_skill_insurance == nil then if is_cat_skill_insurance == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: is_cat_skill_insurance"); error_handler.report("dango_skills.update_dango_insurance", "Failed to Access Data: is_cat_skill_insurance");
this.list.dango_insurance = nil;
return; return;
end end
@@ -275,15 +252,20 @@ function this.update_dango_insurance()
return; return;
end end
buffs.update_generic(this.list, dango_skills_type_name, "dango_insurance", this.get_dango_name, 1); this.update_generic("dango_insurance");
end end
function this.update_dango_insurance_defense_up(player_data) function this.update_dango_insurance_defense_up(player_data)
if this.apply_filter("dango_insurance_defense_up") then
return;
end
local level = 3; local level = 3;
local insurance_def_up_lv3 = kitchen_skill_insurance_def_up_lv3_field:get_data(player_data); local insurance_def_up_lv3 = kitchen_skill_insurance_def_up_lv3_field:get_data(player_data);
if insurance_def_up_lv3 == nil then if insurance_def_up_lv3 == nil then
error_handler.report("dango_skills.update_dango_insurance_defense_up", "Failed to access Data: insurance_def_up_lv3"); error_handler.report("dango_skills.update_dango_insurance_defense_up", "Failed to Access Data: insurance_def_up_lv3");
this.list.dango_insurance_defense_up = nil;
return; return;
end end
@@ -291,7 +273,8 @@ function this.update_dango_insurance_defense_up(player_data)
local insurance_def_up_lv4 = kitchen_skill_insurance_def_up_lv4_field:get_data(player_data); local insurance_def_up_lv4 = kitchen_skill_insurance_def_up_lv4_field:get_data(player_data);
if insurance_def_up_lv4 == nil then if insurance_def_up_lv4 == nil then
error_handler.report("dango_skills.update_dango_insurance_defense_up", "Failed to access Data: insurance_def_up_lv4"); error_handler.report("dango_skills.update_dango_insurance_defense_up", "Failed to Access Data: insurance_def_up_lv4");
this.list.dango_insurance_defense_up = nil;
return; return;
end end
@@ -303,15 +286,20 @@ function this.update_dango_insurance_defense_up(player_data)
level = 4; level = 4;
end 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 end
function this.update_dango_flyer(player) function this.update_dango_flyer(player)
if this.apply_filter("dango_flyer") then
return;
end
local level = 4; local level = 4;
local is_kitchen_skill_wire_stop_regene = get_is_kitchen_skill_wire_stop_regene_method:call(player); local is_kitchen_skill_wire_stop_regene = get_is_kitchen_skill_wire_stop_regene_method:call(player);
if is_kitchen_skill_wire_stop_regene == nil then if is_kitchen_skill_wire_stop_regene == nil then
error_handler.report("dango_skills.update_dango_flyer", "Failed to access Data: is_kitchen_skill_wire_stop_regene"); error_handler.report("dango_skills.update_dango_flyer", "Failed to Access Data: is_kitchen_skill_wire_stop_regene");
this.list.dango_flyer = nil;
return; return;
end end
@@ -319,7 +307,8 @@ function this.update_dango_flyer(player)
local is_kitchen_skill_wire_stop_heal_spd = get_is_kitchen_skill_wire_stop_heal_spd_method:call(player); local is_kitchen_skill_wire_stop_heal_spd = get_is_kitchen_skill_wire_stop_heal_spd_method:call(player);
if is_kitchen_skill_wire_stop_heal_spd == nil then if is_kitchen_skill_wire_stop_heal_spd == nil then
error_handler.report("dango_skills.update_dango_flyer", "Failed to access Data: is_kitchen_skill_wire_stop_heal_spd"); error_handler.report("dango_skills.update_dango_flyer", "Failed to Access Data: is_kitchen_skill_wire_stop_heal_spd");
this.list.dango_flyer = nil;
return; return;
end end
@@ -331,22 +320,26 @@ function this.update_dango_flyer(player)
level = 3; level = 3;
end end
buffs.update_generic(this.list, dango_skills_type_name, "dango_flyer", this.get_dango_name, level); this.update_generic("dango_flyer", level);
end end
function this.update_dango_hunter(player_data) 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, local dango_hunter_buff = this.update_dango_skill("dango_hunter", nil, nil, player_data, kitchen_skill_051_atk_up_timer_field);
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; dango_hunter_buff.level = 4;
end end
end end
function this.update_super_recovery_dango(player) 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); local kitchen_skill_surume_regene_timer = get_kitchen_skill_surume_regene_timer_method:call(player);
if kitchen_skill_surume_regene_timer == nil then 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"); error_handler.report("dango_skills.update_super_recovery_dango", "Failed to Access Data: kitchen_skill_surume_regene_timer");
this.list.super_recovery_dango = nil;
return; return;
end end
@@ -357,25 +350,37 @@ function this.update_super_recovery_dango(player)
end end
previous_super_recovery_dango_timer = kitchen_skill_surume_regene_timer; previous_super_recovery_dango_timer = kitchen_skill_surume_regene_timer;
this.update_generic("super_recovery_dango");
buffs.update_generic(this.list, dango_skills_type_name, "super_recovery_dango", this.get_dango_name);
end end
function this.get_dango_name(dango_key) function this.init_all_UI()
if dango_ids[dango_key] == nil then 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 if dango_skill_name == nil then
return dango_key; return key;
end end
return dango_skill_name; return dango_skill_name;
end 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 if dango_skill_name == nil then
error_handler.report("dango_skills.get_dango_name", string.format("Failed to access Data: %s_name", dango_key)); error_handler.report("dango_skills.get_dango_name", string.format("Failed to Access Data: %s_name", key));
return dango_key; return key;
end end
return dango_skill_name; return dango_skill_name;
@@ -390,6 +395,7 @@ function this.init_dependencies()
players = require("MHR_Overlay.Damage_Meter.players"); players = require("MHR_Overlay.Damage_Meter.players");
language = require("MHR_Overlay.Misc.language"); language = require("MHR_Overlay.Misc.language");
error_handler = require("MHR_Overlay.Misc.error_handler"); error_handler = require("MHR_Overlay.Misc.error_handler");
time = require("MHR_Overlay.Game_Handler.time");
end end

View File

@@ -10,6 +10,7 @@ local language;
local error_handler; local error_handler;
local env_creature; local env_creature;
local item_buffs; local item_buffs;
local time;
local sdk = sdk; local sdk = sdk;
local tostring = tostring; local tostring = tostring;
@@ -44,33 +45,38 @@ local ValueType = ValueType;
local package = package; local package = package;
this.list = { this.list = {
cutterfly = nil,
clothfly = nil, clothfly = nil,
stinkmink = nil,
butterflame = nil, butterflame = nil,
-- peepersects = nil, -- peepersects = nil,
cutterfly = nil, stinkmink = nil,
ruby_wirebug = nil, ruby_wirebug = nil,
gold_wirebug = nil, gold_wirebug = nil,
red_lampsquid = nil, red_lampsquid = nil,
yellow_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.peepersects_duration = 90;
this.butterflame_attack_up = 25;
local endemic_life_buffs_type_name = "endemic_life_buffs"; local endemic_life_buffs_type_name = "endemic_life_buffs";
local marionette_mode_types = { "ruby_wirebug", "gold_wirebug" }; 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"); local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Cutterfly -- Cutterfly
local crit_up_ec_second_timer_field = player_data_type_def:get_field("_CritUpEcSecondTimer"); local crit_up_ec_second_timer_field = player_data_type_def:get_field("_CritUpEcSecondTimer");
@@ -100,28 +106,46 @@ function this.update(player, player_data, item_parameter)
this.update_ruby_and_gold_wirebugs(player, player_data); this.update_ruby_and_gold_wirebugs(player, player_data);
this.update_butterflame(player_data); this.update_butterflame(player_data);
buffs.update_generic_buff(this.list, endemic_life_buffs_type_name, "cutterfly", this.get_endemic_life_name, this.update_endemic_life_buff("cutterfly", nil, nil, player_data, crit_up_ec_second_timer_field);
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, function this.update_endemic_life_buff(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
nil, nil, player_data, def_up_buff_second_rate_timer_field); 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,
buffs.update_generic_buff(this.list, endemic_life_buffs_type_name, "stinkmink", this.get_endemic_life_name, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
nil, nil, player_data, lead_enemy_timer_field); end
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_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 end
function this.update_ruby_and_gold_wirebugs(player, player_data) 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); local marionette_mode_type = get_marionette_mode_type_method:call(player);
if marionette_mode_type == nil then if marionette_mode_type == nil then
error_handler.report("endemic_life_buffs.update_ruby_and_gold_wirebugs", "Failed to access Data: marionette_mode_type"); error_handler.report("endemic_life_buffs.update_ruby_and_gold_wirebugs", "Failed to Access Data: marionette_mode_type");
this.list.ruby_wirebug = nil;
this.list.gold_wirebug = nil;
end end
if marionette_mode_type ~= 1 and marionette_mode_type ~= 2 then if marionette_mode_type ~= 1 and marionette_mode_type ~= 2 then
@@ -135,68 +159,51 @@ function this.update_ruby_and_gold_wirebugs(player, player_data)
end end
local endemic_life_buff_key = marionette_mode_types[marionette_mode_type]; local endemic_life_buff_key = marionette_mode_types[marionette_mode_type];
this.update_endemic_life_buff(endemic_life_buff_key, nil, nil, player_data, wirebug_powerup_timer_field);
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);
end end
function this.update_butterflame(player_data) function this.update_butterflame(player_data)
local atk_up_buff_second = atk_up_buff_second_field:get_data(player_data); if this.apply_filter("butterflame") then
if atk_up_buff_second == nil then
error_handler.report("item_buffs.update_butterflame", "Failed to access Data: atk_up_buff_second");
return; return;
end end
if atk_up_buff_second ~= butterflame_attack_up then 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");
this.list.butterflame = nil; this.list.butterflame = nil;
return; return;
end end
buffs.update_generic_buff(this.list, endemic_life_buffs_type_name, "butterflame", this.get_endemic_life_name, if atk_up_buff_second ~= this.butterflame_attack_up then
nil, nil, player_data, atk_up_buff_second_timer_field); this.list.butterflame = nil;
return;
end
this.update_endemic_life_buff("butterflame", nil, nil, player_data, atk_up_buff_second_timer_field);
end end
function this.update_peepersects(player_data) function this.init_all_UI()
local stamina_up_buff_second_timer = stamina_up_buff_second_timer_field:get_data(player_data); for endemic_life_key, endemic_life in pairs(this.list) do
if stamina_up_buff_second_timer == nil then buffs.init_UI(endemic_life);
error_handler.report("item_buffs.update_peepersects", "Failed to access Data: stamina_up_buff_second_timer");
return;
end 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 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 if singletons.message_manager == nil then
error_handler.report("endemic_life_buffs.get_endemic_life_name", "Failed to access Data: message_manager"); error_handler.report("endemic_life_buffs.get_endemic_life_name", "Failed to Access Data: message_manager");
return endemic_life_buff_key; return key;
end 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 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)); error_handler.report("endemic_life_buffs.get_endemic_life_name", string.format("Failed to Access Data: %s_name", key));
return endemic_life_buff_key; return key;
end end
return endemic_life_name; return endemic_life_name;
@@ -213,6 +220,7 @@ function this.init_dependencies()
error_handler = require("MHR_Overlay.Misc.error_handler"); error_handler = require("MHR_Overlay.Misc.error_handler");
env_creature = require("MHR_Overlay.Endemic_Life.env_creature"); env_creature = require("MHR_Overlay.Endemic_Life.env_creature");
item_buffs = require("MHR_Overlay.Buffs.item_buffs"); item_buffs = require("MHR_Overlay.Buffs.item_buffs");
time = require("MHR_Overlay.Game_Handler.time");
end end
function this.init_module() function this.init_module()

View File

@@ -47,13 +47,31 @@ this.list = {
mega_demondrug = nil, mega_demondrug = nil,
armorskin = nil, armorskin = nil,
mega_armorskin = nil, mega_armorskin = nil,
-- might_seed = nil, might_seed = nil,
-- adamant_seed = nil, -- adamant_seed = nil,
demon_powder = nil, demon_powder = nil,
hardshell_powder = nil, hardshell_powder = nil,
immunizer = nil, -- immunizer = nil,
-- dash_juice = nil, -- dash_juice = nil,
gourmet_fish = 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 = { local item_ids = {
@@ -61,53 +79,35 @@ local item_ids = {
mega_demondrug = 68157918, mega_demondrug = 68157918,
armorskin = 68157922, armorskin = 68157922,
mega_armorskin = 68157923, mega_armorskin = 68157923,
--might_seed = 68157919, might_seed = 68157919,
--adamant_seed = 68157924, -- adamant_seed = 68157924,
demon_powder = 68157920, demon_powder = 68157920,
hardshell_powder = 68157925, hardshell_powder = 68157925,
immunizer = 68157911, -- immunizer = 68157911,
--dash_juice = 68157913, -- dash_juice = 68157913,
gourmet_fish = 68157909, gourmet_fish = 68157909,
demon_ammo = 68157595, demon_ammo = 68157595,
armor_ammo = 68157596 armor_ammo = 68157596
} }
this.might_seed_attack_up = 10;
local item_buffs_type_name = "item_buffs"; 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"); local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Demondrug/Mega Demondrug -- Demondrug/Mega Demondrug
local atk_up_alive_field = player_data_type_def:get_field("_AtkUpAlive"); local atk_up_alive_field = player_data_type_def:get_field("_AtkUpAlive");
-- Armorskin/Mega Armorskin -- Armorskin/Mega Armorskin
local def_up_alive_field = player_data_type_def:get_field("_DefUpAlive"); 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 -- Demon Powder
local atk_up_item_second_field = player_data_type_def:get_field("_AtkUpItemSecond"); 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"); local atk_up_item_second_timer_field = player_data_type_def:get_field("_AtkUpItemSecondTimer");
-- Hardshell Powder -- Hardshell Powder
local def_up_item_second_field = player_data_type_def:get_field("_DefUpItemSecond"); 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"); 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 -- Gourmet Fish
local fish_regene_enable_field = player_data_type_def:get_field("_FishRegeneEnableTimer"); local fish_regene_enable_field = player_data_type_def:get_field("_FishRegeneEnableTimer");
-- Demon Ammo -- Demon Ammo
@@ -115,44 +115,64 @@ local kijin_bullet_timer_field = player_data_type_def:get_field("_KijinBulletTim
-- Armor Ammo -- Armor Ammo
local kouka_bullet_timer_field = player_data_type_def:get_field("_KoukaBulletTimer"); 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 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)"); local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.ContentsIdSystem.ItemId)");
function this.update(player_data) function this.update(player_data, item_parameter)
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;
this.update_demondrug(player_data, item_parameter); this.update_demondrug(player_data, item_parameter);
this.update_armorskin(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, this.update_item_buff("demon_powder", player_data, atk_up_item_second_field, player_data, atk_up_item_second_timer_field);
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("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, function this.update_item_buff(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
player_data, def_up_item_second_field, player_data, def_up_item_second_timer_field, item_parameter, armorskin_powder_timer_field); 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, function this.update_generic(key, level, timer)
nil, nil, player_data, vitalizer_timer_field, item_parameter, vitalizer_timer_const_field); 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, function this.apply_filter(key)
nil, nil, player_data, fish_regene_enable_field); return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.item_buffs, key);
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);
end end
function this.update_demondrug(player_data, item_parameter) 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); local demondrug_value = atk_up_alive_field:get_data(player_data);
if demondrug_value == nil then if demondrug_value == nil then
error_handler.report("item_buffs.update_demondrug", "Failed to access Data: demondrug_value"); error_handler.report("item_buffs.update_demondrug", "Failed to Access Data: demondrug_value");
this.list.demondrug = nil;
this.list.mega_demondrug = nil;
return; return;
end end
@@ -164,13 +184,17 @@ function this.update_demondrug(player_data, item_parameter)
local demondrug_const_value = demondrug_atk_up_field:get_data(item_parameter); local demondrug_const_value = demondrug_atk_up_field:get_data(item_parameter);
if demondrug_const_value == nil then if demondrug_const_value == nil then
error_handler.report("item_buffs.update_demondrug", "Failed to access Data: demondrug_const_value"); error_handler.report("item_buffs.update_demondrug", "Failed to Access Data: demondrug_const_value");
this.list.demondrug = nil;
this.list.mega_demondrug = nil;
return; return;
end end
local mega_demondrug_const_value = great_demondrug_atk_up_field:get_data(item_parameter); local mega_demondrug_const_value = great_demondrug_atk_up_field:get_data(item_parameter);
if mega_demondrug_const_value == nil then if mega_demondrug_const_value == nil then
error_handler.report("item_buffs.update_demondrug", "Failed to access Data: mega_demondrug_const_value"); error_handler.report("item_buffs.update_demondrug", "Failed to Access Data: mega_demondrug_const_value");
this.list.demondrug = nil;
this.list.mega_demondrug = nil;
return; return;
end end
@@ -184,13 +208,28 @@ function this.update_demondrug(player_data, item_parameter)
this.list.demondrug = nil; this.list.demondrug = nil;
end 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 end
function this.update_armorskin(player_data, item_parameter) 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); local armorskin_value = def_up_alive_field:get_data(player_data);
if armorskin_value == nil then if armorskin_value == nil then
error_handler.report("item_buffs.update_armorskin", "Failed to access Data: armorskin_value"); error_handler.report("item_buffs.update_armorskin", "Failed to Access Data: armorskin_value");
this.list.armorskin = nil;
this.list.mega_armorskin = nil;
return; return;
end end
@@ -202,13 +241,17 @@ function this.update_armorskin(player_data, item_parameter)
local armorskin_const_value = armorskin_def_up_field:get_data(item_parameter); local armorskin_const_value = armorskin_def_up_field:get_data(item_parameter);
if armorskin_const_value == nil then if armorskin_const_value == nil then
error_handler.report("item_buffs.update_armorskin", "Failed to access Data: armorskin_const_value"); error_handler.report("item_buffs.update_armorskin", "Failed to Access Data: armorskin_const_value");
this.list.armorskin = nil;
this.list.mega_armorskin = nil;
return; return;
end end
local mega_armorskin_const_value = great_armorskin_def_up_field:get_data(item_parameter); local mega_armorskin_const_value = great_armorskin_def_up_field:get_data(item_parameter);
if mega_armorskin_const_value == nil then if mega_armorskin_const_value == nil then
error_handler.report("item_buffs.update_armorskin", "Failed to access Data: mega_armorskin_const_value"); error_handler.report("item_buffs.update_armorskin", "Failed to Access Data: mega_armorskin_const_value");
this.list.armorskin = nil;
this.list.mega_armorskin = nil;
return; return;
end end
@@ -222,17 +265,61 @@ function this.update_armorskin(player_data, item_parameter)
this.list.armorskin = nil; this.list.armorskin = nil;
end end
buffs.update_generic(this.list, item_buffs_type_name, item_key, this.get_item_name); if not cached_config[item_key] then
end this.list[item_key] = nil;
return;
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;
end 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");
this.list.might_seed = nil;
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");
this.list.might_seed = nil;
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 end
function this.init_dependencies() function this.init_dependencies()

View File

@@ -8,6 +8,7 @@ local players;
local utils; local utils;
local language; local language;
local error_handler; local error_handler;
local time;
local sdk = sdk; local sdk = sdk;
local tostring = tostring; local tostring = tostring;
@@ -72,8 +73,41 @@ local package = package;
sharpness_extension = 27 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 = {}; this.list = {};
local melody_effects_type_name = "melody_effects";
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager"); local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
local find_master_player_method = player_manager_type_def:get_method("findMasterPlayer"); local find_master_player_method = player_manager_type_def:get_method("findMasterPlayer");
@@ -93,34 +127,46 @@ local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.Dat
function this.update(master_player) function this.update(master_player)
local music_data_array = music_data_field:get_data(master_player); local music_data_array = music_data_field:get_data(master_player);
if music_data_array == nil then if music_data_array == nil then
error_handler.report("melody_effects.update", "Failed to access Data: music_data_array"); error_handler.report("melody_effects.update", "Failed to Access Data: music_data_array");
return; return;
end end
local length = get_length_method:call(music_data_array) - 1; local length = get_length_method:call(music_data_array);
if length == nil then if length == nil then
error_handler.report("melody_effects.update", "Failed to access Data: music_data_array -> length"); error_handler.report("melody_effects.update", "Failed to Access Data: music_data_array -> length");
return; return;
end end
for i = 0, length do length = length - 1;
local music_data = get_value_method:call(music_data_array, i);
if music_data == nil then for id = 0, length do
error_handler.report("melody_effects.update", "Failed to access Data: music_data No." .. tostring(i));
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; goto continue;
end 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));
this.list[lua_index] = nil;
goto continue;
end
this.update_melody_effect(lua_index, id, key, melody_effect, music_data);
::continue:: ::continue::
end end
end end
function this.update_melody_effect(index, melody_data) function this.update_melody_effect(lua_index, id, key, melody_effect, melody_data)
local lua_index = index + 1;
local melody_timer = time_field:get_data(melody_data); local melody_timer = time_field:get_data(melody_data);
if melody_timer == nil then 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));
this.list[lua_index] = nil;
return; return;
end end
@@ -129,22 +175,65 @@ function this.update_melody_effect(index, melody_data)
return; return;
end end
local melody_effect = this.list[lua_index];
if melody_effect == nil then 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; this.list[lua_index] = melody_effect;
else else
buffs.update_timer(melody_effect, melody_timer / 60); buffs.update_timer(melody_effect, melody_timer / 60);
end end
end end
function this.get_melody_effect_name(melody_effect_id) function this.apply_filter(key, lua_index)
local melody_effect_name = get_name_method:call(nil, melody_effect_id); 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 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); error_handler.report("melody_effects.get_melody_effect_name", "Failed to Access Data: " .. melody_effect_name);
return name; return name;
end end
@@ -160,6 +249,7 @@ function this.init_dependencies()
players = require("MHR_Overlay.Damage_Meter.players"); players = require("MHR_Overlay.Damage_Meter.players");
language = require("MHR_Overlay.Misc.language"); language = require("MHR_Overlay.Misc.language");
error_handler = require("MHR_Overlay.Misc.error_handler"); error_handler = require("MHR_Overlay.Misc.error_handler");
time = require("MHR_Overlay.Game_Handler.time");
end end
function this.init_module() function this.init_module()

View File

@@ -47,14 +47,23 @@ this.list = {
attack_up = nil, attack_up = nil,
defense_up = nil, defense_up = nil,
stamina_use_down = 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 -- Attack Up
-- Might Seed +10 3min -- Might Seed +10 3min -- Separated
-- Dango Bulker + 15 30sec -- Dango Bulker + 15 30sec
-- Chameleos Souls +15 30sec -- Chameleos Soul +15 30sec
-- Butterflame +25 1min -- Separated
-- Defense Up -- Defense Up
-- Adamant Seed +20 3min -- Adamant Seed +20 3min
@@ -65,7 +74,14 @@ local misc_buffs_type_name = "misc_buffs";
-- Peepersects 1.5min -- Peepersects 1.5min
-- Chameleos Soul 30sec -- 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"); local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Attack Up -- Attack Up
local atk_up_buff_second_field = player_data_type_def:get_field("_AtkUpBuffSecond"); 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"); local atk_up_buff_second_timer_field = player_data_type_def:get_field("_AtkUpBuffSecondTimer");
@@ -76,31 +92,80 @@ 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"); local stamina_up_buff_second_timer_field = player_data_type_def:get_field("_StaminaUpBuffSecondTimer");
-- Immunity -- Immunity
local debuff_prevention_timer_field = player_data_type_def:get_field("_DebuffPreventionTimer"); 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) local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
buffs.update_generic_buff(this.list, misc_buffs_type_name, "stamina_use_down", this.get_misc_buff_name, local get_ref_item_parameter_method = player_manager_type_def:get_method("get_RefItemParameter");
nil, nil, player_data, stamina_up_buff_second_timer_field);
buffs.update_generic_buff(this.list, misc_buffs_type_name, "attack_up", this.get_misc_buff_name, local player_user_data_item_parameter_type_def = get_ref_item_parameter_method:get_return_type();
player_data, atk_up_buff_second_field, player_data, atk_up_buff_second_timer_field);
buffs.update_generic_buff(this.list, misc_buffs_type_name, "defense_up", this.get_misc_buff_name, -- Might Seed
player_data, def_up_buff_second_field, player_data, def_up_buff_second_timer_field); 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, function this.update(player, player_data, item_parameter)
nil, nil, player_data, debuff_prevention_timer_field); 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 end
function this.init_names() function this.update_misc_buff(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
for misc_buff_key, dango in pairs(this.list) do return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.misc_buffs, this.get_misc_buff_name,
dango.name = this.get_misc_buff_name(misc_buff_key); 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");
this.list.attack_up = nil;
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");
this.list.attack_up = nil;
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
end end
function this.get_misc_buff_name(misc_buff_key) function this.init_names()
local misc_buff_name = language.current_language.misc_buffs[misc_buff_key]; 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 if misc_buff_name == nil then
return misc_buff_key; return key;
end end
return misc_buff_name; return misc_buff_name;

View File

@@ -46,48 +46,51 @@ local ValueType = ValueType;
local package = package; local package = package;
this.list = { this.list = {
rousing_roar = nil,
go_fight_win = 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 = { local otomo_moves_ids = {
herbaceous_healing = 1, -- herbaceous_healing = 1,
felyne_silkbind = 2, -- felyne_silkbind = 2,
felyne_wyvernblast = 3, -- felyne_wyvernblast = 3,
rousing_roar = 4, rousing_roar = 4,
endemic_life_barrage = 5, -- endemic_life_barrage = 5,
health_horn = 6, -- health_horn = 6,
healing_bubble = 7, -- healing_bubble = 7,
vase_of_vitality = 8, vase_of_vitality = 8,
furbidden_acorn = 9, -- furbidden_acorn = 9,
poison_purr_ison = 10, -- poison_purr_ison = 10,
summeown_endemic_life = 11, -- summeown_endemic_life = 11,
shock_purr_ison = 12, -- shock_purr_ison = 12,
go_fight_win = 13, go_fight_win = 13,
giga_barrel_bombay = 14, -- giga_barrel_bombay = 14,
flash_bombay = 15, -- flash_bombay = 15,
anti_monster_mine = 16, -- anti_monster_mine = 16,
zap_blast_spinner = 17, -- zap_blast_spinner = 17,
furr_ious = 18, -- furr_ious = 18,
power_drum = 19, power_drum = 19,
fleet_foot_feat = 20, -- fleet_foot_feat = 20,
whirlwind_assault = 21, -- whirlwind_assault = 21,
pilfer = 22, -- pilfer = 22,
shock_tripper = 23, -- shock_tripper = 23,
mega_boomerang = 24, -- mega_boomerang = 24,
camouflage = 25, -- camouflage = 25,
healing_clover_bat = 26, -- healing_clover_bat = 26,
felyne_firewors = 27, -- felyne_firewors = 27,
lottery_box = 28, -- lottery_box = 28,
felyne_powered_up = 29, -- felyne_powered_up = 29,
ameowzing_mist = 30 -- ameowzing_mist = 30
}; };
local otomo_moves_type_name = "otomo_moves"; 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 player_data_type_def = sdk.find_type_definition("snow.player.PlayerData"); local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Palico: Rousing Roar -- 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)"); local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.DataDef.OtSupportActionId)");
function this.update(player_data) function this.update(player_data)
buffs.update_generic_buff(this.list, otomo_moves_type_name, "rousing_roar", this.get_otomo_move_name, this.update_otomo_move("rousing_roar", nil, nil, player_data, beast_roar_otomo_timer_field);
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);
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);
end end
function this.get_otomo_move_name(otomo_move_key) function this.update_otomo_move(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
local otomo_move_name = get_name_method:call(nil, otomo_moves_ids[otomo_move_key]); 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 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)); error_handler.report("otomo_moves.get_otomo_move_name", string.format("Failed to Access Data: %s_name", key));
return otomo_move_key; return key;
end end
return otomo_move_name; return otomo_move_name;

View File

@@ -46,59 +46,24 @@ local ValueType = ValueType;
local package = package; local package = package;
this.list = { this.list = {
burst = nil, chameleos_soul = nil,
kushala_daora_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 = { local rampage_skill_ids = {
chameleos_soul = 250, chameleos_soul = 250,
kushala_daora_soul = 251, kushala_daora_soul = 251,
}; };
local rampage_skills_type_name = "rampage_skills";
local kushara_daora_soul_breakpoint = 5; 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"); local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Kushala Daora Soul -- Kushala Daora Soul
local hyakuryu_dragon_power_up_count_field = player_data_type_def:get_field("_HyakuryuDragonPowerUpCnt"); 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)"); local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.DataDef.PlHyakuryuSkillId)");
function this.update(player_data) function this.update(player_data)
--local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager); this.update_rampage_skill("kushala_daora_soul", player_data, hyakuryu_dragon_power_up_count_field,
--if item_parameter == nil then player_data, hyakuryu_dragon_power_up_timer_field, false, nil, {kushara_daora_soul_breakpoint});
-- error_handler.report("skills.update", "Failed to access Data: item_parameter");
-- return;
--end
buffs.update_generic_buff(this.list, rampage_skills_type_name, "kushala_daora_soul", this.get_skill_name, this.update_rampage_skill("chameleos_soul", nil, nil, player_data, hyakuryu_onazuti_power_up_interval_field);
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);
end end
function this.init_names() function this.update_rampage_skill(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
for rampage_skill_key, skill in pairs(this.list) do return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.rampage_skills, this.get_rampage_skill_name,
skill.name = this.get_skill_name(rampage_skill_key); 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 buffs.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
end end
function this.get_skill_name(rampage_skill_key) function this.init_names()
local rampage_skill_name = get_name_method:call(nil, rampage_skill_ids[rampage_skill_key]); 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 if rampage_skill_name == nil then
error_handler.report("skills.get_skill_name", string.format("Failed to access Data: %s_name", rampage_skill_key)); error_handler.report("rampage_skills.get_rampage_skill_name", string.format("Failed to Access Data: %s_name", key));
return rampage_skill_key; return key;
end end
return rampage_skill_name; return rampage_skill_name;

View File

@@ -46,42 +46,85 @@ local ValueType = ValueType;
local package = package; local package = package;
this.list = { 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, adrenaline_rush = nil,
wall_runner = nil, affinity_sliding = nil,
offensive_guard = nil,
hellfire_cloak = nil,
agitator = 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, 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_red = nil,
powder_mantle_blue = nil, powder_mantle_blue = nil,
protective_polish = nil,
resentment = nil,
resuscitate = nil,
spiribirds_call = nil,
status_trigger = nil,
strife = nil, strife = nil,
inspiration = nil, wall_runner = nil,
blood_awakening = nil, wind_mantle = nil,
partbreaker = 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"; local skills_type_name = "skills";
@@ -227,7 +270,7 @@ local skill_data_list = {
wind_mantle = { id = 138 }, wind_mantle = { id = 138 },
-- powder_mantle = { id = 139 }, -- powder_mantle = { id = 139 },
-- frostcraft = { id = 140 }, -- frostcraft = { id = 140 },
-- dragon_conversion = { id = 141 }, -- dragon_conversion = { id = 141 }, -- implemented
heaven_sent = { id = 142 }, heaven_sent = { id = 142 },
frenzied_bloodlust = { id = 143 }, frenzied_bloodlust = { id = 143 },
blood_awakening = { id = 144 }, blood_awakening = { id = 144 },
@@ -236,6 +279,7 @@ local skill_data_list = {
inspiration = { id = 147 }, inspiration = { id = 147 },
} }
this.is_heroics_active = false;
local intrepid_heart_minimal_value = 400; local intrepid_heart_minimal_value = 400;
@@ -265,12 +309,6 @@ local spiribirds_call_duration = 60;
local wind_mantle_duration = 15; 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"); local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Burst -- Burst
local rengeki_power_up_count_field = player_data_type_def:get_field("_RengekiPowerUpCnt"); 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_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"); local get_player_skill_list_method = player_base_type_def:get_method("get_PlayerSkillList");
-- Latent Power -- Latent Power
@@ -329,7 +366,7 @@ local power_freedom_timer_field = player_base_type_def:get_field("_PowerFreedomT
-- Protective Polish -- Protective Polish
local sharpness_gauge_boost_timer_field = player_base_type_def:get_field("_SharpnessGaugeBoostTimer"); local sharpness_gauge_boost_timer_field = player_base_type_def:get_field("_SharpnessGaugeBoostTimer");
-- Heroics -- 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 -- Berserk
local get_is_enable_equip_skill_225_method = player_base_type_def:get_method("get_IsEnableEquipSkill225"); local get_is_enable_equip_skill_225_method = player_base_type_def:get_method("get_IsEnableEquipSkill225");
-- Dragon Conversion -- Dragon Conversion
@@ -337,7 +374,7 @@ local equip_skill_229_sum_resist_field = player_base_type_def:get_field("_EquipS
-- Resuscitate -- Resuscitate
local is_debuff_state_method = player_base_type_def:get_method("isDebuffState"); 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 get_skill_data_method = player_skill_list_type_def:get_method("getSkillData");
local skill_data_type_def = get_skill_data_method:get_return_type(); 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"); local get_affinity_equip_skill_233_method = player_quest_base_type_def:get_method("getAffinityEquipSkill233");
-- Blood Awakening -- Blood Awakening
local get_equip_skill_232_lv_method = player_quest_base_type_def:get_method("getEquipSkill232Lv"); 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 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"); 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)"); local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.DataDef.PlEquipSkillId)");
function this.update(player, player_data, weapon_type) 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_equipped_skill_data(player);
this.update_wind_mantle(player, weapon_type); this.update_wind_mantle(player, weapon_type);
@@ -388,6 +414,7 @@ function this.update(player, player_data, weapon_type)
this.update_bloodlust(); this.update_bloodlust();
this.update_frenzied_bloodlust(player, player_data); this.update_frenzied_bloodlust(player, player_data);
this.update_peak_performance(); this.update_peak_performance();
this.update_heroics();
this.update_dragonheart(); this.update_dragonheart();
this.update_resentment(player_data); this.update_resentment(player_data);
this.update_bladescale_hone(player, weapon_type); 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_powder_mantle(player_data);
this.update_blood_awakening(player, player_data); this.update_blood_awakening(player, player_data);
this.update_skill("dereliction", player_data, symbiosis_skill_lost_vital_field, nil, nil, true, nil, dereliction_breakpoints);
this.update_generic_skill("dereliction", player_data, symbiosis_skill_lost_vital_field, this.update_skill("burst", player_data, rengeki_power_up_count_field, player_data, rengeki_power_up_timer_field, false, nil, burst_breakpoints);
nil, nil, nil, nil, true, nil, dereliction_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_generic_skill("burst", player_data, rengeki_power_up_count_field, this.update_skill("protective_polish", nil, nil, player, sharpness_gauge_boost_timer_field);
player_data, rengeki_power_up_timer_field, nil, nil, false, nil, burst_breakpoints); 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_generic_skill("intrepid_heart", player_data, equip_skill_223_accumulator_field, this.update_skill("affinity_sliding", nil, nil, player_data, sliding_powerup_timer_field);
nil, nil, nil, nil, true, intrepid_heart_minimal_value); 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_generic_skill("latent_power", nil, nil, player, power_freedom_timer_field); this.update_skill("wall_runner", nil, nil, player_data, wall_run_powerup_timer_field);
this.update_generic_skill("protective_polish", nil, nil, player, sharpness_gauge_boost_timer_field); this.update_skill("offensive_guard", nil, nil, player_data, equip_skill_036_timer_field);
this.update_generic_skill("grinder_s", nil, nil, player_data, brand_new_sharpness_adjust_up_timer_field); this.update_skill("hellfire_cloak", nil, nil, player_data, onibi_powerup_timer_field);
this.update_generic_skill("counterstrike", nil, nil, player_data, counterattack_powerup_timer_field); this.update_skill("agitator", nil, nil, player_data, challenge_timer_field, nil, nil, true);
this.update_generic_skill("affinity_sliding", nil, nil, player_data, sliding_powerup_timer_field); this.update_skill("furious", nil, nil, player_data, furious_skill_stamina_buff_second_timer_field);
this.update_generic_skill("coalescence", nil, nil, player_data, disaster_turn_powerup_timer_field); this.update_skill("status_trigger", nil, nil, player_data, equip_skill_222_timer_field);
this.update_generic_skill("adrenaline_rush", nil, nil, player_data, equip_skill_208_atk_up_field); this.update_skill("inspiration", nil, nil, player_data, equip_skill_235_atk_up_second_timer_field);
this.update_generic_skill("wall_runner", nil, nil, player_data, wall_run_powerup_timer_field); this.update_skill("heaven_sent", player, is_active_equip_skill_230_method);
this.update_generic_skill("offensive_guard", nil, nil, player_data, equip_skill_036_timer_field); this.update_skill("resuscitate", player, is_debuff_state_method);
this.update_generic_skill("hellfire_cloak", nil, nil, player_data, onibi_powerup_timer_field); this.update_skill("embolden", player, get_active_equip_209_method);
this.update_generic_skill("agitator", nil, nil, player_data, challenge_timer_field, nil, nil, true); this.update_skill("berserk", player, get_is_enable_equip_skill_225_method);
this.update_generic_skill("furious", nil, nil, player_data, furious_skill_stamina_buff_second_timer_field); this.update_skill("dragon_conversion_elemental_attack_up", player, equip_skill_229_sum_resist_field);
this.update_generic_skill("status_trigger", nil, nil, player_data, equip_skill_222_timer_field); this.update_skill("dragon_conversion_elemental_res_up", player, equip_skill_229_use_up_flag_field);
this.update_generic_skill("inspiration", nil, nil, player_data, equip_skill_235_atk_up_second_timer_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]);
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]);
end end
function this.update_generic_skill(skill_key, value_owner, value_holder, timer_owner, timer_holder, duration_owner, duration_holder, function this.update_skill(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
is_infinite, minimal_value, level_breakpoints) local skill_data = skill_data_list[key];
local skill_data = skill_data_list[skill_key];
if skill_data ~= nil and skill_data.is_equipped ~= nil and not skill_data.is_equipped then if skill_data ~= nil and skill_data.is_equipped ~= nil and not skill_data.is_equipped then
this.list[skill_key] = nil; this.list[key] = nil;
return; return nil;
end end
buffs.update_generic_buff(this.list, skills_type_name, skill_key, this.get_skill_name, return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.skills, this.get_skill_name,
value_owner, value_holder, timer_owner, timer_holder, duration_owner, duration_holder, skills_type_name, key,
is_infinite, minimal_value, level_breakpoints); 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 end
function this.update_equipped_skill_data(player) function this.update_equipped_skill_data(player)
local player_skill_list = get_player_skill_list_method:call(player); local player_skill_list = get_player_skill_list_method:call(player);
if player_skill_list == nil then 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; return;
end end
@@ -468,11 +490,10 @@ function this.update_equipped_skill_data(player)
local skill_level = skill_lv_field:get_data(re_skill_data); local skill_level = skill_lv_field:get_data(re_skill_data);
if skill_level == nil then if skill_level == nil then
error_handler.report("skills.update_equipped_skill_data", string.format("Failed to access Data: %s -> skill_level", skill_key)); error_handler.report("skills.update_equipped_skill_data", string.format("Failed to Access Data: %s -> skill_level", skill_key));
goto continue; goto continue;
end end
if skill_level <= 0 then if skill_level <= 0 then
skill_data.is_equipped = false; skill_data.is_equipped = false;
skill_data.level = 0; skill_data.level = 0;
@@ -487,9 +508,14 @@ function this.update_equipped_skill_data(player)
end end
function this.update_wind_mantle(player, weapon_type) 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); local is_wind_mantle_enable = is_equip_skill_226_enable_field:get_data(player);
if is_wind_mantle_enable == nil then if is_wind_mantle_enable == nil then
error_handler.report("skills.update_wind_mantle", "Failed to access Data: is_wind_mantle_enable"); error_handler.report("skills.update_wind_mantle", "Failed to Access Data: is_wind_mantle_enable");
this.list.wind_mantle = nil;
return; return;
end end
@@ -500,13 +526,15 @@ function this.update_wind_mantle(player, weapon_type)
local wind_mantle_timer = equip_skill_226_attack_off_timer_field:get_data(player); local wind_mantle_timer = equip_skill_226_attack_off_timer_field:get_data(player);
if wind_mantle_timer == nil then if wind_mantle_timer == nil then
error_handler.report("skills.update_wind_mantle", "Failed to access Data: wind_mantle_timer"); error_handler.report("skills.update_wind_mantle", "Failed to Access Data: wind_mantle_timer");
this.list.wind_mantle = nil;
return; return;
end end
local wind_mantle_value = equip_skill_226_attack_count_field:get_data(player); local wind_mantle_value = equip_skill_226_attack_count_field:get_data(player);
if wind_mantle_value == nil then if wind_mantle_value == nil then
error_handler.report("skills.update_wind_mantle", "Failed to access Data: wind_mantle_value"); error_handler.report("skills.update_wind_mantle", "Failed to Access Data: wind_mantle_value");
this.list.wind_mantle = nil;
return; return;
end end
@@ -522,10 +550,16 @@ function this.update_wind_mantle(player, weapon_type)
end end
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 end
function this.update_maximum_might(player_data) 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 if not skill_data_list.maximum_might.is_equipped then
this.list.maximum_might = nil; this.list.maximum_might = nil;
return; return;
@@ -533,29 +567,30 @@ function this.update_maximum_might(player_data)
local whole_body_timer = whole_body_timer_field:get_data(player_data); local whole_body_timer = whole_body_timer_field:get_data(player_data);
if whole_body_timer == nil then if whole_body_timer == nil then
error_handler.report("skills.update_maximum_might", "Failed to access Data: whole_body_timer"); error_handler.report("skills.update_maximum_might", "Failed to Access Data: whole_body_timer");
this.list.maximum_might = nil;
return; return;
end end
if player_info.list.max_stamina == -1 then if player_info.list.max_stamina == -1 then
this.list.maximum_might = nil;
return; return;
end end
local skill = this.list.maximum_might; local maximum_might = this.list.maximum_might;
local is_timer_zero = utils.number.is_equal(whole_body_timer, 0);
if player_info.list.stamina ~= player_info.list.max_stamina then 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; this.list.maximum_might = nil;
end end
elseif skill == nil then elseif maximum_might == nil then
local maximum_might_name = this.get_skill_name("maximum_might"); local maximum_might_name = this.get_skill_name("maximum_might");
if whole_body_timer < maximum_might_previous_timer_value then 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); 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 if maximum_might_delay_timer == nil then
maximum_might_delay_timer = time.new_delay_timer(function() maximum_might_delay_timer = time.new_delay_timer(function()
maximum_might_delay_timer = nil; maximum_might_delay_timer = nil;
@@ -570,9 +605,18 @@ function this.update_maximum_might(player_data)
end end
maximum_might_previous_timer_value = whole_body_timer; maximum_might_previous_timer_value = whole_body_timer;
if maximum_might ~= nil then
maximum_might.is_visible = true;
end
end end
function this.update_bloodlust() 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 if not skill_data_list.bloodlust.is_equipped then
this.list.bloodlust = nil; this.list.bloodlust = nil;
return; return;
@@ -584,21 +628,30 @@ function this.update_bloodlust()
return; return;
end end
if this.list.bloodlust == nil then local bloodlust = this.list.bloodlust;
if bloodlust == nil then
local bloodlust_name = this.get_skill_name("bloodlust"); local bloodlust_name = this.get_skill_name("bloodlust");
if bloodlust_name == nil then 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");
this.list.bloodlust = nil;
return; return;
end end
this.list.bloodlust = buffs.new(skills_type_name, "bloodlust", bloodlust_name); this.list.bloodlust = buffs.new(skills_type_name, "bloodlust", bloodlust_name);
end end
this.list.bloodlust.is_visible = true;
end end
function this.update_frenzied_bloodlust(player, player_data) 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); local hunter_wire_skill_231_num = get_hunter_wire_skill_231_num_method:call(player);
if hunter_wire_skill_231_num == nil then if hunter_wire_skill_231_num == nil then
error_handler.report("skills.update_frenzied_bloodlust", "Failed to access Data: hunter_wire_skill_231_num"); error_handler.report("skills.update_frenzied_bloodlust", "Failed to Access Data: hunter_wire_skill_231_num");
this.list.frenzied_bloodlust = nil;
return; return;
end end
@@ -611,13 +664,15 @@ function this.update_frenzied_bloodlust(player, player_data)
local equip_skill_231_wire_num_timer = equip_skill_231_wire_num_timer_field:get_data(player_data); local equip_skill_231_wire_num_timer = equip_skill_231_wire_num_timer_field:get_data(player_data);
if equip_skill_231_wire_num_timer == nil then if equip_skill_231_wire_num_timer == nil then
error_handler.report("skills.update_frenzied_bloodlust", "Failed to access Data: equip_skill_231_wire_num_timer"); error_handler.report("skills.update_frenzied_bloodlust", "Failed to Access Data: equip_skill_231_wire_num_timer");
this.list.frenzied_bloodlust = nil;
return; return;
end end
local equip_skill_231_wp_off_timer = equip_skill_231_wp_off_timer_field:get_data(player_data); local equip_skill_231_wp_off_timer = equip_skill_231_wp_off_timer_field:get_data(player_data);
if equip_skill_231_wp_off_timer == nil then if equip_skill_231_wp_off_timer == nil then
error_handler.report("skills.update_frenzied_bloodlust", "Failed to access Data: equip_skill_231_wp_off_timer"); error_handler.report("skills.update_frenzied_bloodlust", "Failed to Access Data: equip_skill_231_wp_off_timer");
this.list.frenzied_bloodlust = nil;
return; return;
end end
@@ -642,7 +697,7 @@ function this.update_frenzied_bloodlust(player, player_data)
timer = equip_skill_231_wp_off_timer; timer = equip_skill_231_wp_off_timer;
end 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 if is_wp_off_timer_max then
skill.duration = frenzied_bloodlust_duration / 60; skill.duration = frenzied_bloodlust_duration / 60;
@@ -652,6 +707,11 @@ function this.update_frenzied_bloodlust(player, player_data)
end end
function this.update_peak_performance() 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 if not skill_data_list.peak_performance.is_equipped then
this.list.peak_performance = nil; this.list.peak_performance = nil;
return; return;
@@ -662,10 +722,28 @@ function this.update_peak_performance()
return; return;
end 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 end
function this.update_dragonheart() 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 if not skill_data_list.dragonheart.is_equipped then
this.list.dragonheart = nil; this.list.dragonheart = nil;
return; return;
@@ -685,10 +763,15 @@ function this.update_dragonheart()
return; return;
end end
buffs.update_generic(this.list, skills_type_name, "dragonheart", this.get_skill_name); this.update_generic("dragonheart");
end end
function this.update_resentment(player_data) 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 if not skill_data_list.resentment.is_equipped then
this.list.resentment = nil; this.list.resentment = nil;
return; return;
@@ -696,7 +779,8 @@ function this.update_resentment(player_data)
local r_vital = r_vital_field:get_data(player_data); local r_vital = r_vital_field:get_data(player_data);
if r_vital == nil then if r_vital == nil then
error_handler.report("skills.update_resentment", "Failed to access Data: r_vital"); error_handler.report("skills.update_resentment", "Failed to Access Data: r_vital");
this.list.resentment = nil;
return; return;
end end
@@ -705,7 +789,7 @@ function this.update_resentment(player_data)
return; return;
end end
buffs.update_generic(this.list, skills_type_name, "resentment", this.get_skill_name); this.update_generic("resentment");
end end
function this.update_bladescale_hone(player, weapon_type) function this.update_bladescale_hone(player, weapon_type)
@@ -714,13 +798,22 @@ function this.update_bladescale_hone(player, weapon_type)
return; return;
end 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 end
function this.update_spiribirds_call(player_data) 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); local equip_skill_211_timer = equip_skill_211_timer_field:get_data(player_data);
if equip_skill_211_timer == nil then if equip_skill_211_timer == nil then
error_handler.report("skills.update_spiribirds_call", "Failed to access Data: equip_skill_211_timer"); error_handler.report("skills.update_spiribirds_call", "Failed to Access Data: equip_skill_211_timer");
this.list.spiribirds_call = nil;
return; return;
end end
@@ -731,43 +824,34 @@ function this.update_spiribirds_call(player_data)
local timer = spiribirds_call_duration - (equip_skill_211_timer / 60); 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 end
function this.update_powder_mantle(player_data) function this.update_powder_mantle(player_data)
this.update_generic_skill("powder_mantle_blue", player_data, equip_skill_227_state_field, if not this.apply_filter("powder_mantle_blue") then
player_data, equip_skill_227_state_timer_field, nil, nil, nil, 2); 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 if this.list.powder_mantle_blue ~= nil then
this.list.powder_mantle_red = nil; this.list.powder_mantle_red = nil;
return; return;
end end
this.update_generic_skill("powder_mantle_red", player_data, equip_skill_227_state_field, if this.apply_filter("powder_mantle_red") then
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
return; return;
end end
local activation_time_field = activation_time_lv_1_field; this.update_skill("powder_mantle_red", player_data, equip_skill_227_state_field, player_data, equip_skill_227_state_timer_field);
if blood_awakening.level == 2 then end
activation_time_field = activation_time_lv_2_field;
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 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 end
function this.init_names() function this.init_names()
@@ -776,23 +860,22 @@ function this.init_names()
end end
end end
function this.get_skill_name(skill_key) function this.get_skill_name(key)
local skill_data = skill_data_list[skill_key]; local skill_data = skill_data_list[key];
if skill_data == nil then 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 if skill_name == nil then
return skill_key; return key;
end end
return skill_name; return skill_name;
end 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 if skill_name == nil then
error_handler.report("skills.get_skill_name", string.format("Failed to access Data: %s_name", skill_key)); error_handler.report("skills.get_skill_name", string.format("Failed to Access Data: %s_name", key));
return skill_key; return key;
end end
return skill_name; return skill_name;

File diff suppressed because it is too large Load Diff

View File

@@ -107,13 +107,13 @@ function this.update_damage(enemy, enemy_calc_damage_info)
local is_large_monster = is_boss_enemy_method:call(enemy); local is_large_monster = is_boss_enemy_method:call(enemy);
if is_large_monster == nil then if is_large_monster == nil then
error_handler.report("damage_hook.update_damage", "Failed to access Data: is_large_monster"); error_handler.report("damage_hook.update_damage", "Failed to Access Data: is_large_monster");
return; return;
end end
local dead_or_captured = check_die_method:call(enemy); local dead_or_captured = check_die_method:call(enemy);
if dead_or_captured == nil then if dead_or_captured == nil then
error_handler.report("damage_hook.update_damage", "Failed to access Data: dead_or_captured"); error_handler.report("damage_hook.update_damage", "Failed to Access Data: dead_or_captured");
return; return;
end end
@@ -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(players.total, damage_source_type, is_large_monster, damage_object);
players.update_damage(player, 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 end
function this.cart(dead_player_id, flag_cat_skill_insurance) function this.cart(dead_player_id, flag_cat_skill_insurance)
@@ -358,7 +331,7 @@ function this.on_anomaly_core_break(anomaly_core_part)
local anomaly_core_break_damage_rate = get_mystery_core_break_damage_rate_method:call(anomaly_monster.enemy); local anomaly_core_break_damage_rate = get_mystery_core_break_damage_rate_method:call(anomaly_monster.enemy);
if anomaly_core_break_damage_rate == nil then if anomaly_core_break_damage_rate == nil then
error_handler.report("damage_hook.on_anomaly_core_break", "Failed to access Data: anomaly_core_break_damage_rate"); error_handler.report("damage_hook.on_anomaly_core_break", "Failed to Access Data: anomaly_core_break_damage_rate");
return; return;
end end

View File

@@ -134,19 +134,19 @@ function this.update_servant_list()
local cached_config = config.current_config.damage_meter_UI; local cached_config = config.current_config.damage_meter_UI;
if singletons.servant_manager == nil then if singletons.servant_manager == nil then
error_handler.report("non_players.update_servant_list", "Failed to access Data: servant_manager"); error_handler.report("non_players.update_servant_list", "Failed to Access Data: servant_manager");
return; return;
end end
local quest_servant_id_list = get_quest_servant_id_list_method:call(singletons.servant_manager); local quest_servant_id_list = get_quest_servant_id_list_method:call(singletons.servant_manager);
if quest_servant_id_list == nil then if quest_servant_id_list == nil then
error_handler.report("non_players.update_servant_list", "Failed to access Data: quest_servant_id_list"); -- error_handler.report("non_players.update_servant_list", "Failed to Access Data: quest_servant_id_list");
return; return;
end end
local servant_count = servant_get_count_method:call(quest_servant_id_list); local servant_count = servant_get_count_method:call(quest_servant_id_list);
if servant_count == nil then if servant_count == nil then
error_handler.report("non_players.update_servant_list", "Failed to access Data: servant_count"); error_handler.report("non_players.update_servant_list", "Failed to Access Data: servant_count");
return; return;
end end
@@ -154,20 +154,20 @@ function this.update_servant_list()
for i = 0, servant_count - 1 do for i = 0, servant_count - 1 do
local servant_id = servant_get_item_method:call(quest_servant_id_list, i); local servant_id = servant_get_item_method:call(quest_servant_id_list, i);
if servant_id == nil then if servant_id == nil then
error_handler.report("non_players.update_servant_list", "Failed to access Data: servant_id No." .. tostring(i)); error_handler.report("non_players.update_servant_list", "Failed to Access Data: servant_id No." .. tostring(i));
goto continue; goto continue;
end end
local ai_control = get_ai_control_by_servant_id_method:call(singletons.servant_manager, servant_id); local ai_control = get_ai_control_by_servant_id_method:call(singletons.servant_manager, servant_id);
if ai_control == nil then if ai_control == nil then
error_handler.report("non_players.update_servant_list", "Failed to access Data: ai_control No." .. tostring(i)); error_handler.report("non_players.update_servant_list", "Failed to Access Data: ai_control No." .. tostring(i));
goto continue; goto continue;
end end
local servant_info = get_servant_info_method:call(ai_control); local servant_info = get_servant_info_method:call(ai_control);
if servant_info == nil then if servant_info == nil then
error_handler.report("non_players.update_servant_list", "Failed to access Data: servant_info No." .. tostring(i)); error_handler.report("non_players.update_servant_list", "Failed to Access Data: servant_info No." .. tostring(i));
goto continue; goto continue;
end end
@@ -191,7 +191,7 @@ end
function this.update_otomo_list(is_on_quest, is_online) function this.update_otomo_list(is_on_quest, is_online)
if singletons.otomo_manager == nil then if singletons.otomo_manager == nil then
error_handler.report("non_players.update_otomo_list", "Failed to access Data: otomo_manager"); error_handler.report("non_players.update_otomo_list", "Failed to Access Data: otomo_manager");
return; return;
end end
@@ -220,11 +220,11 @@ function this.update_my_otomos()
local first_otomo = get_master_otomo_info_method:call(singletons.otomo_manager, 0); local first_otomo = get_master_otomo_info_method:call(singletons.otomo_manager, 0);
if first_otomo == nil then if first_otomo == nil then
error_handler.report("non_players.update_my_otomos", "Failed to access Data: first_otomo"); error_handler.report("non_players.update_my_otomos", "Failed to Access Data: first_otomo");
else else
local name = otomo_create_data_name_field:get_data(first_otomo); local name = otomo_create_data_name_field:get_data(first_otomo);
if name == nil then if name == nil then
error_handler.report("non_players.update_my_otomos", "Failed to access Data: first_otomo -> name"); error_handler.report("non_players.update_my_otomos", "Failed to Access Data: first_otomo -> name");
end end
if name ~= nil and name ~= "" then if name ~= nil and name ~= "" then
@@ -241,11 +241,11 @@ function this.update_my_otomos()
local second_otomo = get_master_otomo_info_method:call(singletons.otomo_manager, 1); local second_otomo = get_master_otomo_info_method:call(singletons.otomo_manager, 1);
if second_otomo == nil then if second_otomo == nil then
error_handler.report("non_players.update_my_otomos", "Failed to access Data: second_otomo"); error_handler.report("non_players.update_my_otomos", "Failed to Access Data: second_otomo");
else else
local name = otomo_create_data_name_field:get_data(second_otomo); local name = otomo_create_data_name_field:get_data(second_otomo);
if name == nil then if name == nil then
error_handler.report("non_players.update_my_otomos", "Failed to access Data: second_otomo -> name"); error_handler.report("non_players.update_my_otomos", "Failed to Access Data: second_otomo -> name");
return; return;
end end
@@ -268,20 +268,20 @@ function this.update_servant_otomos()
local servant_otomo_list = get_servant_otomo_list_method:call(singletons.otomo_manager); local servant_otomo_list = get_servant_otomo_list_method:call(singletons.otomo_manager);
if servant_otomo_list == nil then if servant_otomo_list == nil then
error_handler.report("non_players.update_servant_otomos", "Failed to access Data: servant_otomo_list"); error_handler.report("non_players.update_servant_otomos", "Failed to Access Data: servant_otomo_list");
return; return;
end end
local count = otomo_get_count_method:call(servant_otomo_list); local count = otomo_get_count_method:call(servant_otomo_list);
if count == nil then if count == nil then
error_handler.report("non_players.update_servant_otomos", "Failed to access Data: servant_otomo_list -> count"); error_handler.report("non_players.update_servant_otomos", "Failed to Access Data: servant_otomo_list -> count");
return; return;
end end
for i = 0, count - 1 do for i = 0, count - 1 do
local servant_otomo = otomo_get_item_method:call(servant_otomo_list, i); local servant_otomo = otomo_get_item_method:call(servant_otomo_list, i);
if servant_otomo == nil then if servant_otomo == nil then
error_handler.report("non_players.update_servant_otomos", "Failed to access Data: servant_otomo No. " .. tostring(i)); error_handler.report("non_players.update_servant_otomos", "Failed to Access Data: servant_otomo No. " .. tostring(i));
goto continue; goto continue;
end end
@@ -292,7 +292,7 @@ function this.update_servant_otomos()
local member_id = otomo_create_data:get_field("MemberID"); local member_id = otomo_create_data:get_field("MemberID");
if name == nil then if name == nil then
error_handler.report("non_players.update_servant_otomos", string.format("Failed to access Data: servant_otomo No. %d -> name", i)); error_handler.report("non_players.update_servant_otomos", string.format("Failed to Access Data: servant_otomo No. %d -> name", i));
goto continue; goto continue;
end end
@@ -313,33 +313,33 @@ function this.update_otomos(otomo_info_field_)
local cached_config = config.current_config.damage_meter_UI; local cached_config = config.current_config.damage_meter_UI;
if singletons.lobby_manager == nil then if singletons.lobby_manager == nil then
error_handler.report("non_players.update_otomos", "Failed to access Data: lobby_manager"); error_handler.report("non_players.update_otomos", "Failed to Access Data: lobby_manager");
return; return;
end end
-- other players -- other players
local otomo_info_list = otomo_info_field_:get_data(singletons.lobby_manager); local otomo_info_list = otomo_info_field_:get_data(singletons.lobby_manager);
if otomo_info_list == nil then if otomo_info_list == nil then
error_handler.report("non_players.update_otomos", "Failed to access Data: otomo_info_list"); error_handler.report("non_players.update_otomos", "Failed to Access Data: otomo_info_list");
return; return;
end end
local count = otomo_info_get_count_method:call(otomo_info_list); local count = otomo_info_get_count_method:call(otomo_info_list);
if count == nil then if count == nil then
error_handler.report("non_players.update_otomos", "Failed to access Data: otomo_info_list -> count"); error_handler.report("non_players.update_otomos", "Failed to Access Data: otomo_info_list -> count");
return; return;
end end
for id = 0, count - 1 do for id = 0, count - 1 do
local otomo_info = otomo_info_get_item_method:call(otomo_info_list, id); local otomo_info = otomo_info_get_item_method:call(otomo_info_list, id);
if otomo_info == nil then if otomo_info == nil then
error_handler.report("non_players.update_otomos", "Failed to access Data: otomo_info No. " .. tostring(id)); error_handler.report("non_players.update_otomos", "Failed to Access Data: otomo_info No. " .. tostring(id));
goto continue; goto continue;
end end
local name = otomo_info_name_field:get_data(otomo_info); local name = otomo_info_name_field:get_data(otomo_info);
if name == nil then if name == nil then
error_handler.report("non_players.update_otomos", string.format("Failed to access Data: otomo_info No. %d -> name", id)); error_handler.report("non_players.update_otomos", string.format("Failed to Access Data: otomo_info No. %d -> name", id));
goto continue; goto continue;
end end

View File

@@ -390,7 +390,7 @@ local get_pos_field = player_base_type_def:get_method("get_Pos");
function this.update_myself_position() function this.update_myself_position()
if singletons.player_manager == nil then if singletons.player_manager == nil then
error_handler.report("players.update_myself_position", "Failed to access Data: player_manager"); error_handler.report("players.update_myself_position", "Failed to Access Data: player_manager");
return; return;
end end
@@ -401,13 +401,13 @@ function this.update_myself_position()
local master_player = find_master_player_method:call(singletons.player_manager); local master_player = find_master_player_method:call(singletons.player_manager);
if master_player == nil then if master_player == nil then
error_handler.report("players.update_myself_position", "Failed to access Data: master_player"); error_handler.report("players.update_myself_position", "Failed to Access Data: master_player");
return; return;
end end
local position = get_pos_field:call(master_player); local position = get_pos_field:call(master_player);
if position == nil then if position == nil then
error_handler.report("players.update_myself_position", "Failed to access Data: position"); error_handler.report("players.update_myself_position", "Failed to Access Data: position");
end end
this.myself_position = position; this.myself_position = position;
@@ -466,25 +466,25 @@ function this.update_player_list(hunter_info_field_)
local cached_config = config.current_config.damage_meter_UI; local cached_config = config.current_config.damage_meter_UI;
if singletons.lobby_manager == nil then if singletons.lobby_manager == nil then
error_handler.report("players.update_player_list", "Failed to access Data: lobby_manager"); error_handler.report("players.update_player_list", "Failed to Access Data: lobby_manager");
return; return;
end end
if singletons.progress_manager == nil then if singletons.progress_manager == nil then
error_handler.report("players.update_player_list", "Failed to access Data: progress_manager"); error_handler.report("players.update_player_list", "Failed to Access Data: progress_manager");
return; return;
end end
-- myself player -- myself player
local myself_player_info = my_hunter_info_field:get_data(singletons.lobby_manager); local myself_player_info = my_hunter_info_field:get_data(singletons.lobby_manager);
if myself_player_info == nil then if myself_player_info == nil then
error_handler.report("players.update_player_list", "Failed to access Data: myself_player_info"); error_handler.report("players.update_player_list", "Failed to Access Data: myself_player_info");
return; return;
end end
local myself_player_name = name_field:get_data(myself_player_info); local myself_player_name = name_field:get_data(myself_player_info);
if myself_player_name == nil then if myself_player_name == nil then
error_handler.report("players.update_player_list", "Failed to access Data: myself_player_name"); error_handler.report("players.update_player_list", "Failed to Access Data: myself_player_name");
return; return;
end end
@@ -494,7 +494,7 @@ function this.update_player_list(hunter_info_field_)
local myself_id = get_master_player_id_method:call(singletons.player_manager); local myself_id = get_master_player_id_method:call(singletons.player_manager);
if myself_id == nil then if myself_id == nil then
error_handler.report("players.update_player_list", "Failed to access Data: myself_id"); error_handler.report("players.update_player_list", "Failed to Access Data: myself_id");
return; return;
end end
@@ -507,26 +507,26 @@ function this.update_player_list(hunter_info_field_)
-- other players -- other players
local player_info_array = hunter_info_field_:get_data(singletons.lobby_manager); local player_info_array = hunter_info_field_:get_data(singletons.lobby_manager);
if player_info_array == nil then if player_info_array == nil then
error_handler.report("players.update_player_list", "Failed to access Data: player_info_array"); error_handler.report("players.update_player_list", "Failed to Access Data: player_info_array");
return; return;
end end
local count = get_count_method:call(player_info_array); local count = get_count_method:call(player_info_array);
if count == nil then if count == nil then
error_handler.report("players.update_player_list", "Failed to access Data: player_info_array -> count"); error_handler.report("players.update_player_list", "Failed to Access Data: player_info_array -> count");
return; return;
end end
for i = 0, count - 1 do for i = 0, count - 1 do
local player_info = get_item_method:call(player_info_array, i); local player_info = get_item_method:call(player_info_array, i);
if player_info == nil then if player_info == nil then
error_handler.report("players.update_player_list", "Failed to access Data: player_info No. " .. tostring(i)); -- error_handler.report("players.update_player_list", "Failed to Access Data: player_info No. " .. tostring(i));
goto continue; goto continue;
end end
local id = member_index_field:get_data(player_info); local id = member_index_field:get_data(player_info);
if id == nil then if id == nil then
error_handler.report("players.update_player_list", string.format("Failed to access Data: player_info No. %d -> id", i)); error_handler.report("players.update_player_list", string.format("Failed to Access Data: player_info No. %d -> id", i));
goto continue; goto continue;
end end
@@ -535,7 +535,7 @@ function this.update_player_list(hunter_info_field_)
local name = name_field:get_data(player_info); local name = name_field:get_data(player_info);
if name == nil then if name == nil then
error_handler.report("players.update_player_list", string.format("Failed to access Data: player_info No. %d -> name", i)); error_handler.report("players.update_player_list", string.format("Failed to Access Data: player_info No. %d -> name", i));
goto continue; goto continue;
end end

View File

@@ -53,6 +53,29 @@ this.creature_ids = {
gold_wirebug = 63, gold_wirebug = 63,
}; };
local environment_creature_base_type_def = sdk.find_type_definition("snow.envCreature.EnvironmentCreatureBase");
local creature_type_field = environment_creature_base_type_def:get_field("_Type");
local creature_is_inactive_field = environment_creature_base_type_def:get_field("<Muteki>k__BackingField");
local message_manager_type_def = sdk.find_type_definition("snow.gui.MessageManager");
local get_env_creature_name_message_method = message_manager_type_def:get_method("getEnvCreatureNameMessage");
local get_pos_method = environment_creature_base_type_def:get_method("get_Pos");
local get_ref_mesh_method = environment_creature_base_type_def:get_method("getMesh");
local mesh_type_def = get_ref_mesh_method:get_return_type();
local get_game_object_method = mesh_type_def:get_method("get_GameObject");
local game_object_type_def = get_game_object_method:get_return_type();
local get_transform_method = game_object_type_def:get_method("get_Transform");
local transform_type_def = get_transform_method:get_return_type();
local get_joint_by_name_method = transform_type_def:get_method("getJointByName");
local joint_type_def = get_joint_by_name_method:get_return_type();
local get_position_method = joint_type_def:get_method("get_Position");
function this.new(REcreature) function this.new(REcreature)
local creature = {}; local creature = {};
@@ -81,30 +104,23 @@ function this.get_creature(REcreature)
return this.list[REcreature]; return this.list[REcreature];
end end
local environment_creature_base_type_def = sdk.find_type_definition("snow.envCreature.EnvironmentCreatureBase");
local creature_type_field = environment_creature_base_type_def:get_field("_Type");
local creature_is_inactive_field = environment_creature_base_type_def:get_field("<Muteki>k__BackingField");
local message_manager_type_def = sdk.find_type_definition("snow.gui.MessageManager");
local get_env_creature_name_message_method = message_manager_type_def:get_method("getEnvCreatureNameMessage");
local get_pos_method = environment_creature_base_type_def:get_method("get_Pos");
function this.init(creature, REcreature) function this.init(creature, REcreature)
local creature_type = creature_type_field:get_data(REcreature); local creature_type = creature_type_field:get_data(REcreature);
if creature_type == nil then if creature_type == nil then
error_handler.report("env_creature.init", "Failed to access Data: creature_type"); error_handler.report("env_creature.init", "Failed to Access Data: creature_type");
return; return;
end end
local creature_name = get_env_creature_name_message_method:call(singletons.message_manager, creature_type); local creature_name = get_env_creature_name_message_method:call(singletons.message_manager, creature_type);
if creature_name == nil then if creature_name == nil then
error_handler.report("env_creature.init", "Failed to access Data: creature_name"); error_handler.report("env_creature.init", "Failed to Access Data: creature_name");
return; return;
end end
creature.name = creature_name; creature.name = creature_name;
creature.id = creature_type; creature.id = creature_type;
this.update_head_joint(REcreature, creature)
end end
function this.init_UI(creature) function this.init_UI(creature)
@@ -127,10 +143,12 @@ function this.update_position(REcreature, creature)
local position = get_pos_method:call(REcreature); local position = get_pos_method:call(REcreature);
if position == nil then if position == nil then
error_handler.report("env_creature.update_position", "Failed to access Data: position"); error_handler.report("env_creature.update_position", "Failed to Access Data: position");
end end
creature.position = position; creature.position = position;
this.update_head_position(REcreature, creature);
end end
function this.update(REcreature, creature) function this.update(REcreature, creature)
@@ -144,19 +162,94 @@ function this.update(REcreature, creature)
local is_inactive = creature_is_inactive_field:get_data(REcreature); local is_inactive = creature_is_inactive_field:get_data(REcreature);
if is_inactive == nil then if is_inactive == nil then
error_handler.report("env_creature.update", "Failed to access Data: is_inactive"); error_handler.report("env_creature.update", "Failed to Access Data: is_inactive");
end end
creature.is_inactive = is_inactive; creature.is_inactive = is_inactive;
end end
function this.update_head_joint(REcreature, creature)
local mesh = get_ref_mesh_method:call(REcreature);
if mesh == nil then
error_handler.report("env_creature.update_head_joint", "Failed to Access Data: Mesh");
return;
end
local game_object = get_game_object_method:call(mesh);
if game_object == nil then
error_handler.report("env_creature.update_head_joint", "Failed to Access Data: GameObject");
return;
end
local transform = get_transform_method:call(game_object);
if transform == nil then
error_handler.report("env_creature.update_head_joint", "Failed to Access Data: Transform");
return;
end
local head_joint = get_joint_by_name_method:call(transform, "Head_00")
or get_joint_by_name_method:call(transform, "Head")
or get_joint_by_name_method:call(transform, "Head_01")
or get_joint_by_name_method:call(transform, "Spine_00")
or get_joint_by_name_method:call(transform, "Body_00")
or get_joint_by_name_method:call(transform, "body_00")
or get_joint_by_name_method:call(transform, "Cog")
or get_joint_by_name_method:call(transform, "Cog_00")
or get_joint_by_name_method:call(transform, "head")
or get_joint_by_name_method:call(transform, "root");
if head_joint == nil then
-- local out = "";
-- local joints = transform:get_Joints();
-- for i = 0, joints:get_Length() - 1 do
-- local joint = joints[i];
-- local joint_name = joint:get_Name();
-- out = out .. joint_name .. "\n";
-- end
-- error_handler.report(creature.name, out);
error_handler.report("small_monster.update_head_joint", "Failed to Access Data: HeadJoint");
return;
end
creature.head_joint = head_joint;
end
function this.update_head_position(REcreature, creature)
if creature.head_joint == nil then
return;
end
local head_position = get_position_method:call(creature.head_joint);
if head_position == nil then
error_handler.report("env_creature.update_head_position", "Failed to Access Data: HeadPosition");
return;
end
creature.head_position = head_position;
end
function this.draw(creature, position_on_screen, opacity_scale) function this.draw(creature, position_on_screen, opacity_scale)
if d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available then if d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available then
local text_width, text_height = drawing.font:measure(creature.name); local text_width, text_height = drawing.font:measure(creature.name);
position_on_screen.x = position_on_screen.x - text_width / 2; position_on_screen.x = position_on_screen.x - text_width / 2;
end 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 end
function this.init_list() function this.init_list()

View File

@@ -9,6 +9,7 @@ local large_monster;
local damage_meter_UI; local damage_meter_UI;
local time; local time;
local error_handler; local error_handler;
local quest_status;
local sdk = sdk; local sdk = sdk;
local tostring = tostring; local tostring = tostring;
@@ -49,6 +50,7 @@ local hard_keyboard_field_type_def = hard_keyboard_field:get_type();
local get_down_method = hard_keyboard_field_type_def:get_method("getDown"); local get_down_method = hard_keyboard_field_type_def:get_method("getDown");
local get_trigger_method = hard_keyboard_field_type_def:get_method("getTrg"); local get_trigger_method = hard_keyboard_field_type_def:get_method("getTrg");
local get_release_method = hard_keyboard_field_type_def:get_method("getRelease"); local get_release_method = hard_keyboard_field_type_def:get_method("getRelease");
local update_method = hard_keyboard_field_type_def:get_method("update");
this.hotkey_modifiers_down = { this.hotkey_modifiers_down = {
ctrl = false, ctrl = false,
@@ -334,15 +336,9 @@ this.keys = {
--[254] = "Clear" --[254] = "Clear"
}; };
function this.update() function this.update(hard_keyboard)
if singletons.game_keyboard == nil then
error_handler.report("keyboard.update", "Failed to access Data: game_keyboard");
return;
end
local hard_keyboard = hard_keyboard_field:get_data(singletons.game_keyboard);
if hard_keyboard == nil then if hard_keyboard == nil then
error_handler.report("keyboard.update", "Failed to access Data: hard_keyboard"); error_handler.report("keyboard.update", "Failed to Access Data: hard_keyboard");
return; return;
end end
@@ -480,6 +476,28 @@ function this.register_hotkey(hard_keyboard)
return true; return true;
end end
end end
elseif customization_menu.buff_UI_waiting_for_key then
for key, key_name in pairs(this.keys) do
if get_release_method:call(hard_keyboard, key) then
cached_config.buff_UI.ctrl = this.hotkey_modifiers_down.ctrl;
cached_config.buff_UI.shift = this.hotkey_modifiers_down.shift;
cached_config.buff_UI.alt = this.hotkey_modifiers_down.alt;
cached_config.buff_UI.key = key;
customization_menu.buff_UI_waiting_for_key = false;
return true;
end
end
elseif customization_menu.stats_UI_waiting_for_key then
for key, key_name in pairs(this.keys) do
if get_release_method:call(hard_keyboard, key) then
cached_config.stats_UI.ctrl = this.hotkey_modifiers_down.ctrl;
cached_config.stats_UI.shift = this.hotkey_modifiers_down.shift;
cached_config.stats_UI.alt = this.hotkey_modifiers_down.alt;
cached_config.stats_UI.key = key;
customization_menu.stats_UI_waiting_for_key = false;
return true;
end
end
end end
return false; return false;
@@ -495,7 +513,7 @@ function this.check_hotkeys(hard_keyboard)
local all_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.all_UI.key)); local all_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.all_UI.key));
if all_UI_key_release == nil then if all_UI_key_release == nil then
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: all_UI_key_release"); error_handler.report("keyboard.check_hotkeys", "Failed to Access Data: all_UI_key_release");
elseif all_UI_key_release then elseif all_UI_key_release then
local is_any_enabled = config.current_config.time_UI.enabled local is_any_enabled = config.current_config.time_UI.enabled
@@ -503,7 +521,10 @@ function this.check_hotkeys(hard_keyboard)
or config.current_config.large_monster_UI.dynamic.enabled or config.current_config.large_monster_UI.dynamic.enabled
or config.current_config.large_monster_UI.static.enabled or config.current_config.large_monster_UI.static.enabled
or config.current_config.large_monster_UI.highlighted.enabled or config.current_config.large_monster_UI.highlighted.enabled
or config.current_config.damage_meter_UI.enabled; or config.current_config.damage_meter_UI.enabled
or config.current_config.endemic_life_UI.enabled
or config.current_config.buff_UI.enabled
or config.current_config.stats_UI.enabled;
config.current_config.time_UI.enabled = not is_any_enabled; config.current_config.time_UI.enabled = not is_any_enabled;
config.current_config.small_monster_UI.enabled = not is_any_enabled; config.current_config.small_monster_UI.enabled = not is_any_enabled;
@@ -511,6 +532,9 @@ function this.check_hotkeys(hard_keyboard)
config.current_config.large_monster_UI.static.enabled = not is_any_enabled; config.current_config.large_monster_UI.static.enabled = not is_any_enabled;
config.current_config.large_monster_UI.highlighted.enabled = not is_any_enabled; config.current_config.large_monster_UI.highlighted.enabled = not is_any_enabled;
config.current_config.damage_meter_UI.enabled = not is_any_enabled; config.current_config.damage_meter_UI.enabled = not is_any_enabled;
config.current_config.endemic_life_UI.enabled = not is_any_enabled;
config.current_config.buff_UI.enabled = not is_any_enabled;
config.current_config.stats_UI.enabled = not is_any_enabled;
end end
end end
@@ -521,7 +545,7 @@ function this.check_hotkeys(hard_keyboard)
local small_monster_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.small_monster_UI.key)); local small_monster_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.small_monster_UI.key));
if small_monster_UI_key_release == nil then if small_monster_UI_key_release == nil then
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: small_monster_UI_key_release"); error_handler.report("keyboard.check_hotkeys", "Failed to Access Data: small_monster_UI_key_release");
elseif small_monster_UI_key_release then elseif small_monster_UI_key_release then
config.current_config.small_monster_UI.enabled = not config.current_config.small_monster_UI.enabled; config.current_config.small_monster_UI.enabled = not config.current_config.small_monster_UI.enabled;
@@ -535,7 +559,7 @@ function this.check_hotkeys(hard_keyboard)
local large_monster_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.large_monster_UI.key)); local large_monster_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.large_monster_UI.key));
if large_monster_UI_key_release == nil then if large_monster_UI_key_release == nil then
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: large_monster_UI_key_release"); error_handler.report("keyboard.check_hotkeys", "Failed to Access Data: large_monster_UI_key_release");
elseif large_monster_UI_key_release then elseif large_monster_UI_key_release then
local is_any_enabled = config.current_config.large_monster_UI.dynamic.enabled local is_any_enabled = config.current_config.large_monster_UI.dynamic.enabled
@@ -555,7 +579,7 @@ function this.check_hotkeys(hard_keyboard)
local large_monster_dynamic_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.large_monster_dynamic_UI.key)); local large_monster_dynamic_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.large_monster_dynamic_UI.key));
if large_monster_dynamic_UI_key_release == nil then if large_monster_dynamic_UI_key_release == nil then
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: large_monster_dynamic_UI_key_release"); error_handler.report("keyboard.check_hotkeys", "Failed to Access Data: large_monster_dynamic_UI_key_release");
elseif large_monster_dynamic_UI_key_release then elseif large_monster_dynamic_UI_key_release then
config.current_config.large_monster_UI.dynamic.enabled = not config.current_config.large_monster_UI.dynamic.enabled; config.current_config.large_monster_UI.dynamic.enabled = not config.current_config.large_monster_UI.dynamic.enabled;
@@ -569,7 +593,7 @@ function this.check_hotkeys(hard_keyboard)
local large_monster_static_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.large_monster_static_UI.key)); local large_monster_static_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.large_monster_static_UI.key));
if large_monster_static_UI_key_release == nil then if large_monster_static_UI_key_release == nil then
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: large_monster_static_UI_key_release"); error_handler.report("keyboard.check_hotkeys", "Failed to Access Data: large_monster_static_UI_key_release");
elseif large_monster_static_UI_key_release then elseif large_monster_static_UI_key_release then
config.current_config.large_monster_UI.static.enabled = not config.current_config.large_monster_UI.static.enabled; config.current_config.large_monster_UI.static.enabled = not config.current_config.large_monster_UI.static.enabled;
@@ -583,7 +607,7 @@ function this.check_hotkeys(hard_keyboard)
local large_monster_highlighted_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.large_monster_highlighted_UI.key)); local large_monster_highlighted_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.large_monster_highlighted_UI.key));
if large_monster_highlighted_UI_key_release == nil then if large_monster_highlighted_UI_key_release == nil then
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: large_monster_highlighted_UI_key_release"); error_handler.report("keyboard.check_hotkeys", "Failed to Access Data: large_monster_highlighted_UI_key_release");
elseif large_monster_highlighted_UI_key_release then elseif large_monster_highlighted_UI_key_release then
config.current_config.large_monster_UI.highlighted.enabled = not config.current_config.large_monster_UI.highlighted.enabled; config.current_config.large_monster_UI.highlighted.enabled = not config.current_config.large_monster_UI.highlighted.enabled;
@@ -597,7 +621,7 @@ function this.check_hotkeys(hard_keyboard)
local time_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.time_UI.key)); local time_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.time_UI.key));
if time_UI_key_release == nil then if time_UI_key_release == nil then
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: time_UI_key_release"); error_handler.report("keyboard.check_hotkeys", "Failed to Access Data: time_UI_key_release");
elseif time_UI_key_release then elseif time_UI_key_release then
config.current_config.time_UI.enabled = not config.current_config.time_UI.enabled; config.current_config.time_UI.enabled = not config.current_config.time_UI.enabled;
@@ -611,7 +635,7 @@ function this.check_hotkeys(hard_keyboard)
local damage_meter_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.damage_meter_UI.key)); local damage_meter_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.damage_meter_UI.key));
if damage_meter_UI_key_release == nil then if damage_meter_UI_key_release == nil then
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: damage_meter_UI_key_release"); error_handler.report("keyboard.check_hotkeys", "Failed to Access Data: damage_meter_UI_key_release");
elseif damage_meter_UI_key_release then elseif damage_meter_UI_key_release then
config.current_config.damage_meter_UI.enabled = not config.current_config.damage_meter_UI.enabled; config.current_config.damage_meter_UI.enabled = not config.current_config.damage_meter_UI.enabled;
@@ -625,12 +649,40 @@ function this.check_hotkeys(hard_keyboard)
local endemic_life_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.endemic_life_UI.key)); local endemic_life_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.endemic_life_UI.key));
if endemic_life_UI_key_release == nil then if endemic_life_UI_key_release == nil then
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: endemic_life_UI_key_release"); error_handler.report("keyboard.check_hotkeys", "Failed to Access Data: endemic_life_UI_key_release");
elseif endemic_life_UI_key_release then elseif endemic_life_UI_key_release then
config.current_config.endemic_life_UI.enabled = not config.current_config.endemic_life_UI.enabled; config.current_config.endemic_life_UI.enabled = not config.current_config.endemic_life_UI.enabled;
end end
end end
if not (cached_config.buff_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
and not (cached_config.buff_UI.shift and not this.hotkey_modifiers_down.shift)
and not (cached_config.buff_UI.alt and not this.hotkey_modifiers_down.alt) then
local buff_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.buff_UI.key));
if buff_UI_key_release == nil then
error_handler.report("keyboard.check_hotkeys", "Failed to Access Data: buff_UI_key_release");
elseif buff_UI_key_release then
config.current_config.buff_UI.enabled = not config.current_config.buff_UI.enabled;
end
end
if not (cached_config.stats_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
and not (cached_config.stats_UI.shift and not this.hotkey_modifiers_down.shift)
and not (cached_config.stats_UI.alt and not this.hotkey_modifiers_down.alt) then
local stats_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.stats_UI.key));
if stats_UI_key_release == nil then
error_handler.report("keyboard.check_hotkeys", "Failed to Access Data: stats_UI_key_release");
elseif stats_UI_key_release then
config.current_config.stats_UI.enabled = not config.current_config.stats_UI.enabled;
end
end
end end
function this.get_hotkey_name(hotkey) function this.get_hotkey_name(hotkey)
@@ -661,9 +713,19 @@ function this.init_dependencies()
damage_meter_UI = require("MHR_Overlay.UI.Modules.damage_meter_UI"); damage_meter_UI = require("MHR_Overlay.UI.Modules.damage_meter_UI");
time = require("MHR_Overlay.Game_Handler.time"); time = require("MHR_Overlay.Game_Handler.time");
error_handler = require("MHR_Overlay.Misc.error_handler"); error_handler = require("MHR_Overlay.Misc.error_handler");
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
end end
function this.init_module() function this.init_module()
sdk.hook(update_method, function(args)
local hard_keyboard = sdk.to_managed_object(args[2]);
this.update(hard_keyboard);
end, function(retval)
return retval;
end);
end end
return this; return this;

View File

@@ -177,44 +177,44 @@ end
function this.update_cart_count() function this.update_cart_count()
if singletons.quest_manager == nil then if singletons.quest_manager == nil then
error_handler.report("quest_status.update_cart_count", "Failed to access Data: quest_manager"); error_handler.report("quest_status.update_cart_count", "Failed to Access Data: quest_manager");
return; return;
end end
local death_num = get_death_num_method:call(singletons.quest_manager); local death_num = get_death_num_method:call(singletons.quest_manager);
if death_num == nil then if death_num == nil then
error_handler.report("quest_status.update_cart_count", "Failed to access Data: death_num"); error_handler.report("quest_status.update_cart_count", "Failed to Access Data: death_num");
else else
this.cart_count = death_num; this.cart_count = death_num;
end end
if singletons.player_manager == nil then if singletons.player_manager == nil then
error_handler.report("quest_status.update_cart_count", "Failed to access Data: player_manager"); error_handler.report("quest_status.update_cart_count", "Failed to Access Data: player_manager");
return; return;
end end
local player_data_array = get_player_data_method:call(singletons.player_manager); local player_data_array = get_player_data_method:call(singletons.player_manager);
if player_data_array == nil then if player_data_array == nil then
error_handler.report("quest_status.update_cart_count", "Failed to access Data: player_data_array"); error_handler.report("quest_status.update_cart_count", "Failed to Access Data: player_data_array");
return; return;
end end
local player_data_array_length = get_length_method:call(player_data_array); local player_data_array_length = get_length_method:call(player_data_array);
if player_data_array_length == nil then if player_data_array_length == nil then
error_handler.report("quest_status.update_cart_count", "Failed to access Data: player_data_array_length"); error_handler.report("quest_status.update_cart_count", "Failed to Access Data: player_data_array_length");
return; return;
end end
for i = 0, player_data_array_length - 1 do for i = 0, player_data_array_length - 1 do
local player_data = get_value_method:call(player_data_array, i); local player_data = get_value_method:call(player_data_array, i);
if player_data_array_length == nil then if player_data_array_length == nil then
error_handler.report("quest_status.update_cart_count", string.format("Failed to access Data: player_data No. %d", i)); error_handler.report("quest_status.update_cart_count", string.format("Failed to Access Data: player_data No. %d", i));
goto continue; goto continue;
end end
local die_count = die_count_field:get_data(player_data); local die_count = die_count_field:get_data(player_data);
if die_count == nil then if die_count == nil then
error_handler.report("quest_status.update_cart_count", string.format("Failed to access Data: die_count No. %d", i)); error_handler.report("quest_status.update_cart_count", string.format("Failed to Access Data: die_count No. %d", i));
goto continue; goto continue;
end end
@@ -229,13 +229,13 @@ end
function this.get_max_cart_count() function this.get_max_cart_count()
if singletons.quest_manager == nil then if singletons.quest_manager == nil then
error_handler.report("quest_status.get_max_cart_count", "Failed to access Data: quest_manager"); error_handler.report("quest_status.get_max_cart_count", "Failed to Access Data: quest_manager");
return; return;
end end
local quest_life = get_quest_life_method:call(singletons.quest_manager); local quest_life = get_quest_life_method:call(singletons.quest_manager);
if quest_life == nil then if quest_life == nil then
error_handler.report("quest_status.get_max_cart_count", "Failed to access Data: quest_life"); error_handler.report("quest_status.get_max_cart_count", "Failed to Access Data: quest_life");
end end
this.max_cart_count = quest_life; this.max_cart_count = quest_life;
@@ -256,7 +256,7 @@ function this.on_demo_request_activation(request_data_base)
local request_data_type = request_data_base:call("get_Type"); local request_data_type = request_data_base:call("get_Type");
if request_data_type == nil then if request_data_type == nil then
error_handler.report("quest_status.on_demo_request_activation", "Failed to access Data: request_data_type"); error_handler.report("quest_status.on_demo_request_activation", "Failed to Access Data: request_data_type");
return; return;
end end
@@ -388,13 +388,13 @@ end
function this.init() function this.init()
if singletons.quest_manager == nil then if singletons.quest_manager == nil then
error_handler.report("quest_status.init", "Failed to access Data: quest_manager"); error_handler.report("quest_status.init", "Failed to Access Data: quest_manager");
return; return;
end end
local new_quest_status = get_status_method:call(singletons.game_manager); local new_quest_status = get_status_method:call(singletons.game_manager);
if new_quest_status == nil then if new_quest_status == nil then
error_handler.report("quest_status.init", "Failed to access Data: new_quest_status"); error_handler.report("quest_status.init", "Failed to Access Data: new_quest_status");
return; return;
end end
@@ -415,13 +415,13 @@ end
function this.update_is_online() function this.update_is_online()
if singletons.lobby_manager == nil then if singletons.lobby_manager == nil then
error_handler.report("quest_status.update_is_online", "Failed to access Data: lobby_manager"); error_handler.report("quest_status.update_is_online", "Failed to Access Data: lobby_manager");
return; return;
end end
local is_quest_online = is_quest_online_method:call(singletons.lobby_manager); local is_quest_online = is_quest_online_method:call(singletons.lobby_manager);
if is_quest_online == nil then if is_quest_online == nil then
error_handler.report("quest_status.update_is_online", "Failed to access Data: is_quest_online"); error_handler.report("quest_status.update_is_online", "Failed to Access Data: is_quest_online");
return; return;
end end
@@ -430,13 +430,13 @@ end
--[[function quest_status.update_is_quest_host() --[[function quest_status.update_is_quest_host()
if singletons.lobby_manager == nil then if singletons.lobby_manager == nil then
error_handler.report("quest_status.update_is_quest_host", "Failed to access Data: lobby_manager"); error_handler.report("quest_status.update_is_quest_host", "Failed to Access Data: lobby_manager");
return; return;
end end
local is_quest_host = is_quest_host_method:call(singletons.lobby_manager, true); local is_quest_host = is_quest_host_method:call(singletons.lobby_manager, true);
if is_quest_host == nil then if is_quest_host == nil then
error_handler.report("quest_status.update_is_quest_host", "Failed to access Data: is_quest_host"); error_handler.report("quest_status.update_is_quest_host", "Failed to Access Data: is_quest_host");
return; return;
end end
@@ -445,13 +445,13 @@ end--]]
function this.update_is_training_area() function this.update_is_training_area()
if singletons.village_area_manager == nil then if singletons.village_area_manager == nil then
error_handler.report("quest_status.update_is_training_area", "Failed to access Data: village_area_manager"); error_handler.report("quest_status.update_is_training_area", "Failed to Access Data: village_area_manager");
return; return;
end end
local is_training_area = check_current_area_training_area_method:call(singletons.village_area_manager); local is_training_area = check_current_area_training_area_method:call(singletons.village_area_manager);
if is_training_area == nil then if is_training_area == nil then
error_handler.report("quest_status.update_is_training_area", "Failed to access Data: is_training_area"); error_handler.report("quest_status.update_is_training_area", "Failed to Access Data: is_training_area");
return; return;
end end

View File

@@ -75,26 +75,26 @@ function this.get_game_window_size()
scene_view = sdk.call_native_func(singletons.scene_manager, sdk.find_type_definition("via.SceneManager") , "get_MainView"); scene_view = sdk.call_native_func(singletons.scene_manager, sdk.find_type_definition("via.SceneManager") , "get_MainView");
if scene_view == nil then if scene_view == nil then
error_handler.report("screen.get_game_window_size", "Failed to access Data: scene_view"); error_handler.report("screen.get_game_window_size", "Failed to Access Data: scene_view");
return; return;
end end
end end
local size = get_size_method:call(scene_view); local size = get_size_method:call(scene_view);
if size == nil then if size == nil then
error_handler.report("screen.get_game_window_size", "Failed to access Data: size"); error_handler.report("screen.get_game_window_size", "Failed to Access Data: size");
return; return;
end end
local screen_width = width_field:get_data(size); local screen_width = width_field:get_data(size);
if screen_width == nil then if screen_width == nil then
error_handler.report("screen.get_game_window_size", "Failed to access Data: screen_width"); error_handler.report("screen.get_game_window_size", "Failed to Access Data: screen_width");
return; return;
end end
local screen_height = height_field:get_data(size); local screen_height = height_field:get_data(size);
if screen_height == nil then if screen_height == nil then
error_handler.report("screen.get_game_window_size", "Failed to access Data: screen_height"); error_handler.report("screen.get_game_window_size", "Failed to Access Data: screen_height");
return; return;
end end

View File

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

View File

@@ -72,39 +72,45 @@ function this.new_timer(callback, cooldown_seconds, start_offset_seconds)
timer.last_trigger_time = os.clock() + start_offset_seconds; timer.last_trigger_time = os.clock() + start_offset_seconds;
this.timer_list[callback] = timer; this.timer_list[callback] = timer;
end end
function this.new_delay_timer(callback, delay) function this.new_delay_timer(callback, delay_seconds)
if callback == nil or delay == nil then if callback == nil or delay_seconds == nil then
return; return;
end end
local delay_timer = {}; local delay_timer = {};
delay_timer.callback = callback; delay_timer.callback = callback;
delay_timer.delay = delay; delay_timer.delay = delay_seconds;
delay_timer.init_time = os.clock(); delay_timer.init_time = os.clock();
this.delay_timer_list[callback] = delay_timer; this.delay_timer_list[callback] = delay_timer;
return delay_timer; return delay_timer;
end end
function this.remove_delay_timer(delay_timer) function this.remove_delay_timer(delay_timer)
if delay_timer == nil then
return;
end
this.delay_timer_list[delay_timer.callback] = nil; this.delay_timer_list[delay_timer.callback] = nil;
end end
function this.init_global_timers() function this.init_global_timers()
this.new_timer(singletons.init, 1); local cached_config = config.current_config.global_settings.performance.timer_delays;
this.new_timer(screen.update_window_size, 1);
this.new_timer(quest_status.update_is_online, 1); this.timer_list = {};
this.new_timer(this.update_quest_time, 1 / 60);
this.new_timer(players.update_players, 0.5); this.new_timer(singletons.update, cached_config.update_singletons_delay);
this.new_timer(players.update_myself_position, 1); this.new_timer(screen.update_window_size, cached_config.update_window_size_delay);
this.new_timer(buffs.update, 1/60); this.new_timer(quest_status.update_is_online, cached_config.update_is_online_delay);
this.new_timer(player_info.update, 0.5); 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 end
function this.update_timers() function this.update_timers()
@@ -147,14 +153,14 @@ function this.update_quest_time()
local quest_time_elapsed_minutes = get_quest_elapsed_time_min_method:call(singletons.quest_manager); local quest_time_elapsed_minutes = get_quest_elapsed_time_min_method:call(singletons.quest_manager);
if quest_time_elapsed_minutes == nil then if quest_time_elapsed_minutes == nil then
error_handler.report("time.update_quest_time", "Failed to access Data: quest_time_elapsed_minutes"); error_handler.report("time.update_quest_time", "Failed to Access Data: quest_time_elapsed_minutes");
else else
this.elapsed_minutes = quest_time_elapsed_minutes; this.elapsed_minutes = quest_time_elapsed_minutes;
end end
local quest_time_total_elapsed_seconds = get_quest_elapsed_time_sec_method:call(singletons.quest_manager); local quest_time_total_elapsed_seconds = get_quest_elapsed_time_sec_method:call(singletons.quest_manager);
if quest_time_total_elapsed_seconds == nil then if quest_time_total_elapsed_seconds == nil then
error_handler.report("time.update_quest_time", "Failed to access Data: quest_time_total_elapsed_seconds"); error_handler.report("time.update_quest_time", "Failed to Access Data: quest_time_total_elapsed_seconds");
else else
this.total_elapsed_seconds = quest_time_total_elapsed_seconds; this.total_elapsed_seconds = quest_time_total_elapsed_seconds;
end end

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\\"; this.language_folder = "MHR Overlay\\languages\\";
--[[ -- this.chinese_ranges = {
EXAMPLE: -- 0x0020, 0x00FF, -- Basic Latin + Latin Supplement
unicode_glyph_ranges = { -- 0x2000, 0x206F, -- General Punctuations
0x0020, 0x00FF, -- Basic Latin + Latin Supplement -- 0x2E80, 0x2EFF, -- CJK Radicals Supplement
0x2000, 0x206F, -- General Punctuation -- 0x3000, 0x303F, -- CJK Symbols and Punctuations
0x3000, 0x30FF, -- CJK Symbols and Punctuations, Hiragana, Katakana -- 0x3200, 0x4DBF, -- Enclosed CJK Letters and Months, CJK Compatibility, CJK Unified Ideographs Extension A
0x31F0, 0x31FF, -- Katakana Phonetic Extensions -- 0x4E00, 0x9FFF, -- CJK Unified Ideograms
0x4e00, 0x9FAF, -- CJK Ideograms -- 0xF900, 0xFAFF, -- CJK Compatibility Ideographs
0xFF00, 0xFFEF, -- Half-width characters -- 0xFE30, 0xFE4F, -- CJK Compatibility Forms
0 -- 0xFF00, 0xFFEF, -- Half-width characters
}, -- 0
]] -- };
--[[ -- this.japanese_glyph_ranges = {
EXAMPLE: -- 0x0020, 0x00FF, -- Basic Latin + Latin Supplement
unicode_glyph_ranges = { -- 0x2000, 0x206F, -- General Punctuation
0x0020, 0x00FF, -- Basic Latin + Latin Supplement -- 0x2E80, 0x2EFF, -- CJK Radicals Supplement
0x0400, 0x052F, -- Cyrillic -- 0x3000, 0x30FF, -- CJK Symbols and Punctuations, Hiragana, Katakana
0x2000, 0x206F, -- General Punctuation -- 0x31F0, 0x4DBF, -- Katakana Phonetic Extensions, Enclosed CJK Letters and Months, CJK Compatibility, CJK Unified Ideographs Extension A
0xFF00, 0xFFEF, -- Half-width characters -- 0x4E00, 0x9FFF, -- CJK Unified Ideograms
0 -- 0xF900, 0xFAFF, -- CJK Compatibility Ideographs
}, -- 0xFE30, 0xFE4F, -- CJK Compatibility Forms
]] -- 0xFF00, 0xFFEF, -- Half-width characters
-- 0
-- };
--[[ -- this.korean_glyph_ranges = {
EXAMPLE: -- 0x0020, 0x00FF, -- Basic Latin + Latin Supplement
unicode_glyph_ranges = { -- 0x1100, 0x11FF, -- Hangul Jamo
0x0020, 0x00FF, -- Basic Latin + Latin Supplement -- 0x2000, 0x206F, -- General Punctuation
0x1100, 0x11FF, -- Hangul Jamo -- 0x2E80, 0x2EFF, -- CJK Radicals Supplement
0x2000, 0x206F, -- General Punctuation -- 0x3000, 0x303F, -- CJK Symbols and Punctuations
0x3130, 0x318F, -- Hangul Compatibility Jamo -- 0x3130, 0x318F, -- Hangul Compatibility Jamo
0xAC00, 0xD7AF, -- Hangul Syllables -- 0x3200, 0x4DBF, -- Enclosed CJK Letters and Months, CJK Compatibility, CJK Unified Ideographs Extension A
0xFF00, 0xFFEF, -- Half-width characters -- 0x4E00, 0x9FFF, -- CJK Unified Ideograms
0 -- 0xAC00, 0xD7AF, -- Hangul Syllables
}, -- 0xF900, 0xFAFF, -- CJK Compatibility Ideographs
]] -- 0xFE30, 0xFE4F, -- CJK Compatibility Forms
-- 0xFF00, 0xFFEF, -- Half-width characters
-- 0
-- }
this.current_language = {}; this.current_language = {};
this.default_language = { this.default_language = {
font_name = "", font_name = nil,
unicode_glyph_ranges = {0}, unicode_glyph_ranges = nil,
parts = { parts = {
head = "Head", head = "Head",
neck = "Neck", neck = "Neck",
@@ -180,8 +186,8 @@ this.default_language = {
fireblight = "Fireblight", fireblight = "Fireblight",
waterblight = "Waterblight", waterblight = "Waterblight",
iceblight = "Iceblight",
thunderblight = "Thunderblight", thunderblight = "Thunderblight",
iceblight = "Iceblight",
fall_trap = "Fall Trap", fall_trap = "Fall Trap",
shock_trap = "Shock Trap", shock_trap = "Shock Trap",
@@ -218,75 +224,238 @@ this.default_language = {
frenzy_overcome = "Frenzy Overcome" 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_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 = { 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_red = "Powder Mantle (Red)",
powder_mantle_blue = "Powder Mantle (Blue)", powder_mantle_blue = "Powder Mantle (Blue)",
dragon_conversion_elemental_attack_up = "Dragon Conversion Elem. Atk Up", protective_polish = "Protective Polish",
dragon_conversion_elemental_res_up = "Dragon Conversion Elem. Res Up", 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 = { weapon_skills = {
-- Great Sword -- Great Sword
power_sheathe = "Power Sheathe", great_sword = {
-- Switch Axe power_sheathe = "Power Sheathe"
amped_state = "Amped State", },
switch_charger = "Switch Charger",
axe_heavy_slam = "Axe: Heavy Slam",
-- Long Sword -- Long Sword
spirit_gauge_autofill = "Spirit Gauge Autofill", -- Soaring Kick, Iai Slash long_sword = {
harvest_moon = "Harvest Moon",
iai_slash = "Iai Slash",
soaring_kick = "Soaring Kick",
spirit_gauge = "Spirit Gauge", spirit_gauge = "Spirit Gauge",
--harvest_moon = "Harvest Moon", spirit_gauge_autofill = "Spirit Gauge Autofill", -- Soaring Kick, Iai Slash
-- 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",
-- Sword & Shield -- Sword & Shield
--destroyer_oil = "Destroyer Oil", sword_and_shield = {
destroyer_oil = "Destroyer Oil"
},
-- Dual Blades -- Dual Blades
ironshine_silk = "Ironshine Silk", dual_blades = {
archdemon_mode = "Archdemon Mode", 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 -- Hunting Horn
--silkbind_shockwave = "Silkbind Shockwave", hunting_horn = {
--bead_of_resonance = "Bead of Resonance", bead_of_resonance = "Bead of Resonance",
--sonic_bloom = "Sonic Bloom", 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 -- Charge Blade
charge_blade = {
element_boost = "Element Boost", element_boost = "Element Boost",
sword_boost_mode ="Sword Boost Mode", sword_boost_mode = "Sword Boost Mode"
},
-- Insect Glaive -- Insect Glaive
insect_glaive = {
red_extract = "Red Extract", red_extract = "Red Extract",
white_extract = "White Extract", white_extract = "White Extract",
orange_extract = "Orange Extract", orange_extract = "Orange Extract",
all_extracts_mix = "All Extracts Mix", 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 -- Bow
herculean_draw = "Herculean Draw", bow = {
--bolt_boost = "Bolt Boost",
arc_shot_affinity = "Arc Shot: Affinity", arc_shot_affinity = "Arc Shot: Affinity",
arc_shot_brace = "Arc Shot: Brace", 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 = { misc_buffs = {
attack_up = "Attack Up", attack_up = "Attack Up",
defense_up = "Defense Up", defense_up = "Defense Up",
stamina_use_down = "Stamina Use Down", stamina_use_down = "Stamina Use Down",
immunity = "Immunity" immunity = "Immunity",
natural_healing_up = "Natural Healing Up"
}, },
UI = { UI = {
@@ -310,6 +479,26 @@ this.default_language = {
lv = "" 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 = { customization_menu = {
mod_name = "MHR Overlay"; mod_name = "MHR Overlay";
status = "Status", status = "Status",
@@ -687,31 +876,38 @@ this.default_language = {
ice_resistance_label = "Ice Resistance Label", ice_resistance_label = "Ice Resistance Label",
dragon_resistance_label = "Dragon Resistance Label", dragon_resistance_label = "Dragon Resistance Label",
element_label = "Element 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",
head_tracking = "Head Tracking"
}, },
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 }; this.languages = { this.default_language };
function this.load() function this.load()
@@ -765,9 +961,21 @@ function this.init_dependencies()
end end
function this.init_module() function this.init_module()
this.save_default();
this.load(); this.load();
this.current_language = this.default_language; 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 end
return this; return this;

View File

@@ -9,6 +9,7 @@ local error_handler;
local quest_status; local quest_status;
local time; local time;
local dango_skills; local dango_skills;
local skills;
local sdk = sdk; local sdk = sdk;
local tostring = tostring; 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 is_master_player_method = player_quest_base_type_def:get_method("isMasterPlayer");
local player_base_type_def = sdk.find_type_definition("snow.player.PlayerBase"); 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 -- 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");
@@ -126,19 +129,19 @@ function this.update()
end end
if singletons.player_manager == nil then if singletons.player_manager == nil then
error_handler.report("player_info.update", "Failed to access Data: player_manager"); error_handler.report("player_info.update", "Failed to Access Data: player_manager");
return; return;
end end
local master_player = find_master_player_method:call(singletons.player_manager); local master_player = find_master_player_method:call(singletons.player_manager);
if master_player == nil then if master_player == nil then
error_handler.report("player_info.update", "Failed to access Data: master_player"); error_handler.report("player_info.update", "Failed to Access Data: master_player");
return; return;
end end
local master_player_data = get_player_data_method:call(master_player); local master_player_data = get_player_data_method:call(master_player);
if master_player_data == nil then if master_player_data == nil then
error_handler.report("player_info.update", "Failed to access Data: master_player_data"); error_handler.report("player_info.update", "Failed to Access Data: master_player_data");
end end
master_player_ref = master_player; master_player_ref = master_player;
@@ -173,7 +176,7 @@ end
function this.update_generic(key, player_data, field) function this.update_generic(key, player_data, field)
local value = field:get_data(player_data); local value = field:get_data(player_data);
if value == nil then if value == nil then
error_handler.report("player_info.update_generic", string.format("Failed to access Data: %s_value", key)); error_handler.report("player_info.update_generic", string.format("Failed to Access Data: %s_value", key));
return; return;
end end
@@ -183,14 +186,14 @@ end
function this.update_resistances(player_data) function this.update_resistances(player_data)
local resistance_element_array = resistance_element_field:get_data(player_data); local resistance_element_array = resistance_element_field:get_data(player_data);
if resistance_element_array == nil then if resistance_element_array == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: resistance_element_array"); error_handler.report("player_info.update_resistances", "Failed to Access Data: resistance_element_array");
return; return;
end end
-- Fire Resistance -- Fire Resistance
local fire_resistance_single_valtype = get_value_method:call(resistance_element_array, 0); local fire_resistance_single_valtype = get_value_method:call(resistance_element_array, 0);
if fire_resistance_single_valtype == nil then if fire_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: fire_resistance_single_valtype"); error_handler.report("player_info.update_resistances", "Failed to Access Data: fire_resistance_single_valtype");
return; return;
end end
@@ -198,14 +201,14 @@ function this.update_resistances(player_data)
if fire_resistance ~= nil then if fire_resistance ~= nil then
this.list.fire_resistance = math.floor(fire_resistance); this.list.fire_resistance = math.floor(fire_resistance);
else else
error_handler.report("player_info.update_resistances", "Failed to access Data: fire_resistance"); error_handler.report("player_info.update_resistances", "Failed to Access Data: fire_resistance");
return; return;
end end
-- Water Resistance -- Water Resistance
local water_resistance_single_valtype = get_value_method:call(resistance_element_array, 1); local water_resistance_single_valtype = get_value_method:call(resistance_element_array, 1);
if water_resistance_single_valtype == nil then if water_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: water_resistance_single_valtype"); error_handler.report("player_info.update_resistances", "Failed to Access Data: water_resistance_single_valtype");
return; return;
end end
@@ -213,14 +216,14 @@ function this.update_resistances(player_data)
if water_resistance ~= nil then if water_resistance ~= nil then
this.list.water_resistance = math.floor(water_resistance); this.list.water_resistance = math.floor(water_resistance);
else else
error_handler.report("player_info.update_resistances", "Failed to access Data: water_resistance"); error_handler.report("player_info.update_resistances", "Failed to Access Data: water_resistance");
return; return;
end end
-- Thunder Resistance -- Thunder Resistance
local thunder_resistance_single_valtype = get_value_method:call(resistance_element_array, 2); local thunder_resistance_single_valtype = get_value_method:call(resistance_element_array, 2);
if thunder_resistance_single_valtype == nil then if thunder_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: thunder_resistance_single_valtype"); error_handler.report("player_info.update_resistances", "Failed to Access Data: thunder_resistance_single_valtype");
return; return;
end end
@@ -228,14 +231,14 @@ function this.update_resistances(player_data)
if thunder_resistance ~= nil then if thunder_resistance ~= nil then
this.list.thunder_resistance = math.floor(thunder_resistance); this.list.thunder_resistance = math.floor(thunder_resistance);
else else
error_handler.report("player_info.update_resistances", "Failed to access Data: thunder_resistance"); error_handler.report("player_info.update_resistances", "Failed to Access Data: thunder_resistance");
return; return;
end end
-- Ice Resistance -- Ice Resistance
local ice_resistance_single_valtype = get_value_method:call(resistance_element_array, 3); local ice_resistance_single_valtype = get_value_method:call(resistance_element_array, 3);
if ice_resistance_single_valtype == nil then if ice_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: ice_resistance_single_valtype"); error_handler.report("player_info.update_resistances", "Failed to Access Data: ice_resistance_single_valtype");
return; return;
end end
@@ -243,14 +246,14 @@ function this.update_resistances(player_data)
if ice_resistance ~= nil then if ice_resistance ~= nil then
this.list.ice_resistance = math.floor(ice_resistance); this.list.ice_resistance = math.floor(ice_resistance);
else else
error_handler.report("player_info.update_resistances", "Failed to access Data: ice_resistance"); error_handler.report("player_info.update_resistances", "Failed to Access Data: ice_resistance");
return; return;
end end
-- Dragon Resistance -- Dragon Resistance
local dragon_resistance_single_valtype = get_value_method:call(resistance_element_array, 4); local dragon_resistance_single_valtype = get_value_method:call(resistance_element_array, 4);
if dragon_resistance_single_valtype == nil then if dragon_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: dragon_resistance_single_valtype"); error_handler.report("player_info.update_resistances", "Failed to Access Data: dragon_resistance_single_valtype");
return; return;
end end
@@ -258,7 +261,7 @@ function this.update_resistances(player_data)
if dragon_resistance ~= nil then if dragon_resistance ~= nil then
this.list.dragon_resistance = math.floor(dragon_resistance); this.list.dragon_resistance = math.floor(dragon_resistance);
else else
error_handler.report("player_info.update_resistances", "Failed to access Data: dragon_resistance"); error_handler.report("player_info.update_resistances", "Failed to Access Data: dragon_resistance");
return; return;
end end
end end
@@ -273,6 +276,7 @@ function this.on_pre_player_update(quest_player_base)
end end
this.update_health(quest_player_base); this.update_health(quest_player_base);
this.update_heroics(quest_player_base);
this.update_dango_adrenaline(quest_player_base); this.update_dango_adrenaline(quest_player_base);
should_health_update = false; should_health_update = false;
@@ -281,17 +285,35 @@ end
function this.update_health(quest_player_base) function this.update_health(quest_player_base)
local vital = get_vital_method:call(master_player_data_ref); local vital = get_vital_method:call(master_player_data_ref);
if vital == nil then if vital == nil then
error_handler.report("player_info.update_health", "Failed to access Data: vital"); error_handler.report("player_info.update_health", "Failed to Access Data: vital");
return; return;
end end
this.list.health = vital; this.list.health = vital;
end 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) 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); local is_kitchen_skill_predicament_powerup = is_kitchen_skill_predicament_powerup_method:call(master_player_ref);
if is_kitchen_skill_predicament_powerup == nil then 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"); error_handler.report("player_info.update_dango_adrenaline", "Failed to Access Data: is_kitchen_skill_predicament_powerup");
return; return;
end end
@@ -313,6 +335,7 @@ function this.init_dependencies()
quest_status = require("MHR_Overlay.Game_Handler.quest_status"); quest_status = require("MHR_Overlay.Game_Handler.quest_status");
time = require("MHR_Overlay.Game_Handler.time"); time = require("MHR_Overlay.Game_Handler.time");
dango_skills = require("MHR_Overlay.Buffs.dango_skills"); dango_skills = require("MHR_Overlay.Buffs.dango_skills");
skills = require("MHR_Overlay.Buffs.skills");
end end
function this.init_module() function this.init_module()

View File

@@ -69,13 +69,13 @@ function this.poison_proc(poison_param)
local enemy = get_enemy_method:call(poison_param); local enemy = get_enemy_method:call(poison_param);
if enemy == nil then if enemy == nil then
error_handler.report("ailment_hook.poison_proc", "Failed to access Data: enemy"); error_handler.report("ailment_hook.poison_proc", "Failed to Access Data: enemy");
return; return;
end end
local is_large = is_boss_enemy_method:call(enemy); local is_large = is_boss_enemy_method:call(enemy);
if is_large == nil then if is_large == nil then
error_handler.report("ailment_hook.poison_proc", "Failed to access Data: is_large"); error_handler.report("ailment_hook.poison_proc", "Failed to Access Data: is_large");
return; return;
end end
@@ -100,13 +100,13 @@ function this.blast_proc(blast_param)
local enemy = get_enemy_method:call(blast_param); local enemy = get_enemy_method:call(blast_param);
if enemy == nil then if enemy == nil then
error_handler.report("ailment_hook.blast_proc", "Failed to access Data: enemy"); error_handler.report("ailment_hook.blast_proc", "Failed to Access Data: enemy");
return; return;
end end
local is_large = is_boss_enemy_method:call(enemy); local is_large = is_boss_enemy_method:call(enemy);
if is_large == nil then if is_large == nil then
error_handler.report("ailment_hook.blast_proc", "Failed to access Data: is_large"); error_handler.report("ailment_hook.blast_proc", "Failed to Access Data: is_large");
return; return;
end end
@@ -128,13 +128,13 @@ function this.stock_damage()
for enemy, monster in pairs(large_monster.list) do for enemy, monster in pairs(large_monster.list) do
local damage_param = get_damage_param_method:call(enemy); local damage_param = get_damage_param_method:call(enemy);
if damage_param == nil then if damage_param == nil then
error_handler.report("ailment_hook.stock_damage", "Failed to access Data: large_monster -> damage_param"); error_handler.report("ailment_hook.stock_damage", "Failed to Access Data: large_monster -> damage_param");
goto continue; goto continue;
end end
local poison_param = poison_param_field:get_data(damage_param); local poison_param = poison_param_field:get_data(damage_param);
if poison_param == nil then if poison_param == nil then
error_handler.report("ailment_hook.stock_damage", "Failed to access Data: large_monster -> poison_param"); error_handler.report("ailment_hook.stock_damage", "Failed to Access Data: large_monster -> poison_param");
goto continue; goto continue;
end end
@@ -145,13 +145,13 @@ function this.stock_damage()
for enemy, monster in pairs(small_monster.list) do for enemy, monster in pairs(small_monster.list) do
local damage_param = get_damage_param_method:call(enemy); local damage_param = get_damage_param_method:call(enemy);
if damage_param == nil then if damage_param == nil then
error_handler.report("ailment_hook.stock_damage", "Failed to access Data: small_monster -> damage_param"); error_handler.report("ailment_hook.stock_damage", "Failed to Access Data: small_monster -> damage_param");
goto continue; goto continue;
end end
local poison_param = poison_param_field:get_data(damage_param); local poison_param = poison_param_field:get_data(damage_param);
if poison_param == nil then if poison_param == nil then
error_handler.report("ailment_hook.stock_damage", "Failed to access Data: small_monster -> poison_param"); error_handler.report("ailment_hook.stock_damage", "Failed to Access Data: small_monster -> poison_param");
goto continue; goto continue;
end end

View File

@@ -289,7 +289,7 @@ function this.update_ailments(enemy, monster)
local damage_param = get_damage_param_method:call(enemy); local damage_param = get_damage_param_method:call(enemy);
if damage_param == nil then if damage_param == nil then
error_handler.report("ailments.update_ailments", "Failed to access Data: damage_param"); error_handler.report("ailments.update_ailments", "Failed to Access Data: damage_param");
return; return;
end end
@@ -307,13 +307,13 @@ function this.update_ailments(enemy, monster)
local condition_param_array = get_condition_param_method:call(damage_param); local condition_param_array = get_condition_param_method:call(damage_param);
if condition_param_array == nil then if condition_param_array == nil then
error_handler.report("ailments.update_ailments", "Failed to access Data: condition_param_array"); error_handler.report("ailments.update_ailments", "Failed to Access Data: condition_param_array");
return; return;
end end
local condition_param_array_length = get_length_method:call(condition_param_array); local condition_param_array_length = get_length_method:call(condition_param_array);
if condition_param_array_length == nil then if condition_param_array_length == nil then
error_handler.report("ailments.update_ailments", "Failed to access Data: condition_param_array_length"); error_handler.report("ailments.update_ailments", "Failed to Access Data: condition_param_array_length");
return; return;
end end
@@ -324,7 +324,7 @@ function this.update_ailments(enemy, monster)
local ailment_param = get_value_method:call(condition_param_array, id); local ailment_param = get_value_method:call(condition_param_array, id);
if ailment_param == nil then if ailment_param == nil then
error_handler.report("ailments.update_ailments", "Failed to access Data: ailment_param No. " .. tostring(id)); error_handler.report("ailments.update_ailments", "Failed to Access Data: ailment_param No. " .. tostring(id));
goto continue; goto continue;
end end
@@ -338,21 +338,21 @@ function this.update_stun_poison_blast_ailments(monster, damage_param)
if stun_param ~= nil then if stun_param ~= nil then
this.update_ailment(monster, stun_param, this.stun_id); this.update_ailment(monster, stun_param, this.stun_id);
else else
error_handler.report("ailments.update_stun_poison_blast_ailments", "Failed to access Data: stun_param"); error_handler.report("ailments.update_stun_poison_blast_ailments", "Failed to Access Data: stun_param");
end end
local poison_param = poison_param_field:get_data(damage_param); local poison_param = poison_param_field:get_data(damage_param);
if poison_param ~= nil then if poison_param ~= nil then
this.update_ailment(monster, poison_param, this.poison_id); this.update_ailment(monster, poison_param, this.poison_id);
else else
error_handler.report("ailments.update_stun_poison_blast_ailments", "Failed to access Data: poison_param"); error_handler.report("ailments.update_stun_poison_blast_ailments", "Failed to Access Data: poison_param");
end end
local blast_param = blast_param_field:get_data(damage_param); local blast_param = blast_param_field:get_data(damage_param);
if blast_param ~= nil then if blast_param ~= nil then
this.update_ailment(monster, blast_param, this.blast_id); this.update_ailment(monster, blast_param, this.blast_id);
else else
error_handler.report("ailments.update_stun_poison_blast_ailments", "Failed to access Data: blast_param"); error_handler.report("ailments.update_stun_poison_blast_ailments", "Failed to Access Data: blast_param");
end end
end end
@@ -380,14 +380,14 @@ function this.update_ailment(monster, ailment_param, id)
if activate_count_valtype ~= nil then if activate_count_valtype ~= nil then
activate_count = int32_mvalue_field:get_data(activate_count_valtype); activate_count = int32_mvalue_field:get_data(activate_count_valtype);
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: activate_count_valtype"); error_handler.report("ailments.update_ailment", "Failed to Access Data: activate_count_valtype");
end end
end end
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: activate_count_array_length"); error_handler.report("ailments.update_ailment", "Failed to Access Data: activate_count_array_length");
end end
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: activate_count_array"); error_handler.report("ailments.update_ailment", "Failed to Access Data: activate_count_array");
end end
if buildup_array ~= nil then if buildup_array ~= nil then
@@ -401,14 +401,14 @@ function this.update_ailment(monster, ailment_param, id)
if buildup_valtype ~= nil then if buildup_valtype ~= nil then
buildup = single_mvalue_field:get_data(buildup_valtype); buildup = single_mvalue_field:get_data(buildup_valtype);
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_valtype"); error_handler.report("ailments.update_ailment", "Failed to Access Data: buildup_valtype");
end end
end end
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_array_length"); error_handler.report("ailments.update_ailment", "Failed to Access Data: buildup_array_length");
end end
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_array"); error_handler.report("ailments.update_ailment", "Failed to Access Data: buildup_array");
end end
if buildup_limit_array ~= nil then if buildup_limit_array ~= nil then
@@ -422,14 +422,14 @@ function this.update_ailment(monster, ailment_param, id)
if buildup_limit_valtype ~= nil then if buildup_limit_valtype ~= nil then
buildup_limit = single_mvalue_field:get_data(buildup_limit_valtype); buildup_limit = single_mvalue_field:get_data(buildup_limit_valtype);
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_limit_valtype"); error_handler.report("ailments.update_ailment", "Failed to Access Data: buildup_limit_valtype");
end end
end end
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_limit_array_length"); error_handler.report("ailments.update_ailment", "Failed to Access Data: buildup_limit_array_length");
end end
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_limit_array"); error_handler.report("ailments.update_ailment", "Failed to Access Data: buildup_limit_array");
end end
if is_enable == nil then if is_enable == nil then
@@ -453,7 +453,7 @@ function this.update_ailment(monster, ailment_param, id)
monster.ailments[id].activate_count = activate_count; monster.ailments[id].activate_count = activate_count;
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: activate_count"); error_handler.report("ailments.update_ailment", "Failed to Access Data: activate_count");
end end
if buildup ~= nil then if buildup ~= nil then
@@ -463,7 +463,7 @@ function this.update_ailment(monster, ailment_param, id)
monster.ailments[id].total_buildup = buildup; monster.ailments[id].total_buildup = buildup;
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup"); error_handler.report("ailments.update_ailment", "Failed to Access Data: buildup");
end end
if buildup_limit ~= nil then if buildup_limit ~= nil then
@@ -473,7 +473,7 @@ function this.update_ailment(monster, ailment_param, id)
monster.ailments[id].buildup_limit = buildup_limit; monster.ailments[id].buildup_limit = buildup_limit;
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_limit"); error_handler.report("ailments.update_ailment", "Failed to Access Data: buildup_limit");
end end
if buildup ~= nil and buildup_limit ~= nil and buildup_limit ~= 0 then if buildup ~= nil and buildup_limit ~= nil and buildup_limit ~= 0 then
@@ -544,7 +544,7 @@ function this.update_poison(monster, poison_param)
--if poison tick, apply damage --if poison tick, apply damage
local is_damage = poison_get_is_damage_method:call(poison_param); local is_damage = poison_get_is_damage_method:call(poison_param);
if is_damage == nil then if is_damage == nil then
error_handler.report("ailments.update_poison", "Failed to access Data: is_damage"); error_handler.report("ailments.update_poison", "Failed to Access Data: is_damage");
return; return;
end end
@@ -554,7 +554,7 @@ function this.update_poison(monster, poison_param)
local poison_damage = poison_damage_field:get_data(poison_param); local poison_damage = poison_damage_field:get_data(poison_param);
if poison_damage == nil then if poison_damage == nil then
error_handler.report("ailments.update_poison", "Failed to access Data: poison_damage"); error_handler.report("ailments.update_poison", "Failed to Access Data: poison_damage");
return; return;
end end

View File

@@ -64,6 +64,126 @@ this.monster_ids = {
risen_chameleos = 2073 risen_chameleos = 2073
} }
local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase");
local enemy_type_field = enemy_character_base_type_def:get_field("<EnemyType>k__BackingField");
local get_monster_list_register_scale_method = enemy_character_base_type_def:get_method("get_MonsterListRegisterScale");
local message_manager_type_def = sdk.find_type_definition("snow.gui.MessageManager");
local get_enemy_name_message_method = message_manager_type_def:get_method("getEnemyNameMessage");
local enemy_manager_type_def = sdk.find_type_definition("snow.enemy.EnemyManager");
local find_enemy_size_info_method = enemy_manager_type_def:get_method("findEnemySizeInfo");
local size_info_type_def = find_enemy_size_info_method:get_return_type();
local get_small_border_method = size_info_type_def:get_method("get_SmallBorder");
local get_big_border_method = size_info_type_def:get_method("get_BigBorder");
local get_king_border_method = size_info_type_def:get_method("get_KingBorder");
local get_set_info_method = enemy_character_base_type_def:get_method("get_SetInfo");
local set_info_type = get_set_info_method:get_return_type();
local get_unique_id_method = set_info_type:get_method("get_UniqueId");
local get_physical_param_method = enemy_character_base_type_def:get_method("get_PhysicalParam");
local get_stamina_param_method = enemy_character_base_type_def:get_method("get_StaminaParam");
local get_anger_param_method = enemy_character_base_type_def:get_method("get_AngerParam");
local get_damage_param_method = enemy_character_base_type_def:get_method("get_DamageParam");
local get_mystery_param_method = enemy_character_base_type_def:get_method("get_MysteryParam");
local get_mario_param_method = enemy_character_base_type_def:get_method("get_MarioParam");
local check_die_method = enemy_character_base_type_def:get_method("checkDie");
local is_disp_icon_mini_map_method = enemy_character_base_type_def:get_method("isDispIconMiniMap");
local get_ref_mesh_method = enemy_character_base_type_def:get_method("get_RefMesh");
local mesh_type_def = get_ref_mesh_method:get_return_type();
local get_game_object_method = mesh_type_def:get_method("get_GameObject");
local game_object_type_def = get_game_object_method:get_return_type();
local get_transform_method = game_object_type_def:get_method("get_Transform");
local transform_type_def = get_transform_method:get_return_type();
local get_joint_by_name_method = transform_type_def:get_method("getJointByName");
local joint_type_def = get_joint_by_name_method:get_return_type();
local get_position_method = joint_type_def:get_method("get_Position");
local physical_param_type_def = get_physical_param_method:get_return_type();
local get_vital_method = physical_param_type_def:get_method("getVital");
local get_capture_hp_vital_method = physical_param_type_def:get_method("get_CaptureHpVital");
local vital_param_type_def = get_vital_method:get_return_type();
local get_current_method = vital_param_type_def:get_method("get_Current");
local get_max_method = vital_param_type_def:get_method("get_Max");
local is_enable_method = vital_param_type_def:get_method("isEnable");
local stamina_param_type_def = get_stamina_param_method:get_return_type();
local is_tired_method = stamina_param_type_def:get_method("isTired");
local get_stamina_method = stamina_param_type_def:get_method("getStamina");
local get_max_stamina_method = stamina_param_type_def:get_method("getMaxStamina");
local get_remaining_tired_time_method = stamina_param_type_def:get_method("getStaminaRemainingTime");
local get_total_tired_time_method = stamina_param_type_def:get_method("get_TiredSec");
local anger_param_type_def = get_anger_param_method:get_return_type();
local is_anger_method = anger_param_type_def:get_method("isAnger");
local get_anger_point_method = anger_param_type_def:get_method("get_AngerPoint");
local get_limit_anger_method = anger_param_type_def:get_method("get_LimitAnger");
local get_remaining_anger_time_method = anger_param_type_def:get_method("getAngerRemainingTime");
local get_total_anger_time_method = anger_param_type_def:get_method("get_TimerAnger");
local mario_param_type_def = get_mario_param_method:get_return_type();
local get_is_marionette_method = mario_param_type_def:get_method("get_IsMarionette");
local get_mario_player_index_method = mario_param_type_def:get_method("get_MarioPlayerIndex");
local get_pos_field = enemy_character_base_type_def:get_method("get_Pos");
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)");
-- Lucent Nargacuga
local em037_02Character_type_def = sdk.find_type_definition("snow.enemy.em037.Em037_02Character");
local is_stealth_method = em037_02Character_type_def:get_method("isStealth");
-- Risen Chameleos and CHameleos
local Em025Character_base_type_Def = sdk.find_type_definition("snow.enemy.em025.Em025CharacterBase");
local get_stealth_ctrl_method = Em025Character_base_type_Def:get_method("get_StealthCtrl");
local stealth_ctrl_type_def = get_stealth_ctrl_method:get_return_type();
local get_current_status_method = stealth_ctrl_type_def:get_method("get_CurrentStatus");
local damage_param_type_def = get_damage_param_method:get_return_type();
local enemy_parts_damage_info_field = damage_param_type_def:get_field("_EnemyPartsDamageInfo");
local enemy_parts_damage_info_type_def = enemy_parts_damage_info_field:get_type();
local get_part_info_array_method = enemy_parts_damage_info_type_def:get_method("get_PartsInfo");
local enemy_parts_info_type_def = sdk.find_type_definition("snow.enemy.EnemyDamageParam.EnemyPartsDamageInfo.EnemyPartsInfo");
local get_parts_break_damage_level_method = enemy_parts_info_type_def:get_method("get_PartsBreakDamageLevel");
local get_parts_break_damage_max_level_method = enemy_parts_info_type_def:get_method("get_PartsBreakDamageMaxLevel");
local get_parts_loss_state_method = enemy_parts_info_type_def:get_method("get_PartsLossState");
local mystery_param_type_def = get_mystery_param_method:get_return_type();
local core_parts_array_field = mystery_param_type_def:get_field("CoreParts");
local enemy_mystery_core_parts_type_def = sdk.find_type_definition("snow.enemy.EnemyMysteryCoreParts");
local core_parts_get_vital_method = enemy_mystery_core_parts_type_def:get_method("get_Vital");
local core_parts_get_is_active_method = enemy_mystery_core_parts_type_def:get_method("get_IsActive");
local core_parts_get_dying_vital_threashold_method = enemy_mystery_core_parts_type_def:get_method("get_DyingVitalThreashold");
local on_break_method = enemy_mystery_core_parts_type_def:get_method("onBreak");
local gui_manager_type_def = sdk.find_type_definition("snow.gui.GuiManager");
local get_tg_camera_method = gui_manager_type_def:get_method("get_refGuiHud_TgCamera");
local tg_camera_type_def = get_tg_camera_method:get_return_type();
local get_targeting_enemy_index_field = tg_camera_type_def:get_field("OldTargetingEmIndex");
local lobby_manager_type_def = sdk.find_type_definition("snow.LobbyManager");
local receive_quest_hunter_info_method = lobby_manager_type_def:get_method("receiveQuestHunterInfo");
function this.new(enemy) function this.new(enemy)
local monster = {}; local monster = {};
@@ -116,7 +236,10 @@ function this.new(enemy)
monster.rage_seconds_left = 0; monster.rage_seconds_left = 0;
monster.rage_timer_percentage = 0; monster.rage_timer_percentage = 0;
monster.head_joint = nil;
monster.position = Vector3f.new(0, 0, 0); monster.position = Vector3f.new(0, 0, 0);
monster.head_position = Vector3f.new(0, 0, 0);
monster.distance = 0; monster.distance = 0;
monster.name = "Large Monster"; monster.name = "Large Monster";
@@ -166,116 +289,10 @@ function this.get_monster(enemy)
return monster; return monster;
end end
local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase");
local enemy_type_field = enemy_character_base_type_def:get_field("<EnemyType>k__BackingField");
local get_monster_list_register_scale_method = enemy_character_base_type_def:get_method("get_MonsterListRegisterScale");
local message_manager_type_def = sdk.find_type_definition("snow.gui.MessageManager");
local get_enemy_name_message_method = message_manager_type_def:get_method("getEnemyNameMessage");
local enemy_manager_type_def = sdk.find_type_definition("snow.enemy.EnemyManager");
local find_enemy_size_info_method = enemy_manager_type_def:get_method("findEnemySizeInfo");
local size_info_type = find_enemy_size_info_method:get_return_type();
local get_small_border_method = size_info_type:get_method("get_SmallBorder");
local get_big_border_method = size_info_type:get_method("get_BigBorder");
local get_king_border_method = size_info_type:get_method("get_KingBorder");
local get_set_info_method = enemy_character_base_type_def:get_method("get_SetInfo");
local set_info_type = get_set_info_method:get_return_type();
local get_unique_id_method = set_info_type:get_method("get_UniqueId");
local get_physical_param_method = enemy_character_base_type_def:get_method("get_PhysicalParam");
local get_stamina_param_method = enemy_character_base_type_def:get_method("get_StaminaParam");
local get_anger_param_method = enemy_character_base_type_def:get_method("get_AngerParam");
local get_damage_param_method = enemy_character_base_type_def:get_method("get_DamageParam");
local get_mystery_param_method = enemy_character_base_type_def:get_method("get_MysteryParam");
local get_mario_param_method = enemy_character_base_type_def:get_method("get_MarioParam");
local check_die_method = enemy_character_base_type_def:get_method("checkDie");
local is_disp_icon_mini_map_method = enemy_character_base_type_def:get_method("isDispIconMiniMap");
local physical_param_type = get_physical_param_method:get_return_type();
local get_vital_method = physical_param_type:get_method("getVital");
local get_capture_hp_vital_method = physical_param_type:get_method("get_CaptureHpVital");
local vital_param_type = get_vital_method:get_return_type();
local get_current_method = vital_param_type:get_method("get_Current");
local get_max_method = vital_param_type:get_method("get_Max");
local is_enable_method = vital_param_type:get_method("isEnable");
local stamina_param_type = get_stamina_param_method:get_return_type();
local is_tired_method = stamina_param_type:get_method("isTired");
local get_stamina_method = stamina_param_type:get_method("getStamina");
local get_max_stamina_method = stamina_param_type:get_method("getMaxStamina");
local get_remaining_tired_time_method = stamina_param_type:get_method("getStaminaRemainingTime");
local get_total_tired_time_method = stamina_param_type:get_method("get_TiredSec");
local anger_param_type = get_anger_param_method:get_return_type();
local is_anger_method = anger_param_type:get_method("isAnger");
local get_anger_point_method = anger_param_type:get_method("get_AngerPoint");
local get_limit_anger_method = anger_param_type:get_method("get_LimitAnger");
local get_remaining_anger_time_method = anger_param_type:get_method("getAngerRemainingTime");
local get_total_anger_time_method = anger_param_type:get_method("get_TimerAnger");
local mario_param_type = get_mario_param_method:get_return_type();
local get_is_marionette_method = mario_param_type:get_method("get_IsMarionette");
local get_mario_player_index_method = mario_param_type:get_method("get_MarioPlayerIndex");
local get_pos_field = enemy_character_base_type_def:get_method("get_Pos");
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)");
-- Lucent Nargacuga
local em037_02Character_type_def = sdk.find_type_definition("snow.enemy.em037.Em037_02Character");
local is_stealth_method = em037_02Character_type_def:get_method("isStealth");
-- Risen Chameleos and CHameleos
local Em025Character_base_type_Def = sdk.find_type_definition("snow.enemy.em025.Em025CharacterBase");
local get_stealth_ctrl_method = Em025Character_base_type_Def:get_method("get_StealthCtrl");
local stealth_ctrl_type_def = get_stealth_ctrl_method:get_return_type();
local get_current_status_method = stealth_ctrl_type_def:get_method("get_CurrentStatus");
local damage_param_type_def = get_damage_param_method:get_return_type();
local enemy_parts_damage_info_field = damage_param_type_def:get_field("_EnemyPartsDamageInfo");
local enemy_parts_damage_info_type_def = enemy_parts_damage_info_field:get_type();
local get_part_info_array_method = enemy_parts_damage_info_type_def:get_method("get_PartsInfo");
local enemy_parts_info_type_def = sdk.find_type_definition("snow.enemy.EnemyDamageParam.EnemyPartsDamageInfo.EnemyPartsInfo");
local get_parts_break_damage_level_method = enemy_parts_info_type_def:get_method("get_PartsBreakDamageLevel");
local get_parts_break_damage_max_level_method = enemy_parts_info_type_def:get_method("get_PartsBreakDamageMaxLevel");
local get_parts_loss_state_method = enemy_parts_info_type_def:get_method("get_PartsLossState");
local mystery_param_type_def = get_mystery_param_method:get_return_type();
local core_parts_array_field = mystery_param_type_def:get_field("CoreParts");
local enemy_mystery_core_parts_type_def = sdk.find_type_definition("snow.enemy.EnemyMysteryCoreParts");
local core_parts_get_vital_method = enemy_mystery_core_parts_type_def:get_method("get_Vital");
local core_parts_get_is_active_method = enemy_mystery_core_parts_type_def:get_method("get_IsActive");
local core_parts_get_dying_vital_threashold_method = enemy_mystery_core_parts_type_def:get_method("get_DyingVitalThreashold");
local on_break_method = enemy_mystery_core_parts_type_def:get_method("onBreak");
local gui_manager_type_def = sdk.find_type_definition("snow.gui.GuiManager");
local get_tg_camera_method = gui_manager_type_def:get_method("get_refGuiHud_TgCamera");
local tg_camera_type_def = get_tg_camera_method:get_return_type();
local get_targeting_enemy_index_field = tg_camera_type_def:get_field("OldTargetingEmIndex");
local lobby_manager_type_def = sdk.find_type_definition("snow.LobbyManager");
local receive_quest_hunter_info_method = lobby_manager_type_def:get_method("receiveQuestHunterInfo");
function this.init(monster, enemy) function this.init(monster, enemy)
local monster_id = enemy_type_field:get_data(enemy); local monster_id = enemy_type_field:get_data(enemy);
if monster_id == nil then if monster_id == nil then
error_handler.report("large_monster.init", "Failed to access Data: enemy_type"); error_handler.report("large_monster.init", "Failed to Access Data: enemy_type");
return; return;
end end
@@ -289,7 +306,7 @@ function this.init(monster, enemy)
if enemy_name ~= nil then if enemy_name ~= nil then
monster.name = enemy_name; monster.name = enemy_name;
else else
error_handler.report("large_monster.init", "Failed to access Data: enemy_name"); error_handler.report("large_monster.init", "Failed to Access Data: enemy_name");
end end
if monster_id ~= this.monster_ids.toadversary then if monster_id ~= this.monster_ids.toadversary then
@@ -299,10 +316,10 @@ function this.init(monster, enemy)
if unique_id ~= nil then if unique_id ~= nil then
monster.unique_id = unique_id; monster.unique_id = unique_id;
else else
error_handler.report("large_monster.init", "Failed to access Data: unique_id"); error_handler.report("large_monster.init", "Failed to Access Data: unique_id");
end end
else else
error_handler.report("large_monster.init", "Failed to access Data: set_info"); error_handler.report("large_monster.init", "Failed to Access Data: set_info");
end end
local size_info = find_enemy_size_info_method:call(singletons.enemy_manager, monster_id); local size_info = find_enemy_size_info_method:call(singletons.enemy_manager, monster_id);
@@ -316,25 +333,25 @@ function this.init(monster, enemy)
if small_border ~= nil then if small_border ~= nil then
monster.small_border = small_border; monster.small_border = small_border;
else else
error_handler.report("large_monster.init", "Failed to access Data: small_border"); error_handler.report("large_monster.init", "Failed to Access Data: small_border");
end end
if big_border ~= nil then if big_border ~= nil then
monster.big_border = big_border; monster.big_border = big_border;
else else
error_handler.report("large_monster.init", "Failed to access Data: big_border"); error_handler.report("large_monster.init", "Failed to Access Data: big_border");
end end
if king_border ~= nil then if king_border ~= nil then
monster.king_border = king_border; monster.king_border = king_border;
else else
error_handler.report("large_monster.init", "Failed to access Data: king_border"); error_handler.report("large_monster.init", "Failed to Access Data: king_border");
end end
if size ~= nil then if size ~= nil then
monster.size = size; monster.size = size;
else else
error_handler.report("large_monster.init", "Failed to access Data: size"); error_handler.report("large_monster.init", "Failed to Access Data: size");
end end
if monster.size <= monster.small_border then if monster.size <= monster.small_border then
@@ -345,7 +362,7 @@ function this.init(monster, enemy)
monster.crown = language.current_language.UI.silver; monster.crown = language.current_language.UI.silver;
end end
else else
error_handler.report("large_monster.init", "Failed to access Data: size_info"); error_handler.report("large_monster.init", "Failed to Access Data: size_info");
end end
end end
@@ -360,13 +377,13 @@ function this.init(monster, enemy)
if is_capture_enable_ ~= nil then if is_capture_enable_ ~= nil then
is_capture_enable = is_capture_enable_; is_capture_enable = is_capture_enable_;
else else
error_handler.report("large_monster.init", "Failed to access Data: is_capture_enable_"); error_handler.report("large_monster.init", "Failed to Access Data: is_capture_enable_");
end end
else else
error_handler.report("large_monster.init", "Failed to access Data: capture_param"); error_handler.report("large_monster.init", "Failed to Access Data: capture_param");
end end
else else
error_handler.report("large_monster.init", "Failed to access Data: damage_param"); error_handler.report("large_monster.init", "Failed to Access Data: damage_param");
end end
local mystery_param = get_mystery_param_method:call(enemy); local mystery_param = get_mystery_param_method:call(enemy);
@@ -374,6 +391,8 @@ function this.init(monster, enemy)
monster.is_anomaly = is_anomaly; monster.is_anomaly = is_anomaly;
monster.is_capturable = is_capture_enable and not is_anomaly; monster.is_capturable = is_capture_enable and not is_anomaly;
this.update_head_joint(enemy, monster);
end end
function this.init_UI(monster, monster_UI, cached_config) function this.init_UI(monster, monster_UI, cached_config)
@@ -478,10 +497,73 @@ function this.update_position(enemy, monster)
local position = get_pos_field:call(enemy); local position = get_pos_field:call(enemy);
if position == nil then if position == nil then
error_handler.report("large_monster.update_position", "Failed to access Data: position"); error_handler.report("large_monster.update_position", "Failed to Access Data: position");
end end
monster.position = position; monster.position = position;
this.update_head_position(enemy, monster);
end
function this.update_head_joint(enemy, monster)
local mesh = get_ref_mesh_method:call(enemy);
if mesh == nil then
error_handler.report("large_monster.update_head_joint", "Failed to Access Data: Mesh");
return;
end
local game_object = get_game_object_method:call(mesh);
if game_object == nil then
error_handler.report("large_monster.update_head_joint", "Failed to Access Data: GameObject");
return;
end
local transform = get_transform_method:call(game_object);
if transform == nil then
error_handler.report("large_monster.update_head_joint", "Failed to Access Data: Transform");
return;
end
local head_joint = get_joint_by_name_method:call(transform, "Head_00")
or get_joint_by_name_method:call(transform, "Head")
or get_joint_by_name_method:call(transform, "Head_01")
or get_joint_by_name_method:call(transform, "Spine_00")
or get_joint_by_name_method:call(transform, "Cog")
or get_joint_by_name_method:call(transform, "head")
or get_joint_by_name_method:call(transform, "root");
if head_joint == nil then
-- local joints = transform:get_Joints();
-- local out = "";
-- for i = 0, joints:get_Length() - 1 do
-- local joint = joints[i];
-- local joint_name = joint:get_Name();
-- out = out .. joint_name .. "\n";
-- end
-- error_handler.report(monster.name, out);
error_handler.report("large_monster.update_head_joint", "Failed to Access Data: HeadJoint");
return;
end
monster.head_joint = head_joint;
end
function this.update_head_position(enemy, monster)
if monster.head_joint == nil then
return;
end
local head_position = get_position_method:call(monster.head_joint);
if head_position == nil then
error_handler.report("large_monster.update_head_position", "Failed to Access Data: HeadPosition");
return;
end
monster.head_position = head_position;
end end
-- Code by coavins -- Code by coavins
@@ -490,20 +572,20 @@ function this.update_all_riders()
-- get marionette rider -- get marionette rider
local mario_param = get_mario_param_method:call(enemy); local mario_param = get_mario_param_method:call(enemy);
if mario_param == nil then if mario_param == nil then
error_handler.report("large_monster.update_all_riders", "Failed to access Data: mario_param"); error_handler.report("large_monster.update_all_riders", "Failed to Access Data: mario_param");
goto continue; goto continue;
end end
local is_marionette = get_is_marionette_method:call(mario_param); local is_marionette = get_is_marionette_method:call(mario_param);
if is_marionette == nil then if is_marionette == nil then
error_handler.report("large_monster.update_all_riders", "Failed to access Data: is_marionette"); error_handler.report("large_monster.update_all_riders", "Failed to Access Data: is_marionette");
goto continue; goto continue;
end end
if is_marionette then if is_marionette then
local player_id = get_mario_player_index_method:call(mario_param); local player_id = get_mario_player_index_method:call(mario_param);
if player_id == nil then if player_id == nil then
error_handler.report("large_monster.update_all_riders", "Failed to access Data: player_id"); error_handler.report("large_monster.update_all_riders", "Failed to Access Data: player_id");
goto continue; goto continue;
end end
@@ -529,14 +611,14 @@ function this.update(enemy, monster)
if dead_or_captured ~= nil then if dead_or_captured ~= nil then
monster.dead_or_captured = dead_or_captured; monster.dead_or_captured = dead_or_captured;
else else
error_handler.report("large_monster.update", "Failed to access Data: dead_or_captured"); error_handler.report("large_monster.update", "Failed to Access Data: dead_or_captured");
end end
local is_disp_icon_mini_map = is_disp_icon_mini_map_method:call(enemy); local is_disp_icon_mini_map = is_disp_icon_mini_map_method:call(enemy);
if is_disp_icon_mini_map ~= nil then if is_disp_icon_mini_map ~= nil then
monster.is_disp_icon_mini_map = is_disp_icon_mini_map; monster.is_disp_icon_mini_map = is_disp_icon_mini_map;
else else
error_handler.report("large_monster.update", "Failed to access Data: is_disp_icon_mini_map"); error_handler.report("large_monster.update", "Failed to Access Data: is_disp_icon_mini_map");
end end
if monster.id == this.monster_ids.lucent_nargacuga or monster.id == this.monster_ids.chameleos or monster.id == this.monster_ids.risen_chameleos then if monster.id == this.monster_ids.lucent_nargacuga or monster.id == this.monster_ids.chameleos or monster.id == this.monster_ids.risen_chameleos then
@@ -550,7 +632,7 @@ function this.update(enemy, monster)
if is_stealth == nil then if is_stealth == nil then
monster.is_stealth = is_stealth; monster.is_stealth = is_stealth;
else else
error_handler.report("large_monster.update", "Failed to access Data: is_stealth"); error_handler.report("large_monster.update", "Failed to Access Data: is_stealth");
end end
-- Chameleos and Risen Chameleos -- Chameleos and Risen Chameleos
@@ -560,14 +642,14 @@ function this.update(enemy, monster)
local status = get_current_status_method:call(stealth_controller); local status = get_current_status_method:call(stealth_controller);
if status == nil then if status == nil then
error_handler.report("large_monster.update", "Failed to access Data: status"); error_handler.report("large_monster.update", "Failed to Access Data: status");
elseif status >= 2 then elseif status >= 2 then
monster.is_stealth = true; monster.is_stealth = true;
else else
monster.is_stealth = false; monster.is_stealth = false;
end end
else else
error_handler.report("large_monster.update", "Failed to access Data: stealth_controller"); error_handler.report("large_monster.update", "Failed to Access Data: stealth_controller");
end end
end end
end end
@@ -592,13 +674,13 @@ function this.update_health(enemy, monster)
local physical_param = get_physical_param_method:call(enemy); local physical_param = get_physical_param_method:call(enemy);
if physical_param == nil then if physical_param == nil then
error_handler.report("large_monster.update_health", "Failed to access Data: physical_param"); error_handler.report("large_monster.update_health", "Failed to Access Data: physical_param");
return nil; return nil;
end end
local vital_param = get_vital_method:call(physical_param, 0, 0); local vital_param = get_vital_method:call(physical_param, 0, 0);
if vital_param == nil then if vital_param == nil then
error_handler.report("large_monster.update_health", "Failed to access Data: vital_param"); error_handler.report("large_monster.update_health", "Failed to Access Data: vital_param");
return nil; return nil;
end end
@@ -606,21 +688,21 @@ function this.update_health(enemy, monster)
if health ~= nil then if health ~= nil then
monster.health = health; monster.health = health;
else else
error_handler.report("large_monster.update_health", "Failed to access Data: health"); error_handler.report("large_monster.update_health", "Failed to Access Data: health");
end end
local max_health = get_max_method:call(vital_param); local max_health = get_max_method:call(vital_param);
if max_health ~= nil then if max_health ~= nil then
monster.max_health = max_health; monster.max_health = max_health;
else else
error_handler.report("large_monster.update_health", "Failed to access Data: max_health"); error_handler.report("large_monster.update_health", "Failed to Access Data: max_health");
end end
local capture_health = get_capture_hp_vital_method:call(physical_param); local capture_health = get_capture_hp_vital_method:call(physical_param);
if capture_health ~= nil then if capture_health ~= nil then
monster.capture_health = capture_health; monster.capture_health = capture_health;
else else
error_handler.report("large_monster.update_health", "Failed to access Data: capture_health"); error_handler.report("large_monster.update_health", "Failed to Access Data: capture_health");
end end
monster.missing_health = max_health - health; monster.missing_health = max_health - health;
@@ -652,7 +734,7 @@ function this.update_stamina(enemy, monster, stamina_param)
if stamina_param == nil then if stamina_param == nil then
stamina_param = get_stamina_param_method:call(enemy); stamina_param = get_stamina_param_method:call(enemy);
if stamina_param == nil then if stamina_param == nil then
error_handler.report("large_monster.update_stamina", "Failed to access Data: stamina_param"); error_handler.report("large_monster.update_stamina", "Failed to Access Data: stamina_param");
return; return;
end end
end end
@@ -661,7 +743,7 @@ function this.update_stamina(enemy, monster, stamina_param)
if is_tired ~= nil then if is_tired ~= nil then
monster.is_tired = is_tired; monster.is_tired = is_tired;
else else
error_handler.report("large_monster.update_stamina", "Failed to access Data: is_tired"); error_handler.report("large_monster.update_stamina", "Failed to Access Data: is_tired");
return; return;
end end
@@ -673,7 +755,7 @@ function this.update_stamina(enemy, monster, stamina_param)
if stamina ~= nil then if stamina ~= nil then
monster.stamina = stamina; monster.stamina = stamina;
else else
error_handler.report("large_monster.update_stamina", "Failed to access Data: stamina"); error_handler.report("large_monster.update_stamina", "Failed to Access Data: stamina");
return; return;
end end
@@ -681,7 +763,7 @@ function this.update_stamina(enemy, monster, stamina_param)
if max_stamina ~= nil then if max_stamina ~= nil then
monster.max_stamina = max_stamina; monster.max_stamina = max_stamina;
else else
error_handler.report("large_monster.update_stamina", "Failed to access Data: max_stamina"); error_handler.report("large_monster.update_stamina", "Failed to Access Data: max_stamina");
return; return;
end end
@@ -709,7 +791,7 @@ function this.update_stamina_timer(enemy, monster, stamina_param)
if stamina_param == nil then if stamina_param == nil then
stamina_param = get_stamina_param_method:call(enemy); stamina_param = get_stamina_param_method:call(enemy);
if stamina_param == nil then if stamina_param == nil then
error_handler.report("large_monster.update_stamina_timer", "Failed to access Data: stamina_param"); error_handler.report("large_monster.update_stamina_timer", "Failed to Access Data: stamina_param");
return; return;
end end
end end
@@ -718,7 +800,7 @@ function this.update_stamina_timer(enemy, monster, stamina_param)
if is_tired ~= nil then if is_tired ~= nil then
monster.is_tired = is_tired; monster.is_tired = is_tired;
else else
error_handler.report("large_monster.update_stamina_timer", "Failed to access Data: is_tired"); error_handler.report("large_monster.update_stamina_timer", "Failed to Access Data: is_tired");
return; return;
end end
@@ -730,7 +812,7 @@ function this.update_stamina_timer(enemy, monster, stamina_param)
if tired_timer ~= nil then if tired_timer ~= nil then
monster.tired_timer = tired_timer; monster.tired_timer = tired_timer;
else else
error_handler.report("large_monster.update_stamina_timer", "Failed to access Data: tired_timer"); error_handler.report("large_monster.update_stamina_timer", "Failed to Access Data: tired_timer");
return; return;
end end
@@ -738,7 +820,7 @@ function this.update_stamina_timer(enemy, monster, stamina_param)
if tired_duration ~= nil then if tired_duration ~= nil then
monster.tired_duration = tired_duration; monster.tired_duration = tired_duration;
else else
error_handler.report("large_monster.update_stamina_timer", "Failed to access Data: tired_duration"); error_handler.report("large_monster.update_stamina_timer", "Failed to Access Data: tired_duration");
return; return;
end end
@@ -773,7 +855,7 @@ function this.update_rage(enemy, monster, anger_param)
if anger_param == nil then if anger_param == nil then
anger_param = get_anger_param_method:call(enemy); anger_param = get_anger_param_method:call(enemy);
if anger_param == nil then if anger_param == nil then
error_handler.report("large_monster.update_rage", "Failed to access Data: anger_param"); error_handler.report("large_monster.update_rage", "Failed to Access Data: anger_param");
return; return;
end end
end end
@@ -782,7 +864,7 @@ function this.update_rage(enemy, monster, anger_param)
if is_in_rage ~= nil then if is_in_rage ~= nil then
monster.is_in_rage = is_in_rage; monster.is_in_rage = is_in_rage;
else else
error_handler.report("large_monster.update_rage", "Failed to access Data: is_in_rage"); error_handler.report("large_monster.update_rage", "Failed to Access Data: is_in_rage");
return; return;
end end
@@ -794,7 +876,7 @@ function this.update_rage(enemy, monster, anger_param)
if rage_point ~= nil then if rage_point ~= nil then
monster.rage_point = rage_point; monster.rage_point = rage_point;
else else
error_handler.report("large_monster.update_rage", "Failed to access Data: rage_point"); error_handler.report("large_monster.update_rage", "Failed to Access Data: rage_point");
return; return;
end end
@@ -802,7 +884,7 @@ function this.update_rage(enemy, monster, anger_param)
if rage_limit ~= nil then if rage_limit ~= nil then
monster.rage_limit = rage_limit; monster.rage_limit = rage_limit;
else else
error_handler.report("large_monster.update_rage", "Failed to access Data: rage_limit"); error_handler.report("large_monster.update_rage", "Failed to Access Data: rage_limit");
return; return;
end end
@@ -829,7 +911,7 @@ function this.update_rage_timer(enemy, monster, anger_param)
if anger_param == nil then if anger_param == nil then
anger_param = get_anger_param_method:call(enemy); anger_param = get_anger_param_method:call(enemy);
if anger_param == nil then if anger_param == nil then
error_handler.report("large_monster.update_rage_timer", "Failed to access Data: anger_param"); error_handler.report("large_monster.update_rage_timer", "Failed to Access Data: anger_param");
return; return;
end end
end end
@@ -838,7 +920,7 @@ function this.update_rage_timer(enemy, monster, anger_param)
if is_in_rage ~= nil then if is_in_rage ~= nil then
monster.is_in_rage = is_in_rage; monster.is_in_rage = is_in_rage;
else else
error_handler.report("large_monster.update_rage_timer", "Failed to access Data: is_in_rage"); error_handler.report("large_monster.update_rage_timer", "Failed to Access Data: is_in_rage");
return; return;
end end
@@ -850,7 +932,7 @@ function this.update_rage_timer(enemy, monster, anger_param)
if rage_timer ~= nil then if rage_timer ~= nil then
monster.rage_timer = rage_timer; monster.rage_timer = rage_timer;
else else
error_handler.report("large_monster.update_rage_timer", "Failed to access Data: rage_timer"); error_handler.report("large_monster.update_rage_timer", "Failed to Access Data: rage_timer");
return; return;
end end
@@ -858,7 +940,7 @@ function this.update_rage_timer(enemy, monster, anger_param)
if rage_duration ~= nil then if rage_duration ~= nil then
monster.rage_duration = rage_duration; monster.rage_duration = rage_duration;
else else
error_handler.report("large_monster.update_rage_timer", "Failed to access Data: rage_duration"); error_handler.report("large_monster.update_rage_timer", "Failed to Access Data: rage_duration");
return; return;
end end
@@ -905,32 +987,32 @@ function this.update_parts(enemy, monster, physical_param)
if physical_param == nil then if physical_param == nil then
physical_param = get_physical_param_method:call(enemy); physical_param = get_physical_param_method:call(enemy);
if physical_param == nil then if physical_param == nil then
error_handler.report("large_monster.update_parts", "Failed to access Data: physical_param"); error_handler.report("large_monster.update_parts", "Failed to Access Data: physical_param");
return; return;
end end
end end
local damage_param = get_damage_param_method:call(enemy); local damage_param = get_damage_param_method:call(enemy);
if damage_param == nil then if damage_param == nil then
error_handler.report("large_monster.update_parts", "Failed to access Data: damage_param"); error_handler.report("large_monster.update_parts", "Failed to Access Data: damage_param");
return; return;
end end
local enemy_parts_damage_info = enemy_parts_damage_info_field:get_data(damage_param); local enemy_parts_damage_info = enemy_parts_damage_info_field:get_data(damage_param);
if enemy_parts_damage_info == nil then if enemy_parts_damage_info == nil then
error_handler.report("large_monster.update_parts", "Failed to access Data: enemy_parts_damage_info"); error_handler.report("large_monster.update_parts", "Failed to Access Data: enemy_parts_damage_info");
return; return;
end end
local core_parts_array = get_part_info_array_method:call(enemy_parts_damage_info); local core_parts_array = get_part_info_array_method:call(enemy_parts_damage_info);
if core_parts_array == nil then if core_parts_array == nil then
error_handler.report("large_monster.update_parts", "Failed to access Data: core_parts_array"); error_handler.report("large_monster.update_parts", "Failed to Access Data: core_parts_array");
return; return;
end end
local core_parts_array_length = get_length_method:call(core_parts_array); local core_parts_array_length = get_length_method:call(core_parts_array);
if core_parts_array_length == nil then if core_parts_array_length == nil then
error_handler.report("large_monster.update_parts", "Failed to access Data: core_parts_array_length"); error_handler.report("large_monster.update_parts", "Failed to Access Data: core_parts_array_length");
return; return;
end end
@@ -939,7 +1021,7 @@ function this.update_parts(enemy, monster, physical_param)
local enemy_parts_info = get_value_method:call(core_parts_array, i); local enemy_parts_info = get_value_method:call(core_parts_array, i);
if enemy_parts_info == nil then if enemy_parts_info == nil then
error_handler.report("large_monster.update_parts", "Failed to access Data: enemy_parts_info No. " .. tostring(i)); error_handler.report("large_monster.update_parts", "Failed to Access Data: enemy_parts_info No. " .. tostring(i));
goto continue; goto continue;
end end
@@ -963,19 +1045,19 @@ function this.update_parts(enemy, monster, physical_param)
local part_current = get_current_method:call(part_vital); local part_current = get_current_method:call(part_vital);
if part_current == nil then if part_current == nil then
error_handler.report("large_monster.update_parts", string.format("Failed to access Data: enemy_parts_info No. %d -> part_current", i)); error_handler.report("large_monster.update_parts", string.format("Failed to Access Data: enemy_parts_info No. %d -> part_current", i));
end end
local part_max = get_max_method:call(part_vital); local part_max = get_max_method:call(part_vital);
if part_max == nil then if part_max == nil then
error_handler.report("large_monster.update_parts", string.format("Failed to access Data: enemy_parts_info No. %d -> part_max", i)); error_handler.report("large_monster.update_parts", string.format("Failed to Access Data: enemy_parts_info No. %d -> part_max", i));
end end
if part_current ~= nil and part_max ~= nil then if part_current ~= nil and part_max ~= nil then
body_part.update_flinch(part, part_current, part_max); body_part.update_flinch(part, part_current, part_max);
end end
else else
error_handler.report("large_monster.update_parts", string.format("Failed to access Data: enemy_parts_info No. %d -> part_vital", i)); error_handler.report("large_monster.update_parts", string.format("Failed to Access Data: enemy_parts_info No. %d -> part_vital", i));
end end
end end
@@ -988,29 +1070,29 @@ function this.update_parts(enemy, monster, physical_param)
local part_break_current = get_current_method:call(part_break_vital); local part_break_current = get_current_method:call(part_break_vital);
if part_break_current == nil then if part_break_current == nil then
error_handler.report("large_monster.update_parts", string.format("Failed to access Data: enemy_parts_info No. %d -> part_break_current", i)); error_handler.report("large_monster.update_parts", string.format("Failed to Access Data: enemy_parts_info No. %d -> part_break_current", i));
end end
local part_break_max = get_max_method:call(part_break_vital); local part_break_max = get_max_method:call(part_break_vital);
if part_break_max == nil then if part_break_max == nil then
error_handler.report("large_monster.update_parts", string.format("Failed to access Data: enemy_parts_info No. %d -> part_break_max", i)); error_handler.report("large_monster.update_parts", string.format("Failed to Access Data: enemy_parts_info No. %d -> part_break_max", i));
end end
local part_break_count = get_parts_break_damage_level_method:call(enemy_parts_info); local part_break_count = get_parts_break_damage_level_method:call(enemy_parts_info);
if part_break_count == nil then if part_break_count == nil then
error_handler.report("large_monster.update_parts", string.format("Failed to access Data: enemy_parts_info No. %d -> part_break_count", i)); error_handler.report("large_monster.update_parts", string.format("Failed to Access Data: enemy_parts_info No. %d -> part_break_count", i));
end end
local part_break_max_count = get_parts_break_damage_max_level_method:call(enemy_parts_info); local part_break_max_count = get_parts_break_damage_max_level_method:call(enemy_parts_info);
if part_break_max_count == nil then if part_break_max_count == nil then
error_handler.report("large_monster.update_parts", string.format("Failed to access Data: enemy_parts_info No. %d -> part_break_max_count", i)); error_handler.report("large_monster.update_parts", string.format("Failed to Access Data: enemy_parts_info No. %d -> part_break_max_count", i));
end end
if part_break_current ~= nil and part_break_max ~= nil and part_break_count ~= nil and part_break_max_count ~= nil then if part_break_current ~= nil and part_break_max ~= nil and part_break_count ~= nil and part_break_max_count ~= nil then
body_part.update_break(part, part_break_current, part_break_max, part_break_count, part_break_max_count); body_part.update_break(part, part_break_current, part_break_max, part_break_count, part_break_max_count);
end end
else else
error_handler.report("large_monster.update_parts", string.format("Failed to access Data: enemy_parts_info No. %d -> part_break_vital", i)); error_handler.report("large_monster.update_parts", string.format("Failed to Access Data: enemy_parts_info No. %d -> part_break_vital", i));
end end
end end
@@ -1023,24 +1105,24 @@ function this.update_parts(enemy, monster, physical_param)
local part_loss_current = get_current_method:call(part_loss_vital); local part_loss_current = get_current_method:call(part_loss_vital);
if part_loss_current == nil then if part_loss_current == nil then
error_handler.report("large_monster.update_parts", string.format("Failed to access Data: enemy_parts_info No. %d -> part_loss_current", i)); error_handler.report("large_monster.update_parts", string.format("Failed to Access Data: enemy_parts_info No. %d -> part_loss_current", i));
end end
local part_loss_max = get_max_method:call(part_loss_vital); local part_loss_max = get_max_method:call(part_loss_vital);
if part_loss_max == nil then if part_loss_max == nil then
error_handler.report("large_monster.update_parts", string.format("Failed to access Data: enemy_parts_info No. %d -> part_loss_max", i)); error_handler.report("large_monster.update_parts", string.format("Failed to Access Data: enemy_parts_info No. %d -> part_loss_max", i));
end end
local is_severed = get_parts_loss_state_method:call(enemy_parts_info); local is_severed = get_parts_loss_state_method:call(enemy_parts_info);
if is_severed == nil then if is_severed == nil then
error_handler.report("large_monster.update_parts", string.format("Failed to access Data: enemy_parts_info No. %d -> is_severed", i)); error_handler.report("large_monster.update_parts", string.format("Failed to Access Data: enemy_parts_info No. %d -> is_severed", i));
end end
if part_loss_current ~= nil and part_loss_max ~= nil and is_severed ~= nil then if part_loss_current ~= nil and part_loss_max ~= nil and is_severed ~= nil then
body_part.update_loss(part, part_loss_current, part_loss_max, is_severed); body_part.update_loss(part, part_loss_current, part_loss_max, is_severed);
end end
else else
error_handler.report("large_monster.update_parts", string.format("Failed to access Data: enemy_parts_info No. %d -> part_loss_vital", i)); error_handler.report("large_monster.update_parts", string.format("Failed to Access Data: enemy_parts_info No. %d -> part_loss_vital", i));
end end
end end
@@ -1078,13 +1160,13 @@ function this.update_anomaly_parts(enemy, monster, mystery_param)
local core_parts_array = core_parts_array_field:get_data(mystery_param); local core_parts_array = core_parts_array_field:get_data(mystery_param);
if core_parts_array == nil then if core_parts_array == nil then
error_handler.report("large_monster.update_anomaly_parts", "Failed to access Data: core_parts_array"); error_handler.report("large_monster.update_anomaly_parts", "Failed to Access Data: core_parts_array");
return; return;
end end
local core_parts_array_length = get_length_method:call(core_parts_array); local core_parts_array_length = get_length_method:call(core_parts_array);
if core_parts_array_length == nil then if core_parts_array_length == nil then
error_handler.report("large_monster.update_anomaly_parts", "Failed to access Data: core_parts_array_length"); error_handler.report("large_monster.update_anomaly_parts", "Failed to Access Data: core_parts_array_length");
return; return;
end end
@@ -1093,7 +1175,7 @@ function this.update_anomaly_parts(enemy, monster, mystery_param)
local core_part = get_value_method:call(core_parts_array, i); local core_part = get_value_method:call(core_parts_array, i);
if core_part == nil then if core_part == nil then
error_handler.report("large_monster.update_anomaly_parts", "Failed to access Data: core_part No. " .. tostring(i)); error_handler.report("large_monster.update_anomaly_parts", "Failed to Access Data: core_part No. " .. tostring(i));
goto continue; goto continue;
end end
@@ -1110,13 +1192,13 @@ function this.update_anomaly_parts(enemy, monster, mystery_param)
local part_vital = core_parts_get_vital_method:call(core_part); local part_vital = core_parts_get_vital_method:call(core_part);
if part_vital == nil then if part_vital == nil then
error_handler.report("large_monster.update_anomaly_parts", "Failed to access Data: part_vital No. " .. tostring(i)); error_handler.report("large_monster.update_anomaly_parts", "Failed to Access Data: part_vital No. " .. tostring(i));
return; return;
end end
local part_is_active = core_parts_get_is_active_method:call(core_part); local part_is_active = core_parts_get_is_active_method:call(core_part);
if part_is_active == nil then if part_is_active == nil then
error_handler.report("large_monster.update_anomaly_parts", "Failed to access Data: part_is_active No. " .. tostring(i)); error_handler.report("large_monster.update_anomaly_parts", "Failed to Access Data: part_is_active No. " .. tostring(i));
return; return;
end end
@@ -1124,19 +1206,19 @@ function this.update_anomaly_parts(enemy, monster, mystery_param)
local part_current = get_current_method:call(part_vital); local part_current = get_current_method:call(part_vital);
if part_current == nil then if part_current == nil then
error_handler.report("large_monster.update_anomaly_parts", "Failed to access Data: part_current No. " .. tostring(i)); error_handler.report("large_monster.update_anomaly_parts", "Failed to Access Data: part_current No. " .. tostring(i));
goto continue; goto continue;
end end
local part_max = get_max_method:call(part_vital); local part_max = get_max_method:call(part_vital);
if part_max == nil then if part_max == nil then
error_handler.report("large_monster.update_anomaly_parts", "Failed to access Data: part_max No. " .. tostring(i)); error_handler.report("large_monster.update_anomaly_parts", "Failed to Access Data: part_max No. " .. tostring(i));
goto continue; goto continue;
end end
local part_is_enabled = is_enable_method:call(part_vital); local part_is_enabled = is_enable_method:call(part_vital);
if part_is_enabled == nil then if part_is_enabled == nil then
error_handler.report("large_monster.update_anomaly_parts", "Failed to access Data: part_is_enabled No. " .. tostring(i)); error_handler.report("large_monster.update_anomaly_parts", "Failed to Access Data: part_is_enabled No. " .. tostring(i));
goto continue; goto continue;
end end
@@ -1159,19 +1241,19 @@ function this.update_highlighted_id()
end end
if singletons.gui_manager == nil then if singletons.gui_manager == nil then
error_handler.report("large_monster.update_highlighted_id", "Failed to access Data: gui_manager"); error_handler.report("large_monster.update_highlighted_id", "Failed to Access Data: gui_manager");
return; return;
end end
local gui_hud_target_camera = get_tg_camera_method:call(singletons.gui_manager); local gui_hud_target_camera = get_tg_camera_method:call(singletons.gui_manager);
if gui_hud_target_camera == nil then if gui_hud_target_camera == nil then
error_handler.report("large_monster.update_highlighted_id", "Failed to access Data: gui_hud_target_camera"); error_handler.report("large_monster.update_highlighted_id", "Failed to Access Data: gui_hud_target_camera");
return; return;
end end
local highlighted_id = get_targeting_enemy_index_field:get_data(gui_hud_target_camera); local highlighted_id = get_targeting_enemy_index_field:get_data(gui_hud_target_camera);
if highlighted_id == nil then if highlighted_id == nil then
error_handler.report("large_monster_UI.update_highlighted_id", "Failed to access Data: highlighted_id"); error_handler.report("large_monster_UI.update_highlighted_id", "Failed to Access Data: highlighted_id");
return; return;
end end

View File

@@ -44,6 +44,7 @@ local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.Enemy
local enemy_character_base_update_method = enemy_character_base_type_def:get_method("update"); local enemy_character_base_update_method = enemy_character_base_type_def:get_method("update");
local is_boss_enemy_method = enemy_character_base_type_def:get_method("get_isBossEnemy"); local is_boss_enemy_method = enemy_character_base_type_def:get_method("get_isBossEnemy");
local on_destroy_method = enemy_character_base_type_def:get_method("onDestroy");
local enemy_damage_check_type_def = sdk.find_type_definition("snow.enemy.EnemyDamageCheck"); local enemy_damage_check_type_def = sdk.find_type_definition("snow.enemy.EnemyDamageCheck");
local damage_check_update_param_update_method = enemy_damage_check_type_def:get_method("updateParam"); local damage_check_update_param_update_method = enemy_damage_check_type_def:get_method("updateParam");
@@ -205,13 +206,13 @@ end
function this.update_health(enemy_damage_check) function this.update_health(enemy_damage_check)
local enemy = get_ref_enemy:call(enemy_damage_check); local enemy = get_ref_enemy:call(enemy_damage_check);
if enemy == nil then if enemy == nil then
error_handler.report("monster_hook.update_health", "Failed to access Data: enemy"); error_handler.report("monster_hook.update_health", "Failed to Access Data: enemy");
return; return;
end end
local is_large = is_boss_enemy_method:call(enemy); local is_large = is_boss_enemy_method:call(enemy);
if is_large == nil then if is_large == nil then
error_handler.report("monster_hook.update_health", "Failed to access Data: is_large"); error_handler.report("monster_hook.update_health", "Failed to Access Data: is_large");
return; return;
end end
@@ -234,7 +235,7 @@ function this.update_stamina(stamina_param, stamina_sub)
local enemy = get_enemy_method:call(stamina_param); local enemy = get_enemy_method:call(stamina_param);
if enemy == nil then if enemy == nil then
error_handler.report("monster_hook.update_stamina", "Failed to access Data: enemy"); error_handler.report("monster_hook.update_stamina", "Failed to Access Data: enemy");
return; return;
end end
@@ -261,6 +262,20 @@ function this.update_rage_timer(anger_param, enemy)
large_monster.update_rage_timer(enemy, monster, anger_param); large_monster.update_rage_timer(enemy, monster, anger_param);
end end
function this.on_destroy(enemy)
local is_large = is_boss_enemy_method:call(enemy);
if is_large == nil then
error_handler.report("monster_hook.on_destroy", "Failed to Access Data: is_large");
return;
end
if is_large then
large_monster.list[enemy] = nil;
else
small_monster.list[enemy] = nil;
end
end
function this.init_dependencies() function this.init_dependencies()
small_monster = require("MHR_Overlay.Monsters.small_monster"); small_monster = require("MHR_Overlay.Monsters.small_monster");
large_monster = require("MHR_Overlay.Monsters.large_monster"); large_monster = require("MHR_Overlay.Monsters.large_monster");
@@ -296,6 +311,12 @@ function this.init_module()
end, function(retval) end, function(retval)
return retval; return retval;
end); end);
sdk.hook(on_destroy_method, function(args)
pcall(this.on_destroy, sdk.to_managed_object(args[2]));
end, function(retval)
return retval;
end);
end end
return this; return this;

View File

@@ -48,6 +48,39 @@ local package = package;
this.list = {}; this.list = {};
local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase");
local enemy_type_field = enemy_character_base_type_def:get_field("<EnemyType>k__BackingField");
local message_manager_type_def = sdk.find_type_definition("snow.gui.MessageManager");
local get_enemy_name_message_method = message_manager_type_def:get_method("getEnemyNameMessage");
local get_ref_mesh_method = enemy_character_base_type_def:get_method("get_RefMesh");
local mesh_type_def = get_ref_mesh_method:get_return_type();
local get_game_object_method = mesh_type_def:get_method("get_GameObject");
local game_object_type_def = get_game_object_method:get_return_type();
local get_transform_method = game_object_type_def:get_method("get_Transform");
local transform_type_def = get_transform_method:get_return_type();
local get_joint_by_name_method = transform_type_def:get_method("getJointByName");
local joint_type_def = get_joint_by_name_method:get_return_type();
local get_position_method = joint_type_def:get_method("get_Position");
local get_physical_param_method = enemy_character_base_type_def:get_method("get_PhysicalParam");
local check_die_method = enemy_character_base_type_def:get_method("checkDie");
local physical_param_type = get_physical_param_method:get_return_type();
local get_vital_method = physical_param_type:get_method("getVital");
local vital_param_type = get_vital_method:get_return_type();
local get_current_method = vital_param_type:get_method("get_Current");
local get_max_method = vital_param_type:get_method("get_Max");
local get_pos_method = enemy_character_base_type_def:get_method("get_Pos");
function this.new(enemy) function this.new(enemy)
local monster = {}; local monster = {};
monster.is_large = false; monster.is_large = false;
@@ -58,7 +91,10 @@ function this.new(enemy)
monster.missing_health = 0; monster.missing_health = 0;
monster.capture_health = 0; monster.capture_health = 0;
monster.head_joint = nil;
monster.position = Vector3f.new(0, 0, 0); monster.position = Vector3f.new(0, 0, 0);
monster.head_position = Vector3f.new(0, 0, 0);
monster.distance = 0; monster.distance = 0;
monster.name = "Small Monster"; monster.name = "Small Monster";
@@ -89,16 +125,10 @@ function this.get_monster(enemy)
return monster; return monster;
end end
local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase");
local enemy_type_field = enemy_character_base_type_def:get_field("<EnemyType>k__BackingField");
local message_manager_type_def = sdk.find_type_definition("snow.gui.MessageManager");
local get_enemy_name_message_method = message_manager_type_def:get_method("getEnemyNameMessage");
function this.init(monster, enemy) function this.init(monster, enemy)
local enemy_type = enemy_type_field:get_data(enemy); local enemy_type = enemy_type_field:get_data(enemy);
if enemy_type == nil then if enemy_type == nil then
error_handler.report("small_monster.init", "Failed to access Data: enemy_type"); error_handler.report("small_monster.init", "Failed to Access Data: enemy_type");
return; return;
end end
@@ -106,10 +136,12 @@ function this.init(monster, enemy)
local enemy_name = get_enemy_name_message_method:call(singletons.message_manager, enemy_type); local enemy_name = get_enemy_name_message_method:call(singletons.message_manager, enemy_type);
if enemy_name == nil then if enemy_name == nil then
error_handler.report("small_monster.init", "Failed to access Data: enemy_name"); error_handler.report("small_monster.init", "Failed to Access Data: enemy_name");
end end
monster.name = enemy_name; monster.name = enemy_name;
this.update_head_joint(enemy, monster);
end end
function this.init_UI(monster) function this.init_UI(monster)
@@ -153,18 +185,6 @@ function this.init_UI(monster)
); );
end end
local get_physical_param_method = enemy_character_base_type_def:get_method("get_PhysicalParam");
local check_die_method = enemy_character_base_type_def:get_method("checkDie");
local physical_param_type = get_physical_param_method:get_return_type();
local get_vital_method = physical_param_type:get_method("getVital");
local vital_param_type = get_vital_method:get_return_type();
local get_current_method = vital_param_type:get_method("get_Current");
local get_max_method = vital_param_type:get_method("get_Max");
local get_pos_method = enemy_character_base_type_def:get_method("get_Pos");
function this.update_position(enemy, monster) function this.update_position(enemy, monster)
local cached_config = config.current_config.small_monster_UI; local cached_config = config.current_config.small_monster_UI;
@@ -179,10 +199,73 @@ function this.update_position(enemy, monster)
local position = get_pos_method:call(enemy); local position = get_pos_method:call(enemy);
if position == nil then if position == nil then
error_handler.report("small_monster.update_position", "Failed to access Data: position"); error_handler.report("small_monster.update_position", "Failed to Access Data: position");
end end
monster.position = position; monster.position = position;
this.update_head_position(enemy, monster);
end
function this.update_head_joint(enemy, monster)
local mesh = get_ref_mesh_method:call(enemy);
if mesh == nil then
error_handler.report("small_monster.update_head_joint", "Failed to Access Data: Mesh");
return;
end
local game_object = get_game_object_method:call(mesh);
if game_object == nil then
error_handler.report("small_monster.update_head_joint", "Failed to Access Data: GameObject");
return;
end
local transform = get_transform_method:call(game_object);
if transform == nil then
error_handler.report("small_monster.update_head_joint", "Failed to Access Data: Transform");
return;
end
local head_joint = get_joint_by_name_method:call(transform, "Head_00")
or get_joint_by_name_method:call(transform, "Head")
or get_joint_by_name_method:call(transform, "Head_01")
or get_joint_by_name_method:call(transform, "Spine_00")
or get_joint_by_name_method:call(transform, "Cog")
or get_joint_by_name_method:call(transform, "head")
or get_joint_by_name_method:call(transform, "root");
if head_joint == nil then
-- local out = "";
-- local joints = transform:get_Joints();
-- for i = 0, joints:get_Length() - 1 do
-- local joint = joints[i];
-- local joint_name = joint:get_Name();
-- out = out .. joint_name .. "\n";
-- end
-- error_handler.report(monster.name, out);
error_handler.report("small_monster.update_head_joint", "Failed to Access Data: HeadJoint");
return;
end
monster.head_joint = head_joint;
end
function this.update_head_position(enemy, monster)
if monster.head_joint == nil then
return;
end
local head_position = get_position_method:call(monster.head_joint);
if head_position == nil then
error_handler.report("small_monster.update_head_position", "Failed to Access Data: HeadPosition");
return;
end
monster.head_position = head_position;
end end
function this.update(enemy, monster) function this.update(enemy, monster)
@@ -194,7 +277,7 @@ function this.update(enemy, monster)
if dead_or_captured ~= nil then if dead_or_captured ~= nil then
monster.dead_or_captured = dead_or_captured; monster.dead_or_captured = dead_or_captured;
else else
error_handler.report("small_monster.update", "Failed to access Data: dead_or_captured"); error_handler.report("small_monster.update", "Failed to Access Data: dead_or_captured");
end end
pcall(ailments.update_ailments, enemy, monster); pcall(ailments.update_ailments, enemy, monster);
@@ -207,13 +290,13 @@ function this.update_health(enemy, monster)
local physical_param = get_physical_param_method:call(enemy); local physical_param = get_physical_param_method:call(enemy);
if physical_param == nil then if physical_param == nil then
error_handler.report("small_monster.update_health", "Failed to access Data: physical_param"); error_handler.report("small_monster.update_health", "Failed to Access Data: physical_param");
return; return;
end end
local vital_param = get_vital_method:call(physical_param, 0, 0); local vital_param = get_vital_method:call(physical_param, 0, 0);
if vital_param == nil then if vital_param == nil then
error_handler.report("small_monster.update_health", "Failed to access Data: vital_param"); error_handler.report("small_monster.update_health", "Failed to Access Data: vital_param");
return; return;
end end
@@ -221,7 +304,7 @@ function this.update_health(enemy, monster)
if health ~= nil then if health ~= nil then
monster.health = health; monster.health = health;
else else
error_handler.report("small_monster.update_health", "Failed to access Data: health"); error_handler.report("small_monster.update_health", "Failed to Access Data: health");
return; return;
end end
@@ -229,7 +312,7 @@ function this.update_health(enemy, monster)
if max_health ~= nil then if max_health ~= nil then
monster.max_health = max_health; monster.max_health = max_health;
else else
error_handler.report("small_monster.update_health", "Failed to access Data: max_health"); error_handler.report("small_monster.update_health", "Failed to Access Data: max_health");
return; return;
end end

View File

@@ -56,143 +56,274 @@ function this.update()
local _displayed_buffs = {}; local _displayed_buffs = {};
for key, item_buff in pairs(item_buffs.list) do for key, abnormal_status in pairs(abnormal_statuses.list) do
if not item_buff.is_active then if abnormal_status.is_visible then
goto continue; table.insert(_displayed_buffs, abnormal_status);
end
end end
table.insert(_displayed_buffs, item_buff); for key, item_buff in pairs(item_buffs.list) do
::continue:: if item_buff.is_visible then
table.insert(_displayed_buffs, item_buff);
end
end
for key, endemic_life_buff in pairs(endemic_life_buff.list) do
if endemic_life_buff.is_visible then
table.insert(_displayed_buffs, endemic_life_buff);
end
end end
for _, melody_effect in pairs(melody_effects.list) do for _, melody_effect in pairs(melody_effects.list) do
if not melody_effect.is_active then if melody_effect.is_visible then
goto continue2;
end
table.insert(_displayed_buffs, melody_effect); table.insert(_displayed_buffs, melody_effect);
::continue2::
end 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 end
for key, dango_skill in pairs(dango_skills.list) do for key, dango_skill in pairs(dango_skills.list) do
if not dango_skill.is_active then
goto continue5;
end
if dango_skill.is_visible then
table.insert(_displayed_buffs, dango_skill); table.insert(_displayed_buffs, dango_skill);
::continue5::
end 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 end
for key, rampage_skill in pairs(rampage_skills.list) do 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 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 end
for key, misc_buffs in pairs(misc_buffs.list) do for key, misc_buffs in pairs(misc_buffs.list) do
if not misc_buffs.is_active then
goto continue10;
end
if misc_buffs.is_visible then
table.insert(_displayed_buffs, misc_buffs); table.insert(_displayed_buffs, misc_buffs);
::continue10::
end end
end
displayed_buffs = this.sort_buffs(_displayed_buffs, cached_config); displayed_buffs = this.sort_buffs(_displayed_buffs, cached_config);
end end
function this.sort_buffs(_displayed_buffs, cached_config) function this.sort_buffs(_displayed_buffs, cached_config)
local infinite_buffs_location = cached_config.settings.infinite_buffs_location;
cached_config = cached_config.sorting; cached_config = cached_config.sorting;
if cached_config.type == "Name" then if cached_config.type == "Name" then
if cached_config.reversed_order then if cached_config.reversed_order then
table.sort(_displayed_buffs, function(left, right) 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); end);
else else
table.sort(_displayed_buffs, function(left, right) 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);
end end
elseif cached_config.type == "Timer" then elseif cached_config.type == "Timer" then
if cached_config.reversed_order then if cached_config.reversed_order then
table.sort(_displayed_buffs, function(left, right) 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.name < right.name;
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.name < right.name;
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); end);
else else
table.sort(_displayed_buffs, function(left, right) 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.name > right.name;
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.name > right.name;
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);
end end
else else -- Duration
if cached_config.reversed_order then if cached_config.reversed_order then
table.sort(_displayed_buffs, function(left, right) 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.name < right.name;
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.name < right.name;
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); end);
else else
table.sort(_displayed_buffs, function(left, right) 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.name > right.name;
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.name > right.name;
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 end
end end

View File

@@ -86,7 +86,12 @@ function this.draw()
cached_config.world_offset.z cached_config.world_offset.z
); );
local position_on_screen = draw.world_to_screen(creature.position + world_offset); local position_on_screen;
if cached_config.settings.head_tracking then
position_on_screen = draw.world_to_screen(creature.head_position + world_offset);
else
position_on_screen = draw.world_to_screen(creature.position + world_offset);
end
if position_on_screen == nil then if position_on_screen == nil then
goto continue; goto continue;

View File

@@ -65,7 +65,7 @@ function this.update(dynamic_enabled, static_enabled, highlighted_enabled)
local cached_config = config.current_config.large_monster_UI; local cached_config = config.current_config.large_monster_UI;
if singletons.enemy_manager == nil then if singletons.enemy_manager == nil then
error_handler.report("large_monster_UI.update", "Failed to access Data: enemy_manager"); error_handler.report("large_monster_UI.update", "Failed to Access Data: enemy_manager");
return; return;
end end
@@ -73,7 +73,7 @@ function this.update(dynamic_enabled, static_enabled, highlighted_enabled)
local enemy_count = get_boss_enemy_count_method:call(singletons.enemy_manager); local enemy_count = get_boss_enemy_count_method:call(singletons.enemy_manager);
if enemy_count == nil then if enemy_count == nil then
error_handler.report("large_monster_UI.update", "Failed to access Data: enemy_count"); error_handler.report("large_monster_UI.update", "Failed to Access Data: enemy_count");
return; return;
end end
@@ -81,7 +81,7 @@ function this.update(dynamic_enabled, static_enabled, highlighted_enabled)
for i = 0, enemy_count - 1 do for i = 0, enemy_count - 1 do
local enemy = get_boss_enemy_method:call(singletons.enemy_manager, i); local enemy = get_boss_enemy_method:call(singletons.enemy_manager, i);
if enemy == nil then if enemy == nil then
error_handler.report("large_monster_UI.update", "Failed to access Data: enemy No. " .. tostring(i)); error_handler.report("large_monster_UI.update", "Failed to Access Data: enemy No. " .. tostring(i));
goto continue; goto continue;
end end
@@ -337,7 +337,13 @@ function this.draw_dynamic(cached_config)
local i = 0; local i = 0;
for _, monster in ipairs(displayed_dynamic_monsters) do for _, monster in ipairs(displayed_dynamic_monsters) do
local world_offset = Vector3f.new(cached_config.world_offset.x, cached_config.world_offset.y, cached_config.world_offset.z); local world_offset = Vector3f.new(cached_config.world_offset.x, cached_config.world_offset.y, cached_config.world_offset.z);
local position_on_screen = draw.world_to_screen(monster.position + world_offset);
local position_on_screen;
if cached_config.settings.head_tracking then
position_on_screen = draw.world_to_screen(monster.head_position + world_offset);
else
position_on_screen = draw.world_to_screen(monster.position + world_offset);
end
if position_on_screen == nil then if position_on_screen == nil then
goto continue; goto continue;

View File

@@ -126,7 +126,8 @@ end
function this.draw() function this.draw()
local cached_config = config.current_config.small_monster_UI; local cached_config = config.current_config.small_monster_UI;
local is_dynamic_positioning_enabled = cached_config.dynamic_positioning.enabled; local dynamic_positioning_config = cached_config.dynamic_positioning;
local is_dynamic_positioning_enabled = dynamic_positioning_config.enabled;
local i = 0; local i = 0;
for _, monster in ipairs(displayed_monsters) do for _, monster in ipairs(displayed_monsters) do
@@ -134,19 +135,23 @@ function this.draw()
if is_dynamic_positioning_enabled then if is_dynamic_positioning_enabled then
local world_offset = Vector3f.new( local world_offset = Vector3f.new(
cached_config.dynamic_positioning.world_offset.x, dynamic_positioning_config.world_offset.x,
cached_config.dynamic_positioning.world_offset.y, dynamic_positioning_config.world_offset.y,
cached_config.dynamic_positioning.world_offset.z dynamic_positioning_config.world_offset.z
); );
if dynamic_positioning_config.head_tracking then
position_on_screen = draw.world_to_screen(monster.head_position + world_offset);
else
position_on_screen = draw.world_to_screen(monster.position + world_offset); position_on_screen = draw.world_to_screen(monster.position + world_offset);
end
if position_on_screen == nil then if position_on_screen == nil then
goto continue; goto continue;
end end
position_on_screen.x = position_on_screen.x + cached_config.dynamic_positioning.viewport_offset.x; position_on_screen.x = position_on_screen.x + dynamic_positioning_config.viewport_offset.x;
position_on_screen.y = position_on_screen.y + cached_config.dynamic_positioning.viewport_offset.y; position_on_screen.y = position_on_screen.y + dynamic_positioning_config.viewport_offset.y;
else else
position_on_screen = screen.calculate_absolute_coordinates(cached_config.static_position); position_on_screen = screen.calculate_absolute_coordinates(cached_config.static_position);
if cached_config.settings.orientation == "Horizontal" then if cached_config.settings.orientation == "Horizontal" then
@@ -157,9 +162,9 @@ function this.draw()
end end
local opacity_scale = 1; local opacity_scale = 1;
if is_dynamic_positioning_enabled and cached_config.dynamic_positioning.opacity_falloff then if is_dynamic_positioning_enabled and dynamic_positioning_config.opacity_falloff then
monster.distance = (players.myself_position - monster.position):length(); monster.distance = (players.myself_position - monster.position):length();
opacity_scale = 1 - (monster.distance / cached_config.dynamic_positioning.max_distance); opacity_scale = 1 - (monster.distance / dynamic_positioning_config.max_distance);
end end
small_monster.draw(monster, cached_config, position_on_screen, opacity_scale); small_monster.draw(monster, cached_config, position_on_screen, opacity_scale);

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); drawing.draw_bar(buff_UI.bar, position_on_screen, opacity_scale, 1);
end end
local buff_name = buff.name; local buff_name = "";
if cached_config.name_label.include.skill_level and buff.level > 1 then if buff_UI.name_label.include.name then
buff_name = string.format("%s %s%d", buff_name, language.current_language.UI.lv, buff.level); 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 end
drawing.draw_label(buff_UI.name_label, position_on_screen, opacity_scale, buff_name); drawing.draw_label(buff_UI.name_label, position_on_screen, opacity_scale, buff_name);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,700 @@
{
"UI": {
"HP": "HP:",
"buildup": "Buildup:",
"gold": "Gold",
"lv": "",
"mini": "Mini",
"otomo": "Buddy",
"part_anomaly_core": "Anomaliekern",
"part_break": "Bruch",
"part_sever": "Schnitt",
"player": "Spieler",
"rage": "Wut:",
"servant": "Anhänger",
"silver": "Silber",
"stamina": "Ausdauer:",
"total_buildup": "Gesamt-Buildup",
"total_damage": "Gesamt-Schaden"
},
"ailments": {
"blast": "Explosion",
"blastblight": "Explosionspest",
"bleeding": "Blutung",
"bloodblight": "Blutpest",
"deadly_poison": "Tödliches Gift",
"defense_down": "Verteidigung -",
"dragonblight": "Drachenpest",
"dung_bomb": "Dungbombe",
"engulfed": "Verschlungen",
"exhaust": "Erschöpft",
"fall_otomo_trap": "Buddy Fallgrube",
"fall_trap": "Fallgrube",
"falling_asleep": "Am Einschlafen",
"fireblight": "Feuerpest",
"flash": "Blenden",
"frenzy": "Raserei",
"frenzy_infection": "Raserei Erlegen",
"frenzy_overcome": "Raserei Besiegt",
"frostblight": "Frostpest",
"hellfireblight": "Höllenfeuerpest",
"iceblight": "Eispest",
"leeched": "Blutegel",
"major_bubbleblight": "Blasenpest (L)",
"minor_bubbleblight": "Blasenpest (S)",
"muck": "Schlamm",
"paralysis": "Lähmung",
"poison": "Gift",
"quick_sand": "Treibsand",
"resistance_down": "Widerstand -",
"ride": "Wyvern-Reiten",
"roar": "Schrei",
"shock_otomo_trap": "Buddy Schockfalle",
"shock_trap": "Schockfalle",
"sleep": "Schlaf",
"steel_fang": "Stahl-Reißzahn",
"stench": "Gestank",
"stun": "Betäuben",
"thunderblight": "Donnerpest",
"tranq_bomb": "Beruhigungsbombe",
"tremor": "Erschütterung",
"waterblight": "Wasserpest",
"webbed": "Eingenetzt"
},
"customization_menu": {
"UI_font": "UI Schrift",
"UI_font_notice": "Schriftartänderungen erfordern einen Skiptneustart!",
"abnormal_statuses": "Status-Anomalien",
"activation_count": "Aktivierungsanzahl",
"affinity_label": "Affinität-Etikett",
"ailment_buildups": "Anomalie-Buildups",
"ailment_name": "Anomalie-Name",
"ailment_name_label": "Anomalie-Name-Etikett",
"ailment_spacing": "Anomalie-Abstand",
"ailments": "Anomalien",
"all_UI": "Ganze UI",
"anchor": "Anker",
"anomaly_cores": "Anomaliekerne",
"anomaly_filter": "Anomaliekern",
"anomaly_health": "Anomaliekern-Zustand",
"anomaly_health_percentage": "Anomaliekern-Zustand in %",
"apply": "Übernehmen",
"assign_new_key": "Neue Taste zuweisen",
"attack_label": "Angriff-Etikett",
"auto_highlight": "Auto-Erfassen",
"background": "Hintergrund",
"bar": "Leiste",
"blast": "Explosion",
"body_parts": "Körperteile",
"bold": "Fett",
"bombs": "Bomben",
"bottom_left": "Unten Links",
"bottom_right": "Unten Rechts",
"bottom_to_top": "Unten nach Oben",
"break_anomaly_filter": "Bruch + Anomaliekern",
"break_count": "Bruchanzahl",
"break_filter": "Bruch",
"break_health": "Bruch-HP",
"break_health_percentage": "Bruch-HP in %",
"break_max_count": "Max Bruchanzahl",
"break_sever_anomaly_filter": "Bruch + Schnitt + Anomaliekern",
"break_sever_filter": "Bruch + Schnitt",
"buff_UI": "Buff UI",
"buildup": "Buildup",
"buildup_bar": "Buildup-Leiste",
"buildup_bars_are_relative_to": "Buildup-Leisten relativ zu",
"buildup_percentage": "Buildup in %",
"buildup_percentage_label": "Buildup in %-Etikett",
"buildup_value_label": "Buildup-Wert-Etikett",
"capture_line": "Fanggrenze",
"cart_count": "Karrenanzahl",
"cart_count_label": "Karrenanzahl-Etikett",
"center": "Mitte",
"closest": "Nächster",
"color": "Farbe",
"colors": "Farben",
"config": "Voreinstellungen",
"creature_name_label": "Kreaturenname-Etikett",
"crown": "Krone",
"crown_thresholds": "Krone Grenzwerte",
"current_state": "Aktueller Zustand",
"current_time": "Aktuelle Zeit",
"current_value": "Aktueller Wert",
"cutscene": "Zwischensequenz",
"damage": "Schaden",
"damage_bar": "Schadensleiste",
"damage_bars_are_relative_to": "Schadensleiste relativ zu",
"damage_meter_UI": "Schadens-UI",
"damage_percentage_label": "Schaden in %-Etikett",
"damage_value_label": "Schadenswert-Etikett",
"dango_skills": "Dango-Fähigkeiten",
"debug": "Debug",
"default_state": "Voreinstellung",
"defense_label": "Verteidigung-Etikett",
"delete": "Löschen",
"distance": "Entfernung",
"dps": "DPS",
"dps_label": "DPS-Etikett",
"dps_mode": "DPS Modus",
"dragon_resistance_label": "Drachenwiderstand-Etikett",
"duplicate": "Klonen",
"duration": "Dauer",
"dynamic_positioning": "Dynamische Platzierung",
"dynamically_positioned": "Dynamisch Platziert",
"effect_level": "Effekt-Stufe",
"element_2_label": "Element 2-Etikett",
"element_label": "Element-Etikett",
"enable_for": "Aktiviere für",
"enabled": "Aktiviert",
"endemic_life": "Einheimische Wesen",
"endemic_life_UI": "Einheimische Wesen UI",
"endemic_life_buffs": "Einheimische Wesen Buffs",
"everything_seems_to_be_ok": "Alles scheint gut zu sein!",
"family": "Familie",
"farthest": "Weitester",
"fight_time": "Kampfdauer",
"fill_direction": "Füllrichtung",
"filter": "Filter",
"filter_mode": "Filter-Modus",
"fire_resistance_label": "Feuerwiderstand-Etikett",
"first": "Zuerst",
"first_hit": "Erster Treffer",
"flinch_count": "Stolper-Anzahl",
"foreground": "Vordergrund",
"freeze_dps_on_quest_end": "DPS bei Questabschluss einfrieren",
"global_position_modifier": "Allgemeiner Positions-Modifikator",
"global_scale_modifier": "Allgemeiner Größen-Modifikator",
"global_settings": "Allgemeine Einstellungen",
"head_tracking": "Auf Kopf fixieren",
"health": "HP",
"health_anomaly_filter": "HP + Anomaliekern",
"health_break_anomaly_filter": "HP + Bruch + Anomaliekern",
"health_break_filter": "HP + Bruch",
"health_break_sever_anomaly_filter": "HP + Bruch + Schnitt + Anomaliekern",
"health_break_sever_filter": "HP + Bruch + Schnitt",
"health_filter": "HP",
"health_label": "HP-Etikett",
"health_percentage": "HP in %",
"health_sever_anomaly_filter": "HP + Schnitt + Anomaliekern",
"health_sever_filter": "HP + Schnitt",
"height": "Höhe",
"hide_ailments_with_zero_buildup": "Anomalien mit 0 Buildup verbergen",
"hide_all_active_ailments": "Alle Aktiven Anomalien verbergen",
"hide_all_inactive_ailments": "Alle Inaktiven Anomalien verbergen",
"hide_bar_for_infinite_buffs": "Leiste für unbegrenzte Buffs verbergen",
"hide_dead_or_captured": "Tote oder Gefangene verbergen",
"hide_disabled_ailments": "Vom Spiel deaktivierte Anomalien verbergen",
"hide_inactive_ailments_with_no_buildup_support": "Inaktive Anomalien ohne Buildup-Möglichkeit verbergen",
"hide_inactive_creatures": "Inaktive Kreaturen verbergen",
"hide_module_if_total_damage_is_zero": "Modul bei 0 Schaden verbergen",
"hide_myself": "Selbst verbergen",
"hide_other_players": "Andere Spieler verbergen",
"hide_player_if_player_damage_is_zero": "Spieler mit 0 Schaden verbergen",
"hide_servants": "Anhänger verbergen",
"hide_timer_for_infinite_buffs": "Dauer für unbegrenzte Buffs verbergen",
"hide_total_damage": "Gesamtschaden verbergen",
"hide_total_if_total_damage_is_zero": "Bei 0 Gesamtschaden verbergen",
"hide_undamaged_parts": "Unbeschädigte Teile verbergen",
"highest_health": "Höchste HP",
"highest_health_percentage": "Höchste HP in %",
"highlighted": "Erfasst",
"highlighted_bar": "Erfasst-Leiste",
"highlighted_buildup_bar": "Erfasst Buildup-Leiste",
"highlighted_damage_bar": "Erfasst Schadensleiste",
"highlighted_targeted": "Erfasst (anvisiert)",
"history": "Verlauf",
"history_size": "Verlaufsgröße",
"horizontal": "Horizontal",
"hotkeys": "Hotkeys",
"hunter_rank": "Jägerrang",
"hunter_rank_label": "Jägerrang-Etikett",
"ice_resistance_label": "Eiswiderstand-Etikett",
"id": "ID",
"in_lobby": "Im Lager",
"in_training_area": "Im Trainingsbereich",
"include": "Beinhaltet",
"infinite_buffs_location": "Ort für Unbegrenzte Buffs",
"inside": "Innen",
"installations": "Anlagen",
"italic": "Kursiv",
"item_buffs": "Gegenstand-Buffs",
"join_time": "Beirittszeit",
"killcam": "Killcam",
"kunai": "Kunai",
"language": "Sprache",
"large_monster_UI": "Großmonster UI",
"large_monster_dynamic_UI": "Großmonster Dynamische UI",
"large_monster_highlighted_UI": "Großmonster Erfasst UI",
"large_monster_static_UI": "Großmonster Feste UI",
"large_monsters": "Große Monster",
"last": "Zuletzt",
"left_to_right": "Links nach Rechts",
"level": "Stufe",
"level_label": "Stufe-Etikett",
"loading_quest": "Lade Quest",
"loss_health": "Schnitt-HP",
"loss_health_percentage": "Schnitt-HP in %",
"lowest_health": "Niedrigste HP",
"lowest_health_percentage": "Niedrigste HP in %",
"master_rank": "Meisterrang",
"max_distance": "Max Entfernung",
"max_monster_updates_per_tick": "Max Monster-Updates pro Tick",
"max_value": "Max Wert",
"me": "Ich",
"melody_effects": "Melodie-Effekte",
"menu_font": "Menü-Schriftart",
"menu_font_change_disclaimer": "Mehrmals Sprache und Menüschriftart ändern führt zu einem Absturz!",
"misc_buffs": "Diverse Buffs",
"mod_name": "MHR Overlay",
"mode": "Modus",
"modifiers": "Modifikatoren",
"module_visibility_based_on_game_state": "Sichtbarkeit abhängig vom Spielzustand",
"modules": "Modul",
"monster_can_be_captured": "Monster ist fangbar",
"monster_id": "Monster-ID",
"monster_name": "Monster-Name",
"monster_name_label": "Monster-Name-Etikett",
"monsters": "Monster",
"my_damage_bar_location": "Ort für Meine Schadensleiste",
"my_otomos": "Meine Buddies",
"myself": "Selbst",
"name": "Name",
"name_label": "Namens-Label",
"new": "Neu",
"none": "Nichts",
"normal": "Normal",
"offset": "Offset",
"offset_is_relative_to_parts": "Offset ist relativ zu Teile",
"opacity_falloff": "Abfall der Deckkraft",
"orientation": "Orientierung",
"other": "Andere",
"other_player_otomos": "Buddies anderer Spieler",
"other_players": "Andere Spieler",
"otomo_moves": "Buddy Aktionen",
"otomos": "Buddies",
"outline": "Umrandung",
"outside": "Außen",
"part_health": "Teil-HP",
"part_name": "Teil-Name",
"part_name_label": "Teil-Name-Etikett",
"percentage_label": "Prozent-Etikett",
"performance": "Leistung",
"player_name_label": "Spielername-Etikett",
"player_name_size_limit": "Höchstbreite Spielername",
"player_spacing": "Spieler Abstand",
"players": "Spieler",
"playing_quest": "Während Quest",
"poison": "Gift",
"position": "Position",
"press_any_key": "Drücke eine Taste...",
"prioritize_large_monsters": "Große Monster priorisieren",
"quest_end_animation": "Questabschluss-Szene",
"quest_end_screen": "Questabschluss-Schirm",
"quest_end_timer": "Questabschluss-Zähler",
"quest_start_animation": "Questbeginn-Animation",
"quest_time": "Quest-Zeit",
"rage": "Wut",
"rampage_skills": "Randale-Fähigkeiten",
"reframework_outdated": "Die installierte REFramework Version ist veraltet. Bitte aktualisieren. Sonst wird MHR Overlay nicht richtig arbeiten.",
"relative_offset": "Relatives Offset",
"rename": "Umbenennen",
"render_highlighted_monster": "Rendere erfasstes Monster",
"render_inactive_anomaly_cores": "Rendere inaktive Anomaliekerne",
"render_not_highlighted_monsters": "Rendere nicht erfasste Monster",
"renderer": "Renderer",
"reset": "Zurücksetzen",
"reversed_order": "Umgekehrte Reihenfolge",
"reward_screen": "Belohnungsauswahl",
"right_alignment_shift": "Ausrichtungsverschiebung Rechts",
"right_to_left": "Rechts nach Links",
"servant_otomos": "Anhänger-Buddies",
"servants": "Anhänger",
"settings": "Einstellungen",
"sever_anomaly_filter": "Schnitt + Anomaliekern",
"sever_filter": "Schnitt",
"shadow": "Schatten",
"show_my_otomos_separately": "Zeige Meine Buddies getrennt",
"show_other_player_otomos_separately": "Zeige Buddies anderer Spieler getrennt",
"show_servant_otomos_separately": "Zeige Anhänger-Buddies getrennt",
"size": "Größe",
"skills": "Fähigkeiten",
"small_monster_UI": "Kleinmonster UI",
"small_monsters": "Kleine Monster",
"sorting": "Sortierung",
"spacing": "Abstand",
"stamina": "Ausdauer",
"stamina_label": "Ausdauer-Etikett",
"static_orientation": "Feste Orientierung",
"static_position": "Feste Platzierung",
"static_sorting": "Feste Sortierung",
"static_spacing": "Fester Abstand",
"statically_positioned": "Fest Platziert",
"stats_UI": "Status UI",
"status": "Status",
"style": "Stil",
"summary_screen": "Zusammenfassung",
"text_label": "Text-Etikett",
"thickness": "Dicke",
"thunder_resistance_label": "Donnerwiderstand-Etikett",
"time_UI": "Zeit UI",
"time_label": "Zeit-Etikett",
"time_limit": "Zeitlimit (Sekunden)",
"timer": "Dauer",
"timer_delays": "Zeitabstände",
"timer_label": "Dauer-Etikett",
"top_buildup": "Bester Buildup",
"top_damage": "Bester Schaden",
"top_dps": "Bester DPS",
"top_left": "Oben Links",
"top_right": "Oben Rechts",
"top_to_bottom": "Oben nach Unten",
"total": "Gesamt",
"total_buildup": "Gesamt Buildup",
"total_buildup_label": "Gesamt Buildup-Etikett",
"total_buildup_value_label": "Gesamt Buildup-Wert-Etikett",
"total_cart_count_label": "Gesamtanzahl Karren-Etikett",
"total_damage": "Gesamtschaden",
"total_damage_label": "Gesamtschaden-Etikett",
"total_damage_location": "Ort für Gesamtschadensleiste",
"total_damage_offset_is_relative": "Gesamtschaden Offset ist relativ",
"total_damage_value_label": "Gesamtschadenswert-Etikett",
"total_dps": "Gesamte DPS",
"total_dps_label": "Gesamte DPS-Etikett",
"tracked_damage_types": "Verfolgte Schadensarten",
"tracked_monster_types": "Verfolgte Monsterarten",
"type": "Typ",
"update_buffs_delay": "Buffs abfragen (in Sek.)",
"update_is_online_delay": "Onlinecheck abfragen (in Sek.)",
"update_myself_position_delay": "Eigene Position abfragen (in Sek.)",
"update_player_info_delay": "Spielerinfo abfragen (in Sek.)",
"update_players_delay": "Spieler abfragen (in Sek.)",
"update_quest_time_delay": "Questzeit abfragen (in Sek.)",
"update_singletons_delay": "Singletons abfragen (in Sek.)",
"update_window_size_delay": "Fenstergröße abfragen (in Sek.)",
"use_d2d_if_available": "Direct2D nutzen wenn vorhanden",
"value": "Wert",
"value_label": "Wert-Etikett",
"vertical": "Vertikal",
"viewport_offset": "Viewport Offset",
"visible": "Sichtbar",
"water_resistance_label": "Wasserwiderstand-Etikett",
"weapon_skills": "Waffen-Fähigkeiten",
"width": "Breite",
"world_offset": "Welt Offset",
"wyvern_riding": "Wyvern-Reiten",
"x": "X",
"y": "Y",
"z": "Z"
},
"dango_skills": {
"dango_adrenaline": "Dango-Adrenalin",
"dango_booster": "Dango-Verstärker",
"dango_bulker": "Dango-Kraftprotz",
"dango_connector": "Dango-Verbinder",
"dango_defender": "Dango-Verteidiger",
"dango_flyer": "Dango-Jongleur",
"dango_glutton": "Dango-Nimmersatt",
"dango_hunter": "Dango-Jäger",
"dango_insurance": "Dango-Sicherer",
"dango_insurance_defense_up": "Dango-Sicherer Verteidigung +",
"super_recovery_dango": "Super-Erholungs-Dango"
},
"endemic_life": {
"butterflame": "Flämmling",
"clothfly": "Tuchfalter",
"cutterfly": "Schnibelle",
"gold_wirebug": "Goldseilkäfer",
"peepersects": "Späherlinge",
"red_lampsquid": "Rotlichtkalmar",
"ruby_wirebug": "Rubinseilkäfer",
"stinkmink": "Miefnerz",
"yellow_lampsquid": "Gelblichtkalmar"
},
"font_name": "NotoSans-Bold.otf",
"item_buffs": {
"adamant_seed": "Diamantsamen",
"armor_ammo": "Rüstung (Munition)",
"armorskin": "Panzerhaut",
"dash_juice": "Sprintsaft",
"demon_ammo": "Dämon (Munition)",
"demon_powder": "Dämonenpulver",
"demondrug": "Dämonenmittel",
"gourmet_fish": "Gourmet-Fisch",
"hardshell_powder": "Harthülsenpulver",
"immunizer": "Immunisierer",
"mega_armorskin": "Mega-Panzerhaut",
"mega_demondrug": "Mega-Dämonenmittel",
"might_seed": "Machtsamen"
},
"melody_effects": {
"affinity_up": "Affinität +",
"attack_and_affinity_up": "Angriff & Affinität +",
"attack_and_defense_up": "Angriff & Verteidigung +",
"attack_up": "Angriff +",
"blight_negated": "Pest negiert",
"defense_up": "Verteidigung +",
"divine_protection": "Göttlicher Schutz",
"earplugs_l": "Ohrstöpsel II",
"earplugs_s": "Ohrstöpsel I",
"elemental_attack_boost": "Elementangriff-Boost",
"environment_damage_negated": "Umgebungsschaden negiert",
"health_recovery_l": "Gesundheitserholung (L)",
"health_recovery_s": "Gesundheitserholung (S)",
"health_recovery_s_antidote": "Gesundheitserholung (S) + Gegengift",
"health_regeneration": "Gesundheitsregeneration",
"infernal_melody": "Höllenmelodie",
"knockbacks_negated": "Rückschläge negiert",
"self_improvement": "Selbstverbesserung",
"sharpness_extension": "Schärfeverlängerung",
"sharpness_loss_reduced": "Schärfeverlust reduziert",
"sharpness_regeneration": "Schärferegeneration",
"sonic_barrier": "Schallbarriere",
"sonic_wave": "Schallwelle",
"stamina_recovery_up": "Ausdauer-Erholung +",
"stamina_use_reduced": "Ausdauernutzung -",
"stun_negated": "Betäuben negiert",
"tremors_negated": "Erschütterungen negiert",
"wind_pressure_negated": "Winddruck negiert"
},
"misc_buffs": {
"attack_up": "Angriff +",
"defense_up": "Verteidigung +",
"immunity": "Immunität",
"natural_healing_up": "Natürliche Heilung +",
"stamina_use_down": "Ausdauernutzung -"
},
"otomo_moves": {
"go_fight_win": "Jubeltanz",
"power_drum": "Krafttrommel",
"rousing_roar": "Stärkungsbrüllen",
"vase_of_vitality": "Vase der Vitalität"
},
"parts": {
"abdomen": "Abdomen",
"amatsu_unknown": "?",
"antenna": "Fühler",
"arms": "Arme",
"arms_mud": "Arme (Schlamm)",
"back": "Rücken",
"back_windsac": "Rücken (Windsack)",
"body": "Körper",
"body_mud": "Körper (Schlamm)",
"carapace": "Platte",
"chest": "Brust",
"chest_windsac": "Brust (Windsack)",
"claw": "Klaue",
"crest": "Kamm",
"dorsal_fin": "Rückenflosse",
"foreleg": "Vorderbein",
"forelegs": "Vorderbeine",
"head": "Kopf",
"head_mud": "Kopf (Schlamm)",
"hind_leg": "Hinterbein",
"hind_legs": "Hinterbeine",
"large_mudbulb": "Große Schlammknolle",
"left_arm": "Arm L",
"left_arm_ice": "Arm L (Eis)",
"left_claw": "Klaue L",
"left_cutwing": "Schnittflügel L",
"left_foreleg": "Vorderbein L",
"left_hind_leg": "Hinterbein L",
"left_leg": "Bein L",
"left_leg_mud": "Bein L (Schlamm)",
"left_legs": "Beine L",
"left_wing": "Flügel L",
"left_wingclaw": "Flügelklaue L",
"legs": "Beine",
"lower_back": "Unterer Rücken",
"lower_body": "Unterkörper",
"mane": "Mähne",
"mudbulb": "Schlammknolle",
"neck": "Hals",
"rear": "Hintern",
"right_arm": "Arm R",
"right_arm_ice": "Arm R (Eis)",
"right_claw": "Klaue R",
"right_cutwing": "Schnittflügel R",
"right_foreleg": "Vorderbein R",
"right_hind_leg": "Hinterbein R",
"right_leg": "Bein R",
"right_leg_mud": "Bein R (Schlamm)",
"right_legs": "Beine R",
"right_wing": "Flügel R",
"right_wingclaw": "Flügelklaue R",
"rock": "Fels",
"shell": "Panzer",
"spinning": "Spinning",
"tail": "Schwanz",
"tail_mud": "Schwanz (Schlamm)",
"tail_tip": "Schwanzspitze",
"tail_windsac": "Schwanz (Windsack)",
"thundersacs": "Funkensack",
"torso": "Torso",
"torso_mud": "Torso (Schlamm)",
"unknown": "?",
"upper_back": "Oberer Rücken",
"upper_body": "Oberkörper",
"wingclaw": "Flügelklaue",
"wingclaws": "Flügelklauen",
"wings": "Flügel"
},
"rampage_skills": {
"chameleos_soul": "Chameleos-Seele",
"kushala_daora_soul": "Kushala-Daora-Seele"
},
"skills": {
"adrenaline_rush": "Adrenalinschub",
"affinity_sliding": "Affinitätsschlittern",
"agitator": "Aufhetzer",
"berserk": "Berserker",
"bladescale_hone": "KlingenschVerbess",
"blood_awakening": "Bluterwachen",
"bloodlust": "Blutdurst",
"burst": "Salve",
"coalescence": "Verschmelzung",
"counterstrike": "Gegenschlag",
"dereliction": "Verwahrlosung",
"dragon_conversion_elemental_attack_up": "Drachenumwandlung: Elem. Ang +",
"dragon_conversion_elemental_res_up": "Drachenumwandlung: Elem. Wdr +",
"dragonheart": "Drachenherz",
"embolden": "Ermutigen",
"frenzied_bloodlust": "Raserei-Blutdurst",
"furious": "Zorniger",
"grinder_s": "Schleifer (S)",
"heaven_sent": "Wie gerufen",
"hellfire_cloak": "Höllenfeuer-Umhang",
"heroics": "Heldentat",
"inspiration": "Inspiration",
"intrepid_heart": "Furchtloses Herz",
"latent_power": "Latente Kraft",
"maximum_might": "Höchstmacht",
"offensive_guard": "Offensive Abwehr",
"partbreaker": "Teilezerstörer",
"peak_performance": "Höchstleistung",
"powder_mantle_blue": "Pulver-Mantel (Blau)",
"powder_mantle_red": "Pulver-Mantel (Rot)",
"protective_polish": "Schutzpolitur",
"resentment": "Groll",
"resuscitate": "Wiederbelebung",
"spiribirds_call": "Irrlitzruf",
"status_trigger": "Statusauslöser",
"strife": "Kampf",
"wall_runner": "Wandläufer",
"wind_mantle": "Wind-Mantel"
},
"stats": {
"affinity": "Affinität",
"attack": "Angriff",
"defense": "Verteidigung",
"dragon": "Drache",
"dragon_resistance": "Drachenwdrstd",
"fire": "Feuer",
"fire_resistance": "Feuerwdrstd",
"ice": "Eis",
"ice_resistance": "EIswdrstd",
"stamina": "Ausdauer",
"thunder": "Donner",
"thunder_resistance": "Donnerwdrstd",
"water": "Wasser",
"water_resistance": "Wasserwdrstd"
},
"unicode_glyph_ranges": [
32,
255,
256,
591,
1024,
1327,
7680,
7935,
8192,
8303,
65280,
65519,
0
],
"weapon_skills": {
"bow": {
"arc_shot_affinity": "Bogenschuss: Affinität",
"arc_shot_brace": "Bogenschuss: Festhalten",
"bolt_boost": "Bolzen-Booster",
"herculean_draw": "Herkulisches Ziehen"
},
"charge_blade": {
"element_boost": "Elementbonus",
"sword_boost_mode": "Schwertmodus Verstärkt"
},
"dual_blades": {
"archdemon_mode": "Erzdämonenmodus",
"ironshine_silk": "Eisenschimmer-Seide"
},
"great_sword": {
"power_sheathe": "Kraft-Wegstecken"
},
"gunlance": {
"erupting_cannon": "Eruptionskanone",
"ground_splitter": "Bodenteiler"
},
"hammer": {
"impact_burst": "Einschlagsexplosion"
},
"heavy_bowgun": {
"counter_charger": "Konter-Aufladen",
"overheat": "Überhitzt",
"rising_moon": "Aufgehender Mond",
"setting_sun": "Untergehende Sonne",
"wyvernsnipe_reload": "Wyvernauge-Nachladen"
},
"hunting_horn": {
"bead_of_resonance": "Perle der Resonanz",
"silkbind_shockwave": "Seidenbinder-Schockwelle",
"sonic_bloom": "Schallblüte"
},
"insect_glaive": {
"all_extracts_mix": "Alle Extrakte",
"orange_extract": "Orangenes Extrakt",
"red_extract": "Rotes Extrakt",
"white_extract": "Weißes Extrakt"
},
"lance": {
"anchor_rage": "Ankerwut",
"spiral_thrust": "Spiralstoß",
"twin_wine": "Zwillingsranke"
},
"light_bowgun": {
"fanning_maneuver": "Fächermanöver",
"wyvernblast_reload": "Wyvernexplosion-Nachladen"
},
"long_sword": {
"harvest_moon": "Erntemond",
"iai_slash": "Iai-Hieb",
"soaring_kick": "Himmelhoher Tritt",
"spirit_gauge": "Elanbalken",
"spirit_gauge_autofill": "Elanbalken-Autoladung"
},
"switch_axe": {
"amped_state": "Verstärkter Zustand",
"axe_heavy_slam": "Axt: Schwerer Niederschlag",
"switch_charger": "Morph-Lader"
},
"sword_and_shield": {
"destroyer_oil": "Zerstöreröl"
}
},
"weapons": {
"bow": "Bogen",
"charge_blade": "Energieklinge",
"dual_blades": "Doppelklingen",
"great_sword": "Großschwert",
"gunlance": "Gewehrlanze",
"hammer": "Hammer",
"heavy_bowgun": "Schw. Bogengewehr",
"hunting_horn": "Jagdhorn",
"insect_glaive": "Insektenglefe ",
"lance": "Lanze",
"light_bowgun": "Lcht. Bogengewehr",
"long_sword": "Langschwert",
"switch_axe": "Morph-Axt",
"sword_and_shield": "Schwert & Schild"
}
}

View File

@@ -64,6 +64,7 @@
"customization_menu": { "customization_menu": {
"UI_font": "UI Font", "UI_font": "UI Font",
"UI_font_notice": "Any changes to the font require script reload!", "UI_font_notice": "Any changes to the font require script reload!",
"abnormal_statuses": "Abnormal Statuses",
"activation_count": "Activation Count", "activation_count": "Activation Count",
"affinity_label": "Affinity Label", "affinity_label": "Affinity Label",
"ailment_buildups": "Ailment Buildups", "ailment_buildups": "Ailment Buildups",
@@ -126,6 +127,7 @@
"damage_meter_UI": "Damage Meter UI", "damage_meter_UI": "Damage Meter UI",
"damage_percentage_label": "Damage Percentage Label", "damage_percentage_label": "Damage Percentage Label",
"damage_value_label": "Damage Value Label", "damage_value_label": "Damage Value Label",
"dango_skills": "Dango Skills",
"debug": "Debug", "debug": "Debug",
"default_state": "Default State", "default_state": "Default State",
"defense_label": "Defense Label", "defense_label": "Defense Label",
@@ -139,12 +141,14 @@
"duration": "Duration", "duration": "Duration",
"dynamic_positioning": "Dynamic Positioning", "dynamic_positioning": "Dynamic Positioning",
"dynamically_positioned": "Dynamically Positioned", "dynamically_positioned": "Dynamically Positioned",
"effect_level": "Effect Level",
"element_2_label": "Element 2 Label", "element_2_label": "Element 2 Label",
"element_label": "Element Label", "element_label": "Element Label",
"enable_for": "Enable for", "enable_for": "Enable for",
"enabled": "Enabled", "enabled": "Enabled",
"endemic_life": "Endemic Life", "endemic_life": "Endemic Life",
"endemic_life_UI": "Endemic Life UI", "endemic_life_UI": "Endemic Life UI",
"endemic_life_buffs": "Endemic Life Buffs",
"everything_seems_to_be_ok": "Everything seems to be OK!", "everything_seems_to_be_ok": "Everything seems to be OK!",
"family": "Family", "family": "Family",
"farthest": "Farthest", "farthest": "Farthest",
@@ -161,6 +165,7 @@
"global_position_modifier": "Global Position Modifier", "global_position_modifier": "Global Position Modifier",
"global_scale_modifier": "Global Scale Modifier", "global_scale_modifier": "Global Scale Modifier",
"global_settings": "Global Settings", "global_settings": "Global Settings",
"head_tracking": "Head Tracking",
"health": "Health", "health": "Health",
"health_anomaly_filter": "Health + Anomaly Core", "health_anomaly_filter": "Health + Anomaly Core",
"health_break_anomaly_filter": "Health + Break + Anomaly Core", "health_break_anomaly_filter": "Health + Break + Anomaly Core",
@@ -208,9 +213,11 @@
"in_lobby": "In Lobby", "in_lobby": "In Lobby",
"in_training_area": "In Training Area", "in_training_area": "In Training Area",
"include": "Include", "include": "Include",
"infinite_buffs_location": "Infinite Buffs Location",
"inside": "Inside", "inside": "Inside",
"installations": "Installations", "installations": "Installations",
"italic": "Italic", "italic": "Italic",
"item_buffs": "Item Buffs",
"join_time": "Join Time", "join_time": "Join Time",
"killcam": "Killcam", "killcam": "Killcam",
"kunai": "Kunai", "kunai": "Kunai",
@@ -234,8 +241,10 @@
"max_monster_updates_per_tick": "Max Monster Updates per Tick", "max_monster_updates_per_tick": "Max Monster Updates per Tick",
"max_value": "Max Value", "max_value": "Max Value",
"me": "Me", "me": "Me",
"melody_effects": "Melody Effects",
"menu_font": "Menu Font", "menu_font": "Menu Font",
"menu_font_change_disclaimer": "Changing Language and Menu Font Size several times will cause a crash!", "menu_font_change_disclaimer": "Changing Language and Menu Font Size several times will cause a crash!",
"misc_buffs": "Misc Buffs",
"mod_name": "MHR Overlay", "mod_name": "MHR Overlay",
"mode": "Mode", "mode": "Mode",
"modifiers": "Modifiers", "modifiers": "Modifiers",
@@ -261,6 +270,7 @@
"other": "Other", "other": "Other",
"other_player_otomos": "Other Player Buddies", "other_player_otomos": "Other Player Buddies",
"other_players": "Other Players", "other_players": "Other Players",
"otomo_moves": "Buddy Moves",
"otomos": "Buddies", "otomos": "Buddies",
"outline": "Outline", "outline": "Outline",
"outside": "Outside", "outside": "Outside",
@@ -284,6 +294,7 @@
"quest_start_animation": "Quest Start Animation", "quest_start_animation": "Quest Start Animation",
"quest_time": "Quest Time", "quest_time": "Quest Time",
"rage": "Rage", "rage": "Rage",
"rampage_skills": "Rampage Skills",
"reframework_outdated": "Installed REFramework version is outdated. Please, update. Otherwise, MHR Overlay won't work correctly.", "reframework_outdated": "Installed REFramework version is outdated. Please, update. Otherwise, MHR Overlay won't work correctly.",
"relative_offset": "Relative Offset", "relative_offset": "Relative Offset",
"rename": "Rename", "rename": "Rename",
@@ -306,6 +317,7 @@
"show_other_player_otomos_separately": "Show Other Player Buddies separately", "show_other_player_otomos_separately": "Show Other Player Buddies separately",
"show_servant_otomos_separately": "Show Follower Buddies separately", "show_servant_otomos_separately": "Show Follower Buddies separately",
"size": "Size", "size": "Size",
"skills": "Skills",
"small_monster_UI": "Small Monster UI", "small_monster_UI": "Small Monster UI",
"small_monsters": "Small Monsters", "small_monsters": "Small Monsters",
"sorting": "Sorting", "sorting": "Sorting",
@@ -328,6 +340,7 @@
"time_label": "Time Label", "time_label": "Time Label",
"time_limit": "Time Limit (seconds)", "time_limit": "Time Limit (seconds)",
"timer": "Timer", "timer": "Timer",
"timer_delays": "Timer Delays",
"timer_label": "Timer Label", "timer_label": "Timer Label",
"top_buildup": "Top Buildup", "top_buildup": "Top Buildup",
"top_damage": "Top Damage", "top_damage": "Top Damage",
@@ -350,6 +363,14 @@
"tracked_damage_types": "Tracked Damage Types", "tracked_damage_types": "Tracked Damage Types",
"tracked_monster_types": "Tracked Monster Types", "tracked_monster_types": "Tracked Monster Types",
"type": "Type", "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", "use_d2d_if_available": "Use Direct2D if available",
"value": "Value", "value": "Value",
"value_label": "Value Label", "value_label": "Value Label",
@@ -357,6 +378,7 @@
"viewport_offset": "Viewport Offset", "viewport_offset": "Viewport Offset",
"visible": "Visible", "visible": "Visible",
"water_resistance_label": "Water Resistance Label", "water_resistance_label": "Water Resistance Label",
"weapon_skills": "Weapon Skills",
"width": "Width", "width": "Width",
"world_offset": "World Offset", "world_offset": "World Offset",
"wyvern_riding": "Wyvern Riding", "wyvern_riding": "Wyvern Riding",
@@ -365,15 +387,88 @@
"z": "Z" "z": "Z"
}, },
"dango_skills": { "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": { "misc_buffs": {
"attack_up": "Attack Up", "attack_up": "Attack Up",
"defense_up": "Defense Up", "defense_up": "Defense Up",
"immunity": "Immunity", "immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down" "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": { "parts": {
"abdomen": "Abdomen", "abdomen": "Abdomen",
"amatsu_unknown": "?", "amatsu_unknown": "?",
@@ -443,11 +538,49 @@
"wingclaws": "Wingclaws", "wingclaws": "Wingclaws",
"wings": "Wings" "wings": "Wings"
}, },
"rampage_skills": {
"chameleos_soul": "Chameleos Soul",
"kushala_daora_soul": "Kushala Daora Soul"
},
"skills": { "skills": {
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Atk Up", "adrenaline_rush": "Adrenaline Rush",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res Up", "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_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": { "stats": {
"affinity": "Affinity", "affinity": "Affinity",
@@ -466,29 +599,102 @@
"water_resistance": "Water Res" "water_resistance": "Water Res"
}, },
"unicode_glyph_ranges": [ "unicode_glyph_ranges": [
32,
255,
256,
591,
1024,
1327,
7680,
7935,
8192,
8303,
65280,
65519,
0 0
], ],
"weapon_skills": { "weapon_skills": {
"all_extracts_mix": "All Extracts Mix", "bow": {
"amped_state": "Amped State",
"arc_shot_affinity": "Arc Shot: Affinity", "arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace", "arc_shot_brace": "Arc Shot: Brace",
"archdemon_mode": "Archdemon Mode", "bolt_boost": "Bolt Boost",
"axe_heavy_slam": "Axe: Heavy Slam", "herculean_draw": "Herculean Draw"
},
"charge_blade": {
"element_boost": "Element Boost", "element_boost": "Element Boost",
"herculean_draw": "Herculean Draw", "sword_boost_mode": "Sword Boost Mode"
"ironshine_silk": "Ironshine Silk", },
"orange_extract": "Orange Extract", "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", "overheat": "Overheat",
"power_sheathe": "Power Sheathe", "rising_moon": "Rising Moon",
"red_extract": "Red Extract", "setting_sun": "Setting Sun",
"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" "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

@@ -0,0 +1,700 @@
{
"UI": {
"HP": "PS:",
"buildup": "Incremento:",
"gold": "Dorado",
"lv": "",
"mini": "Mini",
"otomo": "Camarada",
"part_anomaly_core": "Núcleo de anomalías",
"part_break": "Ruptura",
"part_sever": "Corte",
"player": "Jugador",
"rage": "Rabia:",
"servant": "Seguidor",
"silver": "Plateado",
"stamina": "Resistencia:",
"total_buildup": "Incremento total",
"total_damage": "Daño total"
},
"ailments": {
"blast": "Explosión",
"blastblight": "Rocío explosivo",
"bleeding": "Sangrado",
"bloodblight": "Plaga sangrienta",
"deadly_poison": "Veneno mortal",
"defense_down": "Defensa baja",
"dragonblight": "Calamidad de dragón",
"dung_bomb": "Bomba de estiércol",
"engulfed": "Engullido",
"exhaust": "Desgaste",
"fall_otomo_trap": "Trampa de caída de camarada",
"fall_trap": "Trampa de caída",
"falling_asleep": "Quedarse dormido",
"fireblight": "Fuego bárbaro",
"flash": "Destello",
"frenzy": "Frenesí",
"frenzy_infection": "Infección frenética",
"frenzy_overcome": "Frenesí superado",
"frostblight": "Helada",
"hellfireblight": "Fuego infernal",
"iceblight": "Helada glacial",
"leeched": "Drenado",
"major_bubbleblight": "Gran plaga de burbujas",
"minor_bubbleblight": "Menor plaga de burbujas",
"muck": "Lodo",
"paralysis": "Parálisis",
"poison": "Veneno",
"quick_sand": "Arenas movedizas",
"resistance_down": "Resistencia baja",
"ride": "Montar Wyvern",
"roar": "Rugido",
"shock_otomo_trap": "Trampa de descarga de camarada",
"shock_trap": "Trampa de descarga",
"sleep": "Sueño",
"steel_fang": "Colmillo de acero",
"stench": "Hedor",
"stun": "Aturdimiento",
"thunderblight": "Trueno relámpago",
"tranq_bomb": "Bomba tranquilizante",
"tremor": "Temblor",
"waterblight": "Podredumbre por agua",
"webbed": "Atrapado en telaraña"
},
"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",
"ailment_name": "Ailment Name",
"ailment_name_label": "Ailment Name Label",
"ailment_spacing": "Ailment Spacing",
"ailments": "Ailments",
"all_UI": "All UI",
"anchor": "Anchor",
"anomaly_cores": "Anomaly Cores",
"anomaly_filter": "Anomaly Core",
"anomaly_health": "Anomaly Core Health",
"anomaly_health_percentage": "Anomaly Core Health Percentage",
"apply": "Apply",
"assign_new_key": "Assign new key",
"attack_label": "Attack Label",
"auto_highlight": "Auto-highlight",
"background": "Background",
"bar": "Bar",
"blast": "Blast",
"body_parts": "Body Parts",
"bold": "Bold",
"bombs": "Bombs",
"bottom_left": "Bottom-Left",
"bottom_right": "Bottom-Right",
"bottom_to_top": "Bottom to Top",
"break_anomaly_filter": "Break + Anomaly Core",
"break_count": "Break Count",
"break_filter": "Break",
"break_health": "Break Health",
"break_health_percentage": "Break Health Percentage",
"break_max_count": "Break Max Count",
"break_sever_anomaly_filter": "Break + Sever + Anomaly Core",
"break_sever_filter": "Break + Sever",
"buff_UI": "Buff UI",
"buildup": "Buildup",
"buildup_bar": "Buildup Bar",
"buildup_bars_are_relative_to": "Buildup Bars are relative to",
"buildup_percentage": "Buildup Percentage",
"buildup_percentage_label": "Buildup Percentage Label",
"buildup_value_label": "Buildup Value Label",
"capture_line": "Capture Line",
"cart_count": "Cart Count",
"cart_count_label": "Cart Count Label",
"center": "Center",
"closest": "Closest",
"color": "Color",
"colors": "Colors",
"config": "Config",
"creature_name_label": "Creature Name Label",
"crown": "Crown",
"crown_thresholds": "Crown Thresholds",
"current_state": "Current State",
"current_time": "Current Time",
"current_value": "Current Value",
"cutscene": "Cutscene",
"damage": "Damage",
"damage_bar": "Damage Bar",
"damage_bars_are_relative_to": "Damage Bars are relative to",
"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",
"delete": "Delete",
"distance": "Distance",
"dps": "DPS",
"dps_label": "DPS Label",
"dps_mode": "DPS Mode",
"dragon_resistance_label": "Dragon Resistance Label",
"duplicate": "Duplicate",
"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",
"fight_time": "Fight Time",
"fill_direction": "Fill Direction",
"filter": "Filter",
"filter_mode": "Filter Mode",
"fire_resistance_label": "Fire Resistance Label",
"first": "First",
"first_hit": "First Hit",
"flinch_count": "Flinch Count",
"foreground": "Foreground",
"freeze_dps_on_quest_end": "Freeze DPS on Quest End",
"global_position_modifier": "Global Position Modifier",
"global_scale_modifier": "Global Scale Modifier",
"global_settings": "Global Settings",
"head_tracking": "Head Tracking",
"health": "Health",
"health_anomaly_filter": "Health + Anomaly Core",
"health_break_anomaly_filter": "Health + Break + Anomaly Core",
"health_break_filter": "Health + Break",
"health_break_sever_anomaly_filter": "Health + Break + Sever + Anomaly Core",
"health_break_sever_filter": "Health + Break + Sever",
"health_filter": "Health",
"health_label": "Health Label",
"health_percentage": "Health Percentage",
"health_sever_anomaly_filter": "Health + Sever + Anomaly Core",
"health_sever_filter": "Health + Sever",
"height": "Height",
"hide_ailments_with_zero_buildup": "Hide Ailments when Buildup is 0",
"hide_all_active_ailments": "Hide All Active Ailments",
"hide_all_inactive_ailments": "Hide All Inactive Ailments",
"hide_bar_for_infinite_buffs": "Hide Bar for infinite Buffs",
"hide_dead_or_captured": "Hide Dead or Captured",
"hide_disabled_ailments": "Hide Disabled Ailments by Game",
"hide_inactive_ailments_with_no_buildup_support": "Hide Inactive Ailments with no Buildup Support",
"hide_inactive_creatures": "Hide Inactive Creatures",
"hide_module_if_total_damage_is_zero": "Hide Module if Total Damage is 0",
"hide_myself": "Hide Myself",
"hide_other_players": "Hide Other Players",
"hide_player_if_player_damage_is_zero": "Hide Player if Player Damage is 0",
"hide_servants": "Hide Followers",
"hide_timer_for_infinite_buffs": "Hide Timer for infinite Buffs",
"hide_total_damage": "Hide Total Damage",
"hide_total_if_total_damage_is_zero": "Hide Total if Total Damage is 0",
"hide_undamaged_parts": "Hide Undamaged Parts",
"highest_health": "Highest Health",
"highest_health_percentage": "Highest Health Percentage",
"highlighted": "Highlighted",
"highlighted_bar": "Highlighted Bar",
"highlighted_buildup_bar": "Highlighted Buildup Bar",
"highlighted_damage_bar": "Highlighted Damage Bar",
"highlighted_targeted": "Highlighted (targeted)",
"history": "History",
"history_size": "History Size",
"horizontal": "Horizontal",
"hotkeys": "Hotkeys",
"hunter_rank": "Hunter Rank",
"hunter_rank_label": "Hunter Rank Label",
"ice_resistance_label": "Ice Resistance Label",
"id": "ID",
"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",
"language": "Language",
"large_monster_UI": "Large Monster UI",
"large_monster_dynamic_UI": "Large Monster Dynamic UI",
"large_monster_highlighted_UI": "Large Monster Highlighted UI",
"large_monster_static_UI": "Large Monster Static UI",
"large_monsters": "Large Monsters",
"last": "Last",
"left_to_right": "Left to Right",
"level": "Level",
"level_label": "Level Label",
"loading_quest": "Loading Quest",
"loss_health": "Sever Health",
"loss_health_percentage": "Sever Health Percentage",
"lowest_health": "Lowest Health",
"lowest_health_percentage": "Lowest Health Percentage",
"master_rank": "Master Rank",
"max_distance": "Max Distance",
"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",
"module_visibility_based_on_game_state": "Module Visibility based on Game State",
"modules": "Modules",
"monster_can_be_captured": "Monster can be captured",
"monster_id": "Monster ID",
"monster_name": "Monster Name",
"monster_name_label": "Monster Name Label",
"monsters": "Monsters",
"my_damage_bar_location": "My Damage Bar Location",
"my_otomos": "My Buddies",
"myself": "Myself",
"name": "Name",
"name_label": "Name Label",
"new": "New",
"none": "None",
"normal": "Normal",
"offset": "Offset",
"offset_is_relative_to_parts": "Offset is Relative to Parts",
"opacity_falloff": "Opacity Falloff",
"orientation": "Orientation",
"other": "Other",
"other_player_otomos": "Other Player Buddies",
"other_players": "Other Players",
"otomo_moves": "Buddy Moves",
"otomos": "Buddies",
"outline": "Outline",
"outside": "Outside",
"part_health": "Part Health",
"part_name": "Part Name",
"part_name_label": "Part Name Label",
"percentage_label": "Percentage Label",
"performance": "Performance",
"player_name_label": "Player Name Label",
"player_name_size_limit": "Player Name Size Limit",
"player_spacing": "Player Spacing",
"players": "Players",
"playing_quest": "Playing Quest",
"poison": "Poison",
"position": "Position",
"press_any_key": "Press any key...",
"prioritize_large_monsters": "Large Monsters on High Priority",
"quest_end_animation": "Quest End Animation",
"quest_end_screen": "Quest End Screen",
"quest_end_timer": "Quest End Timer",
"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",
"render_highlighted_monster": "Render Highlighted Monster",
"render_inactive_anomaly_cores": "Render Inactive Anomaly Cores",
"render_not_highlighted_monsters": "Render Not Highlighted Monsters",
"renderer": "Renderer",
"reset": "Reset",
"reversed_order": "Reversed Order",
"reward_screen": "Reward Screen",
"right_alignment_shift": "Right Alignment Shift",
"right_to_left": "Right to Left",
"servant_otomos": "Servant Buddies",
"servants": "Followers",
"settings": "Settings",
"sever_anomaly_filter": "Sever + Anomaly Core",
"sever_filter": "Sever",
"shadow": "Shadow",
"show_my_otomos_separately": "Show My Buddies separately",
"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",
"spacing": "Spacing",
"stamina": "Stamina",
"stamina_label": "Stamina Label",
"static_orientation": "Static Orientation",
"static_position": "Static Position",
"static_sorting": "Static Sorting",
"static_spacing": "Static Spacing",
"statically_positioned": "Statically Positioned",
"stats_UI": "Stats UI",
"status": "Status",
"style": "Style",
"summary_screen": "Summary Screen",
"text_label": "Text Label",
"thickness": "Thickness",
"thunder_resistance_label": "Thunder Resistance Label",
"time_UI": "Time UI",
"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",
"top_dps": "Top DPS",
"top_left": "Top-Left",
"top_right": "Top-Right",
"top_to_bottom": "Top to Bottom",
"total": "Total",
"total_buildup": "Total Buildup",
"total_buildup_label": "Total Buildup Label",
"total_buildup_value_label": "Total Buildup Value Label",
"total_cart_count_label": "Total Cart Count Label",
"total_damage": "Total Damage",
"total_damage_label": "Total Damage Label",
"total_damage_location": "Total Damage Bar Location",
"total_damage_offset_is_relative": "Total Damage Offset is Relative",
"total_damage_value_label": "Total Damage Value Label",
"total_dps": "Total DPS",
"total_dps_label": "Total DPS Label",
"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",
"vertical": "Vertical",
"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",
"x": "X",
"y": "Y",
"z": "Z"
},
"dango_skills": {
"dango_adrenaline": "Dango adrenalina",
"dango_booster": "Dango potenciador",
"dango_bulker": "Dango reforzador",
"dango_connector": "Dango conector",
"dango_defender": "Dango defensor",
"dango_flyer": "Dango volador",
"dango_glutton": "Dango glotón",
"dango_hunter": "Dango cazador",
"dango_insurance": "Dango seguro",
"dango_insurance_defense_up": "Dango aumento de defensa",
"super_recovery_dango": "Dango de súper recuperación"
},
"endemic_life": {
"butterflame": "Butterflame",
"clothfly": "Clothfly",
"cutterfly": "Cutterfly",
"gold_wirebug": "Cordóptero dorado",
"peepersects": "Peepersects",
"red_lampsquid": "Lamprea roja",
"ruby_wirebug": "Cordóptero rubí",
"stinkmink": "Mink apestoso",
"yellow_lampsquid": "Lamprea amarilla"
},
"font_name": "NotoSans-Bold.otf",
"item_buffs": {
"adamant_seed": "Semilla adamantina",
"armor_ammo": "Munición de armadura",
"armorskin": "Piel de armadura",
"dash_juice": "Jugo de energía",
"demon_ammo": "Munición demoníaca",
"demon_powder": "Polvo demoníaco",
"demondrug": "Droga demoníaca",
"gourmet_fish": "Pez gourmet",
"hardshell_powder": "Carcasa rígida en polvo",
"immunizer": "Inmunizador",
"mega_armorskin": "Mega piel de armadura",
"mega_demondrug": "Mega droga demoníaca",
"might_seed": "Semilla de poder"
},
"melody_effects": {
"affinity_up": "Aumento de afinidad",
"attack_and_affinity_up": "Aumento de ataque y afinidad",
"attack_and_defense_up": "Aumento de ataque y defensa",
"attack_up": "Aumento de ataque",
"blight_negated": "Plaga neutralizada",
"defense_up": "Aumento de defensa",
"divine_protection": "Protección divina",
"earplugs_l": "Orejeras (L)",
"earplugs_s": "Orejeras (S)",
"elemental_attack_boost": "Aumento de ataque elemental",
"environment_damage_negated": "Daño ambiental neutralizado",
"health_recovery_l": "Recuperación de salud (L)",
"health_recovery_s": "Recuperación de salud (S)",
"health_recovery_s_antidote": "Recuperación de salud (S) + Antídoto",
"health_regeneration": "Regeneración de salud",
"infernal_melody": "Melodía infernal",
"knockbacks_negated": "Retroceso anulado",
"self_improvement": "Auto-mejora",
"sharpness_extension": "Extensión de afilado",
"sharpness_loss_reduced": "Reducción de pérdida de afilado",
"sharpness_regeneration": "Regeneración de afilado",
"sonic_barrier": "Barrera sónica",
"sonic_wave": "Onda sónica",
"stamina_recovery_up": "Recuperación de resistencia aumentada",
"stamina_use_reduced": "Reducción de uso de resistencia",
"stun_negated": "Aturdimiento anulado",
"tremors_negated": "Temblores anulados",
"wind_pressure_negated": "Presión del viento anulada"
},
"misc_buffs": {
"attack_up": "Aumento de ataque",
"defense_up": "Aumento de defensa",
"immunity": "Inmunidad",
"natural_healing_up": "Aumento de curación natural",
"stamina_use_down": "Reducción de uso de resistencia"
},
"otomo_moves": {
"go_fight_win": "Ve, lucha, gana",
"power_drum": "Tambor de potencia",
"rousing_roar": "Rugido entusiasta",
"vase_of_vitality": "Jarrón de vitalidad"
},
"parts": {
"abdomen": "Abdomen",
"amatsu_unknown": "?",
"antenna": "Antena",
"arms": "Brazos",
"arms_mud": "Brazos (Lodo)",
"back": "Espalda",
"back_windsac": "Espalda (Saco de viento)",
"body": "Cuerpo",
"body_mud": "Cuerpo (Lodo)",
"carapace": "Caparazón",
"chest": "Pecho",
"chest_windsac": "Pecho (Saco de viento)",
"claw": "Garra",
"crest": "Blasón",
"dorsal_fin": "Aleta dorsal",
"foreleg": "Pata delantera",
"forelegs": "Patas delanteras",
"head": "Cabeza",
"head_mud": "Cabeza (Lodo)",
"hind_leg": "Pata trasera",
"hind_legs": "Patas traseras",
"large_mudbulb": "Bulbo grande de barro",
"left_arm": "Brazo izquierdo",
"left_arm_ice": "Brazo izquierdo (Hielo)",
"left_claw": "Garra izquierda",
"left_cutwing": "Ala cortada izquierda",
"left_foreleg": "Pata delantera izquierda",
"left_hind_leg": "Pata trasera izquierda",
"left_leg": "Pierna izquierda",
"left_leg_mud": "Pierna izquierda (Lodo)",
"left_legs": "Piernas izquierdas",
"left_wing": "Ala izquierda",
"left_wingclaw": "Garra alada izquierda",
"legs": "Piernas",
"lower_back": "Parte baja de la espalda",
"lower_body": "Parte inferior del cuerpo",
"mane": "Melena",
"mudbulb": "Bulbo de barro",
"neck": "Cuello",
"rear": "Parte trasera",
"right_arm": "Brazo derecho",
"right_arm_ice": "Brazo derecho (Hielo)",
"right_claw": "Garra derecha",
"right_cutwing": "Ala cortada derecha",
"right_foreleg": "Pata delantera derecha",
"right_hind_leg": "Pata trasera derecha",
"right_leg": "Pierna derecha",
"right_leg_mud": "Pierna derecha (Lodo)",
"right_legs": "Piernas derechas",
"right_wing": "Ala derecha",
"right_wingclaw": "Garra alada derecha",
"rock": "Roca",
"shell": "Caparazón",
"spinning": "Barrido",
"tail": "Cola",
"tail_mud": "Cola (Lodo)",
"tail_tip": "Punta de la cola",
"tail_windsac": "Cola (Saco de viento)",
"thundersacs": "Saco de truenos",
"torso": "Torso",
"torso_mud": "Torso (Lodo)",
"unknown": "?",
"upper_back": "Parte superior de la espalda",
"upper_body": "Parte superior del cuerpo",
"wingclaw": "Garra alada",
"wingclaws": "Garras aladas",
"wings": "Alas"
},
"rampage_skills": {
"chameleos_soul": "Alma camaleónica",
"kushala_daora_soul": "Alma de Kushala Daora"
},
"skills": {
"adrenaline_rush": "Subidón de adrenalina",
"affinity_sliding": "Afinidad deslizante",
"agitator": "Agitador",
"berserk": "Desenfrenado",
"bladescale_hone": "Afilador de escamas",
"blood_awakening": "Despertar de sangre",
"bloodlust": "Sed de sangre",
"burst": "Ráfaga",
"coalescence": "Confluencia",
"counterstrike": "Contraataque",
"dereliction": "Desamparo",
"dragon_conversion_elemental_attack_up": "Conversión dracónica: Ataque elemental +",
"dragon_conversion_elemental_res_up": "Conversión dracónica: Res. elemental +",
"dragonheart": "Corazón de dragón",
"embolden": "Envalentonar",
"frenzied_bloodlust": "Sed de sangre frenética",
"furious": "Furia",
"grinder_s": "Afilador (S)",
"heaven_sent": "Enviado celestial",
"hellfire_cloak": "Manto de fuego infernal",
"heroics": " Heroísmo",
"inspiration": "Inspiración",
"intrepid_heart": "Corazón intrépido",
"latent_power": "Poder latente",
"maximum_might": "Poder máximo",
"offensive_guard": "Guardia ofensiva",
"partbreaker": "Rompepiezas",
"peak_performance": "Rendimiento máximo",
"powder_mantle_blue": "Manto de pólvora (azul)",
"powder_mantle_red": "Manto de pólvora (rojo)",
"protective_polish": "Pulido protector",
"resentment": "Resentimiento",
"resuscitate": "Reanimar",
"spiribirds_call": "Canto de pájaro espiritual",
"status_trigger": "Disparador de estado",
"strife": "Conflicto",
"wall_runner": "Corredor de muros",
"wind_mantle": "Manto de viento"
},
"stats": {
"affinity": "Afinidad",
"attack": "Ataque",
"defense": "Defensa",
"dragon": "Dragón",
"dragon_resistance": "Resist. de dragón",
"fire": "Fuego",
"fire_resistance": "Resist. de fuego",
"ice": "Hielo",
"ice_resistance": "Resist. de hielo",
"stamina": "Resistencia",
"thunder": "Trueno",
"thunder_resistance": "Resist. de trueno",
"water": "Agua",
"water_resistance": "Resist. de agua"
},
"unicode_glyph_ranges": [
32,
255,
256,
591,
1024,
1327,
7680,
7935,
8192,
8303,
65280,
65519,
0
],
"weapon_skills": {
"bow": {
"arc_shot_affinity": "Tiro con arco: Afinidad",
"arc_shot_brace": "Tiro con arco: Apoyo",
"bolt_boost": "Impulso de perno",
"herculean_draw": "Reparto hercúleo"
},
"charge_blade": {
"element_boost": "Potenciador de elementos",
"sword_boost_mode": "Modo potenciador de espada"
},
"dual_blades": {
"archdemon_mode": "Modo archidemonio",
"ironshine_silk": "Seda iridiscente"
},
"great_sword": {
"power_sheathe": "Funda protectora"
},
"gunlance": {
"erupting_cannon": "Cañón en erupción",
"ground_splitter": "Divisor de suelo"
},
"hammer": {
"impact_burst": "Explosión de impacto"
},
"heavy_bowgun": {
"counter_charger": "Contraataque",
"overheat": "Sobrecalentamiento",
"rising_moon": "Luna creciente",
"setting_sun": "Puesta de sol",
"wyvernsnipe_reload": "Recarga de Wyvernsnipe"
},
"hunting_horn": {
"bead_of_resonance": "Cuenta de resonancia",
"silkbind_shockwave": "Onda de choque Silkbind",
"sonic_bloom": "Florecimiento sónico"
},
"insect_glaive": {
"all_extracts_mix": "Mezcla de todos los extractos",
"orange_extract": "Extracto naranja",
"red_extract": "Extracto rojo",
"white_extract": "Extracto blanco"
},
"lance": {
"anchor_rage": "Rabia del ancla",
"spiral_thrust": "Empuje en espiral",
"twin_wine": "Vino doble"
},
"light_bowgun": {
"fanning_maneuver": "Maniobra de Fanning",
"wyvernblast_reload": "Recarga de Wyvernblast"
},
"long_sword": {
"harvest_moon": "Luna de cosecha",
"iai_slash": "Tajo Iai",
"soaring_kick": "Patada voladora",
"spirit_gauge": "Nivel de burbuja",
"spirit_gauge_autofill": "Medidor de espíritu autocompletado"
},
"switch_axe": {
"amped_state": "Estado amplificado",
"axe_heavy_slam": "Hacha: Golpe pesado",
"switch_charger": "Cargador conmutable"
},
"sword_and_shield": {
"destroyer_oil": "Aceite destructor"
}
},
"weapons": {
"bow": "Arco",
"charge_blade": "Hacha cargada",
"dual_blades": "Espadas dobles",
"great_sword": "Gran espada",
"gunlance": "Lanza pistola",
"hammer": "Martillo",
"heavy_bowgun": "Ballesta Pesada",
"hunting_horn": "Cornamusa",
"insect_glaive": "Glaive insecto",
"lance": "Lanza",
"light_bowgun": "Ballesta ligera",
"long_sword": "Espada larga",
"switch_axe": "Hacha espada",
"sword_and_shield": "Espada y escudo"
}
}

View File

@@ -3,7 +3,7 @@
"HP": "HP:", "HP": "HP:",
"buildup": "蓄積値:", "buildup": "蓄積値:",
"gold": "金冠", "gold": "金冠",
"lv": "Lv.", "lv": "",
"mini": "小型", "mini": "小型",
"otomo": "Buddy", "otomo": "Buddy",
"part_anomaly_core": "Anomaly Core", "part_anomaly_core": "Anomaly Core",
@@ -22,7 +22,6 @@
"blastblight": "Blastblight", "blastblight": "Blastblight",
"bleeding": "Bleeding", "bleeding": "Bleeding",
"bloodblight": "Bloodblight", "bloodblight": "Bloodblight",
"bubbleblight": "Bubbleblight",
"deadly_poison": "Deadly Poison", "deadly_poison": "Deadly Poison",
"defense_down": "Defense Down", "defense_down": "Defense Down",
"dragonblight": "Dragonblight", "dragonblight": "Dragonblight",
@@ -62,22 +61,10 @@
"waterblight": "水属性やられ", "waterblight": "水属性やられ",
"webbed": "Webbed" "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": { "customization_menu": {
"UI_font": "UI フォント", "UI_font": "UI フォント",
"UI_font_notice": "フォントの変更後はスクリプトリセットを行ってください。", "UI_font_notice": "フォントの変更後はスクリプトリセットを行ってください。",
"abnormal_statuses": "Abnormal Statuses",
"activation_count": "適用までのカウント", "activation_count": "適用までのカウント",
"affinity_label": "Affinity Label", "affinity_label": "Affinity Label",
"ailment_buildups": "状態異常の蓄積値", "ailment_buildups": "状態異常の蓄積値",
@@ -140,6 +127,7 @@
"damage_meter_UI": "ダメージメーターUI", "damage_meter_UI": "ダメージメーターUI",
"damage_percentage_label": "ダメージ割合()ラベル", "damage_percentage_label": "ダメージ割合()ラベル",
"damage_value_label": "ダメージラベル", "damage_value_label": "ダメージラベル",
"dango_skills": "Dango Skills",
"debug": "Debug", "debug": "Debug",
"default_state": "Default State", "default_state": "Default State",
"defense_label": "Defense Label", "defense_label": "Defense Label",
@@ -153,12 +141,14 @@
"duration": "Duration", "duration": "Duration",
"dynamic_positioning": "動的な場所", "dynamic_positioning": "動的な場所",
"dynamically_positioned": "モンスターに追随して表示", "dynamically_positioned": "モンスターに追随して表示",
"effect_level": "Effect Level",
"element_2_label": "Element 2 Label", "element_2_label": "Element 2 Label",
"element_label": "Element Label", "element_label": "Element Label",
"enable_for": "有効にする", "enable_for": "有効にする",
"enabled": "有効", "enabled": "有効",
"endemic_life": "Endemic Life", "endemic_life": "Endemic Life",
"endemic_life_UI": "環境生物UI", "endemic_life_UI": "環境生物UI",
"endemic_life_buffs": "Endemic Life Buffs",
"everything_seems_to_be_ok": "Everything seems to be OK!", "everything_seems_to_be_ok": "Everything seems to be OK!",
"family": "Family", "family": "Family",
"farthest": "Farthest", "farthest": "Farthest",
@@ -175,6 +165,7 @@
"global_position_modifier": "全体的な位置の調整", "global_position_modifier": "全体的な位置の調整",
"global_scale_modifier": "全体的なスケールの調整", "global_scale_modifier": "全体的なスケールの調整",
"global_settings": "全体設定", "global_settings": "全体設定",
"head_tracking": "Head Tracking",
"health": "体力", "health": "体力",
"health_anomaly_filter": "Health + Anomaly Core", "health_anomaly_filter": "Health + Anomaly Core",
"health_break_anomaly_filter": "Health + Break + Anomaly Core", "health_break_anomaly_filter": "Health + Break + Anomaly Core",
@@ -222,9 +213,11 @@
"in_lobby": "In Lobby", "in_lobby": "In Lobby",
"in_training_area": "In Training Area", "in_training_area": "In Training Area",
"include": "含める情報", "include": "含める情報",
"infinite_buffs_location": "Infinite Buffs Location",
"inside": "Inside", "inside": "Inside",
"installations": "Installations", "installations": "Installations",
"italic": "イタリック", "italic": "イタリック",
"item_buffs": "Item Buffs",
"join_time": "参加時間", "join_time": "参加時間",
"killcam": "Killcam", "killcam": "Killcam",
"kunai": "Kunai", "kunai": "Kunai",
@@ -248,8 +241,10 @@
"max_monster_updates_per_tick": "モンスター情報をアップデートする間隔", "max_monster_updates_per_tick": "モンスター情報をアップデートする間隔",
"max_value": "Max Value", "max_value": "Max Value",
"me": "自分", "me": "自分",
"melody_effects": "Melody Effects",
"menu_font": "メニューで使うフォント", "menu_font": "メニューで使うフォント",
"menu_font_change_disclaimer": "言語とメニューのフォントサイズを何度も変更すると、クラッシュが発生します。", "menu_font_change_disclaimer": "言語とメニューのフォントサイズを何度も変更すると、クラッシュが発生します。",
"misc_buffs": "Misc Buffs",
"mod_name": "MHR Overlay", "mod_name": "MHR Overlay",
"mode": "Mode", "mode": "Mode",
"modifiers": "全体的な調整", "modifiers": "全体的な調整",
@@ -275,6 +270,7 @@
"other": "Other", "other": "Other",
"other_player_otomos": "Other Player Buddies", "other_player_otomos": "Other Player Buddies",
"other_players": "他のプレイヤー", "other_players": "他のプレイヤー",
"otomo_moves": "Buddy Moves",
"otomos": "Buddies", "otomos": "Buddies",
"outline": "Outline", "outline": "Outline",
"outside": "Outside", "outside": "Outside",
@@ -298,6 +294,7 @@
"quest_start_animation": "Quest Start Animation", "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.", "reframework_outdated": "Installed REFramework version is outdated. Please, update. Otherwise, MHR Overlay won't work correctly.",
"relative_offset": "相対的な表示位置", "relative_offset": "相対的な表示位置",
"rename": "Rename", "rename": "Rename",
@@ -320,6 +317,7 @@
"show_other_player_otomos_separately": "Show Other Player Buddies separately", "show_other_player_otomos_separately": "Show Other Player Buddies separately",
"show_servant_otomos_separately": "Show Follower Buddies separately", "show_servant_otomos_separately": "Show Follower Buddies separately",
"size": "サイズ", "size": "サイズ",
"skills": "Skills",
"small_monster_UI": "小型モンスターUI", "small_monster_UI": "小型モンスターUI",
"small_monsters": "小型モンスター", "small_monsters": "小型モンスター",
"sorting": "ソート", "sorting": "ソート",
@@ -342,6 +340,7 @@
"time_label": "タイムラベル", "time_label": "タイムラベル",
"time_limit": "タイムリミット(s.)", "time_limit": "タイムリミット(s.)",
"timer": "Timer", "timer": "Timer",
"timer_delays": "Timer Delays",
"timer_label": "タイマーラベル", "timer_label": "タイマーラベル",
"top_buildup": "最高蓄積値", "top_buildup": "最高蓄積値",
"top_damage": "最高ダメージ", "top_damage": "最高ダメージ",
@@ -364,6 +363,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", "use_d2d_if_available": "Use Direct2D if available",
"value": "Value", "value": "Value",
"value_label": "バリューラベル", "value_label": "バリューラベル",
@@ -371,6 +378,7 @@
"viewport_offset": "表示領域からの位置", "viewport_offset": "表示領域からの位置",
"visible": "表示する", "visible": "表示する",
"water_resistance_label": "Water Resistance Label", "water_resistance_label": "Water Resistance Label",
"weapon_skills": "Weapon Skills",
"width": "幅", "width": "幅",
"world_offset": "表示位置", "world_offset": "表示位置",
"wyvern_riding": "Wyvern Riding", "wyvern_riding": "Wyvern Riding",
@@ -379,55 +387,45 @@
"z": "Z" "z": "Z"
}, },
"dango_skills": { "dango_skills": {
"dango_insurance_defense_up": "Dango Insurance Defense Up"
},
"dangos": {
"dango_adrenaline": "Dango Adrenaline", "dango_adrenaline": "Dango Adrenaline",
"dango_bombardier": "Dango Bombardier",
"dango_booster": "Dango Booster", "dango_booster": "Dango Booster",
"dango_bulker": "Dango Bulker", "dango_bulker": "Dango Bulker",
"dango_connector": "Dango Connector", "dango_connector": "Dango Connector",
"dango_defender": "Dango Defender", "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_flyer": "Dango Flyer",
"dango_glutton": "Dango Glutton", "dango_glutton": "Dango Glutton",
"dango_guard": "Dango Guard",
"dango_hunter": "Dango Hunter", "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": "Dango Insurance",
"dango_insurance_defense_up": "Dango Insurance Defense Up", "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" "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", "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": { "melody_effects": {
"affinity_up": "Affinity Up", "affinity_up": "Affinity Up",
"attack_and_affinity_up": "Attack and Affinity Up", "attack_and_affinity_up": "Attack and Affinity Up",
@@ -460,15 +458,16 @@
}, },
"misc_buffs": { "misc_buffs": {
"attack_up": "Attack Up", "attack_up": "Attack Up",
"defense_down": "Defense Down",
"defense_up": "Defense Up", "defense_up": "Defense Up",
"immunity": "Immunity", "immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down" "stamina_use_down": "Stamina Use Down"
}, },
"otomo_moves": { "otomo_moves": {
"go_fight_win": "Go, Fight, Win", "go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum", "power_drum": "Power Drum",
"rousing_roar": "Rousing Roar" "rousing_roar": "Rousing Roar",
"vase_of_vitality": "Vase of Vitality"
}, },
"parts": { "parts": {
"abdomen": "腹部", "abdomen": "腹部",
@@ -539,30 +538,38 @@
"wingclaws": "Wingclaws", "wingclaws": "Wingclaws",
"wings": "翼" "wings": "翼"
}, },
"rampage_skills": {
"chameleos_soul": "Chameleos Soul",
"kushala_daora_soul": "Kushala Daora Soul"
},
"skills": { "skills": {
"adrenaline_rush": "Adrenaline Rush", "adrenaline_rush": "Adrenaline Rush",
"affinity_sliding": "Affinity Sliding", "affinity_sliding": "Affinity Sliding",
"agitator": "Agitator", "agitator": "Agitator",
"berserk": "Berserk",
"bladescale_hone": "Bladescale Hone", "bladescale_hone": "Bladescale Hone",
"blood_awakening": "Blood Awakening",
"bloodlust": "Bloodlust", "bloodlust": "Bloodlust",
"burst": "Burst", "burst": "Burst",
"coalescence": "Coalescence", "coalescence": "Coalescence",
"counterstrike": "Counterstrike", "counterstrike": "Counterstrike",
"dereliction": "Dereliction", "dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Attack Up", "dragon_conversion_elemental_attack_up": "Dragon Conversion: Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res. Up", "dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart", "dragonheart": "Dragonheart",
"embolden": "Embolden",
"frenzied_bloodlust": "Frenzied Bloodlust", "frenzied_bloodlust": "Frenzied Bloodlust",
"furious": "Furious", "furious": "Furious",
"grinder_s": "Grinder (S)", "grinder_s": "Grinder (S)",
"heaven_sent": "Heaven-Sent", "heaven_sent": "Heaven-Sent",
"hellfire_cloak": "Hellfire Cloak", "hellfire_cloak": "Hellfire Cloak",
"heroics": "Heroics", "heroics": "Heroics",
"inspiration": "Inspiration",
"intrepid_heart": "Intrepid Heart", "intrepid_heart": "Intrepid Heart",
"kushala_daora_soul": "Kushala Daora Soul",
"latent_power": "Latent Power", "latent_power": "Latent Power",
"maximum_might": "Maximum Might", "maximum_might": "Maximum Might",
"offensive_guard": "Offensive Guard", "offensive_guard": "Offensive Guard",
"partbreaker": "Partbreaker",
"peak_performance": "Peak Performance", "peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)", "powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)", "powder_mantle_red": "Powder Mantle (Red)",
@@ -571,6 +578,7 @@
"resuscitate": "Resuscitate", "resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call", "spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger", "status_trigger": "Status Trigger",
"strife": "Strife",
"wall_runner": "Wall Runner", "wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle" "wind_mantle": "Wind Mantle"
}, },
@@ -595,56 +603,104 @@
255, 255,
8192, 8192,
8303, 8303,
11904,
12031,
12288, 12288,
12543, 12543,
12784, 12784,
12799, 19903,
19968, 19968,
40879, 40959,
63744,
64255,
65072,
65103,
65280, 65280,
65519, 65519,
0 0
], ],
"weapon_skills": { "weapon_skills": {
"all_extracts_mix": "All Extracts Mix", "bow": {
"amped_state": "Amped State",
"anchor_rage": "Anchor Rage",
"arc_shot_affinity": "Arc Shot: Affinity", "arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace", "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", "bolt_boost": "Bolt Boost",
"counter_charger": "Counter Charger", "herculean_draw": "Herculean Draw"
"destroyer_oil": "Destroyer Oil", },
"charge_blade": {
"element_boost": "Element Boost", "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", "erupting_cannon": "Erupting Cannon",
"fanning_maneuver": "Fannin Maneuver", "ground_splitter": "Ground Splitter"
"ground_splitter": "Ground Splitter", },
"harvest_moon": "Harvest Moon", "hammer": {
"herculean_draw": "Herculean Draw", "impact_burst": "Impact Burst"
"iai_slash": "Iai Slash", },
"impact_burst": "Impact Burst", "heavy_bowgun": {
"ironshine_silk": "Ironshine Silk", "counter_charger": "Counter Charger",
"orange_extract": "O Extract",
"overheat": "Overheat", "overheat": "Overheat",
"power_sheathe": "Power Sheathe",
"red_extract": "Red Extract",
"rising_moon": "Rising Moon", "rising_moon": "Rising Moon",
"setting_sun": "Setting Sun", "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" "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": "누적치:", "buildup": "누적치:",
"gold": "금관", "gold": "금관",
"lv": "Lv.", "lv": "",
"mini": "최소", "mini": "최소",
"otomo": "동반자", "otomo": "동반자",
"part_anomaly_core": "괴이핵", "part_anomaly_core": "괴이핵",
@@ -22,7 +22,6 @@
"blastblight": "Blastblight", "blastblight": "Blastblight",
"bleeding": "Bleeding", "bleeding": "Bleeding",
"bloodblight": "Bloodblight", "bloodblight": "Bloodblight",
"bubbleblight": "Bubbleblight",
"deadly_poison": "Deadly Poison", "deadly_poison": "Deadly Poison",
"defense_down": "Defense Down", "defense_down": "Defense Down",
"dragonblight": "Dragonblight", "dragonblight": "Dragonblight",
@@ -62,22 +61,10 @@
"waterblight": "진흙구리", "waterblight": "진흙구리",
"webbed": "Webbed" "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": { "customization_menu": {
"UI_font": "UI 글꼴", "UI_font": "UI 글꼴",
"UI_font_notice": "글꼴 변경시 스크립트를 리로드 해야합니다!", "UI_font_notice": "글꼴 변경시 스크립트를 리로드 해야합니다!",
"abnormal_statuses": "Abnormal Statuses",
"activation_count": "활성 횟수", "activation_count": "활성 횟수",
"affinity_label": "Affinity Label", "affinity_label": "Affinity Label",
"ailment_buildups": "상태이상 누적치", "ailment_buildups": "상태이상 누적치",
@@ -140,8 +127,8 @@
"damage_meter_UI": "대미지 미터 UI", "damage_meter_UI": "대미지 미터 UI",
"damage_percentage_label": "대미지 비율 정보", "damage_percentage_label": "대미지 비율 정보",
"damage_value_label": "대미지 값 정보", "damage_value_label": "대미지 값 정보",
"dango_skills": "Dango Skills",
"debug": "Debug", "debug": "Debug",
"debug_errors": "Debug Errors",
"default_state": "기본 상태", "default_state": "기본 상태",
"defense_label": "Defense Label", "defense_label": "Defense Label",
"delete": "삭제하기", "delete": "삭제하기",
@@ -154,12 +141,14 @@
"duration": "지속시간", "duration": "지속시간",
"dynamic_positioning": "유동 위치", "dynamic_positioning": "유동 위치",
"dynamically_positioned": "유동 위치 UI", "dynamically_positioned": "유동 위치 UI",
"effect_level": "Effect Level",
"element_2_label": "Element 2 Label", "element_2_label": "Element 2 Label",
"element_label": "Element Label", "element_label": "Element Label",
"enable_for": "표시 대상", "enable_for": "표시 대상",
"enabled": "사용함", "enabled": "사용함",
"endemic_life": "환경생물", "endemic_life": "환경생물",
"endemic_life_UI": "환경생물 UI", "endemic_life_UI": "환경생물 UI",
"endemic_life_buffs": "Endemic Life Buffs",
"everything_seems_to_be_ok": "Everything seems to be OK!", "everything_seems_to_be_ok": "Everything seems to be OK!",
"family": "글꼴", "family": "글꼴",
"farthest": "가장 멀리있는", "farthest": "가장 멀리있는",
@@ -176,6 +165,7 @@
"global_position_modifier": "전역 위치 배율", "global_position_modifier": "전역 위치 배율",
"global_scale_modifier": "전역 크기 배율", "global_scale_modifier": "전역 크기 배율",
"global_settings": "전역 설정", "global_settings": "전역 설정",
"head_tracking": "Head Tracking",
"health": "체력", "health": "체력",
"health_anomaly_filter": "체력 + 괴이핵", "health_anomaly_filter": "체력 + 괴이핵",
"health_break_anomaly_filter": "체력 + 파괴 + 괴이핵", "health_break_anomaly_filter": "체력 + 파괴 + 괴이핵",
@@ -223,9 +213,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": "쿠나이",
@@ -249,8 +241,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": "언어 및 메뉴 글꼴 크기를 여러 번 변경하면 비정상 종료가 될 수 있습니다!", "menu_font_change_disclaimer": "언어 및 메뉴 글꼴 크기를 여러 번 변경하면 비정상 종료가 될 수 있습니다!",
"misc_buffs": "Misc Buffs",
"mod_name": "MHR Overlay", "mod_name": "MHR Overlay",
"mode": "모드", "mode": "모드",
"modifiers": "설정 배율", "modifiers": "설정 배율",
@@ -276,6 +270,7 @@
"other": "기타", "other": "기타",
"other_player_otomos": "다른 플레이어 동반자", "other_player_otomos": "다른 플레이어 동반자",
"other_players": "다른 헌터", "other_players": "다른 헌터",
"otomo_moves": "Buddy Moves",
"otomos": "동반자", "otomos": "동반자",
"outline": "외곽선", "outline": "외곽선",
"outside": "외부", "outside": "외부",
@@ -299,6 +294,7 @@
"quest_start_animation": "퀘스트 시작 영상", "quest_start_animation": "퀘스트 시작 영상",
"quest_time": "퀘스트 시간", "quest_time": "퀘스트 시간",
"rage": "분노", "rage": "분노",
"rampage_skills": "Rampage Skills",
"reframework_outdated": "설치된 REFramework가 구버전입니다. 업데이트 하지 않으면 MHR Overlay가 제대로 동작하지 않을 수 있습니다.", "reframework_outdated": "설치된 REFramework가 구버전입니다. 업데이트 하지 않으면 MHR Overlay가 제대로 동작하지 않을 수 있습니다.",
"relative_offset": "상대적 위치 오프셋", "relative_offset": "상대적 위치 오프셋",
"rename": "이름 변경", "rename": "이름 변경",
@@ -321,6 +317,7 @@
"show_other_player_otomos_separately": "다른 플레이어의 동반자를 따로", "show_other_player_otomos_separately": "다른 플레이어의 동반자를 따로",
"show_servant_otomos_separately": "맹우의 동반자를 따로", "show_servant_otomos_separately": "맹우의 동반자를 따로",
"size": "크기", "size": "크기",
"skills": "Skills",
"small_monster_UI": "소형 몬스터 UI", "small_monster_UI": "소형 몬스터 UI",
"small_monsters": "소형 몬스터", "small_monsters": "소형 몬스터",
"sorting": "정렬방법", "sorting": "정렬방법",
@@ -343,6 +340,7 @@
"time_label": "시간 정보", "time_label": "시간 정보",
"time_limit": "시간 제한 (단위: 초)", "time_limit": "시간 제한 (단위: 초)",
"timer": "타이머", "timer": "타이머",
"timer_delays": "Timer Delays",
"timer_label": "타이머 정보", "timer_label": "타이머 정보",
"top_buildup": "총 누적치", "top_buildup": "총 누적치",
"top_damage": "최고 대미지", "top_damage": "최고 대미지",
@@ -365,6 +363,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": "가능한 Direct2D를 사용함", "use_d2d_if_available": "가능한 Direct2D를 사용함",
"value": "Value", "value": "Value",
"value_label": "값 정보", "value_label": "값 정보",
@@ -372,6 +378,7 @@
"viewport_offset": "뷰포트 오프셋", "viewport_offset": "뷰포트 오프셋",
"visible": "표시함", "visible": "표시함",
"water_resistance_label": "Water Resistance Label", "water_resistance_label": "Water Resistance Label",
"weapon_skills": "Weapon Skills",
"width": "너비", "width": "너비",
"world_offset": "전역 오프셋", "world_offset": "전역 오프셋",
"wyvern_riding": "용조종", "wyvern_riding": "용조종",
@@ -380,55 +387,45 @@
"z": "Z" "z": "Z"
}, },
"dango_skills": { "dango_skills": {
"dango_insurance_defense_up": "Dango Insurance Defense Up"
},
"dangos": {
"dango_adrenaline": "Dango Adrenaline", "dango_adrenaline": "Dango Adrenaline",
"dango_bombardier": "Dango Bombardier",
"dango_booster": "Dango Booster", "dango_booster": "Dango Booster",
"dango_bulker": "Dango Bulker", "dango_bulker": "Dango Bulker",
"dango_connector": "Dango Connector", "dango_connector": "Dango Connector",
"dango_defender": "Dango Defender", "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_flyer": "Dango Flyer",
"dango_glutton": "Dango Glutton", "dango_glutton": "Dango Glutton",
"dango_guard": "Dango Guard",
"dango_hunter": "Dango Hunter", "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": "Dango Insurance",
"dango_insurance_defense_up": "Dango Insurance Defense Up", "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" "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", "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": { "melody_effects": {
"affinity_up": "Affinity Up", "affinity_up": "Affinity Up",
"attack_and_affinity_up": "Attack and Affinity Up", "attack_and_affinity_up": "Attack and Affinity Up",
@@ -461,15 +458,16 @@
}, },
"misc_buffs": { "misc_buffs": {
"attack_up": "Attack Up", "attack_up": "Attack Up",
"defense_down": "Defense Down",
"defense_up": "Defense Up", "defense_up": "Defense Up",
"immunity": "Immunity", "immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down" "stamina_use_down": "Stamina Use Down"
}, },
"otomo_moves": { "otomo_moves": {
"go_fight_win": "Go, Fight, Win", "go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum", "power_drum": "Power Drum",
"rousing_roar": "Rousing Roar" "rousing_roar": "Rousing Roar",
"vase_of_vitality": "Vase of Vitality"
}, },
"parts": { "parts": {
"abdomen": "배", "abdomen": "배",
@@ -540,30 +538,38 @@
"wingclaws": "날개발톱", "wingclaws": "날개발톱",
"wings": "날개" "wings": "날개"
}, },
"rampage_skills": {
"chameleos_soul": "Chameleos Soul",
"kushala_daora_soul": "Kushala Daora Soul"
},
"skills": { "skills": {
"adrenaline_rush": "Adrenaline Rush", "adrenaline_rush": "Adrenaline Rush",
"affinity_sliding": "Affinity Sliding", "affinity_sliding": "Affinity Sliding",
"agitator": "Agitator", "agitator": "Agitator",
"berserk": "Berserk",
"bladescale_hone": "Bladescale Hone", "bladescale_hone": "Bladescale Hone",
"blood_awakening": "Blood Awakening",
"bloodlust": "Bloodlust", "bloodlust": "Bloodlust",
"burst": "Burst", "burst": "Burst",
"coalescence": "Coalescence", "coalescence": "Coalescence",
"counterstrike": "Counterstrike", "counterstrike": "Counterstrike",
"dereliction": "Dereliction", "dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Attack Up", "dragon_conversion_elemental_attack_up": "Dragon Conversion: Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res. Up", "dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart", "dragonheart": "Dragonheart",
"embolden": "Embolden",
"frenzied_bloodlust": "Frenzied Bloodlust", "frenzied_bloodlust": "Frenzied Bloodlust",
"furious": "Furious", "furious": "Furious",
"grinder_s": "Grinder (S)", "grinder_s": "Grinder (S)",
"heaven_sent": "Heaven-Sent", "heaven_sent": "Heaven-Sent",
"hellfire_cloak": "Hellfire Cloak", "hellfire_cloak": "Hellfire Cloak",
"heroics": "Heroics", "heroics": "Heroics",
"inspiration": "Inspiration",
"intrepid_heart": "Intrepid Heart", "intrepid_heart": "Intrepid Heart",
"kushala_daora_soul": "Kushala Daora Soul",
"latent_power": "Latent Power", "latent_power": "Latent Power",
"maximum_might": "Maximum Might", "maximum_might": "Maximum Might",
"offensive_guard": "Offensive Guard", "offensive_guard": "Offensive Guard",
"partbreaker": "Partbreaker",
"peak_performance": "Peak Performance", "peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)", "powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)", "powder_mantle_red": "Powder Mantle (Red)",
@@ -572,6 +578,7 @@
"resuscitate": "Resuscitate", "resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call", "spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger", "status_trigger": "Status Trigger",
"strife": "Strife",
"wall_runner": "Wall Runner", "wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle" "wind_mantle": "Wind Mantle"
}, },
@@ -598,54 +605,108 @@
4607, 4607,
8192, 8192,
8303, 8303,
11904,
12031,
12288,
12351,
12592, 12592,
12687, 12687,
12800,
19903,
19968,
40959,
44032, 44032,
55215, 55215,
63744,
64255,
65072,
65103,
65280, 65280,
65519, 65519,
0 0
], ],
"weapon_skills": { "weapon_skills": {
"all_extracts_mix": "All Extracts Mix", "bow": {
"amped_state": "Amped State",
"anchor_rage": "Anchor Rage",
"arc_shot_affinity": "Arc Shot: Affinity", "arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace", "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", "bolt_boost": "Bolt Boost",
"counter_charger": "Counter Charger", "herculean_draw": "Herculean Draw"
"destroyer_oil": "Destroyer Oil", },
"charge_blade": {
"element_boost": "Element Boost", "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", "erupting_cannon": "Erupting Cannon",
"fanning_maneuver": "Fannin Maneuver", "ground_splitter": "Ground Splitter"
"ground_splitter": "Ground Splitter", },
"harvest_moon": "Harvest Moon", "hammer": {
"herculean_draw": "Herculean Draw", "impact_burst": "Impact Burst"
"iai_slash": "Iai Slash", },
"impact_burst": "Impact Burst", "heavy_bowgun": {
"ironshine_silk": "Ironshine Silk", "counter_charger": "Counter Charger",
"orange_extract": "O Extract",
"overheat": "Overheat", "overheat": "Overheat",
"power_sheathe": "Power Sheathe",
"red_extract": "Red Extract",
"rising_moon": "Rising Moon", "rising_moon": "Rising Moon",
"setting_sun": "Setting Sun", "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" "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": "Накопление", "buildup": "Накопление",
"gold": "Золото", "gold": "Золото",
"lv": "Lv.", "lv": "",
"mini": "Мини", "mini": "Мини",
"otomo": "Cпутник", "otomo": "Cпутник",
"part_anomaly_core": "Ядро аномалии", "part_anomaly_core": "Ядро аномалии",
@@ -19,67 +19,54 @@
}, },
"ailments": { "ailments": {
"blast": "Взрыв", "blast": "Взрыв",
"blastblight": "Blastblight", "blastblight": "Взрывная порча",
"bleeding": "Bleeding", "bleeding": "Кровотечение",
"bloodblight": "Bloodblight", "bloodblight": "Кровавая порча",
"bubbleblight": "Bubbleblight", "deadly_poison": "Смертельный яд",
"deadly_poison": "Deadly Poison", "defense_down": "Защита снижена",
"defense_down": "Defense Down", "dragonblight": "Драконья Порча",
"dragonblight": "Dragonblight",
"dung_bomb": "Навозная бомба", "dung_bomb": "Навозная бомба",
"engulfed": "Engulfed", "engulfed": "Окутывание",
"exhaust": "Усталость", "exhaust": "Усталость",
"fall_otomo_trap": "Волчья яма спутника", "fall_otomo_trap": "Волчья яма спутника",
"fall_trap": "Волчья яма", "fall_trap": "Волчья яма",
"falling_asleep": "Falling Asleep", "falling_asleep": "Засыпание",
"fireblight": "Огненная порча", "fireblight": "Огненная порча",
"flash": "Оглушение", "flash": "Оглушение",
"frenzy": "Frenzy", "frenzy": "Бешенство",
"frenzy_infection": "Frenzy Infection", "frenzy_infection": "Инфекция бешенства",
"frenzy_overcome": "Frenzy Overcome", "frenzy_overcome": "Преодоление бешенства",
"frostblight": "Frostblight", "frostblight": "Ледяная (морозная) порча",
"hellfireblight": "Hellfireblight", "hellfireblight": "Порча адского пламени",
"iceblight": "Ледяная порча", "iceblight": "Ледяная порча",
"leeched": "Leeched", "leeched": "Истощение",
"major_bubbleblight": "Major Bubbleblight", "major_bubbleblight": "Великая пузырьковая порча",
"minor_bubbleblight": "Minor Bubbleblight", "minor_bubbleblight": "Малая пузырьковая порча",
"muck": "Muck", "muck": "Грязь",
"paralysis": "Паралич", "paralysis": "Паралич",
"poison": "Отравление", "poison": "Отравление",
"quick_sand": "Зыбучий песок", "quick_sand": "Зыбучий песок",
"resistance_down": "Resistance Down", "resistance_down": "Сопротивление снижено",
"ride": "Езда на виверне", "ride": "Езда на виверне",
"roar": "Roar", "roar": "Рык",
"shock_otomo_trap": "Шоковая ловушка спутника", "shock_otomo_trap": "Шоковая ловушка спутника",
"shock_trap": "Шоковая ловушка", "shock_trap": "Шоковая ловушка",
"sleep": "Сон", "sleep": "Сон",
"steel_fang": "Стальной клык", "steel_fang": "Стальной клык",
"stench": "Stench", "stench": "Зловоние",
"stun": "Оглушение", "stun": "Оглушение",
"thunderblight": "Грозовая порча", "thunderblight": "Грозовая порча",
"tranq_bomb": "Снотворная порча", "tranq_bomb": "Снотворная порча",
"tremor": "Tremor", "tremor": "Тряска",
"waterblight": "Водяная порча", "waterblight": "Водяная порча",
"webbed": "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": { "customization_menu": {
"UI_font": "Шрифт интерфейса", "UI_font": "Шрифт интерфейса",
"UI_font_notice": "Любые изменения шрифта требуют перезагрузку скрипта!", "UI_font_notice": "Любые изменения шрифта требуют перезагрузку скрипта!",
"abnormal_statuses": "Аномальные статусы",
"activation_count": "Кол-во активаций", "activation_count": "Кол-во активаций",
"affinity_label": "Affinity Label", "affinity_label": "Метка мастерства",
"ailment_buildups": "Накопление аномального статуса", "ailment_buildups": "Накопление аномального статуса",
"ailment_name": "Название аномального статуса", "ailment_name": "Название аномального статуса",
"ailment_name_label": "Метка названия аномального статуса", "ailment_name_label": "Метка названия аномального статуса",
@@ -93,7 +80,7 @@
"anomaly_health_percentage": "Здоровье ядра аномалии в процентах", "anomaly_health_percentage": "Здоровье ядра аномалии в процентах",
"apply": "Применить", "apply": "Применить",
"assign_new_key": "Привязать клавишу", "assign_new_key": "Привязать клавишу",
"attack_label": "Attack Label", "attack_label": "Метка Атаки",
"auto_highlight": "Автофокус", "auto_highlight": "Автофокус",
"background": "Фон", "background": "Фон",
"bar": "Шкала", "bar": "Шкала",
@@ -112,7 +99,7 @@
"break_max_count": "Максимальное кол-во повреждений", "break_max_count": "Максимальное кол-во повреждений",
"break_sever_anomaly_filter": "Повреждение + Отсечение + Ядро аномалии", "break_sever_anomaly_filter": "Повреждение + Отсечение + Ядро аномалии",
"break_sever_filter": "Повреждение + Отсечение", "break_sever_filter": "Повреждение + Отсечение",
"buff_UI": "Интерфейс баффов", "buff_UI": "Интерфейс эффектов",
"buildup": "Накопление", "buildup": "Накопление",
"buildup_bar": "Шкала накопления", "buildup_bar": "Шкала накопления",
"buildup_bars_are_relative_to": "Шкалы накопления расположены относительно к", "buildup_bars_are_relative_to": "Шкалы накопления расположены относительно к",
@@ -131,7 +118,7 @@
"crown": "Корона", "crown": "Корона",
"crown_thresholds": "Лимиты корон", "crown_thresholds": "Лимиты корон",
"current_state": "Текущее состояние", "current_state": "Текущее состояние",
"current_time": "Current Time", "current_time": "Текущее время",
"current_value": "Текущее значение", "current_value": "Текущее значение",
"cutscene": "Катсцена", "cutscene": "Катсцена",
"damage": "Урон", "damage": "Урон",
@@ -140,34 +127,36 @@
"damage_meter_UI": "Интерфейс модуля урона", "damage_meter_UI": "Интерфейс модуля урона",
"damage_percentage_label": "Метка урона в процентах", "damage_percentage_label": "Метка урона в процентах",
"damage_value_label": "Метка значений урона", "damage_value_label": "Метка значений урона",
"debug": "Debug", "dango_skills": "Навыки данго",
"debug_errors": "Debug Errors", "debug": "Отладка",
"default_state": "Состояние по умолчанию", "default_state": "Состояние по умолчанию",
"defense_label": "Defense Label", "defense_label": "Метка защиты",
"delete": "Удалить", "delete": "Удалить",
"distance": "Расстояние", "distance": "Расстояние",
"dps": "Урон в секунду", "dps": "Урон в секунду",
"dps_label": "Метка урона в секунду", "dps_label": "Метка урона в секунду",
"dps_mode": "Режим урона в секунду", "dps_mode": "Режим урона в секунду",
"dragon_resistance_label": "Dragon Resistance Label", "dragon_resistance_label": "Метка сопротивления дракону",
"duplicate": "Дублировать", "duplicate": "Дублировать",
"duration": "Продолжительность", "duration": "Продолжительность",
"dynamic_positioning": "Динамическое позиционирование", "dynamic_positioning": "Динамическое позиционирование",
"dynamically_positioned": "Рассположенный динамично", "dynamically_positioned": "Рассположенный динамично",
"element_2_label": "Element 2 Label", "effect_level": "Уровень эффекта",
"element_label": "Element Label", "element_2_label": "Метка элемента 2",
"element_label": "Метка элемента",
"enable_for": "Показывать для", "enable_for": "Показывать для",
"enabled": "Включить", "enabled": "Включить",
"endemic_life": "Местная живность", "endemic_life": "Местная живность",
"endemic_life_UI": "Интерфейс местной живности", "endemic_life_UI": "Интерфейс местной живности",
"everything_seems_to_be_ok": "Everything seems to be OK!", "endemic_life_buffs": "Эффекты местной живности",
"everything_seems_to_be_ok": "Кажется, всё в порядке!",
"family": "Семейство", "family": "Семейство",
"farthest": "Самый дальний", "farthest": "Самый дальний",
"fight_time": "Время в бою", "fight_time": "Время в бою",
"fill_direction": "Направление заполнения", "fill_direction": "Направление заполнения",
"filter": "Фильтр", "filter": "Фильтр",
"filter_mode": "Режим Фильтра", "filter_mode": "Режим Фильтра",
"fire_resistance_label": "Fire Resistance Label", "fire_resistance_label": "Метка сопротивления огню",
"first": "Первый", "first": "Первый",
"first_hit": "Первый удар", "first_hit": "Первый удар",
"flinch_count": "Кол-во вздрагиваний", "flinch_count": "Кол-во вздрагиваний",
@@ -176,6 +165,7 @@
"global_position_modifier": "Глобальный модификатор расположения", "global_position_modifier": "Глобальный модификатор расположения",
"global_scale_modifier": "Глобальный модификатор размера", "global_scale_modifier": "Глобальный модификатор размера",
"global_settings": "Общие настройки", "global_settings": "Общие настройки",
"head_tracking": "Отслеживание головы",
"health": "Здоровье", "health": "Здоровье",
"health_anomaly_filter": "Здоровье + Ядро аномалии", "health_anomaly_filter": "Здоровье + Ядро аномалии",
"health_break_anomaly_filter": "Здоровье + Повреждение + Ядро аномалии", "health_break_anomaly_filter": "Здоровье + Повреждение + Ядро аномалии",
@@ -183,7 +173,7 @@
"health_break_sever_anomaly_filter": "Здоровье + Повреждение + Отсечение + Ядро аномалии", "health_break_sever_anomaly_filter": "Здоровье + Повреждение + Отсечение + Ядро аномалии",
"health_break_sever_filter": "Здоровье + Повреждение + Отсечение", "health_break_sever_filter": "Здоровье + Повреждение + Отсечение",
"health_filter": "Здоровье", "health_filter": "Здоровье",
"health_label": "Health Label", "health_label": "Метка здоровья",
"health_percentage": "Здоровье в процентах", "health_percentage": "Здоровье в процентах",
"health_sever_anomaly_filter": "Здоровье + Отсечение + Ядро аномалии", "health_sever_anomaly_filter": "Здоровье + Отсечение + Ядро аномалии",
"health_sever_filter": "Здоровье + Отсечение", "health_sever_filter": "Здоровье + Отсечение",
@@ -191,7 +181,7 @@
"hide_ailments_with_zero_buildup": "Скрыть аномальный статус, если накопление равно 0", "hide_ailments_with_zero_buildup": "Скрыть аномальный статус, если накопление равно 0",
"hide_all_active_ailments": "Скрыть все активные аномальные статусы", "hide_all_active_ailments": "Скрыть все активные аномальные статусы",
"hide_all_inactive_ailments": "Скрыть все неактивные аномальные статусы", "hide_all_inactive_ailments": "Скрыть все неактивные аномальные статусы",
"hide_bar_for_infinite_buffs": "Скрыть шкалу у бесконечных баффов", "hide_bar_for_infinite_buffs": "Скрыть шкалу у бесконечных эффектов",
"hide_dead_or_captured": "Скрыть мёртвых и захваченных монстров", "hide_dead_or_captured": "Скрыть мёртвых и захваченных монстров",
"hide_disabled_ailments": "Скрыть отключенные аномальные статусы", "hide_disabled_ailments": "Скрыть отключенные аномальные статусы",
"hide_inactive_ailments_with_no_buildup_support": "Скрыть неактивные аномальные статусы без поддержки накопления", "hide_inactive_ailments_with_no_buildup_support": "Скрыть неактивные аномальные статусы без поддержки накопления",
@@ -201,7 +191,7 @@
"hide_other_players": "Скрыть остальных игроков", "hide_other_players": "Скрыть остальных игроков",
"hide_player_if_player_damage_is_zero": "Скрыть игрока, если его урон равен 0", "hide_player_if_player_damage_is_zero": "Скрыть игрока, если его урон равен 0",
"hide_servants": "Скрыть последователей", "hide_servants": "Скрыть последователей",
"hide_timer_for_infinite_buffs": "Скрыть таймер у бесконечных баффов", "hide_timer_for_infinite_buffs": "Скрыть таймер у бесконечных эффектов",
"hide_total_damage": "Скрыть общий урон", "hide_total_damage": "Скрыть общий урон",
"hide_total_if_total_damage_is_zero": "Скрыть общий урон, если он равен 0", "hide_total_if_total_damage_is_zero": "Скрыть общий урон, если он равен 0",
"hide_undamaged_parts": "Скрыть неповреждённые части тела", "hide_undamaged_parts": "Скрыть неповреждённые части тела",
@@ -212,20 +202,22 @@
"highlighted_buildup_bar": "Помеченная шкала накопления", "highlighted_buildup_bar": "Помеченная шкала накопления",
"highlighted_damage_bar": "Помеченная шкала урона", "highlighted_damage_bar": "Помеченная шкала урона",
"highlighted_targeted": "Помеченный", "highlighted_targeted": "Помеченный",
"history": "History", "history": "История",
"history_size": "History Size", "history_size": "Размер истории",
"horizontal": "Горизонтально", "horizontal": "Горизонтально",
"hotkeys": "Горячие клавиши", "hotkeys": "Горячие клавиши",
"hunter_rank": "Ранг охотника", "hunter_rank": "Ранг охотника",
"hunter_rank_label": "Метка ранга охотника", "hunter_rank_label": "Метка ранга охотника",
"ice_resistance_label": "Ice Resistance Label", "ice_resistance_label": "Метка сопротивления льду",
"id": "ID", "id": "ID",
"in_lobby": "В лобби", "in_lobby": "В лобби",
"in_training_area": "В тренировочной зоне", "in_training_area": "В тренировочной зоне",
"include": "Элементы", "include": "Элементы",
"infinite_buffs_location": "Позиция бесконечных эффектов",
"inside": "Внутри", "inside": "Внутри",
"installations": "Установки", "installations": "Установки",
"italic": "Курсив", "italic": "Курсив",
"item_buffs": "Эффекты предметов",
"join_time": "Время присоединения", "join_time": "Время присоединения",
"killcam": "Камера смерти", "killcam": "Камера смерти",
"kunai": "Кунаи", "kunai": "Кунаи",
@@ -249,8 +241,10 @@
"max_monster_updates_per_tick": "Макс. кол-во обновлений за тик", "max_monster_updates_per_tick": "Макс. кол-во обновлений за тик",
"max_value": "Максимальное значение", "max_value": "Максимальное значение",
"me": "Я", "me": "Я",
"melody_effects": "Эффекты мелодии",
"menu_font": "Шрифт меню", "menu_font": "Шрифт меню",
"menu_font_change_disclaimer": "Изменение языка и размера шрифта меню несколько раз приведёт к вылету!", "menu_font_change_disclaimer": "Изменение языка и размера шрифта меню несколько раз приведёт к вылету!",
"misc_buffs": "Разные эффекты",
"mod_name": "MHR Overlay", "mod_name": "MHR Overlay",
"mode": "Режим", "mode": "Режим",
"modifiers": "Модификаторы", "modifiers": "Модификаторы",
@@ -276,6 +270,7 @@
"other": "Другое", "other": "Другое",
"other_player_otomos": "Спутники других игроков", "other_player_otomos": "Спутники других игроков",
"other_players": "Другие игроки", "other_players": "Другие игроки",
"otomo_moves": "Навыки спутника",
"otomos": "Спутники", "otomos": "Спутники",
"outline": "Обводка", "outline": "Обводка",
"outside": "Снаружи", "outside": "Снаружи",
@@ -299,6 +294,7 @@
"quest_start_animation": "Анимация начала квеста", "quest_start_animation": "Анимация начала квеста",
"quest_time": "Время квеста", "quest_time": "Время квеста",
"rage": "Ярость", "rage": "Ярость",
"rampage_skills": "Навыки буйства",
"reframework_outdated": "Установленная версия REFramework устарела. Пожалуйста, обновитесь, иначе MHR Overlay будет работать некорректно.", "reframework_outdated": "Установленная версия REFramework устарела. Пожалуйста, обновитесь, иначе MHR Overlay будет работать некорректно.",
"relative_offset": "Относительный сдвиг", "relative_offset": "Относительный сдвиг",
"rename": "Переименовать", "rename": "Переименовать",
@@ -321,28 +317,30 @@
"show_other_player_otomos_separately": "Показывать спутников других игроков отдельно", "show_other_player_otomos_separately": "Показывать спутников других игроков отдельно",
"show_servant_otomos_separately": "Показывать спутников последователей отдельно", "show_servant_otomos_separately": "Показывать спутников последователей отдельно",
"size": "Размер", "size": "Размер",
"skills": "Навыки",
"small_monster_UI": "Интерфейс малых монстров", "small_monster_UI": "Интерфейс малых монстров",
"small_monsters": "Малые монстры", "small_monsters": "Малые монстры",
"sorting": "Сортировка", "sorting": "Сортировка",
"spacing": "Расстояние между элементами", "spacing": "Расстояние между элементами",
"stamina": "Выносливость", "stamina": "Выносливость",
"stamina_label": "Stamina Label", "stamina_label": "Метка выносливости",
"static_orientation": "Статичная ориентация", "static_orientation": "Статичная ориентация",
"static_position": "Статичное расположение", "static_position": "Статичное расположение",
"static_sorting": "Статичная сортировка", "static_sorting": "Статичная сортировка",
"static_spacing": "Статичное расстояние между элементами", "static_spacing": "Статичное расстояние между элементами",
"statically_positioned": "Рассположенный статично", "statically_positioned": "Рассположенный статично",
"stats_UI": "Stats UI", "stats_UI": "Интерфейс статуса",
"status": "Статус", "status": "Статус",
"style": "Стиль", "style": "Стиль",
"summary_screen": "Экран Результатов", "summary_screen": "Экран результатов",
"text_label": "Текстовая метка", "text_label": "Текстовая метка",
"thickness": "Толщина", "thickness": "Толщина",
"thunder_resistance_label": "Thunder Resistance Label", "thunder_resistance_label": "Метка сопротивления грозе",
"time_UI": "Интерфейс времени", "time_UI": "Интерфейс времени",
"time_label": "Метка времени", "time_label": "Метка времени",
"time_limit": "Ограничение по времени (cек.)", "time_limit": "Ограничение по времени (cек.)",
"timer": "Таймер", "timer": "Таймер",
"timer_delays": "Задержка таймеров",
"timer_label": "Метка таймера", "timer_label": "Метка таймера",
"top_buildup": "Наибольшее накопление", "top_buildup": "Наибольшее накопление",
"top_damage": "Наибольший урон", "top_damage": "Наибольший урон",
@@ -365,13 +363,22 @@
"tracked_damage_types": "Отслеживаемые типы урона", "tracked_damage_types": "Отслеживаемые типы урона",
"tracked_monster_types": "Отслеживаемые типы монстров", "tracked_monster_types": "Отслеживаемые типы монстров",
"type": "Тип", "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, если доступен", "use_d2d_if_available": "Использовать Direct2D, если доступен",
"value": "Value", "value": "Значение",
"value_label": "Метка значений", "value_label": "Метка значений",
"vertical": "Вертикально", "vertical": "Вертикально",
"viewport_offset": "Сдвиг в экранном пространстве", "viewport_offset": "Сдвиг в экранном пространстве",
"visible": "Включить", "visible": "Включить",
"water_resistance_label": "Water Resistance Label", "water_resistance_label": "Метка сопротивления воде",
"weapon_skills": "Навыки оружия",
"width": "Ширина", "width": "Ширина",
"world_offset": "Сдвиг в игровом пространстве", "world_offset": "Сдвиг в игровом пространстве",
"wyvern_riding": "Езда на виверне", "wyvern_riding": "Езда на виверне",
@@ -380,96 +387,87 @@
"z": "Z" "z": "Z"
}, },
"dango_skills": { "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": { "endemic_life": {
"dango_adrenaline": "Dango Adrenaline", "butterflame": "Огнебабочка",
"dango_bombardier": "Dango Bombardier", "clothfly": "Тканебабочка",
"dango_booster": "Dango Booster", "cutterfly": "Стрекоза-нож",
"dango_bulker": "Dango Bulker", "gold_wirebug": "Золотой Протожук",
"dango_connector": "Dango Connector", "peepersects": "Глазобабочки",
"dango_defender": "Dango Defender", "red_lampsquid": "Крс. Лампокальм.",
"dango_defender_hi": "Dango Defender (Hi)", "ruby_wirebug": "Рубиновый Протожук",
"dango_deflector": "Dango Deflector", "stinkmink": "Пахучка",
"dango_dragon_res": "Dango Dragon Res", "yellow_lampsquid": "Жлт. Лампокальм."
"dango_dragon_res_hi": "Dango Dragon Res (Hi)", },
"dango_driver": "Dango Driver", "font_name": "NotoSans-Bold.otf",
"dango_feet": "Dango Feet", "item_buffs": {
"dango_fighter": "Dango Fighter", "adamant_seed": "Адамант. зерно",
"dango_fire_res": "Dango Fire Res", "armor_ammo": "Защитные снаряды",
"dango_fire_res_hi": "Dango Fire Res (Hi)", "armorskin": "Бронир. кожа",
"dango_flyer": "Dango Flyer", "dash_juice": "Сок бодрости",
"dango_glutton": "Dango Glutton", "demon_ammo": "Демон. снаряды",
"dango_guard": "Dango Guard", "demon_powder": "Демон. порошок",
"dango_hunter": "Dango Hunter", "demondrug": "Демон. снадобье",
"dango_hurler": "Dango Hurler", "gourmet_fish": "Вкусная рыба",
"dango_ice_res": "Dango Ice Res", "hardshell_powder": "Пор. из скорлупы",
"dango_ice_res_hi": "Dango Ice Res (Hi)", "immunizer": "Иммунатор",
"dango_immunizer": "Dango Immunizer", "mega_armorskin": "Мегабронир. кожа",
"dango_insurance": "Dango Insurance", "mega_demondrug": "Мегадемон. снад.",
"dango_insurance_defense_up": "Dango Insurance Defense Up", "might_seed": "Зер. могущества"
"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"
}, },
"font_name": "NotoSansKR-Bold.otf",
"melody_effects": { "melody_effects": {
"affinity_up": "Affinity Up", "affinity_up": "Усиление мастерства",
"attack_and_affinity_up": "Attack and Affinity Up", "attack_and_affinity_up": "Усиление атаки и мастерства",
"attack_and_defense_up": "Attack and Defense Up", "attack_and_defense_up": "Усиление атаки и защиты",
"attack_up": "Attack Up", "attack_up": "Усиление атаки",
"blight_negated": "Blight Negated", "blight_negated": "Снятие порчи",
"defense_up": "Defense Up", "defense_up": "Усиление защиты",
"divine_protection": "Divine Protection", "divine_protection": "Божественная защита",
"earplugs_l": "Earplugs (L)", "earplugs_l": "Наушники (L)",
"earplugs_s": "Earplugs (S)", "earplugs_s": "Наушники (S)",
"elemental_attack_boost": "Elemental Attack Boost", "elemental_attack_boost": "Усиление атаки стихией",
"environment_damage_negated": "Environment Damage Negated", "environment_damage_negated": "Отмена урона окружением",
"health_recovery_l": "Health Recovery (L)", "health_recovery_l": "Восст. здоровья (L)",
"health_recovery_s": "Health Recovery (S)", "health_recovery_s": "Восст. здоровья (S)",
"health_recovery_s_antidote": "Health Recovery (S) + Antidote", "health_recovery_s_antidote": "Восст. здоровья (S) + по-ядие",
"health_regeneration": "Health Regeneration", "health_regeneration": "Регенерация ",
"infernal_melody": "Infernal Melody", "infernal_melody": "Песня яростного пламени",
"knockbacks_negated": "Knockbacks Negated", "knockbacks_negated": "Нейтрализация сбив. с ног",
"self_improvement": "Self-Improvement", "self_improvement": "Самосовершенствование",
"sharpness_extension": "Sharpness Extension", "sharpness_extension": "Увеличение остроты",
"sharpness_loss_reduced": "Sharpness Loss Reduced", "sharpness_loss_reduced": "Замедление затупления",
"sharpness_regeneration": "Sharpness Regeneration", "sharpness_regeneration": "Регенерация остроты",
"sonic_barrier": "Sonic Barrier", "sonic_barrier": "Звуковой барьер",
"sonic_wave": "Sonic Wave", "sonic_wave": "Звуковая волна",
"stamina_recovery_up": "Stamina Recovery Up", "stamina_recovery_up": "Улучш. восст. выносливости",
"stamina_use_reduced": "Stamina Use Reduced", "stamina_use_reduced": "Усиление выносливости",
"stun_negated": "Stun Negated", "stun_negated": "Нейтрализация оглушения",
"tremors_negated": "Tremors Negated", "tremors_negated": "Нейтрализация тряски",
"wind_pressure_negated": "Wind Pressure Negated" "wind_pressure_negated": "Отмена давления ветра"
}, },
"misc_buffs": { "misc_buffs": {
"attack_up": "Attack Up", "attack_up": "Усиление атаки",
"defense_down": "Defense Down", "defense_up": "Усиление защиты",
"defense_up": "Defense Up", "immunity": "Устойчивость",
"immunity": "Immunity", "natural_healing_up": "Естественное лечение",
"stamina_use_down": "Stamina Use Down" "stamina_use_down": "Уменьшение расхода выносливости"
}, },
"otomo_moves": { "otomo_moves": {
"go_fight_win": "Go, Fight, Win", "go_fight_win": "Сражайся, побеждай",
"power_drum": "Power Drum", "power_drum": "Барабан силы",
"rousing_roar": "Rousing Roar" "rousing_roar": "Воодушевляющий рев",
"vase_of_vitality": "Ваза живучести"
}, },
"parts": { "parts": {
"abdomen": "Брюхо", "abdomen": "Брюхо",
@@ -540,108 +538,169 @@
"wingclaws": "Крыло-коготь", "wingclaws": "Крыло-коготь",
"wings": "Крылья" "wings": "Крылья"
}, },
"rampage_skills": {
"chameleos_soul": "Душа Хамелеоса",
"kushala_daora_soul": "Душа Кушалы Даоры"
},
"skills": { "skills": {
"adrenaline_rush": "Adrenaline Rush", "adrenaline_rush": "Прилив адреналина",
"affinity_sliding": "Affinity Sliding", "affinity_sliding": "Мастерский подкат",
"agitator": "Agitator", "agitator": "Подстрекатель",
"bladescale_hone": "Bladescale Hone", "berserk": "Безумец",
"bloodlust": "Bloodlust", "bladescale_hone": "Острая чешуя",
"burst": "Burst", "blood_awakening": "Пробуждение крови",
"coalescence": "Coalescence", "bloodlust": "Кровожадность",
"counterstrike": "Counterstrike", "burst": "Выброс",
"dereliction": "Dereliction", "coalescence": "Сращивание",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Attack Up", "counterstrike": "Контрудар",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res. Up", "dereliction": "Упущение",
"dragonheart": "Dragonheart", "dragon_conversion_elemental_attack_up": "Преобраз-е дракона: усил. эл. атаки",
"frenzied_bloodlust": "Frenzied Bloodlust", "dragon_conversion_elemental_res_up": "Преобраз-е дракона: усил. сопротивл.",
"furious": "Furious", "dragonheart": "Драконье сердце",
"grinder_s": "Grinder (S)", "embolden": "Воодушевление",
"heaven_sent": "Heaven-Sent", "frenzied_bloodlust": "Буйная кровожадность",
"hellfire_cloak": "Hellfire Cloak", "furious": "Гнев",
"heroics": "Heroics", "grinder_s": "Дробилка (S)",
"intrepid_heart": "Intrepid Heart", "heaven_sent": "Божий посланник",
"kushala_daora_soul": "Kushala Daora Soul", "hellfire_cloak": "Завеса ад. пламени",
"latent_power": "Latent Power", "heroics": "Героизм",
"maximum_might": "Maximum Might", "inspiration": "Вдохновение",
"offensive_guard": "Offensive Guard", "intrepid_heart": "бесстрашное сердце",
"peak_performance": "Peak Performance", "latent_power": "Скрытая энергия",
"powder_mantle_blue": "Powder Mantle (Blue)", "maximum_might": "Макс. могущество",
"powder_mantle_red": "Powder Mantle (Red)", "offensive_guard": "Агрессивная защита",
"protective_polish": "Protective Polish", "partbreaker": "Рассекатель",
"resentment": "Resentment", "peak_performance": "На высоте",
"resuscitate": "Resuscitate", "powder_mantle_blue": "Порошковый покров (синий)",
"spiribirds_call": "Spiribird's Call", "powder_mantle_red": "Порошковый покров (красный)",
"status_trigger": "Status Trigger", "protective_polish": "Защитная полировка",
"wall_runner": "Wall Runner", "resentment": "Презрение",
"wind_mantle": "Wind Mantle" "resuscitate": "Оживление",
"spiribirds_call": "Зов Духоптицы",
"status_trigger": "Смена статуса",
"strife": "Борьба",
"wall_runner": "Бегун по стенам",
"wind_mantle": "Мантия ветра"
}, },
"stats": { "stats": {
"affinity": "Affinity", "affinity": "Мастерство",
"attack": "Attack", "attack": "Атака",
"defense": "Defense", "defense": "Защита",
"dragon": "Dragon", "dragon": "Дракон",
"dragon_resistance": "Dragon Res", "dragon_resistance": "Сопрот. дракону",
"fire": "Fire", "fire": "Огонь",
"fire_resistance": "Fire Res", "fire_resistance": "Сопрот. огню",
"ice": "Ice", "ice": "Лед",
"ice_resistance": "Ice Res", "ice_resistance": "Сопрот. льду",
"stamina": "Stamina", "stamina": "Выносливость",
"thunder": "Thunder", "thunder": "Гроза",
"thunder_resistance": "Thunder Res", "thunder_resistance": "Сопрот. грозе",
"water": "Water", "water": "Вода",
"water_resistance": "Water Res" "water_resistance": "Сопрот. воде"
}, },
"unicode_glyph_ranges": [ "unicode_glyph_ranges": [
32, 32,
255, 255,
256,
383,
1024, 1024,
1241, 1327,
7680,
7935,
8192, 8192,
8303, 8303,
65280, 65280,
65519, 65519,
0,
64255,
65072,
65103,
65280,
65519,
0 0
], ],
"weapon_skills": { "weapon_skills": {
"all_extracts_mix": "All Extracts Mix", "bow": {
"amped_state": "Amped State", "arc_shot_affinity": "Выстрел дугой: мастерство",
"anchor_rage": "Anchor Rage", "arc_shot_brace": "Выстрел дугой: сгруппир.",
"arc_shot_affinity": "Arc Shot: Affinity", "bolt_boost": "Усиление снарядов",
"arc_shot_brace": "Arc Shot: Brace", "herculean_draw": "Натяжение Геркулеса"
"archdemon_mode": "Archdemon Mode", },
"axe_heavy_slam": "Axe: Heavy Slam", "charge_blade": {
"bead_of_resonance": "Bead of Resonance", "element_boost": "Усиление стихии",
"bolt_boost": "Bolt Boost", "sword_boost_mode": "Режим усиления меча"
"counter_charger": "Counter Charger", },
"destroyer_oil": "Destroyer Oil", "dual_blades": {
"element_boost": "Element Boost", "archdemon_mode": "Режим архидемона",
"erupting_cannon": "Erupting Cannon", "ironshine_silk": "Блестящий шелк"
"fanning_maneuver": "Fannin Maneuver", },
"ground_splitter": "Ground Splitter", "great_sword": {
"harvest_moon": "Harvest Moon", "power_sheathe": "Мощное убирание оружия"
"herculean_draw": "Herculean Draw", },
"iai_slash": "Iai Slash", "gunlance": {
"impact_burst": "Impact Burst", "erupting_cannon": "Вулканическая пушка",
"ironshine_silk": "Ironshine Silk", "ground_splitter": "Раскол земли"
"orange_extract": "O Extract", },
"overheat": "Overheat", "hammer": {
"power_sheathe": "Power Sheathe", "impact_burst": "Взрыв от удара"
"red_extract": "Red Extract", },
"rising_moon": "Rising Moon", "heavy_bowgun": {
"setting_sun": "Setting Sun", "counter_charger": "Заряженная контратака",
"shield_charge": "Shield Charge", "overheat": "Перегрев",
"silkbind_shockwave": "Silkbind Shockwave", "rising_moon": "Восходящая луна",
"soaring_kick": "Soaring Kick", "setting_sun": "Заходящее солнце",
"sonic_bloom": "Sonic Bloom", "wyvernsnipe_reload": "Перезарядка меткости виверны"
"spiral_thrust": "Spiral Thrust", },
"spirit_gauge": "Spirit Gauge", "hunting_horn": {
"spirit_gauge_autofill": "Spirit Gauge Autofill", "bead_of_resonance": "Бусина резонанса",
"switch_charger": "Switch Charger", "silkbind_shockwave": "Волна паутины",
"sword_boost_mode": "Sword Boost Mode", "sonic_bloom": "Звуковой цветов"
"sword_charge": "Sword Charge", },
"twin_wine": "Twin Wine", "insect_glaive": {
"white_extract": "White Extract", "all_extracts_mix": "Смесь всех экстрактов",
"wyvernblast_reload": "Wyvernblast Reload", "orange_extract": "Оранжевый экстракт",
"wyvernsnipe_reload": "Wyvernsnipe Reload" "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": "生命:", "HP": "生命:",
"buildup": "积累值:", "buildup": "积累值:",
"gold": "金冠", "gold": "金冠",
"lv": "Lv.", "lv": "",
"mini": "小型", "mini": "小型",
"otomo": "随从", "otomo": "随从",
"part_anomaly_core": "怪异核", "part_anomaly_core": "Anomaly Core",
"part_break": "部位破坏", "part_break": "部位破坏",
"part_sever": "部位切断", "part_sever": "部位切断",
"player": "玩家", "player": "玩家",
@@ -22,7 +22,6 @@
"blastblight": "Blastblight", "blastblight": "Blastblight",
"bleeding": "Bleeding", "bleeding": "Bleeding",
"bloodblight": "Bloodblight", "bloodblight": "Bloodblight",
"bubbleblight": "Bubbleblight",
"deadly_poison": "Deadly Poison", "deadly_poison": "Deadly Poison",
"defense_down": "Defense Down", "defense_down": "Defense Down",
"dragonblight": "Dragonblight", "dragonblight": "Dragonblight",
@@ -62,22 +61,10 @@
"waterblight": "水异常状态", "waterblight": "水异常状态",
"webbed": "Webbed" "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": { "customization_menu": {
"UI_font": "UI字体", "UI_font": "UI字体",
"UI_font_notice": "当更改字体时,请重新加载脚本!", "UI_font_notice": "当更改字体时,请重新加载脚本!",
"abnormal_statuses": "Abnormal Statuses",
"activation_count": "激活次数", "activation_count": "激活次数",
"affinity_label": "Affinity Label", "affinity_label": "Affinity Label",
"ailment_buildups": "状态异常积累值", "ailment_buildups": "状态异常积累值",
@@ -87,10 +74,10 @@
"ailments": "状态异常", "ailments": "状态异常",
"all_UI": "所有UI", "all_UI": "所有UI",
"anchor": "锚点", "anchor": "锚点",
"anomaly_cores": "怪异核", "anomaly_cores": "Anomaly Cores",
"anomaly_filter": "怪异核", "anomaly_filter": "Anomaly Core",
"anomaly_health": "怪异核破坏值", "anomaly_health": "Anomaly Core Health",
"anomaly_health_percentage": "怪异核破坏百分比", "anomaly_health_percentage": "Anomaly Core Health Percentage",
"apply": "应用", "apply": "应用",
"assign_new_key": "指定新按键", "assign_new_key": "指定新按键",
"attack_label": "Attack Label", "attack_label": "Attack Label",
@@ -100,17 +87,17 @@
"blast": "爆破", "blast": "爆破",
"body_parts": "身体部位", "body_parts": "身体部位",
"bold": "粗体", "bold": "粗体",
"bombs": "爆桶", "bombs": "Bombs",
"bottom_left": "左下", "bottom_left": "左下",
"bottom_right": "右下", "bottom_right": "右下",
"bottom_to_top": "从下到上", "bottom_to_top": "Bottom to Top",
"break_anomaly_filter": "破坏+怪异核", "break_anomaly_filter": "Break + Anomaly Core",
"break_count": "破坏次数", "break_count": "破坏次数",
"break_filter": "破坏", "break_filter": "破坏",
"break_health": "破坏值", "break_health": "破坏值",
"break_health_percentage": "破坏值百分比", "break_health_percentage": "破坏值百分比",
"break_max_count": "最大破坏次数", "break_max_count": "最大破坏次数",
"break_sever_anomaly_filter": "破坏+切断+怪异核", "break_sever_anomaly_filter": "Break + Sever + Anomaly Core",
"break_sever_filter": "破坏+切断", "break_sever_filter": "破坏+切断",
"buff_UI": "Buff UI", "buff_UI": "Buff UI",
"buildup": "积累值", "buildup": "积累值",
@@ -140,8 +127,8 @@
"damage_meter_UI": "伤害统计UI", "damage_meter_UI": "伤害统计UI",
"damage_percentage_label": "伤害百分比标签", "damage_percentage_label": "伤害百分比标签",
"damage_value_label": "伤害量标签", "damage_value_label": "伤害量标签",
"dango_skills": "Dango Skills",
"debug": "Debug", "debug": "Debug",
"debug_errors": "Debug Errors",
"default_state": "默认阶段", "default_state": "默认阶段",
"defense_label": "Defense Label", "defense_label": "Defense Label",
"delete": "删除", "delete": "删除",
@@ -154,17 +141,19 @@
"duration": "持续时间", "duration": "持续时间",
"dynamic_positioning": "动态位置", "dynamic_positioning": "动态位置",
"dynamically_positioned": "动态位置", "dynamically_positioned": "动态位置",
"effect_level": "Effect Level",
"element_2_label": "Element 2 Label", "element_2_label": "Element 2 Label",
"element_label": "Element Label", "element_label": "Element Label",
"enable_for": "开启", "enable_for": "开启",
"enabled": "开启", "enabled": "开启",
"endemic_life": "环境生物", "endemic_life": "Endemic Life",
"endemic_life_UI": "环境生物UI", "endemic_life_UI": "环境生物UI",
"endemic_life_buffs": "Endemic Life Buffs",
"everything_seems_to_be_ok": "Everything seems to be OK!", "everything_seems_to_be_ok": "Everything seems to be OK!",
"family": "字体", "family": "字体",
"farthest": "最远", "farthest": "最远",
"fight_time": "战斗时间", "fight_time": "战斗时间",
"fill_direction": "填充方向", "fill_direction": "Fill Direction",
"filter": "筛选器", "filter": "筛选器",
"filter_mode": "筛选方式", "filter_mode": "筛选方式",
"fire_resistance_label": "Fire Resistance Label", "fire_resistance_label": "Fire Resistance Label",
@@ -176,16 +165,17 @@
"global_position_modifier": "全局位置更改", "global_position_modifier": "全局位置更改",
"global_scale_modifier": "全局比例更改", "global_scale_modifier": "全局比例更改",
"global_settings": "全局设定", "global_settings": "全局设定",
"head_tracking": "Head Tracking",
"health": "生命", "health": "生命",
"health_anomaly_filter": "生命+怪异核", "health_anomaly_filter": "Health + Anomaly Core",
"health_break_anomaly_filter": "生命+破坏+怪异核", "health_break_anomaly_filter": "Health + Break + Anomaly Core",
"health_break_filter": "生命+破坏", "health_break_filter": "生命+破坏",
"health_break_sever_anomaly_filter": "生命+破坏+切断+怪异核", "health_break_sever_anomaly_filter": "Health + Break + Sever + Anomaly Core",
"health_break_sever_filter": "生命+破坏+切断", "health_break_sever_filter": "生命+破坏+切断",
"health_filter": "生命", "health_filter": "生命",
"health_label": "Health Label", "health_label": "Health Label",
"health_percentage": "生命百分比", "health_percentage": "生命百分比",
"health_sever_anomaly_filter": "生命+切断+怪异核", "health_sever_anomaly_filter": "Health + Sever + Anomaly Core",
"health_sever_filter": "生命+切断", "health_sever_filter": "生命+切断",
"height": "高度", "height": "高度",
"hide_ailments_with_zero_buildup": "当积累值为0时隐藏该状态异常", "hide_ailments_with_zero_buildup": "当积累值为0时隐藏该状态异常",
@@ -223,12 +213,14 @@
"in_lobby": "在大厅", "in_lobby": "在大厅",
"in_training_area": "在修炼场", "in_training_area": "在修炼场",
"include": "包含", "include": "包含",
"infinite_buffs_location": "Infinite Buffs Location",
"inside": "里面", "inside": "里面",
"installations": "狩猎设备", "installations": "Installations",
"italic": "斜体", "italic": "斜体",
"item_buffs": "Item Buffs",
"join_time": "加入时间", "join_time": "加入时间",
"killcam": "击杀镜头", "killcam": "击杀镜头",
"kunai": "苦无", "kunai": "Kunai",
"language": "语言", "language": "语言",
"large_monster_UI": "大型怪物UI", "large_monster_UI": "大型怪物UI",
"large_monster_dynamic_UI": "大型怪物浮动UI", "large_monster_dynamic_UI": "大型怪物浮动UI",
@@ -236,7 +228,7 @@
"large_monster_static_UI": "大型怪物固定UI", "large_monster_static_UI": "大型怪物固定UI",
"large_monsters": "大型怪物群", "large_monsters": "大型怪物群",
"last": "最后", "last": "最后",
"left_to_right": "从左到右", "left_to_right": "Left to Right",
"level": "等级", "level": "等级",
"level_label": "等级标签", "level_label": "等级标签",
"loading_quest": "任务加载中", "loading_quest": "任务加载中",
@@ -249,8 +241,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": "多次改变字体或语言会导致崩溃!", "menu_font_change_disclaimer": "多次改变字体或语言会导致崩溃!",
"misc_buffs": "Misc Buffs",
"mod_name": "MHR Overlay", "mod_name": "MHR Overlay",
"mode": "模式", "mode": "模式",
"modifiers": "更改项", "modifiers": "更改项",
@@ -260,7 +254,7 @@
"monster_id": "怪物ID", "monster_id": "怪物ID",
"monster_name": "怪物名", "monster_name": "怪物名",
"monster_name_label": "怪物名标签", "monster_name_label": "怪物名标签",
"monsters": "怪物", "monsters": "Monsters",
"my_damage_bar_location": "我的伤害条位置", "my_damage_bar_location": "我的伤害条位置",
"my_otomos": "我的随从", "my_otomos": "我的随从",
"myself": "我自己", "myself": "我自己",
@@ -273,10 +267,11 @@
"offset_is_relative_to_parts": "根据部位偏移", "offset_is_relative_to_parts": "根据部位偏移",
"opacity_falloff": "透明度增加", "opacity_falloff": "透明度增加",
"orientation": "方向", "orientation": "方向",
"other": "其它", "other": "Other",
"other_player_otomos": "其他玩家的随从", "other_player_otomos": "其他玩家的随从",
"other_players": "其他玩家", "other_players": "其他玩家",
"otomos": "随从", "otomo_moves": "Buddy Moves",
"otomos": "Buddies",
"outline": "轮廓", "outline": "轮廓",
"outside": "外面", "outside": "外面",
"part_health": "部位生命值", "part_health": "部位生命值",
@@ -287,7 +282,7 @@
"player_name_label": "玩家名标签", "player_name_label": "玩家名标签",
"player_name_size_limit": "玩家名长度限制", "player_name_size_limit": "玩家名长度限制",
"player_spacing": "玩家间距", "player_spacing": "玩家间距",
"players": "玩家", "players": "Players",
"playing_quest": "操作界面/正常游玩时", "playing_quest": "操作界面/正常游玩时",
"poison": "中毒", "poison": "中毒",
"position": "位置", "position": "位置",
@@ -299,28 +294,30 @@
"quest_start_animation": "任务开始动画", "quest_start_animation": "任务开始动画",
"quest_time": "任务时间", "quest_time": "任务时间",
"rage": "愤怒", "rage": "愤怒",
"rampage_skills": "Rampage Skills",
"reframework_outdated": "已安装的REFramework版本过低请更新。否则MHR Overlay不能正常工作。", "reframework_outdated": "已安装的REFramework版本过低请更新。否则MHR Overlay不能正常工作。",
"relative_offset": "相对偏移", "relative_offset": "相对偏移",
"rename": "重命名", "rename": "重命名",
"render_highlighted_monster": "渲染高亮怪物", "render_highlighted_monster": "渲染高亮怪物",
"render_inactive_anomaly_cores": "渲染不活跃的怪异核", "render_inactive_anomaly_cores": "Render Inactive Anomaly Cores",
"render_not_highlighted_monsters": "渲染非高亮怪物", "render_not_highlighted_monsters": "渲染非高亮怪物",
"renderer": "渲染器", "renderer": "渲染器",
"reset": "重置", "reset": "重置",
"reversed_order": "逆向排序", "reversed_order": "逆向排序",
"reward_screen": "奖励界面", "reward_screen": "奖励界面",
"right_alignment_shift": "右对齐偏移距离", "right_alignment_shift": "Right Alignment Shift",
"right_to_left": "从右到左", "right_to_left": "Right to Left",
"servant_otomos": "盟友随从", "servant_otomos": "盟友随从",
"servants": "盟友", "servants": "盟友",
"settings": "设定", "settings": "设定",
"sever_anomaly_filter": "切断+怪异核", "sever_anomaly_filter": "Sever + Anomaly Core",
"sever_filter": "切断", "sever_filter": "切断",
"shadow": "阴影", "shadow": "阴影",
"show_my_otomos_separately": "分开显示我的随从", "show_my_otomos_separately": "分开显示我的随从",
"show_other_player_otomos_separately": "分开显示其他玩家的随从", "show_other_player_otomos_separately": "分开显示其他玩家的随从",
"show_servant_otomos_separately": "分开显示盟友的随从", "show_servant_otomos_separately": "分开显示盟友的随从",
"size": "大小", "size": "大小",
"skills": "Skills",
"small_monster_UI": "小型怪物UI", "small_monster_UI": "小型怪物UI",
"small_monsters": "小型怪物群", "small_monsters": "小型怪物群",
"sorting": "排序方式", "sorting": "排序方式",
@@ -343,13 +340,14 @@
"time_label": "时间标签", "time_label": "时间标签",
"time_limit": "时间限制(秒)", "time_limit": "时间限制(秒)",
"timer": "计时器", "timer": "计时器",
"timer_delays": "Timer Delays",
"timer_label": "计时器标签", "timer_label": "计时器标签",
"top_buildup": "最高积累值", "top_buildup": "最高积累值",
"top_damage": "最高伤害", "top_damage": "Top Damage",
"top_dps": "最高DPS", "top_dps": "最高DPS",
"top_left": "左上", "top_left": "左上",
"top_right": "右上", "top_right": "右上",
"top_to_bottom": "从上到下", "top_to_bottom": "Top to Bottom",
"total": "总计", "total": "总计",
"total_buildup": "总积累值", "total_buildup": "总积累值",
"total_buildup_label": "总积累值标签", "total_buildup_label": "总积累值标签",
@@ -365,6 +363,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": "可用时使用Direct2D", "use_d2d_if_available": "可用时使用Direct2D",
"value": "Value", "value": "Value",
"value_label": "数字", "value_label": "数字",
@@ -372,63 +378,54 @@
"viewport_offset": "窗口偏移", "viewport_offset": "窗口偏移",
"visible": "可见", "visible": "可见",
"water_resistance_label": "Water Resistance Label", "water_resistance_label": "Water Resistance Label",
"weapon_skills": "Weapon Skills",
"width": "宽度", "width": "宽度",
"world_offset": "整体偏移", "world_offset": "整体偏移",
"wyvern_riding": "御龙", "wyvern_riding": "Wyvern Riding",
"x": "X轴", "x": "X轴",
"y": "Y轴", "y": "Y轴",
"z": "Z轴" "z": "Z轴"
}, },
"dango_skills": { "dango_skills": {
"dango_insurance_defense_up": "Dango Insurance Defense Up"
},
"dangos": {
"dango_adrenaline": "Dango Adrenaline", "dango_adrenaline": "Dango Adrenaline",
"dango_bombardier": "Dango Bombardier",
"dango_booster": "Dango Booster", "dango_booster": "Dango Booster",
"dango_bulker": "Dango Bulker", "dango_bulker": "Dango Bulker",
"dango_connector": "Dango Connector", "dango_connector": "Dango Connector",
"dango_defender": "Dango Defender", "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_flyer": "Dango Flyer",
"dango_glutton": "Dango Glutton", "dango_glutton": "Dango Glutton",
"dango_guard": "Dango Guard",
"dango_hunter": "Dango Hunter", "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": "Dango Insurance",
"dango_insurance_defense_up": "Dango Insurance Defense Up", "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" "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", "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": { "melody_effects": {
"affinity_up": "Affinity Up", "affinity_up": "Affinity Up",
"attack_and_affinity_up": "Attack and Affinity Up", "attack_and_affinity_up": "Attack and Affinity Up",
@@ -461,15 +458,16 @@
}, },
"misc_buffs": { "misc_buffs": {
"attack_up": "Attack Up", "attack_up": "Attack Up",
"defense_down": "Defense Down",
"defense_up": "Defense Up", "defense_up": "Defense Up",
"immunity": "Immunity", "immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down" "stamina_use_down": "Stamina Use Down"
}, },
"otomo_moves": { "otomo_moves": {
"go_fight_win": "Go, Fight, Win", "go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum", "power_drum": "Power Drum",
"rousing_roar": "Rousing Roar" "rousing_roar": "Rousing Roar",
"vase_of_vitality": "Vase of Vitality"
}, },
"parts": { "parts": {
"abdomen": "腹部", "abdomen": "腹部",
@@ -540,30 +538,38 @@
"wingclaws": "翼爪", "wingclaws": "翼爪",
"wings": "翼" "wings": "翼"
}, },
"rampage_skills": {
"chameleos_soul": "Chameleos Soul",
"kushala_daora_soul": "Kushala Daora Soul"
},
"skills": { "skills": {
"adrenaline_rush": "Adrenaline Rush", "adrenaline_rush": "Adrenaline Rush",
"affinity_sliding": "Affinity Sliding", "affinity_sliding": "Affinity Sliding",
"agitator": "Agitator", "agitator": "Agitator",
"berserk": "Berserk",
"bladescale_hone": "Bladescale Hone", "bladescale_hone": "Bladescale Hone",
"blood_awakening": "Blood Awakening",
"bloodlust": "Bloodlust", "bloodlust": "Bloodlust",
"burst": "Burst", "burst": "Burst",
"coalescence": "Coalescence", "coalescence": "Coalescence",
"counterstrike": "Counterstrike", "counterstrike": "Counterstrike",
"dereliction": "Dereliction", "dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Attack Up", "dragon_conversion_elemental_attack_up": "Dragon Conversion: Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res. Up", "dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart", "dragonheart": "Dragonheart",
"embolden": "Embolden",
"frenzied_bloodlust": "Frenzied Bloodlust", "frenzied_bloodlust": "Frenzied Bloodlust",
"furious": "Furious", "furious": "Furious",
"grinder_s": "Grinder (S)", "grinder_s": "Grinder (S)",
"heaven_sent": "Heaven-Sent", "heaven_sent": "Heaven-Sent",
"hellfire_cloak": "Hellfire Cloak", "hellfire_cloak": "Hellfire Cloak",
"heroics": "Heroics", "heroics": "Heroics",
"inspiration": "Inspiration",
"intrepid_heart": "Intrepid Heart", "intrepid_heart": "Intrepid Heart",
"kushala_daora_soul": "Kushala Daora Soul",
"latent_power": "Latent Power", "latent_power": "Latent Power",
"maximum_might": "Maximum Might", "maximum_might": "Maximum Might",
"offensive_guard": "Offensive Guard", "offensive_guard": "Offensive Guard",
"partbreaker": "Partbreaker",
"peak_performance": "Peak Performance", "peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)", "powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)", "powder_mantle_red": "Powder Mantle (Red)",
@@ -572,6 +578,7 @@
"resuscitate": "Resuscitate", "resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call", "spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger", "status_trigger": "Status Trigger",
"strife": "Strife",
"wall_runner": "Wall Runner", "wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle" "wind_mantle": "Wind Mantle"
}, },
@@ -596,56 +603,104 @@
255, 255,
8192, 8192,
8303, 8303,
11904,
12031,
12288, 12288,
12543, 12351,
12784, 12800,
12799, 19903,
19968, 19968,
40879, 40959,
63744,
64255,
65072,
65103,
65280, 65280,
65519, 65519,
0 0
], ],
"weapon_skills": { "weapon_skills": {
"all_extracts_mix": "All Extracts Mix", "bow": {
"amped_state": "Amped State",
"anchor_rage": "Anchor Rage",
"arc_shot_affinity": "Arc Shot: Affinity", "arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace", "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", "bolt_boost": "Bolt Boost",
"counter_charger": "Counter Charger", "herculean_draw": "Herculean Draw"
"destroyer_oil": "Destroyer Oil", },
"charge_blade": {
"element_boost": "Element Boost", "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", "erupting_cannon": "Erupting Cannon",
"fanning_maneuver": "Fannin Maneuver", "ground_splitter": "Ground Splitter"
"ground_splitter": "Ground Splitter", },
"harvest_moon": "Harvest Moon", "hammer": {
"herculean_draw": "Herculean Draw", "impact_burst": "Impact Burst"
"iai_slash": "Iai Slash", },
"impact_burst": "Impact Burst", "heavy_bowgun": {
"ironshine_silk": "Ironshine Silk", "counter_charger": "Counter Charger",
"orange_extract": "O Extract",
"overheat": "Overheat", "overheat": "Overheat",
"power_sheathe": "Power Sheathe",
"red_extract": "Red Extract",
"rising_moon": "Rising Moon", "rising_moon": "Rising Moon",
"setting_sun": "Setting Sun", "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" "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": "累積值:", "buildup": "累積值:",
"gold": "金冠", "gold": "金冠",
"lv": "Lv.", "lv": "",
"mini": "小型", "mini": "小型",
"otomo": "Buddy", "otomo": "Buddy",
"part_anomaly_core": "Anomaly Core", "part_anomaly_core": "Anomaly Core",
@@ -22,7 +22,6 @@
"blastblight": "Blastblight", "blastblight": "Blastblight",
"bleeding": "Bleeding", "bleeding": "Bleeding",
"bloodblight": "Bloodblight", "bloodblight": "Bloodblight",
"bubbleblight": "Bubbleblight",
"deadly_poison": "Deadly Poison", "deadly_poison": "Deadly Poison",
"defense_down": "Defense Down", "defense_down": "Defense Down",
"dragonblight": "Dragonblight", "dragonblight": "Dragonblight",
@@ -62,22 +61,10 @@
"waterblight": "水屬性異常", "waterblight": "水屬性異常",
"webbed": "Webbed" "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": { "customization_menu": {
"UI_font": "UI 字型", "UI_font": "UI 字型",
"UI_font_notice": "當更改文字時,請重新載入", "UI_font_notice": "當更改文字時,請重新載入",
"abnormal_statuses": "Abnormal Statuses",
"activation_count": "觸發次數", "activation_count": "觸發次數",
"affinity_label": "Affinity Label", "affinity_label": "Affinity Label",
"ailment_buildups": "異常狀態累積值", "ailment_buildups": "異常狀態累積值",
@@ -140,8 +127,8 @@
"damage_meter_UI": "傷害量計算 UI", "damage_meter_UI": "傷害量計算 UI",
"damage_percentage_label": "傷害量百分比", "damage_percentage_label": "傷害量百分比",
"damage_value_label": "傷害量", "damage_value_label": "傷害量",
"dango_skills": "Dango Skills",
"debug": "Debug", "debug": "Debug",
"debug_errors": "Debug Errors",
"default_state": "Default State", "default_state": "Default State",
"defense_label": "Defense Label", "defense_label": "Defense Label",
"delete": "Delete", "delete": "Delete",
@@ -154,12 +141,14 @@
"duration": "Duration", "duration": "Duration",
"dynamic_positioning": "浮動的資訊位置", "dynamic_positioning": "浮動的資訊位置",
"dynamically_positioned": "浮動的魔物資訊", "dynamically_positioned": "浮動的魔物資訊",
"effect_level": "Effect Level",
"element_2_label": "Element 2 Label", "element_2_label": "Element 2 Label",
"element_label": "Element Label", "element_label": "Element Label",
"enable_for": "啟用對象", "enable_for": "啟用對象",
"enabled": "啟用", "enabled": "啟用",
"endemic_life": "Endemic Life", "endemic_life": "Endemic Life",
"endemic_life_UI": "環境生物 UI", "endemic_life_UI": "環境生物 UI",
"endemic_life_buffs": "Endemic Life Buffs",
"everything_seems_to_be_ok": "Everything seems to be OK!", "everything_seems_to_be_ok": "Everything seems to be OK!",
"family": "字體", "family": "字體",
"farthest": "最遠的", "farthest": "最遠的",
@@ -176,6 +165,7 @@
"global_position_modifier": "全域位置更改", "global_position_modifier": "全域位置更改",
"global_scale_modifier": "全域比例更改", "global_scale_modifier": "全域比例更改",
"global_settings": "全域設定", "global_settings": "全域設定",
"head_tracking": "Head Tracking",
"health": "血量", "health": "血量",
"health_anomaly_filter": "Health + Anomaly Core", "health_anomaly_filter": "Health + Anomaly Core",
"health_break_anomaly_filter": "Health + Break + Anomaly Core", "health_break_anomaly_filter": "Health + Break + Anomaly Core",
@@ -223,9 +213,11 @@
"in_lobby": "In Lobby", "in_lobby": "In Lobby",
"in_training_area": "In Training Area", "in_training_area": "In Training Area",
"include": "細部資訊調整", "include": "細部資訊調整",
"infinite_buffs_location": "Infinite Buffs Location",
"inside": "內部", "inside": "內部",
"installations": "Installations", "installations": "Installations",
"italic": "斜體", "italic": "斜體",
"item_buffs": "Item Buffs",
"join_time": "加入時間", "join_time": "加入時間",
"killcam": "Killcam", "killcam": "Killcam",
"kunai": "Kunai", "kunai": "Kunai",
@@ -249,8 +241,10 @@
"max_monster_updates_per_tick": "每次更新的最大魔物數量", "max_monster_updates_per_tick": "每次更新的最大魔物數量",
"max_value": "Max Value", "max_value": "Max Value",
"me": "我", "me": "我",
"melody_effects": "Melody Effects",
"menu_font": "選單字體大小", "menu_font": "選單字體大小",
"menu_font_change_disclaimer": "重複變更語言和選單字型大小有可能會當機!", "menu_font_change_disclaimer": "重複變更語言和選單字型大小有可能會當機!",
"misc_buffs": "Misc Buffs",
"mod_name": "MHR Overlay", "mod_name": "MHR Overlay",
"mode": "Mode", "mode": "Mode",
"modifiers": "更改項", "modifiers": "更改項",
@@ -276,6 +270,7 @@
"other": "Other", "other": "Other",
"other_player_otomos": "Other Player Buddies", "other_player_otomos": "Other Player Buddies",
"other_players": "其他玩家", "other_players": "其他玩家",
"otomo_moves": "Buddy Moves",
"otomos": "Buddies", "otomos": "Buddies",
"outline": "描邊", "outline": "描邊",
"outside": "外部", "outside": "外部",
@@ -299,6 +294,7 @@
"quest_start_animation": "Quest Start Animation", "quest_start_animation": "Quest Start Animation",
"quest_time": "任務時間", "quest_time": "任務時間",
"rage": "憤怒度", "rage": "憤怒度",
"rampage_skills": "Rampage Skills",
"reframework_outdated": "已安裝的 REFramework 版本已過期. 麻煩請更新版本, 否則 MHR Overlay 無法正確作用.", "reframework_outdated": "已安裝的 REFramework 版本已過期. 麻煩請更新版本, 否則 MHR Overlay 無法正確作用.",
"relative_offset": "相對偏移", "relative_offset": "相對偏移",
"rename": "Rename", "rename": "Rename",
@@ -321,6 +317,7 @@
"show_other_player_otomos_separately": "Show Other Player Buddies separately", "show_other_player_otomos_separately": "Show Other Player Buddies separately",
"show_servant_otomos_separately": "Show Follower Buddies separately", "show_servant_otomos_separately": "Show Follower Buddies separately",
"size": "大小", "size": "大小",
"skills": "Skills",
"small_monster_UI": "小型魔物 UI", "small_monster_UI": "小型魔物 UI",
"small_monsters": "小型魔物群", "small_monsters": "小型魔物群",
"sorting": "排序方式", "sorting": "排序方式",
@@ -343,6 +340,7 @@
"time_label": "時間", "time_label": "時間",
"time_limit": "時限 (秒)", "time_limit": "時限 (秒)",
"timer": "Timer", "timer": "Timer",
"timer_delays": "Timer Delays",
"timer_label": "計時器", "timer_label": "計時器",
"top_buildup": "最高累積值", "top_buildup": "最高累積值",
"top_damage": "最高傷害", "top_damage": "最高傷害",
@@ -365,6 +363,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", "use_d2d_if_available": "Use Direct2D if available",
"value": "Value", "value": "Value",
"value_label": "數字", "value_label": "數字",
@@ -372,6 +378,7 @@
"viewport_offset": "視窗的位置", "viewport_offset": "視窗的位置",
"visible": "可見", "visible": "可見",
"water_resistance_label": "Water Resistance Label", "water_resistance_label": "Water Resistance Label",
"weapon_skills": "Weapon Skills",
"width": "寬度", "width": "寬度",
"world_offset": "地圖中的位置", "world_offset": "地圖中的位置",
"wyvern_riding": "Wyvern Riding", "wyvern_riding": "Wyvern Riding",
@@ -380,55 +387,45 @@
"z": "Z軸" "z": "Z軸"
}, },
"dango_skills": { "dango_skills": {
"dango_insurance_defense_up": "Dango Insurance Defense Up"
},
"dangos": {
"dango_adrenaline": "Dango Adrenaline", "dango_adrenaline": "Dango Adrenaline",
"dango_bombardier": "Dango Bombardier",
"dango_booster": "Dango Booster", "dango_booster": "Dango Booster",
"dango_bulker": "Dango Bulker", "dango_bulker": "Dango Bulker",
"dango_connector": "Dango Connector", "dango_connector": "Dango Connector",
"dango_defender": "Dango Defender", "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_flyer": "Dango Flyer",
"dango_glutton": "Dango Glutton", "dango_glutton": "Dango Glutton",
"dango_guard": "Dango Guard",
"dango_hunter": "Dango Hunter", "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": "Dango Insurance",
"dango_insurance_defense_up": "Dango Insurance Defense Up", "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" "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", "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": { "melody_effects": {
"affinity_up": "Affinity Up", "affinity_up": "Affinity Up",
"attack_and_affinity_up": "Attack and Affinity Up", "attack_and_affinity_up": "Attack and Affinity Up",
@@ -461,15 +458,16 @@
}, },
"misc_buffs": { "misc_buffs": {
"attack_up": "Attack Up", "attack_up": "Attack Up",
"defense_down": "Defense Down",
"defense_up": "Defense Up", "defense_up": "Defense Up",
"immunity": "Immunity", "immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down" "stamina_use_down": "Stamina Use Down"
}, },
"otomo_moves": { "otomo_moves": {
"go_fight_win": "Go, Fight, Win", "go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum", "power_drum": "Power Drum",
"rousing_roar": "Rousing Roar" "rousing_roar": "Rousing Roar",
"vase_of_vitality": "Vase of Vitality"
}, },
"parts": { "parts": {
"abdomen": "腹部", "abdomen": "腹部",
@@ -540,30 +538,38 @@
"wingclaws": "翼爪", "wingclaws": "翼爪",
"wings": "翅膀" "wings": "翅膀"
}, },
"rampage_skills": {
"chameleos_soul": "Chameleos Soul",
"kushala_daora_soul": "Kushala Daora Soul"
},
"skills": { "skills": {
"adrenaline_rush": "Adrenaline Rush", "adrenaline_rush": "Adrenaline Rush",
"affinity_sliding": "Affinity Sliding", "affinity_sliding": "Affinity Sliding",
"agitator": "Agitator", "agitator": "Agitator",
"berserk": "Berserk",
"bladescale_hone": "Bladescale Hone", "bladescale_hone": "Bladescale Hone",
"blood_awakening": "Blood Awakening",
"bloodlust": "Bloodlust", "bloodlust": "Bloodlust",
"burst": "Burst", "burst": "Burst",
"coalescence": "Coalescence", "coalescence": "Coalescence",
"counterstrike": "Counterstrike", "counterstrike": "Counterstrike",
"dereliction": "Dereliction", "dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Attack Up", "dragon_conversion_elemental_attack_up": "Dragon Conversion: Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res. Up", "dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart", "dragonheart": "Dragonheart",
"embolden": "Embolden",
"frenzied_bloodlust": "Frenzied Bloodlust", "frenzied_bloodlust": "Frenzied Bloodlust",
"furious": "Furious", "furious": "Furious",
"grinder_s": "Grinder (S)", "grinder_s": "Grinder (S)",
"heaven_sent": "Heaven-Sent", "heaven_sent": "Heaven-Sent",
"hellfire_cloak": "Hellfire Cloak", "hellfire_cloak": "Hellfire Cloak",
"heroics": "Heroics", "heroics": "Heroics",
"inspiration": "Inspiration",
"intrepid_heart": "Intrepid Heart", "intrepid_heart": "Intrepid Heart",
"kushala_daora_soul": "Kushala Daora Soul",
"latent_power": "Latent Power", "latent_power": "Latent Power",
"maximum_might": "Maximum Might", "maximum_might": "Maximum Might",
"offensive_guard": "Offensive Guard", "offensive_guard": "Offensive Guard",
"partbreaker": "Partbreaker",
"peak_performance": "Peak Performance", "peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)", "powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)", "powder_mantle_red": "Powder Mantle (Red)",
@@ -572,6 +578,7 @@
"resuscitate": "Resuscitate", "resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call", "spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger", "status_trigger": "Status Trigger",
"strife": "Strife",
"wall_runner": "Wall Runner", "wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle" "wind_mantle": "Wind Mantle"
}, },
@@ -596,56 +603,104 @@
255, 255,
8192, 8192,
8303, 8303,
11904,
12031,
12288, 12288,
12543, 12351,
12784, 12800,
12799, 19903,
19968, 19968,
40879, 40959,
63744,
64255,
65072,
65103,
65280, 65280,
65519, 65519,
0 0
], ],
"weapon_skills": { "weapon_skills": {
"all_extracts_mix": "All Extracts Mix", "bow": {
"amped_state": "Amped State",
"anchor_rage": "Anchor Rage",
"arc_shot_affinity": "Arc Shot: Affinity", "arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace", "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", "bolt_boost": "Bolt Boost",
"counter_charger": "Counter Charger", "herculean_draw": "Herculean Draw"
"destroyer_oil": "Destroyer Oil", },
"charge_blade": {
"element_boost": "Element Boost", "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", "erupting_cannon": "Erupting Cannon",
"fanning_maneuver": "Fannin Maneuver", "ground_splitter": "Ground Splitter"
"ground_splitter": "Ground Splitter", },
"harvest_moon": "Harvest Moon", "hammer": {
"herculean_draw": "Herculean Draw", "impact_burst": "Impact Burst"
"iai_slash": "Iai Slash", },
"impact_burst": "Impact Burst", "heavy_bowgun": {
"ironshine_silk": "Ironshine Silk", "counter_charger": "Counter Charger",
"orange_extract": "O Extract",
"overheat": "Overheat", "overheat": "Overheat",
"power_sheathe": "Power Sheathe",
"red_extract": "Red Extract",
"rising_moon": "Rising Moon", "rising_moon": "Rising Moon",
"setting_sun": "Setting Sun", "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" "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.