96 Commits

Author SHA1 Message Date
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
GreenComfyTea
bfd9463c9e Merge branch 'main' of https://github.com/GreenComfyTea/MHR-Overlay 2023-09-15 12:58:19 +03:00
GreenComfyTea
ae336eea2f Weapon Skills: Add Arc Shot: Affinity and Arc Shot: Brace 2023-09-15 12:58:03 +03:00
GreenComfyTea
5454bdd48e Skills: Add Partbreaker 2023-09-15 12:57:11 +03:00
GreenComfyTea
80e309a5dd Abnormal Statuses: Fix Error Message 2023-09-15 12:56:41 +03:00
GreenComfyTea
f1102eaa28 Endemic Life Buffs: Add Red and Yellow Lampsquids 2023-09-15 12:55:32 +03:00
GreenComfyTea
bd02dab872 Fix dango_skills error message 2023-09-15 12:54:59 +03:00
GreenComfyTea
8887f3c235 Rename consumables to item_buffs 2023-09-15 12:54:03 +03:00
GreenComfyTea
5177a207a9 Update README.md 2023-09-14 18:54:05 +03:00
GreenComfyTea
50131b08f1 Remove Kushala Daora Soul string 2023-09-06 16:31:54 +03:00
GreenComfyTea
89bb48602d language.lua upd 2023-09-06 16:31:10 +03:00
GreenComfyTea
1580b4c4c2 Add Embolden, Berserk, Powder Mantle, Strife, Inspiration, Blood Awakening Skills, move Kushala Daora Soul to Rampage Skills 2023-09-06 16:30:54 +03:00
GreenComfyTea
5c42502700 Remove Might/Adamant Seeds (covered by Attack/Defense Up) and Dash Juice(covered by Stamina Use Down) 2023-09-06 16:29:56 +03:00
GreenComfyTea
d7a4450a37 Add Stinkmink, remove Peepersects (covered by Stamina Use Down) 2023-09-06 16:28:48 +03:00
GreenComfyTea
590b3b17c2 Remove Dango Bulker (covered by Attack Up) 2023-09-06 16:27:17 +03:00
GreenComfyTea
e20af6479e Move Attack Up, Defense Up, Stamina Use Down to Misc Buffs 2023-09-06 16:26:55 +03:00
GreenComfyTea
6bab1b2435 Add Rampage Skills to Update Function 2023-09-06 16:26:08 +03:00
GreenComfyTea
195252ed70 Abnormal Statuses: Add Falling Asleep 2023-09-06 16:25:09 +03:00
GreenComfyTea
b9a3088658 Add Rampage Skills 2023-09-06 16:24:17 +03:00
GreenComfyTea
a8060c8c58 Rename "Dangos" to "Dango Skills" 2023-09-05 15:03:53 +03:00
GreenComfyTea
49cac58bec Dangos: Add Dango Insurance 2023-09-05 14:19:02 +03:00
GreenComfyTea
af53399c50 Add Dango Flyer, Dango Connector and Super Recovery Dango 2023-09-04 10:43:52 +03:00
GreenComfyTea
a418bb0132 Fix Dango Insurance Defense Up Lv.4 showing all the time 2023-09-04 09:29:30 +03:00
GreenComfyTea
5f609a588a Dangos: Add Dango Insurance Defense Up, Dango Hunter and Dango Connector 2023-09-03 15:53:11 +03:00
GreenComfyTea
8fb02699cc Fix init_names() 2023-09-03 14:16:32 +03:00
GreenComfyTea
b52c903af3 Fix Errors from Previous Commit 2023-09-03 13:58:52 +03:00
GreenComfyTea
8ae3928fdc Pull Most Buff Name from the Game
+ Solve Consumable Buff Timer Collisions
2023-09-03 13:36:03 +03:00
GreenComfyTea
bf282ca13b Weapon Skills: Add All Weapons 2023-08-25 15:10:15 +03:00
GreenComfyTea
c7b9e5b8f9 Skills: Add Bladescale Hone 2023-08-25 15:09:21 +03:00
GreenComfyTea
e67fbf923f Refactoring 2023-08-21 17:29:57 +03:00
GreenComfyTea
1d31a86a3f Cache mValues of ValTypes (Single) 2023-08-21 17:29:16 +03:00
GreenComfyTea
e4108f7fa9 Add Weapon Skills (Great Sword, Switch Axe, Long Sword) 2023-08-21 17:28:36 +03:00
GreenComfyTea
4ede59c8c2 Cache mValue field of ValTypes (Int32 and Single) 2023-08-21 17:25:39 +03:00
GreenComfyTea
2db41e237f utils.type: Add is_boolean(), is_REField(), is_REMethodDefinition() 2023-08-21 17:25:07 +03:00
GreenComfyTea
f9c1d89843 Fix Endemic Life UI not showing 2023-08-20 16:15:25 +03:00
GreenComfyTea
f086ff2d5d Endemic Life Buffs: Add Ruby and Gold Wirebugs 2023-08-20 16:15:00 +03:00
GreenComfyTea
5e5df84308 Otomo Moves: Add Power Drum and Go, Fight, Win 2023-08-20 16:14:19 +03:00
GreenComfyTea
528d7f7238 Skills: Add Status Trigger 2023-08-20 16:13:49 +03:00
GreenComfyTea
1c83b282ef Update Otomo Entity when Swapping Otomos 2023-08-20 13:29:33 +03:00
GreenComfyTea
a41ec08903 Skills: +Peak Performance, Dragonheart, Resentment 2023-08-20 13:27:24 +03:00
GreenComfyTea
89571bd2f4 Buff UI: Add Otomo Moves 2023-08-20 13:26:34 +03:00
GreenComfyTea
1fcb9aea5a Dangos: Add Dango Adrenaline, Fix Dango Defender 2023-08-20 13:26:09 +03:00
GreenComfyTea
13e68d67a9 Stats UI: Add Health and Max Health 2023-08-20 10:48:25 +03:00
GreenComfyTea
67e0e6db6b Update Highlighted Monster every frame 2023-08-20 09:29:50 +03:00
GreenComfyTea
e79660010b Don't display Monster Size if 0 2023-08-20 09:29:30 +03:00
GreenComfyTea
c597d1df09 Skills: Add Maximum Might, Bloodlust, Frenzied Bloodlust 2023-08-19 16:17:03 +03:00
GreenComfyTea
bcb6355b61 Add remove_delay_timer() 2023-08-19 16:15:48 +03:00
GreenComfyTea
4f5350b631 Abnormal Statuses: Add Deadly Poison, Minor/Major Bubbleblight 2023-08-19 16:15:16 +03:00
48 changed files with 8008 additions and 1934 deletions

View File

@@ -1,6 +1,6 @@
<p align="center"> <p align="center">
<h2 align="center"><b>"MHR Overlay" Mod for Monster Hunter: Rise</b></h2> <h2 align="center"><b>"MHR Overlay" Mod for Monster Hunter: Rise</b></h2>
<p align="center">Mod that exposes in-game data about monsters, creatures, players and damage. Draws a highly customizable UI.</p> <p align="center">Exposes internal game data about monsters, creatures, players, damage, buffs and debuffs. Draws a highly customizable UI.</p>
<p align="center">This mod is solely intended to empower players with means of self-improvement. Please don't use the information provided by this tool to make hurtful comments and actions toward other players.</p> <p align="center">This mod is solely intended to empower players with means of self-improvement. Please don't use the information provided by this tool to make hurtful comments and actions toward other players.</p>
</p> </p>
@@ -34,11 +34,11 @@
<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.605%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%20v0.4.0%2B-yellow?logo=package-dependencies" />
@@ -135,33 +135,34 @@
* **[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)** (v0.4.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.
*** ***
# Support # Support

View File

@@ -45,12 +45,16 @@ local utils = require("MHR_Overlay.Misc.utils");
local player_info = require("MHR_Overlay.Misc.player_info"); local player_info = require("MHR_Overlay.Misc.player_info");
local buffs = require("MHR_Overlay.Buffs.buffs"); local buffs = require("MHR_Overlay.Buffs.buffs");
local consumables = require("MHR_Overlay.Buffs.consumables"); local item_buffs = require("MHR_Overlay.Buffs.item_buffs");
local melody_effects = require("MHR_Overlay.Buffs.melody_effects"); local melody_effects = require("MHR_Overlay.Buffs.melody_effects");
local endemic_life_buffs = require("MHR_Overlay.Buffs.endemic_life_buffs"); local endemic_life_buffs = require("MHR_Overlay.Buffs.endemic_life_buffs");
local skills = require("MHR_Overlay.Buffs.skills"); local skills = require("MHR_Overlay.Buffs.skills");
local dangos = require("MHR_Overlay.Buffs.dangos"); local dango_skills = require("MHR_Overlay.Buffs.dango_skills");
local abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses"); local abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses");
local otomo_moves = require("MHR_Overlay.Buffs.otomo_moves");
local weapon_skills = require("MHR_Overlay.Buffs.weapon_skills");
local rampage_skills = require("MHR_Overlay.Buffs.rampage_skills");
local misc_buffs = require("MHR_Overlay.Buffs.misc_buffs");
local players = require("MHR_Overlay.Damage_Meter.players"); local players = require("MHR_Overlay.Damage_Meter.players");
local non_players = require("MHR_Overlay.Damage_Meter.non_players"); local non_players = require("MHR_Overlay.Damage_Meter.non_players");
@@ -125,12 +129,16 @@ buff_UI_entity.init_dependencies();
player_info.init_dependencies(); player_info.init_dependencies();
buffs.init_dependencies(); buffs.init_dependencies();
consumables.init_dependencies(); item_buffs.init_dependencies();
melody_effects.init_dependencies(); melody_effects.init_dependencies();
endemic_life_buffs.init_dependencies(); endemic_life_buffs.init_dependencies();
skills.init_dependencies(); skills.init_dependencies();
dangos.init_dependencies(); dango_skills.init_dependencies();
abnormal_statuses.init_dependencies(); abnormal_statuses.init_dependencies();
otomo_moves.init_dependencies();
weapon_skills.init_dependencies();
rampage_skills.init_dependencies();
misc_buffs.init_dependencies();
damage_hook.init_dependencies(); damage_hook.init_dependencies();
players.init_dependencies(); players.init_dependencies();
@@ -200,12 +208,16 @@ buff_UI_entity.init_module();
player_info.init_module(); player_info.init_module();
buffs.init_module(); buffs.init_module();
consumables.init_module(); item_buffs.init_module();
melody_effects.init_module(); melody_effects.init_module();
endemic_life_buffs.init_module(); endemic_life_buffs.init_module();
skills.init_module(); skills.init_module();
dangos.init_module(); dango_skills.init_module();
abnormal_statuses.init_module(); abnormal_statuses.init_module();
otomo_moves.init_module();
weapon_skills.init_module();
rampage_skills.init_module();
misc_buffs.init_module();
damage_hook.init_module(); damage_hook.init_module();
players.init_module(); players.init_module();
@@ -260,9 +272,9 @@ log.info("[MHR Overlay] Loaded.");
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 if module_visibility_config.small_monster_UI and config.current_config.small_monster_UI.enabled then
local success = pcall(small_monster_UI.update); local success, error = pcall(small_monster_UI.update);
if not success then 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
@@ -273,39 +285,39 @@ local function update_modules(module_visibility_config, flow_state_name)
local highlighted_enabled = large_monster_UI_config.highlighted.enabled and module_visibility_config.large_monster_highlighted_UI; 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 config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then
local success = pcall(damage_meter_UI.update); local success, error = pcall(damage_meter_UI.update);
if not success then 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 config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then
local success = pcall(env_creature_UI.update); local success, error = pcall(env_creature_UI.update);
if not success then 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 config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then
local success = pcall(buff_UI.update); local success, error = pcall(buff_UI.update);
if not success then 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 if module_visibility_config.small_monster_UI and config.current_config.small_monster_UI.enabled then
local success = pcall(small_monster_UI.draw); local success, error = pcall(small_monster_UI.draw);
if not success then 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
@@ -316,44 +328,44 @@ local function draw_modules(module_visibility_config, flow_state_name)
local highlighted_enabled = large_monster_UI_config.highlighted.enabled and module_visibility_config.large_monster_highlighted_UI; 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 config.current_config.time_UI.enabled and module_visibility_config.time_UI then
local success = pcall(time_UI.draw); local success, error = pcall(time_UI.draw);
if not success then 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 config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then
local success = pcall(damage_meter_UI.draw); local success, error = pcall(damage_meter_UI.draw);
if not success then 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 config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then
local success = pcall(env_creature_UI.draw); local success, error = pcall(env_creature_UI.draw);
if not success then 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 config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then
local success = pcall(buff_UI.draw); local success, error = pcall(buff_UI.draw);
if not success then 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 config.current_config.stats_UI.enabled and module_visibility_config.stats_UI then
local success = pcall(stats_UI.draw); local success, error = pcall(stats_UI.draw);
if not success then 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
@@ -369,30 +381,30 @@ local function update_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_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 config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then
local success = pcall(damage_meter_UI.update); local success, error = pcall(damage_meter_UI.update);
if not success then 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 config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then
local success = pcall(env_creature_UI.update); local success, error = pcall(env_creature_UI.update);
if not success then 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 config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then
local success = pcall(buff_UI.update); local success, error = pcall(buff_UI.update);
if not success then 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
@@ -424,9 +436,9 @@ local function draw_loop()
local module_visibility_config = config.current_config.global_settings.module_visibility.in_lobby; local module_visibility_config = config.current_config.global_settings.module_visibility.in_lobby;
if config.current_config.stats_UI.enabled and module_visibility_config.stats_UI then if config.current_config.stats_UI.enabled and module_visibility_config.stats_UI then
local success = pcall(stats_UI.draw); local success, error = pcall(stats_UI.draw);
if not success then 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
@@ -440,37 +452,37 @@ local function draw_loop()
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.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 config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then
local success = pcall(damage_meter_UI.draw); local success, error = pcall(damage_meter_UI.draw);
if not success then 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 config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then
local success = pcall(env_creature_UI.draw); local success, error = pcall(env_creature_UI.draw);
if not success then 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 config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then
local success = pcall(buff_UI.draw); local success, error = pcall(buff_UI.draw);
if not success then 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 config.current_config.stats_UI.enabled and module_visibility_config.stats_UI then
local success = pcall(stats_UI.draw); local success, error = pcall(stats_UI.draw);
if not success then 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
@@ -531,7 +543,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,16 +45,19 @@ 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,
bubbleblight = nil, minor_bubbleblight = nil,
major_bubbleblight = nil,
hellfireblight = nil, hellfireblight = nil,
bloodblight = nil, bloodblight = nil,
poison = nil, 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,
@@ -63,67 +66,107 @@ 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
}; };
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;
local player_quest_base_type_def = sdk.find_type_definition("snow.player.PlayerQuestBase"); local player_quest_base_type_def = sdk.find_type_definition("snow.player.PlayerQuestBase");
-- Fireblight -- Fireblight
local fire_duration_timer = 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 = 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 = player_quest_base_type_def:get_field("_IceLDurationTimer");
-- Thunderblight -- Thunderblight
local thunder_duration_timer = 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 = player_quest_base_type_def:get_field("_DragonLDurationTimer"); local dragon_duration_timer_field = player_quest_base_type_def:get_field("_DragonLDurationTimer");
-- blastblight -- blastblight
local bomb_duration_timer = player_quest_base_type_def:get_field("_BombDurationTimer"); local bomb_duration_timer_field = player_quest_base_type_def:get_field("_BombDurationTimer");
-- Bubbleblight -- Bubbleblight
local bubble_damage_timer = player_quest_base_type_def:get_field("_BubbleDamageTimer"); local bubble_type_field = player_quest_base_type_def:get_field("_BubbleType");
local bubble_damage_timer_field = player_quest_base_type_def:get_field("_BubbleDamageTimer");
-- Hellfireblight -- Hellfireblight
local oni_bomb_duration_timer = player_quest_base_type_def:get_field("_OniBombDurationTimer"); local oni_bomb_duration_timer_field = player_quest_base_type_def:get_field("_OniBombDurationTimer");
-- Bloodblight -- Bloodblight
local mystery_debuff_timer = player_quest_base_type_def:get_field("_MysteryDebuffTimer"); local mystery_debuff_timer_field = player_quest_base_type_def:get_field("_MysteryDebuffTimer");
-- Frostblight -- Frostblight
local get_is_frozen_damage_method = player_quest_base_type_def:get_method("get_IsFrozenDamage"); local get_is_frozen_damage_method = player_quest_base_type_def:get_method("get_IsFrozenDamage");
-- Poison -- Poison
local poison_duration_timer = player_quest_base_type_def:get_field("_PoisonDurationTimer"); local poison_level_field = player_quest_base_type_def:get_field("_PoisonLv");
local poison_duration_timer_field = player_quest_base_type_def:get_field("_PoisonDurationTimer");
-- Stun -- Stun
local stun_duration_timer = player_quest_base_type_def:get_field("_StunDurationTimer"); local stun_duration_timer_field = player_quest_base_type_def:get_field("_StunDurationTimer");
-- Falling Sleep
local get_sleep_movable_timer_method = player_quest_base_type_def:get_method("get_SleepMovableTimer");
-- Sleep -- Sleep
local sleep_duration_timer = player_quest_base_type_def:get_field("_SleepDurationTimer"); local sleep_duration_timer_field = player_quest_base_type_def:get_field("_SleepDurationTimer");
-- Paralysis -- Paralysis
local paralyze_duration_timer = player_quest_base_type_def:get_field("_ParalyzeDurationTimer"); local paralyze_duration_timer_field = player_quest_base_type_def:get_field("_ParalyzeDurationTimer");
-- Defense Down -- Defense Down
local defense_down_duration_timer = player_quest_base_type_def:get_field("_DefenceDownDurationTimer"); local defense_down_duration_timer_field = player_quest_base_type_def:get_field("_DefenceDownDurationTimer");
-- Resistance Down -- Resistance Down
local resistance_down_duration_timer = player_quest_base_type_def:get_field("_ResistanceDownDurationTimer"); local resistance_down_duration_timer_field = player_quest_base_type_def:get_field("_ResistanceDownDurationTimer");
-- Tremor -- Tremor
local quake_duration_timer = player_quest_base_type_def:get_field("_QuakeDurationTimer"); local quake_duration_timer_field = player_quest_base_type_def:get_field("_QuakeDurationTimer");
-- Roar -- Roar
local ear_duration_timer = player_quest_base_type_def:get_field("_EarDurationTimer"); local ear_duration_timer_field = player_quest_base_type_def:get_field("_EarDurationTimer");
-- Webbed -- Webbed
local beto_duration_timer = player_quest_base_type_def:get_field("_BetoDurationTimer"); local beto_duration_timer_field = player_quest_base_type_def:get_field("_BetoDurationTimer");
-- Stench -- Stench
local stink_duration_timer = player_quest_base_type_def:get_field("_StinkDurationTimer"); local stink_duration_timer_field = player_quest_base_type_def:get_field("_StinkDurationTimer");
-- Leeched -- Leeched
local blooding_enemy_timer = player_quest_base_type_def:get_field("_BloodingEnemyTimer"); local blooding_enemy_timer_field = player_quest_base_type_def:get_field("_BloodingEnemyTimer");
-- Bleeding -- Bleeding
local bleeding_debuff_timer = player_quest_base_type_def:get_field("_BleedingDebuffTimer"); local bleeding_debuff_timer_field = player_quest_base_type_def:get_field("_BleedingDebuffTimer");
-- Engulfed -- Engulfed
local get_is_vacuum_damage_method = player_quest_base_type_def:get_method("get__IsVacuumDamage"); local get_is_vacuum_damage_method = player_quest_base_type_def:get_method("get__IsVacuumDamage");
-- Muck -- Muck
@@ -136,109 +179,154 @@ local virus_timer_field = player_quest_base_type_def:get_field("_VirusTimer");
-- Frenzy -- Frenzy
local virus_onset_timer_field = player_quest_base_type_def:get_field("_VirusOnsetTimer"); local virus_onset_timer_field = player_quest_base_type_def:get_field("_VirusOnsetTimer");
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData"); local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Frenzy Overcome -- Frenzy Overcome
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("consumables.update", "Failed to access Data: item_parameter");
-- return;
--end
-- Missing: -- Missing:
-- Whirlwind -- whirlwind?
-- Wind Pressure?
this.update_poison(player);
this.update_bubbleblight(player);
this.update_muck(player); this.update_muck(player);
this.update_frenzy_infection(player); this.update_frenzy_infection(player);
this.update_generic_timer("fireblight", player, fire_duration_timer); this.update_abnormal_status("fireblight", nil, nil, player, fire_duration_timer_field);
this.update_generic_timer("waterblight", player, water_duration_timer); this.update_abnormal_status("waterblight", nil, nil, player, water_duration_timer_field);
this.update_generic_timer("iceblight", player, ice_duration_timer); this.update_abnormal_status("thunderblight", nil, nil, player, thunder_duration_timer_field);
this.update_generic_timer("thunderblight", player, thunder_duration_timer); this.update_abnormal_status("iceblight", nil, nil, player, ice_duration_timer_field);
this.update_generic_timer("dragonblight", player, dragon_duration_timer); this.update_abnormal_status("dragonblight", nil, nil, player, dragon_duration_timer_field);
this.update_abnormal_status("blastblight", nil, nil, player, bomb_duration_timer_field);
this.update_abnormal_status("hellfireblight", nil, nil, player, oni_bomb_duration_timer_field);
this.update_abnormal_status("bloodblight", nil, nil, player, mystery_debuff_timer_field);
this.update_abnormal_status("frostblight", player, get_is_frozen_damage_method);
this.update_generic_timer("blastblight", player, bomb_duration_timer); this.update_abnormal_status("stun", nil, nil, player, stun_duration_timer_field);
this.update_generic_timer("bubbleblight", player, bubble_damage_timer); this.update_abnormal_status("paralysis", nil, nil, player, paralyze_duration_timer_field);
this.update_generic_timer("hellfireblight", player, oni_bomb_duration_timer); this.update_abnormal_status("falling_asleep", nil, nil, player, get_sleep_movable_timer_method);
this.update_generic_timer("bloodblight", player, mystery_debuff_timer); this.update_abnormal_status("defense_down", nil, nil, player, defense_down_duration_timer_field);
this.update_abnormal_status("resistance_down", nil, nil, player, resistance_down_duration_timer_field);
this.update_generic_timer("poison", player, poison_duration_timer); this.update_abnormal_status("tremor", nil, nil, player, quake_duration_timer_field);
this.update_generic_timer("stun", player, stun_duration_timer); this.update_abnormal_status("roar", nil, nil, player, ear_duration_timer_field);
this.update_generic_timer("paralysis", player, paralyze_duration_timer); this.update_abnormal_status("webbed", nil, nil, player, beto_duration_timer_field);
this.update_generic_timer("sleep", player, sleep_duration_timer); this.update_abnormal_status("stench", nil, nil, player, stink_duration_timer_field);
this.update_abnormal_status("leeched", nil, nil, player, blooding_enemy_timer_field, true);
this.update_abnormal_status("bleeding", nil, nil, player, bleeding_debuff_timer_field);
this.update_abnormal_status("engulfed", player, get_is_vacuum_damage_method);
this.update_generic_timer("defense_down", player, defense_down_duration_timer); this.update_abnormal_status("frenzy", nil, nil, player, virus_onset_timer_field);
this.update_generic_timer("resistance_down", player, resistance_down_duration_timer); this.update_abnormal_status("frenzy_overcome", nil, nil, player_data, virus_overcome_buff_timer_field);
this.update_generic_timer("tremor", player, quake_duration_timer); this.update_sleep(player);
this.update_generic_timer("roar", player, ear_duration_timer);
this.update_generic_timer("webbed", player, beto_duration_timer);
this.update_generic_timer("stench", player, stink_duration_timer);
this.update_generic_timer("leeched", player, blooding_enemy_timer, true);
-- whirlwind?
this.update_generic_timer("bleeding", player, bleeding_debuff_timer);
this.update_generic_timer("frenzy", player, virus_onset_timer_field);
this.update_generic_timer("frenzy_overcome", player_data, virus_overcome_buff_timer_field);
this.update_generic_boolean_value_method("engulfed", player, get_is_vacuum_damage_method);
this.update_generic_boolean_value_method("frostblight", player, get_is_frozen_damage_method);
end end
function this.update_generic_timer(debuff_key, timer_owner, timer_field, is_infinite) function this.update_abnormal_status(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
if is_infinite == nil then is_infinite = false; end 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
local timer = timer_field:get_data(timer_owner); function this.update_generic(key, level, timer)
if timer == nil then return buffs.update_generic(this.list, this.get_abnormal_status_name, abnormal_statuses_type_name, key, level, timer);
error_handler.report("abnormal_statuses.update_generic_timer", string.format("Failed to access Data: %s_timer", debuff_key)); end
function this.apply_filter(key)
return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.abnormal_statuses, key);
end
function this.update_poison(player)
local cached_config = config.current_config.buff_UI.filter.abnormal_statuses;
if not cached_config.poison
and not cached_config.deadly_poison then
if this.apply_filter("poison") then
return; return;
end end
if utils.number.is_equal(timer, 0) then if this.apply_filter("deadly_poison") then
this.list[debuff_key] = nil; return;
end
end
local poison_level = poison_level_field:get_data(player);
if poison_level == nil then
error_handler.report("abnormal_statuses.update_poison", "Failed to access Data: poison_level");
this.list.poison = nil;
this.list.deadly_poison = nil;
return; return;
end end
if is_infinite then if poison_level == 0 then
timer = nil; this.list.poison = nil;
this.list.deadly_poison = nil;
return;
end
if poison_level == 1 then
this.update_abnormal_status("poison", nil, nil, player, poison_duration_timer_field);
this.list.deadly_poison = nil;
else else
timer = timer / 60; this.update_abnormal_status("deadly_poison", nil, nil, player, poison_duration_timer_field);
this.list.poison = nil;
end
end end
this.update_generic(debuff_key, timer); function this.update_bubbleblight(player)
end local cached_config = config.current_config.buff_UI.filter.abnormal_statuses;
function this.update_generic_boolean_value_method(debuff_key, value_owner, value_method) if not cached_config.minor_bubbleblight
local value = value_method:call(value_owner); and not cached_config.major_bubbleblight then
if value == nil then if this.apply_filter("minor_bubbleblight") then
error_handler.report("abnormal_statuses.update_generic_boolean_value_method", string.format("Failed to access Data: %s_value", debuff_key));
return; return;
end end
if not value then if this.apply_filter("major_bubbleblight") then
this.list[debuff_key] = nil; return;
end
end
local bubble_type = bubble_type_field:get_data(player);
if bubble_type == nil then
error_handler.report("abnormal_statuses.update_bubbleblight", "Failed to access Data: bubble_Type");
this.list.minor_bubbleblight = nil;
this.list.major_bubbleblight = nil;
return; return;
end end
this.update_generic(debuff_key, nil); if bubble_type == 0 then
this.list.minor_bubbleblight = nil;
this.list.major_bubbleblight = nil;
return;
end
if bubble_type == 1 then
this.update_abnormal_status("minor_bubbleblight", nil, nil, player, bubble_damage_timer_field);
this.list.major_bubbleblight = nil;
else
this.update_abnormal_status("major_bubbleblight", nil, nil, player, bubble_damage_timer_field);
this.list.minor_bubbleblight = nil;
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
@@ -247,19 +335,25 @@ function this.update_muck(player)
return; return;
end end
this.update_generic("muck", nil); 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
@@ -270,36 +364,42 @@ 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);
this.update_generic("frenzy_infection", timer, frenzy_infected_duration); this.update_generic("frenzy_infection", 1, timer);
end end
function this.update_generic(debuff_key, timer, duration) function this.update_sleep(player)
duration = duration or timer; if this.apply_filter("sleep") then
this.list.sleep = nil;
local debuff = this.list[debuff_key]; return;
if debuff == nil then
local name = language.current_language.ailments[debuff_key];
if name == nil then
name = debuff_key;
end end
debuff = buffs.new(buffs.types.debuff, debuff_key, name, 1, duration); if this.list.falling_asleep ~= nil then
this.list[debuff_key] = debuff; this.list.sleep = nil;
elseif timer ~= nil then return;
buffs.update_timer(debuff, timer); end
this.update_abnormal_status("sleep", nil, nil, player, sleep_duration_timer_field);
end
function this.init_all_UI()
for abnormal_status_key, abnormal_status in pairs(this.list) do
buffs.init_UI(abnormal_status);
end end
end end
function this.init_names() function this.init_names()
for debuff_key, debuff in pairs(this.list) do for abnormal_status_key, abnormal_status in pairs(this.list) do
local name = language.current_language.ailments[debuff_key]; abnormal_status.name = this.get_abnormal_status_name(abnormal_status_key);
end
if name == nil then
name = debuff_key;
end end
debuff.name = name; function this.get_abnormal_status_name(key)
local abnormal_status_name = language.current_language.ailments[key];
if abnormal_status_name == nil then
return key;
end end
return abnormal_status_name;
end end
function this.init_dependencies() function this.init_dependencies()

View File

@@ -4,7 +4,7 @@ local buff_UI_entity;
local config; local config;
local singletons; local singletons;
local players; local players;
local consumables; local item_buffs;
local melody_effects; local melody_effects;
local utils; local utils;
local language; local language;
@@ -13,8 +13,12 @@ local quest_status;
local error_handler; local error_handler;
local endemic_life_buffs; local endemic_life_buffs;
local skills; local skills;
local dangos; local dango_skills;
local abnormal_statuses; local abnormal_statuses;
local otomo_moves;
local weapon_skills;
local misc_buffs;
local rampage_skills;
local sdk = sdk; local sdk = sdk;
local tostring = tostring; local tostring = tostring;
@@ -48,23 +52,18 @@ local os = os;
local ValueType = ValueType; local ValueType = ValueType;
local package = package; local package = package;
this.types = {
consumable = 0,
melody_effect = 1,
dango = 2,
skill = 4,
debuff = 8
};
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");
local player_lobby_base_type_def = sdk.find_type_definition("snow.player.PlayerLobbyBase"); local player_lobby_base_type_def = sdk.find_type_definition("snow.player.PlayerLobbyBase");
local player_base_type_def = sdk.find_type_definition("snow.player.PlayerBase");
local player_weapon_type_field = player_base_type_def:get_field("_playerWeaponType");
function this.new(type, key, name, level, duration) function this.new(type, key, name, level, duration)
local is_infinite = false; local is_infinite = false;
@@ -92,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;
@@ -112,18 +111,35 @@ 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()
consumables.init_names();
melody_effects.init_names();
endemic_life_buffs.init_names();
skills.init_names();
dangos.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();
weapon_skills.init_names();
otomo_moves.init_names();
misc_buffs.init_names();
end end
function this.update() function this.update()
@@ -148,32 +164,59 @@ function this.update()
return; return;
end end
melody_effects.update(master_player);
local master_player_data = get_player_data_method:call(master_player);
if master_player_data == nil then
error_handler.report("buffs.update", "Failed to access Data: master_player_data");
return;
end
local weapon_type = player_weapon_type_field:get_data(master_player);
if weapon_type == nil then
error_handler.report("buffs.update", "Failed to access Data: weapon_type");
return;
end
if singletons.player_manager == nil then
error_handler.report("buffs.update", "Failed to access Data: player_manager");
return;
end
local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
if item_parameter == nil then
error_handler.report("buffs.update", "Failed to access Data: item_parameter");
return;
end
local is_player_lobby_base = master_player:get_type_definition() == player_lobby_base_type_def; local is_player_lobby_base = master_player:get_type_definition() == player_lobby_base_type_def;
local master_player_data = get_player_data_method:call(master_player); item_buffs.update(master_player_data, item_parameter);
if master_player_data ~= nil then rampage_skills.update(master_player_data);
consumables.update(master_player_data); otomo_moves.update(master_player_data);
endemic_life_buffs.update(master_player_data);
skills.update(master_player, master_player_data);
dangos.update(master_player_data);
if not is_player_lobby_base then if not is_player_lobby_base then
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);
misc_buffs.update(master_player, master_player_data, item_parameter);
end end
else
error_handler.report("buffs.update", "Failed to access Data: master_player_data");
end
melody_effects.update(master_player);
end end
function this.update_timer(buff, timer) function this.update_timer(buff, timer)
buff.is_visible = true;
if timer == nil then
return;
end
if timer < 0 then if timer < 0 then
timer = 0; timer = 0;
end end
if timer > buff.duration then if timer > buff.duration or timer > buff.timer then
buff.duration = timer; buff.duration = timer;
end end
@@ -188,17 +231,150 @@ function this.update_timer(buff, timer)
end end
end end
function this.update_generic_buff(buff_list, filter_list, get_name_function,
buff_type, buff_key,
value_owner, value_holder,
timer_owner, timer_holder,
is_infinite, minimal_value, level_breakpoints)
if this.apply_filter(buff_list, filter_list, buff_key) then
return;
end
if timer_owner == nil then timer_owner = value_owner; end
if minimal_value == nil then minimal_value = 1; end
local level = 1;
if value_holder ~= nil then
local value;
if utils.type.is_REField(value_holder) then
value = value_holder:get_data(value_owner);
else
value = value_holder:call(value_owner);
end
if value == nil then
error_handler.report("buffs.update_generic_number", string.format("Failed to access Data: %s_value", buff_key));
buff_list[buff_key] = nil;
return;
end
if utils.type.is_boolean(value) then
if not value then
buff_list[buff_key] = nil;
return;
end
else
if value < minimal_value then
buff_list[buff_key] = nil;
return;
end
if level_breakpoints ~= nil then
local level_breakpoints_count = #level_breakpoints;
for index, breakpoint in ipairs(level_breakpoints) do
if value >= breakpoint then
level = 2 + level_breakpoints_count - index;
break;
end
end
end
end
end
local timer = nil;
if timer_holder ~= nil then
if utils.type.is_REField(timer_holder) then
timer = timer_holder:get_data(timer_owner);
else
timer = timer_holder:call(timer_owner);
end
if timer == nil then
error_handler.report("buffs.update_generic_number", string.format("Failed to access Data: %s_timer", buff_key));
buff_list[buff_key] = nil;
return;
end
if value_holder == nil and utils.number.is_equal(timer, 0) then
buff_list[buff_key] = nil;
return;
end
if is_infinite then
timer = nil;
else
timer = timer / 60;
end
end
return this.update_generic(buff_list, get_name_function, buff_type, buff_key, level, timer);
end
function this.update_generic(buff_list, get_name_function, buff_type, buff_key, level, timer)
level = level or 1;
local buff = buff_list[buff_key];
if buff == nil then
local name = get_name_function(buff_key);
buff = this.new(buff_type, buff_key, name, level, timer);
buff_list[buff_key] = buff;
else
if buff.level ~= level then
buff.duration = timer;
end
buff.level = level;
this.update_timer(buff, timer);
end
return buff;
end
function this.apply_filter(buff_list, filter_list, buff_key)
if filter_list[buff_key] then
return false;
end
local buff = buff_list[buff_key];
if buff == nil then
return true;
end
if not buff.is_visible then
return true;
end
if buff.is_infinite then
buff_list[buff_key] = nil;
return true;
end
time.new_delay_timer(function()
local _buff = buff_list[buff_key];
if _buff ~= nil and not _buff.is_visible then
buff_list[buff_key] = nil;
end
end, buff.timer);
buff.is_visible = false;
return true;
end
function this.draw(buff, buff_UI, position_on_screen, opacity_scale) 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
function this.init_dependencies() function this.init_dependencies()
config = require("MHR_Overlay.Misc.config"); config = require("MHR_Overlay.Misc.config");
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity"); buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
singletons = require("MHR_Overlay.Game_Handler.singletons"); singletons = require("MHR_Overlay.Game_Handler.singletons");
players = require("MHR_Overlay.Damage_Meter.players"); players = require("MHR_Overlay.Damage_Meter.players");
consumables = require("MHR_Overlay.Buffs.consumables"); item_buffs = require("MHR_Overlay.Buffs.item_buffs");
melody_effects = require("MHR_Overlay.Buffs.melody_effects"); melody_effects = require("MHR_Overlay.Buffs.melody_effects");
utils = require("MHR_Overlay.Misc.utils"); utils = require("MHR_Overlay.Misc.utils");
language = require("MHR_Overlay.Misc.language"); language = require("MHR_Overlay.Misc.language");
@@ -207,8 +383,12 @@ function this.init_dependencies()
error_handler = require("MHR_Overlay.Misc.error_handler"); error_handler = require("MHR_Overlay.Misc.error_handler");
endemic_life_buffs = require("MHR_Overlay.Buffs.endemic_life_buffs"); endemic_life_buffs = require("MHR_Overlay.Buffs.endemic_life_buffs");
skills = require("MHR_Overlay.Buffs.skills"); skills = require("MHR_Overlay.Buffs.skills");
dangos = require("MHR_Overlay.Buffs.dangos"); dango_skills = require("MHR_Overlay.Buffs.dango_skills");
abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses"); abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses");
otomo_moves = require("MHR_Overlay.Buffs.otomo_moves");
weapon_skills = require("MHR_Overlay.Buffs.weapon_skills");
rampage_skills = require("MHR_Overlay.Buffs.rampage_skills");
misc_buffs = require("MHR_Overlay.Buffs.misc_buffs");
end end
function this.init_module() function this.init_module()

View File

@@ -1,327 +0,0 @@
local this = {};
local buffs;
local buff_UI_entity;
local config;
local singletons;
local players;
local utils;
local language;
local error_handler;
local sdk = sdk;
local tostring = tostring;
local pairs = pairs;
local ipairs = ipairs;
local tonumber = tonumber;
local require = require;
local pcall = pcall;
local table = table;
local string = string;
local Vector3f = Vector3f;
local d2d = d2d;
local math = math;
local json = json;
local log = log;
local fs = fs;
local next = next;
local type = type;
local setmetatable = setmetatable;
local getmetatable = getmetatable;
local assert = assert;
local select = select;
local coroutine = coroutine;
local utf8 = utf8;
local re = re;
local imgui = imgui;
local draw = draw;
local Vector2f = Vector2f;
local reframework = reframework;
local os = os;
local ValueType = ValueType;
local package = package;
this.list = {
demondrug = nil,
mega_demondrug = nil,
armorskin = nil,
mega_armorskin = nil,
might_seed = nil,
adamant_seed = nil,
demon_powder = nil,
hardshell_powder = nil,
immunizer = nil,
dash_juice = nil,
gourmet_fish = nil,
};
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_timer_field = player_user_data_item_parameter_type_def:get_field("_MightSeedTimer");
local adamant_seed_timer_field = player_user_data_item_parameter_type_def:get_field("_AdamantSeedTimer");
local demondrug_powder_timer_field = player_user_data_item_parameter_type_def:get_field("_DemondrugPowderTimer");
local armorskin_powder_timer_field = player_user_data_item_parameter_type_def:get_field("_ArmorSkinPowderTimer");
local vitalizer_timer_const_field = player_user_data_item_parameter_type_def:get_field("_VitalizerTimer");
local stamina_up_buff_second_field = player_user_data_item_parameter_type_def:get_field("_StaminaUpBuffSecond");
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Demondrug/Mega Demondrug
local atk_up_alive_field = player_data_type_def:get_field("_AtkUpAlive");
-- Armorskin/Mega Armorskin
local def_up_alive_field = player_data_type_def:get_field("_DefUpAlive");
-- Might Seed
local atk_up_buff_second_field = player_data_type_def:get_field("_AtkUpBuffSecond");
local atk_up_buff_second_timer_field = player_data_type_def:get_field("_AtkUpBuffSecondTimer");
-- Adamant Seed
local def_up_buff_second_field = player_data_type_def:get_field("_DefUpBuffSecond");
local def_up_buff_second_timer_field = player_data_type_def:get_field("_DefUpBuffSecondTimer");
-- Demon Powder
local atk_up_item_second_field = player_data_type_def:get_field("_AtkUpItemSecond");
local atk_up_item_second_timer_field = player_data_type_def:get_field("_AtkUpItemSecondTimer");
-- Hardshell Powder
local def_up_item_second_field = player_data_type_def:get_field("_DefUpItemSecond");
local def_up_item_second_timer_field = player_data_type_def:get_field("_DefUpItemSecondTimer");
-- Immunizer
local vitalizer_timer_field = player_data_type_def:get_field("_VitalizerTimer");
-- Dash Juice
local stamina_up_buff_second_timer_field = player_data_type_def:get_field("_StaminaUpBuffSecondTimer");
-- Gourmet Fish
local fish_regene_enable_field = player_data_type_def:get_field("_FishRegeneEnableTimer");
function this.update(player_data)
local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
if item_parameter == nil then
error_handler.report("consumables.update", "Failed to access Data: item_parameter");
return;
end
this.update_demondrug(player_data, item_parameter);
this.update_armorskin(player_data, item_parameter);
this.update_gourmet_fish(player_data, item_parameter);
this.update_generic("might_seed", player_data, item_parameter,
atk_up_buff_second_field, atk_up_buff_second_timer_field, might_seed_timer_field);
this.update_generic("adamant_seed", player_data, item_parameter,
def_up_buff_second_field, def_up_buff_second_timer_field, adamant_seed_timer_field);
this.update_generic("demon_powder", player_data, item_parameter,
atk_up_item_second_field, atk_up_item_second_timer_field, demondrug_powder_timer_field);
this.update_generic("hardshell_powder", player_data, item_parameter,
def_up_item_second_field, def_up_item_second_timer_field, armorskin_powder_timer_field);
this.update_generic("immunizer", player_data, item_parameter,
nil, vitalizer_timer_field, vitalizer_timer_const_field);
this.update_generic("dash_juice", player_data, item_parameter,
nil, stamina_up_buff_second_timer_field, stamina_up_buff_second_field);
end
function this.update_generic(consumable_key, player_data, item_parameter, value_field, timer_field, timer_const_value_field)
if value_field ~= nil then
local value = value_field:get_data(player_data);
if value == nil then
error_handler.report("consumables.update_generic", string.format("Failed to access Data: %s_value", consumable_key));
return;
end
if value == 0 then
this.list[consumable_key] = nil;
return;
end
end
local timer = timer_field:get_data(player_data);
if timer == nil then
error_handler.report("consumables.update_generic", string.format("Failed to access Data: %s_timer", consumable_key));
return;
end
if value_field == nil and utils.number.is_equal(timer, 0)then
this.list[consumable_key] = nil;
return;
end
local consumable = this.list[consumable_key];
if consumable == nil then
local timer_const_value = timer_const_value_field:get_data(item_parameter);
if timer_const_value == nil then
error_handler.report("consumables.update_generic", string.format("Failed to access Data: %s_timer_const_value", consumable_key));
return;
end
local name = language.current_language.consumables[consumable_key];
consumable = buffs.new(buffs.types.consumable, consumable_key, name, 1, timer_const_value);
this.list[consumable_key] = consumable;
else
buffs.update_timer(consumable, timer / 60);
end
end
function this.update_demondrug(player_data, item_parameter)
local demondrug_value = atk_up_alive_field:get_data(player_data);
if demondrug_value == nil then
error_handler.report("consumables.update_demondrug", "Failed to access Data: demondrug_value");
return;
end
if demondrug_value == 0 then
this.list.demondrug = nil;
this.list.mega_demondrug = nil;
return;
end
local demondrug_const_value = demondrug_atk_up_field:get_data(item_parameter);
if demondrug_const_value == nil then
error_handler.report("consumables.update_demondrug", "Failed to access Data: demondrug_const_value");
return;
end
local mega_demondrug_const_value = great_demondrug_atk_up_field:get_data(item_parameter);
if mega_demondrug_const_value == nil then
error_handler.report("consumables.update_demondrug", "Failed to access Data: mega_demondrug_const_value");
return;
end
if demondrug_value == demondrug_const_value then
local buff = this.list.demondrug;
if buff ~= nil and buff.value == demondrug_value then
return;
end
local name = language.current_language.consumables.demondrug;
this.list.demondrug = buffs.new(buffs.types.consumable, "demondrug", name);
this.list.mega_demondrug = nil;
elseif demondrug_value == mega_demondrug_const_value then
local buff = this.list.mega_demondrug;
if buff ~= nil and buff.value == demondrug_value then
return;
end
local name = language.current_language.consumables.mega_demondrug;
this.list.demondrug = nil;
this.list.mega_demondrug = buffs.new(buffs.types.consumable, "mega_demondrug", name);
end
end
function this.update_armorskin(player_data, item_parameter)
local armorskin_value = def_up_alive_field:get_data(player_data);
if armorskin_value == nil then
error_handler.report("consumables.update_armorskin", "Failed to access Data: armorskin_value");
return;
end
if armorskin_value == 0 then
this.list.armorskin = nil;
this.list.mega_armorskin = nil;
return;
end
local armorskin_const_value = armorskin_def_up_field:get_data(item_parameter);
if armorskin_const_value == nil then
error_handler.report("consumables.update_armorskin", "Failed to access Data: armorskin_const_value");
return;
end
local mega_armorskin_const_value = great_armorskin_def_up_field:get_data(item_parameter);
if mega_armorskin_const_value == nil then
error_handler.report("consumables.update_armorskin", "Failed to access Data: mega_armorskin_const_value");
return;
end
if armorskin_value == armorskin_const_value then
local buff = this.list.armorskin;
if buff ~= nil and buff.value == armorskin_value then
return;
end
local name = language.current_language.consumables.armorskin;
this.list.armorskin = buffs.new(buffs.types.consumable, "armorskin", name);
this.list.mega_armorskin = nil;
elseif armorskin_value == mega_armorskin_const_value then
local buff = this.list.mega_armorskin;
if buff ~= nil and buff.value == armorskin_value then
return;
end
local name = language.current_language.consumables.mega_armorskin;
this.list.armorskin = nil;
this.list.mega_armorskin = buffs.new(buffs.types.consumable, "mega_armorskin", name);
end
end
function this.update_gourmet_fish(player_data, item_parameter)
local gourmet_fish_timer = fish_regene_enable_field:get_data(player_data);
if gourmet_fish_timer == nil then
error_handler.report("consumables.update_gourmet_fish", "Failed to access Data: gourmet_fish_timer");
return;
end
if utils.number.is_equal(gourmet_fish_timer, 0) then
this.list.gourmet_fish = nil;
return;
end
local buff = this.list.gourmet_fish;
if buff == nil then
--local gourmet_fish_timer_const_value = stamina_up_buff_second_field:get_data(item_parameter);
--if gourmet_fish_timer_const_value == nil then
-- error_handler.report("consumables.update_gourmet_fish", "Failed to access Data: gourmet_fish_timer_const_value");
-- return;
--end
local name = language.current_language.consumables.gourmet_fish;
buff = buffs.new(buffs.types.consumable, "gourmet_fish", name, 1, gourmet_fish_timer);
this.list.gourmet_fish = buff;
else
buffs.update_timer(buff, gourmet_fish_timer / 60);
end
end
function this.init_names()
for consumable_key, consumable in pairs(this.list) do
local name = language.current_language.consumables[consumable_key];
if name == nil then
name = consumable_key;
end
consumable.name = name;
end
end
function this.init_dependencies()
buffs = require("MHR_Overlay.Buffs.buffs");
config = require("MHR_Overlay.Misc.config");
utils = require("MHR_Overlay.Misc.utils");
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
singletons = require("MHR_Overlay.Game_Handler.singletons");
players = require("MHR_Overlay.Damage_Meter.players");
language = require("MHR_Overlay.Misc.language");
error_handler = require("MHR_Overlay.Misc.error_handler");
end
function this.init_module()
end
return this;

View File

@@ -0,0 +1,405 @@
local this = {};
local buffs;
local buff_UI_entity;
local config;
local singletons;
local players;
local utils;
local language;
local error_handler;
local time;
local sdk = sdk;
local tostring = tostring;
local pairs = pairs;
local ipairs = ipairs;
local tonumber = tonumber;
local require = require;
local pcall = pcall;
local table = table;
local string = string;
local Vector3f = Vector3f;
local d2d = d2d;
local math = math;
local json = json;
local log = log;
local fs = fs;
local next = next;
local type = type;
local setmetatable = setmetatable;
local getmetatable = getmetatable;
local assert = assert;
local select = select;
local coroutine = coroutine;
local utf8 = utf8;
local re = re;
local imgui = imgui;
local draw = draw;
local Vector2f = Vector2f;
local reframework = reframework;
local os = os;
local ValueType = ValueType;
local package = package;
this.list = {
dango_adrenaline = nil,
dango_booster = nil,
dango_connector = nil,
dango_defender = nil,
dango_flyer = nil,
dango_glutton = nil,
dango_hunter = nil,
dango_insurance = nil,
dango_insurance_defense_up = nil,
super_recovery_dango = nil
};
this.keys = {
"dango_adrenaline",
"dango_booster",
"dango_connector",
"dango_defender",
"dango_flyer",
"dango_glutton",
"dango_hunter",
"dango_insurance",
"dango_insurance_defense_up",
"super_recovery_dango"
};
local dango_skill_ids = {
-- dango_polisher = 1,
-- dango_rider = 2,
dango_adrenaline = 3,
-- dango_carver_lo = 4,
-- dango_carver_hi = 5,
-- dango_medic_lo = 6,
-- dango_medic_hi = 7,
-- dango_fighter = 8,
-- dango_pyro = 9,
-- dango_specialist = 10,
-- dango_defender_lo = 11,
-- dango_defender_hi = 12,
-- dango_harvester = 13,
-- dango_marksman = 14,
-- dango_fortune_caller = 15,
-- dango_miracle_worker = 16,
-- dango_deflector = 17,
-- dango_weakener = 18,
-- dango_calculator = 19,
-- dango_temper = 20,
-- dango_wall_runner = 21,
-- dango_slugger = 22,
-- dango_money_maker = 23,
-- dango_bombardier = 24,
-- dango_moxie = 25,
-- dango_immunizer = 26,
-- dango_trainer = 27,
dango_booster = 28,
-- dango_feet = 29,
dango_bulker = 30,
dango_insurance = 31,
-- dango_reviver = 32,
-- dango_summoner = 33,
-- dango_hurler = 34,
-- dango_fire_res_lo = 35,
-- dango_fire_res_hi = 36,
-- dango_water_res_lo = 37,
-- dango_water_res_hi = 38,
-- dango_thunder_res_lo = 39,
-- dango_thunder_res_hi = 40,
-- dango_ice_res_lo = 41,
-- dango_ice_res_hi = 42,
-- dango_dragon_res_lo = 43,
-- dango_dragon_res_hi = 44,
-- dango_gatherer = 45,
dango_glutton = 46,
-- dango_bird_caller = 47,
dango_flyer = 48,
dango_defender = 49,
-- enhanced_dango_fighter = 50,
-- dango_driver = 51,
dango_hunter = 52,
-- dango_guard = 53,
-- dango_shifter = 54,
dango_connector = 55,
super_recovery_dango = 56
};
this.is_dango_adrenaline_active = false;
local dango_skills_type_name = "dango_skills";
local dango_bulker_attack_up = 15;
local previous_super_recovery_dango_timer = 0;
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
local has_anyone_kitchen_skill_in_quest_method = player_manager_type_def:get_method("hasAnyoneKitchenSkillInQuest");
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Dango Defender
local is_enable_kitchen_skill_048_reduce_field = player_data_type_def:get_field("_IsEnable_KitchenSkill048_Reduce");
-- Dango Booster
local kitchen_skill_027_timer_field = player_data_type_def:get_field("_KitchenSkill027Timer");
-- Dango Glutton
local kitchen_skill_045_timer_field = player_data_type_def:get_field("_KitchenSkill045Timer");
-- Dango Insurance
local kitchen_skill_insurance_def_up_lv3_field = player_data_type_def:get_field("_KitchenSkill_Insurance_DefUp_Lv3");
local kitchen_skill_insurance_def_up_lv4_field = player_data_type_def:get_field("_KitchenSkill_Insurance_DefUp_Lv4");
-- Dango Hunter
local kitchen_skill_051_atk_up_timer_field = player_data_type_def:get_field("_KitchenSkill051_AtkUpTimer");
-- Dango Connector
local kitchen_skill_054_timer_field = player_data_type_def:get_field("_KitchenSkill054_Timer");
local player_base_type_def = sdk.find_type_definition("snow.player.PlayerBase");
-- Dango Adrenaline
-- local is_kitchen_skill_predicament_powerup_method = player_base_type_def:get_method("isKitchenSkillPredicamentPowerUp");
-- Dango Flyer
local get_is_kitchen_skill_wire_stop_heal_spd_method = player_base_type_def:get_method("get_IsKitchenSkill_WireStop_HealSpd");
local get_is_kitchen_skill_wire_stop_regene_method = player_base_type_def:get_method("get_IsKitchenSkill_WireStop_Regene");
-- Super Recovery Dango
local get_kitchen_skill_surume_regene_timer_method = player_base_type_def:get_method("get_KitchenSkill_Surume_RegeneTimer");
local 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 quest_manager_type_def = sdk.find_type_definition("snow.QuestManager");
local flag_cat_skill_insurance_field = quest_manager_type_def:get_field("_FlagCatSkillInsurance");
local is_cat_skill_insurance_method = quest_manager_type_def:get_method("isCatSkillInsurance");
function this.update(player, player_data)
this.update_dango_adrenaline();
this.update_dango_hunter(player_data);
this.update_dango_insurance();
this.update_dango_insurance_defense_up(player_data);
this.update_dango_flyer(player);
this.update_super_recovery_dango(player);
this.update_dango_skill("dango_booster", nil, nil, player_data, kitchen_skill_027_timer_field);
this.update_dango_skill("dango_defender", player_data, is_enable_kitchen_skill_048_reduce_field, nil, nil, true);
this.update_dango_skill("dango_glutton", nil, nil, player_data, kitchen_skill_045_timer_field);
this.update_dango_skill("dango_connector", nil, nil, player_data, kitchen_skill_054_timer_field);
end
function this.update_dango_skill(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.dango_skills, this.get_dango_skill_name,
dango_skills_type_name, key,
value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints);
end
function this.update_generic(key, level, timer)
return buffs.update_generic(this.list, this.get_dango_skill_name, dango_skills_type_name, key, level, timer);
end
function this.apply_filter(key)
return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.dango_skills, key);
end
function this.update_dango_adrenaline()
if this.apply_filter("dango_adrenaline") then
return;
end
if not this.is_dango_adrenaline_active then
this.list.dango_adrenaline = nil;
return;
end
this.update_generic("dango_adrenaline");
end
function this.update_dango_insurance()
if this.apply_filter("dango_insurance") then
return;
end
if singletons.player_manager == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: player_manager");
this.list.dango_insurance = nil;
return;
end
if singletons.quest_manager == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: quest_manager");
this.list.dango_insurance = nil;
return;
end
local has_insurance_skill = has_anyone_kitchen_skill_in_quest_method:call(singletons.player_manager, dango_skill_ids.dango_insurance);
local flag_cat_skill_insurance = flag_cat_skill_insurance_field:get_data(singletons.quest_manager);
if flag_cat_skill_insurance == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: flag_cat_skill_insurance");
this.list.dango_insurance = nil;
return;
end
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
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: is_cat_skill_insurance");
this.list.dango_insurance = nil;
return;
end
if not has_insurance_skill or is_cat_skill_insurance then
this.list.dango_insurance = nil;
return;
end
this.update_generic("dango_insurance");
end
function this.update_dango_insurance_defense_up(player_data)
if this.apply_filter("dango_insurance_defense_up") then
return;
end
local level = 3;
local insurance_def_up_lv3 = kitchen_skill_insurance_def_up_lv3_field:get_data(player_data);
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");
this.list.dango_insurance_defense_up = nil;
return;
end
if not insurance_def_up_lv3 then
local insurance_def_up_lv4 = kitchen_skill_insurance_def_up_lv4_field:get_data(player_data);
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");
this.list.dango_insurance_defense_up = nil;
return;
end
if not insurance_def_up_lv4 then
this.list.dango_insurance_defense_up = nil;
return;
end
level = 4;
end
this.update_generic("dango_insurance_defense_up", level);
end
function this.update_dango_flyer(player)
if this.apply_filter("dango_flyer") then
return;
end
local level = 4;
local is_kitchen_skill_wire_stop_regene = get_is_kitchen_skill_wire_stop_regene_method:call(player);
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");
this.list.dango_flyer = nil;
return;
end
if not is_kitchen_skill_wire_stop_regene then
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
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;
end
if not is_kitchen_skill_wire_stop_regene then
this.list.dango_flyer = nil;
return;
end
level = 3;
end
this.update_generic("dango_flyer", level);
end
function this.update_dango_hunter(player_data)
local dango_hunter_buff = this.update_dango_skill("dango_hunter", nil, nil, player_data, kitchen_skill_051_atk_up_timer_field);
if dango_hunter_buff ~= nil then
dango_hunter_buff.level = 4;
end
end
function this.update_super_recovery_dango(player)
if this.apply_filter("super_recovery_dango") then
return;
end
local kitchen_skill_surume_regene_timer = get_kitchen_skill_surume_regene_timer_method:call(player);
if kitchen_skill_surume_regene_timer == nil then
error_handler.report("dango_skills.update_super_recovery_dango", "Failed to access Data: kitchen_skill_surume_regene_timer");
this.list.super_recovery_dango = nil;
return;
end
if utils.number.is_equal(kitchen_skill_surume_regene_timer, 0)
and utils.number.is_equal(previous_super_recovery_dango_timer, 0) then
this.list.super_recovery_dango = nil;
return;
end
previous_super_recovery_dango_timer = kitchen_skill_surume_regene_timer;
this.update_generic("super_recovery_dango");
end
function this.init_all_UI()
for dango_skill_key, dango_skill in pairs(this.list) do
buffs.init_UI(dango_skill);
end
end
function this.init_names()
for dango_skill_key, dango_skill in pairs(this.list) do
dango_skill.name = this.get_dango_skill_name(dango_skill_key);
end
end
function this.get_dango_skill_name(key)
local dango_skill_id = dango_skill_ids[key];
if dango_skill_id == nil then
local dango_skill_name = language.current_language.dango_skills[key];
if dango_skill_name == nil then
return key;
end
return dango_skill_name;
end
local dango_skill_name = get_name_method:call(nil, dango_skill_id);
if dango_skill_name == nil then
error_handler.report("dango_skills.get_dango_name", string.format("Failed to access Data: %s_name", key));
return key;
end
return dango_skill_name;
end
function this.init_dependencies()
buffs = require("MHR_Overlay.Buffs.buffs");
config = require("MHR_Overlay.Misc.config");
utils = require("MHR_Overlay.Misc.utils");
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
singletons = require("MHR_Overlay.Game_Handler.singletons");
players = require("MHR_Overlay.Damage_Meter.players");
language = require("MHR_Overlay.Misc.language");
error_handler = require("MHR_Overlay.Misc.error_handler");
time = require("MHR_Overlay.Game_Handler.time");
end
function this.init_module()
end
return this;

View File

@@ -1,129 +0,0 @@
local this = {};
local buffs;
local buff_UI_entity;
local config;
local singletons;
local players;
local utils;
local language;
local error_handler;
local sdk = sdk;
local tostring = tostring;
local pairs = pairs;
local ipairs = ipairs;
local tonumber = tonumber;
local require = require;
local pcall = pcall;
local table = table;
local string = string;
local Vector3f = Vector3f;
local d2d = d2d;
local math = math;
local json = json;
local log = log;
local fs = fs;
local next = next;
local type = type;
local setmetatable = setmetatable;
local getmetatable = getmetatable;
local assert = assert;
local select = select;
local coroutine = coroutine;
local utf8 = utf8;
local re = re;
local imgui = imgui;
local draw = draw;
local Vector2f = Vector2f;
local reframework = reframework;
local os = os;
local ValueType = ValueType;
local package = package;
this.list = {
dango_defender = nil,
};
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_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");
-- Dango Defender
local kitchen_skill_048_field = player_data_type_def:get_field("_KitchenSkill048_Damage");
function this.update(player_data)
local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
if item_parameter == nil then
error_handler.report("dangos.update", "Failed to access Data: item_parameter");
return;
end
--this.update_dango_defender(player_data, item_parameter);
end
-- Not working??
function this.update_dango_defender(player_data, item_parameter)
local dango_defender_value = kitchen_skill_048_field:get_data(player_data);
if dango_defender_value == nil then
error_handler.report("dangos.update_dango_defender", "Failed to access Data: dango_defender_value");
return;
end
if dango_defender_value < 200 then
this.list.dango_defender = nil;
return;
end
local buff = this.list.dango_defender;
if buff ~= nil then
return;
end
local name = language.current_language.dangos.dango_defender_hi;
this.list.dango_defender = buffs.new(buffs.types.dango, "dango_defender", name, 1);
end
function this.init_names()
for dango_key, dango in pairs(this.list) do
local name = language.current_language.dangos[dango_key];
if name == nil then
name = dango_key;
end
dango.name = name;
end
end
function this.init_dependencies()
buffs = require("MHR_Overlay.Buffs.buffs");
config = require("MHR_Overlay.Misc.config");
utils = require("MHR_Overlay.Misc.utils");
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
singletons = require("MHR_Overlay.Game_Handler.singletons");
players = require("MHR_Overlay.Damage_Meter.players");
language = require("MHR_Overlay.Misc.language");
error_handler = require("MHR_Overlay.Misc.error_handler");
end
function this.init_module()
end
return this;

View File

@@ -9,6 +9,8 @@ local utils;
local language; local language;
local error_handler; local error_handler;
local env_creature; local env_creature;
local item_buffs;
local time;
local sdk = sdk; local sdk = sdk;
local tostring = tostring; local tostring = tostring;
@@ -44,94 +46,167 @@ local package = package;
this.list = { this.list = {
cutterfly = nil, cutterfly = nil,
clothfly = nil clothfly = nil,
butterflame = nil,
-- peepersects = nil,
stinkmink = nil,
ruby_wirebug = nil,
gold_wirebug = nil,
red_lampsquid = nil,
yellow_lampsquid = nil
}; };
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager"); this.keys = {
local get_player_data_method = player_manager_type_def:get_method("get_PlayerData"); "cutterfly",
local get_ref_item_parameter_method = player_manager_type_def:get_method("get_RefItemParameter"); "clothfly",
"butterflame",
-- "peepersects",
"stinkmink",
"ruby_wirebug",
"gold_wirebug",
"red_lampsquid",
"yellow_lampsquid"
};
this.peepersects_duration = 90;
this.butterflame_attack_up = 25;
local endemic_life_buffs_type_name = "endemic_life_buffs";
local marionette_mode_types = { "ruby_wirebug", "gold_wirebug" };
local 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");
-- Clothfly -- Clothfly
local def_up_buff_second_rate_timer_field = player_data_type_def:get_field("_DefUpBuffSecondRateTimer"); local def_up_buff_second_rate_timer_field = player_data_type_def:get_field("_DefUpBuffSecondRateTimer");
-- Ruby/Gold Wirebugs
local wirebug_powerup_timer_field = player_data_type_def:get_field("_WireBugPowerUpTimer");
-- Butterflame
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");
-- Stinkmink
local lead_enemy_timer_field = player_data_type_def:get_field("_LeadEnemyTimer");
-- Red Lampsquid
local atk_up_ec_second_timer_field = player_data_type_def:get_field("_AtkUpEcSecondTimer");
-- Yellow Lampsquid
local def_up_ec_second_timer_field = player_data_type_def:get_field("_DefUpEcSecondTimer");
local player_quest_base_type_def = sdk.find_type_definition("snow.player.PlayerQuestBase");
-- Ruby/Gold Wirebugs
local get_marionette_mode_type_method = player_quest_base_type_def:get_method("get_MarionetteModeType");
local message_manager_type_def = sdk.find_type_definition("snow.gui.MessageManager"); 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_env_creature_name_message_method = message_manager_type_def:get_method("getEnvCreatureNameMessage");
function this.update(player_data) function this.update(player, player_data, item_parameter)
local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager); this.update_ruby_and_gold_wirebugs(player, player_data);
if item_parameter == nil then this.update_butterflame(player_data);
error_handler.report("endemic_life_buffs.update", "Failed to access Data: item_parameter");
this.update_endemic_life_buff("cutterfly", nil, nil, player_data, crit_up_ec_second_timer_field);
this.update_endemic_life_buff("clothfly", nil, nil, player_data, def_up_buff_second_rate_timer_field);
this.update_endemic_life_buff("stinkmink", nil, nil, player_data, lead_enemy_timer_field);
this.update_endemic_life_buff("red_lampsquid", nil, nil, player_data, atk_up_ec_second_timer_field);
this.update_endemic_life_buff("yellow_lampsquid", nil, nil, player_data, def_up_ec_second_timer_field);
end
function this.update_endemic_life_buff(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.endemic_life_buffs, this.get_endemic_life_name,
endemic_life_buffs_type_name, key,
value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
end
function this.update_generic(key, level, timer)
return buffs.update_generic(this.list, this.get_endemic_life_name, endemic_life_buffs_type_name, key, level, timer);
end
function this.apply_filter(key)
return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.endemic_life_buffs, key);
end
function this.update_ruby_and_gold_wirebugs(player, player_data)
local cached_config = config.current_config.buff_UI.filter.endemic_life_buffs;
if not cached_config.ruby_wirebug
and not cached_config.gold_wirebug then
if this.apply_filter("ruby_wirebug") then
return; return;
end end
this.update_cutterfly(player_data, item_parameter); if this.apply_filter("gold_wirebug") then
this.update_clothfly(player_data, item_parameter);
end
function this.update_cutterfly(player_data, item_parameter)
local cutterfly_timer = crit_up_ec_second_timer_field:get_data(player_data);
if cutterfly_timer == nil then
error_handler.report("endemic_life_buffs.update_cutterfly", "Failed to access Data: cutterfly_timer");
return; return;
end end
if utils.number.is_equal(cutterfly_timer, 0) then
this.list.cutterfly = nil;
return;
end end
local buff = this.list.cutterfly; local marionette_mode_type = get_marionette_mode_type_method:call(player);
if marionette_mode_type == nil then
if buff == nil then error_handler.report("endemic_life_buffs.update_ruby_and_gold_wirebugs", "Failed to access Data: marionette_mode_type");
local name = get_env_creature_name_message_method:call(singletons.message_manager, env_creature.creature_ids.cutterfly); this.list.ruby_wirebug = nil;
if name == nil then this.list.gold_wirebug = nil;
error_handler.report("endemic_life_buffs.update_cutterfly", "Failed to access Data: name");
return;
end end
buff = buffs.new(buffs.types.consumable, "cutterfly", name, 1, cutterfly_timer / 60); if marionette_mode_type ~= 1 and marionette_mode_type ~= 2 then
this.list.cutterfly = buff; this.list.ruby_wirebug = nil;
this.list.gold_wirebug = nil;
return;
elseif marionette_mode_type ~= 1 then
this.list.ruby_wirebug = nil;
else else
buffs.update_timer(buff, cutterfly_timer / 60); this.list.gold_wirebug = nil;
end
end end
function this.update_clothfly(player_data, item_parameter) local endemic_life_buff_key = marionette_mode_types[marionette_mode_type];
local clothfly_timer = def_up_buff_second_rate_timer_field:get_data(player_data); this.update_endemic_life_buff(endemic_life_buff_key, nil, nil, player_data, wirebug_powerup_timer_field);
if clothfly_timer == nil then end
error_handler.report("endemic_life_buffs.update_clothfly", "Failed to access Data: clothfly_timer");
function this.update_butterflame(player_data)
if this.apply_filter("butterflame") then
return; return;
end end
if utils.number.is_equal(clothfly_timer, 0) then local atk_up_buff_second = atk_up_buff_second_field:get_data(player_data);
this.list.clothfly = nil; 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;
return; return;
end end
local buff = this.list.clothfly; if atk_up_buff_second ~= this.butterflame_attack_up then
this.list.butterflame = nil;
if buff == nil then
local name = get_env_creature_name_message_method:call(singletons.message_manager, env_creature.creature_ids.clothfly);
if name == nil then
error_handler.report("endemic_life_buffs.update_clothfly", "Failed to access Data: name");
return; return;
end end
buff = buffs.new(buffs.types.consumable, "clothfly", name, 1, clothfly_timer / 60); this.update_endemic_life_buff("butterflame", nil, nil, player_data, atk_up_buff_second_timer_field);
this.list.clothfly = buff; end
else
buffs.update_timer(buff, clothfly_timer / 60); function this.init_all_UI()
for endemic_life_key, endemic_life in pairs(this.list) do
buffs.init_UI(endemic_life);
end end
end end
function this.init_names() function this.init_names()
-- Nothing to do here for endemic_life_key, endemic_life in pairs(this.list) do
endemic_life.name = this.get_endemic_life_name(endemic_life_key);
end
end
function this.get_endemic_life_name(key)
if singletons.message_manager == nil then
error_handler.report("endemic_life_buffs.get_endemic_life_name", "Failed to access Data: message_manager");
return key;
end
local endemic_life_name = get_env_creature_name_message_method:call(singletons.message_manager, env_creature.creature_ids[key]);
if endemic_life_name == nil then
error_handler.report("endemic_life_buffs.get_endemic_life_name", string.format("Failed to access Data: %s_name", key));
return key;
end
return endemic_life_name;
end end
function this.init_dependencies() function this.init_dependencies()
@@ -144,6 +219,8 @@ function this.init_dependencies()
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");
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");
time = require("MHR_Overlay.Game_Handler.time");
end end
function this.init_module() function this.init_module()

View File

@@ -0,0 +1,340 @@
local this = {};
local buffs;
local buff_UI_entity;
local config;
local singletons;
local players;
local utils;
local language;
local error_handler;
local endemic_life_buffs;
local sdk = sdk;
local tostring = tostring;
local pairs = pairs;
local ipairs = ipairs;
local tonumber = tonumber;
local require = require;
local pcall = pcall;
local table = table;
local string = string;
local Vector3f = Vector3f;
local d2d = d2d;
local math = math;
local json = json;
local log = log;
local fs = fs;
local next = next;
local type = type;
local setmetatable = setmetatable;
local getmetatable = getmetatable;
local assert = assert;
local select = select;
local coroutine = coroutine;
local utf8 = utf8;
local re = re;
local imgui = imgui;
local draw = draw;
local Vector2f = Vector2f;
local reframework = reframework;
local os = os;
local ValueType = ValueType;
local package = package;
this.list = {
demondrug = nil,
mega_demondrug = nil,
armorskin = nil,
mega_armorskin = nil,
might_seed = nil,
-- adamant_seed = nil,
demon_powder = nil,
hardshell_powder = nil,
-- immunizer = nil,
-- dash_juice = nil,
gourmet_fish = nil,
demon_ammo = nil,
armor_ammo = nil
};
this.keys = {
"demondrug",
"mega_demondrug",
"armorskin",
"mega_armorskin",
"might_seed",
-- "adamant_seed",
"demon_powder",
"hardshell_powder",
-- "immunizer",
-- "dash_juice",
"gourmet_fish",
"demon_ammo",
"armor_ammo"
};
local item_ids = {
demondrug = 68157917,
mega_demondrug = 68157918,
armorskin = 68157922,
mega_armorskin = 68157923,
might_seed = 68157919,
-- adamant_seed = 68157924,
demon_powder = 68157920,
hardshell_powder = 68157925,
-- immunizer = 68157911,
-- dash_juice = 68157913,
gourmet_fish = 68157909,
demon_ammo = 68157595,
armor_ammo = 68157596
}
this.might_seed_attack_up = 10;
local item_buffs_type_name = "item_buffs";
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Demondrug/Mega Demondrug
local atk_up_alive_field = player_data_type_def:get_field("_AtkUpAlive");
-- Armorskin/Mega Armorskin
local def_up_alive_field = player_data_type_def:get_field("_DefUpAlive");
-- Might Seed
local atk_up_buff_second_field = player_data_type_def:get_field("_AtkUpBuffSecond");
local atk_up_buff_second_timer_field = player_data_type_def:get_field("_AtkUpBuffSecondTimer");
-- Demon Powder
local atk_up_item_second_field = player_data_type_def:get_field("_AtkUpItemSecond");
local atk_up_item_second_timer_field = player_data_type_def:get_field("_AtkUpItemSecondTimer");
-- Hardshell Powder
local def_up_item_second_field = player_data_type_def:get_field("_DefUpItemSecond");
local def_up_item_second_timer_field = player_data_type_def:get_field("_DefUpItemSecondTimer");
-- Gourmet Fish
local fish_regene_enable_field = player_data_type_def:get_field("_FishRegeneEnableTimer");
-- Demon Ammo
local kijin_bullet_timer_field = player_data_type_def:get_field("_KijinBulletTimer");
-- Armor Ammo
local kouka_bullet_timer_field = player_data_type_def:get_field("_KoukaBulletTimer");
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
local get_ref_item_parameter_method = player_manager_type_def:get_method("get_RefItemParameter");
local player_user_data_item_parameter_type_def = get_ref_item_parameter_method:get_return_type();
-- Demondrug/Mega Demondrug
local demondrug_atk_up_field = player_user_data_item_parameter_type_def:get_field("_DemondrugAtkUp");
local great_demondrug_atk_up_field = player_user_data_item_parameter_type_def:get_field("_GreatDemondrugAtkUp");
-- Armorskin/Mega Armorskin
local armorskin_def_up_field = player_user_data_item_parameter_type_def:get_field("_ArmorSkinDefUp");
local great_armorskin_def_up_field = player_user_data_item_parameter_type_def:get_field("_GreatArmorSkinDefUp");
-- Might Seed
local might_seed_atk_up_field = player_user_data_item_parameter_type_def:get_field("_MightSeedAtkUp");
local data_shortcut_type_def = sdk.find_type_definition("snow.data.DataShortcut");
local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.ContentsIdSystem.ItemId)");
function this.update(player_data, item_parameter)
this.update_demondrug(player_data, item_parameter);
this.update_armorskin(player_data, item_parameter);
this.update_might_seed(player_data, item_parameter);
this.update_item_buff("demon_powder", player_data, atk_up_item_second_field, player_data, atk_up_item_second_timer_field);
this.update_item_buff("hardshell_powder", player_data, def_up_item_second_field, player_data, def_up_item_second_timer_field);
this.update_item_buff("gourmet_fish", nil, nil, player_data, fish_regene_enable_field);
this.update_item_buff("demon_ammo", nil, nil, player_data, kijin_bullet_timer_field);
this.update_item_buff("armor_ammo", nil, nil, player_data, kouka_bullet_timer_field);
end
function this.update_item_buff(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.item_buffs, this.get_item_buff_name,
item_buffs_type_name, key,
value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
end
function this.update_generic(key, level, timer)
return buffs.update_generic(this.list, this.get_item_buff_name, item_buffs_type_name, key, level, timer);
end
function this.apply_filter(key)
return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.item_buffs, key);
end
function this.update_demondrug(player_data, item_parameter)
local cached_config = config.current_config.buff_UI.filter.item_buffs;
if not cached_config.demondrug and not cached_config.mega_demondrug then
this.list.demondrug = nil;
this.list.mega_demondrug = nil;
return;
end
local demondrug_value = atk_up_alive_field:get_data(player_data);
if demondrug_value == nil then
error_handler.report("item_buffs.update_demondrug", "Failed to access Data: demondrug_value");
this.list.demondrug = nil;
this.list.mega_demondrug = nil;
return;
end
if demondrug_value == 0 then
this.list.demondrug = nil;
this.list.mega_demondrug = nil;
return;
end
local demondrug_const_value = demondrug_atk_up_field:get_data(item_parameter);
if demondrug_const_value == nil then
error_handler.report("item_buffs.update_demondrug", "Failed to access Data: demondrug_const_value");
this.list.demondrug = nil;
this.list.mega_demondrug = nil;
return;
end
local mega_demondrug_const_value = great_demondrug_atk_up_field:get_data(item_parameter);
if mega_demondrug_const_value == nil then
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;
end
local item_key;
if demondrug_value == demondrug_const_value then
item_key = "demondrug";
this.list.mega_demondrug = nil;
elseif demondrug_value == mega_demondrug_const_value then
item_key = "mega_demondrug";
this.list.demondrug = nil;
end
if not cached_config[item_key] then
this.list[item_key] = nil;
return;
end
this.update_generic(item_key);
end
function this.update_armorskin(player_data, item_parameter)
local cached_config = config.current_config.buff_UI.filter.item_buffs;
if not cached_config.armorskin and not cached_config.mega_armorskin then
this.list.armorskin = nil;
this.list.mega_armorskin = nil;
return;
end
local armorskin_value = def_up_alive_field:get_data(player_data);
if armorskin_value == nil then
error_handler.report("item_buffs.update_armorskin", "Failed to access Data: armorskin_value");
this.list.armorskin = nil;
this.list.mega_armorskin = nil;
return;
end
if armorskin_value == 0 then
this.list.armorskin = nil;
this.list.mega_armorskin = nil;
return;
end
local armorskin_const_value = armorskin_def_up_field:get_data(item_parameter);
if armorskin_const_value == nil then
error_handler.report("item_buffs.update_armorskin", "Failed to access Data: armorskin_const_value");
this.list.armorskin = nil;
this.list.mega_armorskin = nil;
return;
end
local mega_armorskin_const_value = great_armorskin_def_up_field:get_data(item_parameter);
if mega_armorskin_const_value == nil then
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;
end
local item_key;
if armorskin_value == armorskin_const_value then
item_key = "armorskin";
this.list.mega_armorskin = nil;
elseif armorskin_value == mega_armorskin_const_value then
item_key = "mega_armorskin";
this.list.armorskin = nil;
end
if not cached_config[item_key] then
this.list[item_key] = nil;
return;
end
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
function this.init_dependencies()
buffs = require("MHR_Overlay.Buffs.buffs");
config = require("MHR_Overlay.Misc.config");
utils = require("MHR_Overlay.Misc.utils");
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
singletons = require("MHR_Overlay.Game_Handler.singletons");
players = require("MHR_Overlay.Damage_Meter.players");
language = require("MHR_Overlay.Misc.language");
error_handler = require("MHR_Overlay.Misc.error_handler");
endemic_life_buffs = require("MHR_Overlay.Buffs.endemic_life_buffs");
end
function this.init_module()
end
return this;

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;
@@ -41,7 +42,7 @@ local os = os;
local ValueType = ValueType; local ValueType = ValueType;
local package = package; local package = package;
local ids = { --[[local melody_effect_ids = {
self_improvement = 0, self_improvement = 0,
attack_up = 1, attack_up = 1,
defense_up = 2, defense_up = 2,
@@ -70,9 +71,9 @@ local ids = {
infernal_melody = 25, infernal_melody = 25,
sharpness_regeneration = 26, sharpness_regeneration = 26,
sharpness_extension = 27 sharpness_extension = 27
}; };]]
local melody_effect_keys = { this.keys = {
"self_improvement", "self_improvement",
"attack_up", "attack_up",
"defense_up", "defense_up",
@@ -105,6 +106,8 @@ local melody_effect_keys = {
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");
@@ -118,6 +121,9 @@ 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_length_method = system_array_type_def:get_method("get_Length");
local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)"); local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)");
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.HornConcertId)");
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
@@ -125,28 +131,42 @@ function this.update(master_player)
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+1, 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(lua_index, melody_data) function this.update_melody_effect(lua_index, id, key, melody_effect, melody_data)
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", "Failed to access Data: melody_timer No. " .. tostring(lua_index - 1)); 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
@@ -155,28 +175,69 @@ function this.update_melody_effect(lua_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_key = melody_effect_keys[lua_index]; local melody_effect_name = this.get_melody_effect_name(id);
local name = language.current_language.melody_effects[melody_effect_key];
melody_effect = buffs.new(buffs.types.melody_effect, melody_effect_key, 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.apply_filter(key, lua_index)
if config.current_config.buff_UI.filter.melody_effects[key] then
return false;
end
local buff = this.list[lua_index];
if buff == nil then
return true;
end
if not buff.is_visible then
return true;
end
if buff.is_infinite then
this.list[lua_index] = nil;
return true;
end
time.new_delay_timer(function()
local _buff = this.list[lua_index];
if _buff ~= nil and not _buff.is_visible then
this.list[lua_index] = nil;
end
end, buff.timer);
buff.is_visible = false;
return true;
end
function this.init_all_UI()
for melody_effect_id, melody_effect in pairs(this.list) do
buffs.init_UI(melody_effect);
end
end
function this.init_names() function this.init_names()
for index, dango in pairs(this.list) do for melody_effect_id, melody_effect in pairs(this.list) do
local name = language.current_language.dangos[dango.key]; melody_effect.name = this.get_melody_effect_name(melody_effect_id - 1);
end
if name == nil then
name = dango.key;
end end
dango.name = name; function this.get_melody_effect_name(id)
local melody_effect_name = get_name_method:call(nil, id);
if melody_effect_name == nil then
local name = string.format("Melody Effect No. %d", id);
error_handler.report("melody_effects.get_melody_effect_name", "Failed to access Data: " .. melody_effect_name);
return name;
end end
return melody_effect_name;
end end
function this.init_dependencies() function this.init_dependencies()
@@ -188,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

@@ -0,0 +1,190 @@
local this = {};
local buffs;
local buff_UI_entity;
local config;
local singletons;
local players;
local utils;
local language;
local error_handler;
local endemic_life_buffs;
local item_buffs;
local sdk = sdk;
local tostring = tostring;
local pairs = pairs;
local ipairs = ipairs;
local tonumber = tonumber;
local require = require;
local pcall = pcall;
local table = table;
local string = string;
local Vector3f = Vector3f;
local d2d = d2d;
local math = math;
local json = json;
local log = log;
local fs = fs;
local next = next;
local type = type;
local setmetatable = setmetatable;
local getmetatable = getmetatable;
local assert = assert;
local select = select;
local coroutine = coroutine;
local utf8 = utf8;
local re = re;
local imgui = imgui;
local draw = draw;
local Vector2f = Vector2f;
local reframework = reframework;
local os = os;
local ValueType = ValueType;
local package = package;
this.list = {
attack_up = nil,
defense_up = nil,
stamina_use_down = nil,
natural_healing_up = nil,
immunity = nil
};
this.keys = {
"attack_up",
"defense_up",
"stamina_use_down",
"natural_healing_up",
"immunity"
};
-- Attack Up
-- Might Seed +10 3min -- Separated
-- Dango Bulker + 15 30sec
-- Chameleos Soul +15 30sec
-- Butterflame +25 1min -- Separated
-- Defense Up
-- Adamant Seed +20 3min
-- Chameleos Souls +20 30sec
-- Stamina Use Down
-- Dash Juice 3min
-- Peepersects 1.5min
-- Chameleos Soul 30sec
-- Natural Healing Up
-- Immunizer 5min
-- Vase of Vitality 20sec
local misc_buffs_type_name = "misc_buffs";
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Attack Up
local atk_up_buff_second_field = player_data_type_def:get_field("_AtkUpBuffSecond");
local atk_up_buff_second_timer_field = player_data_type_def:get_field("_AtkUpBuffSecondTimer");
-- Defense Up
local def_up_buff_second_field = player_data_type_def:get_field("_DefUpBuffSecond");
local def_up_buff_second_timer_field = player_data_type_def:get_field("_DefUpBuffSecondTimer");
-- Stamina Use Down
local stamina_up_buff_second_timer_field = player_data_type_def:get_field("_StaminaUpBuffSecondTimer");
-- Immunity
local debuff_prevention_timer_field = player_data_type_def:get_field("_DebuffPreventionTimer");
-- Immunizer
local vitalizer_timer_field = player_data_type_def:get_field("_VitalizerTimer");
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();
-- Might Seed
local might_seed_atk_up_field = player_user_data_item_parameter_type_def:get_field("_MightSeedAtkUp");
function this.update(player, player_data, item_parameter)
this.update_attack_up(player_data, item_parameter);
--this.update_misc_buff("attack_up", player_data, atk_up_buff_second_field, player_data, atk_up_buff_second_timer_field);
this.update_misc_buff("defense_up", player_data, def_up_buff_second_field, player_data, def_up_buff_second_timer_field);
this.update_misc_buff("stamina_use_down", nil, nil, player_data, stamina_up_buff_second_timer_field);
this.update_misc_buff("natural_healing_up", nil, nil, player_data, vitalizer_timer_field);
this.update_misc_buff("immunity", nil, nil, player_data, debuff_prevention_timer_field);
end
function this.update_misc_buff(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.misc_buffs, this.get_misc_buff_name,
misc_buffs_type_name, key,
value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints);
end
function this.apply_filter(key)
return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.misc_buffs, key);
end
function this.update_attack_up(player_data, item_parameter)
if this.apply_filter("attack_up") then
return;
end
local atk_up_buff_second = atk_up_buff_second_field:get_data(player_data);
if atk_up_buff_second == nil then
error_handler.report("item_buffs.update_attack_up", "Failed to access Data: atk_up_buff_second");
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
function this.init_names()
for misc_buff_key, misc_buff in pairs(this.list) do
misc_buff.name = this.get_misc_buff_name(misc_buff_key);
end
end
function this.get_misc_buff_name(key)
local misc_buff_name = language.current_language.misc_buffs[key];
if misc_buff_name == nil then
return key;
end
return misc_buff_name;
end
function this.init_dependencies()
buffs = require("MHR_Overlay.Buffs.buffs");
config = require("MHR_Overlay.Misc.config");
utils = require("MHR_Overlay.Misc.utils");
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
singletons = require("MHR_Overlay.Game_Handler.singletons");
players = require("MHR_Overlay.Damage_Meter.players");
language = require("MHR_Overlay.Misc.language");
error_handler = require("MHR_Overlay.Misc.error_handler");
endemic_life_buffs = require("MHR_Overlay.Buffs.endemic_life_buffs");
item_buffs = require("MHR_Overlay.Buffs.item_buffs");
end
function this.init_module()
end
return this;

View File

@@ -0,0 +1,162 @@
local this = {};
local buffs;
local buff_UI_entity;
local config;
local singletons;
local players;
local utils;
local language;
local error_handler;
local env_creature;
local player_info;
local time;
local abnormal_statuses;
local sdk = sdk;
local tostring = tostring;
local pairs = pairs;
local ipairs = ipairs;
local tonumber = tonumber;
local require = require;
local pcall = pcall;
local table = table;
local string = string;
local Vector3f = Vector3f;
local d2d = d2d;
local math = math;
local json = json;
local log = log;
local fs = fs;
local next = next;
local type = type;
local setmetatable = setmetatable;
local getmetatable = getmetatable;
local assert = assert;
local select = select;
local coroutine = coroutine;
local utf8 = utf8;
local re = re;
local imgui = imgui;
local draw = draw;
local Vector2f = Vector2f;
local reframework = reframework;
local os = os;
local ValueType = ValueType;
local package = package;
this.list = {
go_fight_win = nil,
power_drum = nil,
rousing_roar = nil
};
this.keys = {
"go_fight_win",
"power_drum",
"rousing_roar"
};
local otomo_moves_ids = {
-- herbaceous_healing = 1,
-- felyne_silkbind = 2,
-- felyne_wyvernblast = 3,
rousing_roar = 4,
-- endemic_life_barrage = 5,
-- health_horn = 6,
-- healing_bubble = 7,
vase_of_vitality = 8,
-- furbidden_acorn = 9,
-- poison_purr_ison = 10,
-- summeown_endemic_life = 11,
-- shock_purr_ison = 12,
go_fight_win = 13,
-- giga_barrel_bombay = 14,
-- flash_bombay = 15,
-- anti_monster_mine = 16,
-- zap_blast_spinner = 17,
-- furr_ious = 18,
power_drum = 19,
-- fleet_foot_feat = 20,
-- whirlwind_assault = 21,
-- pilfer = 22,
-- shock_tripper = 23,
-- mega_boomerang = 24,
-- camouflage = 25,
-- healing_clover_bat = 26,
-- felyne_firewors = 27,
-- lottery_box = 28,
-- felyne_powered_up = 29,
-- ameowzing_mist = 30
};
local otomo_moves_type_name = "otomo_moves"
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Palico: Rousing Roar
local beast_roar_otomo_timer_field = player_data_type_def:get_field("_BeastRoarOtomoTimer");
-- Palico: Power Drum
local kijin_otomo_timer_field = player_data_type_def:get_field("_KijinOtomoTimer");
-- Palico: Go, Fight, Win
local runhigh_otomo_timer_field = player_data_type_def:get_field("_RunhighOtomoTimer");
local data_shortcut_type_def = sdk.find_type_definition("snow.data.DataShortcut");
local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.DataDef.OtSupportActionId)");
function this.update(player_data)
this.update_otomo_move("rousing_roar", nil, nil, player_data, beast_roar_otomo_timer_field);
this.update_otomo_move("go_fight_win", nil, nil, player_data, runhigh_otomo_timer_field);
this.update_otomo_move("power_drum", nil, nil, player_data, kijin_otomo_timer_field);
end
function this.update_otomo_move(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.otomo_moves, this.get_otomo_move_name,
otomo_moves_type_name, key,
value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
end
function this.apply_filter(key)
return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.otomo_moves, key);
end
function this.init_all_UI()
for otomo_move_key, otomo_move in pairs(this.list) do
buffs.init_UI(otomo_move);
end
end
function this.init_names()
for otomo_move_key, otomo_move in pairs(this.list) do
otomo_move.name = this.get_otomo_move_name(otomo_move_key);
end
end
function this.get_otomo_move_name(key)
local otomo_move_name = get_name_method:call(nil, otomo_moves_ids[key]);
if otomo_move_name == nil then
error_handler.report("otomo_moves.get_otomo_move_name", string.format("Failed to access Data: %s_name", key));
return key;
end
return otomo_move_name;
end
function this.init_dependencies()
buffs = require("MHR_Overlay.Buffs.buffs");
config = require("MHR_Overlay.Misc.config");
utils = require("MHR_Overlay.Misc.utils");
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
singletons = require("MHR_Overlay.Game_Handler.singletons");
players = require("MHR_Overlay.Damage_Meter.players");
language = require("MHR_Overlay.Misc.language");
error_handler = require("MHR_Overlay.Misc.error_handler");
env_creature = require("MHR_Overlay.Endemic_Life.env_creature");
player_info = require("MHR_Overlay.Misc.player_info");
time = require("MHR_Overlay.Game_Handler.time");
abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses");
end
function this.init_module()
end
return this;

View File

@@ -0,0 +1,134 @@
local this = {};
local buffs;
local buff_UI_entity;
local config;
local singletons;
local players;
local utils;
local language;
local error_handler;
local env_creature;
local player_info;
local time;
local abnormal_statuses;
local sdk = sdk;
local tostring = tostring;
local pairs = pairs;
local ipairs = ipairs;
local tonumber = tonumber;
local require = require;
local pcall = pcall;
local table = table;
local string = string;
local Vector3f = Vector3f;
local d2d = d2d;
local math = math;
local json = json;
local log = log;
local fs = fs;
local next = next;
local skills_type_name = type;
local setmetatable = setmetatable;
local getmetatable = getmetatable;
local assert = assert;
local select = select;
local coroutine = coroutine;
local utf8 = utf8;
local re = re;
local imgui = imgui;
local draw = draw;
local Vector2f = Vector2f;
local reframework = reframework;
local os = os;
local ValueType = ValueType;
local package = package;
this.list = {
chameleos_soul = nil,
kushala_daora_soul = nil,
};
this.keys = {
"chameleos_soul",
"kushala_daora_soul",
};
local rampage_skill_ids = {
chameleos_soul = 250,
kushala_daora_soul = 251,
};
local rampage_skills_type_name = "rampage_skills";
local kushara_daora_soul_breakpoint = 5;
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Kushala Daora Soul
local hyakuryu_dragon_power_up_count_field = player_data_type_def:get_field("_HyakuryuDragonPowerUpCnt");
local hyakuryu_dragon_power_up_timer_field = player_data_type_def:get_field("_HyakuryuDragonPowerUpTimer");
-- Chameleos Soul
local hyakuryu_onazuti_power_up_interval_field = player_data_type_def:get_field("_HyakuryuHyakuryuOnazutiPowerUpInterval");
local data_shortcut_type_def = sdk.find_type_definition("snow.data.DataShortcut");
local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.DataDef.PlHyakuryuSkillId)");
function this.update(player_data)
this.update_rampage_skill("kushala_daora_soul", player_data, hyakuryu_dragon_power_up_count_field,
player_data, hyakuryu_dragon_power_up_timer_field, false, nil, {kushara_daora_soul_breakpoint});
this.update_rampage_skill("chameleos_soul", nil, nil, player_data, hyakuryu_onazuti_power_up_interval_field);
end
function this.update_rampage_skill(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.rampage_skills, this.get_rampage_skill_name,
rampage_skills_type_name, key,
value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
end
function this.apply_filter(key)
return 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
function this.init_names()
for rampage_skill_key, rampage_skill in pairs(this.list) do
rampage_skill.name = this.get_rampage_skill_name(rampage_skill_key);
end
end
function this.get_rampage_skill_name(key)
local rampage_skill_name = get_name_method:call(nil, rampage_skill_ids[key]);
if rampage_skill_name == nil then
error_handler.report("rampage_skills.get_rampage_skill_name", string.format("Failed to access Data: %s_name", key));
return key;
end
return rampage_skill_name;
end
function this.init_dependencies()
buffs = require("MHR_Overlay.Buffs.buffs");
config = require("MHR_Overlay.Misc.config");
utils = require("MHR_Overlay.Misc.utils");
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
singletons = require("MHR_Overlay.Game_Handler.singletons");
players = require("MHR_Overlay.Damage_Meter.players");
language = require("MHR_Overlay.Misc.language");
error_handler = require("MHR_Overlay.Misc.error_handler");
env_creature = require("MHR_Overlay.Endemic_Life.env_creature");
player_info = require("MHR_Overlay.Misc.player_info");
time = require("MHR_Overlay.Game_Handler.time");
abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses");
end
function this.init_module()
end
return this;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -231,33 +231,6 @@ function this.update_damage(enemy, enemy_calc_damage_info)
players.update_damage(players.total, damage_source_type, is_large_monster, damage_object); players.update_damage(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)

View File

@@ -232,7 +232,7 @@ function this.update_my_otomos()
local myself_id = players.myself.id; local myself_id = players.myself.id;
local otomo = this.otomo_list[myself_id]; local otomo = this.otomo_list[myself_id];
if otomo == nil then if otomo == nil or name ~= otomo.name then
otomo = this.new(0, name, level, players.types.my_otomo); otomo = this.new(0, name, level, players.types.my_otomo);
this.otomo_list[myself_id] = otomo; this.otomo_list[myself_id] = otomo;
end end
@@ -255,7 +255,7 @@ function this.update_my_otomos()
-- the secondary otomo is actually the 4th one! -- the secondary otomo is actually the 4th one!
local otomo = this.otomo_list[this.my_second_otomo_id]; local otomo = this.otomo_list[this.my_second_otomo_id];
if otomo == nil then if otomo == nil or name ~= otomo.name then
otomo = this.new(this.my_second_otomo_id, name, level, players.types.my_otomo); otomo = this.new(this.my_second_otomo_id, name, level, players.types.my_otomo);
this.otomo_list[this.my_second_otomo_id] = otomo; this.otomo_list[this.my_second_otomo_id] = otomo;
end end

View File

@@ -42,8 +42,15 @@ local package = package;
this.list = {}; this.list = {};
this.creature_ids = { this.creature_ids = {
clothfly = 7,
stinkmink = 23,
butterflame = 28,
peepersects = 29,
red_lampsquid = 34,
yellow_lampsquid = 35,
cutterfly = 50, cutterfly = 50,
clothfly = 7 ruby_wirebug = 62,
gold_wirebug = 63,
}; };
function this.new(REcreature) function this.new(REcreature)
@@ -97,6 +104,7 @@ function this.init(creature, REcreature)
end end
creature.name = creature_name; creature.name = creature_name;
creature.id = creature_type;
end end
function this.init_UI(creature) function this.init_UI(creature)
@@ -148,7 +156,18 @@ function this.draw(creature, position_on_screen, opacity_scale)
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); 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,13 +336,7 @@ 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;
@@ -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;
@@ -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
@@ -631,6 +655,34 @@ function this.check_hotkeys(hard_keyboard)
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

@@ -48,141 +48,172 @@ 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.update_long_sword_shell_manager();
this.update_light_bowgun_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.update_long_sword_shell_manager()
this.long_sword_shell_manager = sdk.get_managed_singleton("snow.shell.LongSwordShellManager");
if this.long_sword_shell_manager == nil then
error_handler.report("singletons.update_long_sword_shell_manager", "Failed to access Data: long_sword_shell_manager");
end
return this.long_sword_shell_manager;
end
function this.update_light_bowgun_shell_manager()
this.light_bowgun_shell_manager = sdk.get_managed_singleton("snow.shell.LightBowgunShellManager");
if this.light_bowgun_shell_manager == nil then
error_handler.report("singletons.update_light_bowgun_shell_manager", "Failed to access Data: light_bowgun_shell_manager");
end
return this.light_bowgun_shell_manager;
end
function this.update_horn_shell_manager()
this.horn_shell_manager = sdk.get_managed_singleton("snow.shell.HornShellManager");
if this.horn_shell_manager == nil then
error_handler.report("singletons.update_horn_shell_manager", "Failed to access Data: horn_shell_manager");
end
return this.horn_shell_manager;
end
function this.init_dependencies() function this.init_dependencies()
time = require("MHR_Overlay.Game_Handler.time"); time = require("MHR_Overlay.Game_Handler.time");
utils = require("MHR_Overlay.Misc.utils"); utils = require("MHR_Overlay.Misc.utils");
@@ -190,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,34 +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;
end
function this.remove_delay_timer(delay_timer)
if delay_timer == nil then
return;
end
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.new_timer(this.update_quest_time, 1 / 60);
this.new_timer(players.update_players, 0.5);
this.new_timer(players.update_myself_position, 1);
this.new_timer(buffs.update, 1/60);
this.new_timer(player_info.update, 0.5);
this.timer_list = {};
this.new_timer(singletons.update, cached_config.update_singletons_delay);
this.new_timer(screen.update_window_size, cached_config.update_window_size_delay);
this.new_timer(quest_status.update_is_online, cached_config.update_is_online_delay);
this.new_timer(this.update_quest_time, cached_config.update_quest_time_delay);
this.new_timer(players.update_players, cached_config.update_players_delay);
this.new_timer(players.update_myself_position, cached_config.update_myself_position_delay);
this.new_timer(buffs.update, cached_config.update_buffs_delay);
this.new_timer(player_info.update, cached_config.update_player_info_delay);
end end
function this.update_timers() function this.update_timers()

File diff suppressed because it is too large Load Diff

View File

@@ -37,47 +37,53 @@ local package = package;
this.language_folder = "MHR Overlay\\languages\\"; 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",
@@ -171,15 +177,17 @@ this.default_language = {
sleep = "Sleep", sleep = "Sleep",
stun = "Stun", stun = "Stun",
flash = "Flash", flash = "Flash",
poison = "Poison",
blast = "Blast", blast = "Blast",
exhaust = "Exhaust", exhaust = "Exhaust",
ride = "Wyvern Riding", ride = "Wyvern Riding",
poison = "Poison",
deadly_poison = "Deadly Poison",
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",
@@ -192,14 +200,17 @@ this.default_language = {
dragonblight = "Dragonblight", dragonblight = "Dragonblight",
blastblight = "Blastblight", blastblight = "Blastblight",
bubbleblight = "Bubbleblight",
hellfireblight = "Hellfireblight", hellfireblight = "Hellfireblight",
bloodblight = "Bloodblight", bloodblight = "Bloodblight",
frostblight = "Frostblight", frostblight = "Frostblight",
minor_bubbleblight = "Minor Bubbleblight",
major_bubbleblight = "Major Bubbleblight",
defense_down = "Defense Down", defense_down = "Defense Down",
resistance_down = "Resistance Down", resistance_down = "Resistance Down",
falling_asleep = "Falling Asleep",
tremor = "Tremor", tremor = "Tremor",
roar = "Roar", roar = "Roar",
webbed = "Webbed", webbed = "Webbed",
@@ -213,7 +224,7 @@ this.default_language = {
frenzy_overcome = "Frenzy Overcome" frenzy_overcome = "Frenzy Overcome"
}, },
consumables = { item_buffs = {
demondrug = "Demondrug", demondrug = "Demondrug",
mega_demondrug = "Mega Demondrug", mega_demondrug = "Mega Demondrug",
armorskin = "Armorskin", armorskin = "Armorskin",
@@ -224,7 +235,21 @@ this.default_language = {
hardshell_powder = "Hardshell Powder", hardshell_powder = "Hardshell Powder",
immunizer = "Immunizer", immunizer = "Immunizer",
dash_juice = "Dash Juice", dash_juice = "Dash Juice",
gourmet_fish = "Gourmet Fish" 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 = { melody_effects = {
@@ -255,34 +280,182 @@ this.default_language = {
sonic_barrier = "Sonic Barrier", sonic_barrier = "Sonic Barrier",
infernal_melody = "Infernal Melody", infernal_melody = "Infernal Melody",
sharpness_regeneration = "Sharpness Regeneration", sharpness_regeneration = "Sharpness Regeneration",
sharpness_extension = "Sharpness Extension" sharpness_extension = "Sharpness Extension",
},
dango_skills = {
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 = {
burst = "Burst",
kushala_daora_soul = "Kushala Daora Soul",
intrepid_heart = "Intrepid Heart",
dereliction = "Dereliction",
latent_power = "Latent Power",
protective_polish = "Protective Polish",
wind_mantle = "Wind Mantle",
heaven_sent = "Heaven-Sent",
grinder_s = "Grinder (S)",
counterstrike = "Counterstrike",
affinity_sliding = "Affinity Sliding",
coalescence = "Coalescence",
adrenaline_rush = "Adrenaline Rush", adrenaline_rush = "Adrenaline Rush",
wall_runner = "Wall Runner", affinity_sliding = "Affinity Sliding",
offensive_guard = "Offensive Guard",
hellfire_cloak = "Hellfire Cloak",
agitator = "Agitator", 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", furious = "Furious",
grinder_s = "Grinder (S)",
heaven_sent = "Heaven-Sent",
hellfire_cloak = "Hellfire Cloak",
heroics = "Heroics", heroics = "Heroics",
resuscitate = "Resuscitate" inspiration = "Inspiration",
intrepid_heart = "Intrepid Heart",
latent_power = "Latent Power",
maximum_might = "Maximum Might",
offensive_guard = "Offensive Guard",
partbreaker = "Partbreaker",
peak_performance = "Peak Performance",
powder_mantle_red = "Powder Mantle (Red)",
powder_mantle_blue = "Powder Mantle (Blue)",
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"
}, },
dangos = { weapons = {
dango_defender_hi = "Dango Defender (Hi)" great_sword = "Great Sword",
long_sword = "Long Sword",
sword_and_shield = "Sword & Shield",
dual_blades = "Dual Blades",
lance = "Lance",
gunlance = "Gunlance",
hammer = "Hammer",
hunting_horn = "Hunting Horn",
switch_axe = "Switch Axe",
charge_blade = "Charge Blade",
insect_glaive = "Insect Glaive",
light_bowgun = "Light Bowgun",
heavy_bowgun = "Heavy Bowgun",
bow = "Bow"
},
weapon_skills = {
-- Great Sword
great_sword = {
power_sheathe = "Power Sheathe"
},
-- Long Sword
long_sword = {
harvest_moon = "Harvest Moon",
iai_slash = "Iai Slash",
soaring_kick = "Soaring Kick",
spirit_gauge = "Spirit Gauge",
spirit_gauge_autofill = "Spirit Gauge Autofill", -- Soaring Kick, Iai Slash
},
-- Sword & Shield
sword_and_shield = {
destroyer_oil = "Destroyer Oil"
},
-- Dual Blades
dual_blades = {
archdemon_mode = "Archdemon Mode",
ironshine_silk = "Ironshine Silk"
},
-- Lance
lance = {
anchor_rage = "Anchor Rage",
spiral_thrust = "Spiral Thrust",
twin_wine = "Twin Wine"
},
-- Gunlance
gunlance = {
erupting_cannon = "Erupting Cannon",
ground_splitter = "Ground Splitter"
},
-- Hammer
hammer = {
impact_burst = "Impact Burst"
},
-- Hunting Horn
hunting_horn = {
bead_of_resonance = "Bead of Resonance",
silkbind_shockwave = "Silkbind Shockwave",
sonic_bloom = "Sonic Bloom"
},
-- Switch Axe
switch_axe = {
amped_state = "Amped State",
axe_heavy_slam = "Axe: Heavy Slam",
switch_charger = "Switch Charger"
},
-- Charge Blade
charge_blade = {
element_boost = "Element Boost",
sword_boost_mode = "Sword Boost Mode"
},
-- Insect Glaive
insect_glaive = {
red_extract = "Red Extract",
white_extract = "White Extract",
orange_extract = "Orange Extract",
all_extracts_mix = "All Extracts Mix"
},
-- Light Bowgun
light_bowgun = {
fanning_maneuver = "Fanning Maneuver",
wyvernblast_reload = "Wyvernblast Reload"
},
-- Heavy Bowgun
heavy_bowgun = {
counter_charger = "Counter Charger",
overheat = "Overheat",
rising_moon = "Rising Moon",
setting_sun = "Setting Sun",
wyvernsnipe_reload = "Wyvernsnipe Reload"
},
-- Bow
bow = {
arc_shot_affinity = "Arc Shot: Affinity",
arc_shot_brace = "Arc Shot: Brace",
bolt_boost = "Bolt Boost",
herculean_draw = "Herculean Draw"
}
},
otomo_moves = {
go_fight_win = "Go, Fight, Win",
power_drum = "Power Drum",
rousing_roar = "Rousing Roar",
vase_of_vitality = "Vase of Vitality",
},
misc_buffs = {
attack_up = "Attack Up",
defense_up = "Defense Up",
stamina_use_down = "Stamina Use Down",
immunity = "Immunity",
natural_healing_up = "Natural Healing Up"
}, },
UI = { UI = {
@@ -302,6 +475,28 @@ this.default_language = {
otomo = "Buddy", otomo = "Buddy",
servant = "Follower", servant = "Follower",
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 = {
@@ -670,6 +865,8 @@ this.default_language = {
value = "Value", value = "Value",
stats_UI = "Stats UI", stats_UI = "Stats UI",
health_label = "Health Label",
stamina_label = "Stamina Label",
attack_label = "Attack Label", attack_label = "Attack Label",
defense_label = "Defense Label", defense_label = "Defense Label",
affinity_label = "Affinity Label", affinity_label = "Affinity Label",
@@ -678,30 +875,34 @@ this.default_language = {
thunder_resistance_label = "Thunder Resistance Label", thunder_resistance_label = "Thunder Resistance Label",
ice_resistance_label = "Ice Resistance Label", ice_resistance_label = "Ice Resistance Label",
dragon_resistance_label = "Dragon Resistance Label", dragon_resistance_label = "Dragon Resistance Label",
stamina_label = "Stamina 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",
}, },
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" };
@@ -758,9 +959,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

@@ -8,6 +8,8 @@ local utils;
local error_handler; local error_handler;
local quest_status; local quest_status;
local time; local time;
local dango_skills;
local skills;
local sdk = sdk; local sdk = sdk;
local tostring = tostring; local tostring = tostring;
@@ -42,12 +44,15 @@ local ValueType = ValueType;
local package = package; local package = package;
this.list = { this.list = {
health = 0;
max_health = 0;
attack = 0; attack = 0;
defense = 0; defense = 0;
affinity = 0; affinity = 0;
stamina = 0; stamina = 0;
max_stamina = 0; max_stamina = -1;
element_type = 0; element_type = 0;
element_attack = 0; element_attack = 0;
@@ -62,6 +67,8 @@ this.list = {
dragon_resistance = 0; dragon_resistance = 0;
}; };
local should_health_update = true;
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 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");
@@ -71,10 +78,12 @@ local get_player_data_method = player_base_type_def:get_method("get_PlayerData")
local player_data_type_def = get_player_data_method:get_return_type(); local player_data_type_def = get_player_data_method:get_return_type();
local get_vital_method = player_data_type_def:get_method("get_vital");
local attack_field = player_data_type_def:get_field("_Attack"); local attack_field = player_data_type_def:get_field("_Attack");
local defence_field = player_data_type_def:get_field("_Defence"); local defence_field = player_data_type_def:get_field("_Defence");
local critical_rate_field = player_data_type_def:get_field("_CriticalRate"); local critical_rate_field = player_data_type_def:get_field("_CriticalRate");
local vital_max_field = player_data_type_def:get_field("_vitalMax");
local stamina_field = player_data_type_def:get_field("_stamina"); local stamina_field = player_data_type_def:get_field("_stamina");
local stamina_max_field = player_data_type_def:get_field("_staminaMax"); local stamina_max_field = player_data_type_def:get_field("_staminaMax");
@@ -91,12 +100,31 @@ 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_length_method = system_array_type_def:get_method("get_Length");
local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)"); local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)");
local player_quest_base_type_def = sdk.find_type_definition("snow.player.PlayerQuestBase");
local player_quest_base_update_method = player_quest_base_type_def:get_method("update");
local is_master_player_method = player_quest_base_type_def:get_method("isMasterPlayer");
local player_base_type_def = sdk.find_type_definition("snow.player.PlayerBase");
-- Heroics
local is_predicament_power_up_method = player_base_type_def:get_method("isPredicamentPowerUp");
-- Dango Adrenaline
local is_kitchen_skill_predicament_powerup_method = player_base_type_def:get_method("isKitchenSkillPredicamentPowerUp");
local single_type_def = sdk.find_type_definition("System.Single");
local mvalue_field = single_type_def:get_field("mValue");
local master_player_ref = nil;
local master_player_data_ref = nil;
function this.update() function this.update()
if not config.current_config.stats_UI.enabled then if quest_status.flow_state == quest_status.flow_states.NONE then
return; return;
end end
if quest_status.flow_state == quest_status.flow_states.NONE then local cached_config = config.current_config;
if not cached_config.buff_UI.enabled
and not cached_config.stats_UI.enabled then
return; return;
end end
@@ -116,9 +144,11 @@ function this.update()
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
this.update_generic("attack", master_player_data, attack_field); master_player_ref = master_player;
this.update_generic("affinity", master_player_data, critical_rate_field); master_player_data_ref = master_player_data;
this.update_generic("defense", master_player_data, defence_field); should_health_update = true;
this.update_generic("max_health", master_player_data, vital_max_field);
this.update_generic("stamina", master_player_data, stamina_field); this.update_generic("stamina", master_player_data, stamina_field);
this.list.stamina = math.floor(this.list.stamina / 30); this.list.stamina = math.floor(this.list.stamina / 30);
@@ -126,6 +156,14 @@ function this.update()
this.update_generic("max_stamina", master_player_data, stamina_max_field); this.update_generic("max_stamina", master_player_data, stamina_max_field);
this.list.max_stamina = math.floor(this.list.max_stamina / 30); this.list.max_stamina = math.floor(this.list.max_stamina / 30);
if not cached_config.stats_UI.enabled then
return;
end
this.update_generic("attack", master_player_data, attack_field);
this.update_generic("affinity", master_player_data, critical_rate_field);
this.update_generic("defense", master_player_data, defence_field);
this.update_generic("element_type", master_player_data, element_type_field); this.update_generic("element_type", master_player_data, element_type_field);
this.update_generic("element_attack", master_player_data, element_attack_field); this.update_generic("element_attack", master_player_data, element_attack_field);
@@ -153,13 +191,13 @@ function this.update_resistances(player_data)
end end
-- Fire Resistance -- Fire Resistance
local fire_resistance_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_valtype == nil then if fire_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: fire_resistance_valtype"); error_handler.report("player_info.update_resistances", "Failed to access Data: fire_resistance_single_valtype");
return; return;
end end
local fire_resistance = fire_resistance_valtype:get_field("mValue"); local fire_resistance = mvalue_field:get_data(fire_resistance_single_valtype);
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
@@ -168,13 +206,13 @@ function this.update_resistances(player_data)
end end
-- Water Resistance -- Water Resistance
local water_resistance_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_valtype == nil then if water_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: water_resistance_valtype"); error_handler.report("player_info.update_resistances", "Failed to access Data: water_resistance_single_valtype");
return; return;
end end
local water_resistance = water_resistance_valtype:get_field("mValue"); local water_resistance = mvalue_field:get_data(water_resistance_single_valtype);
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
@@ -183,13 +221,13 @@ function this.update_resistances(player_data)
end end
-- Thunder Resistance -- Thunder Resistance
local thunder_resistance_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_valtype == nil then if thunder_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: thunder_resistance_valtype"); error_handler.report("player_info.update_resistances", "Failed to access Data: thunder_resistance_single_valtype");
return; return;
end end
local thunder_resistance = thunder_resistance_valtype:get_field("mValue"); local thunder_resistance = mvalue_field:get_data(thunder_resistance_single_valtype);
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
@@ -198,13 +236,13 @@ function this.update_resistances(player_data)
end end
-- Ice Resistance -- Ice Resistance
local ice_resistance_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_valtype == nil then if ice_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: ice_resistance_valtype"); error_handler.report("player_info.update_resistances", "Failed to access Data: ice_resistance_single_valtype");
return; return;
end end
local ice_resistance = ice_resistance_valtype:get_field("mValue"); local ice_resistance = mvalue_field:get_data(ice_resistance_single_valtype);
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
@@ -213,13 +251,13 @@ function this.update_resistances(player_data)
end end
-- Dragon Resistance -- Dragon Resistance
local dragon_resistance_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_valtype == nil then if dragon_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: dragon_resistance_valtype"); error_handler.report("player_info.update_resistances", "Failed to access Data: dragon_resistance_single_valtype");
return; return;
end end
local dragon_resistance = dragon_resistance_valtype:get_field("mValue"); local dragon_resistance = mvalue_field:get_data(dragon_resistance_single_valtype);
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
@@ -228,6 +266,60 @@ function this.update_resistances(player_data)
end end
end end
function this.on_pre_player_update(quest_player_base)
if not should_health_update then
return;
end
if quest_player_base ~= master_player_ref then
return;
end
this.update_health(quest_player_base);
this.update_heroics(quest_player_base);
this.update_dango_adrenaline(quest_player_base);
should_health_update = false;
end
function this.update_health(quest_player_base)
local vital = get_vital_method:call(master_player_data_ref);
if vital == nil then
error_handler.report("player_info.update_health", "Failed to access Data: vital");
return;
end
this.list.health = vital;
end
function this.update_heroics(quest_player_base)
if not config.current_config.buff_UI.filter.skills.heroics then
return;
end
local is_predicament_power_up = is_predicament_power_up_method:call(master_player_ref);
if is_predicament_power_up == nil then
error_handler.report("player_info.update_heroics", "Failed to access Data: is_predicament_power_up");
return;
end
skills.is_heroics_active = is_predicament_power_up;
end
function this.update_dango_adrenaline(quest_player_base)
if not config.current_config.buff_UI.filter.dango_skills.dango_adrenaline then
return;
end
local is_kitchen_skill_predicament_powerup = is_kitchen_skill_predicament_powerup_method:call(master_player_ref);
if is_kitchen_skill_predicament_powerup == nil then
error_handler.report("player_info.update_dango_adrenaline", "Failed to access Data: is_kitchen_skill_predicament_powerup");
return;
end
dango_skills.is_dango_adrenaline_active = is_kitchen_skill_predicament_powerup;
end
function this.init_dependencies() function this.init_dependencies()
singletons = require("MHR_Overlay.Game_Handler.singletons"); singletons = require("MHR_Overlay.Game_Handler.singletons");
customization_menu = require("MHR_Overlay.UI.customization_menu"); customization_menu = require("MHR_Overlay.UI.customization_menu");
@@ -242,9 +334,17 @@ function this.init_dependencies()
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"); 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");
skills = require("MHR_Overlay.Buffs.skills");
end end
function this.init_module() function this.init_module()
sdk.hook(player_quest_base_update_method, function(args)
local quest_player_base = sdk.to_managed_object(args[2]);
this.on_pre_player_update(quest_player_base);
end, function(retval)
return retval;
end);
end end
return this; return this;

View File

@@ -44,6 +44,7 @@ local unicode_chars;
local epsilon = 0.000001; local epsilon = 0.000001;
this.table = {}; this.table = {};
this.type = {};
this.number = {}; this.number = {};
this.string = {}; this.string = {};
this.vec2 = {}; this.vec2 = {};
@@ -51,6 +52,7 @@ this.vec3 = {};
this.vec4 = {}; this.vec4 = {};
this.math = {}; this.math = {};
this.unicode = {}; this.unicode = {};
this.sdk = {};
this.constants = {}; this.constants = {};
this.constants.uninitialized_int = -420; this.constants.uninitialized_int = -420;
@@ -215,6 +217,18 @@ function this.table.merge(...)
return result; return result;
end end
function this.type.is_boolean(value)
return value == true or value == false;
end
function this.type.is_REField(value)
return value.get_return_type == nil;
end
function this.type.is_REMethodDefinition(value)
return value.get_return_type ~= nil;
end
function this.number.is_NaN(value) function this.number.is_NaN(value)
return tostring(value) == tostring(0/0); return tostring(value) == tostring(0/0);
end end
@@ -429,6 +443,40 @@ function this.unicode.sub(str, i, j)
return string.sub(str, i, b + c - 1); return string.sub(str, i, b + c - 1);
end end
function this.sdk.generate_enum(type_def)
if not type_def then
return {};
end
local fields = type_def:get_fields();
local enum = {};
for i, field in ipairs(fields) do
if field:is_static() then
local name = field:get_name();
local raw_value = field:get_data(nil);
local enum_entry = {
name = name,
value = raw_value;
};
table.insert(enum, enum_entry);
end
end
return enum;
end
function this.sdk.generate_enum_by_typename(type_name)
local type_def = sdk.find_type_definition(type_name);
if not type_def then
return {};
end;
return this.sdk.generate_enum(type_def);
end
function this.init_dependencies() function this.init_dependencies()
error_handler = require("MHR_Overlay.Misc.error_handler"); error_handler = require("MHR_Overlay.Misc.error_handler");
end end

View File

@@ -275,6 +275,12 @@ 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_length_method = system_array_type_def:get_method("get_Length");
local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)"); local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)");
local int32_type_def = sdk.find_type_definition("System.Int32");
local int32_mvalue_field = int32_type_def:get_field("mValue");
local single_type_def = sdk.find_type_definition("System.Single");
local single_mvalue_field = single_type_def:get_field("mValue");
function this.update_ailments(enemy, monster) function this.update_ailments(enemy, monster)
if enemy == nil then if enemy == nil then
error_handler.report("ailments.update_ailments", "Missing Parameter: enemy"); error_handler.report("ailments.update_ailments", "Missing Parameter: enemy");
@@ -369,12 +375,12 @@ function this.update_ailment(monster, ailment_param, id)
if activate_count_array_length ~= nil then if activate_count_array_length ~= nil then
if activate_count_array_length > 0 then if activate_count_array_length > 0 then
local activate_count_valuetype = get_value_method:call(activate_count_array, 0); local activate_count_valtype = get_value_method:call(activate_count_array, 0);
if activate_count_valuetype ~= nil then if activate_count_valtype ~= nil then
activate_count = activate_count_valuetype:get_field("mValue"); activate_count = int32_mvalue_field:get_data(activate_count_valtype);
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: activate_count_valuetype"); error_handler.report("ailments.update_ailment", "Failed to access Data: activate_count_valtype");
end end
end end
else else
@@ -390,12 +396,12 @@ function this.update_ailment(monster, ailment_param, id)
if buildup_array_length ~= nil then if buildup_array_length ~= nil then
if buildup_array_length > 0 then if buildup_array_length > 0 then
local buildup_valuetype = get_value_method:call(buildup_array, 0); local buildup_valtype = get_value_method:call(buildup_array, 0);
if buildup_valuetype ~= nil then if buildup_valtype ~= nil then
buildup = buildup_valuetype:get_field("mValue"); buildup = single_mvalue_field:get_data(buildup_valtype);
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_valuetype"); error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_valtype");
end end
end end
else else
@@ -411,12 +417,12 @@ function this.update_ailment(monster, ailment_param, id)
if buildup_limit_array_length ~= nil then if buildup_limit_array_length ~= nil then
if buildup_limit_array_length > 0 then if buildup_limit_array_length > 0 then
local buildup_limit_valuetype = get_value_method:call(buildup_limit_array, 0); local buildup_limit_valtype = get_value_method:call(buildup_limit_array, 0);
if buildup_limit_valuetype ~= nil then if buildup_limit_valtype ~= nil then
buildup_limit = buildup_limit_valuetype:get_field("mValue"); buildup_limit = single_mvalue_field:get_data(buildup_limit_valtype);
else else
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_limit_valuetype"); error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_limit_valtype");
end end
end end
else else

View File

@@ -1196,7 +1196,7 @@ function this.draw(monster, type, cached_config, position_on_screen, opacity_sca
monster_name_text = string.format("%s%s ", monster_name_text, monster.crown); monster_name_text = string.format("%s%s ", monster_name_text, monster.crown);
end end
if cached_config.monster_name_label.include.size and monster.size ~= -1 then if cached_config.monster_name_label.include.size and monster.size > 0 then
monster_name_text = string.format("%s#%.0f ", monster_name_text, 100 * monster.size); monster_name_text = string.format("%s#%.0f ", monster_name_text, 100 * monster.size);
end end

View File

@@ -3,15 +3,19 @@ local this = {};
local buff_UI_entity; local buff_UI_entity;
local config; local config;
local buffs; local buffs;
local consumables; local item_buffs;
local melody_effects; local melody_effects;
local endemic_life_buff; local endemic_life_buff;
local screen; local screen;
local utils; local utils;
local error_handler; local error_handler;
local skills; local skills;
local dangos; local dango_skills;
local abnormal_statuses; local abnormal_statuses;
local otomo_moves;
local weapon_skills;
local misc_buffs;
local rampage_skills;
local sdk = sdk; local sdk = sdk;
local tostring = tostring; local tostring = tostring;
@@ -52,102 +56,274 @@ function this.update()
local _displayed_buffs = {}; local _displayed_buffs = {};
for key, consumable in pairs(consumables.list) do for key, abnormal_status in pairs(abnormal_statuses.list) do
if not consumable.is_active then if abnormal_status.is_visible then
goto continue; table.insert(_displayed_buffs, abnormal_status);
end
end end
table.insert(_displayed_buffs, consumable); 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);
end
::continue2::
end end
for key, endemic_life_buff in pairs(endemic_life_buff.list) do for key, dango_skill in pairs(dango_skills.list) do
if not endemic_life_buff.is_active then
goto continue3; if dango_skill.is_visible then
table.insert(_displayed_buffs, dango_skill);
end
end end
table.insert(_displayed_buffs, endemic_life_buff); for key, rampage_skill in pairs(rampage_skills.list) do
::continue3:: if rampage_skill.is_visible then
table.insert(_displayed_buffs, rampage_skill);
end
end end
for key, skill in pairs(skills.list) do for key, skill in pairs(skills.list) do
if not skill.is_active then
goto continue4;
end
if skill.is_visible then
table.insert(_displayed_buffs, skill); table.insert(_displayed_buffs, skill);
end
::continue4::
end end
for key, dango_buff in pairs(dangos.list) do for key, weapon_skill in pairs(weapon_skills.list) do
if not dango_buff.is_active then
goto continue5; if weapon_skill.is_visible then
table.insert(_displayed_buffs, weapon_skill);
end
end end
table.insert(_displayed_buffs, dango_buff); for key, otomo_move in pairs(otomo_moves.list) do
::continue5:: if otomo_move.is_visible then
table.insert(_displayed_buffs, otomo_move);
end
end end
for key, abnormal_status in pairs(abnormal_statuses.list) do for key, misc_buffs in pairs(misc_buffs.list) do
if not abnormal_status.is_active then
goto continue6; if misc_buffs.is_visible then
table.insert(_displayed_buffs, misc_buffs);
end end
table.insert(_displayed_buffs, abnormal_status);
::continue6::
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.timer < right.timer;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.timer < right.timer;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.timer < right.timer;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.timer < right.timer;
end
else
return left.timer < right.timer;
end
end); 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.timer > right.timer;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.timer > right.timer;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.timer > right.timer;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.timer > right.timer;
end
else
return left.timer > right.timer;
end
end); end);
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.duration < right.duration;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.duration < right.duration;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.duration < right.duration;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.duration < right.duration;
end
else
return left.duration < right.duration;
end
end); 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.duration > right.duration;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.duration > right.duration;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.duration > right.duration;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.duration > right.duration;
end
else
return left.duration > right.duration;
end
end); end);
end end
end end
@@ -179,7 +355,7 @@ end
function this.init_dependencies() function this.init_dependencies()
config = require("MHR_Overlay.Misc.config"); config = require("MHR_Overlay.Misc.config");
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity"); buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
consumables = require("MHR_Overlay.Buffs.consumables"); item_buffs = require("MHR_Overlay.Buffs.item_buffs");
melody_effects = require("MHR_Overlay.Buffs.melody_effects"); melody_effects = require("MHR_Overlay.Buffs.melody_effects");
buffs = require("MHR_Overlay.Buffs.buffs"); buffs = require("MHR_Overlay.Buffs.buffs");
--singletons = require("MHR_Overlay.Game_Handler.singletons"); --singletons = require("MHR_Overlay.Game_Handler.singletons");
@@ -194,8 +370,12 @@ function this.init_dependencies()
error_handler = require("MHR_Overlay.Misc.error_handler"); error_handler = require("MHR_Overlay.Misc.error_handler");
endemic_life_buff = require("MHR_Overlay.Buffs.endemic_life_buffs"); endemic_life_buff = require("MHR_Overlay.Buffs.endemic_life_buffs");
skills = require("MHR_Overlay.Buffs.skills"); skills = require("MHR_Overlay.Buffs.skills");
dangos = require("MHR_Overlay.Buffs.dangos"); dango_skills = require("MHR_Overlay.Buffs.dango_skills");
abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses"); abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses");
otomo_moves = require("MHR_Overlay.Buffs.otomo_moves");
weapon_skills = require("MHR_Overlay.Buffs.weapon_skills");
misc_buffs = require("MHR_Overlay.Buffs.misc_buffs");
rampage_skills = require("MHR_Overlay.Buffs.rampage_skills");
end end
function this.init_module() function this.init_module()

View File

@@ -71,6 +71,8 @@ function this.update()
table.insert(_displayed_creatures, creature); table.insert(_displayed_creatures, creature);
::continue:: ::continue::
end end
displayed_creatures = _displayed_creatures;
end end
function this.draw() function this.draw()

View File

@@ -55,6 +55,8 @@ local get_tg_camera_method = gui_manager_type_def:get_method("get_refGuiHud_TgCa
local tg_camera_type_def = get_tg_camera_method:get_return_type(); 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 get_targeting_enemy_index_field = tg_camera_type_def:get_field("OldTargetingEmIndex");
local large_monster_list = {};
local displayed_dynamic_monsters = {}; local displayed_dynamic_monsters = {};
local displayed_static_monsters = {}; local displayed_static_monsters = {};
local highlighted_monster = nil; local highlighted_monster = nil;
@@ -67,7 +69,7 @@ function this.update(dynamic_enabled, static_enabled, highlighted_enabled)
return; return;
end end
local large_monster_list = {}; large_monster_list = {};
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
@@ -96,8 +98,6 @@ function this.update(dynamic_enabled, static_enabled, highlighted_enabled)
::continue:: ::continue::
end end
this.update_highlighted_monster(large_monster_list, cached_config.highlighted.auto_highlight);
if dynamic_enabled then if dynamic_enabled then
this.update_dynamic_monsters(large_monster_list, cached_config); this.update_dynamic_monsters(large_monster_list, cached_config);
end end
@@ -306,6 +306,8 @@ end
function this.draw(dynamic_enabled, static_enabled, highlighted_enabled) function this.draw(dynamic_enabled, static_enabled, highlighted_enabled)
local cached_config = config.current_config.large_monster_UI; local cached_config = config.current_config.large_monster_UI;
this.update_highlighted_monster(large_monster_list, cached_config.highlighted.auto_highlight);
if dynamic_enabled then if dynamic_enabled then
local success = pcall(this.draw_dynamic, cached_config); local success = pcall(this.draw_dynamic, cached_config);
if not success then if not success then

View File

@@ -3,14 +3,14 @@ local this = {};
local buff_UI_entity; local buff_UI_entity;
local config; local config;
local buffs; local buffs;
local consumables; local item_buffs;
local melody_effects; local melody_effects;
local endemic_life_buff; local endemic_life_buff;
local screen; local screen;
local utils; local utils;
local error_handler; local error_handler;
local skills; local skills;
local dangos; local dango_skills;
local abnormal_statuses; local abnormal_statuses;
local drawing; local drawing;
local player_info; local player_info;
@@ -60,6 +60,7 @@ this.label_list = {
}; };
this.affinity_label = nil; this.affinity_label = nil;
this.health_label = nil;
this.stamina_label = nil; this.stamina_label = nil;
this.element_label = nil; this.element_label = nil;
this.element_2_label = nil; this.element_2_label = nil;
@@ -81,7 +82,11 @@ function this.draw()
for label_key, label in pairs(this.label_list) do for label_key, label in pairs(this.label_list) do
local name_text = ""; local name_text = "";
if label.include.name then if label.include.name then
if label.include.value then
name_text = string.format("%s: ", cached_names[label_key]); name_text = string.format("%s: ", cached_names[label_key]);
else
name_text = string.format("%s", cached_names[label_key]);
end
end end
if label.include.value then if label.include.value then
@@ -93,22 +98,38 @@ function this.draw()
::continue:: ::continue::
end end
-- Affinity Label -- Health Label
local affinity_name_text = ""; local health_name_text = "";
if this.affinity_label.include.name then if this.health_label.include.name then
affinity_name_text = string.format("%s: ", cached_names.affinity); health_name_text = string.format("%s: ", language.current_language.customization_menu.health);
if this.health_label.include.value or this.health_label.include.max_value then
health_name_text = string.format("%s: ", language.current_language.customization_menu.health);
else
health_name_text = string.format("%s", language.current_language.customization_menu.health);
end
end end
if this.affinity_label.include.value then if this.health_label.include.value and not this.health_label.include.max_value then
affinity_name_text = string.format("%s%s%%", affinity_name_text, tostring(player_info.list.affinity)); health_name_text = string.format("%s%s", health_name_text, tostring(player_info.list.health));
elseif not this.health_label.include.value and this.health_label.include.max_value then
health_name_text = string.format("%s%s", health_name_text, tostring(player_info.list.max_health));
elseif this.health_label.include.value and this.health_label.include.max_value then
health_name_text = string.format("%s%s/%s", health_name_text, tostring(player_info.list.health), tostring(player_info.list.max_health));
end end
drawing.draw_label(this.affinity_label, position_on_screen, 1, affinity_name_text); drawing.draw_label(this.health_label, position_on_screen, 1, health_name_text);
-- Stamina Label -- Stamina Label
local stamina_name_text = ""; local stamina_name_text = "";
if this.stamina_label.include.name then if this.stamina_label.include.name then
if this.stamina_label.include.value or this.stamina_label.include.max_value then
stamina_name_text = string.format("%s: ", cached_names.stamina); stamina_name_text = string.format("%s: ", cached_names.stamina);
else
stamina_name_text = string.format("%s", cached_names.stamina);
end
end end
if this.stamina_label.include.value and not this.stamina_label.include.max_value then if this.stamina_label.include.value and not this.stamina_label.include.max_value then
@@ -123,6 +144,22 @@ function this.draw()
drawing.draw_label(this.stamina_label, position_on_screen, 1, stamina_name_text); drawing.draw_label(this.stamina_label, position_on_screen, 1, stamina_name_text);
-- Affinity Label
local affinity_name_text = "";
if this.affinity_label.include.name then
if this.affinity_label.include.value then
affinity_name_text = string.format("%s: ", cached_names.affinity);
else
affinity_name_text = string.format("%s", cached_names.affinity);
end
end
if this.affinity_label.include.value then
affinity_name_text = string.format("%s%s%%", affinity_name_text, tostring(player_info.list.affinity));
end
drawing.draw_label(this.affinity_label, position_on_screen, 1, affinity_name_text);
-- Element Label -- Element Label
if player_info.list.element_type ~= 0 then if player_info.list.element_type ~= 0 then
@@ -131,26 +168,33 @@ function this.draw()
local ailment_names = language.current_language.ailments; local ailment_names = language.current_language.ailments;
local ailment_name = "";
if player_info.list.element_type == 1 then if player_info.list.element_type == 1 then
element_name_text = string.format("%s: ", cached_names.fire); ailment_name = cached_names.fire;
elseif player_info.list.element_type == 2 then elseif player_info.list.element_type == 2 then
element_name_text = string.format("%s: ", cached_names.water); ailment_name = cached_names.water;
elseif player_info.list.element_type == 3 then elseif player_info.list.element_type == 3 then
element_name_text = string.format("%s: ", cached_names.thunder); ailment_name = cached_names.thunder;
elseif player_info.list.element_type == 4 then elseif player_info.list.element_type == 4 then
element_name_text = string.format("%s: ", cached_names.ice); ailment_name = cached_names.ice;
elseif player_info.list.element_type == 5 then elseif player_info.list.element_type == 5 then
element_name_text = string.format("%s: ", cached_names.dragon); ailment_name = cached_names.dragon;
elseif player_info.list.element_type == 6 then elseif player_info.list.element_type == 6 then
element_name_text = string.format("%s: ", ailment_names.poison); ailment_name = ailment_names.poison;
elseif player_info.list.element_type == 7 then elseif player_info.list.element_type == 7 then
element_name_text = string.format("%s: ", ailment_names.sleep); ailment_name = ailment_names.sleep;
elseif player_info.list.element_type == 8 then elseif player_info.list.element_type == 8 then
element_name_text = string.format("%s: ", ailment_names.paralysis); ailment_name = ailment_names.paralysis;
elseif player_info.list.element_type == 9 then elseif player_info.list.element_type == 9 then
element_name_text = string.format("%s: ", ailment_names.blast); ailment_name = ailment_names.blast;
end end
if this.element_label.include.value then
element_name_text = string.format("%s: ", ailment_name);
else
element_name_text = string.format("%s", ailment_name);
end
end end
if this.element_label.include.value then if this.element_label.include.value then
@@ -169,24 +213,32 @@ function this.draw()
local ailment_names = language.current_language.ailments; local ailment_names = language.current_language.ailments;
local ailment_name = "";
if player_info.list.element_type_2 == 1 then if player_info.list.element_type_2 == 1 then
element_2_name_text = string.format("%s: ", cached_names.fire); ailment_name = cached_names.fire;
elseif player_info.list.element_type_2 == 2 then elseif player_info.list.element_type_2 == 2 then
element_2_name_text = string.format("%s: ", cached_names.water); ailment_name = cached_names.water;
elseif player_info.list.element_type_2 == 3 then elseif player_info.list.element_type_2 == 3 then
element_2_name_text = string.format("%s: ", cached_names.thunder); ailment_name = cached_names.thunder;
elseif player_info.list.element_type_2 == 4 then elseif player_info.list.element_type_2 == 4 then
element_2_name_text = string.format("%s: ", cached_names.ice); ailment_name = cached_names.ice;
elseif player_info.list.element_type_2 == 5 then elseif player_info.list.element_type_2 == 5 then
element_2_name_text = string.format("%s: ", cached_names.dragon); ailment_name = cached_names.dragon;
elseif player_info.list.element_type_2 == 6 then elseif player_info.list.element_type_2 == 6 then
element_2_name_text = string.format("%s: ", ailment_names.poison); ailment_name = ailment_names.poison;
elseif player_info.list.element_type_2 == 7 then elseif player_info.list.element_type_2 == 7 then
element_2_name_text = string.format("%s: ", ailment_names.sleep); ailment_name = ailment_names.sleep;
elseif player_info.list.element_type_2 == 8 then elseif player_info.list.element_type_2 == 8 then
element_2_name_text = string.format("%s: ", ailment_names.paralysis); ailment_name = ailment_names.paralysis;
elseif player_info.list.element_type_2 == 9 then elseif player_info.list.element_type_2 == 9 then
element_2_name_text = string.format("%s: ", ailment_names.blast); ailment_name = ailment_names.blast;
end
if this.element_2_label.include.value then
element_2_name_text = string.format("%s: ", ailment_name);
else
element_2_name_text = string.format("%s", ailment_name);
end end
end end
@@ -210,6 +262,7 @@ function this.init_UI()
this.label_list.dragon_resistance = utils.table.deep_copy(config.current_config.stats_UI.dragon_resistance_label); this.label_list.dragon_resistance = utils.table.deep_copy(config.current_config.stats_UI.dragon_resistance_label);
this.affinity_label = utils.table.deep_copy(config.current_config.stats_UI.affinity_label); this.affinity_label = utils.table.deep_copy(config.current_config.stats_UI.affinity_label);
this.health_label = utils.table.deep_copy(config.current_config.stats_UI.health_label);
this.stamina_label = utils.table.deep_copy(config.current_config.stats_UI.stamina_label); this.stamina_label = utils.table.deep_copy(config.current_config.stats_UI.stamina_label);
this.element_label = utils.table.deep_copy(config.current_config.stats_UI.element_label); this.element_label = utils.table.deep_copy(config.current_config.stats_UI.element_label);
this.element_2_label = utils.table.deep_copy(config.current_config.stats_UI.element_2_label); this.element_2_label = utils.table.deep_copy(config.current_config.stats_UI.element_2_label);
@@ -224,6 +277,9 @@ function this.init_UI()
this.affinity_label.offset.x = this.affinity_label.offset.x * global_scale_modifier; this.affinity_label.offset.x = this.affinity_label.offset.x * global_scale_modifier;
this.affinity_label.offset.y = this.affinity_label.offset.y * global_scale_modifier; this.affinity_label.offset.y = this.affinity_label.offset.y * global_scale_modifier;
this.health_label.offset.x = this.health_label.offset.x * global_scale_modifier;
this.health_label.offset.y = this.health_label.offset.y * global_scale_modifier;
this.stamina_label.offset.x = this.stamina_label.offset.x * global_scale_modifier; this.stamina_label.offset.x = this.stamina_label.offset.x * global_scale_modifier;
this.stamina_label.offset.y = this.stamina_label.offset.y * global_scale_modifier; this.stamina_label.offset.y = this.stamina_label.offset.y * global_scale_modifier;
@@ -237,7 +293,7 @@ end
function this.init_dependencies() function this.init_dependencies()
config = require("MHR_Overlay.Misc.config"); config = require("MHR_Overlay.Misc.config");
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity"); buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
consumables = require("MHR_Overlay.Buffs.consumables"); item_buffs = require("MHR_Overlay.Buffs.item_buffs");
melody_effects = require("MHR_Overlay.Buffs.melody_effects"); melody_effects = require("MHR_Overlay.Buffs.melody_effects");
buffs = require("MHR_Overlay.Buffs.buffs"); buffs = require("MHR_Overlay.Buffs.buffs");
--singletons = require("MHR_Overlay.Game_Handler.singletons"); --singletons = require("MHR_Overlay.Game_Handler.singletons");
@@ -252,7 +308,7 @@ function this.init_dependencies()
error_handler = require("MHR_Overlay.Misc.error_handler"); error_handler = require("MHR_Overlay.Misc.error_handler");
endemic_life_buff = require("MHR_Overlay.Buffs.endemic_life_buffs"); endemic_life_buff = require("MHR_Overlay.Buffs.endemic_life_buffs");
skills = require("MHR_Overlay.Buffs.skills"); skills = require("MHR_Overlay.Buffs.skills");
dangos = require("MHR_Overlay.Buffs.dangos"); dango_skills = require("MHR_Overlay.Buffs.dango_skills");
abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses"); abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses");
drawing = require("MHR_Overlay.UI.drawing"); drawing = require("MHR_Overlay.UI.drawing");
player_info = require("MHR_Overlay.Misc.player_info"); player_info = require("MHR_Overlay.Misc.player_info");

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 %d", buff_name, 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);

View File

@@ -13,11 +13,22 @@ local time_UI;
local keyboard; local keyboard;
local non_players; local non_players;
local quest_status; local quest_status;
local buffs;
local error_handler; local error_handler;
local time; local time;
local stats_UI; local stats_UI;
local buffs;
local item_buffs;
local melody_effects;
local endemic_life_buffs;
local skills;
local dango_skills;
local abnormal_statuses;
local otomo_moves;
local weapon_skills;
local rampage_skills;
local misc_buffs;
local label_customization; local label_customization;
local bar_customization; local bar_customization;
local large_monster_UI_customization; local large_monster_UI_customization;
@@ -88,6 +99,9 @@ this.displayed_monster_UI_sorting_types = {};
this.buff_UI_sorting_types = {}; this.buff_UI_sorting_types = {};
this.displayed_buff_UI_sorting_types = {}; this.displayed_buff_UI_sorting_types = {};
this.buff_UI_infinite_buffs_location_types = {};
this.displayed_buff_UI_infinite_buffs_location_types = {};
this.damage_meter_UI_highlighted_entity_types = {}; this.damage_meter_UI_highlighted_entity_types = {};
this.displayed_damage_meter_UI_highlighted_entity_types = {}; this.displayed_damage_meter_UI_highlighted_entity_types = {};
@@ -131,6 +145,8 @@ this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false; this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false; this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false; this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
this.menu_font_changed = false; this.menu_font_changed = false;
this.config_name_input = ""; this.config_name_input = "";
@@ -226,6 +242,20 @@ function this.init()
current.duration current.duration
}; };
this.buff_UI_infinite_buffs_location_types =
{
default.normal,
default.first,
default.last
};
this.displayed_buff_UI_infinite_buffs_location_types =
{
current.normal,
current.first,
current.last
};
this.damage_meter_UI_highlighted_entity_types = this.damage_meter_UI_highlighted_entity_types =
{ {
default.top_damage, default.top_damage,
@@ -359,7 +389,9 @@ function this.draw()
local language_changed = false; local language_changed = false;
local modifiers_changed = false; local modifiers_changed = false;
local modules_changed = false; local modules_changed = false;
local hotkeys_changed = false;
local global_settings_changed = false; local global_settings_changed = false;
local timer_delays_changed = false;
local small_monster_UI_changed = false; local small_monster_UI_changed = false;
local large_monster_dynamic_UI_changed = false; local large_monster_dynamic_UI_changed = false;
local large_monster_static_UI_changed = false; local large_monster_static_UI_changed = false;
@@ -393,8 +425,8 @@ function this.draw()
config_changed, apply_font_requested = this.draw_config(); config_changed, apply_font_requested = this.draw_config();
modules_changed = this.draw_modules(); modules_changed = this.draw_modules();
this.draw_hotkeys(); hotkeys_changed = this.draw_hotkeys();
global_settings_changed, modifiers_changed, apply_font_requested, language_changed = this.draw_global_settings(apply_font_requested, config_changed); global_settings_changed, modifiers_changed, timer_delays_changed, apply_font_requested, language_changed = this.draw_global_settings(apply_font_requested, config_changed);
small_monster_UI_changed = this.draw_small_monster_UI(); small_monster_UI_changed = this.draw_small_monster_UI();
if imgui.tree_node(language.current_language.customization_menu.large_monster_UI) then if imgui.tree_node(language.current_language.customization_menu.large_monster_UI) then
@@ -471,22 +503,24 @@ function this.draw()
end end
if buff_UI_changed or modifiers_changed or config_changed then if buff_UI_changed or modifiers_changed or config_changed then
for _, buff in pairs(buffs.list) do buffs.init_all_UI();
buffs.init_UI(buff); buffs.init_names();
end
end end
if stats_UI_changed or modifiers_changed or config_changed then if stats_UI_changed or modifiers_changed or config_changed then
stats_UI.init_UI(); stats_UI.init_UI();
end end
if timer_delays_changed then
time.init_global_timers();
end
if this.menu_font_changed and (apply_font_requested or config_changed) then if this.menu_font_changed and (apply_font_requested or config_changed) then
this.menu_font_changed = false; this.menu_font_changed = false;
this.reload_font(); this.reload_font();
end end
if window_changed or modules_changed or global_settings_changed or small_monster_UI_changed or large_monster_dynamic_UI_changed or if window_changed or modules_changed or hotkeys_changed or global_settings_changed or small_monster_UI_changed or large_monster_dynamic_UI_changed or
large_monster_static_UI_changed or large_monster_highlighted_UI_changed or time_UI_changed or damage_meter_UI_changed or large_monster_static_UI_changed or large_monster_highlighted_UI_changed or time_UI_changed or damage_meter_UI_changed or
endemic_life_UI_changed or buff_UI_changed or stats_UI_changed or modifiers_changed or config_changed or debug_changed then endemic_life_UI_changed or buff_UI_changed or stats_UI_changed or modifiers_changed or config_changed or debug_changed then
config.save_current(); config.save_current();
@@ -622,6 +656,8 @@ function this.draw_modules()
end end
function this.draw_hotkeys() function this.draw_hotkeys()
local config_changed = false;
if imgui.tree_node(language.current_language.customization_menu.hotkeys) then if imgui.tree_node(language.current_language.customization_menu.hotkeys) then
if this.all_UI_waiting_for_key then if this.all_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then if imgui.button(language.current_language.customization_menu.press_any_key) then
@@ -630,25 +666,26 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.all_UI.shift = false; config.current_config.global_settings.hotkeys_with_modifiers.all_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.all_UI.alt = false; config.current_config.global_settings.hotkeys_with_modifiers.all_UI.alt = false;
this.all_UI_waiting_for_key = false; this.all_UI_waiting_for_key = false;
config_changed = true;
end end
elseif imgui.button(language.current_language.customization_menu.all_UI) then elseif imgui.button(language.current_language.customization_menu.all_UI) then
local is_any_other_waiting = this.small_monster_UI_waiting_for_key or
this.large_monster_UI_waiting_for_key or
this.large_monster_dynamic_UI_waiting_for_key or
this.large_monster_static_UI_waiting_for_key or
this.large_monster_highlighted_UI_waiting_for_key or
this.time_UI_waiting_for_key or
this.damage_meter_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.all_UI_waiting_for_key = true; this.all_UI_waiting_for_key = true;
end this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end end
imgui.same_line(); imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.all_UI)); imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.all_UI));
if this.small_monster_UI_waiting_for_key then if this.small_monster_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.small_monster_UI.key = 0; config.current_config.global_settings.hotkeys_with_modifiers.small_monster_UI.key = 0;
@@ -656,24 +693,25 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.small_monster_UI.shift = false; config.current_config.global_settings.hotkeys_with_modifiers.small_monster_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.small_monster_UI.alt = false; config.current_config.global_settings.hotkeys_with_modifiers.small_monster_UI.alt = false;
this.small_monster_UI_waiting_for_key = false; this.small_monster_UI_waiting_for_key = false;
config_changed = true;
end end
elseif imgui.button(language.current_language.customization_menu.small_monster_UI) then elseif imgui.button(language.current_language.customization_menu.small_monster_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or this.all_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key or
this.large_monster_dynamic_UI_waiting_for_key or
this.large_monster_static_UI_waiting_for_key or
this.large_monster_highlighted_UI_waiting_for_key or
this.time_UI_waiting_for_key or
this.damage_meter_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.small_monster_UI_waiting_for_key = true; this.small_monster_UI_waiting_for_key = true;
end this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end end
imgui.same_line(); imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.small_monster_UI)); imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.small_monster_UI));
if this.large_monster_UI_waiting_for_key then if this.large_monster_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_UI.key = 0; config.current_config.global_settings.hotkeys_with_modifiers.large_monster_UI.key = 0;
@@ -681,24 +719,25 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_UI.shift = false; config.current_config.global_settings.hotkeys_with_modifiers.large_monster_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_UI.alt = false; config.current_config.global_settings.hotkeys_with_modifiers.large_monster_UI.alt = false;
this.large_monster_UI_waiting_for_key = false; this.large_monster_UI_waiting_for_key = false;
config_changed = true;
end end
elseif imgui.button(language.current_language.customization_menu.large_monster_UI) then elseif imgui.button(language.current_language.customization_menu.large_monster_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key or this.small_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key or
this.large_monster_static_UI_waiting_for_key or
this.large_monster_highlighted_UI_waiting_for_key or
this.time_UI_waiting_for_key or
this.damage_meter_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.large_monster_UI_waiting_for_key = true; this.large_monster_UI_waiting_for_key = true;
end this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end end
imgui.same_line(); imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.large_monster_UI)); imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.large_monster_UI));
if this.large_monster_dynamic_UI_waiting_for_key then if this.large_monster_dynamic_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_dynamic_UI.key = 0; config.current_config.global_settings.hotkeys_with_modifiers.large_monster_dynamic_UI.key = 0;
@@ -706,25 +745,25 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_dynamic_UI.shift = false; config.current_config.global_settings.hotkeys_with_modifiers.large_monster_dynamic_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_dynamic_UI.alt = false; config.current_config.global_settings.hotkeys_with_modifiers.large_monster_dynamic_UI.alt = false;
this.large_monster_dynamic_UI_waiting_for_key = false; this.large_monster_dynamic_UI_waiting_for_key = false;
config_changed = true;
end end
elseif imgui.button(language.current_language.customization_menu.large_monster_dynamic_UI) then elseif imgui.button(language.current_language.customization_menu.large_monster_dynamic_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key or this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key or this.large_monster_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key or
this.large_monster_highlighted_UI_waiting_for_key or
this.time_UI_waiting_for_key or
this.damage_meter_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.large_monster_dynamic_UI_waiting_for_key = true; this.large_monster_dynamic_UI_waiting_for_key = true;
end this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end end
imgui.same_line(); imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.large_monster_dynamic_UI));
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers
.large_monster_dynamic_UI));
if this.large_monster_static_UI_waiting_for_key then if this.large_monster_static_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_static_UI.key = 0; config.current_config.global_settings.hotkeys_with_modifiers.large_monster_static_UI.key = 0;
@@ -732,25 +771,25 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_static_UI.shift = false; config.current_config.global_settings.hotkeys_with_modifiers.large_monster_static_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_static_UI.alt = false; config.current_config.global_settings.hotkeys_with_modifiers.large_monster_static_UI.alt = false;
this.large_monster_static_UI_waiting_for_key = false; this.large_monster_static_UI_waiting_for_key = false;
config_changed = true;
end end
elseif imgui.button(language.current_language.customization_menu.large_monster_static_UI) then elseif imgui.button(language.current_language.customization_menu.large_monster_static_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key or this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key or this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key or this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key or
this.time_UI_waiting_for_key or
this.damage_meter_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.large_monster_static_UI_waiting_for_key = true; this.large_monster_static_UI_waiting_for_key = true;
end this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end end
imgui.same_line(); imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.large_monster_static_UI));
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers
.large_monster_static_UI));
if this.large_monster_highlighted_UI_waiting_for_key then if this.large_monster_highlighted_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_highlighted_UI.key = 0; config.current_config.global_settings.hotkeys_with_modifiers.large_monster_highlighted_UI.key = 0;
@@ -758,23 +797,25 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_highlighted_UI.shift = false; config.current_config.global_settings.hotkeys_with_modifiers.large_monster_highlighted_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_highlighted_UI.alt = false; config.current_config.global_settings.hotkeys_with_modifiers.large_monster_highlighted_UI.alt = false;
this.large_monster_highlighted_UI_waiting_for_key = false; this.large_monster_highlighted_UI_waiting_for_key = false;
config_changed = true;
end end
elseif imgui.button(language.current_language.customization_menu.large_monster_highlighted_UI) then elseif imgui.button(language.current_language.customization_menu.large_monster_highlighted_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key or this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key or this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key or this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key or this.large_monster_static_UI_waiting_for_key = false;
this.time_UI_waiting_for_key or
this.damage_meter_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.large_monster_highlighted_UI_waiting_for_key = true; this.large_monster_highlighted_UI_waiting_for_key = true;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end end
end
imgui.same_line(); imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.large_monster_highlighted_UI));
.large_monster_highlighted_UI));
if this.time_UI_waiting_for_key then if this.time_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.time_UI.key = 0; config.current_config.global_settings.hotkeys_with_modifiers.time_UI.key = 0;
@@ -782,24 +823,25 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.time_UI.shift = false; config.current_config.global_settings.hotkeys_with_modifiers.time_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.time_UI.alt = false; config.current_config.global_settings.hotkeys_with_modifiers.time_UI.alt = false;
this.time_UI_waiting_for_key = false; this.time_UI_waiting_for_key = false;
config_changed = true;
end end
elseif imgui.button(language.current_language.customization_menu.time_UI) then elseif imgui.button(language.current_language.customization_menu.time_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key or this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key or this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key or this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key or this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key or this.large_monster_highlighted_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.time_UI_waiting_for_key = true; this.time_UI_waiting_for_key = true;
end this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end end
imgui.same_line(); imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.time_UI)); imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.time_UI));
if this.damage_meter_UI_waiting_for_key then if this.damage_meter_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.damage_meter_UI.key = 0; config.current_config.global_settings.hotkeys_with_modifiers.damage_meter_UI.key = 0;
@@ -807,24 +849,25 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.damage_meter_UI.shift = false; config.current_config.global_settings.hotkeys_with_modifiers.damage_meter_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.damage_meter_UI.alt = false; config.current_config.global_settings.hotkeys_with_modifiers.damage_meter_UI.alt = false;
this.damage_meter_UI_waiting_for_key = false; this.damage_meter_UI_waiting_for_key = false;
config_changed = true;
end end
elseif imgui.button(language.current_language.customization_menu.damage_meter_UI) then elseif imgui.button(language.current_language.customization_menu.damage_meter_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key or this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key or this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key or this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key or this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key or this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key or this.time_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.damage_meter_UI_waiting_for_key = true; this.damage_meter_UI_waiting_for_key = true;
end this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end end
imgui.same_line(); imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.damage_meter_UI)); imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.damage_meter_UI));
if this.endemic_life_UI_waiting_for_key then if this.endemic_life_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.endemic_life_UI.key = 0; config.current_config.global_settings.hotkeys_with_modifiers.endemic_life_UI.key = 0;
@@ -832,32 +875,88 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.endemic_life_UI.shift = false; config.current_config.global_settings.hotkeys_with_modifiers.endemic_life_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.endemic_life_UI.alt = false; config.current_config.global_settings.hotkeys_with_modifiers.endemic_life_UI.alt = false;
this.endemic_life_UI_waiting_for_key = false; this.endemic_life_UI_waiting_for_key = false;
config_changed = true;
end end
elseif imgui.button(language.current_language.customization_menu.endemic_life_UI) then elseif imgui.button(language.current_language.customization_menu.endemic_life_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key or this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key or this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key or this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key or this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key or this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key or this.time_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key; this.damage_meter_UI_waiting_for_key = false;
if not is_any_other_waiting then
this.endemic_life_UI_waiting_for_key = true; this.endemic_life_UI_waiting_for_key = true;
end this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end end
imgui.same_line(); imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.endemic_life_UI)); imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.endemic_life_UI));
if this.buff_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.buff_UI.key = 0;
config.current_config.global_settings.hotkeys_with_modifiers.buff_UI.ctrl = false;
config.current_config.global_settings.hotkeys_with_modifiers.buff_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.buff_UI.alt = false;
this.buff_UI_waiting_for_key = false;
config_changed = true;
end
elseif imgui.button(language.current_language.customization_menu.buff_UI) then
this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = true;
this.stats_UI_waiting_for_key = false;
end
imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.buff_UI));
if this.stats_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.stats_UI.key = 0;
config.current_config.global_settings.hotkeys_with_modifiers.stats_UI.ctrl = false;
config.current_config.global_settings.hotkeys_with_modifiers.stats_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.stats_UI.alt = false;
this.stats_UI_waiting_for_key = false;
config_changed = true;
end
elseif imgui.button(language.current_language.customization_menu.stats_UI) then
this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = true;
end
imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.stats_UI));
imgui.tree_pop(); imgui.tree_pop();
end end
return config_changed;
end end
function this.draw_global_settings(apply_font_requested, language_changed) function this.draw_global_settings(apply_font_requested, language_changed)
local changed = false; local changed = false;
local config_changed = false; local config_changed = false;
local modifiers_changed = false; local modifiers_changed = false;
local timer_delays_changed = false;
local index = 1; local index = 1;
@@ -997,6 +1096,67 @@ function this.draw_global_settings(apply_font_requested, language_changed)
config_changed = config_changed or changed; config_changed = config_changed or changed;
if imgui.tree_node(language.current_language.customization_menu.timer_delays) then
changed, cached_config.performance.timer_delays.update_singletons_delay = imgui.drag_float(
language.current_language.customization_menu.update_singletons_delay,
cached_config.performance.timer_delays.update_singletons_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_window_size_delay = imgui.drag_float(
language.current_language.customization_menu.update_window_size_delay,
cached_config.performance.timer_delays.update_window_size_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_quest_time_delay = imgui.drag_float(
language.current_language.customization_menu.update_quest_time_delay,
cached_config.performance.timer_delays.update_quest_time_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_is_online_delay = imgui.drag_float(
language.current_language.customization_menu.update_is_online_delay,
cached_config.performance.timer_delays.update_is_online_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_players_delay = imgui.drag_float(
language.current_language.customization_menu.update_players_delay,
cached_config.performance.timer_delays.update_players_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_myself_position_delay = imgui.drag_float(
language.current_language.customization_menu.update_myself_position_delay,
cached_config.performance.timer_delays.update_myself_position_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_player_info_delay = imgui.drag_float(
language.current_language.customization_menu.update_player_info_delay,
cached_config.performance.timer_delays.update_player_info_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_buffs_delay = imgui.drag_float(
language.current_language.customization_menu.update_buffs_delay,
cached_config.performance.timer_delays.update_buffs_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
imgui.tree_pop();
end
imgui.tree_pop(); imgui.tree_pop();
end end
@@ -1136,7 +1296,7 @@ function this.draw_global_settings(apply_font_requested, language_changed)
imgui.tree_pop(); imgui.tree_pop();
end end
return config_changed, modifiers_changed, apply_font_requested, language_changed; return config_changed, modifiers_changed, timer_delays_changed, apply_font_requested, language_changed;
end end
function this.draw_small_monster_UI() function this.draw_small_monster_UI()
@@ -1287,9 +1447,7 @@ function this.draw_small_monster_UI()
imgui.tree_pop(); imgui.tree_pop();
end end
changed = label_customization.draw(language.current_language.customization_menu.monster_name_label, changed = label_customization.draw(language.current_language.customization_menu.monster_name_label, cached_config.monster_name_label);
cached_config.monster_name_label);
config_changed = config_changed or changed; config_changed = config_changed or changed;
changed = health_customization.draw(cached_config.health); changed = health_customization.draw(cached_config.health);
@@ -1316,8 +1474,7 @@ function this.draw_large_monster_dynamic_UI()
if imgui.tree_node(language.current_language.customization_menu.dynamically_positioned) then if imgui.tree_node(language.current_language.customization_menu.dynamically_positioned) then
local cached_config = config.current_config.large_monster_UI.dynamic; local cached_config = config.current_config.large_monster_UI.dynamic;
changed, cached_config.enabled = imgui.checkbox( changed, cached_config.enabled = imgui.checkbox(language.current_language.customization_menu.enabled, cached_config.enabled);
language.current_language.customization_menu.enabled, cached_config.enabled);
config_changed = config_changed or changed; config_changed = config_changed or changed;
@@ -2240,6 +2397,17 @@ function this.draw_buff_UI()
cached_config.settings.orientation = this.orientation_types[index]; cached_config.settings.orientation = this.orientation_types[index];
end end
changed, index = imgui.combo(
language.current_language.customization_menu.infinite_buffs_location,
utils.table.find_index(this.buff_UI_infinite_buffs_location_types, cached_config.settings.infinite_buffs_location),
this.displayed_buff_UI_infinite_buffs_location_types);
config_changed = config_changed or changed;
if changed then
cached_config.settings.infinite_buffs_location = this.buff_UI_infinite_buffs_location_types[index];
end
imgui.tree_pop(); imgui.tree_pop();
end end
@@ -2302,15 +2470,328 @@ function this.draw_buff_UI()
imgui.tree_pop(); imgui.tree_pop();
end end
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.name_label); if imgui.tree_node(language.current_language.customization_menu.filter) then
if imgui.tree_node(language.current_language.customization_menu.abnormal_statuses) then
for _, key in ipairs(abnormal_statuses.keys) do
changed, cached_config.filter.abnormal_statuses[key] = imgui.checkbox(
abnormal_statuses.get_abnormal_status_name(key), cached_config.filter.abnormal_statuses[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.item_buffs) then
local cached_language = language.current_language.item_buffs;
for _, key in ipairs(item_buffs.keys) do
changed, cached_config.filter.item_buffs[key] = imgui.checkbox(cached_language[key], cached_config.filter.item_buffs[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.endemic_life_buffs) then
local cached_language = language.current_language.endemic_life;
for _, key in ipairs(endemic_life_buffs.keys) do
changed, cached_config.filter.endemic_life_buffs[key] = imgui.checkbox(cached_language[key], cached_config.filter.endemic_life_buffs[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.melody_effects) then
local cached_language = language.current_language.melody_effects;
for lua_index, key in ipairs(melody_effects.keys) do
-- Health Recovery (S), Health Recovery (L), Health Recovery (S) + (Antidote), Sonic Wave
if (lua_index >= 16 and lua_index <= 18) or lua_index == 24 then
goto continue;
end
changed, cached_config.filter.melody_effects[key] = imgui.checkbox(cached_language[key], cached_config.filter.melody_effects[key]);
config_changed = config_changed or changed; config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.timer_label); ::continue::
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.dango_skills) then
local cached_language = language.current_language.dango_skills;
for _, key in ipairs(dango_skills.keys) do
changed, cached_config.filter.dango_skills[key] = imgui.checkbox(cached_language[key], cached_config.filter.dango_skills[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.rampage_skills) then
local cached_language = language.current_language.rampage_skills;
for _, key in ipairs(rampage_skills.keys) do
changed, cached_config.filter.rampage_skills[key] = imgui.checkbox(cached_language[key], cached_config.filter.rampage_skills[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.skills) then
local cached_language = language.current_language.skills;
for _, key in ipairs(skills.keys) do
changed, cached_config.filter.skills[key] = imgui.checkbox(cached_language[key], cached_config.filter.skills[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.weapon_skills) then
for _, weapon in ipairs(weapon_skills.keys) do
if imgui.tree_node(language.current_language.weapons[weapon.key]) then
local cached_weapon_filter = cached_config.filter.weapon_skills[weapon.key];
local cached_language = language.current_language.weapon_skills[weapon.key];
for _, key in ipairs(weapon.skill_keys) do
local name = cached_language[key];
if key == "spirit_gauge_autofill" then
local soaring_kick_name = tostring(cached_language.soaring_kick);
local iai_slash_name = tostring(cached_language.iai_slash);
name = string.format("%s (%s, %s)", name, soaring_kick_name, iai_slash_name);
end
changed, cached_weapon_filter[key] = imgui.checkbox(
name, cached_weapon_filter[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.otomo_moves) then
local cached_language = language.current_language.otomo_moves;
for _, key in ipairs(otomo_moves.keys) do
changed, cached_config.filter.otomo_moves[key] = imgui.checkbox(cached_language[key], cached_config.filter.otomo_moves[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.misc_buffs) then
local cached_language = language.current_language.misc_buffs;
for _, key in ipairs(misc_buffs.keys) do
local name = cached_language[key];
if key == "attack_up" then
local might_seed_name = tostring(language.current_language.item_buffs.might_seed);
local dango_bulker_name = tostring(language.current_language.dango_skills.dango_bulker);
local chameleos_soul_name = tostring(language.current_language.rampage_skills.chameleos_soul);
name = string.format("%s (%s, %s, %s)", name, might_seed_name, dango_bulker_name, chameleos_soul_name);
elseif key == "defense_up" then
local adamant_seed_name = tostring(language.current_language.item_buffs.adamant_seed);
local chameleos_soul_name = tostring(language.current_language.rampage_skills.chameleos_soul);
name = string.format("%s (%s, %s)", name, adamant_seed_name, chameleos_soul_name);
elseif key == "stamina_use_down" then
local dash_juice_name = tostring(language.current_language.item_buffs.dash_juice);
local peepersects_name = tostring(language.current_language.endemic_life.peepersects);
local chameleos_soul_name = tostring(language.current_language.rampage_skills.chameleos_soul);
name = string.format("%s (%s, %s, %s)", name, dash_juice_name, peepersects_name, chameleos_soul_name);
elseif key == "natural_healing_up" then
local immunizer_name = tostring(language.current_language.item_buffs.immunizer);
local vase_of_vitality_name = tostring(language.current_language.otomo_moves.vase_of_vitality);
name = string.format("%s (%s, %s)", name, immunizer_name, vase_of_vitality_name);
end
changed, cached_config.filter.misc_buffs[key] = imgui.checkbox(name, cached_config.filter.misc_buffs[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.abnormal_statuses) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.abnormal_statuses.name_label);
config_changed = config_changed or changed; config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.bar); changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.abnormal_statuses.timer_label);
config_changed = config_changed or changed; config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.abnormal_statuses.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.item_buffs) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.item_buffs.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.item_buffs.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.item_buffs.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.endemic_life_buffs) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.endemic_life_buffs.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.endemic_life_buffs.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.endemic_life_buffs.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.melody_effects) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.melody_effects.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.melody_effects.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.melody_effects.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.dango_skills) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.dango_skills.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.dango_skills.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.dango_skills.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.rampage_skills) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.rampage_skills.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.rampage_skills.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.rampage_skills.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.skills) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.skills.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.skills.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.skills.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.weapon_skills) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.weapon_skills.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.weapon_skills.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.weapon_skills.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.otomo_moves) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.otomo_moves.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.otomo_moves.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.otomo_moves.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.misc_buffs) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.misc_buffs.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.misc_buffs.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.misc_buffs.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
imgui.tree_pop(); imgui.tree_pop();
end end
@@ -2355,6 +2836,12 @@ function this.draw_stats_UI()
imgui.tree_pop(); imgui.tree_pop();
end end
changed = label_customization.draw(language.current_language.customization_menu.health_label, cached_config.health_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.stamina_label, cached_config.stamina_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.attack_label, cached_config.attack_label); changed = label_customization.draw(language.current_language.customization_menu.attack_label, cached_config.attack_label);
config_changed = config_changed or changed; config_changed = config_changed or changed;
@@ -2379,9 +2866,6 @@ function this.draw_stats_UI()
changed = label_customization.draw(language.current_language.customization_menu.dragon_resistance_label, cached_config.dragon_resistance_label); changed = label_customization.draw(language.current_language.customization_menu.dragon_resistance_label, cached_config.dragon_resistance_label);
config_changed = config_changed or changed; config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.stamina_label, cached_config.stamina_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.element_label, cached_config.element_label); changed = label_customization.draw(language.current_language.customization_menu.element_label, cached_config.element_label);
config_changed = config_changed or changed; config_changed = config_changed or changed;
@@ -2464,11 +2948,22 @@ function this.init_dependencies()
keyboard = require("MHR_Overlay.Game_Handler.keyboard"); keyboard = require("MHR_Overlay.Game_Handler.keyboard");
non_players = require("MHR_Overlay.Damage_Meter.non_players"); non_players = require("MHR_Overlay.Damage_Meter.non_players");
quest_status = require("MHR_Overlay.Game_Handler.quest_status"); quest_status = require("MHR_Overlay.Game_Handler.quest_status");
buffs = require("MHR_Overlay.Buffs.buffs");
error_handler = require("MHR_Overlay.Misc.error_handler"); error_handler = require("MHR_Overlay.Misc.error_handler");
time = require("MHR_Overlay.Game_Handler.time"); time = require("MHR_Overlay.Game_Handler.time");
stats_UI = require("MHR_Overlay.UI.Modules.stats_UI"); stats_UI = require("MHR_Overlay.UI.Modules.stats_UI");
buffs = require("MHR_Overlay.Buffs.buffs");
item_buffs = require("MHR_Overlay.Buffs.item_buffs");
melody_effects = require("MHR_Overlay.Buffs.melody_effects");
endemic_life_buffs = require("MHR_Overlay.Buffs.endemic_life_buffs");
skills = require("MHR_Overlay.Buffs.skills");
dango_skills = require("MHR_Overlay.Buffs.dango_skills");
abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses");
otomo_moves = require("MHR_Overlay.Buffs.otomo_moves");
weapon_skills = require("MHR_Overlay.Buffs.weapon_skills");
rampage_skills = require("MHR_Overlay.Buffs.rampage_skills");
misc_buffs = require("MHR_Overlay.Buffs.misc_buffs");
label_customization = require("MHR_Overlay.UI.Customizations.label_customization"); label_customization = require("MHR_Overlay.UI.Customizations.label_customization");
bar_customization = require("MHR_Overlay.UI.Customizations.bar_customization"); bar_customization = require("MHR_Overlay.UI.Customizations.bar_customization");
large_monster_UI_customization = require("MHR_Overlay.UI.Customizations.large_monster_UI_customization"); large_monster_UI_customization = require("MHR_Overlay.UI.Customizations.large_monster_UI_customization");

View File

@@ -3,6 +3,7 @@
"HP": "HP:", "HP": "HP:",
"buildup": "Buildup:", "buildup": "Buildup:",
"gold": "Gold", "gold": "Gold",
"lv": "",
"mini": "Mini", "mini": "Mini",
"otomo": "Buddy", "otomo": "Buddy",
"part_anomaly_core": "Anomaly Core", "part_anomaly_core": "Anomaly Core",
@@ -21,7 +22,7 @@
"blastblight": "Blastblight", "blastblight": "Blastblight",
"bleeding": "Bleeding", "bleeding": "Bleeding",
"bloodblight": "Bloodblight", "bloodblight": "Bloodblight",
"bubbleblight": "Bubbleblight", "deadly_poison": "Deadly Poison",
"defense_down": "Defense Down", "defense_down": "Defense Down",
"dragonblight": "Dragonblight", "dragonblight": "Dragonblight",
"dung_bomb": "Dung Bomb", "dung_bomb": "Dung Bomb",
@@ -29,6 +30,7 @@
"exhaust": "Exhaust", "exhaust": "Exhaust",
"fall_otomo_trap": "Fall Buddy Trap", "fall_otomo_trap": "Fall Buddy Trap",
"fall_trap": "Fall Trap", "fall_trap": "Fall Trap",
"falling_asleep": "Falling Asleep",
"fireblight": "Fireblight", "fireblight": "Fireblight",
"flash": "Flash", "flash": "Flash",
"frenzy": "Frenzy", "frenzy": "Frenzy",
@@ -38,6 +40,8 @@
"hellfireblight": "Hellfireblight", "hellfireblight": "Hellfireblight",
"iceblight": "Iceblight", "iceblight": "Iceblight",
"leeched": "Leeched", "leeched": "Leeched",
"major_bubbleblight": "Major Bubbleblight",
"minor_bubbleblight": "Minor Bubbleblight",
"muck": "Muck", "muck": "Muck",
"paralysis": "Paralysis", "paralysis": "Paralysis",
"poison": "Poison", "poison": "Poison",
@@ -57,22 +61,10 @@
"waterblight": "Waterblight", "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 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",
@@ -135,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",
@@ -148,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",
@@ -177,6 +172,7 @@
"health_break_sever_anomaly_filter": "Health + Break + Sever + Anomaly Core", "health_break_sever_anomaly_filter": "Health + Break + Sever + Anomaly Core",
"health_break_sever_filter": "Health + Break + Sever", "health_break_sever_filter": "Health + Break + Sever",
"health_filter": "Health", "health_filter": "Health",
"health_label": "Health Label",
"health_percentage": "Health Percentage", "health_percentage": "Health Percentage",
"health_sever_anomaly_filter": "Health + Sever + Anomaly Core", "health_sever_anomaly_filter": "Health + Sever + Anomaly Core",
"health_sever_filter": "Health + Sever", "health_sever_filter": "Health + Sever",
@@ -216,9 +212,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",
@@ -242,8 +240,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",
@@ -269,6 +269,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",
@@ -292,6 +293,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",
@@ -314,6 +316,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",
@@ -336,6 +339,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",
@@ -358,6 +362,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",
@@ -365,6 +377,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",
@@ -372,10 +385,46 @@
"y": "Y", "y": "Y",
"z": "Z" "z": "Z"
}, },
"dangos": { "dango_skills": {
"dango_defender_hi": "Dango Defender (Hi)" "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"
}, },
"font_name": "",
"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",
@@ -406,6 +455,19 @@
"tremors_negated": "Tremors Negated", "tremors_negated": "Tremors Negated",
"wind_pressure_negated": "Wind Pressure Negated" "wind_pressure_negated": "Wind Pressure Negated"
}, },
"misc_buffs": {
"attack_up": "Attack Up",
"defense_up": "Defense Up",
"immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down"
},
"otomo_moves": {
"go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum",
"rousing_roar": "Rousing Roar",
"vase_of_vitality": "Vase of Vitality"
},
"parts": { "parts": {
"abdomen": "Abdomen", "abdomen": "Abdomen",
"amatsu_unknown": "?", "amatsu_unknown": "?",
@@ -475,25 +537,47 @@
"wingclaws": "Wingclaws", "wingclaws": "Wingclaws",
"wings": "Wings" "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",
"blood_awakening": "Blood Awakening",
"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. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"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",
"offensive_guard": "Offensive Guard", "offensive_guard": "Offensive Guard",
"partbreaker": "Partbreaker",
"peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)",
"protective_polish": "Protective Polish", "protective_polish": "Protective Polish",
"resentment": "Resentment",
"resuscitate": "Resuscitate", "resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger",
"strife": "Strife",
"wall_runner": "Wall Runner", "wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle" "wind_mantle": "Wind Mantle"
}, },
@@ -514,6 +598,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": {
"bow": {
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"bolt_boost": "Bolt Boost",
"herculean_draw": "Herculean Draw"
},
"charge_blade": {
"element_boost": "Element Boost",
"sword_boost_mode": "Sword Boost Mode"
},
"dual_blades": {
"archdemon_mode": "Archdemon Mode",
"ironshine_silk": "Ironshine Silk"
},
"great_sword": {
"power_sheathe": "Power Sheathe"
},
"gunlance": {
"erupting_cannon": "Erupting Cannon",
"ground_splitter": "Ground Splitter"
},
"hammer": {
"impact_burst": "Impact Burst"
},
"heavy_bowgun": {
"counter_charger": "Counter Charger",
"overheat": "Overheat",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
},
"hunting_horn": {
"bead_of_resonance": "Bead of Resonance",
"silkbind_shockwave": "Silkbind Shockwave",
"sonic_bloom": "Sonic Bloom"
},
"insect_glaive": {
"all_extracts_mix": "All Extracts Mix",
"orange_extract": "Orange Extract",
"red_extract": "Red Extract",
"white_extract": "White Extract"
},
"lance": {
"anchor_rage": "Anchor Rage",
"spiral_thrust": "Spiral Thrust",
"twin_wine": "Twin Wine"
},
"light_bowgun": {
"fanning_maneuver": "Fanning Maneuver",
"wyvernblast_reload": "Wyvernblast Reload"
},
"long_sword": {
"harvest_moon": "Harvest Moon",
"iai_slash": "Iai Slash",
"soaring_kick": "Soaring Kick",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill"
},
"switch_axe": {
"amped_state": "Amped State",
"axe_heavy_slam": "Axe: Heavy Slam",
"switch_charger": "Switch Charger"
},
"sword_and_shield": {
"destroyer_oil": "Destroyer Oil"
}
},
"weapons": {
"bow": "Bow",
"charge_blade": "Charge Blade",
"dual_blades": "Dual Blades",
"great_sword": "Great Sword",
"gunlance": "Gunlance",
"hammer": "Hammer",
"heavy_bowgun": "Heavy Bowgun",
"hunting_horn": "Hunting Horn",
"insect_glaive": "Insect Glaive",
"lance": "Lance",
"light_bowgun": "Light Bowgun",
"long_sword": "Long Sword",
"switch_axe": "Switch Axe",
"sword_and_shield": "Sword & Shield"
}
} }

View File

@@ -3,6 +3,7 @@
"HP": "HP:", "HP": "HP:",
"buildup": "蓄積値:", "buildup": "蓄積値:",
"gold": "金冠", "gold": "金冠",
"lv": "",
"mini": "小型", "mini": "小型",
"otomo": "Buddy", "otomo": "Buddy",
"part_anomaly_core": "Anomaly Core", "part_anomaly_core": "Anomaly Core",
@@ -21,7 +22,7 @@
"blastblight": "Blastblight", "blastblight": "Blastblight",
"bleeding": "Bleeding", "bleeding": "Bleeding",
"bloodblight": "Bloodblight", "bloodblight": "Bloodblight",
"bubbleblight": "Bubbleblight", "deadly_poison": "Deadly Poison",
"defense_down": "Defense Down", "defense_down": "Defense Down",
"dragonblight": "Dragonblight", "dragonblight": "Dragonblight",
"dung_bomb": "悪臭", "dung_bomb": "悪臭",
@@ -29,6 +30,7 @@
"exhaust": "疲労", "exhaust": "疲労",
"fall_otomo_trap": "オトモ落とし穴", "fall_otomo_trap": "オトモ落とし穴",
"fall_trap": "落とし穴", "fall_trap": "落とし穴",
"falling_asleep": "Falling Asleep",
"fireblight": "火属性やられ", "fireblight": "火属性やられ",
"flash": "目くらまし", "flash": "目くらまし",
"frenzy": "Frenzy", "frenzy": "Frenzy",
@@ -38,6 +40,8 @@
"hellfireblight": "Hellfireblight", "hellfireblight": "Hellfireblight",
"iceblight": "氷属性やられ", "iceblight": "氷属性やられ",
"leeched": "Leeched", "leeched": "Leeched",
"major_bubbleblight": "Major Bubbleblight",
"minor_bubbleblight": "Minor Bubbleblight",
"muck": "Muck", "muck": "Muck",
"paralysis": "麻痺", "paralysis": "麻痺",
"poison": "毒", "poison": "毒",
@@ -57,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": "状態異常の蓄積値",
@@ -135,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",
@@ -148,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",
@@ -177,6 +172,7 @@
"health_break_sever_anomaly_filter": "Health + Break + Sever + Anomaly Core", "health_break_sever_anomaly_filter": "Health + Break + Sever + Anomaly Core",
"health_break_sever_filter": "Health + Break + Sever", "health_break_sever_filter": "Health + Break + Sever",
"health_filter": "Health", "health_filter": "Health",
"health_label": "Health Label",
"health_percentage": "ダメージ割合()", "health_percentage": "ダメージ割合()",
"health_sever_anomaly_filter": "Health + Sever + Anomaly Core", "health_sever_anomaly_filter": "Health + Sever + Anomaly Core",
"health_sever_filter": "Health + Sever", "health_sever_filter": "Health + Sever",
@@ -216,9 +212,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",
@@ -242,8 +240,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": "全体的な調整",
@@ -269,6 +269,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",
@@ -292,6 +293,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",
@@ -314,6 +316,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": "ソート",
@@ -336,6 +339,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": "最高ダメージ",
@@ -358,6 +362,14 @@
"tracked_damage_types": "ダメージタイプでの追跡", "tracked_damage_types": "ダメージタイプでの追跡",
"tracked_monster_types": "モンスタータイプでの追跡", "tracked_monster_types": "モンスタータイプでの追跡",
"type": "タイプ", "type": "タイプ",
"update_buffs_delay": "Update Buffs (seconds)",
"update_is_online_delay": "Update Is Online (seconds)",
"update_myself_position_delay": "Update Myself Position (seconds)",
"update_player_info_delay": "Update Player Info (seconds)",
"update_players_delay": "Update Players (seconds)",
"update_quest_time_delay": "Update Quest Time (seconds)",
"update_singletons_delay": "Update Singletons (seconds)",
"update_window_size_delay": "Update Window Size (seconds)",
"use_d2d_if_available": "Use Direct2D if available", "use_d2d_if_available": "Use Direct2D if available",
"value": "Value", "value": "Value",
"value_label": "バリューラベル", "value_label": "バリューラベル",
@@ -365,6 +377,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",
@@ -372,10 +385,46 @@
"y": "Y", "y": "Y",
"z": "Z" "z": "Z"
}, },
"dangos": { "dango_skills": {
"dango_defender_hi": "Dango Defender (Hi)" "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": "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",
@@ -406,6 +455,19 @@
"tremors_negated": "Tremors Negated", "tremors_negated": "Tremors Negated",
"wind_pressure_negated": "Wind Pressure Negated" "wind_pressure_negated": "Wind Pressure Negated"
}, },
"misc_buffs": {
"attack_up": "Attack Up",
"defense_up": "Defense Up",
"immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down"
},
"otomo_moves": {
"go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum",
"rousing_roar": "Rousing Roar",
"vase_of_vitality": "Vase of Vitality"
},
"parts": { "parts": {
"abdomen": "腹部", "abdomen": "腹部",
"amatsu_unknown": "?", "amatsu_unknown": "?",
@@ -475,25 +537,47 @@
"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",
"blood_awakening": "Blood Awakening",
"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. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"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",
"offensive_guard": "Offensive Guard", "offensive_guard": "Offensive Guard",
"partbreaker": "Partbreaker",
"peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)",
"protective_polish": "Protective Polish", "protective_polish": "Protective Polish",
"resentment": "Resentment",
"resuscitate": "Resuscitate", "resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger",
"strife": "Strife",
"wall_runner": "Wall Runner", "wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle" "wind_mantle": "Wind Mantle"
}, },
@@ -518,14 +602,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": {
"bow": {
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"bolt_boost": "Bolt Boost",
"herculean_draw": "Herculean Draw"
},
"charge_blade": {
"element_boost": "Element Boost",
"sword_boost_mode": "Sword Boost Mode"
},
"dual_blades": {
"archdemon_mode": "Archdemon Mode",
"ironshine_silk": "Ironshine Silk"
},
"great_sword": {
"power_sheathe": "Power Sheathe"
},
"gunlance": {
"erupting_cannon": "Erupting Cannon",
"ground_splitter": "Ground Splitter"
},
"hammer": {
"impact_burst": "Impact Burst"
},
"heavy_bowgun": {
"counter_charger": "Counter Charger",
"overheat": "Overheat",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
},
"hunting_horn": {
"bead_of_resonance": "Bead of Resonance",
"silkbind_shockwave": "Silkbind Shockwave",
"sonic_bloom": "Sonic Bloom"
},
"insect_glaive": {
"all_extracts_mix": "All Extracts Mix",
"orange_extract": "Orange Extract",
"red_extract": "Red Extract",
"white_extract": "White Extract"
},
"lance": {
"anchor_rage": "Anchor Rage",
"spiral_thrust": "Spiral Thrust",
"twin_wine": "Twin Wine"
},
"light_bowgun": {
"fanning_maneuver": "Fanning Maneuver",
"wyvernblast_reload": "Wyvernblast Reload"
},
"long_sword": {
"harvest_moon": "Harvest Moon",
"iai_slash": "Iai Slash",
"soaring_kick": "Soaring Kick",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill"
},
"switch_axe": {
"amped_state": "Amped State",
"axe_heavy_slam": "Axe: Heavy Slam",
"switch_charger": "Switch Charger"
},
"sword_and_shield": {
"destroyer_oil": "Destroyer Oil"
}
},
"weapons": {
"bow": "Bow",
"charge_blade": "Charge Blade",
"dual_blades": "Dual Blades",
"great_sword": "Great Sword",
"gunlance": "Gunlance",
"hammer": "Hammer",
"heavy_bowgun": "Heavy Bowgun",
"hunting_horn": "Hunting Horn",
"insect_glaive": "Insect Glaive",
"lance": "Lance",
"light_bowgun": "Light Bowgun",
"long_sword": "Long Sword",
"switch_axe": "Switch Axe",
"sword_and_shield": "Sword & Shield"
}
} }

View File

@@ -3,6 +3,7 @@
"HP": "체력:", "HP": "체력:",
"buildup": "누적치:", "buildup": "누적치:",
"gold": "금관", "gold": "금관",
"lv": "",
"mini": "최소", "mini": "최소",
"otomo": "동반자", "otomo": "동반자",
"part_anomaly_core": "괴이핵", "part_anomaly_core": "괴이핵",
@@ -21,7 +22,7 @@
"blastblight": "Blastblight", "blastblight": "Blastblight",
"bleeding": "Bleeding", "bleeding": "Bleeding",
"bloodblight": "Bloodblight", "bloodblight": "Bloodblight",
"bubbleblight": "Bubbleblight", "deadly_poison": "Deadly Poison",
"defense_down": "Defense Down", "defense_down": "Defense Down",
"dragonblight": "Dragonblight", "dragonblight": "Dragonblight",
"dung_bomb": "거름탄", "dung_bomb": "거름탄",
@@ -29,6 +30,7 @@
"exhaust": "탈진", "exhaust": "탈진",
"fall_otomo_trap": "동반자 구멍 함정", "fall_otomo_trap": "동반자 구멍 함정",
"fall_trap": "구멍 함정", "fall_trap": "구멍 함정",
"falling_asleep": "Falling Asleep",
"fireblight": "불바위구리", "fireblight": "불바위구리",
"flash": "섬광", "flash": "섬광",
"frenzy": "Frenzy", "frenzy": "Frenzy",
@@ -38,6 +40,8 @@
"hellfireblight": "Hellfireblight", "hellfireblight": "Hellfireblight",
"iceblight": "진흙구리", "iceblight": "진흙구리",
"leeched": "Leeched", "leeched": "Leeched",
"major_bubbleblight": "Major Bubbleblight",
"minor_bubbleblight": "Minor Bubbleblight",
"muck": "Muck", "muck": "Muck",
"paralysis": "마비", "paralysis": "마비",
"poison": "독", "poison": "독",
@@ -57,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": "상태이상 누적치",
@@ -135,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": "삭제하기",
@@ -149,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": "가장 멀리있는",
@@ -178,6 +172,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_percentage": "체력 비율", "health_percentage": "체력 비율",
"health_sever_anomaly_filter": "체력 + 절단 + 괴이핵", "health_sever_anomaly_filter": "체력 + 절단 + 괴이핵",
"health_sever_filter": "체력 + 절단", "health_sever_filter": "체력 + 절단",
@@ -217,9 +212,11 @@
"in_lobby": "로비 내", "in_lobby": "로비 내",
"in_training_area": "훈련구역 내", "in_training_area": "훈련구역 내",
"include": "포함", "include": "포함",
"infinite_buffs_location": "Infinite Buffs Location",
"inside": "내부", "inside": "내부",
"installations": "설치", "installations": "설치",
"italic": "기울임", "italic": "기울임",
"item_buffs": "Item Buffs",
"join_time": "참가 시간", "join_time": "참가 시간",
"killcam": "처치 영상", "killcam": "처치 영상",
"kunai": "쿠나이", "kunai": "쿠나이",
@@ -243,8 +240,10 @@
"max_monster_updates_per_tick": "틱당 최대 몬스터 갱신 횟수", "max_monster_updates_per_tick": "틱당 최대 몬스터 갱신 횟수",
"max_value": "최대값", "max_value": "최대값",
"me": "나", "me": "나",
"melody_effects": "Melody Effects",
"menu_font": "메뉴 글꼴", "menu_font": "메뉴 글꼴",
"menu_font_change_disclaimer": "언어 및 메뉴 글꼴 크기를 여러 번 변경하면 비정상 종료가 될 수 있습니다!", "menu_font_change_disclaimer": "언어 및 메뉴 글꼴 크기를 여러 번 변경하면 비정상 종료가 될 수 있습니다!",
"misc_buffs": "Misc Buffs",
"mod_name": "MHR Overlay", "mod_name": "MHR Overlay",
"mode": "모드", "mode": "모드",
"modifiers": "설정 배율", "modifiers": "설정 배율",
@@ -270,6 +269,7 @@
"other": "기타", "other": "기타",
"other_player_otomos": "다른 플레이어 동반자", "other_player_otomos": "다른 플레이어 동반자",
"other_players": "다른 헌터", "other_players": "다른 헌터",
"otomo_moves": "Buddy Moves",
"otomos": "동반자", "otomos": "동반자",
"outline": "외곽선", "outline": "외곽선",
"outside": "외부", "outside": "외부",
@@ -293,6 +293,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": "이름 변경",
@@ -315,6 +316,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": "정렬방법",
@@ -337,6 +339,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": "최고 대미지",
@@ -359,6 +362,14 @@
"tracked_damage_types": "추적할 대미지 종류", "tracked_damage_types": "추적할 대미지 종류",
"tracked_monster_types": "추적할 몬스터 타입", "tracked_monster_types": "추적할 몬스터 타입",
"type": "종류", "type": "종류",
"update_buffs_delay": "Update Buffs (seconds)",
"update_is_online_delay": "Update Is Online (seconds)",
"update_myself_position_delay": "Update Myself Position (seconds)",
"update_player_info_delay": "Update Player Info (seconds)",
"update_players_delay": "Update Players (seconds)",
"update_quest_time_delay": "Update Quest Time (seconds)",
"update_singletons_delay": "Update Singletons (seconds)",
"update_window_size_delay": "Update Window Size (seconds)",
"use_d2d_if_available": "가능한 Direct2D를 사용함", "use_d2d_if_available": "가능한 Direct2D를 사용함",
"value": "Value", "value": "Value",
"value_label": "값 정보", "value_label": "값 정보",
@@ -366,6 +377,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": "용조종",
@@ -373,10 +385,46 @@
"y": "Y", "y": "Y",
"z": "Z" "z": "Z"
}, },
"dangos": { "dango_skills": {
"dango_defender_hi": "Dango Defender (Hi)" "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": "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",
@@ -407,6 +455,19 @@
"tremors_negated": "Tremors Negated", "tremors_negated": "Tremors Negated",
"wind_pressure_negated": "Wind Pressure Negated" "wind_pressure_negated": "Wind Pressure Negated"
}, },
"misc_buffs": {
"attack_up": "Attack Up",
"defense_up": "Defense Up",
"immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down"
},
"otomo_moves": {
"go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum",
"rousing_roar": "Rousing Roar",
"vase_of_vitality": "Vase of Vitality"
},
"parts": { "parts": {
"abdomen": "배", "abdomen": "배",
"amatsu_unknown": "?", "amatsu_unknown": "?",
@@ -476,25 +537,47 @@
"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",
"blood_awakening": "Blood Awakening",
"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. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"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",
"offensive_guard": "Offensive Guard", "offensive_guard": "Offensive Guard",
"partbreaker": "Partbreaker",
"peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)",
"protective_polish": "Protective Polish", "protective_polish": "Protective Polish",
"resentment": "Resentment",
"resuscitate": "Resuscitate", "resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger",
"strife": "Strife",
"wall_runner": "Wall Runner", "wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle" "wind_mantle": "Wind Mantle"
}, },
@@ -521,12 +604,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": {
"bow": {
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"bolt_boost": "Bolt Boost",
"herculean_draw": "Herculean Draw"
},
"charge_blade": {
"element_boost": "Element Boost",
"sword_boost_mode": "Sword Boost Mode"
},
"dual_blades": {
"archdemon_mode": "Archdemon Mode",
"ironshine_silk": "Ironshine Silk"
},
"great_sword": {
"power_sheathe": "Power Sheathe"
},
"gunlance": {
"erupting_cannon": "Erupting Cannon",
"ground_splitter": "Ground Splitter"
},
"hammer": {
"impact_burst": "Impact Burst"
},
"heavy_bowgun": {
"counter_charger": "Counter Charger",
"overheat": "Overheat",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
},
"hunting_horn": {
"bead_of_resonance": "Bead of Resonance",
"silkbind_shockwave": "Silkbind Shockwave",
"sonic_bloom": "Sonic Bloom"
},
"insect_glaive": {
"all_extracts_mix": "All Extracts Mix",
"orange_extract": "Orange Extract",
"red_extract": "Red Extract",
"white_extract": "White Extract"
},
"lance": {
"anchor_rage": "Anchor Rage",
"spiral_thrust": "Spiral Thrust",
"twin_wine": "Twin Wine"
},
"light_bowgun": {
"fanning_maneuver": "Fanning Maneuver",
"wyvernblast_reload": "Wyvernblast Reload"
},
"long_sword": {
"harvest_moon": "Harvest Moon",
"iai_slash": "Iai Slash",
"soaring_kick": "Soaring Kick",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill"
},
"switch_axe": {
"amped_state": "Amped State",
"axe_heavy_slam": "Axe: Heavy Slam",
"switch_charger": "Switch Charger"
},
"sword_and_shield": {
"destroyer_oil": "Destroyer Oil"
}
},
"weapons": {
"bow": "Bow",
"charge_blade": "Charge Blade",
"dual_blades": "Dual Blades",
"great_sword": "Great Sword",
"gunlance": "Gunlance",
"hammer": "Hammer",
"heavy_bowgun": "Heavy Bowgun",
"hunting_horn": "Hunting Horn",
"insect_glaive": "Insect Glaive",
"lance": "Lance",
"light_bowgun": "Light Bowgun",
"long_sword": "Long Sword",
"switch_axe": "Switch Axe",
"sword_and_shield": "Sword & Shield"
}
} }

View File

@@ -3,6 +3,7 @@
"HP": "ОЗ:", "HP": "ОЗ:",
"buildup": "Накопление", "buildup": "Накопление",
"gold": "Золото", "gold": "Золото",
"lv": "",
"mini": "Мини", "mini": "Мини",
"otomo": "Cпутник", "otomo": "Cпутник",
"part_anomaly_core": "Ядро аномалии", "part_anomaly_core": "Ядро аномалии",
@@ -18,63 +19,54 @@
}, },
"ailments": { "ailments": {
"blast": "Взрыв", "blast": "Взрыв",
"blastblight": "Blastblight", "blastblight": "Взрывная порча",
"bleeding": "Bleeding", "bleeding": "Кровотечение",
"bloodblight": "Bloodblight", "bloodblight": "Кровавая порча",
"bubbleblight": "Bubbleblight", "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": "Засыпание",
"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": "Истощение",
"muck": "Muck", "major_bubbleblight": "Великая пузырьковая порча",
"minor_bubbleblight": "Малая пузырьковая порча",
"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": "Метка названия аномального статуса",
@@ -88,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": "Шкала",
@@ -107,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": "Шкалы накопления расположены относительно к",
@@ -126,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": "Урон",
@@ -135,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": "Кол-во вздрагиваний",
@@ -178,6 +172,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_percentage": "Здоровье в процентах", "health_percentage": "Здоровье в процентах",
"health_sever_anomaly_filter": "Здоровье + Отсечение + Ядро аномалии", "health_sever_anomaly_filter": "Здоровье + Отсечение + Ядро аномалии",
"health_sever_filter": "Здоровье + Отсечение", "health_sever_filter": "Здоровье + Отсечение",
@@ -185,7 +180,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": "Скрыть неактивные аномальные статусы без поддержки накопления",
@@ -195,7 +190,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": "Скрыть неповреждённые части тела",
@@ -206,20 +201,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": "Кунаи",
@@ -243,8 +240,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": "Модификаторы",
@@ -270,6 +269,7 @@
"other": "Другое", "other": "Другое",
"other_player_otomos": "Спутники других игроков", "other_player_otomos": "Спутники других игроков",
"other_players": "Другие игроки", "other_players": "Другие игроки",
"otomo_moves": "Навыки спутника",
"otomos": "Спутники", "otomos": "Спутники",
"outline": "Обводка", "outline": "Обводка",
"outside": "Снаружи", "outside": "Снаружи",
@@ -293,6 +293,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": "Переименовать",
@@ -315,28 +316,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": "Наибольший урон",
@@ -359,13 +362,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": "Езда на виверне",
@@ -373,39 +385,88 @@
"y": "Y", "y": "Y",
"z": "Z" "z": "Z"
}, },
"dangos": { "dango_skills": {
"dango_defender_hi": "Dango Defender (Hi)" "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": "Супервосстан. данго"
},
"endemic_life": {
"butterflame": "Огнебабочка",
"clothfly": "Тканебабочка",
"cutterfly": "Стрекоза-нож",
"gold_wirebug": "Золотой Протожук",
"peepersects": "Глазобабочки",
"red_lampsquid": "Крс. Лампокальм.",
"ruby_wirebug": "Рубиновый Протожук",
"stinkmink": "Пахучка",
"yellow_lampsquid": "Жлт. Лампокальм."
},
"font_name": "NotoSans-Bold.otf",
"item_buffs": {
"adamant_seed": "Адамант. зерно",
"armor_ammo": "Защитные снаряды",
"armorskin": "Бронир. кожа",
"dash_juice": "Сок бодрости",
"demon_ammo": "Демон. снаряды",
"demon_powder": "Демон. порошок",
"demondrug": "Демон. снадобье",
"gourmet_fish": "Вкусная рыба",
"hardshell_powder": "Пор. из скорлупы",
"immunizer": "Иммунатор",
"mega_armorskin": "Мегабронир. кожа",
"mega_demondrug": "Мегадемон. снад.",
"might_seed": "Зер. могущества"
}, },
"font_name": "NotoSansKR-Bold.otf",
"melody_effects": { "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": {
"attack_up": "Усиление атаки",
"defense_up": "Усиление защиты",
"immunity": "Устойчивость",
"natural_healing_up": "Естественное лечение",
"stamina_use_down": "Уменьшение расхода выносливости"
},
"otomo_moves": {
"go_fight_win": "Сражайся, побеждай",
"power_drum": "Барабан силы",
"rousing_roar": "Воодушевляющий рев",
"vase_of_vitality": "Ваза живучести"
}, },
"parts": { "parts": {
"abdomen": "Брюхо", "abdomen": "Брюхо",
@@ -476,53 +537,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": "Подстрекатель",
"burst": "Burst", "berserk": "Безумец",
"coalescence": "Coalescence", "bladescale_hone": "Острая чешуя",
"counterstrike": "Counterstrike", "blood_awakening": "Пробуждение крови",
"dereliction": "Dereliction", "bloodlust": "Кровожадность",
"furious": "Furious", "burst": "Выброс",
"grinder_s": "Grinder (S)", "coalescence": "Сращивание",
"heaven_sent": "Heaven-Sent", "counterstrike": "Контрудар",
"hellfire_cloak": "Hellfire Cloak", "dereliction": "Упущение",
"heroics": "Heroics", "dragon_conversion_elemental_attack_up": "Преобраз-е дракона: усил. эл. атаки",
"intrepid_heart": "Intrepid Heart", "dragon_conversion_elemental_res_up": "Преобраз-е дракона: усил. сопротивл.",
"kushala_daora_soul": "Kushala Daora Soul", "dragonheart": "Драконье сердце",
"latent_power": "Latent Power", "embolden": "Воодушевление",
"offensive_guard": "Offensive Guard", "frenzied_bloodlust": "Буйная кровожадность",
"protective_polish": "Protective Polish", "furious": "Гнев",
"resuscitate": "Resuscitate", "grinder_s": "Дробилка (S)",
"wall_runner": "Wall Runner", "heaven_sent": "Божий посланник",
"wind_mantle": "Wind Mantle" "hellfire_cloak": "Завеса ад. пламени",
"heroics": "Героизм",
"inspiration": "Вдохновение",
"intrepid_heart": "бесстрашное сердце",
"latent_power": "Скрытая энергия",
"maximum_might": "Макс. могущество",
"offensive_guard": "Агрессивная защита",
"partbreaker": "Рассекатель",
"peak_performance": "На высоте",
"powder_mantle_blue": "Порошковый покров (синий)",
"powder_mantle_red": "Порошковый покров (красный)",
"protective_polish": "Защитная полировка",
"resentment": "Презрение",
"resuscitate": "Оживление",
"spiribirds_call": "Зов Духоптицы",
"status_trigger": "Смена статуса",
"strife": "Борьба",
"wall_runner": "Бегун по стенам",
"wind_mantle": "Мантия ветра"
}, },
"stats": { "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": {
"bow": {
"arc_shot_affinity": "Выстрел дугой: мастерство",
"arc_shot_brace": "Выстрел дугой: сгруппир.",
"bolt_boost": "Усиление снарядов",
"herculean_draw": "Натяжение Геркулеса"
},
"charge_blade": {
"element_boost": "Усиление стихии",
"sword_boost_mode": "Режим усиления меча"
},
"dual_blades": {
"archdemon_mode": "Режим архидемона",
"ironshine_silk": "Блестящий шелк"
},
"great_sword": {
"power_sheathe": "Мощное убирание оружия"
},
"gunlance": {
"erupting_cannon": "Вулканическая пушка",
"ground_splitter": "Раскол земли"
},
"hammer": {
"impact_burst": "Взрыв от удара"
},
"heavy_bowgun": {
"counter_charger": "Заряженная контратака",
"overheat": "Перегрев",
"rising_moon": "Восходящая луна",
"setting_sun": "Заходящее солнце",
"wyvernsnipe_reload": "Перезарядка меткости виверны"
},
"hunting_horn": {
"bead_of_resonance": "Бусина резонанса",
"silkbind_shockwave": "Волна паутины",
"sonic_bloom": "Звуковой цветов"
},
"insect_glaive": {
"all_extracts_mix": "Смесь всех экстрактов",
"orange_extract": "Оранжевый экстракт",
"red_extract": "Красный экстракт",
"white_extract": "Белый экстракт"
},
"lance": {
"anchor_rage": "Опорный гнев",
"spiral_thrust": "Спиральный выпад",
"twin_wine": "Побеги-близнецы"
},
"light_bowgun": {
"fanning_maneuver": "Веерный маневр",
"wyvernblast_reload": "Перезарядка взрыва виверны"
},
"long_sword": {
"harvest_moon": "Луна урожая",
"iai_slash": "Удар на выхвате",
"soaring_kick": "Парящий удар ногой",
"spirit_gauge": "Шкала духа",
"spirit_gauge_autofill": "Самозаполнение шкалы духа"
},
"switch_axe": {
"amped_state": "Усил. состояние",
"axe_heavy_slam": "Топор: Неистовый удар",
"switch_charger": "Выкидной заряд"
},
"sword_and_shield": {
"destroyer_oil": "Масло уничтожения"
}
},
"weapons": {
"bow": "Лук",
"charge_blade": "Силовой клинок",
"dual_blades": "Два клинка",
"great_sword": "Двуручный меч",
"gunlance": "Копьепушка",
"hammer": "Молот",
"heavy_bowgun": "Тяжелое лукорудие",
"hunting_horn": "Охотничий рог",
"insect_glaive": "Глефа насекомых",
"lance": "Копье",
"light_bowgun": "Легкое лукорудие",
"long_sword": "Бастард",
"switch_axe": "Выкидной топор",
"sword_and_shield": "Меч и щит"
}
} }

View File

@@ -3,9 +3,10 @@
"HP": "生命:", "HP": "生命:",
"buildup": "积累值:", "buildup": "积累值:",
"gold": "金冠", "gold": "金冠",
"lv": "",
"mini": "小型", "mini": "小型",
"otomo": "随从", "otomo": "随从",
"part_anomaly_core": "怪异核", "part_anomaly_core": "Anomaly Core",
"part_break": "部位破坏", "part_break": "部位破坏",
"part_sever": "部位切断", "part_sever": "部位切断",
"player": "玩家", "player": "玩家",
@@ -21,7 +22,7 @@
"blastblight": "Blastblight", "blastblight": "Blastblight",
"bleeding": "Bleeding", "bleeding": "Bleeding",
"bloodblight": "Bloodblight", "bloodblight": "Bloodblight",
"bubbleblight": "Bubbleblight", "deadly_poison": "Deadly Poison",
"defense_down": "Defense Down", "defense_down": "Defense Down",
"dragonblight": "Dragonblight", "dragonblight": "Dragonblight",
"dung_bomb": "异臭球", "dung_bomb": "异臭球",
@@ -29,6 +30,7 @@
"exhaust": "减气", "exhaust": "减气",
"fall_otomo_trap": "随从落穴陷阱", "fall_otomo_trap": "随从落穴陷阱",
"fall_trap": "落穴陷阱", "fall_trap": "落穴陷阱",
"falling_asleep": "Falling Asleep",
"fireblight": "火异常状态", "fireblight": "火异常状态",
"flash": "闪光", "flash": "闪光",
"frenzy": "Frenzy", "frenzy": "Frenzy",
@@ -38,6 +40,8 @@
"hellfireblight": "Hellfireblight", "hellfireblight": "Hellfireblight",
"iceblight": "冰异常状态", "iceblight": "冰异常状态",
"leeched": "Leeched", "leeched": "Leeched",
"major_bubbleblight": "Major Bubbleblight",
"minor_bubbleblight": "Minor Bubbleblight",
"muck": "Muck", "muck": "Muck",
"paralysis": "麻痹", "paralysis": "麻痹",
"poison": "中毒", "poison": "中毒",
@@ -57,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": "状态异常积累值",
@@ -82,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",
@@ -95,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": "积累值",
@@ -135,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": "删除",
@@ -149,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",
@@ -172,14 +166,15 @@
"global_scale_modifier": "全局比例更改", "global_scale_modifier": "全局比例更改",
"global_settings": "全局设定", "global_settings": "全局设定",
"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_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时隐藏该状态异常",
@@ -217,12 +212,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",
@@ -230,7 +227,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": "任务加载中",
@@ -243,8 +240,10 @@
"max_monster_updates_per_tick": "每次更新的最大怪物数量", "max_monster_updates_per_tick": "每次更新的最大怪物数量",
"max_value": "最大值", "max_value": "最大值",
"me": "我", "me": "我",
"melody_effects": "Melody Effects",
"menu_font": "菜单字体", "menu_font": "菜单字体",
"menu_font_change_disclaimer": "多次改变字体或语言会导致崩溃!", "menu_font_change_disclaimer": "多次改变字体或语言会导致崩溃!",
"misc_buffs": "Misc Buffs",
"mod_name": "MHR Overlay", "mod_name": "MHR Overlay",
"mode": "模式", "mode": "模式",
"modifiers": "更改项", "modifiers": "更改项",
@@ -254,7 +253,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": "我自己",
@@ -267,10 +266,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": "部位生命值",
@@ -281,7 +281,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": "位置",
@@ -293,28 +293,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": "排序方式",
@@ -337,13 +339,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": "总积累值标签",
@@ -359,6 +362,14 @@
"tracked_damage_types": "跟踪的伤害类型", "tracked_damage_types": "跟踪的伤害类型",
"tracked_monster_types": "跟踪的怪物类型", "tracked_monster_types": "跟踪的怪物类型",
"type": "类型", "type": "类型",
"update_buffs_delay": "Update Buffs (seconds)",
"update_is_online_delay": "Update Is Online (seconds)",
"update_myself_position_delay": "Update Myself Position (seconds)",
"update_player_info_delay": "Update Player Info (seconds)",
"update_players_delay": "Update Players (seconds)",
"update_quest_time_delay": "Update Quest Time (seconds)",
"update_singletons_delay": "Update Singletons (seconds)",
"update_window_size_delay": "Update Window Size (seconds)",
"use_d2d_if_available": "可用时使用Direct2D", "use_d2d_if_available": "可用时使用Direct2D",
"value": "Value", "value": "Value",
"value_label": "数字", "value_label": "数字",
@@ -366,17 +377,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轴"
}, },
"dangos": { "dango_skills": {
"dango_defender_hi": "Dango Defender (Hi)" "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": "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",
@@ -407,6 +455,19 @@
"tremors_negated": "Tremors Negated", "tremors_negated": "Tremors Negated",
"wind_pressure_negated": "Wind Pressure Negated" "wind_pressure_negated": "Wind Pressure Negated"
}, },
"misc_buffs": {
"attack_up": "Attack Up",
"defense_up": "Defense Up",
"immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down"
},
"otomo_moves": {
"go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum",
"rousing_roar": "Rousing Roar",
"vase_of_vitality": "Vase of Vitality"
},
"parts": { "parts": {
"abdomen": "腹部", "abdomen": "腹部",
"amatsu_unknown": "?", "amatsu_unknown": "?",
@@ -476,25 +537,47 @@
"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",
"blood_awakening": "Blood Awakening",
"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. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"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",
"offensive_guard": "Offensive Guard", "offensive_guard": "Offensive Guard",
"partbreaker": "Partbreaker",
"peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)",
"protective_polish": "Protective Polish", "protective_polish": "Protective Polish",
"resentment": "Resentment",
"resuscitate": "Resuscitate", "resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger",
"strife": "Strife",
"wall_runner": "Wall Runner", "wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle" "wind_mantle": "Wind Mantle"
}, },
@@ -519,14 +602,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": {
"bow": {
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"bolt_boost": "Bolt Boost",
"herculean_draw": "Herculean Draw"
},
"charge_blade": {
"element_boost": "Element Boost",
"sword_boost_mode": "Sword Boost Mode"
},
"dual_blades": {
"archdemon_mode": "Archdemon Mode",
"ironshine_silk": "Ironshine Silk"
},
"great_sword": {
"power_sheathe": "Power Sheathe"
},
"gunlance": {
"erupting_cannon": "Erupting Cannon",
"ground_splitter": "Ground Splitter"
},
"hammer": {
"impact_burst": "Impact Burst"
},
"heavy_bowgun": {
"counter_charger": "Counter Charger",
"overheat": "Overheat",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
},
"hunting_horn": {
"bead_of_resonance": "Bead of Resonance",
"silkbind_shockwave": "Silkbind Shockwave",
"sonic_bloom": "Sonic Bloom"
},
"insect_glaive": {
"all_extracts_mix": "All Extracts Mix",
"orange_extract": "Orange Extract",
"red_extract": "Red Extract",
"white_extract": "White Extract"
},
"lance": {
"anchor_rage": "Anchor Rage",
"spiral_thrust": "Spiral Thrust",
"twin_wine": "Twin Wine"
},
"light_bowgun": {
"fanning_maneuver": "Fanning Maneuver",
"wyvernblast_reload": "Wyvernblast Reload"
},
"long_sword": {
"harvest_moon": "Harvest Moon",
"iai_slash": "Iai Slash",
"soaring_kick": "Soaring Kick",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill"
},
"switch_axe": {
"amped_state": "Amped State",
"axe_heavy_slam": "Axe: Heavy Slam",
"switch_charger": "Switch Charger"
},
"sword_and_shield": {
"destroyer_oil": "Destroyer Oil"
}
},
"weapons": {
"bow": "Bow",
"charge_blade": "Charge Blade",
"dual_blades": "Dual Blades",
"great_sword": "Great Sword",
"gunlance": "Gunlance",
"hammer": "Hammer",
"heavy_bowgun": "Heavy Bowgun",
"hunting_horn": "Hunting Horn",
"insect_glaive": "Insect Glaive",
"lance": "Lance",
"light_bowgun": "Light Bowgun",
"long_sword": "Long Sword",
"switch_axe": "Switch Axe",
"sword_and_shield": "Sword & Shield"
}
} }

View File

@@ -3,6 +3,7 @@
"HP": "生命:", "HP": "生命:",
"buildup": "累積值:", "buildup": "累積值:",
"gold": "金冠", "gold": "金冠",
"lv": "",
"mini": "小型", "mini": "小型",
"otomo": "Buddy", "otomo": "Buddy",
"part_anomaly_core": "Anomaly Core", "part_anomaly_core": "Anomaly Core",
@@ -21,7 +22,7 @@
"blastblight": "Blastblight", "blastblight": "Blastblight",
"bleeding": "Bleeding", "bleeding": "Bleeding",
"bloodblight": "Bloodblight", "bloodblight": "Bloodblight",
"bubbleblight": "Bubbleblight", "deadly_poison": "Deadly Poison",
"defense_down": "Defense Down", "defense_down": "Defense Down",
"dragonblight": "Dragonblight", "dragonblight": "Dragonblight",
"dung_bomb": "異臭", "dung_bomb": "異臭",
@@ -29,6 +30,7 @@
"exhaust": "疲勞", "exhaust": "疲勞",
"fall_otomo_trap": "隨從地洞陷阱", "fall_otomo_trap": "隨從地洞陷阱",
"fall_trap": "地洞陷阱", "fall_trap": "地洞陷阱",
"falling_asleep": "Falling Asleep",
"fireblight": "火屬性異常", "fireblight": "火屬性異常",
"flash": "失明", "flash": "失明",
"frenzy": "Frenzy", "frenzy": "Frenzy",
@@ -38,6 +40,8 @@
"hellfireblight": "Hellfireblight", "hellfireblight": "Hellfireblight",
"iceblight": "冰屬性異常", "iceblight": "冰屬性異常",
"leeched": "Leeched", "leeched": "Leeched",
"major_bubbleblight": "Major Bubbleblight",
"minor_bubbleblight": "Minor Bubbleblight",
"muck": "Muck", "muck": "Muck",
"paralysis": "麻痺", "paralysis": "麻痺",
"poison": "毒", "poison": "毒",
@@ -57,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": "異常狀態累積值",
@@ -135,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",
@@ -149,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": "最遠的",
@@ -178,6 +172,7 @@
"health_break_sever_anomaly_filter": "Health + Break + Sever + Anomaly Core", "health_break_sever_anomaly_filter": "Health + Break + Sever + Anomaly Core",
"health_break_sever_filter": "Health + Break + Sever", "health_break_sever_filter": "Health + Break + Sever",
"health_filter": "Health", "health_filter": "Health",
"health_label": "Health Label",
"health_percentage": "血量百分比", "health_percentage": "血量百分比",
"health_sever_anomaly_filter": "Health + Sever + Anomaly Core", "health_sever_anomaly_filter": "Health + Sever + Anomaly Core",
"health_sever_filter": "Health + Sever", "health_sever_filter": "Health + Sever",
@@ -217,9 +212,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",
@@ -243,8 +240,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": "更改項",
@@ -270,6 +269,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": "外部",
@@ -293,6 +293,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",
@@ -315,6 +316,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": "排序方式",
@@ -337,6 +339,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": "最高傷害",
@@ -359,6 +362,14 @@
"tracked_damage_types": "追蹤的傷害類型", "tracked_damage_types": "追蹤的傷害類型",
"tracked_monster_types": "追蹤的魔物類型", "tracked_monster_types": "追蹤的魔物類型",
"type": "類型", "type": "類型",
"update_buffs_delay": "Update Buffs (seconds)",
"update_is_online_delay": "Update Is Online (seconds)",
"update_myself_position_delay": "Update Myself Position (seconds)",
"update_player_info_delay": "Update Player Info (seconds)",
"update_players_delay": "Update Players (seconds)",
"update_quest_time_delay": "Update Quest Time (seconds)",
"update_singletons_delay": "Update Singletons (seconds)",
"update_window_size_delay": "Update Window Size (seconds)",
"use_d2d_if_available": "Use Direct2D if available", "use_d2d_if_available": "Use Direct2D if available",
"value": "Value", "value": "Value",
"value_label": "數字", "value_label": "數字",
@@ -366,6 +377,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",
@@ -373,10 +385,46 @@
"y": "Y軸", "y": "Y軸",
"z": "Z軸" "z": "Z軸"
}, },
"dangos": { "dango_skills": {
"dango_defender_hi": "Dango Defender (Hi)" "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": "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",
@@ -407,6 +455,19 @@
"tremors_negated": "Tremors Negated", "tremors_negated": "Tremors Negated",
"wind_pressure_negated": "Wind Pressure Negated" "wind_pressure_negated": "Wind Pressure Negated"
}, },
"misc_buffs": {
"attack_up": "Attack Up",
"defense_up": "Defense Up",
"immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down"
},
"otomo_moves": {
"go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum",
"rousing_roar": "Rousing Roar",
"vase_of_vitality": "Vase of Vitality"
},
"parts": { "parts": {
"abdomen": "腹部", "abdomen": "腹部",
"amatsu_unknown": "?", "amatsu_unknown": "?",
@@ -476,25 +537,47 @@
"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",
"blood_awakening": "Blood Awakening",
"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. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"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",
"offensive_guard": "Offensive Guard", "offensive_guard": "Offensive Guard",
"partbreaker": "Partbreaker",
"peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)",
"protective_polish": "Protective Polish", "protective_polish": "Protective Polish",
"resentment": "Resentment",
"resuscitate": "Resuscitate", "resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger",
"strife": "Strife",
"wall_runner": "Wall Runner", "wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle" "wind_mantle": "Wind Mantle"
}, },
@@ -519,14 +602,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": {
"bow": {
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"bolt_boost": "Bolt Boost",
"herculean_draw": "Herculean Draw"
},
"charge_blade": {
"element_boost": "Element Boost",
"sword_boost_mode": "Sword Boost Mode"
},
"dual_blades": {
"archdemon_mode": "Archdemon Mode",
"ironshine_silk": "Ironshine Silk"
},
"great_sword": {
"power_sheathe": "Power Sheathe"
},
"gunlance": {
"erupting_cannon": "Erupting Cannon",
"ground_splitter": "Ground Splitter"
},
"hammer": {
"impact_burst": "Impact Burst"
},
"heavy_bowgun": {
"counter_charger": "Counter Charger",
"overheat": "Overheat",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
},
"hunting_horn": {
"bead_of_resonance": "Bead of Resonance",
"silkbind_shockwave": "Silkbind Shockwave",
"sonic_bloom": "Sonic Bloom"
},
"insect_glaive": {
"all_extracts_mix": "All Extracts Mix",
"orange_extract": "Orange Extract",
"red_extract": "Red Extract",
"white_extract": "White Extract"
},
"lance": {
"anchor_rage": "Anchor Rage",
"spiral_thrust": "Spiral Thrust",
"twin_wine": "Twin Wine"
},
"light_bowgun": {
"fanning_maneuver": "Fanning Maneuver",
"wyvernblast_reload": "Wyvernblast Reload"
},
"long_sword": {
"harvest_moon": "Harvest Moon",
"iai_slash": "Iai Slash",
"soaring_kick": "Soaring Kick",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill"
},
"switch_axe": {
"amped_state": "Amped State",
"axe_heavy_slam": "Axe: Heavy Slam",
"switch_charger": "Switch Charger"
},
"sword_and_shield": {
"destroyer_oil": "Destroyer Oil"
}
},
"weapons": {
"bow": "Bow",
"charge_blade": "Charge Blade",
"dual_blades": "Dual Blades",
"great_sword": "Great Sword",
"gunlance": "Gunlance",
"hammer": "Hammer",
"heavy_bowgun": "Heavy Bowgun",
"hunting_horn": "Hunting Horn",
"insect_glaive": "Insect Glaive",
"lance": "Lance",
"light_bowgun": "Light Bowgun",
"long_sword": "Long Sword",
"switch_axe": "Switch Axe",
"sword_and_shield": "Sword & Shield"
}
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.