mirror of
https://github.com/GreenComfyTea/MHR-Overlay.git
synced 2026-01-29 23:08:12 -08:00
Compare commits
75 Commits
v2.4.2
...
6b8809b79e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6b8809b79e | ||
|
|
d20446fe37 | ||
|
|
4e4aae3c68 | ||
|
|
3e121fbd1c | ||
|
|
ade8a6bf19 | ||
|
|
0eac453bf4 | ||
|
|
c4b7f6d195 | ||
|
|
e389f6cf53 | ||
|
|
9e8c77f480 | ||
|
|
9c2bc59a37 | ||
|
|
effe5579a7 | ||
|
|
0fbf47f7ff | ||
|
|
3e508c0e28 | ||
|
|
972d874a99 | ||
|
|
50726b9291 | ||
|
|
c39e5babea | ||
|
|
d1f56f4316 | ||
|
|
d3efcb5b08 | ||
|
|
681b865f03 | ||
|
|
6f40a1dfd3 | ||
|
|
432e115aea | ||
|
|
dfb7893c1a | ||
|
|
4bdb4ee2e6 | ||
|
|
30672922c4 | ||
|
|
31b5251c75 | ||
|
|
71b1992710 | ||
|
|
63ddbff12a | ||
|
|
0359042c97 | ||
|
|
c8dab31265 | ||
|
|
405c5e4aad | ||
|
|
597d27b935 | ||
|
|
90190f5af7 | ||
|
|
b5757e3b1e | ||
|
|
0992b918a3 | ||
|
|
7865b3276c | ||
|
|
cc1fe03272 | ||
|
|
57585cb5b5 | ||
|
|
96563f92f7 | ||
|
|
ea29e20a2c | ||
|
|
0a84471abc | ||
|
|
da2af8671a | ||
|
|
474d0b9eb8 | ||
|
|
e4057b84f5 | ||
|
|
3ac048aef9 | ||
|
|
9c3085198d | ||
|
|
ecf119dd97 | ||
|
|
663b456a4f | ||
|
|
e571ca62eb | ||
|
|
3b99512bb6 | ||
|
|
0fe53700ae | ||
|
|
488da17887 | ||
|
|
25d0035c16 | ||
|
|
34ac9e3c54 | ||
|
|
ce212ff757 | ||
|
|
cd1d90b66b | ||
|
|
788152aecd | ||
|
|
e51185892a | ||
|
|
6862331ca9 | ||
|
|
59f11c4933 | ||
|
|
8bcd5e0c4a | ||
|
|
c56976b97f | ||
|
|
5af7f53962 | ||
|
|
8e77df6fed | ||
|
|
d68aacc5bf | ||
|
|
4f34f76ad7 | ||
|
|
4da0e1f0c8 | ||
|
|
7ad40bbb89 | ||
|
|
e2354eedcc | ||
|
|
20dfde17d4 | ||
|
|
72ca959581 | ||
|
|
cd2aa12d3c | ||
|
|
865512f8d6 | ||
|
|
ecd150eb4d | ||
|
|
585860666f | ||
|
|
e6556e8d9b |
144
README.md
144
README.md
@@ -1,10 +1,130 @@
|
|||||||
# "MHR Overlay" Mod for Monster Hunter: Rise
|
<p align="center">
|
||||||
|
<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">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>
|
||||||
|
|
||||||
Exposes in-game data about monsters, creatures, players and damage. Draws a highly customizable UI.
|
<p align="center">
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/graphs/contributors">
|
||||||
|
<img alt="Contributors" src="https://custom-icon-badges.demolab.com/github/contributors/greencomfytea/mhr-overlay?logo=person-add" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/issues">
|
||||||
|
<img alt="Issues" src="https://custom-icon-badges.demolab.com/github/issues/greencomfytea/mhr-overlay?logo=issue-opened" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/issues">
|
||||||
|
<img alt="Issues Closed" src="https://custom-icon-badges.demolab.com/github/issues-closed/greencomfytea/mhr-overlay?logo=issue-closed" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/pulls">
|
||||||
|
<img alt="Pull Requests" src="https://custom-icon-badges.demolab.com/github/issues-pr/greencomfytea/mhr-overlay?logo=git-pull-request" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/pulls">
|
||||||
|
<img alt="Pull Requests Closed" src="https://custom-icon-badges.demolab.com/github/issues-pr-closed/greencomfytea/mhr-overlay?logo=git-pull-request-closed" />
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/blob/main/LICENSE">
|
||||||
|
<img alt="License" src="https://custom-icon-badges.demolab.com/github/license/greencomfytea/mhr-overlay?logo=law" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/releases">
|
||||||
|
<img alt="Release Version" src="https://custom-icon-badges.demolab.com/github/v/release/greencomfytea/mhr-overlay?logo=tag" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/releases">
|
||||||
|
<img alt="Release Date" src="https://custom-icon-badges.demolab.com/github/release-date/greencomfytea/mhr-overlay?logo=clock" />
|
||||||
|
</a>
|
||||||
|
<a href="">
|
||||||
|
<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 href="">
|
||||||
|
<img alt="Maintenance" src="https://custom-icon-badges.demolab.com/maintenance/yes/2023?logo=tools" />
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<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" />
|
||||||
|
</a>
|
||||||
|
<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" />
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/commits/main">
|
||||||
|
<img alt="Commits" src="https://custom-icon-badges.demolab.com/github/commit-activity/t/greencomfytea/mhr-overlay?logo=git-commit" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/commits/main">
|
||||||
|
<img alt="Last Commit" src="https://custom-icon-badges.demolab.com/github/last-commit/greencomfytea/mhr-overlay?logo=git-commit" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/commits/main">
|
||||||
|
<img alt="Commits Since" src="https://custom-icon-badges.demolab.com/github/commits-since/greencomfytea/mhr-overlay/latest?logo=git-commit" />
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/graphs/commit-activity">
|
||||||
|
<img alt="Commit Activity (Year)" src="https://custom-icon-badges.demolab.com/github/commit-activity/y/greencomfytea/mhr-overlay?logo=pulse" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/graphs/commit-activity">
|
||||||
|
<img alt="Commit Activity (Month)" src="https://custom-icon-badges.demolab.com/github/commit-activity/m/greencomfytea/mhr-overlay?logo=pulse" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/graphs/commit-activity">
|
||||||
|
<img alt="Commit Activity (Week)" src="https://custom-icon-badges.demolab.com/github/commit-activity/w/greencomfytea/mhr-overlay?logo=pulse" />
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<a href="">
|
||||||
|
<img alt="Repo Size" src="https://custom-icon-badges.demolab.com/github/repo-size/greencomfytea/mhr-overlay?logo=database" />
|
||||||
|
</a>
|
||||||
|
<a href="">
|
||||||
|
<img alt="Line Count" src="https://sloc.xyz/github/greencomfytea/mhr-overlay" />
|
||||||
|
</a>
|
||||||
|
<a href="">
|
||||||
|
<img alt="COCOMO" src="https://sloc.xyz/github/greencomfytea/mhr-overlay/?category=cocomo" />
|
||||||
|
</a>
|
||||||
|
<a href="">
|
||||||
|
<img alt="Goto Counter" src="https://custom-icon-badges.demolab.com/github/search/greencomfytea/mhr-overlay/goto?logo=git-compare" />
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<a href="https://github.com/sponsors/greencomfytea">
|
||||||
|
<img alt="Sponsors" src="https://custom-icon-badges.demolab.com/github/sponsors/greencomfytea?logo=heart" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/GreenComfyTea/mhr-overlay/watchers">
|
||||||
|
<img alt="Watchers" src="https://custom-icon-badges.demolab.com/github/watchers/greencomfytea/mhr-overlay?logo=eye" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/forks">
|
||||||
|
<img alt="Forks" src="https://custom-icon-badges.demolab.com/github/forks/greencomfytea/mhr-overlay?logo=repo-forked" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/stargazers">
|
||||||
|
<img alt="Stars" src="https://custom-icon-badges.demolab.com/github/stars/greencomfytea/mhr-overlay?logo=star" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/greencomfytea/mhr-overlay/graphs/traffic">
|
||||||
|
<img alt="Hits" src="https://custom-icon-badges.demolab.com/endpoint?url=https://hits.dwyl.com/greencomfytea/mhr-overlay.json?color=blue&logo=eye" />
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<a href="https://www.nexusmods.com/monsterhunterrise/mods/50">
|
||||||
|
<img alt="Website" src="https://custom-icon-badges.demolab.com/website?down_color=red&down_message=down&up_color=brightgreen&up_message=up&logo=link&url=https://www.nexusmods.com/monsterhunterrise/mods/50" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/greencomfytea?tab=followers">
|
||||||
|
<img alt="Followers" src="https://custom-icon-badges.demolab.com/github/followers/greencomfytea?logo=people" />
|
||||||
|
</a>
|
||||||
|
<a href="https://twitter.com/greencomfytea">
|
||||||
|
<img alt="Twitter" src="https://img.shields.io/twitter/follow/greencomfytea?logo=twitter" />
|
||||||
|
</a>
|
||||||
|
<a href="https://www.twitch.tv/greencomfytea">
|
||||||
|
<img alt="Twitch" src="https://img.shields.io/twitch/status/greencomfytea?logo=twitch" />
|
||||||
|
</a>
|
||||||
|
<br>
|
||||||
|
<a href="https://github.com/greencomfytea">
|
||||||
|
<img alt="Author" src="https://custom-icon-badges.demolab.com/badge/author-GreenComfyTea-green?logo=person" />
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/topics/open-source">
|
||||||
|
<img alt="Open Source" src="https://img.shields.io/badge/open%20source-%20yes-brightgreen?logo=openvpn" />
|
||||||
|
</a>
|
||||||
|
<a href="https://cursey.github.io/reframework-book/index.html#lua-scripting">
|
||||||
|
<img alt="Written in" src="https://custom-icon-badges.demolab.com/badge/written in-lua-000080?logo=terminal" />
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
**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 align="center">
|
||||||
|
<a>
|
||||||

|
<img align="center" src="https://user-images.githubusercontent.com/30152047/183250401-9f2898dd-feb4-4903-802c-c9d398261f11.png" />
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
# Links
|
# Links
|
||||||
* **[Nexus Mods](https://www.nexusmods.com/monsterhunterrise/mods/50)**
|
* **[Nexus Mods](https://www.nexusmods.com/monsterhunterrise/mods/50)**
|
||||||
@@ -15,13 +135,18 @@ Exposes in-game data about monsters, creatures, players and damage. Draws a high
|
|||||||
* **[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.3.8 or above);
|
1. [REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26) (v1.503+);
|
||||||
2. [REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134) (v0.4.0 or above).
|
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. (Windows only) Install [REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134);
|
2. Install [REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134);
|
||||||
>**:pushpin: NOTE:** Skip this step if you are using Steam Deck/Proton/Wine/Linux. REFramework Direct2D **must not** be installed for the mod to work.
|
>**:pushpin: Windows:** Works normally.
|
||||||
|
|
||||||
|
>**:pushpin: Linux:** Latest Experimental Proton seems to have it working normally as well (https://github.com/cursey/reframework-d2d/issues/5).
|
||||||
|
|
||||||
|
>**:pushpin: Steam Deck:** I've seen people getting it working but I don't have the exact instructions. You will have to figure it out yourself and/or search the nexus pages for information ([REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26?tab=description), [REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134), [MHR Overlay](https://www.nexusmods.com/monsterhunterrise/mods/50)).
|
||||||
|
|
||||||
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!
|
||||||
@@ -48,4 +173,3 @@ You can support me by donating! I would appreciate it! But anyway, thank you for
|
|||||||
<a href="https://ko-fi.com/greencomfytea">
|
<a href="https://ko-fi.com/greencomfytea">
|
||||||
<img alt="Qries" src="https://panels.twitch.tv/panel-48897356-image-c2fcf835-87e4-408e-81e8-790789c7acbc">
|
<img alt="Qries" src="https://panels.twitch.tv/panel-48897356-image-c2fcf835-87e4-408e-81e8-790789c7acbc">
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|||||||
@@ -30,20 +30,21 @@ local os = os;
|
|||||||
local ValueType = ValueType;
|
local ValueType = ValueType;
|
||||||
local package = package;
|
local package = package;
|
||||||
|
|
||||||
local debug = require("MHR_Overlay.Misc.debug");
|
|
||||||
|
|
||||||
local keyboard = require("MHR_Overlay.Game_Handler.keyboard");
|
local keyboard = require("MHR_Overlay.Game_Handler.keyboard");
|
||||||
local quest_status = require("MHR_Overlay.Game_Handler.quest_status");
|
local quest_status = require("MHR_Overlay.Game_Handler.quest_status");
|
||||||
local screen = require("MHR_Overlay.Game_Handler.screen");
|
local screen = require("MHR_Overlay.Game_Handler.screen");
|
||||||
local singletons = require("MHR_Overlay.Game_Handler.singletons");
|
local singletons = require("MHR_Overlay.Game_Handler.singletons");
|
||||||
local time = require("MHR_Overlay.Game_Handler.time");
|
local time = require("MHR_Overlay.Game_Handler.time");
|
||||||
|
local error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
|
||||||
local config = require("MHR_Overlay.Misc.config");
|
local config = require("MHR_Overlay.Misc.config");
|
||||||
local language = require("MHR_Overlay.Misc.language");
|
local language = require("MHR_Overlay.Misc.language");
|
||||||
local part_names = require("MHR_Overlay.Misc.part_names");
|
local part_names = require("MHR_Overlay.Misc.part_names");
|
||||||
local utils = require("MHR_Overlay.Misc.utils");
|
local utils = require("MHR_Overlay.Misc.utils");
|
||||||
|
|
||||||
--local buffs = require("MHR_Overlay.Buffs.buffs");
|
local buffs = require("MHR_Overlay.Buffs.buffs");
|
||||||
|
local consumables = require("MHR_Overlay.Buffs.consumables");
|
||||||
|
local melody_effects = require("MHR_Overlay.Buffs.melody_effects");
|
||||||
|
|
||||||
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");
|
||||||
@@ -65,7 +66,7 @@ local large_monster_UI = require("MHR_Overlay.UI.Modules.large_monster_UI");
|
|||||||
local small_monster_UI = require("MHR_Overlay.UI.Modules.small_monster_UI");
|
local small_monster_UI = require("MHR_Overlay.UI.Modules.small_monster_UI");
|
||||||
local time_UI = require("MHR_Overlay.UI.Modules.time_UI");
|
local time_UI = require("MHR_Overlay.UI.Modules.time_UI");
|
||||||
local env_creature_UI = require("MHR_Overlay.UI.Modules.env_creature_UI");
|
local env_creature_UI = require("MHR_Overlay.UI.Modules.env_creature_UI");
|
||||||
--local buff_UI = require("MHR_Overlay.UI.Modules.buff_UI");
|
local buff_UI = require("MHR_Overlay.UI.Modules.buff_UI");
|
||||||
|
|
||||||
local body_part_UI_entity = require("MHR_Overlay.UI.UI_Entities.body_part_UI_entity");
|
local body_part_UI_entity = require("MHR_Overlay.UI.UI_Entities.body_part_UI_entity");
|
||||||
local damage_UI_entity = require("MHR_Overlay.UI.UI_Entities.damage_UI_entity");
|
local damage_UI_entity = require("MHR_Overlay.UI.UI_Entities.damage_UI_entity");
|
||||||
@@ -74,7 +75,7 @@ local stamina_UI_entity = require("MHR_Overlay.UI.UI_Entities.stamina_UI_entity"
|
|||||||
local rage_UI_entity = require("MHR_Overlay.UI.UI_Entities.rage_UI_entity");
|
local rage_UI_entity = require("MHR_Overlay.UI.UI_Entities.rage_UI_entity");
|
||||||
local ailment_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_UI_entity");
|
local ailment_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_UI_entity");
|
||||||
local ailment_buildup_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_buildup_UI_entity");
|
local ailment_buildup_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_buildup_UI_entity");
|
||||||
--local buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
|
local buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
|
||||||
|
|
||||||
local customization_menu = require("MHR_Overlay.UI.customization_menu");
|
local customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
local label_customization = require("MHR_Overlay.UI.Customizations.label_customization");
|
local label_customization = require("MHR_Overlay.UI.Customizations.label_customization");
|
||||||
@@ -88,26 +89,91 @@ local body_parts_customization = require("MHR_Overlay.UI.Customizations.body_par
|
|||||||
local ailments_customization = require("MHR_Overlay.UI.Customizations.ailments_customization");
|
local ailments_customization = require("MHR_Overlay.UI.Customizations.ailments_customization");
|
||||||
local ailment_buildups_customization = require("MHR_Overlay.UI.Customizations.ailment_buildups_customization");
|
local ailment_buildups_customization = require("MHR_Overlay.UI.Customizations.ailment_buildups_customization");
|
||||||
local module_visibility_customization = require("MHR_Overlay.UI.Customizations.module_visibility_customization");
|
local module_visibility_customization = require("MHR_Overlay.UI.Customizations.module_visibility_customization");
|
||||||
|
|
||||||
local large_monster_UI_customization = require("MHR_Overlay.UI.Customizations.large_monster_UI_customization");
|
local large_monster_UI_customization = require("MHR_Overlay.UI.Customizations.large_monster_UI_customization");
|
||||||
|
|
||||||
local drawing = require("MHR_Overlay.UI.drawing");
|
local drawing = require("MHR_Overlay.UI.drawing");
|
||||||
|
|
||||||
if debug ~= nil and debug.enabled then
|
|
||||||
xy = "";
|
|
||||||
end
|
|
||||||
|
|
||||||
------------------------INIT MODULES-------------------------
|
------------------------INIT MODULES-------------------------
|
||||||
-- #region
|
-- #region
|
||||||
|
|
||||||
|
error_handler.init_dependencies();
|
||||||
|
screen.init_dependencies();
|
||||||
|
singletons.init_dependencies();
|
||||||
|
utils.init_dependencies();
|
||||||
|
time.init_dependencies();
|
||||||
|
|
||||||
|
language.init_dependencies();
|
||||||
|
config.init_dependencies();
|
||||||
|
part_names.init_dependencies();
|
||||||
|
|
||||||
|
damage_UI_entity.init_dependencies();
|
||||||
|
health_UI_entity.init_dependencies();
|
||||||
|
stamina_UI_entity.init_dependencies();
|
||||||
|
rage_UI_entity.init_dependencies();
|
||||||
|
ailment_UI_entity.init_dependencies();
|
||||||
|
ailment_buildup_UI_entity.init_dependencies();
|
||||||
|
body_part_UI_entity.init_dependencies();
|
||||||
|
buff_UI_entity.init_dependencies();
|
||||||
|
|
||||||
|
buffs.init_dependencies();
|
||||||
|
consumables.init_dependencies();
|
||||||
|
melody_effects.init_dependencies();
|
||||||
|
|
||||||
|
damage_hook.init_dependencies();
|
||||||
|
players.init_dependencies();
|
||||||
|
non_players.init_dependencies();
|
||||||
|
quest_status.init_dependencies();
|
||||||
|
|
||||||
|
env_creature_hook.init_dependencies();
|
||||||
|
env_creature.init_dependencies();
|
||||||
|
|
||||||
|
body_part.init_dependencies();
|
||||||
|
ailments.init_dependencies();
|
||||||
|
large_monster.init_dependencies();
|
||||||
|
monster_hook.init_dependencies();
|
||||||
|
small_monster.init_dependencies();
|
||||||
|
ailment_hook.init_dependencies();
|
||||||
|
ailment_buildup.init_dependencies();
|
||||||
|
|
||||||
|
label_customization.init_dependencies();
|
||||||
|
bar_customization.init_dependencies();
|
||||||
|
line_customization.init_dependencies();
|
||||||
|
large_monster_UI_customization.init_dependencies();
|
||||||
|
|
||||||
|
label_customization.init_dependencies();
|
||||||
|
bar_customization.init_dependencies();
|
||||||
|
health_customization.init_dependencies();
|
||||||
|
stamina_customization.init_dependencies();
|
||||||
|
rage_customization.init_dependencies();
|
||||||
|
body_parts_customization.init_dependencies();
|
||||||
|
ailments_customization.init_dependencies();
|
||||||
|
ailment_buildups_customization.init_dependencies();
|
||||||
|
module_visibility_customization.init_dependencies();
|
||||||
|
customization_menu.init_dependencies();
|
||||||
|
|
||||||
|
drawing.init_dependencies();
|
||||||
|
|
||||||
|
damage_meter_UI.init_dependencies();
|
||||||
|
large_monster_UI.init_dependencies();
|
||||||
|
small_monster_UI.init_dependencies();
|
||||||
|
time_UI.init_dependencies();
|
||||||
|
env_creature_UI.init_dependencies();
|
||||||
|
buff_UI.init_dependencies();
|
||||||
|
|
||||||
|
keyboard.init_dependencies();
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
error_handler.init_module();
|
||||||
|
language.init_module();
|
||||||
|
config.init_module();
|
||||||
|
part_names.init_module();
|
||||||
|
|
||||||
screen.init_module();
|
screen.init_module();
|
||||||
singletons.init_module();
|
singletons.init_module();
|
||||||
utils.init_module();
|
utils.init_module();
|
||||||
time.init_module();
|
time.init_module();
|
||||||
|
|
||||||
language.init_module();
|
|
||||||
config.init_module();
|
|
||||||
part_names.init_module();
|
|
||||||
|
|
||||||
damage_UI_entity.init_module();
|
damage_UI_entity.init_module();
|
||||||
health_UI_entity.init_module();
|
health_UI_entity.init_module();
|
||||||
stamina_UI_entity.init_module();
|
stamina_UI_entity.init_module();
|
||||||
@@ -115,9 +181,11 @@ rage_UI_entity.init_module();
|
|||||||
ailment_UI_entity.init_module();
|
ailment_UI_entity.init_module();
|
||||||
ailment_buildup_UI_entity.init_module();
|
ailment_buildup_UI_entity.init_module();
|
||||||
body_part_UI_entity.init_module();
|
body_part_UI_entity.init_module();
|
||||||
--buff_UI_entity.init_module();
|
buff_UI_entity.init_module();
|
||||||
|
|
||||||
--buffs.init_module();
|
buffs.init_module();
|
||||||
|
consumables.init_module();
|
||||||
|
melody_effects.init_module();
|
||||||
|
|
||||||
damage_hook.init_module();
|
damage_hook.init_module();
|
||||||
players.init_module();
|
players.init_module();
|
||||||
@@ -135,7 +203,6 @@ small_monster.init_module();
|
|||||||
ailment_hook.init_module();
|
ailment_hook.init_module();
|
||||||
ailment_buildup.init_module();
|
ailment_buildup.init_module();
|
||||||
|
|
||||||
customization_menu.init_module();
|
|
||||||
label_customization.init_module();
|
label_customization.init_module();
|
||||||
bar_customization.init_module();
|
bar_customization.init_module();
|
||||||
line_customization.init_module();
|
line_customization.init_module();
|
||||||
@@ -150,6 +217,7 @@ body_parts_customization.init_module();
|
|||||||
ailments_customization.init_module();
|
ailments_customization.init_module();
|
||||||
ailment_buildups_customization.init_module();
|
ailment_buildups_customization.init_module();
|
||||||
module_visibility_customization.init_module();
|
module_visibility_customization.init_module();
|
||||||
|
customization_menu.init_module();
|
||||||
|
|
||||||
drawing.init_module();
|
drawing.init_module();
|
||||||
|
|
||||||
@@ -158,7 +226,7 @@ large_monster_UI.init_module();
|
|||||||
small_monster_UI.init_module();
|
small_monster_UI.init_module();
|
||||||
time_UI.init_module();
|
time_UI.init_module();
|
||||||
env_creature_UI.init_module();
|
env_creature_UI.init_module();
|
||||||
--buff_UI.init_module();
|
buff_UI.init_module();
|
||||||
|
|
||||||
keyboard.init_module();
|
keyboard.init_module();
|
||||||
|
|
||||||
@@ -173,7 +241,7 @@ local function draw_modules(module_visibility_config, flow_state_name)
|
|||||||
if module_visibility_config.small_monster_UI and config.current_config.small_monster_UI.enabled then
|
if module_visibility_config.small_monster_UI and config.current_config.small_monster_UI.enabled then
|
||||||
local success = pcall(small_monster_UI.draw);
|
local success = pcall(small_monster_UI.draw);
|
||||||
if not success then
|
if not success then
|
||||||
customization_menu.status = string.format("[%s] Small Monster UI Drawing Function threw an Exception", flow_state_name);
|
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Small Monster UI Drawing Function threw an Exception", flow_state_name));
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -189,47 +257,41 @@ local function draw_modules(module_visibility_config, flow_state_name)
|
|||||||
if dynamic_enabled or static_enabled or highlighted_enabled then
|
if dynamic_enabled or static_enabled or highlighted_enabled then
|
||||||
local success = pcall(large_monster_UI.draw, dynamic_enabled, static_enabled, highlighted_enabled);
|
local success = pcall(large_monster_UI.draw, dynamic_enabled, static_enabled, highlighted_enabled);
|
||||||
if not success then
|
if not success then
|
||||||
customization_menu.status = string.format("[%s] Large Monster UI Drawing Function threw an Exception", flow_state_name);
|
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Large Monster UI Drawing Function threw an Exception", flow_state_name));
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if config.current_config.time_UI.enabled and module_visibility_config.time_UI then
|
if config.current_config.time_UI.enabled and module_visibility_config.time_UI then
|
||||||
local success = pcall(time_UI.draw);
|
local success = pcall(time_UI.draw);
|
||||||
if not success then
|
if not success then
|
||||||
customization_menu.status = string.format("[%s] Time UI Drawing Function threw an Exception", flow_state_name);
|
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Time UI Drawing Function threw an Exception", flow_state_name));
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then
|
if config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then
|
||||||
local success = pcall(damage_meter_UI.draw);
|
local success = pcall(damage_meter_UI.draw);
|
||||||
if not success then
|
if not success then
|
||||||
customization_menu.status = string.format("[%s] Damage Meter UI Drawing Function threw an Exception", flow_state_name);
|
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Damage Meter UI Drawing Function threw an Exception", flow_state_name));
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then
|
if config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then
|
||||||
local success = pcall(env_creature_UI.draw);
|
local success = pcall(env_creature_UI.draw);
|
||||||
if not success then
|
if not success then
|
||||||
customization_menu.status = string.format("[%s] Endemic Life UI Drawing Function threw an Exception", flow_state_name);
|
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Endemic Life UI Drawing Function threw an Exception", flow_state_name));
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--[[if config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then
|
if config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then
|
||||||
local success = truepcall(buff_UI.draw);
|
local success = pcall(buff_UI.draw);
|
||||||
if not success then
|
if not success then
|
||||||
customization_menu.status = string.format("[%s] Buff UI Drawing Function threw an Exception", flow_state_name);
|
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Buff UI Drawing Function threw an Exception", flow_state_name));
|
||||||
end
|
end
|
||||||
end]]
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function main_loop()
|
local function main_loop()
|
||||||
customization_menu.status = "OK";
|
time.update_timers();
|
||||||
singletons.init();
|
|
||||||
screen.update_window_size();
|
|
||||||
players.update_myself_position();
|
|
||||||
quest_status.update_is_online();
|
|
||||||
--quest_status.update_is_quest_host();
|
|
||||||
time.tick();
|
|
||||||
|
|
||||||
if quest_status.flow_state == quest_status.flow_states.IN_TRAINING_AREA then
|
if quest_status.flow_state == quest_status.flow_states.IN_TRAINING_AREA then
|
||||||
|
|
||||||
@@ -243,30 +305,30 @@ local function main_loop()
|
|||||||
if dynamic_enabled or static_enabled or highlighted_enabled then
|
if dynamic_enabled or static_enabled or highlighted_enabled then
|
||||||
local success = pcall(large_monster_UI.draw, dynamic_enabled, static_enabled, highlighted_enabled);
|
local success = pcall(large_monster_UI.draw, dynamic_enabled, static_enabled, highlighted_enabled);
|
||||||
if not success then
|
if not success then
|
||||||
customization_menu.status = "[In Training Area] Large Monster UI Drawing Function threw an Exception";
|
error_handler.report("MHR_Overlay.main_loop", "[In Training Area] Large Monster UI Drawing Function threw an Exception");
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then
|
if config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then
|
||||||
local success = pcall(damage_meter_UI.draw);
|
local success = pcall(damage_meter_UI.draw);
|
||||||
if not success then
|
if not success then
|
||||||
customization_menu.status = "[In Training Area] Damage Meter UI Drawing Function threw an Exception";
|
error_handler.report("MHR_Overlay.main_loop", "[In Training Area] Damage Meter UI Drawing Function threw an Exception");
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then
|
if config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then
|
||||||
local success = pcall(env_creature_UI.draw);
|
local success = pcall(env_creature_UI.draw);
|
||||||
if not success then
|
if not success then
|
||||||
customization_menu.status = "[In Training Area] Endemic Life UI Drawing Function threw an Exception";
|
error_handler.report("MHR_Overlay.main_loop", "[In Training Area] Endemic Life UI Drawing Function threw an Exception");
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--[[if config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then
|
if config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then
|
||||||
local success = pcall(buff_UI.draw);
|
local success = pcall(buff_UI.draw);
|
||||||
if not success then
|
if not success then
|
||||||
customization_menu.status = "[In Training Area] Buff UI Drawing Function threw an Exception";
|
error_handler.report("MHR_Overlay.main_loop", "[In Training Area] Buff UI Drawing Function threw an Exception");
|
||||||
end
|
end
|
||||||
end]]
|
end
|
||||||
|
|
||||||
|
|
||||||
elseif quest_status.flow_state == quest_status.flow_states.CUTSCENE then
|
elseif quest_status.flow_state == quest_status.flow_states.CUTSCENE then
|
||||||
@@ -299,16 +361,14 @@ end
|
|||||||
-- #region
|
-- #region
|
||||||
re.on_draw_ui(function()
|
re.on_draw_ui(function()
|
||||||
if imgui.button(language.current_language.customization_menu.mod_name .. " v" .. config.current_config.version) then
|
if imgui.button(language.current_language.customization_menu.mod_name .. " v" .. config.current_config.version) then
|
||||||
customization_menu.is_opened = not customization_menu.is_opened;
|
local cached_config = config.current_config.customization_menu;
|
||||||
|
cached_config.visible = not cached_config.visible;
|
||||||
|
config.save_current();
|
||||||
end
|
end
|
||||||
end);
|
end);
|
||||||
|
|
||||||
re.on_frame(function()
|
re.on_frame(function()
|
||||||
if not reframework:is_drawing_ui() then
|
if reframework:is_drawing_ui() then
|
||||||
customization_menu.is_opened = false;
|
|
||||||
end
|
|
||||||
|
|
||||||
if customization_menu.is_opened then
|
|
||||||
pcall(customization_menu.draw);
|
pcall(customization_menu.draw);
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -337,33 +397,6 @@ end);
|
|||||||
-- #endregion
|
-- #endregion
|
||||||
----------------------------D2D------------------------------
|
----------------------------D2D------------------------------
|
||||||
|
|
||||||
if debug ~= nil and debug.enabled then
|
|
||||||
if d2d ~= nil then
|
|
||||||
d2d.register(function()
|
|
||||||
end, function()
|
|
||||||
if not config.current_config.global_settings.renderer.use_d2d_if_available then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
if xy ~= "" then
|
|
||||||
d2d.text(drawing.font, "xy:\n" .. tostring(xy), 256, 71, 0xFF000000);
|
|
||||||
d2d.text(drawing.font, "xy:\n" .. tostring(xy), 255, 70, 0xFFFFFFFF);
|
|
||||||
end
|
|
||||||
end);
|
|
||||||
end
|
|
||||||
|
|
||||||
re.on_frame(function()
|
|
||||||
if d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
if xy ~= "" then
|
|
||||||
draw.text("xy:\n" .. tostring(xy), 256, 31, 0xFF000000);
|
|
||||||
draw.text("xy:\n" .. tostring(xy), 255, 30, 0xFFFFFFFF);
|
|
||||||
end
|
|
||||||
end);
|
|
||||||
end
|
|
||||||
|
|
||||||
if imgui.begin_table == nil then
|
if imgui.begin_table == nil then
|
||||||
re.msg(language.current_language.customization_menu.reframework_outdated);
|
re.msg(language.current_language.customization_menu.reframework_outdated);
|
||||||
end
|
end
|
||||||
@@ -2,6 +2,15 @@ local this = {};
|
|||||||
|
|
||||||
local buff_UI_entity;
|
local buff_UI_entity;
|
||||||
local config;
|
local config;
|
||||||
|
local singletons;
|
||||||
|
local players;
|
||||||
|
local consumables;
|
||||||
|
local melody_effects;
|
||||||
|
local utils;
|
||||||
|
local language;
|
||||||
|
local time;
|
||||||
|
local quest_status;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -35,14 +44,43 @@ local os = os;
|
|||||||
local ValueType = ValueType;
|
local ValueType = ValueType;
|
||||||
local package = package;
|
local package = package;
|
||||||
|
|
||||||
this.list = {};
|
this.types = {
|
||||||
|
consumable = 0,
|
||||||
|
melody_effect = 1,
|
||||||
|
dango = 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
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 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 music_data_field = player_base_type_def:get_field("_MusicData");
|
||||||
|
|
||||||
|
local system_array_type_def = sdk.find_type_definition("System.Array");
|
||||||
|
local length_method = system_array_type_def:get_method("get_Length");
|
||||||
|
local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)");
|
||||||
|
|
||||||
|
function this.new(type, key, name, value, duration)
|
||||||
|
local is_infinite = false;
|
||||||
|
|
||||||
|
value = value or 0;
|
||||||
|
|
||||||
|
if duration == nil then
|
||||||
|
duration = 0;
|
||||||
|
is_infinite = true;
|
||||||
|
end
|
||||||
|
|
||||||
function this.new(name)
|
|
||||||
local buff = {};
|
local buff = {};
|
||||||
|
|
||||||
|
buff.type = type;
|
||||||
|
buff.key = key;
|
||||||
buff.name = name;
|
buff.name = name;
|
||||||
buff.timer = 0;
|
buff.value = value;
|
||||||
buff.duration = 0;
|
|
||||||
|
buff.timer = duration;
|
||||||
|
buff.duration = duration;
|
||||||
|
|
||||||
buff.is_active = true;
|
buff.is_active = true;
|
||||||
|
|
||||||
@@ -51,7 +89,9 @@ function this.new(name)
|
|||||||
buff.minutes_left = 0;
|
buff.minutes_left = 0;
|
||||||
buff.seconds_left = 0;
|
buff.seconds_left = 0;
|
||||||
|
|
||||||
buff.is_infinite = false;
|
buff.is_infinite = is_infinite;
|
||||||
|
|
||||||
|
this.update_timer(buff, buff.timer);
|
||||||
|
|
||||||
this.init_UI(buff);
|
this.init_UI(buff);
|
||||||
|
|
||||||
@@ -67,42 +107,93 @@ function this.init_UI(buff)
|
|||||||
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()
|
||||||
|
consumables.init_names();
|
||||||
|
melody_effects.init_names();
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.update()
|
||||||
|
if singletons.player_manager == nil then
|
||||||
|
error_handler.report("buffs.update", "Failed to access Data: player_manager");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
if quest_status.flow_state <= quest_status.flow_states.IN_LOBBY
|
||||||
|
or quest_status.flow_state == quest_status.flow_states.CUTSCENE
|
||||||
|
or quest_status.flow_state >= quest_status.flow_states.QUEST_END_ANIMATION then
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local master_player = find_master_player_method:call(singletons.player_manager);
|
||||||
|
if master_player == nil then
|
||||||
|
error_handler.report("buffs.update", "Failed to access Data: master_player");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local master_player_data = get_player_data_method:call(master_player);
|
||||||
|
if master_player_data ~= nil then
|
||||||
|
consumables.update(master_player_data);
|
||||||
|
else
|
||||||
|
error_handler.report("buffs.update", "Failed to access Data: master_player_data");
|
||||||
|
end
|
||||||
|
|
||||||
|
local music_data_array = music_data_field:get_data(master_player);
|
||||||
|
if music_data_array ~= nil then
|
||||||
|
local music_data_table = {};
|
||||||
|
|
||||||
|
local length = length_method:call(music_data_array) - 1;
|
||||||
|
for i = 0, length do
|
||||||
|
local music_data = get_value_method:call(music_data_array, i);
|
||||||
|
if music_data == nil then
|
||||||
|
error_handler.report("buffs.update", "Failed to access Data: music_data No." .. tostring(i));
|
||||||
|
music_data = "";
|
||||||
|
end
|
||||||
|
|
||||||
|
table.insert(music_data_table, music_data);
|
||||||
|
end
|
||||||
|
|
||||||
|
melody_effects.update(music_data_table);
|
||||||
|
else
|
||||||
|
error_handler.report("buffs.update", "Failed to access Data: music_data_array");
|
||||||
|
end
|
||||||
|
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_module()
|
function this.update_timer(buff, timer)
|
||||||
|
if timer < 0 then
|
||||||
|
timer = 0;
|
||||||
|
end
|
||||||
|
|
||||||
|
local minutes_left = math.floor(timer / 60);
|
||||||
|
|
||||||
|
buff.timer = timer;
|
||||||
|
buff.minutes_left = minutes_left;
|
||||||
|
buff.seconds_left = math.floor(timer - 60 * minutes_left);
|
||||||
|
|
||||||
|
if buff.duration ~= 0 then
|
||||||
|
buff.timer_percentage = timer / buff.duration;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
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");
|
||||||
|
players = require("MHR_Overlay.Damage_Meter.players");
|
||||||
|
consumables = require("MHR_Overlay.Buffs.consumables");
|
||||||
|
melody_effects = require("MHR_Overlay.Buffs.melody_effects");
|
||||||
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
|
language = require("MHR_Overlay.Misc.language");
|
||||||
|
time = require("MHR_Overlay.Game_Handler.time");
|
||||||
|
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
local buff = this.new("Enviroment Damage Negated");
|
time.new_timer(this.update, 0.5);
|
||||||
buff.duration = 90;
|
|
||||||
buff.timer = 65;
|
|
||||||
buff.timer_percentage = 0.66;
|
|
||||||
buff.minutes_left = 1;
|
|
||||||
buff.seconds_left = 5
|
|
||||||
|
|
||||||
this.list["Enviroment Damage Negated"] = buff;
|
|
||||||
|
|
||||||
local buff = this.new("Sharpness Loss Reduced");
|
|
||||||
buff.duration = 120;
|
|
||||||
buff.timer = 70;
|
|
||||||
buff.timer_percentage = 0.583;
|
|
||||||
buff.minutes_left = 1;
|
|
||||||
buff.seconds_left = 10
|
|
||||||
|
|
||||||
this.list["Sharpness Loss Reduced"] = buff;
|
|
||||||
|
|
||||||
local buff = this.new("Sharpness Loss Reduced 2");
|
|
||||||
buff.duration = 120;
|
|
||||||
buff.timer = 70;
|
|
||||||
buff.timer_percentage = 0.583;
|
|
||||||
buff.minutes_left = 1;
|
|
||||||
buff.seconds_left = 10
|
|
||||||
buff.is_infinite = true;
|
|
||||||
|
|
||||||
this.list["Sharpness Loss Reduced 2"] = buff;
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
437
reframework/autorun/MHR_Overlay/Buffs/consumables.lua
Normal file
437
reframework/autorun/MHR_Overlay/Buffs/consumables.lua
Normal file
@@ -0,0 +1,437 @@
|
|||||||
|
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,
|
||||||
|
hardshell_powder = nil,
|
||||||
|
immunizer = nil,
|
||||||
|
dash_juice = 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");
|
||||||
|
|
||||||
|
local system_array_type_def = sdk.find_type_definition("System.Array");
|
||||||
|
local length_method = system_array_type_def:get_method("get_Length");
|
||||||
|
local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)");
|
||||||
|
|
||||||
|
function this.update(player_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_might_seed(player_data, item_parameter);
|
||||||
|
this.update_adamant_seed(player_data, item_parameter);
|
||||||
|
this.update_demon_powder(player_data, item_parameter);
|
||||||
|
this.update_hardshell_powder(player_data, item_parameter);
|
||||||
|
this.update_immunizer(player_data, item_parameter);
|
||||||
|
this.update_dash_juice(player_data, item_parameter);
|
||||||
|
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, demondrug_value);
|
||||||
|
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, demondrug_value);
|
||||||
|
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, armorskin_value);
|
||||||
|
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, armorskin_value);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.update_might_seed(player_data, item_parameter)
|
||||||
|
local might_seed_value = atk_up_buff_second_field:get_data(player_data);
|
||||||
|
if might_seed_value == nil then
|
||||||
|
error_handler.report("consumables.update_might_seed", "Failed to access Data: might_seed_value");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
if might_seed_value == 0 then
|
||||||
|
this.list.might_seed = nil;
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local might_seed_timer = atk_up_buff_second_timer_field:get_data(player_data);
|
||||||
|
if might_seed_timer == nil then
|
||||||
|
error_handler.report("consumables.update_might_seed", "Failed to access Data: might_seed_timer");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local buff = this.list.might_seed;
|
||||||
|
if buff == nil then
|
||||||
|
local might_seed_timer_const_value = might_seed_timer_field:get_data(item_parameter);
|
||||||
|
if might_seed_timer_const_value == nil then
|
||||||
|
error_handler.report("consumables.update_might_seed", "Failed to access Data: might_seed_timer_const_value");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local name = language.current_language.consumables.might_seed;
|
||||||
|
|
||||||
|
buff = buffs.new(buffs.types.consumable, "might_seed", name, might_seed_value, might_seed_timer_const_value);
|
||||||
|
this.list.might_seed = buff;
|
||||||
|
else
|
||||||
|
buff.value = might_seed_value;
|
||||||
|
buffs.update_timer(buff, might_seed_timer / 60);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.update_adamant_seed(player_data, item_parameter)
|
||||||
|
local adamant_seed_value = def_up_buff_second_field:get_data(player_data);
|
||||||
|
if adamant_seed_value == nil then
|
||||||
|
error_handler.report("consumables.update_adamant_seed", "Failed to access Data: adamant_seed_value");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
if adamant_seed_value == 0 then
|
||||||
|
this.list.adamant_seed = nil;
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local adamant_seed_timer = def_up_buff_second_timer_field:get_data(player_data);
|
||||||
|
if adamant_seed_timer == nil then
|
||||||
|
error_handler.report("consumables.update_adamant_seed", "Failed to access Data: adamant_seed_timer");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local buff = this.list.adamant_seed;
|
||||||
|
if buff == nil then
|
||||||
|
local adamant_seed_timer_const_value = adamant_seed_timer_field:get_data(item_parameter);
|
||||||
|
if adamant_seed_timer_const_value == nil then
|
||||||
|
error_handler.report("consumables.update_adamant_seed", "Failed to access Data: adamant_seed_timer_const_value");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local name = language.current_language.consumables.adamant_seed;
|
||||||
|
|
||||||
|
buff = buffs.new(buffs.types.consumable, "adamant_seed", name, adamant_seed_value, adamant_seed_timer_const_value);
|
||||||
|
this.list.adamant_seed = buff;
|
||||||
|
else
|
||||||
|
buff.value = adamant_seed_value;
|
||||||
|
buffs.update_timer(buff, adamant_seed_timer / 60);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.update_demon_powder(player_data, item_parameter)
|
||||||
|
local demon_powder_value = atk_up_item_second_field:get_data(player_data);
|
||||||
|
if demon_powder_value == nil then
|
||||||
|
error_handler.report("consumables.update_demon_powder", "Failed to access Data: demon_powder_value");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
if demon_powder_value == 0 then
|
||||||
|
this.list.demon_powder = nil;
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local demon_powder_timer = atk_up_item_second_timer_field:get_data(player_data);
|
||||||
|
if demon_powder_timer == nil then
|
||||||
|
error_handler.report("consumables.update_demon_powder", "Failed to access Data: demon_powder_timer");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local buff = this.list.demon_powder;
|
||||||
|
if buff == nil then
|
||||||
|
local demon_powder_timer_const_value = demondrug_powder_timer_field:get_data(item_parameter);
|
||||||
|
if demon_powder_timer_const_value == nil then
|
||||||
|
error_handler.report("consumables.update_demon_powder", "Failed to access Data: demon_powder_timer_const_value");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local name = language.current_language.consumables.demon_powder;
|
||||||
|
|
||||||
|
buff = buffs.new(buffs.types.consumable, "demon_powder", name, demon_powder_value, demon_powder_timer_const_value);
|
||||||
|
this.list.demon_powder = buff;
|
||||||
|
else
|
||||||
|
buff.value = demon_powder_value;
|
||||||
|
buffs.update_timer(buff, demon_powder_timer / 60);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.update_hardshell_powder(player_data, item_parameter)
|
||||||
|
local hardshell_powder_value = def_up_item_second_field:get_data(player_data);
|
||||||
|
if hardshell_powder_value == nil then
|
||||||
|
error_handler.report("consumables.update_hardshell_powder", "Failed to access Data: hardshell_powder_value");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
if hardshell_powder_value == 0 then
|
||||||
|
this.list.hardshell_powder = nil;
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local hardshell_powder_timer = def_up_item_second_timer_field:get_data(player_data);
|
||||||
|
if hardshell_powder_timer == nil then
|
||||||
|
error_handler.report("consumables.update_hardshell_powder", "Failed to access Data: hardshell_powder_timer");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local buff = this.list.hardshell_powder;
|
||||||
|
if buff == nil then
|
||||||
|
local demon_powder_timer_const_value = armorskin_powder_timer_field:get_data(item_parameter);
|
||||||
|
if demon_powder_timer_const_value == nil then
|
||||||
|
error_handler.report("consumables.update_hardshell_powder", "Failed to access Data: demon_powder_timer_const_value");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local name = language.current_language.consumables.hardshell_powder;
|
||||||
|
|
||||||
|
buff = buffs.new(buffs.types.consumable, "hardshell_powder", name, hardshell_powder_value, demon_powder_timer_const_value);
|
||||||
|
this.list.hardshell_powder = buff;
|
||||||
|
else
|
||||||
|
buff.value = hardshell_powder_value;
|
||||||
|
buffs.update_timer(buff, hardshell_powder_timer / 60);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.update_immunizer(player_data, item_parameter)
|
||||||
|
local immunizer_timer = vitalizer_timer_field:get_data(player_data);
|
||||||
|
if immunizer_timer == nil then
|
||||||
|
error_handler.report("consumables.update_immunizer", "Failed to access Data: immunizer_timer");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
if immunizer_timer == 0 then
|
||||||
|
this.list.immunizer = nil;
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local buff = this.list.immunizer;
|
||||||
|
if buff == nil then
|
||||||
|
local immunizer_timer_const_value = vitalizer_timer_const_field:get_data(item_parameter);
|
||||||
|
if immunizer_timer_const_value == nil then
|
||||||
|
error_handler.report("consumables.update_immunizer", "Failed to access Data: immunizer_timer_const_value");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local name = language.current_language.consumables.immunizer;
|
||||||
|
|
||||||
|
buff = buffs.new(buffs.types.consumable, "immunizer", name, 0, immunizer_timer_const_value);
|
||||||
|
this.list.immunizer = buff;
|
||||||
|
else
|
||||||
|
buffs.update_timer(buff, immunizer_timer / 60);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.update_dash_juice(player_data, item_parameter)
|
||||||
|
local dash_juice_timer = stamina_up_buff_second_timer_field:get_data(player_data);
|
||||||
|
if dash_juice_timer == nil then
|
||||||
|
error_handler.report("consumables.update_dash_juice", "Failed to access Data: dash_juice_timer");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
if dash_juice_timer == 0 then
|
||||||
|
this.list.dash_juice = nil;
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local buff = this.list.dash_juice;
|
||||||
|
|
||||||
|
if buff == nil then
|
||||||
|
local dash_juice_timer_const_value = stamina_up_buff_second_field:get_data(item_parameter);
|
||||||
|
if dash_juice_timer_const_value == nil then
|
||||||
|
error_handler.report("consumables.update_dash_juice", "Failed to access Data: dash_juice_timer");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local name = language.current_language.consumables.dash_juice;
|
||||||
|
|
||||||
|
buff = buffs.new(buffs.types.consumable, "dash_juice", name, 0, dash_juice_timer_const_value);
|
||||||
|
this.list.dash_juice = buff;
|
||||||
|
else
|
||||||
|
buffs.update_timer(buff, dash_juice_timer / 60);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_names()
|
||||||
|
for key, buff in pairs(this.list) do
|
||||||
|
buff.name = language.current_language.consumables[key];
|
||||||
|
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;
|
||||||
164
reframework/autorun/MHR_Overlay/Buffs/melody_effects.lua
Normal file
164
reframework/autorun/MHR_Overlay/Buffs/melody_effects.lua
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
local ids = {
|
||||||
|
self_improvement = 0,
|
||||||
|
attack_up = 1,
|
||||||
|
defense_up = 2,
|
||||||
|
affinity_up = 3,
|
||||||
|
elemental_attack_boost = 4,
|
||||||
|
attack_and_defense_up = 5,
|
||||||
|
attack_and_affinity_up = 6,
|
||||||
|
knockbacks_negated = 7,
|
||||||
|
earplugs_s = 8,
|
||||||
|
earplugs_l = 9,
|
||||||
|
tremors_negated = 10,
|
||||||
|
wind_pressure_negated = 11,
|
||||||
|
stun_negated = 12,
|
||||||
|
blight_negated = 13,
|
||||||
|
divine_protection = 14,
|
||||||
|
health_recovery_s = 15,
|
||||||
|
health_recovery_l = 16,
|
||||||
|
health_recovery_s_antidote = 17,
|
||||||
|
health_regeneration = 18,
|
||||||
|
stamina_use_reduced = 19,
|
||||||
|
stamina_recovery_up = 20,
|
||||||
|
sharpness_loss_reduced = 21,
|
||||||
|
environment_damage_negated = 22,
|
||||||
|
sonic_wave = 23,
|
||||||
|
sonic_barrier = 24,
|
||||||
|
infernal_melody = 25,
|
||||||
|
sharpness_regeneration = 26,
|
||||||
|
sharpness_extension = 27
|
||||||
|
};
|
||||||
|
|
||||||
|
local melody_effect_keys = {
|
||||||
|
"self_improvement",
|
||||||
|
"attack_up",
|
||||||
|
"defense_up",
|
||||||
|
"affinity_up",
|
||||||
|
"elemental_attack_boost",
|
||||||
|
"attack_and_defense_up",
|
||||||
|
"attack_and_affinity_up",
|
||||||
|
"knockbacks_negated",
|
||||||
|
"earplugs_s",
|
||||||
|
"earplugs_l",
|
||||||
|
"tremors_negated",
|
||||||
|
"wind_pressure_negated",
|
||||||
|
"stun_negated",
|
||||||
|
"blight_negated",
|
||||||
|
"divine_protection",
|
||||||
|
"health_recovery_s",
|
||||||
|
"health_recovery_l",
|
||||||
|
"health_recovery_s_antidote",
|
||||||
|
"health_regeneration",
|
||||||
|
"stamina_use_reduced",
|
||||||
|
"stamina_recovery_up",
|
||||||
|
"sharpness_loss_reduced",
|
||||||
|
"environment_damage_negated",
|
||||||
|
"sonic_wave",
|
||||||
|
"sonic_barrier",
|
||||||
|
"infernal_melody",
|
||||||
|
"sharpness_regeneration",
|
||||||
|
"sharpness_extension"
|
||||||
|
};
|
||||||
|
|
||||||
|
this.list = {};
|
||||||
|
|
||||||
|
local music_data_type_def = sdk.find_type_definition("snow.player.Horn.MusicData");
|
||||||
|
local time_field = music_data_type_def:get_field("_Time");
|
||||||
|
|
||||||
|
function this.update(melody_data_table)
|
||||||
|
for lua_index, melody_data in ipairs(melody_data_table) do
|
||||||
|
if melody_data == "" then
|
||||||
|
goto continue;
|
||||||
|
end
|
||||||
|
|
||||||
|
local melody_timer = time_field:get_data(melody_data);
|
||||||
|
if melody_timer == nil then
|
||||||
|
error_handler.report("melody_effects.update", "Failed to access Data: melody_timer No. " .. tostring(lua_index - 1));
|
||||||
|
goto continue;
|
||||||
|
end
|
||||||
|
|
||||||
|
if melody_timer == 0 then
|
||||||
|
this.list[lua_index] = nil;
|
||||||
|
goto continue;
|
||||||
|
end
|
||||||
|
|
||||||
|
local buff = this.list[lua_index];
|
||||||
|
if buff == nil then
|
||||||
|
local key = melody_effect_keys[lua_index];
|
||||||
|
local name = language.current_language.melody_effects[key];
|
||||||
|
|
||||||
|
buff = buffs.new(buffs.types.melody_effect, key, name, melody_timer, melody_timer / 60);
|
||||||
|
this.list[lua_index] = buff;
|
||||||
|
else
|
||||||
|
buff.value = melody_timer;
|
||||||
|
buffs.update_timer(buff, melody_timer / 60);
|
||||||
|
end
|
||||||
|
|
||||||
|
::continue::
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_names()
|
||||||
|
for index, buff in pairs(this.list) do
|
||||||
|
buff.name = language.current_language.melody_effects[buff.key];
|
||||||
|
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;
|
||||||
@@ -8,6 +8,7 @@ local ailments;
|
|||||||
local singletons;
|
local singletons;
|
||||||
local non_players;
|
local non_players;
|
||||||
local utils;
|
local utils;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -50,6 +51,7 @@ local is_boss_enemy_method = enemy_character_base_type_def:get_method("get_isBos
|
|||||||
local check_die_method = enemy_character_base_type_def:get_method("checkDie");
|
local check_die_method = enemy_character_base_type_def:get_method("checkDie");
|
||||||
|
|
||||||
local stock_direct_marionette_finish_shoot_hit_parts_damage_method = enemy_character_base_type_def:get_method("stockDirectMarionetteFinishShootHitPartsDamage");
|
local stock_direct_marionette_finish_shoot_hit_parts_damage_method = enemy_character_base_type_def:get_method("stockDirectMarionetteFinishShootHitPartsDamage");
|
||||||
|
local get_mystery_core_break_damage_rate_method = enemy_character_base_type_def:get_method("getMysteryCoreBreakDamageRate");
|
||||||
|
|
||||||
local enemy_calc_damage_info_type_def = sdk.find_type_definition("snow.hit.EnemyCalcDamageInfo.AfterCalcInfo_DamageSide");
|
local enemy_calc_damage_info_type_def = sdk.find_type_definition("snow.hit.EnemyCalcDamageInfo.AfterCalcInfo_DamageSide");
|
||||||
local get_attacker_id_method = enemy_calc_damage_info_type_def:get_method("get_AttackerID");
|
local get_attacker_id_method = enemy_calc_damage_info_type_def:get_method("get_AttackerID");
|
||||||
@@ -69,8 +71,6 @@ local get_condition_type2_method = enemy_calc_damage_info_type_def:get_method("g
|
|||||||
local get_condition_damage3_method = enemy_calc_damage_info_type_def:get_method("get_ConditionDamage3");
|
local get_condition_damage3_method = enemy_calc_damage_info_type_def:get_method("get_ConditionDamage3");
|
||||||
local get_condition_type3_method = enemy_calc_damage_info_type_def:get_method("get_ConditionDamageType3");
|
local get_condition_type3_method = enemy_calc_damage_info_type_def:get_method("get_ConditionDamageType3");
|
||||||
|
|
||||||
local stock_mystery_core_break_damage_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase.stockMysteryCoreBreakDamage");
|
|
||||||
|
|
||||||
local quest_manager_type_def = sdk.find_type_definition("snow.QuestManager");
|
local quest_manager_type_def = sdk.find_type_definition("snow.QuestManager");
|
||||||
|
|
||||||
local quest_forfeit_method = quest_manager_type_def:get_method("questForfeit");
|
local quest_forfeit_method = quest_manager_type_def:get_method("questForfeit");
|
||||||
@@ -79,24 +79,27 @@ local packet_quest_forfeit_type_def = sdk.find_type_definition("snow.QuestManage
|
|||||||
local dead_player_id_field = packet_quest_forfeit_type_def:get_field("_DeadPlIndex");
|
local dead_player_id_field = packet_quest_forfeit_type_def:get_field("_DeadPlIndex");
|
||||||
local is_from_host_field = packet_quest_forfeit_type_def:get_field("_IsFromQuestHostPacket");
|
local is_from_host_field = packet_quest_forfeit_type_def:get_field("_IsFromQuestHostPacket");
|
||||||
|
|
||||||
|
local enemy_mystery_core_parts_type_def = sdk.find_type_definition("snow.enemy.EnemyMysteryCoreParts");
|
||||||
|
local on_break_method = enemy_mystery_core_parts_type_def:get_method("onBreak");
|
||||||
|
|
||||||
function this.get_damage_source_type(damage_source_type_id, is_marionette_attack)
|
function this.get_damage_source_type(damage_source_type_id, is_marionette_attack)
|
||||||
if is_marionette_attack then
|
if is_marionette_attack then
|
||||||
return "wyvern riding";
|
return players.damage_types.wyvern_riding;
|
||||||
elseif damage_source_type_id == 0 or damage_source_type_id == 7 or damage_source_type_id == 11 or damage_source_type_id == 13 then
|
elseif damage_source_type_id == 0 or damage_source_type_id == 7 or damage_source_type_id == 11 or damage_source_type_id == 13 then
|
||||||
return "player";
|
return players.damage_types.player;
|
||||||
elseif damage_source_type_id == 1 or damage_source_type_id == 8 then
|
elseif damage_source_type_id == 1 or damage_source_type_id == 8 then
|
||||||
return "bomb";
|
return players.damage_types.bombs;
|
||||||
elseif damage_source_type_id == 9 then
|
elseif damage_source_type_id == 9 then
|
||||||
return "kunai";
|
return players.damage_types.kunai;
|
||||||
elseif damage_source_type_id >= 14 and damage_source_type_id <= 20 then
|
elseif damage_source_type_id >= 14 and damage_source_type_id <= 20 then
|
||||||
return "installation";
|
return players.damage_types.installations;
|
||||||
elseif damage_source_type_id >= 21 and damage_source_type_id <= 23 then
|
elseif damage_source_type_id >= 21 and damage_source_type_id <= 23 then
|
||||||
return "otomo";
|
return players.damage_types.otomo;
|
||||||
elseif damage_source_type_id >= 25 and damage_source_type_id <= 32 then
|
elseif damage_source_type_id >= 25 and damage_source_type_id <= 32 then
|
||||||
return "endemic life";
|
return players.damage_types.endemic_life;
|
||||||
end
|
end
|
||||||
|
|
||||||
return "other";
|
return players.damage_types.other;
|
||||||
end
|
end
|
||||||
|
|
||||||
-- snow.hit.EnemyCalcDamageInfo.AfterCalcInfo_DamageSide
|
-- snow.hit.EnemyCalcDamageInfo.AfterCalcInfo_DamageSide
|
||||||
@@ -104,11 +107,13 @@ function this.update_damage(enemy, enemy_calc_damage_info)
|
|||||||
local is_large_monster = is_boss_enemy_method:call(enemy);
|
local is_large_monster = is_boss_enemy_method:call(enemy);
|
||||||
|
|
||||||
if is_large_monster == nil then
|
if is_large_monster == nil then
|
||||||
|
error_handler.report("damage_hook.update_damage", "Failed to access Data: is_large_monster");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local dead_or_captured = check_die_method:call(enemy);
|
local dead_or_captured = check_die_method:call(enemy);
|
||||||
if dead_or_captured == nil then
|
if dead_or_captured == nil then
|
||||||
|
error_handler.report("damage_hook.update_damage", "Failed to access Data: dead_or_captured");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -226,17 +231,42 @@ 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 damage_hook.on_mystery_core_break(enemy)
|
|
||||||
|
|
||||||
--end
|
|
||||||
|
|
||||||
function this.cart(dead_player_id, flag_cat_skill_insurance)
|
function this.cart(dead_player_id, flag_cat_skill_insurance)
|
||||||
-- flag_cat_skill_insurance = 0
|
-- flag_cat_skill_insurance = 0
|
||||||
-- flag_cat_skill_insurance = 1
|
-- flag_cat_skill_insurance = 1
|
||||||
|
|
||||||
local player = players.list[dead_player_id];
|
local player = players.list[dead_player_id];
|
||||||
if player == nil then
|
if player == nil then
|
||||||
|
error_handler.report("damage_hook.cart", "No Dead Player Found");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -270,6 +300,7 @@ function this.on_stock_direct_marionette_finish_shoot_hit_parts_damage(enemy, da
|
|||||||
end
|
end
|
||||||
|
|
||||||
if player == nil then
|
if player == nil then
|
||||||
|
error_handler.report("damage_hook.on_stock_direct_marionette_finish_shoot_hit_parts_damage", "Failed to create Player Entry");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -309,7 +340,48 @@ function this.on_stock_direct_marionette_finish_shoot_hit_parts_damage(enemy, da
|
|||||||
players.update_damage(player, damage_source_type, true, large_monster_damage_object);
|
players.update_damage(player, damage_source_type, true, large_monster_damage_object);
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.on_anomaly_core_break(anomaly_core_part)
|
||||||
|
local anomaly_monster = nil;
|
||||||
|
for enemy, monster in pairs(large_monster.list) do
|
||||||
|
|
||||||
|
if monster.is_anomaly then
|
||||||
|
for part_id, part in pairs(monster.parts) do
|
||||||
|
|
||||||
|
if part.anomaly_core_ref == anomaly_core_part then
|
||||||
|
anomaly_monster = monster;
|
||||||
|
break;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if anomaly_monster ~= nil then
|
||||||
|
break;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if anomaly_monster == nil then
|
||||||
|
error_handler.report("damage_hook.on_anomaly_core_break", "No Anomaly Monster Found");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local anomaly_core_break_damage_rate = get_mystery_core_break_damage_rate_method:call(anomaly_monster.enemy);
|
||||||
|
if anomaly_core_break_damage_rate == nil then
|
||||||
|
error_handler.report("damage_hook.on_anomaly_core_break", "Failed to access Data: anomaly_core_break_damage_rate");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local anomaly_core_break_damage = utils.math.round(anomaly_core_break_damage_rate * anomaly_monster.max_health);
|
||||||
|
|
||||||
|
local damage_object = {};
|
||||||
|
damage_object.total_damage = anomaly_core_break_damage;
|
||||||
|
damage_object.physical_damage = 0;
|
||||||
|
damage_object.elemental_damage = 0;
|
||||||
|
damage_object.ailment_damage = anomaly_core_break_damage;
|
||||||
|
|
||||||
|
players.update_damage(players.total, players.damage_types.anomaly_core, true, damage_object);
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_dependencies()
|
||||||
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
|
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
|
||||||
players = require("MHR_Overlay.Damage_Meter.players");
|
players = require("MHR_Overlay.Damage_Meter.players");
|
||||||
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
||||||
@@ -318,7 +390,10 @@ function this.init_module()
|
|||||||
singletons = require("MHR_Overlay.Game_Handler.singletons");
|
singletons = require("MHR_Overlay.Game_Handler.singletons");
|
||||||
non_players = require("MHR_Overlay.Damage_Meter.non_players");
|
non_players = require("MHR_Overlay.Damage_Meter.non_players");
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
sdk.hook(stock_direct_marionette_finish_shoot_hit_parts_damage_method, function(args)
|
sdk.hook(stock_direct_marionette_finish_shoot_hit_parts_damage_method, function(args)
|
||||||
local enemy = sdk.to_managed_object(args[2]);
|
local enemy = sdk.to_managed_object(args[2]);
|
||||||
local damage_rate = sdk.to_float(args[3]);
|
local damage_rate = sdk.to_float(args[3]);
|
||||||
@@ -344,11 +419,15 @@ function this.init_module()
|
|||||||
return retval;
|
return retval;
|
||||||
end);
|
end);
|
||||||
|
|
||||||
--sdk.hook(stock_mystery_core_break_damage_type_def, function(args)
|
sdk.hook(on_break_method, function(args)
|
||||||
-- pcall(damage_hook.on_mystery_core_break, sdk.to_managed_object(args[2]));
|
-- break core group is same as hit group?
|
||||||
--end, function(retval)
|
-- break core group is part id which exploded
|
||||||
-- return retval;
|
local anomaly_core_part = sdk.to_managed_object(args[2]);
|
||||||
--end);
|
|
||||||
|
this.on_anomaly_core_break(anomaly_core_part);
|
||||||
|
end, function(retval)
|
||||||
|
return retval;
|
||||||
|
end);
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ local quest_status;
|
|||||||
local drawing;
|
local drawing;
|
||||||
local language;
|
local language;
|
||||||
local players;
|
local players;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -132,17 +133,19 @@ function this.update_servant_list()
|
|||||||
local cached_config = config.current_config.damage_meter_UI;
|
local cached_config = config.current_config.damage_meter_UI;
|
||||||
|
|
||||||
if singletons.servant_manager == nil then
|
if singletons.servant_manager == nil then
|
||||||
|
error_handler.report("non_players.update_servant_list", "Failed to access Data: servant_manager");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local quest_servant_id_list = get_quest_servant_id_list_method:call(singletons.servant_manager);
|
local quest_servant_id_list = get_quest_servant_id_list_method:call(singletons.servant_manager);
|
||||||
if quest_servant_id_list == nil then
|
if quest_servant_id_list == nil then
|
||||||
|
error_handler.report("non_players.update_servant_list", "Failed to access Data: quest_servant_id_list");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local servant_count = servant_get_count_method:call(quest_servant_id_list);
|
local servant_count = servant_get_count_method:call(quest_servant_id_list);
|
||||||
if servant_count == nil then
|
if servant_count == nil then
|
||||||
customization_menu.status = "No quest servant id list count";
|
error_handler.report("non_players.update_servant_list", "Failed to access Data: servant_count");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -150,19 +153,20 @@ function this.update_servant_list()
|
|||||||
for i = 0, servant_count - 1 do
|
for i = 0, servant_count - 1 do
|
||||||
local servant_id = servant_get_item_method:call(quest_servant_id_list, i);
|
local servant_id = servant_get_item_method:call(quest_servant_id_list, i);
|
||||||
if servant_id == nil then
|
if servant_id == nil then
|
||||||
|
error_handler.report("non_players.update_servant_list", "Failed to access Data: servant_id No." .. tostring(i));
|
||||||
goto continue;
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local ai_control = get_ai_control_by_servant_id_method:call(singletons.servant_manager, servant_id);
|
local ai_control = get_ai_control_by_servant_id_method:call(singletons.servant_manager, servant_id);
|
||||||
if ai_control == nil then
|
if ai_control == nil then
|
||||||
customization_menu.status = "No quest servant ai control";
|
error_handler.report("non_players.update_servant_list", "Failed to access Data: ai_control No." .. tostring(i));
|
||||||
goto continue;
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
local servant_info = get_servant_info_method:call(ai_control);
|
local servant_info = get_servant_info_method:call(ai_control);
|
||||||
if servant_info == nil then
|
if servant_info == nil then
|
||||||
customization_menu.status = "No quest servant info";
|
error_handler.report("non_players.update_servant_list", "Failed to access Data: servant_info No." .. tostring(i));
|
||||||
goto continue;
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -213,8 +217,14 @@ function this.update_my_otomos()
|
|||||||
local cached_config = config.current_config.damage_meter_UI;
|
local cached_config = config.current_config.damage_meter_UI;
|
||||||
|
|
||||||
local first_otomo = get_master_otomo_info_method:call(singletons.otomo_manager, 0);
|
local first_otomo = get_master_otomo_info_method:call(singletons.otomo_manager, 0);
|
||||||
if first_otomo ~= nil then
|
if first_otomo == nil then
|
||||||
|
error_handler.report("non_players.update_my_otomos", "Failed to access Data: first_otomo");
|
||||||
|
else
|
||||||
local name = otomo_create_data_name_field:get_data(first_otomo);
|
local name = otomo_create_data_name_field:get_data(first_otomo);
|
||||||
|
if name == nil then
|
||||||
|
error_handler.report("non_players.update_my_otomos", "Failed to access Data: first_otomo -> name");
|
||||||
|
end
|
||||||
|
|
||||||
if name ~= nil and name ~= "" then
|
if name ~= nil and name ~= "" then
|
||||||
local level = otomo_create_data_level_field:get_data(first_otomo) or 0;
|
local level = otomo_create_data_level_field:get_data(first_otomo) or 0;
|
||||||
|
|
||||||
@@ -230,8 +240,14 @@ function this.update_my_otomos()
|
|||||||
end
|
end
|
||||||
|
|
||||||
local second_otomo = get_master_otomo_info_method:call(singletons.otomo_manager, 1);
|
local second_otomo = get_master_otomo_info_method:call(singletons.otomo_manager, 1);
|
||||||
if second_otomo ~= nil then
|
if second_otomo == nil then
|
||||||
|
error_handler.report("non_players.update_my_otomos", "Failed to access Data: second_otomo");
|
||||||
|
else
|
||||||
local name = otomo_create_data_name_field:get_data(second_otomo);
|
local name = otomo_create_data_name_field:get_data(second_otomo);
|
||||||
|
if name == nil then
|
||||||
|
error_handler.report("non_players.update_my_otomos", "Failed to access Data: second_otomo -> name");
|
||||||
|
end
|
||||||
|
|
||||||
if name ~= nil and name ~= "" then
|
if name ~= nil and name ~= "" then
|
||||||
local level = otomo_create_data_level_field:get_data(second_otomo) or 0;
|
local level = otomo_create_data_level_field:get_data(second_otomo) or 0;
|
||||||
|
|
||||||
@@ -252,19 +268,20 @@ function this.update_servant_otomos()
|
|||||||
|
|
||||||
local servant_otomo_list = get_servant_otomo_list_method:call(singletons.otomo_manager);
|
local servant_otomo_list = get_servant_otomo_list_method:call(singletons.otomo_manager);
|
||||||
if servant_otomo_list == nil then
|
if servant_otomo_list == nil then
|
||||||
customization_menu.status = "No servant otomo list";
|
error_handler.report("non_players.update_servant_otomos", "Failed to access Data: servant_otomo_list");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local count = otomo_get_count_method:call(servant_otomo_list);
|
local count = otomo_get_count_method:call(servant_otomo_list);
|
||||||
if count == nil then
|
if count == nil then
|
||||||
customization_menu.status = "No servant otomo list count";
|
error_handler.report("non_players.update_servant_otomos", "Failed to access Data: servant_otomo_list -> count");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
for i = 0, count - 1 do
|
for i = 0, count - 1 do
|
||||||
local servant_otomo = otomo_get_item_method:call(servant_otomo_list, i);
|
local servant_otomo = otomo_get_item_method:call(servant_otomo_list, i);
|
||||||
if servant_otomo == nil then
|
if servant_otomo == nil then
|
||||||
|
error_handler.report("non_players.update_servant_otomos", "Failed to access Data: servant_otomo No. " .. tostring(i));
|
||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -275,6 +292,7 @@ function this.update_servant_otomos()
|
|||||||
local member_id = otomo_create_data:get_field("MemberID");
|
local member_id = otomo_create_data:get_field("MemberID");
|
||||||
|
|
||||||
if name == nil then
|
if name == nil then
|
||||||
|
error_handler.report("non_players.update_servant_otomos", string.format("Failed to access Data: servant_otomo No. %d -> name", i));
|
||||||
goto continue;
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -296,30 +314,33 @@ function this.update_otomos(otomo_info_field_)
|
|||||||
local cached_config = config.current_config.damage_meter_UI;
|
local cached_config = config.current_config.damage_meter_UI;
|
||||||
|
|
||||||
if singletons.lobby_manager == nil then
|
if singletons.lobby_manager == nil then
|
||||||
|
error_handler.report("non_players.update_otomos", "Failed to access Data: lobby_manager");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
-- other players
|
-- other players
|
||||||
local otomo_info_list = otomo_info_field_:get_data(singletons.lobby_manager);
|
local otomo_info_list = otomo_info_field_:get_data(singletons.lobby_manager);
|
||||||
if otomo_info_list == nil then
|
if otomo_info_list == nil then
|
||||||
customization_menu.status = "No otomo info list";
|
error_handler.report("non_players.update_otomos", "Failed to access Data: otomo_info_list");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local count = otomo_info_get_count_method:call(otomo_info_list);
|
local count = otomo_info_get_count_method:call(otomo_info_list);
|
||||||
if count == nil then
|
if count == nil then
|
||||||
customization_menu.status = "No otomo info list count";
|
error_handler.report("non_players.update_otomos", "Failed to access Data: otomo_info_list -> count");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
for id = 0, count - 1 do
|
for id = 0, count - 1 do
|
||||||
local otomo_info = otomo_info_get_item_method:call(otomo_info_list, id);
|
local otomo_info = otomo_info_get_item_method:call(otomo_info_list, id);
|
||||||
if otomo_info == nil then
|
if otomo_info == nil then
|
||||||
|
error_handler.report("non_players.update_otomos", "Failed to access Data: otomo_info No. " .. tostring(id));
|
||||||
goto continue;
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
local name = otomo_info_name_field:get_data(otomo_info);
|
local name = otomo_info_name_field:get_data(otomo_info);
|
||||||
if name == nil then
|
if name == nil then
|
||||||
|
error_handler.report("non_players.update_otomos", string.format("Failed to access Data: otomo_info No. %d -> name", id));
|
||||||
goto continue;
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -377,7 +398,7 @@ function this.init_UI(non_player)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
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");
|
||||||
@@ -387,7 +408,10 @@ function this.init_module()
|
|||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
players = require("MHR_Overlay.Damage_Meter.players");
|
players = require("MHR_Overlay.Damage_Meter.players");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
this.init();
|
this.init();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ local quest_status;
|
|||||||
local drawing;
|
local drawing;
|
||||||
local language;
|
local language;
|
||||||
local non_players;
|
local non_players;
|
||||||
|
local utils;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -51,6 +53,22 @@ this.display_list = {};
|
|||||||
|
|
||||||
this.highlighted_damage_UI = nil;
|
this.highlighted_damage_UI = nil;
|
||||||
|
|
||||||
|
this.damage_types = {
|
||||||
|
["player"] = "player",
|
||||||
|
["bombs"] = "bombs",
|
||||||
|
["kunai"] = "kunai",
|
||||||
|
["installations"] = "installations",
|
||||||
|
["otomo"] = "otomo",
|
||||||
|
["wyvern_riding"] = "wyvern_riding",
|
||||||
|
["poison"] = "poison",
|
||||||
|
["otomo_poison"] = "otomo_poison",
|
||||||
|
["blast"] = "blast",
|
||||||
|
["otomo_blast"] = "otomo_blast",
|
||||||
|
["endemic_life"] = "endemic_life",
|
||||||
|
["anomaly_core"] = "anomaly_core",
|
||||||
|
["other"] = "other"
|
||||||
|
};
|
||||||
|
|
||||||
this.types = {
|
this.types = {
|
||||||
["myself"] = 0,
|
["myself"] = 0,
|
||||||
["other_player"] = 1,
|
["other_player"] = 1,
|
||||||
@@ -60,8 +78,7 @@ this.types = {
|
|||||||
["servant_otomo"] = 16,
|
["servant_otomo"] = 16,
|
||||||
["total"] = 32,
|
["total"] = 32,
|
||||||
["highlight"] = 64
|
["highlight"] = 64
|
||||||
|
};
|
||||||
}
|
|
||||||
|
|
||||||
function this.new(id, name, master_rank, hunter_rank, type)
|
function this.new(id, name, master_rank, hunter_rank, type)
|
||||||
local player = {};
|
local player = {};
|
||||||
@@ -78,7 +95,7 @@ function this.new(id, name, master_rank, hunter_rank, type)
|
|||||||
player.first_hit_time = -1;
|
player.first_hit_time = -1;
|
||||||
player.dps = 0;
|
player.dps = 0;
|
||||||
|
|
||||||
player.small_monsters = this.init_damage_sources()
|
player.small_monsters = this.init_damage_sources();
|
||||||
player.large_monsters = this.init_damage_sources();
|
player.large_monsters = this.init_damage_sources();
|
||||||
|
|
||||||
player.display = {};
|
player.display = {};
|
||||||
@@ -99,77 +116,14 @@ end
|
|||||||
function this.init_damage_sources()
|
function this.init_damage_sources()
|
||||||
local monster_type = {};
|
local monster_type = {};
|
||||||
|
|
||||||
monster_type.total_damage = 0;
|
for damage_type_name, _ in pairs(this.damage_types) do
|
||||||
monster_type.physical_damage = 0;
|
monster_type[damage_type_name] = {
|
||||||
monster_type.elemental_damage = 0;
|
total_damage = 0,
|
||||||
monster_type.ailment_damage = 0;
|
physical_damage = 0,
|
||||||
|
elemental_damage = 0,
|
||||||
monster_type.bombs = {};
|
ailment_damage = 0
|
||||||
monster_type.bombs.total_damage = 0;
|
};
|
||||||
monster_type.bombs.physical_damage = 0;
|
end
|
||||||
monster_type.bombs.elemental_damage = 0;
|
|
||||||
monster_type.bombs.ailment_damage = 0;
|
|
||||||
|
|
||||||
monster_type.kunai = {};
|
|
||||||
monster_type.kunai.total_damage = 0;
|
|
||||||
monster_type.kunai.physical_damage = 0;
|
|
||||||
monster_type.kunai.elemental_damage = 0;
|
|
||||||
monster_type.kunai.ailment_damage = 0;
|
|
||||||
|
|
||||||
monster_type.installations = {};
|
|
||||||
monster_type.installations.total_damage = 0;
|
|
||||||
monster_type.installations.physical_damage = 0;
|
|
||||||
monster_type.installations.elemental_damage = 0;
|
|
||||||
monster_type.installations.ailment_damage = 0;
|
|
||||||
|
|
||||||
monster_type.otomo = {};
|
|
||||||
monster_type.otomo.total_damage = 0;
|
|
||||||
monster_type.otomo.physical_damage = 0;
|
|
||||||
monster_type.otomo.elemental_damage = 0;
|
|
||||||
monster_type.otomo.ailment_damage = 0;
|
|
||||||
|
|
||||||
monster_type.wyvern_riding = {};
|
|
||||||
monster_type.wyvern_riding.total_damage = 0;
|
|
||||||
monster_type.wyvern_riding.physical_damage = 0;
|
|
||||||
monster_type.wyvern_riding.elemental_damage = 0;
|
|
||||||
monster_type.wyvern_riding.ailment_damage = 0;
|
|
||||||
|
|
||||||
monster_type.poison = {};
|
|
||||||
monster_type.poison.total_damage = 0;
|
|
||||||
monster_type.poison.physical_damage = 0;
|
|
||||||
monster_type.poison.elemental_damage = 0;
|
|
||||||
monster_type.poison.ailment_damage = 0;
|
|
||||||
|
|
||||||
monster_type.otomo_poison = {};
|
|
||||||
monster_type.otomo_poison.total_damage = 0;
|
|
||||||
monster_type.otomo_poison.physical_damage = 0;
|
|
||||||
monster_type.otomo_poison.elemental_damage = 0;
|
|
||||||
monster_type.otomo_poison.ailment_damage = 0;
|
|
||||||
|
|
||||||
|
|
||||||
monster_type.blast = {};
|
|
||||||
monster_type.blast.total_damage = 0;
|
|
||||||
monster_type.blast.physical_damage = 0;
|
|
||||||
monster_type.blast.elemental_damage = 0;
|
|
||||||
monster_type.blast.ailment_damage = 0;
|
|
||||||
|
|
||||||
monster_type.otomo_blast = {};
|
|
||||||
monster_type.otomo_blast.total_damage = 0;
|
|
||||||
monster_type.otomo_blast.physical_damage = 0;
|
|
||||||
monster_type.otomo_blast.elemental_damage = 0;
|
|
||||||
monster_type.otomo_blast.ailment_damage = 0;
|
|
||||||
|
|
||||||
monster_type.endemic_life = {};
|
|
||||||
monster_type.endemic_life.total_damage = 0;
|
|
||||||
monster_type.endemic_life.physical_damage = 0;
|
|
||||||
monster_type.endemic_life.elemental_damage = 0;
|
|
||||||
monster_type.endemic_life.ailment_damage = 0;
|
|
||||||
|
|
||||||
monster_type.other = {};
|
|
||||||
monster_type.other.total_damage = 0;
|
|
||||||
monster_type.other.physical_damage = 0;
|
|
||||||
monster_type.other.elemental_damage = 0;
|
|
||||||
monster_type.other.ailment_damage = 0;
|
|
||||||
|
|
||||||
return monster_type;
|
return monster_type;
|
||||||
end
|
end
|
||||||
@@ -191,37 +145,10 @@ function this.update_damage(player, damage_source_type, is_large_monster, damage
|
|||||||
player.first_hit_time = time.total_elapsed_script_seconds;
|
player.first_hit_time = time.total_elapsed_script_seconds;
|
||||||
end
|
end
|
||||||
|
|
||||||
local player_monster_type = player.small_monsters;
|
|
||||||
if is_large_monster then
|
if is_large_monster then
|
||||||
player_monster_type = player.large_monsters;
|
this.merge_damage(player.large_monsters[damage_source_type], damage_object);
|
||||||
end
|
|
||||||
|
|
||||||
if damage_source_type == "player" then
|
|
||||||
this.merge_damage(player_monster_type, damage_object);
|
|
||||||
elseif damage_source_type == "bomb" then
|
|
||||||
this.merge_damage(player_monster_type.bombs, damage_object);
|
|
||||||
elseif damage_source_type == "kunai" then
|
|
||||||
this.merge_damage(player_monster_type.kunai, damage_object);
|
|
||||||
elseif damage_source_type == "installation" then
|
|
||||||
this.merge_damage(player_monster_type.installations, damage_object);
|
|
||||||
elseif damage_source_type == "otomo" then
|
|
||||||
this.merge_damage(player_monster_type.otomo, damage_object);
|
|
||||||
elseif damage_source_type == "wyvern riding" then
|
|
||||||
this.merge_damage(player_monster_type.wyvern_riding, damage_object);
|
|
||||||
elseif damage_source_type == "poison" then
|
|
||||||
this.merge_damage(player_monster_type.poison, damage_object);
|
|
||||||
elseif damage_source_type == "blast" then
|
|
||||||
this.merge_damage(player_monster_type.blast, damage_object);
|
|
||||||
elseif damage_source_type == "otomo poison" then
|
|
||||||
this.merge_damage(player_monster_type.otomo_poison, damage_object);
|
|
||||||
elseif damage_source_type == "otomo blast" then
|
|
||||||
this.merge_damage(player_monster_type.otomo_blast, damage_object);
|
|
||||||
elseif damage_source_type == "endemic life" then
|
|
||||||
this.merge_damage(player_monster_type.endemic_life, damage_object);
|
|
||||||
elseif damage_source_type == "other" then
|
|
||||||
this.merge_damage(player_monster_type.other, damage_object);
|
|
||||||
else
|
else
|
||||||
this.merge_damage(player_monster_type, damage_object);
|
this.merge_damage(player.small_monsters[damage_source_type], damage_object);
|
||||||
end
|
end
|
||||||
|
|
||||||
this.update_display(player);
|
this.update_display(player);
|
||||||
@@ -229,6 +156,7 @@ end
|
|||||||
|
|
||||||
function this.update_display(player)
|
function this.update_display(player)
|
||||||
if player == nil then
|
if player == nil then
|
||||||
|
error_handler.report("players.update_display", "Missing Parameter: player");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -250,23 +178,23 @@ function this.update_display(player)
|
|||||||
end
|
end
|
||||||
|
|
||||||
for _, monster_type in ipairs(monster_types) do
|
for _, monster_type in ipairs(monster_types) do
|
||||||
if cached_config.tracked_damage_types.player_damage then
|
if cached_config.tracked_damage_types.players then
|
||||||
this.merge_damage(player.display, monster_type);
|
this.merge_damage(player.display, monster_type.player);
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.tracked_damage_types.bomb_damage then
|
if cached_config.tracked_damage_types.bombs then
|
||||||
this.merge_damage(player.display, monster_type.bombs);
|
this.merge_damage(player.display, monster_type.bombs);
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.tracked_damage_types.kunai_damage then
|
if cached_config.tracked_damage_types.kunai then
|
||||||
this.merge_damage(player.display, monster_type.kunai);
|
this.merge_damage(player.display, monster_type.kunai);
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.tracked_damage_types.installation_damage then
|
if cached_config.tracked_damage_types.installations then
|
||||||
this.merge_damage(player.display, monster_type.installations);
|
this.merge_damage(player.display, monster_type.installations);
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.tracked_damage_types.otomo_damage then
|
if cached_config.tracked_damage_types.otomos then
|
||||||
if player.type == this.types.myself then
|
if player.type == this.types.myself then
|
||||||
|
|
||||||
if not cached_config.settings.show_my_otomos_separately then
|
if not cached_config.settings.show_my_otomos_separately then
|
||||||
@@ -303,11 +231,11 @@ function this.update_display(player)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.tracked_damage_types.wyvern_riding_damage then
|
if cached_config.tracked_damage_types.wyvern_riding then
|
||||||
this.merge_damage(player.display, monster_type.wyvern_riding);
|
this.merge_damage(player.display, monster_type.wyvern_riding);
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.tracked_damage_types.poison_damage then
|
if cached_config.tracked_damage_types.poison then
|
||||||
this.merge_damage(player.display, monster_type.poison);
|
this.merge_damage(player.display, monster_type.poison);
|
||||||
|
|
||||||
if player.type == this.types.myself then
|
if player.type == this.types.myself then
|
||||||
@@ -347,7 +275,7 @@ function this.update_display(player)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.tracked_damage_types.blast_damage then
|
if cached_config.tracked_damage_types.blast then
|
||||||
this.merge_damage(player.display, monster_type.blast);
|
this.merge_damage(player.display, monster_type.blast);
|
||||||
|
|
||||||
if player.type == this.types.myself then
|
if player.type == this.types.myself then
|
||||||
@@ -386,11 +314,15 @@ function this.update_display(player)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.tracked_damage_types.endemic_life_damage then
|
if cached_config.tracked_damage_types.endemic_life then
|
||||||
this.merge_damage(player.display, monster_type.endemic_life);
|
this.merge_damage(player.display, monster_type.endemic_life);
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.tracked_damage_types.other_damage then
|
if cached_config.tracked_damage_types.anomaly_cores then
|
||||||
|
this.merge_damage(player.display, monster_type.anomaly_core);
|
||||||
|
end
|
||||||
|
|
||||||
|
if cached_config.tracked_damage_types.other then
|
||||||
this.merge_damage(player.display, monster_type.other);
|
this.merge_damage(player.display, monster_type.other);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -405,6 +337,20 @@ function this.merge_damage(first, second)
|
|||||||
return first;
|
return first;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function this.update_display_list()
|
||||||
|
local is_on_quest = quest_status.flow_state ~= quest_status.flow_states.IN_LOBBY and quest_status.flow_state ~= quest_status.flow_states.IN_TRAINING_AREA;
|
||||||
|
|
||||||
|
this.display_list = {};
|
||||||
|
this.update_player_list(is_on_quest);
|
||||||
|
non_players.update_servant_list();
|
||||||
|
non_players.update_otomo_list(is_on_quest, quest_status.is_online);
|
||||||
|
|
||||||
|
this.update_dps(false);
|
||||||
|
this.sort_players();
|
||||||
|
|
||||||
|
quest_status.get_cart_count();
|
||||||
|
end
|
||||||
|
|
||||||
function this.update_dps(bypass_freeze)
|
function this.update_dps(bypass_freeze)
|
||||||
local cached_config = config.current_config.damage_meter_UI.settings;
|
local cached_config = config.current_config.damage_meter_UI.settings;
|
||||||
|
|
||||||
@@ -506,20 +452,27 @@ local get_pos_field = player_base_type_def:get_method("get_Pos");
|
|||||||
|
|
||||||
function this.update_myself_position()
|
function this.update_myself_position()
|
||||||
if singletons.player_manager == nil then
|
if singletons.player_manager == nil then
|
||||||
customization_menu.status = "No player manager";
|
error_handler.report("players.update_myself_position", "Failed to access Data: player_manager");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
if quest_status.flow_state == quest_status.flow_states.NONE
|
||||||
|
or quest_status.flow_state == quest_status.flow_states.CUTSCENE then
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local master_player = find_master_player_method:call(singletons.player_manager);
|
local master_player = find_master_player_method:call(singletons.player_manager);
|
||||||
if master_player == nil then
|
if master_player == nil then
|
||||||
customization_menu.status = "No master player";
|
error_handler.report("players.update_myself_position", "Failed to access Data: master_player");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local position = get_pos_field:call(master_player);
|
local position = get_pos_field:call(master_player);
|
||||||
if position ~= nil then
|
if position == nil then
|
||||||
this.myself_position = position;
|
error_handler.report("players.update_myself_position", "Failed to access Data: position");
|
||||||
end
|
end
|
||||||
|
|
||||||
|
this.myself_position = position;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init()
|
function this.init()
|
||||||
@@ -568,23 +521,25 @@ function this.update_player_list_(hunter_info_field_)
|
|||||||
local cached_config = config.current_config.damage_meter_UI;
|
local cached_config = config.current_config.damage_meter_UI;
|
||||||
|
|
||||||
if singletons.lobby_manager == nil then
|
if singletons.lobby_manager == nil then
|
||||||
|
error_handler.report("players.update_player_list_", "Failed to access Data: lobby_manager");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
if singletons.progress_manager == nil then
|
if singletons.progress_manager == nil then
|
||||||
|
error_handler.report("players.update_player_list_", "Failed to access Data: progress_manager");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
-- myself player
|
-- myself player
|
||||||
local myself_player_info = my_hunter_info_field:get_data(singletons.lobby_manager);
|
local myself_player_info = my_hunter_info_field:get_data(singletons.lobby_manager);
|
||||||
if myself_player_info == nil then
|
if myself_player_info == nil then
|
||||||
customization_menu.status = "No myself player info list";
|
error_handler.report("players.update_player_list_", "Failed to access Data: myself_player_info");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local myself_player_name = name_field:get_data(myself_player_info);
|
local myself_player_name = name_field:get_data(myself_player_info);
|
||||||
if myself_player_name == nil then
|
if myself_player_name == nil then
|
||||||
customization_menu.status = "No myself player name";
|
error_handler.report("players.update_player_list_", "Failed to access Data: myself_player_name");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -594,7 +549,7 @@ function this.update_player_list_(hunter_info_field_)
|
|||||||
local myself_id = get_master_player_id_method:call(singletons.player_manager);
|
local myself_id = get_master_player_id_method:call(singletons.player_manager);
|
||||||
|
|
||||||
if myself_id == nil then
|
if myself_id == nil then
|
||||||
customization_menu.status = "No myself player id";
|
error_handler.report("players.update_player_list_", "Failed to access Data: myself_id");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -605,28 +560,29 @@ function this.update_player_list_(hunter_info_field_)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- other players
|
-- other players
|
||||||
local player_info_list = hunter_info_field_:get_data(singletons.lobby_manager);
|
local player_info_array = hunter_info_field_:get_data(singletons.lobby_manager);
|
||||||
if player_info_list == nil then
|
if player_info_array == nil then
|
||||||
customization_menu.status = "No player info list";
|
error_handler.report("players.update_player_list_", "Failed to access Data: player_info_array");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local count = get_count_method:call(player_info_list);
|
local count = get_count_method:call(player_info_array);
|
||||||
if count == nil then
|
if count == nil then
|
||||||
customization_menu.status = "No player info list count";
|
error_handler.report("players.update_player_list_", "Failed to access Data: player_info_array -> count");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
for i = 0, count - 1 do
|
for i = 0, count - 1 do
|
||||||
local player_info = get_item_method:call(player_info_list, i);
|
local player_info = get_item_method:call(player_info_array, i);
|
||||||
if player_info == nil then
|
if player_info == nil then
|
||||||
goto continue
|
error_handler.report("players.update_player_list_", "Failed to access Data: player_info No. " .. tostring(i));
|
||||||
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
local id = member_index_field:get_data(player_info);
|
local id = member_index_field:get_data(player_info);
|
||||||
|
|
||||||
if id == nil then
|
if id == nil then
|
||||||
goto continue
|
error_handler.report("players.update_player_list_", string.format("Failed to access Data: player_info No. %d -> id", i));
|
||||||
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
local hunter_rank = hunter_rank_field:get_data(player_info) or 0;
|
local hunter_rank = hunter_rank_field:get_data(player_info) or 0;
|
||||||
@@ -634,13 +590,13 @@ function this.update_player_list_(hunter_info_field_)
|
|||||||
|
|
||||||
local name = name_field:get_data(player_info);
|
local name = name_field:get_data(player_info);
|
||||||
if name == nil then
|
if name == nil then
|
||||||
goto continue
|
error_handler.report("players.update_player_list_", string.format("Failed to access Data: player_info No. %d -> name", i));
|
||||||
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
local player = this.list[id];
|
local player = this.list[id];
|
||||||
|
|
||||||
if player == nil then
|
if player == nil then
|
||||||
|
|
||||||
if name == this.myself.name then
|
if name == this.myself.name then
|
||||||
player = this.new(id, name, master_rank, hunter_rank, this.types.myself);
|
player = this.new(id, name, master_rank, hunter_rank, this.types.myself);
|
||||||
this.myself = player;
|
this.myself = player;
|
||||||
@@ -692,7 +648,7 @@ function this.draw(player, position_on_screen, opacity_scale, top_damage, top_dp
|
|||||||
damage_UI_entity.draw(player, position_on_screen, opacity_scale, top_damage, top_dps);
|
damage_UI_entity.draw(player, position_on_screen, opacity_scale, top_damage, top_dps);
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
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");
|
||||||
@@ -702,8 +658,14 @@ function this.init_module()
|
|||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
non_players = require("MHR_Overlay.Damage_Meter.non_players");
|
non_players = require("MHR_Overlay.Damage_Meter.non_players");
|
||||||
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
this.init();
|
this.init();
|
||||||
|
time.new_timer(this.update_display_list, 0.5);
|
||||||
|
time.new_timer(this.update_myself_position, 1);
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ local customization_menu;
|
|||||||
local singletons;
|
local singletons;
|
||||||
local config;
|
local config;
|
||||||
local utils;
|
local utils;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -80,15 +81,17 @@ local get_pos_method = environment_creature_base_type_def:get_method("get_Pos");
|
|||||||
function this.init(creature, REcreature)
|
function this.init(creature, REcreature)
|
||||||
local creature_type = creature_type_field:get_data(REcreature);
|
local creature_type = creature_type_field:get_data(REcreature);
|
||||||
if creature_type == nil then
|
if creature_type == nil then
|
||||||
customization_menu.status = "No env creature type";
|
error_handler.report("env_creature.init", "Failed to access Data: creature_type");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local creature_name = get_env_creature_name_message_method:call(singletons.message_manager,
|
local creature_name = get_env_creature_name_message_method:call(singletons.message_manager, creature_type);
|
||||||
creature_type);
|
if creature_name == nil then
|
||||||
if creature_name ~= nil then
|
error_handler.report("env_creature.init", "Failed to access Data: creature_name");
|
||||||
creature.name = creature_name;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
creature.name = creature_name;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_UI(creature)
|
function this.init_UI(creature)
|
||||||
@@ -110,9 +113,11 @@ function this.update_position(REcreature, creature)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local position = get_pos_method:call(REcreature);
|
local position = get_pos_method:call(REcreature);
|
||||||
if position ~= nil then
|
if position == nil then
|
||||||
creature.position = position;
|
error_handler.report("env_creature.update_position", "Failed to access Data: position");
|
||||||
end
|
end
|
||||||
|
|
||||||
|
creature.position = position;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.update(REcreature, creature)
|
function this.update(REcreature, creature)
|
||||||
@@ -125,9 +130,11 @@ function this.update(REcreature, creature)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local is_inactive = creature_is_inactive_field:get_data(REcreature);
|
local is_inactive = creature_is_inactive_field:get_data(REcreature);
|
||||||
if is_inactive ~= nil then
|
if is_inactive == nil then
|
||||||
creature.is_inactive = is_inactive;
|
error_handler.report("env_creature.update", "Failed to access Data: is_inactive");
|
||||||
end
|
end
|
||||||
|
|
||||||
|
creature.is_inactive = is_inactive;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.draw(creature, position_on_screen, opacity_scale)
|
function this.draw(creature, position_on_screen, opacity_scale)
|
||||||
@@ -143,7 +150,7 @@ function this.init_list()
|
|||||||
this.list = {};
|
this.list = {};
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
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");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
@@ -154,6 +161,10 @@ function this.init_module()
|
|||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
--ailments = require("MHR_Overlay.Monsters.ailments");
|
--ailments = require("MHR_Overlay.Monsters.ailments");
|
||||||
--ailment_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_UI_entity");
|
--ailment_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_UI_entity");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ local this = {};
|
|||||||
local env_creature;
|
local env_creature;
|
||||||
local config;
|
local config;
|
||||||
local time;
|
local time;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -45,11 +46,14 @@ function this.update(REcreature)
|
|||||||
env_creature.update_position(REcreature, creature);
|
env_creature.update_position(REcreature, creature);
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
env_creature = require("MHR_Overlay.Endemic_Life.env_creature");
|
env_creature = require("MHR_Overlay.Endemic_Life.env_creature");
|
||||||
time = require("MHR_Overlay.Game_Handler.time");
|
time = require("MHR_Overlay.Game_Handler.time");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
sdk.hook(update_method, function(args)
|
sdk.hook(update_method, function(args)
|
||||||
pcall(this.update, sdk.to_managed_object(args[2]));
|
pcall(this.update, sdk.to_managed_object(args[2]));
|
||||||
end, function(retval)
|
end, function(retval)
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ local small_monster;
|
|||||||
local large_monster;
|
local large_monster;
|
||||||
local damage_meter_UI;
|
local damage_meter_UI;
|
||||||
local time;
|
local time;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -333,16 +334,15 @@ this.keys = {
|
|||||||
--[254] = "Clear"
|
--[254] = "Clear"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
function this.update()
|
function this.update()
|
||||||
if singletons.game_keyboard == nil then
|
if singletons.game_keyboard == nil then
|
||||||
customization_menu.status = "No game keyboard";
|
error_handler.report("keyboard.update", "Failed to access Data: game_keyboard");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local hard_keyboard = hard_keyboard_field:get_data(singletons.game_keyboard);
|
local hard_keyboard = hard_keyboard_field:get_data(singletons.game_keyboard);
|
||||||
if hard_keyboard == nil then
|
if hard_keyboard == nil then
|
||||||
customization_menu.status = "No hard keyboard";
|
error_handler.report("keyboard.update", "Failed to access Data: hard_keyboard");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -350,10 +350,8 @@ function this.update()
|
|||||||
|
|
||||||
local new_hotkey_registered = this.register_hotkey(hard_keyboard);
|
local new_hotkey_registered = this.register_hotkey(hard_keyboard);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if new_hotkey_registered then
|
if new_hotkey_registered then
|
||||||
config.save();
|
config.save_current();
|
||||||
else
|
else
|
||||||
this.check_hotkeys(hard_keyboard);
|
this.check_hotkeys(hard_keyboard);
|
||||||
end
|
end
|
||||||
@@ -491,10 +489,15 @@ function this.check_hotkeys(hard_keyboard)
|
|||||||
local cached_config = config.current_config.global_settings.hotkeys_with_modifiers;
|
local cached_config = config.current_config.global_settings.hotkeys_with_modifiers;
|
||||||
|
|
||||||
if not (cached_config.all_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
if not (cached_config.all_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
||||||
and not (cached_config.all_UI.shift and not this.hotkey_modifiers_down.shift)
|
and not (cached_config.all_UI.shift and not this.hotkey_modifiers_down.shift)
|
||||||
and not (cached_config.all_UI.alt and not this.hotkey_modifiers_down.alt) then
|
and not (cached_config.all_UI.alt and not this.hotkey_modifiers_down.alt) then
|
||||||
if get_release_method:call(hard_keyboard, math.tointeger(cached_config.all_UI.key)) then
|
|
||||||
|
|
||||||
|
local all_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.all_UI.key));
|
||||||
|
|
||||||
|
if all_UI_key_release == nil then
|
||||||
|
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: all_UI_key_release");
|
||||||
|
|
||||||
|
elseif all_UI_key_release then
|
||||||
local is_any_enabled = config.current_config.time_UI.enabled
|
local is_any_enabled = config.current_config.time_UI.enabled
|
||||||
or config.current_config.small_monster_UI.enabled
|
or config.current_config.small_monster_UI.enabled
|
||||||
or config.current_config.large_monster_UI.dynamic.enabled
|
or config.current_config.large_monster_UI.dynamic.enabled
|
||||||
@@ -512,17 +515,29 @@ function this.check_hotkeys(hard_keyboard)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if not (cached_config.small_monster_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
if not (cached_config.small_monster_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
||||||
and not (cached_config.small_monster_UI.shift and not this.hotkey_modifiers_down.shift)
|
and not (cached_config.small_monster_UI.shift and not this.hotkey_modifiers_down.shift)
|
||||||
and not (cached_config.small_monster_UI.alt and not this.hotkey_modifiers_down.alt) then
|
and not (cached_config.small_monster_UI.alt and not this.hotkey_modifiers_down.alt) then
|
||||||
if get_release_method:call(hard_keyboard, math.tointeger(cached_config.small_monster_UI.key)) then
|
|
||||||
|
local small_monster_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.small_monster_UI.key));
|
||||||
|
|
||||||
|
if small_monster_UI_key_release == nil then
|
||||||
|
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: small_monster_UI_key_release");
|
||||||
|
|
||||||
|
elseif small_monster_UI_key_release then
|
||||||
config.current_config.small_monster_UI.enabled = not config.current_config.small_monster_UI.enabled;
|
config.current_config.small_monster_UI.enabled = not config.current_config.small_monster_UI.enabled;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not (cached_config.large_monster_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
if not (cached_config.large_monster_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
||||||
and not (cached_config.large_monster_UI.shift and not this.hotkey_modifiers_down.shift)
|
and not (cached_config.large_monster_UI.shift and not this.hotkey_modifiers_down.shift)
|
||||||
and not (cached_config.large_monster_UI.alt and not this.hotkey_modifiers_down.alt) then
|
and not (cached_config.large_monster_UI.alt and not this.hotkey_modifiers_down.alt) then
|
||||||
if get_release_method:call(hard_keyboard, math.tointeger(cached_config.large_monster_UI.key)) then
|
|
||||||
|
local large_monster_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.large_monster_UI.key));
|
||||||
|
|
||||||
|
if large_monster_UI_key_release == nil then
|
||||||
|
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: large_monster_UI_key_release");
|
||||||
|
|
||||||
|
elseif large_monster_UI_key_release then
|
||||||
local is_any_enabled = config.current_config.large_monster_UI.dynamic.enabled
|
local is_any_enabled = config.current_config.large_monster_UI.dynamic.enabled
|
||||||
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;
|
||||||
@@ -534,53 +549,85 @@ function this.check_hotkeys(hard_keyboard)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if not (cached_config.large_monster_dynamic_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
if not (cached_config.large_monster_dynamic_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
||||||
and not (cached_config.large_monster_dynamic_UI.shift and not this.hotkey_modifiers_down.shift)
|
and not (cached_config.large_monster_dynamic_UI.shift and not this.hotkey_modifiers_down.shift)
|
||||||
and not (cached_config.large_monster_dynamic_UI.alt and not this.hotkey_modifiers_down.alt) then
|
and not (cached_config.large_monster_dynamic_UI.alt and not this.hotkey_modifiers_down.alt) then
|
||||||
if get_release_method:call(hard_keyboard,
|
|
||||||
math.tointeger(cached_config.large_monster_dynamic_UI.key)) then
|
local large_monster_dynamic_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.large_monster_dynamic_UI.key));
|
||||||
|
|
||||||
|
if large_monster_dynamic_UI_key_release == nil then
|
||||||
|
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: large_monster_dynamic_UI_key_release");
|
||||||
|
|
||||||
|
elseif large_monster_dynamic_UI_key_release then
|
||||||
config.current_config.large_monster_UI.dynamic.enabled = not config.current_config.large_monster_UI.dynamic.enabled;
|
config.current_config.large_monster_UI.dynamic.enabled = not config.current_config.large_monster_UI.dynamic.enabled;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not (cached_config.large_monster_static_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
if not (cached_config.large_monster_static_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
||||||
and not (cached_config.large_monster_static_UI.shift and not this.hotkey_modifiers_down.shift)
|
and not (cached_config.large_monster_static_UI.shift and not this.hotkey_modifiers_down.shift)
|
||||||
and not (cached_config.large_monster_static_UI.alt and not this.hotkey_modifiers_down.alt) then
|
and not (cached_config.large_monster_static_UI.alt and not this.hotkey_modifiers_down.alt) then
|
||||||
if get_release_method:call(hard_keyboard,
|
|
||||||
math.tointeger(cached_config.large_monster_static_UI.key)) then
|
local large_monster_static_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.large_monster_static_UI.key));
|
||||||
|
|
||||||
|
if large_monster_static_UI_key_release == nil then
|
||||||
|
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: large_monster_static_UI_key_release");
|
||||||
|
|
||||||
|
elseif large_monster_static_UI_key_release then
|
||||||
config.current_config.large_monster_UI.static.enabled = not config.current_config.large_monster_UI.static.enabled;
|
config.current_config.large_monster_UI.static.enabled = not config.current_config.large_monster_UI.static.enabled;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not (cached_config.large_monster_highlighted_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
if not (cached_config.large_monster_highlighted_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
||||||
and not (cached_config.large_monster_highlighted_UI.shift and not this.hotkey_modifiers_down.shift)
|
and not (cached_config.large_monster_highlighted_UI.shift and not this.hotkey_modifiers_down.shift)
|
||||||
and not (cached_config.large_monster_highlighted_UI.alt and not this.hotkey_modifiers_down.alt) then
|
and not (cached_config.large_monster_highlighted_UI.alt and not this.hotkey_modifiers_down.alt) then
|
||||||
if get_release_method:call(hard_keyboard,
|
|
||||||
math.tointeger(cached_config.large_monster_highlighted_UI.key)) then
|
local large_monster_highlighted_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.large_monster_highlighted_UI.key));
|
||||||
config.current_config.large_monster_UI.highlighted.enabled = not
|
|
||||||
config.current_config.large_monster_UI.highlighted.enabled;
|
if large_monster_highlighted_UI_key_release == nil then
|
||||||
|
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: large_monster_highlighted_UI_key_release");
|
||||||
|
|
||||||
|
elseif large_monster_highlighted_UI_key_release then
|
||||||
|
config.current_config.large_monster_UI.highlighted.enabled = not config.current_config.large_monster_UI.highlighted.enabled;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not (cached_config.time_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
if not (cached_config.time_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
||||||
and not (cached_config.time_UI.shift and not this.hotkey_modifiers_down.shift)
|
and not (cached_config.time_UI.shift and not this.hotkey_modifiers_down.shift)
|
||||||
and not (cached_config.time_UI.alt and not this.hotkey_modifiers_down.alt) then
|
and not (cached_config.time_UI.alt and not this.hotkey_modifiers_down.alt) then
|
||||||
if get_release_method:call(hard_keyboard, math.tointeger(cached_config.time_UI.key)) then
|
|
||||||
|
local time_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.time_UI.key));
|
||||||
|
|
||||||
|
if time_UI_key_release == nil then
|
||||||
|
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: time_UI_key_release");
|
||||||
|
|
||||||
|
elseif time_UI_key_release then
|
||||||
config.current_config.time_UI.enabled = not config.current_config.time_UI.enabled;
|
config.current_config.time_UI.enabled = not config.current_config.time_UI.enabled;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not (cached_config.damage_meter_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
if not (cached_config.damage_meter_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
||||||
and not (cached_config.damage_meter_UI.shift and not this.hotkey_modifiers_down.shift)
|
and not (cached_config.damage_meter_UI.shift and not this.hotkey_modifiers_down.shift)
|
||||||
and not (cached_config.damage_meter_UI.alt and not this.hotkey_modifiers_down.alt) then
|
and not (cached_config.damage_meter_UI.alt and not this.hotkey_modifiers_down.alt) then
|
||||||
if get_release_method:call(hard_keyboard, math.tointeger(cached_config.damage_meter_UI.key)) then
|
|
||||||
|
local damage_meter_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.damage_meter_UI.key));
|
||||||
|
|
||||||
|
if damage_meter_UI_key_release == nil then
|
||||||
|
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: damage_meter_UI_key_release");
|
||||||
|
|
||||||
|
elseif damage_meter_UI_key_release then
|
||||||
config.current_config.damage_meter_UI.enabled = not config.current_config.damage_meter_UI.enabled;
|
config.current_config.damage_meter_UI.enabled = not config.current_config.damage_meter_UI.enabled;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not (cached_config.endemic_life_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
if not (cached_config.endemic_life_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
|
||||||
and not (cached_config.endemic_life_UI.shift and not this.hotkey_modifiers_down.shift)
|
and not (cached_config.endemic_life_UI.shift and not this.hotkey_modifiers_down.shift)
|
||||||
and not (cached_config.endemic_life_UI.alt and not this.hotkey_modifiers_down.alt) then
|
and not (cached_config.endemic_life_UI.alt and not this.hotkey_modifiers_down.alt) then
|
||||||
if get_release_method:call(hard_keyboard, math.tointeger(cached_config.endemic_life_UI.key)) then
|
|
||||||
|
local endemic_life_UI_key_release = get_release_method:call(hard_keyboard, math.tointeger(cached_config.endemic_life_UI.key));
|
||||||
|
|
||||||
|
if endemic_life_UI_key_release == nil then
|
||||||
|
error_handler.report("keyboard.check_hotkeys", "Failed to access Data: endemic_life_UI_key_release");
|
||||||
|
|
||||||
|
elseif endemic_life_UI_key_release then
|
||||||
config.current_config.endemic_life_UI.enabled = not config.current_config.endemic_life_UI.enabled;
|
config.current_config.endemic_life_UI.enabled = not config.current_config.endemic_life_UI.enabled;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -604,7 +651,7 @@ function this.get_hotkey_name(hotkey)
|
|||||||
return hotkey_name .. tostring(this.keys[hotkey.key]);
|
return hotkey_name .. tostring(this.keys[hotkey.key]);
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
config = require "MHR_Overlay.Misc.config"
|
config = require "MHR_Overlay.Misc.config"
|
||||||
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");
|
||||||
@@ -613,6 +660,10 @@ function this.init_module()
|
|||||||
large_monster = require("MHR_Overlay.Monsters.large_monster");
|
large_monster = require("MHR_Overlay.Monsters.large_monster");
|
||||||
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");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@@ -9,6 +9,7 @@ local damage_meter_UI;
|
|||||||
local time;
|
local time;
|
||||||
local env_creature;
|
local env_creature;
|
||||||
local non_players;
|
local non_players;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -153,16 +154,20 @@ end
|
|||||||
|
|
||||||
function this.get_cart_count()
|
function this.get_cart_count()
|
||||||
local death_num = get_death_num_method:call(singletons.quest_manager);
|
local death_num = get_death_num_method:call(singletons.quest_manager);
|
||||||
if death_num ~= nil then
|
if death_num == nil then
|
||||||
this.cart_count = death_num;
|
error_handler.report("quest_status.get_cart_count", "Failed to access Data: death_num");
|
||||||
end
|
end
|
||||||
|
|
||||||
|
this.cart_count = death_num;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.get_max_cart_count()
|
function this.get_max_cart_count()
|
||||||
local quest_life = get_quest_life_method:call(singletons.quest_manager);
|
local quest_life = get_quest_life_method:call(singletons.quest_manager);
|
||||||
if quest_life ~= nil then
|
if quest_life == nil then
|
||||||
this.max_cart_count = quest_life;
|
error_handler.report("quest_status.get_max_cart_count", "Failed to access Data: quest_life");
|
||||||
end
|
end
|
||||||
|
|
||||||
|
this.max_cart_count = quest_life;
|
||||||
end
|
end
|
||||||
|
|
||||||
--type 2 = quest start
|
--type 2 = quest start
|
||||||
@@ -170,6 +175,7 @@ end
|
|||||||
--type 5 = end screen
|
--type 5 = end screen
|
||||||
function this.on_demo_request_activation(request_data_base)
|
function this.on_demo_request_activation(request_data_base)
|
||||||
if request_data_base == nil then
|
if request_data_base == nil then
|
||||||
|
error_handler.report("quest_status.on_demo_request_activation", "Missing Parameter: request_data_base");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -179,6 +185,7 @@ function this.on_demo_request_activation(request_data_base)
|
|||||||
|
|
||||||
local request_data_type = request_data_base:call("get_Type");
|
local request_data_type = request_data_base:call("get_Type");
|
||||||
if request_data_type == nil then
|
if request_data_type == nil then
|
||||||
|
error_handler.report("quest_status.on_demo_request_activation", "Failed to access Data: request_data_type");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -278,6 +285,7 @@ end
|
|||||||
|
|
||||||
function this.on_village_fast_travel(area)
|
function this.on_village_fast_travel(area)
|
||||||
if area == nil then
|
if area == nil then
|
||||||
|
error_handler.report("quest_status.on_village_fast_travel", "Missing Parameter: area");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -289,6 +297,11 @@ function this.on_village_fast_travel(area)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function this.on_changed_game_status(new_quest_status)
|
function this.on_changed_game_status(new_quest_status)
|
||||||
|
if new_quest_status == nil then
|
||||||
|
error_handler.report("quest_status.on_changed_game_status", "Missing Parameter: new_quest_status");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
this.index = new_quest_status;
|
this.index = new_quest_status;
|
||||||
|
|
||||||
if this.index == 0 then
|
if this.index == 0 then
|
||||||
@@ -304,12 +317,13 @@ end
|
|||||||
|
|
||||||
function this.init()
|
function this.init()
|
||||||
if singletons.quest_manager == nil then
|
if singletons.quest_manager == nil then
|
||||||
|
error_handler.report("quest_status.init", "Failed to access Data: quest_manager");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local new_quest_status = get_status_method:call(singletons.game_manager);
|
local new_quest_status = get_status_method:call(singletons.game_manager);
|
||||||
if new_quest_status == nil then
|
if new_quest_status == nil then
|
||||||
customization_menu.status = "No quest status";
|
error_handler.report("quest_status.init", "Failed to access Data: new_quest_status");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -330,11 +344,13 @@ end
|
|||||||
|
|
||||||
function this.update_is_online()
|
function this.update_is_online()
|
||||||
if singletons.lobby_manager == nil then
|
if singletons.lobby_manager == nil then
|
||||||
|
error_handler.report("quest_status.update_is_online", "Failed to access Data: lobby_manager");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local is_quest_online = is_quest_online_method:call(singletons.lobby_manager);
|
local is_quest_online = is_quest_online_method:call(singletons.lobby_manager);
|
||||||
if is_quest_online == nil then
|
if is_quest_online == nil then
|
||||||
|
error_handler.report("quest_status.update_is_online", "Failed to access Data: is_quest_online");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -343,11 +359,13 @@ end
|
|||||||
|
|
||||||
--[[function quest_status.update_is_quest_host()
|
--[[function quest_status.update_is_quest_host()
|
||||||
if singletons.lobby_manager == nil then
|
if singletons.lobby_manager == nil then
|
||||||
|
error_handler.report("quest_status.update_is_quest_host", "Failed to access Data: lobby_manager");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local is_quest_host = is_quest_host_method:call(singletons.lobby_manager, true);
|
local is_quest_host = is_quest_host_method:call(singletons.lobby_manager, true);
|
||||||
if is_quest_host == nil then
|
if is_quest_host == nil then
|
||||||
|
error_handler.report("quest_status.update_is_quest_host", "Failed to access Data: is_quest_host");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -356,21 +374,22 @@ end--]]
|
|||||||
|
|
||||||
function this.update_is_training_area()
|
function this.update_is_training_area()
|
||||||
if singletons.village_area_manager == nil then
|
if singletons.village_area_manager == nil then
|
||||||
customization_menu.status = "No village area manager";
|
error_handler.report("quest_status.update_is_training_area", "Failed to access Data: village_area_manager");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local _is_training_area = check_current_area_training_area_method:call(singletons.village_area_manager);
|
local is_training_area = check_current_area_training_area_method:call(singletons.village_area_manager);
|
||||||
if _is_training_area == nil then
|
if is_training_area == nil then
|
||||||
|
error_handler.report("quest_status.update_is_training_area", "Failed to access Data: is_training_area");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
if _is_training_area then
|
if is_training_area then
|
||||||
this.set_flow_state(this.flow_states.IN_TRAINING_AREA);
|
this.set_flow_state(this.flow_states.IN_TRAINING_AREA);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
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");
|
||||||
players = require("MHR_Overlay.Damage_Meter.players");
|
players = require("MHR_Overlay.Damage_Meter.players");
|
||||||
@@ -380,9 +399,14 @@ function this.init_module()
|
|||||||
time = require("MHR_Overlay.Game_Handler.time");
|
time = require("MHR_Overlay.Game_Handler.time");
|
||||||
env_creature = require("MHR_Overlay.Endemic_Life.env_creature");
|
env_creature = require("MHR_Overlay.Endemic_Life.env_creature");
|
||||||
non_players = require("MHR_Overlay.Damage_Meter.non_players");
|
non_players = require("MHR_Overlay.Damage_Meter.non_players");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
this.init();
|
this.init();
|
||||||
|
|
||||||
|
time.new_timer(this.update_is_online, 1);
|
||||||
|
|
||||||
sdk.hook(on_changed_game_status_method, function(args)
|
sdk.hook(on_changed_game_status_method, function(args)
|
||||||
this.on_changed_game_status(sdk.to_int64(args[3]));
|
this.on_changed_game_status(sdk.to_int64(args[3]));
|
||||||
end, function(retval) return retval; end);
|
end, function(retval) return retval; end);
|
||||||
|
|||||||
@@ -2,6 +2,9 @@ local this = {};
|
|||||||
|
|
||||||
local config;
|
local config;
|
||||||
local singletons;
|
local singletons;
|
||||||
|
local utils;
|
||||||
|
local time;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -70,26 +73,26 @@ function this.get_game_window_size()
|
|||||||
scene_view = sdk.call_native_func(singletons.scene_manager, sdk.find_type_definition("via.SceneManager") , "get_MainView");
|
scene_view = sdk.call_native_func(singletons.scene_manager, sdk.find_type_definition("via.SceneManager") , "get_MainView");
|
||||||
|
|
||||||
if scene_view == nil then
|
if scene_view == nil then
|
||||||
--log.error("[MHR_Overlay.lua] No scene view");
|
error_handler.report("screen.get_game_window_size", "Failed to access Data: scene_view");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local size = get_size_method:call(scene_view);
|
local size = get_size_method:call(scene_view);
|
||||||
if size == nil then
|
if size == nil then
|
||||||
--log.error("[MHR_Overlay.lua] No scene view size");
|
error_handler.report("screen.get_game_window_size", "Failed to access Data: size");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local screen_width = width_field:get_data(size);
|
local screen_width = width_field:get_data(size);
|
||||||
if screen_width == nil then
|
if screen_width == nil then
|
||||||
--log.error("[MHR_Overlay.lua] No screen width");
|
error_handler.report("screen.get_game_window_size", "Failed to access Data: screen_width");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local screen_height = height_field:get_data(size);
|
local screen_height = height_field:get_data(size);
|
||||||
if screen_height == nil then
|
if screen_height == nil then
|
||||||
--log.error("[MHR_Overlay.lua] No screen height");
|
error_handler.report("screen.get_game_window_size", "Failed to access Data: screen_height");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -131,9 +134,16 @@ function this.calculate_absolute_coordinates(position)
|
|||||||
return { x = _position.x, y = _position.y };
|
return { x = _position.x, y = _position.y };
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
singletons = require("MHR_Overlay.Game_Handler.singletons");
|
singletons = require("MHR_Overlay.Game_Handler.singletons");
|
||||||
|
time = require("MHR_Overlay.Game_Handler.time");
|
||||||
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
|
time.new_timer(this.update_window_size, 1);
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
local this = {};
|
local this = {};
|
||||||
|
|
||||||
|
local time;
|
||||||
|
local utils;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
local pairs = pairs;
|
local pairs = pairs;
|
||||||
@@ -61,39 +65,27 @@ function this.init()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function this.init_message_manager()
|
function this.init_message_manager()
|
||||||
if this.message_manager ~= nil then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
||||||
--log.error("[MHR Overlay] No message manager");
|
error_handler.report("singletons.init_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.init_enemy_manager()
|
||||||
if this.enemy_manager ~= nil then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
||||||
--log.error("[MHR Overlay] No enemy manager");
|
error_handler.report("singletons.init_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.init_lobby_manager()
|
||||||
if this.lobby_manager ~= nil then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
||||||
--log.error("[MHR Overlay] No lobby manager");
|
error_handler.report("singletons.init_lobby_manager", "Failed to access Data: lobby_manager");
|
||||||
return false;
|
return false;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -101,13 +93,9 @@ function this.init_lobby_manager()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function this.init_progress_manager()
|
function this.init_progress_manager()
|
||||||
if this.progress_manager ~= nil then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
||||||
--log.error("[MHR Overlay] No progress manager");
|
error_handler.report("singletons.init_lobby_manager", "Failed to access Data: progress_manager");
|
||||||
return false;
|
return false;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -115,124 +103,95 @@ function this.init_progress_manager()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function this.init_quest_manager()
|
function this.init_quest_manager()
|
||||||
if this.quest_manager ~= nil then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
||||||
--log.error("[MHR Overlay] No quest manager");
|
error_handler.report("singletons.init_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.init_player_manager()
|
||||||
if this.player_manager ~= nil then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
||||||
--log.error("[MHR Overlay] No player manager");
|
error_handler.report("singletons.init_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.init_village_area_manager()
|
||||||
if this.village_area_manager ~= nil then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
||||||
--log.error("[MHR Overlay] No village area manager");
|
error_handler.report("singletons.init_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.init_gui_manager()
|
||||||
if this.gui_manager ~= nil then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
||||||
--log.error("[MHR Overlay] No gui manager");
|
error_handler.report("singletons.init_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.init_game_keyboard()
|
||||||
if this.game_keyboard ~= nil then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
||||||
--log.error("[MHR Overlay] No game keyboard");
|
error_handler.report("singletons.init_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.init_scene_manager()
|
||||||
if this.scene_manager ~= nil then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
||||||
--log.error("[MHR Overlay] No enemy manager");
|
error_handler.report("singletons.init_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.init_game_manager()
|
||||||
if this.game_manager ~= nil then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
||||||
--log.error("[MHR Overlay] No enemy manager");
|
error_handler.report("singletons.init_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.init_servant_manager()
|
||||||
if this.servant_manager ~= nil then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
||||||
--log.error("[MHR Overlay] No enemy manager");
|
error_handler.report("singletons.init_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.init_otomo_manager()
|
||||||
if this.otomo_manager ~= nil then
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
||||||
--log.error("[MHR Overlay] No enemy manager");
|
error_handler.report("singletons.init_otomo_manager", "Failed to access Data: otomo_manager");
|
||||||
end
|
end
|
||||||
|
|
||||||
return this.otomo_manager;
|
return this.otomo_manager;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function this.init_dependencies()
|
||||||
|
time = require("MHR_Overlay.Game_Handler.time");
|
||||||
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_module()
|
||||||
this.init();
|
this.init();
|
||||||
|
time.new_timer(this.init, 1);
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ local players;
|
|||||||
local non_players;
|
local non_players;
|
||||||
local config;
|
local config;
|
||||||
local small_monster;
|
local small_monster;
|
||||||
|
local utils;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -49,51 +51,68 @@ this.elapsed_minutes = 0;
|
|||||||
this.elapsed_seconds = 0;
|
this.elapsed_seconds = 0;
|
||||||
|
|
||||||
this.total_elapsed_script_seconds = 0;
|
this.total_elapsed_script_seconds = 0;
|
||||||
this.last_elapsed_script_seconds = 0;
|
|
||||||
|
this.list = {};
|
||||||
|
|
||||||
|
function this.new_timer(callback, cooldown_seconds, start_offset_seconds)
|
||||||
|
start_offset_seconds = start_offset_seconds or utils.math.random();
|
||||||
|
|
||||||
|
if callback == nil or cooldown_seconds == nil then
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
local timer = {};
|
||||||
|
timer.callback = callback;
|
||||||
|
timer.cooldown = cooldown_seconds;
|
||||||
|
|
||||||
|
timer.last_trigger_time = os.clock() + start_offset_seconds;
|
||||||
|
|
||||||
|
table.insert(this.list, timer);
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.update_timers()
|
||||||
|
this.update_script_time();
|
||||||
|
|
||||||
|
for _, timer in ipairs(this.list) do
|
||||||
|
if this.total_elapsed_script_seconds - timer.last_trigger_time > timer.cooldown then
|
||||||
|
timer.last_trigger_time = this.total_elapsed_script_seconds;
|
||||||
|
timer.callback();
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function this.update_script_time()
|
function this.update_script_time()
|
||||||
this.total_elapsed_script_seconds = os.clock();
|
this.total_elapsed_script_seconds = os.clock();
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.tick()
|
function this.update_quest_time()
|
||||||
this.update_script_time();
|
|
||||||
|
|
||||||
if singletons.quest_manager == nil then
|
if singletons.quest_manager == nil then
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if quest_status.flow_state == quest_status.flow_states.IN_LOBBY
|
||||||
|
or quest_status.flow_state >= quest_status.flow_states.QUEST_END_TIMER then
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
local quest_time_elapsed_minutes = get_quest_elapsed_time_min_method:call(singletons.quest_manager);
|
local quest_time_elapsed_minutes = get_quest_elapsed_time_min_method:call(singletons.quest_manager);
|
||||||
if quest_time_elapsed_minutes == nil then
|
if quest_time_elapsed_minutes == nil then
|
||||||
customization_menu.status = "No quest time elapsed minutes";
|
error_handler.report("time.update_quest_time", "Failed to access Data: quest_time_elapsed_minutes");
|
||||||
else
|
else
|
||||||
this.elapsed_minutes = quest_time_elapsed_minutes;
|
this.elapsed_minutes = quest_time_elapsed_minutes;
|
||||||
end
|
end
|
||||||
|
|
||||||
local quest_time_total_elapsed_seconds = get_quest_elapsed_time_sec_method:call(singletons.quest_manager);
|
local quest_time_total_elapsed_seconds = get_quest_elapsed_time_sec_method:call(singletons.quest_manager);
|
||||||
if quest_time_total_elapsed_seconds == nil then
|
if quest_time_total_elapsed_seconds == nil then
|
||||||
customization_menu.status = "No quest time total elapsed seconds";
|
error_handler.report("time.update_quest_time", "Failed to access Data: quest_time_total_elapsed_seconds");
|
||||||
else
|
else
|
||||||
this.total_elapsed_seconds = quest_time_total_elapsed_seconds;
|
this.total_elapsed_seconds = quest_time_total_elapsed_seconds;
|
||||||
end
|
end
|
||||||
|
|
||||||
this.elapsed_seconds = quest_time_total_elapsed_seconds - quest_time_elapsed_minutes * 60;
|
this.elapsed_seconds = quest_time_total_elapsed_seconds - quest_time_elapsed_minutes * 60;
|
||||||
|
|
||||||
if this.total_elapsed_script_seconds - this.last_elapsed_script_seconds > 0.5 then
|
|
||||||
this.last_elapsed_script_seconds = this.total_elapsed_script_seconds;
|
|
||||||
|
|
||||||
local is_on_quest = quest_status.flow_state ~= quest_status.flow_states.IN_LOBBY and quest_status.flow_state ~= quest_status.flow_states.IN_TRAINING_AREA;
|
|
||||||
|
|
||||||
players.display_list = {};
|
|
||||||
players.update_player_list(is_on_quest);
|
|
||||||
non_players.update_servant_list();
|
|
||||||
non_players.update_otomo_list(is_on_quest, quest_status.is_online);
|
|
||||||
|
|
||||||
players.update_dps(false);
|
|
||||||
players.sort_players();
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
players = require("MHR_Overlay.Damage_Meter.players");
|
players = require("MHR_Overlay.Damage_Meter.players");
|
||||||
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");
|
||||||
@@ -101,6 +120,12 @@ function this.init_module()
|
|||||||
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
||||||
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
|
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
|
||||||
non_players = require("MHR_Overlay.Damage_Meter.non_players");
|
non_players = require("MHR_Overlay.Damage_Meter.non_players");
|
||||||
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
|
this.new_timer(this.update_quest_time, 1 / 60);
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +0,0 @@
|
|||||||
local this = {};
|
|
||||||
|
|
||||||
this.enabled = false;
|
|
||||||
|
|
||||||
return this;
|
|
||||||
92
reframework/autorun/MHR_Overlay/Misc/error_handler.lua
Normal file
92
reframework/autorun/MHR_Overlay/Misc/error_handler.lua
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
local this = {};
|
||||||
|
|
||||||
|
local time;
|
||||||
|
local utils;
|
||||||
|
local config;
|
||||||
|
|
||||||
|
local sdk = sdk;
|
||||||
|
local tostring = tostring;
|
||||||
|
local pairs = pairs;
|
||||||
|
local ipairs = ipairs;
|
||||||
|
local tonumber = tonumber;
|
||||||
|
local require = require;
|
||||||
|
local pcall = pcall;
|
||||||
|
local table = table;
|
||||||
|
local string = string;
|
||||||
|
local Vector3f = Vector3f;
|
||||||
|
local d2d = d2d;
|
||||||
|
local math = math;
|
||||||
|
local json = json;
|
||||||
|
local log = log;
|
||||||
|
local fs = fs;
|
||||||
|
local next = next;
|
||||||
|
local type = type;
|
||||||
|
local setmetatable = setmetatable;
|
||||||
|
local getmetatable = getmetatable;
|
||||||
|
local assert = assert;
|
||||||
|
local select = select;
|
||||||
|
local coroutine = coroutine;
|
||||||
|
local utf8 = utf8;
|
||||||
|
local re = re;
|
||||||
|
local imgui = imgui;
|
||||||
|
local draw = draw;
|
||||||
|
local Vector2f = Vector2f;
|
||||||
|
local reframework = reframework;
|
||||||
|
local os = os;
|
||||||
|
local ValueType = ValueType;
|
||||||
|
local package = package;
|
||||||
|
|
||||||
|
this.list = {};
|
||||||
|
this.is_empty = true;
|
||||||
|
|
||||||
|
this.history = {};
|
||||||
|
|
||||||
|
function this.report(error_key, error_message)
|
||||||
|
if error_key == nil or error_key == ""
|
||||||
|
or error_message == nil or error_message == "" then
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local error_time = time.total_elapsed_script_seconds;
|
||||||
|
|
||||||
|
if error_time == 0 then
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local error = {
|
||||||
|
key = error_key,
|
||||||
|
time = error_time,
|
||||||
|
message = error_message
|
||||||
|
};
|
||||||
|
|
||||||
|
this.list[error_key] = error;
|
||||||
|
this.is_empty = false;
|
||||||
|
|
||||||
|
this.add_to_history(error_key, error);
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.add_to_history(error_key, error)
|
||||||
|
this.clear_history();
|
||||||
|
|
||||||
|
table.insert(this.history, error);
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.clear_history()
|
||||||
|
local history_size = config.current_config.debug.history_size;
|
||||||
|
|
||||||
|
while #this.history >= history_size do
|
||||||
|
table.remove(this.history, 1);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_dependencies()
|
||||||
|
time = require("MHR_Overlay.Game_Handler.time");
|
||||||
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
|
config = require("MHR_Overlay.Misc.config");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
return this;
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
local this = {};
|
local this = {};
|
||||||
|
|
||||||
local utils;
|
local utils;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -36,11 +37,47 @@ local package = package;
|
|||||||
|
|
||||||
this.language_folder = "MHR Overlay\\languages\\";
|
this.language_folder = "MHR Overlay\\languages\\";
|
||||||
|
|
||||||
|
--[[
|
||||||
|
EXAMPLE:
|
||||||
|
unicode_glyph_ranges = {
|
||||||
|
0x0020, 0x00FF, -- Basic Latin + Latin Supplement
|
||||||
|
0x2000, 0x206F, -- General Punctuation
|
||||||
|
0x3000, 0x30FF, -- CJK Symbols and Punctuations, Hiragana, Katakana
|
||||||
|
0x31F0, 0x31FF, -- Katakana Phonetic Extensions
|
||||||
|
0x4e00, 0x9FAF, -- CJK Ideograms
|
||||||
|
0xFF00, 0xFFEF, -- Half-width characters
|
||||||
|
0
|
||||||
|
},
|
||||||
|
]]
|
||||||
|
|
||||||
|
--[[
|
||||||
|
EXAMPLE:
|
||||||
|
unicode_glyph_ranges = {
|
||||||
|
0x0020, 0x00FF, -- Basic Latin + Latin Supplement
|
||||||
|
0x0400, 0x052F, -- Cyrillic
|
||||||
|
0x2000, 0x206F, -- General Punctuation
|
||||||
|
0xFF00, 0xFFEF, -- Half-width characters
|
||||||
|
0
|
||||||
|
},
|
||||||
|
]]
|
||||||
|
|
||||||
|
--[[
|
||||||
|
EXAMPLE:
|
||||||
|
unicode_glyph_ranges = {
|
||||||
|
0x0020, 0x00FF, -- Basic Latin + Latin Supplement
|
||||||
|
0x1100, 0x11FF, -- Hangul Jamo
|
||||||
|
0x2000, 0x206F, -- General Punctuation
|
||||||
|
0x3130, 0x318F, -- Hangul Compatibility Jamo
|
||||||
|
0xAC00, 0xD7AF, -- Hangul Syllables
|
||||||
|
0xFF00, 0xFFEF, -- Half-width characters
|
||||||
|
0
|
||||||
|
},
|
||||||
|
]]
|
||||||
|
|
||||||
this.current_language = {};
|
this.current_language = {};
|
||||||
|
|
||||||
|
|
||||||
this.default_language = {
|
this.default_language = {
|
||||||
font_name = "NotoSansKR-Bold.otf",
|
font_name = "",
|
||||||
|
unicode_glyph_ranges = {0},
|
||||||
parts = {
|
parts = {
|
||||||
head = "Head",
|
head = "Head",
|
||||||
neck = "Neck",
|
neck = "Neck",
|
||||||
@@ -153,6 +190,50 @@ this.default_language = {
|
|||||||
shock_otomo_trap = "Shock Buddy Trap"
|
shock_otomo_trap = "Shock Buddy Trap"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
consumables = {
|
||||||
|
demondrug = "Demondrug",
|
||||||
|
mega_demondrug = "Mega Demondrug",
|
||||||
|
armorskin = "Armorskin",
|
||||||
|
mega_armorskin = "Mega Armorskin",
|
||||||
|
might_seed = "Might Seed",
|
||||||
|
adamant_seed = "Adamant Seed",
|
||||||
|
demon_powder = "Demon Powder",
|
||||||
|
hardshell_powder = "Hardshell Powder",
|
||||||
|
immunizer = "Immunizer",
|
||||||
|
dash_juice = "Dash Juice"
|
||||||
|
},
|
||||||
|
|
||||||
|
melody_effects = {
|
||||||
|
self_improvement = "Self-Improvement",
|
||||||
|
attack_up = "Attack Up",
|
||||||
|
defense_up = "Defense Up",
|
||||||
|
affinity_up = "Affinity Up",
|
||||||
|
elemental_attack_boost = "Elemental Attack Boost",
|
||||||
|
attack_and_defense_up = "Attack and Defense Up",
|
||||||
|
attack_and_affinity_up = "Attack and Affinity Up",
|
||||||
|
knockbacks_negated = "Knockbacks Negated",
|
||||||
|
earplugs_s = "Earplugs (S)",
|
||||||
|
earplugs_l = "Earplugs (L)",
|
||||||
|
tremors_negated = "Tremors Negated",
|
||||||
|
wind_pressure_negated = "Wind Pressure Negated",
|
||||||
|
stun_negated = "Stun Negated",
|
||||||
|
blight_negated = "Blight Negated",
|
||||||
|
divine_protection = "Divine Protection",
|
||||||
|
health_recovery_s = "Health Recovery (S)",
|
||||||
|
health_recovery_l = "Health Recovery (L)",
|
||||||
|
health_recovery_s_antidote = "Health Recovery (S) + Antidote",
|
||||||
|
health_regeneration = "Health Regeneration",
|
||||||
|
stamina_use_reduced = "Stamina Use Reduced",
|
||||||
|
stamina_recovery_up = "Stamina Recovery Up",
|
||||||
|
sharpness_loss_reduced = "Sharpness Loss Reduced",
|
||||||
|
environment_damage_negated = "Environment Damage Negated",
|
||||||
|
sonic_wave = "Sonic Wave",
|
||||||
|
sonic_barrier = "Sonic Barrier",
|
||||||
|
infernal_melody = "Infernal Melody",
|
||||||
|
sharpness_regeneration = "Sharpness Regeneration",
|
||||||
|
sharpness_extension = "Sharpness Extension"
|
||||||
|
},
|
||||||
|
|
||||||
UI = {
|
UI = {
|
||||||
HP = "HP:",
|
HP = "HP:",
|
||||||
stamina = "Stamina:",
|
stamina = "Stamina:",
|
||||||
@@ -166,6 +247,7 @@ this.default_language = {
|
|||||||
total_buildup = "Total Buildup",
|
total_buildup = "Total Buildup",
|
||||||
part_break = "Break",
|
part_break = "Break",
|
||||||
part_sever = "Sever",
|
part_sever = "Sever",
|
||||||
|
part_anomaly_core = "Anomaly Core",
|
||||||
|
|
||||||
otomo = "Buddy",
|
otomo = "Buddy",
|
||||||
servant = "Follower",
|
servant = "Follower",
|
||||||
@@ -283,6 +365,7 @@ this.default_language = {
|
|||||||
rage = "Rage",
|
rage = "Rage",
|
||||||
body_parts = "Body Parts",
|
body_parts = "Body Parts",
|
||||||
hide_undamaged_parts = "Hide Undamaged Parts",
|
hide_undamaged_parts = "Hide Undamaged Parts",
|
||||||
|
render_inactive_anomaly_cores = "Render Inactive Anomaly Cores",
|
||||||
part_name = "Part Name",
|
part_name = "Part Name",
|
||||||
flinch_count = "Flinch Count",
|
flinch_count = "Flinch Count",
|
||||||
break_count = "Break Count",
|
break_count = "Break Count",
|
||||||
@@ -339,14 +422,18 @@ this.default_language = {
|
|||||||
small_monsters = "Small Monsters",
|
small_monsters = "Small Monsters",
|
||||||
large_monsters = "Large Monsters",
|
large_monsters = "Large Monsters",
|
||||||
|
|
||||||
player_damage = "Player Damage",
|
players = "Players",
|
||||||
bomb_damage = "Bomb Damage",
|
bombs = "Bombs",
|
||||||
kunai_damage = "Kunai Damage",
|
kunai = "Kunai",
|
||||||
installation_damage = "Installation Damage",
|
installations = "Installations",
|
||||||
otomo_damage = "Buddy Damage",
|
otomos = "Buddies",
|
||||||
monster_damage = "Monster Damage",
|
monsters = "Monsters",
|
||||||
poison_damage = "Poison Damage",
|
wyvern_riding = "Wyvern Riding",
|
||||||
blast_damage = "Blast Damage",
|
poison = "Poison",
|
||||||
|
blast = "Blast",
|
||||||
|
endemic_life = "Endemic Life",
|
||||||
|
anomaly_cores = "Anomaly Cores",
|
||||||
|
other = "Other",
|
||||||
|
|
||||||
damage = "Damage",
|
damage = "Damage",
|
||||||
|
|
||||||
@@ -417,6 +504,8 @@ this.default_language = {
|
|||||||
break_health_percentage = "Break Health Percentage",
|
break_health_percentage = "Break Health Percentage",
|
||||||
loss_health = "Sever Health",
|
loss_health = "Sever Health",
|
||||||
loss_health_percentage = "Sever Health Percentage",
|
loss_health_percentage = "Sever Health Percentage",
|
||||||
|
anomaly_health = "Anomaly Core Health",
|
||||||
|
anomaly_health_percentage = "Anomaly Core Health Percentage",
|
||||||
|
|
||||||
monster_id = "Monster ID",
|
monster_id = "Monster ID",
|
||||||
|
|
||||||
@@ -426,10 +515,6 @@ this.default_language = {
|
|||||||
|
|
||||||
master_rank = "Master Rank",
|
master_rank = "Master Rank",
|
||||||
|
|
||||||
other_damage = "Other Damage",
|
|
||||||
wyvern_riding_damage = "Wyvern Riding Damage",
|
|
||||||
endemic_life_damage = "Endemic Life Damage",
|
|
||||||
|
|
||||||
hide_myself = "Hide Myself",
|
hide_myself = "Hide Myself",
|
||||||
hide_other_players = "Hide Other Players",
|
hide_other_players = "Hide Other Players",
|
||||||
hide_servants = "Hide Followers",
|
hide_servants = "Hide Followers",
|
||||||
@@ -446,14 +531,24 @@ this.default_language = {
|
|||||||
|
|
||||||
freeze_dps_on_quest_end = "Freeze DPS on Quest End",
|
freeze_dps_on_quest_end = "Freeze DPS on Quest End",
|
||||||
|
|
||||||
|
health_break_sever_anomaly_filter = "Health + Break + Sever + Anomaly Core",
|
||||||
|
health_break_sever_filter = "Health + Break + Sever",
|
||||||
|
health_break_anomaly_filter = "Health + Break + Anomaly Core",
|
||||||
|
health_sever_anomaly_filter = "Health + Sever + Anomaly Core",
|
||||||
|
break_sever_anomaly_filter = "Break + Sever + Anomaly Core",
|
||||||
|
|
||||||
health_break_severe_filter = "Health + Break + Severe",
|
|
||||||
health_break_filter = "Health + Break",
|
health_break_filter = "Health + Break",
|
||||||
health_severe_filter = "Health + Severe",
|
health_sever_filter = "Health + Sever",
|
||||||
|
health_anomaly_filter = "Health + Anomaly Core",
|
||||||
|
|
||||||
|
break_sever_filter = "Break + Sever",
|
||||||
|
break_anomaly_filter = "Break + Anomaly Core",
|
||||||
|
sever_anomaly_filter = "Sever + Anomaly Core",
|
||||||
|
|
||||||
health_filter = "Health",
|
health_filter = "Health",
|
||||||
break_severe_filter = "Break + Severe",
|
|
||||||
break_filter = "Break",
|
break_filter = "Break",
|
||||||
severe_filter = "Severe",
|
sever_filter = "Sever",
|
||||||
|
anomaly_filter = "Anomaly Core",
|
||||||
|
|
||||||
outline = "Outline",
|
outline = "Outline",
|
||||||
thickness = "Thickness",
|
thickness = "Thickness",
|
||||||
@@ -505,7 +600,21 @@ this.default_language = {
|
|||||||
|
|
||||||
filter_mode = "Filter Mode",
|
filter_mode = "Filter Mode",
|
||||||
current_state = "Current State",
|
current_state = "Current State",
|
||||||
default_state = "Default State"
|
default_state = "Default State",
|
||||||
|
|
||||||
|
fill_direction = "Fill Direction",
|
||||||
|
left_to_right = "Left to Right",
|
||||||
|
right_to_left = "Right to Left",
|
||||||
|
top_to_bottom = "Top to Bottom",
|
||||||
|
bottom_to_top = "Bottom to Top",
|
||||||
|
|
||||||
|
right_alignment_shift = "Right Alignment Shift",
|
||||||
|
|
||||||
|
debug = "Debug",
|
||||||
|
current_time = "Current Time",
|
||||||
|
everything_seems_to_be_ok = "Everything seems to be OK!",
|
||||||
|
history = "History",
|
||||||
|
history_size = "History Size"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -524,18 +633,17 @@ function this.load()
|
|||||||
|
|
||||||
local loaded_language = json.load_file(language_file_name);
|
local loaded_language = json.load_file(language_file_name);
|
||||||
if loaded_language ~= nil then
|
if loaded_language ~= nil then
|
||||||
|
log.info(string.format("[MHR Overlay] %s.json Loaded Successfully", language_file_name));
|
||||||
|
|
||||||
log.info("[MHR Overlay] " .. language_file_name .. ".json loaded successfully");
|
|
||||||
table.insert(this.language_names, language_name);
|
table.insert(this.language_names, language_name);
|
||||||
|
|
||||||
local merged_language = utils.table.merge(this.default_language, loaded_language);
|
local merged_language = utils.table.merge(this.default_language, loaded_language);
|
||||||
table.insert(this.languages, merged_language);
|
table.insert(this.languages, merged_language);
|
||||||
|
|
||||||
this.save(language_file_name, merged_language);
|
this.save(language_file_name, merged_language);
|
||||||
|
|
||||||
|
|
||||||
else
|
else
|
||||||
log.error("[MHR Overlay] Failed to load " .. language_file_name .. ".json");
|
error_handler.report("language.load", string.format("Failed to load %s.json", language_file_name));
|
||||||
|
log.error(string.format("[MHR Overlay] Failed to Load %s.json", language_file_name));
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -543,9 +651,10 @@ end
|
|||||||
function this.save(file_name, language_table)
|
function this.save(file_name, language_table)
|
||||||
local success = json.dump_file(file_name, language_table);
|
local success = json.dump_file(file_name, language_table);
|
||||||
if success then
|
if success then
|
||||||
log.info("[MHR Overlay] " .. file_name .. " saved successfully");
|
log.info(string.format("[MHR Overlay] %s Saved Successfully", file_name));
|
||||||
else
|
else
|
||||||
log.error("[MHR Overlay] Failed to save " .. file_name);
|
error_handler.report("language.save", string.format("[MHR Overlay] Failed to Save %s", file_name));
|
||||||
|
log.error(string.format("[MHR Overlay] Failed to Save %s", file_name));
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -557,9 +666,12 @@ function this.update(index)
|
|||||||
this.current_language = this.languages[index];
|
this.current_language = this.languages[index];
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
this.save_default();
|
this.save_default();
|
||||||
this.load();
|
this.load();
|
||||||
this.current_language = this.default_language;
|
this.current_language = this.default_language;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
local this = {};
|
local this = {};
|
||||||
|
|
||||||
local language;
|
local language;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -543,7 +544,7 @@ function this.init()
|
|||||||
language.current_language.parts.right_foreleg,
|
language.current_language.parts.right_foreleg,
|
||||||
language.current_language.parts.hind_legs,
|
language.current_language.parts.hind_legs,
|
||||||
language.current_language.parts.wings,
|
language.current_language.parts.wings,
|
||||||
language.current_language.parts.tail,
|
language.current_language.parts.tail
|
||||||
},
|
},
|
||||||
[19] = -- Daimyo Hermitaur 19
|
[19] = -- Daimyo Hermitaur 19
|
||||||
{
|
{
|
||||||
@@ -826,11 +827,12 @@ function this.init()
|
|||||||
language.current_language.parts.head,
|
language.current_language.parts.head,
|
||||||
language.current_language.parts.torso,
|
language.current_language.parts.torso,
|
||||||
language.current_language.parts.wings,
|
language.current_language.parts.wings,
|
||||||
language.current_language.parts.wingclaws,
|
language.current_language.parts.right_wingclaw,
|
||||||
language.current_language.parts.forelegs,
|
language.current_language.parts.forelegs,
|
||||||
language.current_language.parts.hind_legs,
|
language.current_language.parts.hind_legs,
|
||||||
language.current_language.parts.tail,
|
language.current_language.parts.tail,
|
||||||
language.current_language.parts.antenna
|
language.current_language.parts.antenna,
|
||||||
|
language.current_language.parts.left_wingclaw
|
||||||
},
|
},
|
||||||
|
|
||||||
[2072] = -- Risen Kushala Daora 2072
|
[2072] = -- Risen Kushala Daora 2072
|
||||||
@@ -919,6 +921,27 @@ function this.init()
|
|||||||
language.current_language.parts.left_leg,
|
language.current_language.parts.left_leg,
|
||||||
language.current_language.parts.right_leg
|
language.current_language.parts.right_leg
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--SUNBREAK BONUS UPDATE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[1412] = -- Primordial Malzeno 1412
|
||||||
|
{
|
||||||
|
language.current_language.parts.head,
|
||||||
|
language.current_language.parts.torso,
|
||||||
|
language.current_language.parts.left_foreleg,
|
||||||
|
language.current_language.parts.right_foreleg,
|
||||||
|
language.current_language.parts.hind_legs,
|
||||||
|
language.current_language.parts.wings,
|
||||||
|
language.current_language.parts.tail,
|
||||||
|
}
|
||||||
};
|
};
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -932,9 +955,12 @@ function this.get_part_name(monster_id, part_id)
|
|||||||
return part_name;
|
return part_name;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
this.init();
|
this.init();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
local this = {};
|
local this = {};
|
||||||
|
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
local pairs = pairs;
|
local pairs = pairs;
|
||||||
@@ -215,6 +217,14 @@ function this.number.round(value)
|
|||||||
return math.floor(value + 0.5);
|
return math.floor(value + 0.5);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function this.number.is_odd(value)
|
||||||
|
return value % 2 ~= 0;
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.number.is_even(value)
|
||||||
|
return value % 2 == 0;
|
||||||
|
end
|
||||||
|
|
||||||
function this.string.trim(str)
|
function this.string.trim(str)
|
||||||
return str:match("^%s*(.-)%s*$");
|
return str:match("^%s*(.-)%s*$");
|
||||||
end
|
end
|
||||||
@@ -405,6 +415,10 @@ 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.init_dependencies()
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ local time;
|
|||||||
local small_monster;
|
local small_monster;
|
||||||
local large_monster;
|
local large_monster;
|
||||||
local drawing;
|
local drawing;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -52,7 +53,6 @@ function this.draw(monster, ailment_buildup_UI, cached_config, ailment_buildups_
|
|||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
for id, ailment in pairs(monster.ailments) do
|
for id, ailment in pairs(monster.ailments) do
|
||||||
if id == ailments.stun_id then
|
if id == ailments.stun_id then
|
||||||
if not cached_config.filter.stun then
|
if not cached_config.filter.stun then
|
||||||
@@ -227,11 +227,9 @@ function this.draw(monster, ailment_buildup_UI, cached_config, ailment_buildups_
|
|||||||
|
|
||||||
::continue::
|
::continue::
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
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");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
@@ -241,6 +239,10 @@ function this.init_module()
|
|||||||
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
||||||
large_monster = require("MHR_Overlay.Monsters.large_monster");
|
large_monster = require("MHR_Overlay.Monsters.large_monster");
|
||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ local small_monster;
|
|||||||
local large_monster;
|
local large_monster;
|
||||||
local config;
|
local config;
|
||||||
local ailments;
|
local ailments;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -47,7 +48,7 @@ local enemy_condition_damage_param_base_type_def = sdk.find_type_definition("sno
|
|||||||
local get_enemy_method = enemy_condition_damage_param_base_type_def:get_method("get_Em");
|
local get_enemy_method = enemy_condition_damage_param_base_type_def:get_method("get_Em");
|
||||||
|
|
||||||
local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase");
|
local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase");
|
||||||
local damage_param_field = enemy_character_base_type_def:get_field("<DamageParam>k__BackingField");
|
local get_damage_param_method = enemy_character_base_type_def:get_method("get_DamageParam");
|
||||||
local is_boss_enemy_method = enemy_character_base_type_def:get_method("get_isBossEnemy");
|
local is_boss_enemy_method = enemy_character_base_type_def:get_method("get_isBossEnemy");
|
||||||
|
|
||||||
local enemy_damage_param_type_def = sdk.find_type_definition("snow.enemy.EnemyDamageParam");
|
local enemy_damage_param_type_def = sdk.find_type_definition("snow.enemy.EnemyDamageParam");
|
||||||
@@ -62,16 +63,19 @@ local blast_adjust_rate_method = blast_param_type:get_method("get_BlastDamageAdj
|
|||||||
|
|
||||||
function this.poison_proc(poison_param)
|
function this.poison_proc(poison_param)
|
||||||
if poison_param == nil then
|
if poison_param == nil then
|
||||||
|
error_handler.report("ailment_hook.poison_proc", "Missing Parameter: poison_param");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local enemy = get_enemy_method:call(poison_param);
|
local enemy = get_enemy_method:call(poison_param);
|
||||||
if enemy == nil then
|
if enemy == nil then
|
||||||
|
error_handler.report("ailment_hook.poison_proc", "Failed to access Data: enemy");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local is_large = is_boss_enemy_method:call(enemy);
|
local is_large = is_boss_enemy_method:call(enemy);
|
||||||
if is_large == nil then
|
if is_large == nil then
|
||||||
|
error_handler.report("ailment_hook.poison_proc", "Failed to access Data: is_large");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -90,16 +94,19 @@ end
|
|||||||
|
|
||||||
function this.blast_proc(blast_param)
|
function this.blast_proc(blast_param)
|
||||||
if blast_param == nil then
|
if blast_param == nil then
|
||||||
|
error_handler.report("ailment_hook.blast_proc", "Missing Parameter: blast_param");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local enemy = get_enemy_method:call(blast_param);
|
local enemy = get_enemy_method:call(blast_param);
|
||||||
if enemy == nil then
|
if enemy == nil then
|
||||||
|
error_handler.report("ailment_hook.blast_proc", "Failed to access Data: enemy");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local is_large = is_boss_enemy_method:call(enemy);
|
local is_large = is_boss_enemy_method:call(enemy);
|
||||||
if is_large == nil then
|
if is_large == nil then
|
||||||
|
error_handler.report("ailment_hook.blast_proc", "Failed to access Data: is_large");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -120,36 +127,49 @@ end
|
|||||||
|
|
||||||
function this.stock_damage()
|
function this.stock_damage()
|
||||||
for enemy, monster in pairs(large_monster.list) do
|
for enemy, monster in pairs(large_monster.list) do
|
||||||
local damage_param = damage_param_field:get_data(enemy);
|
local damage_param = get_damage_param_method:call(enemy);
|
||||||
if damage_param == nil then
|
if damage_param == nil then
|
||||||
goto continue
|
error_handler.report("ailment_hook.stock_damage", "Failed to access Data: large_monster -> damage_param");
|
||||||
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
local poison_param = poison_param_field:get_data(damage_param);
|
local poison_param = poison_param_field:get_data(damage_param);
|
||||||
|
if poison_param == nil then
|
||||||
|
error_handler.report("ailment_hook.stock_damage", "Failed to access Data: large_monster -> poison_param");
|
||||||
|
goto continue;
|
||||||
|
end
|
||||||
|
|
||||||
ailments.update_poison(monster, poison_param);
|
ailments.update_poison(monster, poison_param);
|
||||||
::continue::
|
::continue::
|
||||||
end
|
end
|
||||||
|
|
||||||
for enemy, monster in pairs(small_monster.list) do
|
for enemy, monster in pairs(small_monster.list) do
|
||||||
local damage_param = damage_param_field:get_data(enemy);
|
local damage_param = get_damage_param_method:call(enemy);
|
||||||
if damage_param == nil then
|
if damage_param == nil then
|
||||||
|
error_handler.report("ailment_hook.stock_damage", "Failed to access Data: small_monster -> damage_param");
|
||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
|
||||||
local poison_param = poison_param_field:get_data(damage_param);
|
local poison_param = poison_param_field:get_data(damage_param);
|
||||||
|
if poison_param == nil then
|
||||||
|
error_handler.report("ailment_hook.stock_damage", "Failed to access Data: small_monster -> poison_param");
|
||||||
|
goto continue;
|
||||||
|
end
|
||||||
|
|
||||||
ailments.update_poison(monster, poison_param);
|
ailments.update_poison(monster, poison_param);
|
||||||
::continue::
|
::continue::
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
||||||
large_monster = require("MHR_Overlay.Monsters.large_monster");
|
large_monster = require("MHR_Overlay.Monsters.large_monster");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
ailments = require("MHR_Overlay.Monsters.ailments");
|
ailments = require("MHR_Overlay.Monsters.ailments");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
sdk.hook(stock_damage_method, function(args)
|
sdk.hook(stock_damage_method, function(args)
|
||||||
pcall(this.stock_damage, sdk.to_managed_object(args[2]));
|
pcall(this.stock_damage, sdk.to_managed_object(args[2]));
|
||||||
end, function(retval)
|
end, function(retval)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ local time;
|
|||||||
local small_monster;
|
local small_monster;
|
||||||
local large_monster;
|
local large_monster;
|
||||||
local non_players;
|
local non_players;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -245,20 +246,18 @@ function this.init_ailment_names(_ailments)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase");
|
local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase");
|
||||||
|
local get_damage_param_method = enemy_character_base_type_def:get_method("get_DamageParam");
|
||||||
|
|
||||||
|
local damage_param_type_def = get_damage_param_method:get_return_type();
|
||||||
|
local get_condition_param_method = damage_param_type_def:get_method("get_ConditionParam");
|
||||||
|
|
||||||
|
local stun_param_field = damage_param_type_def:get_field("_StunParam");
|
||||||
|
local poison_param_field = damage_param_type_def:get_field("_PoisonParam");
|
||||||
|
local blast_param_field = damage_param_type_def:get_field("_BlastParam");
|
||||||
|
|
||||||
|
local blast_param_type_def = blast_param_field:get_type();
|
||||||
|
|
||||||
local enemy_condition_damage_param_base_type_def = sdk.find_type_definition("snow.enemy.EnemyConditionDamageParamBase");
|
local enemy_condition_damage_param_base_type_def = sdk.find_type_definition("snow.enemy.EnemyConditionDamageParamBase");
|
||||||
|
|
||||||
local damage_param_field = enemy_character_base_type_def:get_field("<DamageParam>k__BackingField");
|
|
||||||
local damage_param_type = damage_param_field:get_type();
|
|
||||||
local get_condition_param_method = damage_param_type:get_method("get_ConditionParam");
|
|
||||||
|
|
||||||
local stun_param_field = damage_param_type:get_field("_StunParam");
|
|
||||||
local poison_param_field = damage_param_type:get_field("_PoisonParam");
|
|
||||||
local blast_param_field = damage_param_type:get_field("_BlastParam");
|
|
||||||
|
|
||||||
|
|
||||||
local poison_param_type = poison_param_field:get_type();
|
|
||||||
local blast_param_type = blast_param_field:get_type();
|
|
||||||
|
|
||||||
local get_is_enable_method = enemy_condition_damage_param_base_type_def:get_method("get_IsEnable");
|
local get_is_enable_method = enemy_condition_damage_param_base_type_def:get_method("get_IsEnable");
|
||||||
local get_is_active_method = enemy_condition_damage_param_base_type_def:get_method("get_IsActive");
|
local get_is_active_method = enemy_condition_damage_param_base_type_def:get_method("get_IsActive");
|
||||||
local get_activate_count_method = enemy_condition_damage_param_base_type_def:get_method("get_ActivateCount");
|
local get_activate_count_method = enemy_condition_damage_param_base_type_def:get_method("get_ActivateCount");
|
||||||
@@ -267,8 +266,9 @@ local get_limit_method = enemy_condition_damage_param_base_type_def:get_method("
|
|||||||
local get_active_time_method = enemy_condition_damage_param_base_type_def:get_method("get_ActiveTime");
|
local get_active_time_method = enemy_condition_damage_param_base_type_def:get_method("get_ActiveTime");
|
||||||
local get_active_timer_method = enemy_condition_damage_param_base_type_def:get_method("get_ActiveTimer");
|
local get_active_timer_method = enemy_condition_damage_param_base_type_def:get_method("get_ActiveTimer");
|
||||||
|
|
||||||
local poison_damage_field = poison_param_type:get_field("<Damage>k__BackingField");
|
local poison_param_type_def = poison_param_field:get_type();
|
||||||
local poison_get_is_damage_method = poison_param_type:get_method("get_IsDamage");
|
local poison_damage_field = poison_param_type_def:get_field("<Damage>k__BackingField");
|
||||||
|
local poison_get_is_damage_method = poison_param_type_def:get_method("get_IsDamage");
|
||||||
|
|
||||||
local system_array_type_def = sdk.find_type_definition("System.Array");
|
local system_array_type_def = sdk.find_type_definition("System.Array");
|
||||||
local length_method = system_array_type_def:get_method("get_Length");
|
local length_method = system_array_type_def:get_method("get_Length");
|
||||||
@@ -276,10 +276,13 @@ local get_value_method = system_array_type_def:get_method("GetValue(System.Int32
|
|||||||
|
|
||||||
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");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
local damage_param = damage_param_field:get_data(enemy);
|
|
||||||
|
local damage_param = get_damage_param_method:call(enemy);
|
||||||
if damage_param == nil then
|
if damage_param == nil then
|
||||||
|
error_handler.report("ailments.update_ailments", "Failed to access Data: damage_param");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -296,13 +299,14 @@ function this.update_ailments(enemy, monster)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local condition_param_array = get_condition_param_method:call(damage_param);
|
local condition_param_array = get_condition_param_method:call(damage_param);
|
||||||
|
|
||||||
if condition_param_array == nil then
|
if condition_param_array == nil then
|
||||||
|
error_handler.report("ailments.update_ailments", "Failed to access Data: condition_param_array");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local condition_param_array_length = length_method:call(condition_param_array);
|
local condition_param_array_length = length_method:call(condition_param_array);
|
||||||
if condition_param_array_length == nil then
|
if condition_param_array_length == nil then
|
||||||
|
error_handler.report("ailments.update_ailments", "Failed to access Data: condition_param_array_length");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -313,6 +317,7 @@ function this.update_ailments(enemy, monster)
|
|||||||
|
|
||||||
local ailment_param = get_value_method:call(condition_param_array, id);
|
local ailment_param = get_value_method:call(condition_param_array, id);
|
||||||
if ailment_param == nil then
|
if ailment_param == nil then
|
||||||
|
error_handler.report("ailments.update_ailments", "Failed to access Data: ailment_param No. " .. tostring(id));
|
||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -325,16 +330,22 @@ function this.update_stun_poison_blast_ailments(monster, damage_param)
|
|||||||
local stun_param = stun_param_field:get_data(damage_param);
|
local stun_param = stun_param_field:get_data(damage_param);
|
||||||
if stun_param ~= nil then
|
if stun_param ~= nil then
|
||||||
this.update_ailment(monster, stun_param, this.stun_id);
|
this.update_ailment(monster, stun_param, this.stun_id);
|
||||||
|
else
|
||||||
|
error_handler.report("ailments.update_stun_poison_blast_ailments", "Failed to access Data: stun_param");
|
||||||
end
|
end
|
||||||
|
|
||||||
local poison_param = poison_param_field:get_data(damage_param);
|
local poison_param = poison_param_field:get_data(damage_param);
|
||||||
if poison_param ~= nil then
|
if poison_param ~= nil then
|
||||||
this.update_ailment(monster, poison_param, this.poison_id);
|
this.update_ailment(monster, poison_param, this.poison_id);
|
||||||
|
else
|
||||||
|
error_handler.report("ailments.update_stun_poison_blast_ailments", "Failed to access Data: poison_param");
|
||||||
end
|
end
|
||||||
|
|
||||||
local blast_param = blast_param_field:get_data(damage_param);
|
local blast_param = blast_param_field:get_data(damage_param);
|
||||||
if blast_param ~= nil then
|
if blast_param ~= nil then
|
||||||
this.update_ailment(monster, blast_param, this.blast_id);
|
this.update_ailment(monster, blast_param, this.blast_id);
|
||||||
|
else
|
||||||
|
error_handler.report("ailments.update_stun_poison_blast_ailments", "Failed to access Data: blast_param");
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -347,9 +358,9 @@ function this.update_ailment(monster, ailment_param, id)
|
|||||||
local duration = get_active_time_method:call(ailment_param);
|
local duration = get_active_time_method:call(ailment_param);
|
||||||
local is_active = get_is_active_method:call(ailment_param);
|
local is_active = get_is_active_method:call(ailment_param);
|
||||||
|
|
||||||
local activate_count = -999;
|
local activate_count = nil;
|
||||||
local buildup = -999;
|
local buildup = nil;
|
||||||
local buildup_limit = 9999;
|
local buildup_limit = nil;
|
||||||
|
|
||||||
if activate_count_array ~= nil then
|
if activate_count_array ~= nil then
|
||||||
local activate_count_array_length = length_method:call(activate_count_array);
|
local activate_count_array_length = length_method:call(activate_count_array);
|
||||||
@@ -360,14 +371,16 @@ function this.update_ailment(monster, ailment_param, id)
|
|||||||
local activate_count_valuetype = get_value_method:call(activate_count_array, 0);
|
local activate_count_valuetype = get_value_method:call(activate_count_array, 0);
|
||||||
|
|
||||||
if activate_count_valuetype ~= nil then
|
if activate_count_valuetype ~= nil then
|
||||||
local _activate_count = activate_count_valuetype:get_field("mValue");
|
activate_count = activate_count_valuetype:get_field("mValue");
|
||||||
|
else
|
||||||
if _activate_count ~= nil then
|
error_handler.report("ailments.update_ailment", "Failed to access Data: activate_count_valuetype");
|
||||||
activate_count = _activate_count;
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
error_handler.report("ailments.update_ailment", "Failed to access Data: activate_count_array_length");
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
error_handler.report("ailments.update_ailment", "Failed to access Data: activate_count_array");
|
||||||
end
|
end
|
||||||
|
|
||||||
if buildup_array ~= nil then
|
if buildup_array ~= nil then
|
||||||
@@ -379,14 +392,16 @@ function this.update_ailment(monster, ailment_param, id)
|
|||||||
local buildup_valuetype = get_value_method:call(buildup_array, 0);
|
local buildup_valuetype = get_value_method:call(buildup_array, 0);
|
||||||
|
|
||||||
if buildup_valuetype ~= nil then
|
if buildup_valuetype ~= nil then
|
||||||
local _buildup = buildup_valuetype:get_field("mValue");
|
buildup = buildup_valuetype:get_field("mValue");
|
||||||
|
else
|
||||||
if _buildup ~= nil then
|
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_valuetype");
|
||||||
buildup = _buildup;
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_array_length");
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_array");
|
||||||
end
|
end
|
||||||
|
|
||||||
if buildup_limit_array ~= nil then
|
if buildup_limit_array ~= nil then
|
||||||
@@ -398,14 +413,16 @@ function this.update_ailment(monster, ailment_param, id)
|
|||||||
local buildup_limit_valuetype = get_value_method:call(buildup_limit_array, 0);
|
local buildup_limit_valuetype = get_value_method:call(buildup_limit_array, 0);
|
||||||
|
|
||||||
if buildup_limit_valuetype ~= nil then
|
if buildup_limit_valuetype ~= nil then
|
||||||
local _buildup_limit = buildup_limit_valuetype:get_field("mValue");
|
buildup_limit = buildup_limit_valuetype:get_field("mValue");
|
||||||
|
else
|
||||||
if _buildup_limit ~= nil then
|
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_limit_valuetype");
|
||||||
buildup_limit = _buildup_limit;
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_limit_array_length");
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_limit_array");
|
||||||
end
|
end
|
||||||
|
|
||||||
if is_enable == nil then
|
if is_enable == nil then
|
||||||
@@ -428,6 +445,8 @@ function this.update_ailment(monster, ailment_param, id)
|
|||||||
end
|
end
|
||||||
|
|
||||||
monster.ailments[id].activate_count = activate_count;
|
monster.ailments[id].activate_count = activate_count;
|
||||||
|
else
|
||||||
|
error_handler.report("ailments.update_ailment", "Failed to access Data: activate_count");
|
||||||
end
|
end
|
||||||
|
|
||||||
if buildup ~= nil then
|
if buildup ~= nil then
|
||||||
@@ -436,6 +455,8 @@ function this.update_ailment(monster, ailment_param, id)
|
|||||||
end
|
end
|
||||||
|
|
||||||
monster.ailments[id].total_buildup = buildup;
|
monster.ailments[id].total_buildup = buildup;
|
||||||
|
else
|
||||||
|
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup");
|
||||||
end
|
end
|
||||||
|
|
||||||
if buildup_limit ~= nil then
|
if buildup_limit ~= nil then
|
||||||
@@ -444,6 +465,8 @@ function this.update_ailment(monster, ailment_param, id)
|
|||||||
end
|
end
|
||||||
|
|
||||||
monster.ailments[id].buildup_limit = buildup_limit;
|
monster.ailments[id].buildup_limit = buildup_limit;
|
||||||
|
else
|
||||||
|
error_handler.report("ailments.update_ailment", "Failed to access Data: buildup_limit");
|
||||||
end
|
end
|
||||||
|
|
||||||
if buildup ~= nil and buildup_limit ~= nil and buildup_limit ~= 0 then
|
if buildup ~= nil and buildup_limit ~= nil and buildup_limit ~= 0 then
|
||||||
@@ -502,18 +525,29 @@ end
|
|||||||
-- Code by coavins
|
-- Code by coavins
|
||||||
function this.update_poison(monster, poison_param)
|
function this.update_poison(monster, poison_param)
|
||||||
if monster == nil then
|
if monster == nil then
|
||||||
|
error_handler.report("ailments.update_poison", "Missing Parameter: monster");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
if poison_param ~= nil then
|
if poison_param == nil then
|
||||||
--if poison tick, apply damage
|
error_handler.report("ailments.update_poison", "Missing Parameter: poison_param");
|
||||||
local is_damage = poison_get_is_damage_method:call(poison_param);
|
return;
|
||||||
if is_damage then
|
|
||||||
local poison_damage = poison_damage_field:get_data(poison_param);
|
|
||||||
|
|
||||||
this.apply_ailment_damage(monster, this.poison_id, poison_damage);
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--if poison tick, apply damage
|
||||||
|
local is_damage = poison_get_is_damage_method:call(poison_param);
|
||||||
|
if is_damage == nil then
|
||||||
|
error_handler.report("ailments.update_poison", "Failed to access Data: is_damage");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local poison_damage = poison_damage_field:get_data(poison_param);
|
||||||
|
if poison_damage == nil then
|
||||||
|
error_handler.report("ailments.update_poison", "Failed to access Data: poison_damage");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
this.apply_ailment_damage(monster, this.poison_id, poison_damage);
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.draw(monster, ailment_UI, cached_config, ailments_position_on_screen, opacity_scale)
|
function this.draw(monster, ailment_UI, cached_config, ailments_position_on_screen, opacity_scale)
|
||||||
@@ -607,14 +641,17 @@ function this.draw(monster, ailment_UI, cached_config, ailments_position_on_scre
|
|||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.settings.hide_ailments_with_zero_buildup and ailment.total_buildup == 0 and
|
if cached_config.settings.hide_ailments_with_zero_buildup
|
||||||
ailment.buildup_limit ~= 0
|
and ailment.total_buildup == 0
|
||||||
and ailment.activate_count == 0 and not ailment.is_active then
|
and ailment.buildup_limit ~= 0
|
||||||
|
and ailment.activate_count == 0
|
||||||
|
and not ailment.is_active then
|
||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.settings.hide_inactive_ailments_with_no_buildup_support and ailment.buildup_limit == 0 and
|
if cached_config.settings.hide_inactive_ailments_with_no_buildup_support
|
||||||
not ailment.is_active then
|
and ailment.buildup_limit == 0
|
||||||
|
and not ailment.is_active then
|
||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -630,9 +667,9 @@ function this.draw(monster, ailment_UI, cached_config, ailments_position_on_scre
|
|||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.settings.time_limit ~= 0 and
|
if cached_config.settings.time_limit ~= 0
|
||||||
time.total_elapsed_script_seconds - ailment.last_change_time > cached_config.settings.time_limit and
|
and time.total_elapsed_script_seconds - ailment.last_change_time > cached_config.settings.time_limit
|
||||||
not ailment.is_active then
|
and not ailment.is_active then
|
||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -681,14 +718,21 @@ function this.draw(monster, ailment_UI, cached_config, ailments_position_on_scre
|
|||||||
|
|
||||||
ailment_UI_entity.draw(ailment, ailment_UI, cached_config, ailment_position_on_screen, opacity_scale);
|
ailment_UI_entity.draw(ailment, ailment_UI, cached_config, ailment_position_on_screen, opacity_scale);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.apply_ailment_buildup(monster, player, otomo, ailment_type, ailment_buildup)
|
function this.apply_ailment_buildup(monster, player, otomo, ailment_type, ailment_buildup)
|
||||||
if monster == nil or
|
if monster == nil then
|
||||||
(ailment_type ~= this.poison_id and ailment_type ~= this.blast_id and ailment_type ~= this.stun_id)
|
error_handler.report("ailments.apply_ailment_buildup", "Missing Parameter: monster");
|
||||||
or (ailment_buildup == 0 or ailment_buildup == nil) then
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
if ailment_buildup == nil then
|
||||||
|
error_handler.report("ailments.apply_ailment_buildup", "Missing Parameter: ailment_buildup");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
if (ailment_type ~= this.poison_id and ailment_type ~= this.blast_id and ailment_type ~= this.stun_id)
|
||||||
|
or ailment_buildup == 0 then
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -708,7 +752,6 @@ function this.apply_ailment_buildup(monster, player, otomo, ailment_type, ailmen
|
|||||||
monster.ailments[ailment_type].otomo_buildup[otomo] = (monster.ailments[ailment_type].otomo_buildup[otomo] or 0) + ailment_buildup;
|
monster.ailments[ailment_type].otomo_buildup[otomo] = (monster.ailments[ailment_type].otomo_buildup[otomo] or 0) + ailment_buildup;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
this.calculate_ailment_contribution(monster, ailment_type);
|
this.calculate_ailment_contribution(monster, ailment_type);
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -750,24 +793,34 @@ end
|
|||||||
-- Code by coavins
|
-- Code by coavins
|
||||||
function this.apply_ailment_damage(monster, ailment_type, ailment_damage)
|
function this.apply_ailment_damage(monster, ailment_type, ailment_damage)
|
||||||
-- we only track poison and blast for now
|
-- we only track poison and blast for now
|
||||||
if ailment_type == nil or ailment_damage == nil then
|
if monster == nil then
|
||||||
|
error_handler.report("ailments.apply_ailment_damage", "Missing Parameter: monster");
|
||||||
|
end
|
||||||
|
|
||||||
|
if ailment_type == nil then
|
||||||
|
error_handler.report("ailments.apply_ailment_damage", "Missing Parameter: ailment_type");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local damage_source_type = "";
|
if ailment_damage == nil then
|
||||||
local otomo_damage_source_type = "";
|
error_handler.report("ailments.apply_ailment_damage", "Missing Parameter: ailment_damage");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local damage_source_type = players.damage_types.other;
|
||||||
|
local otomo_damage_source_type = players.damage_types.other;
|
||||||
local buildup_share = monster.ailments[ailment_type].buildup_share;
|
local buildup_share = monster.ailments[ailment_type].buildup_share;
|
||||||
local otomo_buildup_share = monster.ailments[ailment_type].otomo_buildup_share;
|
local otomo_buildup_share = monster.ailments[ailment_type].otomo_buildup_share;
|
||||||
|
|
||||||
if ailment_type == this.poison_id then
|
if ailment_type == this.poison_id then
|
||||||
damage_source_type = "poison";
|
damage_source_type = players.damage_types.poison;
|
||||||
otomo_damage_source_type = "otomo poison";
|
otomo_damage_source_type = players.damage_types.otomo_poison;
|
||||||
buildup_share = monster.ailments[ailment_type].cached_buildup_share;
|
buildup_share = monster.ailments[ailment_type].cached_buildup_share;
|
||||||
otomo_buildup_share = monster.ailments[ailment_type].cached_otomo_buildup_share;
|
otomo_buildup_share = monster.ailments[ailment_type].cached_otomo_buildup_share;
|
||||||
|
|
||||||
elseif ailment_type == this.blast_id then
|
elseif ailment_type == this.blast_id then
|
||||||
damage_source_type = "blast";
|
damage_source_type = players.damage_types.blast;
|
||||||
otomo_damage_source_type = "otomo blast";
|
otomo_damage_source_type = players.damage_types.otomo_blast;
|
||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
@@ -797,10 +850,7 @@ function this.apply_ailment_damage(monster, ailment_type, ailment_damage)
|
|||||||
|
|
||||||
local player = players.get_player(otomo.id);
|
local player = players.get_player(otomo.id);
|
||||||
|
|
||||||
if player ~= nil then
|
players.update_damage(player, otomo_damage_source_type, monster.is_large, damage_object);
|
||||||
players.update_damage(player, otomo_damage_source_type, monster.is_large, damage_object);
|
|
||||||
end
|
|
||||||
|
|
||||||
players.update_damage(otomo, otomo_damage_source_type, monster.is_large, damage_object);
|
players.update_damage(otomo, otomo_damage_source_type, monster.is_large, damage_object);
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -813,7 +863,7 @@ function this.apply_ailment_damage(monster, ailment_type, ailment_damage)
|
|||||||
players.update_damage(players.total, damage_source_type, monster.is_large, damage_object);
|
players.update_damage(players.total, damage_source_type, monster.is_large, damage_object);
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
players = require("MHR_Overlay.Damage_Meter.players");
|
players = require("MHR_Overlay.Damage_Meter.players");
|
||||||
non_players = require("MHR_Overlay.Damage_Meter.non_players");
|
non_players = require("MHR_Overlay.Damage_Meter.non_players");
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
@@ -823,6 +873,10 @@ function this.init_module()
|
|||||||
time = require("MHR_Overlay.Game_Handler.time");
|
time = require("MHR_Overlay.Game_Handler.time");
|
||||||
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
||||||
large_monster = require("MHR_Overlay.Monsters.large_monster");
|
large_monster = require("MHR_Overlay.Monsters.large_monster");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ local screen;
|
|||||||
local drawing;
|
local drawing;
|
||||||
local part_names;
|
local part_names;
|
||||||
local time;
|
local time;
|
||||||
|
local utils;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -50,31 +52,43 @@ function this.new(id, name)
|
|||||||
local part = {};
|
local part = {};
|
||||||
|
|
||||||
part.id = id;
|
part.id = id;
|
||||||
|
part.name = name;
|
||||||
|
|
||||||
part.health = 9999;
|
part.health = -9;
|
||||||
part.max_health = 99999;
|
part.max_health = -10;
|
||||||
part.health_percentage = 0;
|
part.health_percentage = 0;
|
||||||
|
|
||||||
part.break_health = 9999;
|
part.break_health = -9;
|
||||||
part.break_max_health = 99999;
|
part.break_max_health = -10;
|
||||||
part.break_health_percentage = 0;
|
part.break_health_percentage = 0;
|
||||||
|
|
||||||
part.lost_health = 9999;
|
part.lost_health = -9;
|
||||||
part.loss_max_health = 99999;
|
part.loss_max_health = -10;
|
||||||
part.loss_health_percentage = 0;
|
part.loss_health_percentage = 0;
|
||||||
|
|
||||||
part.name = name;
|
|
||||||
part.flinch_count = 0;
|
part.flinch_count = 0;
|
||||||
part.break_count = 0;
|
part.break_count = 0;
|
||||||
part.break_max_count = 0;
|
part.break_max_count = 0;
|
||||||
|
|
||||||
|
part.anomaly_ref = nil;
|
||||||
|
part.anomaly_health = -9;
|
||||||
|
part.anomaly_max_health = -10;
|
||||||
|
part.anomaly_health_percentage = 0;
|
||||||
|
part.anomaly_is_active = false;
|
||||||
|
|
||||||
part.last_change_time = time.total_elapsed_script_seconds;
|
part.last_change_time = time.total_elapsed_script_seconds;
|
||||||
|
|
||||||
return part;
|
return part;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function this.init_part_names(monster_id, parts)
|
||||||
|
for part_id, part in pairs(parts) do
|
||||||
|
part.name = part_names.get_part_name(monster_id, part_id);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function this.update_flinch(part, part_current, part_max)
|
function this.update_flinch(part, part_current, part_max)
|
||||||
if part_current > part.health then
|
if part_current > part.health and part.max_health > 0 then
|
||||||
part.flinch_count = part.flinch_count + 1;
|
part.flinch_count = part.flinch_count + 1;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -147,6 +161,125 @@ function this.update_loss(part, part_loss_current, part_loss_max, is_severed)
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function this.update_anomaly(part, part_anomaly_ref, part_anomaly_current, part_anomaly_max, part_is_active)
|
||||||
|
if part.anomaly_health ~= part_anomaly_current then
|
||||||
|
part.last_change_time = time.total_elapsed_script_seconds;
|
||||||
|
end
|
||||||
|
|
||||||
|
if part.anomaly_max_health ~= part_anomaly_max then
|
||||||
|
part.last_change_time = time.total_elapsed_script_seconds;
|
||||||
|
end
|
||||||
|
|
||||||
|
if part.anomaly_is_active ~= part_is_active then
|
||||||
|
part.last_change_time = time.total_elapsed_script_seconds;
|
||||||
|
end
|
||||||
|
|
||||||
|
part.anomaly_core_ref = part_anomaly_ref;
|
||||||
|
part.anomaly_health = part_anomaly_current;
|
||||||
|
part.anomaly_max_health = part_anomaly_max;
|
||||||
|
part.anomaly_is_active = part_is_active;
|
||||||
|
|
||||||
|
if part.anomaly_max_health ~= 0 then
|
||||||
|
part.anomaly_health_percentage = part.anomaly_health / part.anomaly_max_health;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.is_filtered_out(cached_config, health_supported, break_supported, sever_supported, anomaly_supported)
|
||||||
|
if health_supported then
|
||||||
|
if break_supported then
|
||||||
|
if sever_supported then
|
||||||
|
if anomaly_supported then
|
||||||
|
if not cached_config.filter.health_break_sever_anomaly then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if not cached_config.filter.health_break_sever then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if anomaly_supported then
|
||||||
|
if not cached_config.filter.health_break_anomaly then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if not cached_config.filter.health_break then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if sever_supported then
|
||||||
|
if anomaly_supported then
|
||||||
|
if not cached_config.filter.health_sever_anomaly then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if not cached_config.filter.health_sever then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if anomaly_supported then
|
||||||
|
if not cached_config.filter.health_anomaly then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if not cached_config.filter.health then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if break_supported then
|
||||||
|
if sever_supported then
|
||||||
|
if anomaly_supported then
|
||||||
|
if not cached_config.filter.break_sever_anomaly then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if not cached_config.filter.break_sever then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if anomaly_supported then
|
||||||
|
if not cached_config.filter.break_anomaly then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if not cached_config.filter.break_ then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if sever_supported then
|
||||||
|
if anomaly_supported then
|
||||||
|
if not cached_config.filter.sever_anomaly then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if not cached_config.filter.sever then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if anomaly_supported then
|
||||||
|
if not cached_config.filter.anomaly then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return false;
|
||||||
|
end
|
||||||
|
|
||||||
function this.draw(monster, part_UI, cached_config, parts_position_on_screen, opacity_scale)
|
function this.draw(monster, part_UI, cached_config, parts_position_on_screen, opacity_scale)
|
||||||
local cached_config = cached_config.body_parts;
|
local cached_config = cached_config.body_parts;
|
||||||
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
|
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
|
||||||
@@ -155,72 +288,41 @@ function this.draw(monster, part_UI, cached_config, parts_position_on_screen, op
|
|||||||
for REpart, part in pairs(monster.parts) do
|
for REpart, part in pairs(monster.parts) do
|
||||||
local health_supported = part.max_health > 0;
|
local health_supported = part.max_health > 0;
|
||||||
local break_supported = part.break_max_health > 0;
|
local break_supported = part.break_max_health > 0;
|
||||||
local severe_supported = part.loss_max_health > 0;
|
local sever_supported = part.loss_max_health > 0;
|
||||||
|
local anomaly_supported = part.anomaly_max_health > 0;
|
||||||
|
|
||||||
|
|
||||||
if cached_config.settings.filter_mode == "Current State" then
|
if cached_config.settings.filter_mode == "Current State" then
|
||||||
if break_supported and part.break_count >= part.break_max_count then
|
if break_supported and part.break_count >= part.break_max_count then
|
||||||
break_supported = false;
|
break_supported = false;
|
||||||
end
|
end
|
||||||
|
|
||||||
if severe_supported and part.is_severed then
|
if sever_supported and part.is_severed then
|
||||||
severe_supported = false;
|
sever_supported = false;
|
||||||
|
end
|
||||||
|
|
||||||
|
if anomaly_supported and not part.anomaly_is_active then
|
||||||
|
anomaly_supported = false;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if health_supported then
|
local is_filtered_out = this.is_filtered_out(cached_config, health_supported, break_supported, sever_supported, anomaly_supported);
|
||||||
if break_supported then
|
if is_filtered_out then
|
||||||
if severe_supported then
|
goto continue;
|
||||||
if not cached_config.filter.health_break_severe then
|
|
||||||
goto continue
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if not cached_config.filter.health_break then
|
|
||||||
goto continue
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if severe_supported then
|
|
||||||
if not cached_config.filter.health_severe then
|
|
||||||
goto continue
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if not cached_config.filter.health then
|
|
||||||
goto continue
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if break_supported then
|
|
||||||
if severe_supported then
|
|
||||||
if not cached_config.filter.break_severe then
|
|
||||||
goto continue
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if not cached_config.filter.break_ then
|
|
||||||
goto continue
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if severe_supported then
|
|
||||||
if not cached_config.filter.severe then
|
|
||||||
goto continue
|
|
||||||
end
|
|
||||||
else
|
|
||||||
goto continue
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.settings.hide_undamaged_parts
|
if cached_config.settings.hide_undamaged_parts
|
||||||
and ((part.health == part.max_health and part.flinch_count == 0) or not health_supported)
|
and ((part.health == part.max_health and part.flinch_count == 0) or not health_supported)
|
||||||
and ((part.break_health == part.break_max_health and part.break_count == 0) or not break_supported)
|
and ((part.break_health == part.break_max_health and part.break_count == 0) or not break_supported)
|
||||||
and ((part.loss_health == part.loss_max_health and not part.is_severed) or not severe_supported) then
|
and ((part.loss_health == part.loss_max_health and not part.is_severed) or not sever_supported)
|
||||||
|
and ((part.anomaly_health == part.anomaly_max_health) or not anomaly_supported) then
|
||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
|
||||||
if (not part_UI.flinch_visibility or not health_supported)
|
if (not part_UI.flinch_visibility or not health_supported)
|
||||||
and (not part_UI.break_visibility or not break_supported or part.break_count >= part.break_max_count)
|
and (not part_UI.break_visibility or not break_supported or part.break_count >= part.break_max_count)
|
||||||
and (not part_UI.loss_visibility or not severe_supported or part.is_severed) then
|
and (not part_UI.loss_visibility or not sever_supported or part.is_severed)
|
||||||
|
and (not part_UI.anomaly_visibility or not anomaly_supported) then
|
||||||
goto continue
|
goto continue
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -323,6 +425,26 @@ function this.draw(monster, part_UI, cached_config, parts_position_on_screen, op
|
|||||||
return left.loss_health_percentage < right.loss_health_percentage;
|
return left.loss_health_percentage < right.loss_health_percentage;
|
||||||
end);
|
end);
|
||||||
end
|
end
|
||||||
|
elseif cached_config.sorting.type == "Anomaly Core Health" then
|
||||||
|
if cached_config.sorting.reversed_order then
|
||||||
|
table.sort(displayed_parts, function(left, right)
|
||||||
|
return left.anomaly_health > right.anomaly_health;
|
||||||
|
end);
|
||||||
|
else
|
||||||
|
table.sort(displayed_parts, function(left, right)
|
||||||
|
return left.anomaly_health < right.anomaly_health;
|
||||||
|
end);
|
||||||
|
end
|
||||||
|
elseif cached_config.sorting.type == "Anomaly Core Health Percentage" then
|
||||||
|
if cached_config.sorting.reversed_order then
|
||||||
|
table.sort(displayed_parts, function(left, right)
|
||||||
|
return left.anomaly_health_percentage > right.anomaly_health_percentage;
|
||||||
|
end);
|
||||||
|
else
|
||||||
|
table.sort(displayed_parts, function(left, right)
|
||||||
|
return left.anomaly_health_percentage < right.anomaly_health_percentage;
|
||||||
|
end);
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local last_part_position_on_screen;
|
local last_part_position_on_screen;
|
||||||
@@ -340,7 +462,7 @@ function this.draw(monster, part_UI, cached_config, parts_position_on_screen, op
|
|||||||
return last_part_position_on_screen;
|
return last_part_position_on_screen;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
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");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
@@ -352,6 +474,11 @@ function this.init_module()
|
|||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
part_names = require("MHR_Overlay.Misc.part_names");
|
part_names = require("MHR_Overlay.Misc.part_names");
|
||||||
time = require("MHR_Overlay.Game_Handler.time");
|
time = require("MHR_Overlay.Game_Handler.time");
|
||||||
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,7 @@ local config;
|
|||||||
local ailments;
|
local ailments;
|
||||||
local players;
|
local players;
|
||||||
local quest_status;
|
local quest_status;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -118,8 +119,8 @@ function this.update_large_monster(enemy)
|
|||||||
local cached_config = config.current_config.large_monster_UI;
|
local cached_config = config.current_config.large_monster_UI;
|
||||||
|
|
||||||
if not cached_config.dynamic.enabled and
|
if not cached_config.dynamic.enabled and
|
||||||
not cached_config.static.enabled and
|
not cached_config.static.enabled and
|
||||||
not cached_config.highlighted.enabled then
|
not cached_config.highlighted.enabled then
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -128,7 +129,7 @@ function this.update_large_monster(enemy)
|
|||||||
-- this is the VERY LEAST thing we should do all the time
|
-- this is the VERY LEAST thing we should do all the time
|
||||||
-- so the position doesn't lag all over the place
|
-- so the position doesn't lag all over the place
|
||||||
-- due to how infrequently we update the monster(s).
|
-- due to how infrequently we update the monster(s).
|
||||||
large_monster.update_position(enemy, monster);
|
--large_monster.update_position(enemy, monster);
|
||||||
|
|
||||||
if not config.current_config.global_settings.performance.prioritize_large_monsters and updated_monsters[enemy] then
|
if not config.current_config.global_settings.performance.prioritize_large_monsters and updated_monsters[enemy] then
|
||||||
return;
|
return;
|
||||||
@@ -153,9 +154,11 @@ function this.update_large_monster(enemy)
|
|||||||
large_monster.update_stamina_timer(enemy, monster, nil);
|
large_monster.update_stamina_timer(enemy, monster, nil);
|
||||||
large_monster.update_rage_timer(enemy, monster, nil);
|
large_monster.update_rage_timer(enemy, monster, nil);
|
||||||
|
|
||||||
if quest_status.is_online and players.myself.id ~= 0 then
|
if (quest_status.is_online and players.myself.id ~= 0)
|
||||||
|
or not monster.is_health_initialized then
|
||||||
local physical_param = large_monster.update_health(enemy, monster);
|
local physical_param = large_monster.update_health(enemy, monster);
|
||||||
pcall(large_monster.update_parts, enemy, monster, physical_param);
|
pcall(large_monster.update_parts, enemy, monster, physical_param);
|
||||||
|
pcall(large_monster.update_anomaly_parts, enemy, monster, nil);
|
||||||
end
|
end
|
||||||
|
|
||||||
large_monster.update(enemy, monster);
|
large_monster.update(enemy, monster);
|
||||||
@@ -171,7 +174,7 @@ function this.update_small_monster(enemy)
|
|||||||
-- this is the VERY LEAST thing we should do all the time
|
-- this is the VERY LEAST thing we should do all the time
|
||||||
-- so the position doesn't lag all over the place
|
-- so the position doesn't lag all over the place
|
||||||
-- due to how infrequently we update the monster(s).
|
-- due to how infrequently we update the monster(s).
|
||||||
small_monster.update_position(enemy, monster);
|
--small_monster.update_position(enemy, monster);
|
||||||
|
|
||||||
if updated_monsters[enemy] then
|
if updated_monsters[enemy] then
|
||||||
return;
|
return;
|
||||||
@@ -193,7 +196,8 @@ function this.update_small_monster(enemy)
|
|||||||
|
|
||||||
small_monster.update(enemy, monster);
|
small_monster.update(enemy, monster);
|
||||||
|
|
||||||
if quest_status.is_online and players.myself.id ~= 0 then
|
if (quest_status.is_online and players.myself.id ~= 0)
|
||||||
|
or not monster.is_health_initialized then
|
||||||
small_monster.update_health(enemy, monster);
|
small_monster.update_health(enemy, monster);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -201,11 +205,13 @@ end
|
|||||||
function this.update_health(enemy_damage_check)
|
function this.update_health(enemy_damage_check)
|
||||||
local enemy = get_ref_enemy:call(enemy_damage_check);
|
local enemy = get_ref_enemy:call(enemy_damage_check);
|
||||||
if enemy == nil then
|
if enemy == nil then
|
||||||
|
error_handler.report("monster_hook.update_health", "Failed to access Data: enemy");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local is_large = is_boss_enemy_method:call(enemy);
|
local is_large = is_boss_enemy_method:call(enemy);
|
||||||
if is_large == nil then
|
if is_large == nil then
|
||||||
|
error_handler.report("monster_hook.update_health", "Failed to access Data: is_large");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -214,6 +220,7 @@ function this.update_health(enemy_damage_check)
|
|||||||
|
|
||||||
local physical_param = large_monster.update_health(enemy, monster);
|
local physical_param = large_monster.update_health(enemy, monster);
|
||||||
pcall(large_monster.update_parts, enemy, monster, physical_param);
|
pcall(large_monster.update_parts, enemy, monster, physical_param);
|
||||||
|
pcall(large_monster.update_anomaly_parts, enemy, monster, nil);
|
||||||
else
|
else
|
||||||
local monster = small_monster.get_monster(enemy);
|
local monster = small_monster.get_monster(enemy);
|
||||||
small_monster.update_health(enemy, monster);
|
small_monster.update_health(enemy, monster);
|
||||||
@@ -227,6 +234,7 @@ function this.update_stamina(stamina_param, stamina_sub)
|
|||||||
|
|
||||||
local enemy = get_enemy_method:call(stamina_param);
|
local enemy = get_enemy_method:call(stamina_param);
|
||||||
if enemy == nil then
|
if enemy == nil then
|
||||||
|
error_handler.report("monster_hook.update_stamina", "Failed to access Data: enemy");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -253,14 +261,17 @@ function this.update_rage_timer(anger_param, enemy)
|
|||||||
large_monster.update_rage_timer(enemy, monster, anger_param);
|
large_monster.update_rage_timer(enemy, monster, anger_param);
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
||||||
large_monster = require("MHR_Overlay.Monsters.large_monster");
|
large_monster = require("MHR_Overlay.Monsters.large_monster");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
ailments = require("MHR_Overlay.Monsters.ailments");
|
ailments = require("MHR_Overlay.Monsters.ailments");
|
||||||
players = require("MHR_Overlay.Damage_Meter.players");
|
players = require("MHR_Overlay.Damage_Meter.players");
|
||||||
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
|
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
sdk.hook(enemy_character_base_update_method, function(args)
|
sdk.hook(enemy_character_base_update_method, function(args)
|
||||||
pcall(this.update_monster, sdk.to_managed_object(args[2]));
|
pcall(this.update_monster, sdk.to_managed_object(args[2]));
|
||||||
end, function(retval)
|
end, function(retval)
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ local ailments;
|
|||||||
local ailment_UI_entity;
|
local ailment_UI_entity;
|
||||||
local ailment_buildup;
|
local ailment_buildup;
|
||||||
local ailment_buildup_UI_entity;
|
local ailment_buildup_UI_entity;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -70,7 +71,6 @@ function this.new(enemy)
|
|||||||
this.init_UI(monster);
|
this.init_UI(monster);
|
||||||
|
|
||||||
this.update_position(enemy, monster);
|
this.update_position(enemy, monster);
|
||||||
this.update_health(enemy, monster);
|
|
||||||
this.update(enemy, monster);
|
this.update(enemy, monster);
|
||||||
|
|
||||||
if this.list[enemy] == nil then
|
if this.list[enemy] == nil then
|
||||||
@@ -98,16 +98,18 @@ local get_enemy_name_message_method = message_manager_type_def:get_method("getEn
|
|||||||
function this.init(monster, enemy)
|
function this.init(monster, enemy)
|
||||||
local enemy_type = enemy_type_field:get_data(enemy);
|
local enemy_type = enemy_type_field:get_data(enemy);
|
||||||
if enemy_type == nil then
|
if enemy_type == nil then
|
||||||
customization_menu.status = "No enemy type";
|
error_handler.report("small_monster.init", "Failed to access Data: enemy_type");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
monster.id = enemy_type;
|
monster.id = enemy_type;
|
||||||
|
|
||||||
local enemy_name = get_enemy_name_message_method:call(singletons.message_manager, enemy_type);
|
local enemy_name = get_enemy_name_message_method:call(singletons.message_manager, enemy_type);
|
||||||
if enemy_name ~= nil then
|
if enemy_name == nil then
|
||||||
monster.name = enemy_name;
|
error_handler.report("small_monster.init", "Failed to access Data: enemy_name");
|
||||||
end
|
end
|
||||||
|
|
||||||
|
monster.name = enemy_name;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_UI(monster)
|
function this.init_UI(monster)
|
||||||
@@ -151,17 +153,17 @@ function this.init_UI(monster)
|
|||||||
);
|
);
|
||||||
end
|
end
|
||||||
|
|
||||||
local physical_param_field = enemy_character_base_type_def:get_field("<PhysicalParam>k__BackingField");
|
local get_physical_param_method = enemy_character_base_type_def:get_method("get_PhysicalParam");
|
||||||
local check_die_method = enemy_character_base_type_def:get_method("checkDie");
|
local check_die_method = enemy_character_base_type_def:get_method("checkDie");
|
||||||
|
|
||||||
local physical_param_type = physical_param_field:get_type();
|
local physical_param_type = get_physical_param_method:get_return_type();
|
||||||
local get_vital_method = physical_param_type:get_method("getVital");
|
local get_vital_method = physical_param_type:get_method("getVital");
|
||||||
|
|
||||||
local vital_param_type = get_vital_method:get_return_type();
|
local vital_param_type = get_vital_method:get_return_type();
|
||||||
local get_current_method = vital_param_type:get_method("get_Current");
|
local get_current_method = vital_param_type:get_method("get_Current");
|
||||||
local get_max_method = vital_param_type:get_method("get_Max");
|
local get_max_method = vital_param_type:get_method("get_Max");
|
||||||
|
|
||||||
local get_pos_field = enemy_character_base_type_def:get_method("get_Pos");
|
local get_pos_method = enemy_character_base_type_def:get_method("get_Pos");
|
||||||
|
|
||||||
function this.update_position(enemy, monster)
|
function this.update_position(enemy, monster)
|
||||||
local cached_config = config.current_config.small_monster_UI;
|
local cached_config = config.current_config.small_monster_UI;
|
||||||
@@ -174,10 +176,13 @@ function this.update_position(enemy, monster)
|
|||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local position = get_pos_field:call(enemy);
|
|
||||||
if position ~= nil then
|
local position = get_pos_method:call(enemy);
|
||||||
monster.position = position;
|
if position == nil then
|
||||||
|
error_handler.report("small_monster.update_position", "Failed to access Data: position");
|
||||||
end
|
end
|
||||||
|
|
||||||
|
monster.position = position;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.update(enemy, monster)
|
function this.update(enemy, monster)
|
||||||
@@ -188,6 +193,8 @@ function this.update(enemy, monster)
|
|||||||
local dead_or_captured = check_die_method:call(enemy);
|
local dead_or_captured = check_die_method:call(enemy);
|
||||||
if dead_or_captured ~= nil then
|
if dead_or_captured ~= nil then
|
||||||
monster.dead_or_captured = dead_or_captured;
|
monster.dead_or_captured = dead_or_captured;
|
||||||
|
else
|
||||||
|
error_handler.report("small_monster.update", "Failed to access Data: dead_or_captured");
|
||||||
end
|
end
|
||||||
|
|
||||||
pcall(ailments.update_ailments, enemy, monster);
|
pcall(ailments.update_ailments, enemy, monster);
|
||||||
@@ -198,25 +205,37 @@ function this.update_health(enemy, monster)
|
|||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local physical_param = physical_param_field:get_data(enemy)
|
local physical_param = get_physical_param_method:call(enemy);
|
||||||
if physical_param == nil then
|
if physical_param == nil then
|
||||||
customization_menu.status = "No physical param";
|
error_handler.report("small_monster.update_health", "Failed to access Data: physical_param");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local vital_param = get_vital_method:call(physical_param, 0, 0);
|
local vital_param = get_vital_method:call(physical_param, 0, 0);
|
||||||
if vital_param == nil then
|
if vital_param == nil then
|
||||||
customization_menu.status = "No vital param";
|
error_handler.report("small_monster.update_health", "Failed to access Data: vital_param");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
monster.health = get_current_method:call(vital_param) or monster.health;
|
local health = get_current_method:call(vital_param);
|
||||||
monster.max_health = get_max_method:call(vital_param) or monster.max_health;
|
if health ~= nil then
|
||||||
|
monster.health = health;
|
||||||
|
else
|
||||||
|
error_handler.report("small_monster.update_health", "Failed to access Data: health");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
monster.missing_health = monster.max_health - monster.health;
|
local max_health = get_max_method:call(vital_param);
|
||||||
if monster.max_health ~= 0 then
|
if max_health ~= nil then
|
||||||
monster.health_percentage = monster.health / monster.max_health;
|
monster.max_health = max_health;
|
||||||
monster.capture_percentage = monster.capture_health / monster.max_health;
|
else
|
||||||
|
error_handler.report("small_monster.update_health", "Failed to access Data: max_health");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
monster.missing_health = max_health - health;
|
||||||
|
if max_health ~= 0 then
|
||||||
|
monster.health_percentage = health / max_health;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -249,7 +268,7 @@ function this.init_list()
|
|||||||
this.list = {};
|
this.list = {};
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
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");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
@@ -262,6 +281,10 @@ function this.init_module()
|
|||||||
ailment_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_UI_entity");
|
ailment_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_UI_entity");
|
||||||
ailment_buildup = require("MHR_Overlay.Monsters.ailment_buildup");
|
ailment_buildup = require("MHR_Overlay.Monsters.ailment_buildup");
|
||||||
ailment_buildup_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_buildup_UI_entity");
|
ailment_buildup_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_buildup_UI_entity");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ local keyboard;
|
|||||||
local customization_menu;
|
local customization_menu;
|
||||||
local label_customization;
|
local label_customization;
|
||||||
local bar_customization;
|
local bar_customization;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -47,6 +48,61 @@ local os = os;
|
|||||||
local ValueType = ValueType;
|
local ValueType = ValueType;
|
||||||
local package = package;
|
local package = package;
|
||||||
|
|
||||||
|
this.ailment_buildups_sorting_types = {};
|
||||||
|
this.displayed_ailment_buildups_sorting_types = {};
|
||||||
|
|
||||||
|
this.highlighted_buildup_bar_types = {};
|
||||||
|
this.displayed_highlighted_buildup_bar_types = {};
|
||||||
|
|
||||||
|
this.buildup_bar_relative_types = {};
|
||||||
|
this.displayed_buildup_bar_relative_types = {};
|
||||||
|
|
||||||
|
function this.init()
|
||||||
|
local default = language.default_language.customization_menu;
|
||||||
|
local current = language.current_language.customization_menu;
|
||||||
|
|
||||||
|
this.ailment_buildups_sorting_types =
|
||||||
|
{
|
||||||
|
default.normal,
|
||||||
|
default.buildup,
|
||||||
|
default.buildup_percentage
|
||||||
|
};
|
||||||
|
|
||||||
|
this.displayed_ailment_buildups_sorting_types =
|
||||||
|
{
|
||||||
|
current.normal,
|
||||||
|
current.buildup,
|
||||||
|
current.buildup_percentage
|
||||||
|
};
|
||||||
|
|
||||||
|
this.highlighted_buildup_bar_types =
|
||||||
|
{
|
||||||
|
default.me,
|
||||||
|
default.top_buildup,
|
||||||
|
default.none
|
||||||
|
};
|
||||||
|
|
||||||
|
this.displayed_highlighted_buildup_bar_types =
|
||||||
|
{
|
||||||
|
current.me,
|
||||||
|
current.top_buildup,
|
||||||
|
current.none
|
||||||
|
};
|
||||||
|
|
||||||
|
this.buildup_bar_relative_types =
|
||||||
|
{
|
||||||
|
default.total_buildup,
|
||||||
|
default.top_buildup
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
this.displayed_buildup_bar_relative_types =
|
||||||
|
{
|
||||||
|
current.total_buildup,
|
||||||
|
current.top_buildup
|
||||||
|
};
|
||||||
|
end
|
||||||
|
|
||||||
function this.draw(cached_config)
|
function this.draw(cached_config)
|
||||||
local changed = false;
|
local changed = false;
|
||||||
local config_changed = false;
|
local config_changed = false;
|
||||||
@@ -103,24 +159,24 @@ function this.draw(cached_config)
|
|||||||
if imgui.tree_node(language.current_language.customization_menu.settings) then
|
if imgui.tree_node(language.current_language.customization_menu.settings) then
|
||||||
changed, index = imgui.combo(
|
changed, index = imgui.combo(
|
||||||
language.current_language.customization_menu.highlighted_bar,
|
language.current_language.customization_menu.highlighted_bar,
|
||||||
utils.table.find_index(customization_menu.highlighted_buildup_bar_types, cached_config.settings.highlighted_bar),
|
utils.table.find_index(this.highlighted_buildup_bar_types, cached_config.settings.highlighted_bar),
|
||||||
customization_menu.displayed_highlighted_buildup_bar_types);
|
this.displayed_highlighted_buildup_bar_types);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
if changed then
|
if changed then
|
||||||
cached_config.settings.highlighted_bar = customization_menu.highlighted_buildup_bar_types[index];
|
cached_config.settings.highlighted_bar = this.highlighted_buildup_bar_types[index];
|
||||||
end
|
end
|
||||||
|
|
||||||
changed, index = imgui.combo(
|
changed, index = imgui.combo(
|
||||||
language.current_language.customization_menu.buildup_bars_are_relative_to,
|
language.current_language.customization_menu.buildup_bars_are_relative_to,
|
||||||
utils.table.find_index(customization_menu.displayed_buildup_bar_relative_types, cached_config.settings.buildup_bar_relative_to),
|
utils.table.find_index(this.displayed_buildup_bar_relative_types, cached_config.settings.buildup_bar_relative_to),
|
||||||
customization_menu.displayed_buildup_bar_relative_types);
|
this.displayed_buildup_bar_relative_types);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
if changed then
|
if changed then
|
||||||
cached_config.settings.buildup_bar_relative_to = customization_menu.displayed_buildup_bar_relative_types[index];
|
cached_config.settings.buildup_bar_relative_to = this.displayed_buildup_bar_relative_types[index];
|
||||||
end
|
end
|
||||||
|
|
||||||
changed, cached_config.settings.time_limit = imgui.drag_float(
|
changed, cached_config.settings.time_limit = imgui.drag_float(
|
||||||
@@ -134,13 +190,13 @@ function this.draw(cached_config)
|
|||||||
if imgui.tree_node(language.current_language.customization_menu.sorting) then
|
if imgui.tree_node(language.current_language.customization_menu.sorting) then
|
||||||
changed, index = imgui.combo(
|
changed, index = imgui.combo(
|
||||||
language.current_language.customization_menu.type,
|
language.current_language.customization_menu.type,
|
||||||
utils.table.find_index(customization_menu.ailment_buildups_sorting_types, cached_config.sorting.type),
|
utils.table.find_index(this.ailment_buildups_sorting_types, cached_config.sorting.type),
|
||||||
customization_menu.displayed_ailment_buildups_sorting_types);
|
this.displayed_ailment_buildups_sorting_types);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
if changed then
|
if changed then
|
||||||
cached_config.sorting.type = customization_menu.ailment_buildups_sorting_types[index];
|
cached_config.sorting.type = this.ailment_buildups_sorting_types[index];
|
||||||
end
|
end
|
||||||
|
|
||||||
changed, cached_config.sorting.reversed_order = imgui.checkbox(
|
changed, cached_config.sorting.reversed_order = imgui.checkbox(
|
||||||
@@ -200,7 +256,7 @@ function this.draw(cached_config)
|
|||||||
return config_changed;
|
return config_changed;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
@@ -216,6 +272,10 @@ function this.init_module()
|
|||||||
|
|
||||||
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");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@@ -14,6 +14,7 @@ local keyboard;
|
|||||||
local customization_menu;
|
local customization_menu;
|
||||||
local label_customization;
|
local label_customization;
|
||||||
local bar_customization;
|
local bar_customization;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -47,6 +48,27 @@ local os = os;
|
|||||||
local ValueType = ValueType;
|
local ValueType = ValueType;
|
||||||
local package = package;
|
local package = package;
|
||||||
|
|
||||||
|
this.ailments_sorting_types = {};
|
||||||
|
this.displayed_ailments_sorting_types = {};
|
||||||
|
|
||||||
|
|
||||||
|
function this.init()
|
||||||
|
local default = language.default_language.customization_menu;
|
||||||
|
local current = language.current_language.customization_menu;
|
||||||
|
|
||||||
|
this.ailments_sorting_types = {
|
||||||
|
default.normal,
|
||||||
|
default.buildup,
|
||||||
|
default.buildup_percentage
|
||||||
|
};
|
||||||
|
|
||||||
|
this.displayed_ailments_sorting_types = {
|
||||||
|
current.normal,
|
||||||
|
current.buildup,
|
||||||
|
current.buildup_percentage
|
||||||
|
};
|
||||||
|
end
|
||||||
|
|
||||||
function this.draw(cached_config)
|
function this.draw(cached_config)
|
||||||
local changed = false;
|
local changed = false;
|
||||||
local config_changed = false;
|
local config_changed = false;
|
||||||
@@ -143,13 +165,13 @@ function this.draw(cached_config)
|
|||||||
if imgui.tree_node(language.current_language.customization_menu.sorting) then
|
if imgui.tree_node(language.current_language.customization_menu.sorting) then
|
||||||
changed, index = imgui.combo(
|
changed, index = imgui.combo(
|
||||||
language.current_language.customization_menu.type,
|
language.current_language.customization_menu.type,
|
||||||
utils.table.find_index(customization_menu.ailments_sorting_types, cached_config.sorting.type),
|
utils.table.find_index(this.ailments_sorting_types, cached_config.sorting.type),
|
||||||
customization_menu.displayed_ailments_sorting_types);
|
this.displayed_ailments_sorting_types);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
if changed then
|
if changed then
|
||||||
cached_config.sorting.type = customization_menu.ailments_sorting_types[index];
|
cached_config.sorting.type = this.ailments_sorting_types[index];
|
||||||
end
|
end
|
||||||
|
|
||||||
changed, cached_config.sorting.reversed_order = imgui.checkbox(
|
changed, cached_config.sorting.reversed_order = imgui.checkbox(
|
||||||
@@ -365,7 +387,7 @@ function this.draw(cached_config)
|
|||||||
return config_changed;
|
return config_changed;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
@@ -380,6 +402,10 @@ function this.init_module()
|
|||||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
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");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@@ -13,6 +13,7 @@ local time_UI;
|
|||||||
local keyboard;
|
local keyboard;
|
||||||
local customization_menu;
|
local customization_menu;
|
||||||
local line_customization;
|
local line_customization;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -46,72 +47,122 @@ local os = os;
|
|||||||
local ValueType = ValueType;
|
local ValueType = ValueType;
|
||||||
local package = package;
|
local package = package;
|
||||||
|
|
||||||
|
local outline_styles = {};
|
||||||
|
local displayed_outline_styles = {};
|
||||||
|
|
||||||
|
local directions = {};
|
||||||
|
local displayed_directions = {};
|
||||||
|
|
||||||
|
function this.init()
|
||||||
|
local default = language.default_language.customization_menu;
|
||||||
|
local current = language.current_language.customization_menu;
|
||||||
|
|
||||||
|
outline_styles = {
|
||||||
|
default.inside,
|
||||||
|
default.center,
|
||||||
|
default.outside
|
||||||
|
};
|
||||||
|
|
||||||
|
displayed_outline_styles = {
|
||||||
|
current.inside,
|
||||||
|
current.center,
|
||||||
|
current.outside
|
||||||
|
};
|
||||||
|
|
||||||
|
directions = {
|
||||||
|
default.left_to_right,
|
||||||
|
default.right_to_left,
|
||||||
|
default.top_to_bottom,
|
||||||
|
default.bottom_to_top
|
||||||
|
};
|
||||||
|
|
||||||
|
displayed_directions = {
|
||||||
|
current.left_to_right,
|
||||||
|
current.right_to_left,
|
||||||
|
current.top_to_bottom,
|
||||||
|
current.bottom_to_top
|
||||||
|
};
|
||||||
|
end
|
||||||
|
|
||||||
function this.draw(bar_name, bar)
|
function this.draw(bar_name, bar)
|
||||||
if bar == nil then
|
if bar == nil then
|
||||||
return false;
|
return false;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local cached_language = language.current_language.customization_menu;
|
||||||
|
|
||||||
local bar_changed = false;
|
local bar_changed = false;
|
||||||
local changed = false;
|
local changed = false;
|
||||||
local index = 1;
|
local index = 1;
|
||||||
|
|
||||||
if imgui.tree_node(bar_name) then
|
if imgui.tree_node(bar_name) then
|
||||||
changed, bar.visibility = imgui.checkbox(language.current_language.customization_menu.visible
|
changed, bar.visibility = imgui.checkbox(cached_language.visible
|
||||||
, bar.visibility);
|
, bar.visibility);
|
||||||
bar_changed = bar_changed or changed;
|
bar_changed = bar_changed or changed;
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.offset) then
|
if imgui.tree_node(cached_language.settings) then
|
||||||
changed, bar.offset.x = imgui.drag_float(language.current_language.customization_menu.x,
|
local fill_direction_index = utils.table.find_index(directions, bar.settings.fill_direction);
|
||||||
|
changed, fill_direction_index = imgui.combo(cached_language.fill_direction, fill_direction_index, displayed_directions);
|
||||||
|
|
||||||
|
bar_changed = bar_changed or changed;
|
||||||
|
|
||||||
|
if changed then
|
||||||
|
bar.settings.fill_direction = directions[fill_direction_index];
|
||||||
|
end
|
||||||
|
|
||||||
|
imgui.tree_pop();
|
||||||
|
end
|
||||||
|
|
||||||
|
if imgui.tree_node(cached_language.offset) then
|
||||||
|
changed, bar.offset.x = imgui.drag_float(cached_language.x,
|
||||||
bar.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
bar.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
||||||
bar_changed = bar_changed or changed;
|
bar_changed = bar_changed or changed;
|
||||||
|
|
||||||
changed, bar.offset.y = imgui.drag_float(language.current_language.customization_menu.y,
|
changed, bar.offset.y = imgui.drag_float(cached_language.y,
|
||||||
bar.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
bar.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
||||||
bar_changed = bar_changed or changed;
|
bar_changed = bar_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.size) then
|
if imgui.tree_node(cached_language.size) then
|
||||||
changed, bar.size.width = imgui.drag_float(language.current_language.customization_menu.width,
|
changed, bar.size.width = imgui.drag_float(cached_language.width,
|
||||||
bar.size.width, 0.1, 0, screen.width, "%.1f");
|
bar.size.width, 0.1, 0, screen.width, "%.1f");
|
||||||
bar_changed = bar_changed or changed;
|
bar_changed = bar_changed or changed;
|
||||||
|
|
||||||
changed, bar.size.height = imgui.drag_float(language.current_language.customization_menu.height,
|
changed, bar.size.height = imgui.drag_float(cached_language.height,
|
||||||
bar.size.height, 0.1, 0, screen.height, "%.1f");
|
bar.size.height, 0.1, 0, screen.height, "%.1f");
|
||||||
bar_changed = bar_changed or changed;
|
bar_changed = bar_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.outline) then
|
if imgui.tree_node(cached_language.outline) then
|
||||||
changed, bar.outline.visibility = imgui.checkbox(language.current_language.customization_menu.visible
|
changed, bar.outline.visibility = imgui.checkbox(cached_language.visible
|
||||||
, bar.outline.visibility);
|
, bar.outline.visibility);
|
||||||
bar_changed = bar_changed or changed;
|
bar_changed = bar_changed or changed;
|
||||||
|
|
||||||
changed, bar.outline.thickness = imgui.drag_float(language.current_language.customization_menu.thickness,
|
changed, bar.outline.thickness = imgui.drag_float(cached_language.thickness,
|
||||||
bar.outline.thickness, 0.1, 0, screen.width, "%.1f");
|
bar.outline.thickness, 0.1, 0, screen.width, "%.1f");
|
||||||
bar_changed = bar_changed or changed;
|
bar_changed = bar_changed or changed;
|
||||||
|
|
||||||
changed, bar.outline.offset = imgui.drag_float(language.current_language.customization_menu.offset,
|
changed, bar.outline.offset = imgui.drag_float(cached_language.offset,
|
||||||
bar.outline.offset, 0.1, -screen.height, screen.height, "%.1f");
|
bar.outline.offset, 0.1, -screen.height, screen.height, "%.1f");
|
||||||
bar_changed = bar_changed or changed;
|
bar_changed = bar_changed or changed;
|
||||||
|
|
||||||
|
changed, index = imgui.combo(cached_language.style,
|
||||||
changed, index = imgui.combo(language.current_language.customization_menu.style,
|
utils.table.find_index(outline_styles, bar.outline.style),
|
||||||
utils.table.find_index(customization_menu.outline_styles,
|
displayed_outline_styles);
|
||||||
bar.outline.style),
|
|
||||||
customization_menu.displayed_outline_styles);
|
|
||||||
bar_changed = bar_changed or changed;
|
bar_changed = bar_changed or changed;
|
||||||
|
|
||||||
if changed then
|
if changed then
|
||||||
bar.outline.style = customization_menu.outline_styles[index];
|
bar.outline.style = outline_styles[index];
|
||||||
end
|
end
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.colors) then
|
if imgui.tree_node(cached_language.colors) then
|
||||||
local colors = nil;
|
local colors = nil;
|
||||||
if bar.colors ~= nil then
|
if bar.colors ~= nil then
|
||||||
colors = bar.colors;
|
colors = bar.colors;
|
||||||
@@ -119,7 +170,7 @@ function this.draw(bar_name, bar)
|
|||||||
colors = bar.normal_colors;
|
colors = bar.normal_colors;
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.foreground) then
|
if imgui.tree_node(cached_language.foreground) then
|
||||||
changed, colors.foreground = imgui.color_picker_argb("", colors.foreground,
|
changed, colors.foreground = imgui.color_picker_argb("", colors.foreground,
|
||||||
customization_menu.color_picker_flags);
|
customization_menu.color_picker_flags);
|
||||||
bar_changed = bar_changed or changed;
|
bar_changed = bar_changed or changed;
|
||||||
@@ -127,7 +178,7 @@ function this.draw(bar_name, bar)
|
|||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.background) then
|
if imgui.tree_node(cached_language.background) then
|
||||||
changed, colors.background = imgui.color_picker_argb("", colors.background,
|
changed, colors.background = imgui.color_picker_argb("", colors.background,
|
||||||
customization_menu.color_picker_flags);
|
customization_menu.color_picker_flags);
|
||||||
bar_changed = bar_changed or changed;
|
bar_changed = bar_changed or changed;
|
||||||
@@ -135,7 +186,7 @@ function this.draw(bar_name, bar)
|
|||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.outline) then
|
if imgui.tree_node(cached_language.outline) then
|
||||||
changed, colors.outline = imgui.color_picker_argb("", colors.outline,
|
changed, colors.outline = imgui.color_picker_argb("", colors.outline,
|
||||||
customization_menu.color_picker_flags);
|
customization_menu.color_picker_flags);
|
||||||
bar_changed = bar_changed or changed;
|
bar_changed = bar_changed or changed;
|
||||||
@@ -144,8 +195,8 @@ function this.draw(bar_name, bar)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if bar.capture_colors ~= nil then
|
if bar.capture_colors ~= nil then
|
||||||
if imgui.tree_node(language.current_language.customization_menu.monster_can_be_captured) then
|
if imgui.tree_node(cached_language.monster_can_be_captured) then
|
||||||
if imgui.tree_node(language.current_language.customization_menu.foreground) then
|
if imgui.tree_node(cached_language.foreground) then
|
||||||
changed, bar.capture_colors.foreground = imgui.color_picker_argb("",
|
changed, bar.capture_colors.foreground = imgui.color_picker_argb("",
|
||||||
bar.capture_colors.foreground
|
bar.capture_colors.foreground
|
||||||
,
|
,
|
||||||
@@ -155,7 +206,7 @@ function this.draw(bar_name, bar)
|
|||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.background) then
|
if imgui.tree_node(cached_language.background) then
|
||||||
changed, bar.capture_colors.background = imgui.color_picker_argb("",
|
changed, bar.capture_colors.background = imgui.color_picker_argb("",
|
||||||
bar.capture_colors.background
|
bar.capture_colors.background
|
||||||
,
|
,
|
||||||
@@ -165,7 +216,7 @@ function this.draw(bar_name, bar)
|
|||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.outline) then
|
if imgui.tree_node(cached_language.outline) then
|
||||||
changed, bar.capture_colors.outline = imgui.color_picker_argb("",
|
changed, bar.capture_colors.outline = imgui.color_picker_argb("",
|
||||||
bar.capture_colors.outline
|
bar.capture_colors.outline
|
||||||
,
|
,
|
||||||
@@ -182,7 +233,7 @@ function this.draw(bar_name, bar)
|
|||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
changed = line_customization.draw(language.current_language.customization_menu.capture_line, bar.capture_line);
|
changed = line_customization.draw(cached_language.capture_line, bar.capture_line);
|
||||||
bar_changed = bar_changed or changed;
|
bar_changed = bar_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
@@ -191,7 +242,7 @@ function this.draw(bar_name, bar)
|
|||||||
return bar_changed;
|
return bar_changed;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
@@ -205,6 +256,10 @@ function this.init_module()
|
|||||||
keyboard = require("MHR_Overlay.Game_Handler.keyboard");
|
keyboard = require("MHR_Overlay.Game_Handler.keyboard");
|
||||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
line_customization = require("MHR_Overlay.UI.Customizations.line_customization");
|
line_customization = require("MHR_Overlay.UI.Customizations.line_customization");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ local keyboard;
|
|||||||
local customization_menu;
|
local customization_menu;
|
||||||
local label_customization;
|
local label_customization;
|
||||||
local bar_customization;
|
local bar_customization;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -47,171 +48,279 @@ local os = os;
|
|||||||
local ValueType = ValueType;
|
local ValueType = ValueType;
|
||||||
local package = package;
|
local package = package;
|
||||||
|
|
||||||
|
this.large_monster_UI_parts_sorting_types = {};
|
||||||
|
this.displayed_large_monster_UI_parts_sorting_types = {};
|
||||||
|
|
||||||
|
this.large_monster_UI_parts_filter_types = {};
|
||||||
|
this.displayed_large_monster_UI_parts_filter_types = {};
|
||||||
|
|
||||||
|
function this.init()
|
||||||
|
local default = language.default_language.customization_menu;
|
||||||
|
local current = language.current_language.customization_menu;
|
||||||
|
|
||||||
|
this.large_monster_UI_parts_sorting_types =
|
||||||
|
{
|
||||||
|
default.normal,
|
||||||
|
default.health,
|
||||||
|
default.health_percentage,
|
||||||
|
default.flinch_count,
|
||||||
|
default.break_health,
|
||||||
|
default.break_health_percentage,
|
||||||
|
default.break_count,
|
||||||
|
default.loss_health,
|
||||||
|
default.loss_health_percentage,
|
||||||
|
default.anomaly_health,
|
||||||
|
default.anomaly_health_percentage
|
||||||
|
};
|
||||||
|
|
||||||
|
this.displayed_large_monster_UI_parts_sorting_types =
|
||||||
|
{
|
||||||
|
current.normal,
|
||||||
|
current.health,
|
||||||
|
current.health_percentage,
|
||||||
|
current.flinch_count,
|
||||||
|
current.break_health,
|
||||||
|
current.break_health_percentage,
|
||||||
|
current.break_count,
|
||||||
|
current.loss_health,
|
||||||
|
current.loss_health_percentage,
|
||||||
|
current.anomaly_health,
|
||||||
|
current.anomaly_health_percentage
|
||||||
|
};
|
||||||
|
|
||||||
|
this.large_monster_UI_parts_filter_types =
|
||||||
|
{
|
||||||
|
default.current_state,
|
||||||
|
default.default_state
|
||||||
|
};
|
||||||
|
|
||||||
|
this.displayed_large_monster_UI_parts_filter_types =
|
||||||
|
{
|
||||||
|
current.current_state,
|
||||||
|
current.default_state
|
||||||
|
};
|
||||||
|
end
|
||||||
|
|
||||||
function this.draw(cached_config)
|
function this.draw(cached_config)
|
||||||
|
local cached_language = language.current_language.customization_menu;
|
||||||
|
|
||||||
local changed = false;
|
local changed = false;
|
||||||
local config_changed = false;
|
local config_changed = false;
|
||||||
local index = 0;
|
local index = 0;
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.body_parts) then
|
if imgui.tree_node(cached_language.body_parts) then
|
||||||
changed, cached_config.visibility = imgui.checkbox(
|
changed, cached_config.visibility = imgui.checkbox(
|
||||||
language.current_language.customization_menu.visible, cached_config.visibility);
|
cached_language.visible, cached_config.visibility);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.offset) then
|
if imgui.tree_node(cached_language.offset) then
|
||||||
changed, cached_config.offset.x = imgui.drag_float(
|
changed, cached_config.offset.x = imgui.drag_float(
|
||||||
language.current_language.customization_menu.x, cached_config.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
cached_language.x, cached_config.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.offset.y = imgui.drag_float(
|
changed, cached_config.offset.y = imgui.drag_float(
|
||||||
language.current_language.customization_menu.y, cached_config.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
cached_language.y, cached_config.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.spacing) then
|
if imgui.tree_node(cached_language.spacing) then
|
||||||
changed, cached_config.spacing.x = imgui.drag_float(
|
changed, cached_config.spacing.x = imgui.drag_float(
|
||||||
language.current_language.customization_menu.x, cached_config.spacing.x, 0.1, -screen.width, screen.width, "%.1f");
|
cached_language.x, cached_config.spacing.x, 0.1, -screen.width, screen.width, "%.1f");
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.spacing.y = imgui.drag_float(
|
changed, cached_config.spacing.y = imgui.drag_float(
|
||||||
language.current_language.customization_menu.y, cached_config.spacing.y, 0.1, -screen.height, screen.height, "%.1f");
|
cached_language.y, cached_config.spacing.y, 0.1, -screen.height, screen.height, "%.1f");
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.settings) then
|
if imgui.tree_node(cached_language.settings) then
|
||||||
changed, cached_config.settings.hide_undamaged_parts = imgui.checkbox(
|
changed, cached_config.settings.hide_undamaged_parts = imgui.checkbox(
|
||||||
language.current_language.customization_menu.hide_undamaged_parts, cached_config.settings.hide_undamaged_parts);
|
cached_language.hide_undamaged_parts, cached_config.settings.hide_undamaged_parts);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed, index = imgui.combo(language.current_language.customization_menu.filter_mode,
|
changed, cached_config.settings.render_inactive_anomaly_cores = imgui.checkbox(
|
||||||
utils.table.find_index(customization_menu.large_monster_UI_parts_filter_types, cached_config.settings.filter_mode),
|
cached_language.render_inactive_anomaly_cores, cached_config.settings.render_inactive_anomaly_cores);
|
||||||
customization_menu.displayed_large_monster_UI_parts_filter_types);
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
changed, index = imgui.combo(cached_language.filter_mode,
|
||||||
|
utils.table.find_index(this.large_monster_UI_parts_filter_types, cached_config.settings.filter_mode),
|
||||||
|
this.displayed_large_monster_UI_parts_filter_types);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
if changed then
|
if changed then
|
||||||
cached_config.settings.filter_mode = customization_menu.large_monster_UI_parts_filter_types[index];
|
cached_config.settings.filter_mode = this.large_monster_UI_parts_filter_types[index];
|
||||||
end
|
end
|
||||||
|
|
||||||
changed, cached_config.settings.time_limit = imgui.drag_float(
|
changed, cached_config.settings.time_limit = imgui.drag_float(
|
||||||
language.current_language.customization_menu.time_limit, cached_config.settings.time_limit, 0.1, 0, 99999, "%.1f");
|
cached_language.time_limit, cached_config.settings.time_limit, 0.1, 0, 99999, "%.1f");
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.sorting) then
|
if imgui.tree_node(cached_language.sorting) then
|
||||||
changed, index = imgui.combo(
|
changed, index = imgui.combo(
|
||||||
language.current_language.customization_menu.type,
|
cached_language.type,
|
||||||
utils.table.find_index(customization_menu.large_monster_UI_parts_sorting_types, cached_config.sorting.type),
|
utils.table.find_index(this.large_monster_UI_parts_sorting_types, cached_config.sorting.type),
|
||||||
customization_menu.displayed_large_monster_UI_parts_sorting_types);
|
this.displayed_large_monster_UI_parts_sorting_types);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
if changed then
|
if changed then
|
||||||
cached_config.sorting.type = customization_menu.large_monster_UI_parts_sorting_types[index];
|
cached_config.sorting.type = this.large_monster_UI_parts_sorting_types[index];
|
||||||
end
|
end
|
||||||
|
|
||||||
changed, cached_config.sorting.reversed_order = imgui.checkbox(
|
changed, cached_config.sorting.reversed_order = imgui.checkbox(
|
||||||
language.current_language.customization_menu.reversed_order, cached_config.sorting.reversed_order);
|
cached_language.reversed_order, cached_config.sorting.reversed_order);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.filter) then
|
if imgui.tree_node(cached_language.filter) then
|
||||||
changed, cached_config.filter.health_break_severe = imgui.checkbox(
|
changed, cached_config.filter.health_break_sever_anomaly = imgui.checkbox(
|
||||||
language.current_language.customization_menu.health_break_severe_filter, cached_config.filter.health_break_severe);
|
cached_language.health_break_sever_anomaly_filter, cached_config.filter.health_break_sever_anomaly);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
changed, cached_config.filter.health_break_sever = imgui.checkbox(
|
||||||
|
cached_language.health_break_sever_filter, cached_config.filter.health_break_sever);
|
||||||
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
changed, cached_config.filter.health_break_anomaly = imgui.checkbox(
|
||||||
|
cached_language.health_break_anomaly_filter, cached_config.filter.health_break_anomaly);
|
||||||
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
changed, cached_config.filter.health_sever_anomaly = imgui.checkbox(
|
||||||
|
cached_language.health_sever_anomaly_filter, cached_config.filter.health_sever_anomaly);
|
||||||
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
changed, cached_config.filter.break_sever_anomaly = imgui.checkbox(
|
||||||
|
cached_language.break_sever_anomaly_filter, cached_config.filter.break_sever_anomaly);
|
||||||
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
changed, cached_config.filter.health_break = imgui.checkbox(
|
changed, cached_config.filter.health_break = imgui.checkbox(
|
||||||
language.current_language.customization_menu.health_break_filter, cached_config.filter.health_break);
|
cached_language.health_break_filter, cached_config.filter.health_break);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.filter.health_severe = imgui.checkbox(
|
changed, cached_config.filter.health_sever = imgui.checkbox(
|
||||||
language.current_language.customization_menu.health_severe_filter, cached_config.filter.health_severe);
|
cached_language.health_sever_filter, cached_config.filter.health_sever);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
changed, cached_config.filter.health_anomaly = imgui.checkbox(
|
||||||
|
cached_language.health_anomaly_filter, cached_config.filter.health_anomaly);
|
||||||
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
changed, cached_config.filter.break_sever = imgui.checkbox(
|
||||||
|
cached_language.break_sever_filter, cached_config.filter.break_sever);
|
||||||
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
changed, cached_config.filter.break_anomaly = imgui.checkbox(
|
||||||
|
cached_language.break_anomaly_filter, cached_config.filter.break_anomaly);
|
||||||
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
changed, cached_config.filter.sever_anomaly = imgui.checkbox(
|
||||||
|
cached_language.sever_anomaly_filter, cached_config.filter.sever_anomaly);
|
||||||
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
changed, cached_config.filter.health = imgui.checkbox(
|
changed, cached_config.filter.health = imgui.checkbox(
|
||||||
language.current_language.customization_menu.health_filter, cached_config.filter.health);
|
cached_language.health_filter, cached_config.filter.health);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
|
||||||
|
|
||||||
changed, cached_config.filter.break_severe = imgui.checkbox(
|
|
||||||
language.current_language.customization_menu.break_severe_filter, cached_config.filter.break_severe);
|
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.filter.break_ = imgui.checkbox(
|
changed, cached_config.filter.break_ = imgui.checkbox(
|
||||||
language.current_language.customization_menu.break_filter, cached_config.filter.break_);
|
cached_language.break_filter, cached_config.filter.break_);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.filter.severe = imgui.checkbox(
|
changed, cached_config.filter.sever = imgui.checkbox(
|
||||||
language.current_language.customization_menu.severe_filter, cached_config.filter.severe);
|
cached_language.sever_filter, cached_config.filter.sever);
|
||||||
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
changed, cached_config.filter.anomaly = imgui.checkbox(
|
||||||
|
cached_language.anomaly_filter, cached_config.filter.anomaly);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.part_name_label) then
|
if imgui.tree_node(cached_language.part_name_label) then
|
||||||
changed, cached_config.part_name_label.visibility = imgui.checkbox(
|
changed, cached_config.part_name_label.visibility = imgui.checkbox(
|
||||||
language.current_language.customization_menu.visible, cached_config.part_name_label.visibility);
|
cached_language.visible, cached_config.part_name_label.visibility);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.include) then
|
if imgui.tree_node(cached_language.include) then
|
||||||
changed, cached_config.part_name_label.include.part_name = imgui.checkbox(
|
changed, cached_config.part_name_label.include.part_name = imgui.checkbox(
|
||||||
language.current_language.customization_menu.part_name, cached_config.part_name_label.include.part_name);
|
cached_language.part_name, cached_config.part_name_label.include.part_name);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.part_name_label.include.flinch_count = imgui.checkbox(
|
changed, cached_config.part_name_label.include.flinch_count = imgui.checkbox(
|
||||||
language.current_language.customization_menu.flinch_count, cached_config.part_name_label.include.flinch_count);
|
cached_language.flinch_count, cached_config.part_name_label.include.flinch_count);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.part_name_label.include.break_count = imgui.checkbox(
|
changed, cached_config.part_name_label.include.break_count = imgui.checkbox(
|
||||||
language.current_language.customization_menu.break_count, cached_config.part_name_label.include.break_count);
|
cached_language.break_count, cached_config.part_name_label.include.break_count);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.part_name_label.include.break_max_count = imgui.checkbox(
|
changed, cached_config.part_name_label.include.break_max_count = imgui.checkbox(
|
||||||
language.current_language.customization_menu.break_max_count, cached_config.part_name_label.include.break_max_count);
|
cached_language.break_max_count, cached_config.part_name_label.include.break_max_count);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.offset) then
|
if imgui.tree_node(cached_language.offset) then
|
||||||
changed, cached_config.part_name_label.offset.x = imgui.drag_float(
|
changed, cached_config.part_name_label.offset.x = imgui.drag_float(
|
||||||
language.current_language.customization_menu.x, cached_config.part_name_label.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
cached_language.x, cached_config.part_name_label.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.part_name_label.offset.y = imgui.drag_float(
|
changed, cached_config.part_name_label.offset.y = imgui.drag_float(
|
||||||
language.current_language.customization_menu.y, cached_config.part_name_label.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
cached_language.y, cached_config.part_name_label.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.color) then
|
if imgui.tree_node(cached_language.color) then
|
||||||
changed, cached_config.part_name_label.color = imgui.color_picker_argb(
|
changed, cached_config.part_name_label.color = imgui.color_picker_argb(
|
||||||
"", cached_config.part_name_label.color, customization_menu.color_picker_flags);
|
"", cached_config.part_name_label.color, customization_menu.color_picker_flags);
|
||||||
|
|
||||||
@@ -220,21 +329,21 @@ function this.draw(cached_config)
|
|||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.shadow) then
|
if imgui.tree_node(cached_language.shadow) then
|
||||||
changed, cached_config.part_name_label.shadow.visibility = imgui.checkbox(
|
changed, cached_config.part_name_label.shadow.visibility = imgui.checkbox(
|
||||||
language.current_language.customization_menu.visible, cached_config.part_name_label.shadow.visibility);
|
cached_language.visible, cached_config.part_name_label.shadow.visibility);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.offset) then
|
if imgui.tree_node(cached_language.offset) then
|
||||||
changed, cached_config.part_name_label.shadow.offset.x = imgui.drag_float(
|
changed, cached_config.part_name_label.shadow.offset.x = imgui.drag_float(
|
||||||
language.current_language.customization_menu.x, cached_config.part_name_label.shadow.offset.x,
|
cached_language.x, cached_config.part_name_label.shadow.offset.x,
|
||||||
0.1, -screen.width, screen.width, "%.1f");
|
0.1, -screen.width, screen.width, "%.1f");
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.part_name_label.shadow.offset.y = imgui.drag_float(
|
changed, cached_config.part_name_label.shadow.offset.y = imgui.drag_float(
|
||||||
language.current_language.customization_menu.y, cached_config.part_name_label.shadow.offset.y,
|
cached_language.y, cached_config.part_name_label.shadow.offset.y,
|
||||||
0.1, -screen.height, screen.height, "%.1f");
|
0.1, -screen.height, screen.height, "%.1f");
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
@@ -242,7 +351,7 @@ function this.draw(cached_config)
|
|||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.color) then
|
if imgui.tree_node(cached_language.color) then
|
||||||
changed, cached_config.part_name_label.shadow.color = imgui.color_picker_argb(
|
changed, cached_config.part_name_label.shadow.color = imgui.color_picker_argb(
|
||||||
"",cached_config.part_name_label.shadow.color, customization_menu.color_picker_flags);
|
"",cached_config.part_name_label.shadow.color, customization_menu.color_picker_flags);
|
||||||
|
|
||||||
@@ -257,106 +366,141 @@ function this.draw(cached_config)
|
|||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.part_health) then
|
if imgui.tree_node(cached_language.part_health) then
|
||||||
changed, cached_config.part_health.visibility = imgui.checkbox(
|
changed, cached_config.part_health.visibility = imgui.checkbox(
|
||||||
language.current_language.customization_menu.visible, cached_config.part_health.visibility);
|
cached_language.visible, cached_config.part_health.visibility);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.offset) then
|
if imgui.tree_node(cached_language.offset) then
|
||||||
changed, cached_config.part_health.offset.x = imgui.drag_float(
|
changed, cached_config.part_health.offset.x = imgui.drag_float(
|
||||||
language.current_language.customization_menu.x, cached_config.part_health.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
cached_language.x, cached_config.part_health.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.part_health.offset.y = imgui.drag_float(
|
changed, cached_config.part_health.offset.y = imgui.drag_float(
|
||||||
language.current_language.customization_menu.y, cached_config.part_health.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
cached_language.y, cached_config.part_health.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
changed = label_customization.draw(language.current_language.customization_menu.text_label, cached_config.part_health.text_label);
|
changed = label_customization.draw(cached_language.text_label, cached_config.part_health.text_label);
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed = label_customization.draw(language.current_language.customization_menu.value_label, cached_config.part_health.value_label);
|
changed = label_customization.draw(cached_language.value_label, cached_config.part_health.value_label);
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed = label_customization.draw(language.current_language.customization_menu.percentage_label, cached_config.part_health.percentage_label);
|
changed = label_customization.draw(cached_language.percentage_label, cached_config.part_health.percentage_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.part_health.bar);
|
changed = bar_customization.draw(cached_language.bar, cached_config.part_health.bar);
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.break_health) then
|
if imgui.tree_node(cached_language.break_health) then
|
||||||
changed, cached_config.part_break.visibility = imgui.checkbox(
|
changed, cached_config.part_break.visibility = imgui.checkbox(
|
||||||
language.current_language.customization_menu.visible, cached_config.part_break.visibility);
|
cached_language.visible, cached_config.part_break.visibility);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.offset) then
|
if imgui.tree_node(cached_language.offset) then
|
||||||
changed, cached_config.part_break.offset.x = imgui.drag_float(
|
changed, cached_config.part_break.offset.x = imgui.drag_float(
|
||||||
language.current_language.customization_menu.x, cached_config.part_break.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
cached_language.x, cached_config.part_break.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.part_break.offset.y = imgui.drag_float(
|
changed, cached_config.part_break.offset.y = imgui.drag_float(
|
||||||
language.current_language.customization_menu.y, cached_config.part_break.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
cached_language.y, cached_config.part_break.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
changed = label_customization.draw(language.current_language.customization_menu.text_label, cached_config.part_break.text_label);
|
changed = label_customization.draw(cached_language.text_label, cached_config.part_break.text_label);
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed = label_customization.draw(language.current_language.customization_menu.value_label, cached_config.part_break.value_label);
|
changed = label_customization.draw(cached_language.value_label, cached_config.part_break.value_label);
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed = label_customization.draw(language.current_language.customization_menu.percentage_label, cached_config.part_break.percentage_label);
|
changed = label_customization.draw(cached_language.percentage_label, cached_config.part_break.percentage_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.part_break.bar);
|
changed = bar_customization.draw(cached_language.bar, cached_config.part_break.bar);
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.loss_health) then
|
if imgui.tree_node(cached_language.loss_health) then
|
||||||
changed, cached_config.part_loss.visibility = imgui.checkbox(
|
changed, cached_config.part_loss.visibility = imgui.checkbox(
|
||||||
language.current_language.customization_menu.visible, cached_config.part_loss.visibility);
|
cached_language.visible, cached_config.part_loss.visibility);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.offset) then
|
if imgui.tree_node(cached_language.offset) then
|
||||||
changed, cached_config.part_loss.offset.x = imgui.drag_float(
|
changed, cached_config.part_loss.offset.x = imgui.drag_float(
|
||||||
language.current_language.customization_menu.x, cached_config.part_loss.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
cached_language.x, cached_config.part_loss.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.part_loss.offset.y = imgui.drag_float(
|
changed, cached_config.part_loss.offset.y = imgui.drag_float(
|
||||||
language.current_language.customization_menu.y, cached_config.part_loss.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
cached_language.y, cached_config.part_loss.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
changed = label_customization.draw(language.current_language.customization_menu.text_label, cached_config.part_loss.text_label);
|
changed = label_customization.draw(cached_language.text_label, cached_config.part_loss.text_label);
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed = label_customization.draw(language.current_language.customization_menu.value_label, cached_config.part_loss.value_label);
|
changed = label_customization.draw(cached_language.value_label, cached_config.part_loss.value_label);
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
changed = label_customization.draw(language.current_language.customization_menu.percentage_label, cached_config.part_loss.percentage_label);
|
changed = label_customization.draw(cached_language.percentage_label, cached_config.part_loss.percentage_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.part_loss.bar);
|
changed = bar_customization.draw(cached_language.bar, cached_config.part_loss.bar);
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
imgui.tree_pop();
|
||||||
|
end
|
||||||
|
|
||||||
|
if imgui.tree_node(cached_language.anomaly_health) then
|
||||||
|
changed, cached_config.part_anomaly.visibility = imgui.checkbox(
|
||||||
|
cached_language.visible, cached_config.part_anomaly.visibility);
|
||||||
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
if imgui.tree_node(cached_language.offset) then
|
||||||
|
changed, cached_config.part_anomaly.offset.x = imgui.drag_float(
|
||||||
|
cached_language.x, cached_config.part_anomaly.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
||||||
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
changed, cached_config.part_anomaly.offset.y = imgui.drag_float(
|
||||||
|
cached_language.y, cached_config.part_anomaly.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
||||||
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
imgui.tree_pop();
|
||||||
|
end
|
||||||
|
|
||||||
|
changed = label_customization.draw(cached_language.text_label, cached_config.part_anomaly.text_label);
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
changed = label_customization.draw(cached_language.value_label, cached_config.part_anomaly.value_label);
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
changed = label_customization.draw(cached_language.percentage_label, cached_config.part_anomaly.percentage_label);
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
changed = bar_customization.draw(cached_language.bar, cached_config.part_anomaly.bar);
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
@@ -368,7 +512,7 @@ function this.draw(cached_config)
|
|||||||
return config_changed;
|
return config_changed;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
@@ -383,6 +527,10 @@ function this.init_module()
|
|||||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
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");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@@ -13,6 +13,7 @@ local keyboard;
|
|||||||
local customization_menu;
|
local customization_menu;
|
||||||
local label_customization;
|
local label_customization;
|
||||||
local bar_customization;
|
local bar_customization;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -88,7 +89,7 @@ function this.draw(cached_config)
|
|||||||
return config_changed;
|
return config_changed;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
screen = require("MHR_Overlay.Game_Handler.screen");
|
screen = require("MHR_Overlay.Game_Handler.screen");
|
||||||
@@ -102,6 +103,10 @@ function this.init_module()
|
|||||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
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");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@@ -11,6 +11,7 @@ local part_names;
|
|||||||
local time_UI;
|
local time_UI;
|
||||||
local keyboard;
|
local keyboard;
|
||||||
local customization_menu;
|
local customization_menu;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -45,17 +46,26 @@ local ValueType = ValueType;
|
|||||||
local package = package;
|
local package = package;
|
||||||
|
|
||||||
function this.draw(label_name, label)
|
function this.draw(label_name, label)
|
||||||
|
local cached_language = language.current_language.customization_menu;
|
||||||
|
|
||||||
local label_changed = false;
|
local label_changed = false;
|
||||||
local changed = false;
|
local changed = false;
|
||||||
|
|
||||||
if imgui.tree_node(label_name) then
|
if imgui.tree_node(label_name) then
|
||||||
changed, label.visibility = imgui.checkbox(language.current_language.customization_menu.visible, label.visibility);
|
changed, label.visibility = imgui.checkbox(cached_language.visible, label.visibility);
|
||||||
label_changed = label_changed or changed;
|
label_changed = label_changed or changed;
|
||||||
|
|
||||||
|
if imgui.tree_node(cached_language.settings) then
|
||||||
|
changed, label.settings.right_alignment_shift = imgui.slider_int(cached_language.right_alignment_shift, label.settings.right_alignment_shift, 0, 64);
|
||||||
|
label_changed = label_changed or changed;
|
||||||
|
|
||||||
|
imgui.tree_pop();
|
||||||
|
end
|
||||||
|
|
||||||
if label.include ~= nil then
|
if label.include ~= nil then
|
||||||
if imgui.tree_node(language.current_language.customization_menu.include) then
|
if imgui.tree_node(cached_language.include) then
|
||||||
for include_name, include in pairs(label.include) do
|
for include_name, include in pairs(label.include) do
|
||||||
changed, label.include[include_name] = imgui.checkbox(language.current_language.customization_menu[include_name], include);
|
changed, label.include[include_name] = imgui.checkbox(cached_language[include_name], label.include[include_name]);
|
||||||
label_changed = label_changed or changed;
|
label_changed = label_changed or changed;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -63,42 +73,40 @@ function this.draw(label_name, label)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- add text format
|
if imgui.tree_node(cached_language.offset) then
|
||||||
|
changed, label.offset.x = imgui.drag_float(cached_language.x, label.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
||||||
if imgui.tree_node(language.current_language.customization_menu.offset) then
|
|
||||||
changed, label.offset.x = imgui.drag_float(language.current_language.customization_menu.x, label.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
|
||||||
label_changed = label_changed or changed;
|
label_changed = label_changed or changed;
|
||||||
|
|
||||||
changed, label.offset.y = imgui.drag_float(language.current_language.customization_menu.y, label.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
changed, label.offset.y = imgui.drag_float(cached_language.y, label.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
||||||
label_changed = label_changed or changed;
|
label_changed = label_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.color) then
|
if imgui.tree_node(cached_language.color) then
|
||||||
changed, label.color = imgui.color_picker_argb("", label.color, customization_menu.color_picker_flags);
|
changed, label.color = imgui.color_picker_argb("", label.color, customization_menu.color_picker_flags);
|
||||||
label_changed = label_changed or changed;
|
label_changed = label_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.shadow) then
|
if imgui.tree_node(cached_language.shadow) then
|
||||||
changed, label.shadow.visibility = imgui.checkbox(language.current_language.customization_menu.visible, label.shadow.visibility);
|
changed, label.shadow.visibility = imgui.checkbox(cached_language.visible, label.shadow.visibility);
|
||||||
label_changed = label_changed or changed;
|
label_changed = label_changed or changed;
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.offset) then
|
if imgui.tree_node(cached_language.offset) then
|
||||||
changed, label.shadow.offset.x = imgui.drag_float(language.current_language.customization_menu.x,
|
changed, label.shadow.offset.x = imgui.drag_float(cached_language.x,
|
||||||
label.shadow.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
label.shadow.offset.x, 0.1, -screen.width, screen.width, "%.1f");
|
||||||
label_changed = label_changed or changed;
|
label_changed = label_changed or changed;
|
||||||
|
|
||||||
changed, label.shadow.offset.y = imgui.drag_float(language.current_language.customization_menu.y,
|
changed, label.shadow.offset.y = imgui.drag_float(cached_language.y,
|
||||||
label.shadow.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
label.shadow.offset.y, 0.1, -screen.height, screen.height, "%.1f");
|
||||||
label_changed = label_changed or changed;
|
label_changed = label_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.color) then
|
if imgui.tree_node(cached_language.color) then
|
||||||
changed, label.shadow.color = imgui.color_picker_argb("", label.shadow.color,
|
changed, label.shadow.color = imgui.color_picker_argb("", label.shadow.color,
|
||||||
customization_menu.color_picker_flags);
|
customization_menu.color_picker_flags);
|
||||||
label_changed = label_changed or changed;
|
label_changed = label_changed or changed;
|
||||||
@@ -115,7 +123,7 @@ function this.draw(label_name, label)
|
|||||||
return label_changed;
|
return label_changed;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
screen = require("MHR_Overlay.Game_Handler.screen");
|
screen = require("MHR_Overlay.Game_Handler.screen");
|
||||||
@@ -127,6 +135,10 @@ function this.init_module()
|
|||||||
time_UI = require("MHR_Overlay.UI.Modules.time_UI");
|
time_UI = require("MHR_Overlay.UI.Modules.time_UI");
|
||||||
keyboard = require("MHR_Overlay.Game_Handler.keyboard");
|
keyboard = require("MHR_Overlay.Game_Handler.keyboard");
|
||||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ local part_names;
|
|||||||
local time_UI;
|
local time_UI;
|
||||||
local keyboard;
|
local keyboard;
|
||||||
local customization_menu;
|
local customization_menu;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local label_customization;
|
local label_customization;
|
||||||
local bar_customization;
|
local bar_customization;
|
||||||
@@ -81,7 +82,7 @@ function this.draw(cached_config)
|
|||||||
return config_changed;
|
return config_changed;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
screen = require("MHR_Overlay.Game_Handler.screen");
|
screen = require("MHR_Overlay.Game_Handler.screen");
|
||||||
@@ -93,9 +94,10 @@ function this.init_module()
|
|||||||
time_UI = require("MHR_Overlay.UI.Modules.time_UI");
|
time_UI = require("MHR_Overlay.UI.Modules.time_UI");
|
||||||
keyboard = require("MHR_Overlay.Game_Handler.keyboard");
|
keyboard = require("MHR_Overlay.Game_Handler.keyboard");
|
||||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
|
||||||
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");
|
||||||
|
|
||||||
health_customization = require("MHR_Overlay.UI.Customizations.health_customization");
|
health_customization = require("MHR_Overlay.UI.Customizations.health_customization");
|
||||||
stamina_customization = require("MHR_Overlay.UI.Customizations.stamina_customization");
|
stamina_customization = require("MHR_Overlay.UI.Customizations.stamina_customization");
|
||||||
rage_customization = require("MHR_Overlay.UI.Customizations.rage_customization");
|
rage_customization = require("MHR_Overlay.UI.Customizations.rage_customization");
|
||||||
@@ -104,4 +106,7 @@ function this.init_module()
|
|||||||
ailment_buildups_customization = require("MHR_Overlay.UI.Customizations.ailment_buildups_customization");
|
ailment_buildups_customization = require("MHR_Overlay.UI.Customizations.ailment_buildups_customization");
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@@ -11,6 +11,7 @@ local part_names;
|
|||||||
local time_UI;
|
local time_UI;
|
||||||
local keyboard;
|
local keyboard;
|
||||||
local customization_menu;
|
local customization_menu;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -95,7 +96,7 @@ function this.draw(line_name, line)
|
|||||||
return line_changed;
|
return line_changed;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
screen = require("MHR_Overlay.Game_Handler.screen");
|
screen = require("MHR_Overlay.Game_Handler.screen");
|
||||||
@@ -107,6 +108,10 @@ function this.init_module()
|
|||||||
time_UI = require("MHR_Overlay.UI.Modules.time_UI");
|
time_UI = require("MHR_Overlay.UI.Modules.time_UI");
|
||||||
keyboard = require("MHR_Overlay.Game_Handler.keyboard");
|
keyboard = require("MHR_Overlay.Game_Handler.keyboard");
|
||||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ local keyboard;
|
|||||||
local customization_menu;
|
local customization_menu;
|
||||||
local label_customization;
|
local label_customization;
|
||||||
local bar_customization;
|
local bar_customization;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -92,16 +93,16 @@ function this.draw(cached_config)
|
|||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
--[[changed, cached_config.buff_UI = imgui.checkbox(
|
changed, cached_config.buff_UI = imgui.checkbox(
|
||||||
language.current_language.customization_menu.buff_UI,
|
language.current_language.customization_menu.buff_UI,
|
||||||
cached_config.buff_UI);
|
cached_config.buff_UI);
|
||||||
|
|
||||||
config_changed = config_changed or changed;]]
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
return config_changed;
|
return config_changed;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
screen = require("MHR_Overlay.Game_Handler.screen");
|
screen = require("MHR_Overlay.Game_Handler.screen");
|
||||||
@@ -113,6 +114,10 @@ function this.init_module()
|
|||||||
time_UI = require("MHR_Overlay.UI.Modules.time_UI");
|
time_UI = require("MHR_Overlay.UI.Modules.time_UI");
|
||||||
keyboard = require("MHR_Overlay.Game_Handler.keyboard");
|
keyboard = require("MHR_Overlay.Game_Handler.keyboard");
|
||||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@@ -13,6 +13,7 @@ local keyboard;
|
|||||||
local customization_menu;
|
local customization_menu;
|
||||||
local label_customization;
|
local label_customization;
|
||||||
local bar_customization;
|
local bar_customization;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -91,7 +92,7 @@ function this.draw(cached_config)
|
|||||||
return config_changed;
|
return config_changed;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
screen = require("MHR_Overlay.Game_Handler.screen");
|
screen = require("MHR_Overlay.Game_Handler.screen");
|
||||||
@@ -105,6 +106,10 @@ function this.init_module()
|
|||||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
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");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@@ -13,6 +13,7 @@ local keyboard;
|
|||||||
local customization_menu;
|
local customization_menu;
|
||||||
local label_customization;
|
local label_customization;
|
||||||
local bar_customization;
|
local bar_customization;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -91,7 +92,7 @@ function this.draw(cached_config)
|
|||||||
return config_changed;
|
return config_changed;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
screen = require("MHR_Overlay.Game_Handler.screen");
|
screen = require("MHR_Overlay.Game_Handler.screen");
|
||||||
@@ -105,6 +106,10 @@ function this.init_module()
|
|||||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
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");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@@ -3,7 +3,11 @@ local this = {};
|
|||||||
local buff_UI_entity;
|
local buff_UI_entity;
|
||||||
local config;
|
local config;
|
||||||
local buffs;
|
local buffs;
|
||||||
|
local consumables;
|
||||||
|
local melody_effects;
|
||||||
local screen;
|
local screen;
|
||||||
|
local utils;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -43,17 +47,28 @@ function this.draw()
|
|||||||
|
|
||||||
local displayed_buffs = {};
|
local displayed_buffs = {};
|
||||||
|
|
||||||
for _, buff in pairs(buffs.list) do
|
for key, consumable in pairs(consumables.list) do
|
||||||
|
|
||||||
if not buff.is_active then
|
if not consumable.is_active then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
table.insert(displayed_buffs, buff);
|
table.insert(displayed_buffs, consumable);
|
||||||
|
|
||||||
::continue::
|
::continue::
|
||||||
end
|
end
|
||||||
|
|
||||||
|
for _, melody_effect in pairs(melody_effects.list) do
|
||||||
|
|
||||||
|
if not melody_effect.is_active then
|
||||||
|
goto continue2;
|
||||||
|
end
|
||||||
|
|
||||||
|
table.insert(displayed_buffs, melody_effect);
|
||||||
|
|
||||||
|
::continue2::
|
||||||
|
end
|
||||||
|
|
||||||
-- sort
|
-- sort
|
||||||
if cached_config.sorting.type == "Name" then
|
if cached_config.sorting.type == "Name" then
|
||||||
if cached_config.sorting.reversed_order then
|
if cached_config.sorting.reversed_order then
|
||||||
@@ -87,15 +102,13 @@ function this.draw()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
local position_on_screen = screen.calculate_absolute_coordinates(cached_config.position);
|
local position_on_screen = screen.calculate_absolute_coordinates(cached_config.position);
|
||||||
|
|
||||||
-- draw
|
-- draw
|
||||||
for _, buff in ipairs(displayed_buffs) do
|
for _, buff in ipairs(displayed_buffs) do
|
||||||
|
|
||||||
if not buff.is_active then
|
if not buff.is_active then
|
||||||
goto continue2
|
goto continue3;
|
||||||
end
|
end
|
||||||
|
|
||||||
buffs.draw(buff, buff.buff_UI, position_on_screen, 1);
|
buffs.draw(buff, buff.buff_UI, position_on_screen, 1);
|
||||||
@@ -106,13 +119,15 @@ function this.draw()
|
|||||||
position_on_screen.y = position_on_screen.y + cached_config.spacing.y * global_scale_modifier;
|
position_on_screen.y = position_on_screen.y + cached_config.spacing.y * global_scale_modifier;
|
||||||
end
|
end
|
||||||
|
|
||||||
::continue2::
|
::continue3::
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
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");
|
||||||
|
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");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
@@ -122,6 +137,11 @@ function this.init_module()
|
|||||||
--quest_status = require("MHR_Overlay.Game_Handler.quest_status");
|
--quest_status = require("MHR_Overlay.Game_Handler.quest_status");
|
||||||
screen = require("MHR_Overlay.Game_Handler.screen");
|
screen = require("MHR_Overlay.Game_Handler.screen");
|
||||||
--drawing = require("MHR_Overlay.UI.drawing");
|
--drawing = require("MHR_Overlay.UI.drawing");
|
||||||
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@@ -10,6 +10,7 @@ local screen;
|
|||||||
local drawing;
|
local drawing;
|
||||||
local language;
|
local language;
|
||||||
local utils;
|
local utils;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -46,17 +47,6 @@ local package = package;
|
|||||||
this.last_displayed_players = {};
|
this.last_displayed_players = {};
|
||||||
this.freeze_displayed_players = false;
|
this.freeze_displayed_players = false;
|
||||||
|
|
||||||
local lobby_manager_type_def = sdk.find_type_definition("snow.LobbyManager");
|
|
||||||
local quest_hunter_info_field = lobby_manager_type_def:get_field("_questHunterInfo");
|
|
||||||
local hunter_info_field = lobby_manager_type_def:get_field("_hunterInfo");
|
|
||||||
|
|
||||||
local quest_hunter_info_type_def = quest_hunter_info_field:get_type();
|
|
||||||
local get_count_method = quest_hunter_info_type_def:get_method("get_Count");
|
|
||||||
local get_item_method = quest_hunter_info_type_def:get_method("get_Item");
|
|
||||||
|
|
||||||
local hunter_info_type_def = sdk.find_type_definition("snow.LobbyManager.HunterInfo");
|
|
||||||
local member_index_field = hunter_info_type_def:get_field("_memberIndex");
|
|
||||||
|
|
||||||
function this.draw()
|
function this.draw()
|
||||||
local cached_config = config.current_config.damage_meter_UI;
|
local cached_config = config.current_config.damage_meter_UI;
|
||||||
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
|
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
|
||||||
@@ -116,32 +106,32 @@ function this.draw()
|
|||||||
for _, player in ipairs(quest_players) do
|
for _, player in ipairs(quest_players) do
|
||||||
|
|
||||||
if player.display.total_damage == 0 and cached_config.settings.hide_player_if_player_damage_is_zero then
|
if player.display.total_damage == 0 and cached_config.settings.hide_player_if_player_damage_is_zero then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
if player.type == players.types.myself then
|
if player.type == players.types.myself then
|
||||||
if cached_config.settings.hide_myself then
|
if cached_config.settings.hide_myself then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
elseif player.type == players.types.servant then
|
elseif player.type == players.types.servant then
|
||||||
if cached_config.settings.hide_servants then
|
if cached_config.settings.hide_servants then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
elseif player.type == players.types.other_player then
|
elseif player.type == players.types.other_player then
|
||||||
if cached_config.settings.hide_other_players then
|
if cached_config.settings.hide_other_players then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
elseif player.type == players.types.my_otomo then
|
elseif player.type == players.types.my_otomo then
|
||||||
if not cached_config.settings.show_my_otomos_separately then
|
if not cached_config.settings.show_my_otomos_separately then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
elseif player.type == players.types.other_player_otomo then
|
elseif player.type == players.types.other_player_otomo then
|
||||||
if not cached_config.settings.show_other_player_otomos_separately then
|
if not cached_config.settings.show_other_player_otomos_separately then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
elseif player.type == players.types.servant_otomo then
|
elseif player.type == players.types.servant_otomo then
|
||||||
if not cached_config.settings.show_servant_otomos_separately then
|
if not cached_config.settings.show_servant_otomos_separately then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -154,7 +144,6 @@ function this.draw()
|
|||||||
end
|
end
|
||||||
|
|
||||||
::continue::
|
::continue::
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- draw total damage
|
-- draw total damage
|
||||||
@@ -175,7 +164,7 @@ function this.draw()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
singletons = require("MHR_Overlay.Game_Handler.singletons");
|
singletons = require("MHR_Overlay.Game_Handler.singletons");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
@@ -186,6 +175,10 @@ function this.init_module()
|
|||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ local health_UI_entity;
|
|||||||
local stamina_UI_entity;
|
local stamina_UI_entity;
|
||||||
local rage_UI_entity;
|
local rage_UI_entity;
|
||||||
local env_creature;
|
local env_creature;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -44,8 +45,6 @@ local os = os;
|
|||||||
local ValueType = ValueType;
|
local ValueType = ValueType;
|
||||||
local package = package;
|
local package = package;
|
||||||
|
|
||||||
local enemy_manager_type_def = sdk.find_type_definition("snow.enemy.EnemyManager");
|
|
||||||
|
|
||||||
function this.draw()
|
function this.draw()
|
||||||
if singletons.enemy_manager == nil then
|
if singletons.enemy_manager == nil then
|
||||||
return;
|
return;
|
||||||
@@ -53,15 +52,13 @@ function this.draw()
|
|||||||
|
|
||||||
local cached_config = config.current_config.endemic_life_UI;
|
local cached_config = config.current_config.endemic_life_UI;
|
||||||
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
|
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
|
||||||
|
|
||||||
for REcreature, creature in pairs(env_creature.list) do
|
for REcreature, creature in pairs(env_creature.list) do
|
||||||
|
|
||||||
if cached_config.settings.max_distance == 0 then
|
if cached_config.settings.max_distance == 0 then
|
||||||
break
|
break;
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.settings.hide_inactive_creatures and creature.is_inactive then
|
if cached_config.settings.hide_inactive_creatures and creature.is_inactive then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
local position_on_screen = {};
|
local position_on_screen = {};
|
||||||
@@ -72,7 +69,7 @@ function this.draw()
|
|||||||
position_on_screen = draw.world_to_screen(creature.position + world_offset);
|
position_on_screen = draw.world_to_screen(creature.position + world_offset);
|
||||||
|
|
||||||
if position_on_screen == nil then
|
if position_on_screen == nil then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
position_on_screen.x = position_on_screen.x + cached_config.viewport_offset.x * global_scale_modifier;
|
position_on_screen.x = position_on_screen.x + cached_config.viewport_offset.x * global_scale_modifier;
|
||||||
@@ -82,7 +79,7 @@ function this.draw()
|
|||||||
|
|
||||||
local opacity_scale = 1;
|
local opacity_scale = 1;
|
||||||
if creature.distance > cached_config.settings.max_distance then
|
if creature.distance > cached_config.settings.max_distance then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.settings.opacity_falloff then
|
if cached_config.settings.opacity_falloff then
|
||||||
@@ -94,7 +91,7 @@ function this.draw()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
singletons = require("MHR_Overlay.Game_Handler.singletons");
|
singletons = require("MHR_Overlay.Game_Handler.singletons");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
@@ -106,6 +103,10 @@ function this.init_module()
|
|||||||
stamina_UI_entity = require("MHR_Overlay.UI.UI_Entities.stamina_UI_entity");
|
stamina_UI_entity = require("MHR_Overlay.UI.UI_Entities.stamina_UI_entity");
|
||||||
rage_UI_entity = require("MHR_Overlay.UI.UI_Entities.rage_UI_entity");
|
rage_UI_entity = require("MHR_Overlay.UI.UI_Entities.rage_UI_entity");
|
||||||
env_creature = require("MHR_Overlay.Endemic_Life.env_creature");
|
env_creature = require("MHR_Overlay.Endemic_Life.env_creature");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ local drawing;
|
|||||||
local health_UI_entity;
|
local health_UI_entity;
|
||||||
local stamina_UI_entity;
|
local stamina_UI_entity;
|
||||||
local rage_UI_entity;
|
local rage_UI_entity;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -68,39 +69,30 @@ function this.draw(dynamic_enabled, static_enabled, highlighted_enabled)
|
|||||||
and (cached_config.highlighted.auto_highlight.mode == "Closest" or cached_config.highlighted.auto_highlight.mode == "Furthest")
|
and (cached_config.highlighted.auto_highlight.mode == "Closest" or cached_config.highlighted.auto_highlight.mode == "Furthest")
|
||||||
);
|
);
|
||||||
|
|
||||||
local highlighted_id = -1;
|
|
||||||
local monster_id_shift = 0;
|
local monster_id_shift = 0;
|
||||||
local highlighted_monster = nil;
|
local highlighted_monster = nil;
|
||||||
|
|
||||||
if not cached_config.highlighted.auto_highlight.enabled and singletons.gui_manager ~= nil then
|
|
||||||
local gui_hud_target_camera = get_tg_camera_method:call(singletons.gui_manager);
|
|
||||||
if gui_hud_target_camera ~= nil then
|
|
||||||
highlighted_id = get_targeting_enemy_index_field:get_data(gui_hud_target_camera);
|
|
||||||
|
|
||||||
if highlighted_id == nil then
|
|
||||||
highlighted_id = -1;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local enemy_count = get_boss_enemy_count_method:call(singletons.enemy_manager);
|
local enemy_count = get_boss_enemy_count_method:call(singletons.enemy_manager);
|
||||||
if enemy_count == nil then
|
if enemy_count == nil then
|
||||||
|
error_handler.report("large_monster_UI.draw", "Failed to access Data: enemy_count");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
for i = 0, enemy_count - 1 do
|
for i = 0, enemy_count - 1 do
|
||||||
local enemy = get_boss_enemy_method:call(singletons.enemy_manager, i);
|
local enemy = get_boss_enemy_method:call(singletons.enemy_manager, i);
|
||||||
if enemy == nil then
|
if enemy == nil then
|
||||||
customization_menu.status = "No enemy";
|
error_handler.report("large_monster_UI.draw", "Failed to access Data: enemy No. " .. tostring(i));
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
local monster = large_monster.list[enemy];
|
local monster = large_monster.get_monster(enemy);
|
||||||
if monster == nil then
|
if monster == nil then
|
||||||
customization_menu.status = "No large monster entry";
|
error_handler.report("large_monster_UI.draw", "Failed to create Large Monster Entry No. " .. tostring(i));
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
large_monster.update_position(enemy, monster);
|
||||||
|
|
||||||
if update_distance then
|
if update_distance then
|
||||||
monster.distance = (players.myself_position - monster.position):length();
|
monster.distance = (players.myself_position - monster.position):length();
|
||||||
end
|
end
|
||||||
@@ -143,11 +135,10 @@ function this.draw(dynamic_enabled, static_enabled, highlighted_enabled)
|
|||||||
if monster.dead_or_captured or not monster.is_disp_icon_mini_map then
|
if monster.dead_or_captured or not monster.is_disp_icon_mini_map then
|
||||||
monster_id_shift = monster_id_shift + 1;
|
monster_id_shift = monster_id_shift + 1;
|
||||||
|
|
||||||
elseif i == highlighted_id + monster_id_shift then
|
elseif i == large_monster.highlighted_id + monster_id_shift then
|
||||||
highlighted_monster = monster;
|
highlighted_monster = monster;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
table.insert(displayed_monsters, monster);
|
table.insert(displayed_monsters, monster);
|
||||||
::continue::
|
::continue::
|
||||||
end
|
end
|
||||||
@@ -155,20 +146,21 @@ function this.draw(dynamic_enabled, static_enabled, highlighted_enabled)
|
|||||||
if dynamic_enabled then
|
if dynamic_enabled then
|
||||||
local success = pcall(this.draw_dynamic, displayed_monsters, highlighted_monster, cached_config);
|
local success = pcall(this.draw_dynamic, displayed_monsters, highlighted_monster, cached_config);
|
||||||
if not success then
|
if not success then
|
||||||
customization_menu.status = string.format("[%s] Dynamic Large Monster drawing function threw an exception");
|
error_handler.report("large_monster_UI.draw", "Dynamic Large Monster drawing function threw an exception");
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if highlighted_enabled then
|
if highlighted_enabled then
|
||||||
local success = pcall(this.draw_highlighted, highlighted_monster, cached_config);
|
local success = pcall(this.draw_highlighted, highlighted_monster, cached_config);
|
||||||
if not success then
|
if not success then
|
||||||
customization_menu.status = string.format("[%s] Highlighted Large Monster drawing function threw an exception");
|
error_handler.report("large_monster_UI.draw", "Highlighted Large Monster drawing function threw an exception");
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if static_enabled then
|
if static_enabled then
|
||||||
local success = pcall(this.draw_static, displayed_monsters, highlighted_monster, cached_config);
|
local success = pcall(this.draw_static, displayed_monsters, highlighted_monster, cached_config);
|
||||||
if not success then
|
if not success then
|
||||||
customization_menu.status = string.format("[%s] Static Large Monster drawing function threw an exception");
|
error_handler.report("large_monster_UI.draw", "Static Large Monster drawing function threw an exception");
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -180,24 +172,24 @@ function this.draw_dynamic(displayed_monsters, highlighted_monster, cached_confi
|
|||||||
local i = 0;
|
local i = 0;
|
||||||
for _, monster in ipairs(displayed_monsters) do
|
for _, monster in ipairs(displayed_monsters) do
|
||||||
if cached_config.settings.max_distance == 0 then
|
if cached_config.settings.max_distance == 0 then
|
||||||
break
|
break;
|
||||||
end
|
end
|
||||||
|
|
||||||
if monster.is_stealth then
|
if monster.is_stealth then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
if monster.dead_or_captured and cached_config.settings.hide_dead_or_captured then
|
if monster.dead_or_captured and cached_config.settings.hide_dead_or_captured then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
if monster == highlighted_monster then
|
if monster == highlighted_monster then
|
||||||
if not cached_config.settings.render_highlighted_monster then
|
if not cached_config.settings.render_highlighted_monster then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if not cached_config.settings.render_not_highlighted_monsters then
|
if not cached_config.settings.render_not_highlighted_monsters then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -208,7 +200,7 @@ function this.draw_dynamic(displayed_monsters, highlighted_monster, cached_confi
|
|||||||
position_on_screen = draw.world_to_screen(monster.position + world_offset);
|
position_on_screen = draw.world_to_screen(monster.position + world_offset);
|
||||||
|
|
||||||
if position_on_screen == nil then
|
if position_on_screen == nil then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
position_on_screen.x = position_on_screen.x + cached_config.viewport_offset.x * global_scale_modifier;
|
position_on_screen.x = position_on_screen.x + cached_config.viewport_offset.x * global_scale_modifier;
|
||||||
@@ -216,7 +208,7 @@ function this.draw_dynamic(displayed_monsters, highlighted_monster, cached_confi
|
|||||||
|
|
||||||
local opacity_scale = 1;
|
local opacity_scale = 1;
|
||||||
if monster.distance > cached_config.settings.max_distance then
|
if monster.distance > cached_config.settings.max_distance then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.settings.opacity_falloff then
|
if cached_config.settings.opacity_falloff then
|
||||||
@@ -280,16 +272,16 @@ function this.draw_static(displayed_monsters, highlighted_monster, cached_config
|
|||||||
local i = 0;
|
local i = 0;
|
||||||
for _, monster in ipairs(displayed_monsters) do
|
for _, monster in ipairs(displayed_monsters) do
|
||||||
if monster.dead_or_captured and cached_config.settings.hide_dead_or_captured then
|
if monster.dead_or_captured and cached_config.settings.hide_dead_or_captured then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
if monster == highlighted_monster then
|
if monster == highlighted_monster then
|
||||||
if not cached_config.settings.render_highlighted_monster then
|
if not cached_config.settings.render_highlighted_monster then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if not cached_config.settings.render_not_highlighted_monsters then
|
if not cached_config.settings.render_not_highlighted_monsters then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -327,7 +319,7 @@ function this.draw_highlighted(monster, cached_config)
|
|||||||
large_monster.draw(monster, "highlighted", cached_config, position_on_screen, 1);
|
large_monster.draw(monster, "highlighted", cached_config, position_on_screen, 1);
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
singletons = require("MHR_Overlay.Game_Handler.singletons");
|
singletons = require("MHR_Overlay.Game_Handler.singletons");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
@@ -338,6 +330,10 @@ function this.init_module()
|
|||||||
health_UI_entity = require("MHR_Overlay.UI.UI_Entities.health_UI_entity");
|
health_UI_entity = require("MHR_Overlay.UI.UI_Entities.health_UI_entity");
|
||||||
stamina_UI_entity = require("MHR_Overlay.UI.UI_Entities.stamina_UI_entity");
|
stamina_UI_entity = require("MHR_Overlay.UI.UI_Entities.stamina_UI_entity");
|
||||||
rage_UI_entity = require("MHR_Overlay.UI.UI_Entities.rage_UI_entity");
|
rage_UI_entity = require("MHR_Overlay.UI.UI_Entities.rage_UI_entity");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ local players;
|
|||||||
local drawing;
|
local drawing;
|
||||||
local health_UI_entity;
|
local health_UI_entity;
|
||||||
local stamina_UI_entity;
|
local stamina_UI_entity;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -57,33 +58,35 @@ function this.draw()
|
|||||||
|
|
||||||
local enemy_count = get_zako_enemy_count_method:call(singletons.enemy_manager);
|
local enemy_count = get_zako_enemy_count_method:call(singletons.enemy_manager);
|
||||||
if enemy_count == nil then
|
if enemy_count == nil then
|
||||||
customization_menu.status = "No enemy count";
|
error_handler.report("small_monster_UI.draw", "Failed to access Data: enemy_count");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
for i = 0, enemy_count - 1 do
|
for i = 0, enemy_count - 1 do
|
||||||
local enemy = get_zako_enemy_method:call(singletons.enemy_manager, i);
|
local enemy = get_zako_enemy_method:call(singletons.enemy_manager, i);
|
||||||
if enemy == nil then
|
if enemy == nil then
|
||||||
customization_menu.status = "No enemy";
|
error_handler.report("small_monster_UI.draw", "Failed to access Data: enemy No. " .. tostring(i));
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
local monster = small_monster.list[enemy];
|
local monster = small_monster.get_monster(enemy);
|
||||||
if monster == nil then
|
if monster == nil then
|
||||||
customization_menu.status = "No small monster entry";
|
error_handler.report("small_monster_UI.draw", "Failed to create Small Monster Entry No. " .. tostring(i));
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end
|
||||||
|
|
||||||
if monster.dead_or_captured and cached_config.settings.hide_dead_or_captured then
|
if monster.dead_or_captured and cached_config.settings.hide_dead_or_captured then
|
||||||
goto continue
|
goto continue;
|
||||||
end
|
end;
|
||||||
|
|
||||||
|
small_monster.update_position(enemy, monster);
|
||||||
|
|
||||||
table.insert(displayed_monsters, monster);
|
table.insert(displayed_monsters, monster);
|
||||||
::continue::
|
::continue::
|
||||||
end
|
end
|
||||||
|
|
||||||
if cached_config.dynamic_positioning.enabled
|
if cached_config.dynamic_positioning.enabled
|
||||||
or (not cached_config.dynamic_positioning.enabled and cached_config.static_sorting.type == "Distance") then
|
or (not cached_config.dynamic_positioning.enabled and cached_config.static_sorting.type == "Distance") then
|
||||||
for _, monster in ipairs(displayed_monsters) do
|
for _, monster in ipairs(displayed_monsters) do
|
||||||
monster.distance = (players.myself_position - monster.position):length();
|
monster.distance = (players.myself_position - monster.position):length();
|
||||||
end
|
end
|
||||||
@@ -159,9 +162,6 @@ function this.draw()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
local opacity_scale = 1;
|
local opacity_scale = 1;
|
||||||
if cached_config.dynamic_positioning.enabled then
|
if cached_config.dynamic_positioning.enabled then
|
||||||
if cached_config.dynamic_positioning.max_distance == 0 then
|
if cached_config.dynamic_positioning.max_distance == 0 then
|
||||||
@@ -177,8 +177,6 @@ function this.draw()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
small_monster.draw(monster, cached_config, position_on_screen, opacity_scale);
|
small_monster.draw(monster, cached_config, position_on_screen, opacity_scale);
|
||||||
|
|
||||||
i = i + 1;
|
i = i + 1;
|
||||||
@@ -186,7 +184,7 @@ function this.draw()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
singletons = require("MHR_Overlay.Game_Handler.singletons");
|
singletons = require("MHR_Overlay.Game_Handler.singletons");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||||
@@ -196,6 +194,10 @@ function this.init_module()
|
|||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
health_UI_entity = require("MHR_Overlay.UI.UI_Entities.health_UI_entity");
|
health_UI_entity = require("MHR_Overlay.UI.UI_Entities.health_UI_entity");
|
||||||
stamina_UI_entity = require("MHR_Overlay.UI.UI_Entities.stamina_UI_entity");
|
stamina_UI_entity = require("MHR_Overlay.UI.UI_Entities.stamina_UI_entity");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ local screen;
|
|||||||
local config;
|
local config;
|
||||||
local drawing;
|
local drawing;
|
||||||
local utils;
|
local utils;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -62,13 +63,16 @@ function this.init_UI()
|
|||||||
this.label.offset.y = this.label.offset.y * global_scale_modifier;
|
this.label.offset.y = this.label.offset.y * global_scale_modifier;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
time = require("MHR_Overlay.Game_Handler.time");
|
time = require("MHR_Overlay.Game_Handler.time");
|
||||||
screen = require("MHR_Overlay.Game_Handler.screen");
|
screen = require("MHR_Overlay.Game_Handler.screen");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
this.init_UI()
|
this.init_UI()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ local config;
|
|||||||
local utils;
|
local utils;
|
||||||
local drawing;
|
local drawing;
|
||||||
local language;
|
local language;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -118,11 +119,15 @@ function this.draw(ailment, ailment_UI, cached_config, position_on_screen, opaci
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ local drawing;
|
|||||||
local config;
|
local config;
|
||||||
local players;
|
local players;
|
||||||
local language;
|
local language;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -117,12 +118,16 @@ function this.draw(player, player_buildup, ailment_buildup_UI, cached_config, po
|
|||||||
drawing.draw_label(ailment_buildup_UI.buildup_percentage_label, position_on_screen, opacity_scale, 100 * player_buildup.buildup_share);
|
drawing.draw_label(ailment_buildup_UI.buildup_percentage_label, position_on_screen, opacity_scale, 100 * player_buildup.buildup_share);
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
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");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ local this = {};
|
|||||||
local config;
|
local config;
|
||||||
local utils;
|
local utils;
|
||||||
local drawing;
|
local drawing;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -36,9 +37,11 @@ local os = os;
|
|||||||
local ValueType = ValueType;
|
local ValueType = ValueType;
|
||||||
local package = package;
|
local package = package;
|
||||||
|
|
||||||
function this.new(part_visibility, part_name_label, flinch_visibility, flinch_bar, flinch_text_label,
|
function this.new(part_visibility, part_name_label,
|
||||||
flinch_value_label, flinch_percentage_label, break_visibility, break_bar, break_text_label, break_value_label,
|
flinch_visibility, flinch_bar, flinch_text_label, flinch_value_label, flinch_percentage_label,
|
||||||
break_percentage_label, loss_visibility, loss_bar, loss_text_label, loss_value_label, loss_health_percentage_label)
|
break_visibility, break_bar, break_text_label, break_value_label, break_percentage_label,
|
||||||
|
loss_visibility, loss_bar, loss_text_label, loss_value_label, loss_health_percentage_label,
|
||||||
|
anomaly_visibility, anomaly_bar, anomaly_text_label, anomaly_value_label, anomaly_health_percentage_label)
|
||||||
|
|
||||||
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
|
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
|
||||||
|
|
||||||
@@ -48,6 +51,7 @@ function this.new(part_visibility, part_name_label, flinch_visibility, flinch_ba
|
|||||||
entity.flinch_visibility = flinch_visibility;
|
entity.flinch_visibility = flinch_visibility;
|
||||||
entity.break_visibility = break_visibility;
|
entity.break_visibility = break_visibility;
|
||||||
entity.loss_visibility = loss_visibility;
|
entity.loss_visibility = loss_visibility;
|
||||||
|
entity.anomaly_visibility = anomaly_visibility;
|
||||||
|
|
||||||
entity.part_name_label = utils.table.deep_copy(part_name_label);
|
entity.part_name_label = utils.table.deep_copy(part_name_label);
|
||||||
|
|
||||||
@@ -117,6 +121,27 @@ function this.new(part_visibility, part_name_label, flinch_visibility, flinch_ba
|
|||||||
entity.loss_health_percentage_label.offset.x = entity.loss_health_percentage_label.offset.x * global_scale_modifier;
|
entity.loss_health_percentage_label.offset.x = entity.loss_health_percentage_label.offset.x * global_scale_modifier;
|
||||||
entity.loss_health_percentage_label.offset.y = entity.loss_health_percentage_label.offset.y * global_scale_modifier;
|
entity.loss_health_percentage_label.offset.y = entity.loss_health_percentage_label.offset.y * global_scale_modifier;
|
||||||
|
|
||||||
|
entity.anomaly_bar = utils.table.deep_copy(anomaly_bar);
|
||||||
|
entity.anomaly_text_label = utils.table.deep_copy(anomaly_text_label);
|
||||||
|
entity.anomaly_value_label = utils.table.deep_copy(anomaly_value_label);
|
||||||
|
entity.anomaly_health_percentage_label = utils.table.deep_copy(anomaly_health_percentage_label);
|
||||||
|
|
||||||
|
entity.anomaly_bar.offset.x = entity.anomaly_bar.offset.x * global_scale_modifier;
|
||||||
|
entity.anomaly_bar.offset.y = entity.anomaly_bar.offset.y * global_scale_modifier;
|
||||||
|
entity.anomaly_bar.size.width = entity.anomaly_bar.size.width * global_scale_modifier;
|
||||||
|
entity.anomaly_bar.size.height = entity.anomaly_bar.size.height * global_scale_modifier;
|
||||||
|
entity.anomaly_bar.outline.thickness = entity.anomaly_bar.outline.thickness * global_scale_modifier;
|
||||||
|
entity.anomaly_bar.outline.offset = entity.anomaly_bar.outline.offset * global_scale_modifier;
|
||||||
|
|
||||||
|
entity.anomaly_text_label.offset.x = entity.anomaly_text_label.offset.x * global_scale_modifier;
|
||||||
|
entity.anomaly_text_label.offset.y = entity.anomaly_text_label.offset.y * global_scale_modifier;
|
||||||
|
|
||||||
|
entity.anomaly_value_label.offset.x = entity.anomaly_value_label.offset.x * global_scale_modifier;
|
||||||
|
entity.anomaly_value_label.offset.y = entity.anomaly_value_label.offset.y * global_scale_modifier;
|
||||||
|
|
||||||
|
entity.anomaly_health_percentage_label.offset.x = entity.anomaly_health_percentage_label.offset.x * global_scale_modifier;
|
||||||
|
entity.anomaly_health_percentage_label.offset.y = entity.anomaly_health_percentage_label.offset.y * global_scale_modifier;
|
||||||
|
|
||||||
return entity;
|
return entity;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -127,9 +152,10 @@ function this.draw(part, part_UI, cached_config, position_on_screen, opacity_sca
|
|||||||
|
|
||||||
local draw_health = part_UI.flinch_visibility and part.max_health > 0;
|
local draw_health = part_UI.flinch_visibility and part.max_health > 0;
|
||||||
local draw_break = part_UI.break_visibility and part.break_max_health > 0 and part.break_count < part.break_max_count;
|
local draw_break = part_UI.break_visibility and part.break_max_health > 0 and part.break_count < part.break_max_count;
|
||||||
local draw_severe = part_UI.loss_visibility and part.loss_max_health > 0 and not part.is_severed;
|
local draw_sever = part_UI.loss_visibility and part.loss_max_health > 0 and not part.is_severed;
|
||||||
|
local draw_anomaly = part_UI.anomaly_visibility and part.anomaly_max_health > 0 and (part.anomaly_is_active or cached_config.settings.render_inactive_anomaly_cores);
|
||||||
|
|
||||||
if not draw_health and not draw_break and not draw_severe then
|
if not draw_health and not draw_break and not draw_sever and not draw_anomaly then
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -186,7 +212,7 @@ function this.draw(part, part_UI, cached_config, position_on_screen, opacity_sca
|
|||||||
|
|
||||||
-- loss health value string
|
-- loss health value string
|
||||||
local loss_health_string = "";
|
local loss_health_string = "";
|
||||||
if draw_severe then
|
if draw_sever then
|
||||||
local include_loss_health_current_value = part_UI.loss_value_label.include.current_value;
|
local include_loss_health_current_value = part_UI.loss_value_label.include.current_value;
|
||||||
local include_loss_health_max_value = part_UI.loss_value_label.include.max_value;
|
local include_loss_health_max_value = part_UI.loss_value_label.include.max_value;
|
||||||
|
|
||||||
@@ -199,22 +225,39 @@ function this.draw(part, part_UI, cached_config, position_on_screen, opacity_sca
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- anomaly health value string
|
||||||
|
local anomaly_health_string = "";
|
||||||
|
if draw_anomaly then
|
||||||
|
local include_anomaly_health_current_value = part_UI.anomaly_value_label.include.current_value;
|
||||||
|
local include_anomaly_health_max_value = part_UI.anomaly_value_label.include.max_value;
|
||||||
|
|
||||||
|
if include_anomaly_health_current_value and include_anomaly_health_max_value then
|
||||||
|
anomaly_health_string = string.format("%.0f/%.0f", part.anomaly_health, part.anomaly_max_health);
|
||||||
|
elseif include_anomaly_health_current_value then
|
||||||
|
anomaly_health_string = string.format("%.0f", part.anomaly_health);
|
||||||
|
elseif include_anomaly_health_max_value then
|
||||||
|
anomaly_health_string = string.format("%.0f", part.anomaly_max_health);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local flinch_position_on_screen = {
|
local flinch_position_on_screen = {
|
||||||
x = position_on_screen.x + cached_config.part_health.offset.x,
|
x = position_on_screen.x + cached_config.part_health.offset.x,
|
||||||
y = position_on_screen.y + cached_config.part_health.offset.y,
|
y = position_on_screen.y + cached_config.part_health.offset.y,
|
||||||
visibility = part_UI.flinch_visibility
|
|
||||||
};
|
};
|
||||||
|
|
||||||
local break_position_on_screen = {
|
local break_position_on_screen = {
|
||||||
x = position_on_screen.x + cached_config.part_break.offset.x,
|
x = position_on_screen.x + cached_config.part_break.offset.x,
|
||||||
y = position_on_screen.y + cached_config.part_break.offset.y,
|
y = position_on_screen.y + cached_config.part_break.offset.y,
|
||||||
visibility = part_UI.flinch_visibility
|
|
||||||
};
|
};
|
||||||
|
|
||||||
local loss_position_on_screen = {
|
local loss_position_on_screen = {
|
||||||
x = position_on_screen.x + cached_config.part_loss.offset.x,
|
x = position_on_screen.x + cached_config.part_loss.offset.x,
|
||||||
y = position_on_screen.y + cached_config.part_loss.offset.y,
|
y = position_on_screen.y + cached_config.part_loss.offset.y,
|
||||||
part_UI = part_UI.loss_visibility
|
};
|
||||||
|
|
||||||
|
local anomaly_position_on_screen = {
|
||||||
|
x = position_on_screen.x + cached_config.part_anomaly.offset.x,
|
||||||
|
y = position_on_screen.y + cached_config.part_anomaly.offset.y,
|
||||||
};
|
};
|
||||||
|
|
||||||
if draw_health then
|
if draw_health then
|
||||||
@@ -225,10 +268,14 @@ function this.draw(part, part_UI, cached_config, position_on_screen, opacity_sca
|
|||||||
drawing.draw_bar(part_UI.break_bar, break_position_on_screen, opacity_scale, part.break_health_percentage);
|
drawing.draw_bar(part_UI.break_bar, break_position_on_screen, opacity_scale, part.break_health_percentage);
|
||||||
end
|
end
|
||||||
|
|
||||||
if draw_severe then
|
if draw_sever then
|
||||||
drawing.draw_bar(part_UI.loss_bar, loss_position_on_screen, opacity_scale, part.loss_health_percentage);
|
drawing.draw_bar(part_UI.loss_bar, loss_position_on_screen, opacity_scale, part.loss_health_percentage);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if draw_anomaly then
|
||||||
|
drawing.draw_bar(part_UI.anomaly_bar, anomaly_position_on_screen, opacity_scale, part.anomaly_health_percentage);
|
||||||
|
end
|
||||||
|
|
||||||
drawing.draw_label(part_UI.part_name_label, position_on_screen, opacity_scale, part_name);
|
drawing.draw_label(part_UI.part_name_label, position_on_screen, opacity_scale, part_name);
|
||||||
|
|
||||||
if draw_health then
|
if draw_health then
|
||||||
@@ -243,17 +290,27 @@ function this.draw(part, part_UI, cached_config, position_on_screen, opacity_sca
|
|||||||
drawing.draw_label(part_UI.break_percentage_label, break_position_on_screen, opacity_scale, 100 * part.break_health_percentage);
|
drawing.draw_label(part_UI.break_percentage_label, break_position_on_screen, opacity_scale, 100 * part.break_health_percentage);
|
||||||
end
|
end
|
||||||
|
|
||||||
if draw_severe then
|
if draw_sever then
|
||||||
drawing.draw_label(part_UI.loss_text_label, loss_position_on_screen, opacity_scale);
|
drawing.draw_label(part_UI.loss_text_label, loss_position_on_screen, opacity_scale);
|
||||||
drawing.draw_label(part_UI.loss_value_label, loss_position_on_screen, opacity_scale, loss_health_string);
|
drawing.draw_label(part_UI.loss_value_label, loss_position_on_screen, opacity_scale, loss_health_string);
|
||||||
drawing.draw_label(part_UI.loss_health_percentage_label, loss_position_on_screen, opacity_scale, 100 * part.loss_health_percentage);
|
drawing.draw_label(part_UI.loss_health_percentage_label, loss_position_on_screen, opacity_scale, 100 * part.loss_health_percentage);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if draw_anomaly then
|
||||||
|
drawing.draw_label(part_UI.anomaly_text_label, anomaly_position_on_screen, opacity_scale);
|
||||||
|
drawing.draw_label(part_UI.anomaly_value_label, anomaly_position_on_screen, opacity_scale, anomaly_health_string);
|
||||||
|
drawing.draw_label(part_UI.anomaly_health_percentage_label, anomaly_position_on_screen, opacity_scale, 100 * part.anomaly_health_percentage);
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ local config;
|
|||||||
local utils;
|
local utils;
|
||||||
local drawing;
|
local drawing;
|
||||||
local language;
|
local language;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -81,11 +82,15 @@ function this.draw(buff, buff_UI, position_on_screen, opacity_scale)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@@ -7,6 +7,7 @@ local players;
|
|||||||
local language;
|
local language;
|
||||||
local quest_status;
|
local quest_status;
|
||||||
local non_players;
|
local non_players;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -233,7 +234,7 @@ function this.draw(player, position_on_screen, opacity_scale, top_damage, top_dp
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
@@ -241,6 +242,10 @@ function this.init_module()
|
|||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
|
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
|
||||||
non_players = require("MHR_Overlay.Damage_Meter.non_players");
|
non_players = require("MHR_Overlay.Damage_Meter.non_players");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ local utils;
|
|||||||
local drawing;
|
local drawing;
|
||||||
local language;
|
local language;
|
||||||
local config;
|
local config;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -91,11 +92,15 @@ function this.draw(monster, health_UI, position_on_screen, opacity_scale)
|
|||||||
drawing.draw_label(health_UI.percentage_label, position_on_screen, opacity_scale, 100 * monster.health_percentage);
|
drawing.draw_label(health_UI.percentage_label, position_on_screen, opacity_scale, 100 * monster.health_percentage);
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ local utils;
|
|||||||
local drawing;
|
local drawing;
|
||||||
local language;
|
local language;
|
||||||
local config;
|
local config;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -105,11 +106,15 @@ function this.draw(monster, rage_UI, position_on_screen, opacity_scale)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ local utils;
|
|||||||
local drawing;
|
local drawing;
|
||||||
local language;
|
local language;
|
||||||
local config;
|
local config;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -102,11 +103,15 @@ function this.draw(monster, stamina_UI, position_on_screen, opacity_scale)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
drawing = require("MHR_Overlay.UI.drawing");
|
drawing = require("MHR_Overlay.UI.drawing");
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ local keyboard;
|
|||||||
local non_players;
|
local non_players;
|
||||||
local quest_status;
|
local quest_status;
|
||||||
local buffs;
|
local buffs;
|
||||||
|
local error_handler;
|
||||||
|
local time;
|
||||||
|
|
||||||
local label_customization;
|
local label_customization;
|
||||||
local bar_customization;
|
local bar_customization;
|
||||||
@@ -62,9 +64,7 @@ local ValueType = ValueType;
|
|||||||
local package = package;
|
local package = package;
|
||||||
|
|
||||||
this.font = nil;
|
this.font = nil;
|
||||||
this.font_range = {0x1, 0xFFFF, 0};
|
this.full_font_range = {0x1, 0xFFFF, 0};
|
||||||
this.is_opened = false;
|
|
||||||
this.status = "OK";
|
|
||||||
|
|
||||||
this.window_position = Vector2f.new(480, 200);
|
this.window_position = Vector2f.new(480, 200);
|
||||||
this.window_pivot = Vector2f.new(0, 0);
|
this.window_pivot = Vector2f.new(0, 0);
|
||||||
@@ -73,51 +73,38 @@ this.window_flags = 0x10120;
|
|||||||
this.color_picker_flags = 327680;
|
this.color_picker_flags = 327680;
|
||||||
this.decimal_input_flags = 33;
|
this.decimal_input_flags = 33;
|
||||||
|
|
||||||
this.displayed_orientation_types = {};
|
|
||||||
this.displayed_anchor_types = {};
|
|
||||||
this.displayed_outline_styles = {};
|
|
||||||
|
|
||||||
this.displayed_monster_UI_sorting_types = {};
|
|
||||||
this.displayed_large_monster_UI_parts_sorting_types = {};
|
|
||||||
this.displayed_large_monster_UI_parts_filter_types = {};
|
|
||||||
this.displayed_ailments_sorting_types = {};
|
|
||||||
this.displayed_ailment_buildups_sorting_types = {};
|
|
||||||
this.displayed_highlighted_buildup_bar_types = {};
|
|
||||||
this.displayed_buildup_bar_relative_types = {};
|
|
||||||
this.displayed_buff_UI_sorting_types = {};
|
|
||||||
|
|
||||||
this.displayed_damage_meter_UI_highlighted_entity_types = {};
|
|
||||||
this.displayed_damage_meter_UI_damage_bar_relative_types = {};
|
|
||||||
this.displayed_damage_meter_UI_my_damage_bar_location_types = {};
|
|
||||||
this.displayed_damage_meter_UI_total_damage_location_types = {};
|
|
||||||
this.displayed_damage_meter_UI_sorting_types = {};
|
|
||||||
this.displayed_damage_meter_UI_dps_modes = {};
|
|
||||||
|
|
||||||
this.displayed_auto_highlight_modes = {};
|
|
||||||
|
|
||||||
this.orientation_types = {};
|
this.orientation_types = {};
|
||||||
|
this.displayed_orientation_types = {};
|
||||||
|
|
||||||
this.anchor_types = {};
|
this.anchor_types = {};
|
||||||
this.outline_styles = {};
|
this.displayed_anchor_types = {};
|
||||||
|
|
||||||
this.monster_UI_sorting_types = {};
|
this.monster_UI_sorting_types = {};
|
||||||
this.large_monster_UI_parts_sorting_types = {};
|
this.displayed_monster_UI_sorting_types = {};
|
||||||
this.large_monster_UI_parts_filter_types = {};
|
|
||||||
this.ailments_sorting_types = {};
|
|
||||||
this.ailment_buildups_sorting_types = {};
|
|
||||||
this.highlighted_buildup_bar_types = {};
|
|
||||||
this.buildup_bar_relative_types = {};
|
|
||||||
this.buff_UI_sorting_types = {};
|
this.buff_UI_sorting_types = {};
|
||||||
|
this.displayed_buff_UI_sorting_types = {};
|
||||||
|
|
||||||
this.damage_meter_UI_highlighted_entity_types = {};
|
this.damage_meter_UI_highlighted_entity_types = {};
|
||||||
|
this.displayed_damage_meter_UI_highlighted_entity_types = {};
|
||||||
|
|
||||||
this.damage_meter_UI_damage_bar_relative_types = {};
|
this.damage_meter_UI_damage_bar_relative_types = {};
|
||||||
|
this.displayed_damage_meter_UI_damage_bar_relative_types = {};
|
||||||
|
|
||||||
this.damage_meter_UI_my_damage_bar_location_types = {};
|
this.damage_meter_UI_my_damage_bar_location_types = {};
|
||||||
|
this.displayed_damage_meter_UI_my_damage_bar_location_types = {};
|
||||||
|
|
||||||
this.damage_meter_UI_total_damage_location_types = {};
|
this.damage_meter_UI_total_damage_location_types = {};
|
||||||
|
this.displayed_damage_meter_UI_total_damage_location_types = {};
|
||||||
|
|
||||||
this.damage_meter_UI_sorting_types = {};
|
this.damage_meter_UI_sorting_types = {};
|
||||||
|
this.displayed_damage_meter_UI_sorting_types = {};
|
||||||
|
|
||||||
this.damage_meter_UI_dps_modes = {};
|
this.damage_meter_UI_dps_modes = {};
|
||||||
|
this.displayed_damage_meter_UI_dps_modes = {};
|
||||||
|
|
||||||
this.auto_highlight_modes = {};
|
this.auto_highlight_modes = {};
|
||||||
|
this.displayed_auto_highlight_modes = {};
|
||||||
|
|
||||||
|
|
||||||
this.fonts = {"Arial", "Arial Black", "Bahnschrift", "Calibri", "Cambria", "Cambria Math", "Candara",
|
this.fonts = {"Arial", "Arial Black", "Bahnschrift", "Calibri", "Cambria", "Cambria Math", "Candara",
|
||||||
"Comic Sans MS", "Consolas", "Constantia", "Corbel", "Courier New", "Ebrima",
|
"Comic Sans MS", "Consolas", "Constantia", "Corbel", "Courier New", "Ebrima",
|
||||||
@@ -146,8 +133,22 @@ this.menu_font_changed = false;
|
|||||||
this.config_name_input = "";
|
this.config_name_input = "";
|
||||||
|
|
||||||
function this.reload_font(pop_push)
|
function this.reload_font(pop_push)
|
||||||
this.font = imgui.load_font(language.current_language.font_name,
|
local cached_language = language.current_language;
|
||||||
config.current_config.global_settings.menu_font.size, this.font_range);
|
|
||||||
|
local font_range = cached_language.unicode_glyph_ranges;
|
||||||
|
|
||||||
|
if cached_language.font_name == "" then
|
||||||
|
font_range = nil;
|
||||||
|
|
||||||
|
elseif cached_language.unicode_glyph_ranges == nil
|
||||||
|
or utils.table.is_empty(cached_language.unicode_glyph_ranges)
|
||||||
|
or #cached_language.unicode_glyph_ranges == 1
|
||||||
|
or not utils.number.is_odd(#cached_language.unicode_glyph_ranges) then
|
||||||
|
|
||||||
|
font_range = this.full_font_range;
|
||||||
|
end
|
||||||
|
|
||||||
|
this.font = imgui.load_font(cached_language.font_name, config.current_config.global_settings.menu_font.size, font_range);
|
||||||
|
|
||||||
if pop_push then
|
if pop_push then
|
||||||
imgui.pop_font();
|
imgui.pop_font();
|
||||||
@@ -156,182 +157,201 @@ function this.reload_font(pop_push)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function this.init()
|
function this.init()
|
||||||
local current = language.current_language.customization_menu;
|
|
||||||
local default = language.default_language.customization_menu;
|
local default = language.default_language.customization_menu;
|
||||||
|
local current = language.current_language.customization_menu;
|
||||||
|
|
||||||
this.displayed_orientation_types = { current.horizontal,
|
bar_customization.init();
|
||||||
current.vertical};
|
ailments_customization.init();
|
||||||
|
ailment_buildups_customization.init();
|
||||||
|
body_parts_customization.init();
|
||||||
|
|
||||||
this.orientation_types = { default.horizontal,
|
this.orientation_types =
|
||||||
default.vertical};
|
{
|
||||||
|
default.horizontal,
|
||||||
|
default.vertical
|
||||||
|
};
|
||||||
|
|
||||||
this.displayed_anchor_types = { current.top_left,
|
this.displayed_orientation_types =
|
||||||
current.top_right,
|
{
|
||||||
current.bottom_left,
|
current.horizontal,
|
||||||
current.bottom_right};
|
current.vertical
|
||||||
|
};
|
||||||
|
|
||||||
|
this.anchor_types =
|
||||||
|
{
|
||||||
|
default.top_left,
|
||||||
|
default.top_right,
|
||||||
|
default.bottom_left,
|
||||||
|
default.bottom_right
|
||||||
|
};
|
||||||
|
|
||||||
this.anchor_types = { default.top_left,
|
this.displayed_anchor_types =
|
||||||
default.top_right,
|
{
|
||||||
default.bottom_left,
|
current.top_left,
|
||||||
default.bottom_right};
|
current.top_right,
|
||||||
|
current.bottom_left,
|
||||||
|
current.bottom_right
|
||||||
|
};
|
||||||
|
|
||||||
this.displayed_outline_styles = { current.inside,
|
this.monster_UI_sorting_types =
|
||||||
current.center,
|
{
|
||||||
current.outside};
|
default.normal,
|
||||||
|
default.health,
|
||||||
|
default.health_percentage,
|
||||||
|
default.distance
|
||||||
|
};
|
||||||
|
|
||||||
this.outline_styles = { default.inside,
|
this.displayed_monster_UI_sorting_types =
|
||||||
default.center,
|
{
|
||||||
default.outside};
|
current.normal,
|
||||||
|
current.health,
|
||||||
|
current.health_percentage,
|
||||||
|
current.distance
|
||||||
|
};
|
||||||
|
|
||||||
this.displayed_monster_UI_sorting_types = { current.normal,
|
this.buff_UI_sorting_types =
|
||||||
current.health,
|
{
|
||||||
current.health_percentage,
|
default.name,
|
||||||
current.distance};
|
default.timer,
|
||||||
|
default.duration
|
||||||
|
};
|
||||||
|
|
||||||
this.monster_UI_sorting_types = { default.normal,
|
this.displayed_buff_UI_sorting_types =
|
||||||
default.health,
|
{
|
||||||
default.health_percentage,
|
current.name,
|
||||||
default.distance};
|
current.timer,
|
||||||
|
current.duration
|
||||||
|
};
|
||||||
|
|
||||||
this.displayed_large_monster_UI_parts_sorting_types = { current.normal,
|
this.damage_meter_UI_highlighted_entity_types =
|
||||||
current.health,
|
{
|
||||||
current.health_percentage,
|
default.top_damage,
|
||||||
current.flinch_count,
|
default.top_dps,
|
||||||
current.break_health,
|
default.none
|
||||||
current.break_health_percentage,
|
};
|
||||||
current.break_count,
|
|
||||||
current.loss_health,
|
|
||||||
current.loss_health_percentage};
|
|
||||||
|
|
||||||
this.large_monster_UI_parts_sorting_types = { default.normal,
|
this.displayed_damage_meter_UI_highlighted_entity_types =
|
||||||
default.health,
|
{
|
||||||
default.health_percentage,
|
current.top_damage,
|
||||||
default.flinch_count,
|
current.top_dps,
|
||||||
default.break_health,
|
current.none
|
||||||
default.break_health_percentage,
|
};
|
||||||
default.break_count,
|
|
||||||
default.loss_health,
|
|
||||||
default.loss_health_percentage};
|
|
||||||
|
|
||||||
this.displayed_large_monster_UI_parts_filter_types = { current.current_state,
|
this.damage_meter_UI_damage_bar_relative_types =
|
||||||
current.default_state};
|
{
|
||||||
|
default.total_damage,
|
||||||
|
default.top_damage
|
||||||
|
};
|
||||||
|
|
||||||
this.large_monster_UI_parts_filter_types = { default.current_state,
|
this.displayed_damage_meter_UI_damage_bar_relative_types =
|
||||||
default.default_state};
|
{
|
||||||
|
current.total_damage,
|
||||||
|
current.top_damage
|
||||||
|
};
|
||||||
|
|
||||||
this.displayed_ailments_sorting_types = { current.normal,
|
this.damage_meter_UI_my_damage_bar_location_types =
|
||||||
current.buildup,
|
{
|
||||||
current.buildup_percentage};
|
default.normal,
|
||||||
|
default.first,
|
||||||
|
default.last
|
||||||
|
};
|
||||||
|
|
||||||
this.ailments_sorting_types = { default.normal,
|
this.displayed_damage_meter_UI_my_damage_bar_location_types =
|
||||||
default.buildup,
|
{
|
||||||
default.buildup_percentage};
|
current.normal,
|
||||||
|
current.first,
|
||||||
|
current.last
|
||||||
|
};
|
||||||
|
|
||||||
this.displayed_buff_UI_sorting_types = { current.name,
|
this.damage_meter_UI_total_damage_location_types =
|
||||||
current.timer,
|
{
|
||||||
current.duration};
|
default.first,
|
||||||
|
default.last
|
||||||
|
};
|
||||||
|
|
||||||
this.buff_UI_sorting_types = { default.name,
|
this.displayed_damage_meter_UI_total_damage_location_types =
|
||||||
default.timer,
|
{
|
||||||
default.duration};
|
current.first,
|
||||||
|
current.last
|
||||||
|
};
|
||||||
|
|
||||||
this.displayed_ailment_buildups_sorting_types = { current.normal,
|
this.damage_meter_UI_sorting_types =
|
||||||
current.buildup,
|
{
|
||||||
current.buildup_percentage};
|
default.normal,
|
||||||
|
default.damage,
|
||||||
|
default.dps
|
||||||
|
};
|
||||||
|
|
||||||
this.ailment_buildups_sorting_types = { default.normal,
|
this.displayed_damage_meter_UI_sorting_types =
|
||||||
default.buildup,
|
{
|
||||||
default.buildup_percentage};
|
current.normal,
|
||||||
|
current.damage,
|
||||||
|
current.dps
|
||||||
|
};
|
||||||
|
|
||||||
this.displayed_highlighted_buildup_bar_types = { current.me,
|
this.damage_meter_UI_dps_modes =
|
||||||
current.top_buildup,
|
{
|
||||||
current.none};
|
default.first_hit,
|
||||||
|
default.quest_time,
|
||||||
|
default.join_time
|
||||||
|
};
|
||||||
|
|
||||||
this.highlighted_buildup_bar_types = { default.me,
|
this.displayed_damage_meter_UI_dps_modes =
|
||||||
default.top_buildup,
|
{
|
||||||
default.none};
|
current.first_hit,
|
||||||
|
current.quest_time,
|
||||||
|
current.join_time
|
||||||
|
};
|
||||||
|
|
||||||
this.displayed_buildup_bar_relative_types = { current.total_buildup,
|
this.auto_highlight_modes =
|
||||||
current.top_buildup};
|
{
|
||||||
|
default.closest,
|
||||||
|
default.farthest,
|
||||||
|
default.lowest_health,
|
||||||
|
default.highest_health,
|
||||||
|
default.lowest_health_percentage,
|
||||||
|
default.highest_health_percentage
|
||||||
|
};
|
||||||
|
|
||||||
this.buildup_bar_relative_types = { default.total_buildup,
|
this.displayed_auto_highlight_modes =
|
||||||
default.top_buildup};
|
{
|
||||||
|
current.closest,
|
||||||
this.displayed_damage_meter_UI_highlighted_entity_types = { current.top_damage,
|
current.farthest,
|
||||||
current.top_dps,
|
current.lowest_health,
|
||||||
current.none};
|
current.highest_health,
|
||||||
|
current.lowest_health_percentage,
|
||||||
this.damage_meter_UI_highlighted_entity_types = { default.top_damage,
|
current.highest_health_percentage
|
||||||
default.top_dps,
|
};
|
||||||
default.none};
|
|
||||||
|
|
||||||
this.displayed_damage_meter_UI_damage_bar_relative_types = { current.total_damage,
|
|
||||||
current.top_damage};
|
|
||||||
|
|
||||||
this.damage_meter_UI_damage_bar_relative_types = { default.total_damage,
|
|
||||||
default.top_damage};
|
|
||||||
|
|
||||||
this.displayed_damage_meter_UI_my_damage_bar_location_types = { current.normal,
|
|
||||||
current.first,
|
|
||||||
current.last};
|
|
||||||
|
|
||||||
this.damage_meter_UI_my_damage_bar_location_types = { default.normal,
|
|
||||||
default.first,
|
|
||||||
default.last};
|
|
||||||
|
|
||||||
this.displayed_damage_meter_UI_total_damage_location_types = { current.first,
|
|
||||||
current.last};
|
|
||||||
|
|
||||||
this.damage_meter_UI_total_damage_location_types = { default.first,
|
|
||||||
default.last};
|
|
||||||
|
|
||||||
this.displayed_damage_meter_UI_sorting_types = { current.normal,
|
|
||||||
current.damage,
|
|
||||||
current.dps};
|
|
||||||
|
|
||||||
this.damage_meter_UI_sorting_types = { default.normal,
|
|
||||||
default.damage,
|
|
||||||
default.dps};
|
|
||||||
|
|
||||||
this.displayed_damage_meter_UI_dps_modes = { current.first_hit,
|
|
||||||
current.quest_time,
|
|
||||||
current.join_time};
|
|
||||||
|
|
||||||
this.damage_meter_UI_dps_modes = { default.first_hit,
|
|
||||||
default.quest_time,
|
|
||||||
default.join_time};
|
|
||||||
|
|
||||||
this.displayed_auto_highlight_modes = { current.closest,
|
|
||||||
current.farthest,
|
|
||||||
current.lowest_health,
|
|
||||||
current.highest_health,
|
|
||||||
current.lowest_health_percentage,
|
|
||||||
current.highest_health_percentage};
|
|
||||||
|
|
||||||
this.auto_highlight_modes = { default.closest,
|
|
||||||
default.farthest,
|
|
||||||
default.lowest_health,
|
|
||||||
default.highest_health,
|
|
||||||
default.lowest_health_percentage,
|
|
||||||
default.highest_health_percentage};
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.draw()
|
function this.draw()
|
||||||
imgui.set_next_window_pos(this.window_position, 1 << 3, this.window_pivot);
|
if not config.current_config.customization_menu.visible then
|
||||||
imgui.set_next_window_size(this.window_size, 1 << 3);
|
|
||||||
|
|
||||||
this.is_opened = imgui.begin_window(
|
|
||||||
language.current_language.customization_menu.mod_name .. " v" .. config.current_config.version, this.is_opened,
|
|
||||||
this.window_flags);
|
|
||||||
|
|
||||||
if not this.is_opened then
|
|
||||||
imgui.end_window();
|
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local window_position = Vector2f.new(config.current_config.customization_menu.position.x, config.current_config.customization_menu.position.y);
|
||||||
|
local window_pivot = Vector2f.new(config.current_config.customization_menu.pivot.x, config.current_config.customization_menu.pivot.y);
|
||||||
|
local window_size = Vector2f.new(config.current_config.customization_menu.size.width, config.current_config.customization_menu.size.height);
|
||||||
|
|
||||||
|
imgui.set_next_window_pos(window_position, 1 << 3, window_pivot);
|
||||||
|
imgui.set_next_window_size(window_size, 1 << 3);
|
||||||
|
|
||||||
imgui.push_font(this.font);
|
imgui.push_font(this.font);
|
||||||
|
|
||||||
|
config.current_config.customization_menu.visible = imgui.begin_window(
|
||||||
|
string.format("%s v%s", language.current_language.customization_menu.mod_name, config.current_config.version),
|
||||||
|
config.current_config.customization_menu.visible,
|
||||||
|
this.window_flags);
|
||||||
|
|
||||||
|
|
||||||
|
if not config.current_config.customization_menu.visible then
|
||||||
|
imgui.pop_font();
|
||||||
|
imgui.end_window();
|
||||||
|
config.save_current();
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local window_changed = false;
|
||||||
local config_changed = false;
|
local config_changed = false;
|
||||||
local language_changed = false;
|
local language_changed = false;
|
||||||
local modifiers_changed = false;
|
local modifiers_changed = false;
|
||||||
@@ -345,11 +365,27 @@ function this.draw()
|
|||||||
local damage_meter_UI_changed = false;
|
local damage_meter_UI_changed = false;
|
||||||
local endemic_life_UI_changed = false;
|
local endemic_life_UI_changed = false;
|
||||||
local buff_UI_changed = false;
|
local buff_UI_changed = false;
|
||||||
|
local debug_changed = false;
|
||||||
local apply_font_requested = false;
|
local apply_font_requested = false;
|
||||||
|
|
||||||
local status_string = tostring(this.status);
|
local new_window_position = imgui.get_window_pos();
|
||||||
|
if window_position.x ~= new_window_position.x or window_position.y ~= new_window_position.y then
|
||||||
|
window_changed = window_changed or true;
|
||||||
|
|
||||||
imgui.text(language.current_language.customization_menu.status .. ": " .. status_string);
|
config.current_config.customization_menu.position.x = new_window_position.x;
|
||||||
|
config.current_config.customization_menu.position.y = new_window_position.y;
|
||||||
|
end
|
||||||
|
|
||||||
|
local new_window_size = imgui.get_window_size();
|
||||||
|
if window_size.x ~= new_window_size.x or window_size.y ~= new_window_size.y then
|
||||||
|
window_changed = window_changed or true;
|
||||||
|
|
||||||
|
config.current_config.customization_menu.size.width = new_window_size.x;
|
||||||
|
config.current_config.customization_menu.size.height = new_window_size.y;
|
||||||
|
end
|
||||||
|
|
||||||
|
local new_window_size = imgui.get_window_size();
|
||||||
|
window_changed = window_changed or new_window_size.x ~= window_size.x or new_window_size.y ~= window_size.y;
|
||||||
|
|
||||||
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();
|
||||||
@@ -367,7 +403,10 @@ function this.draw()
|
|||||||
time_UI_changed = this.draw_time_UI();
|
time_UI_changed = this.draw_time_UI();
|
||||||
damage_meter_UI_changed = this.draw_damage_meter_UI();
|
damage_meter_UI_changed = this.draw_damage_meter_UI();
|
||||||
endemic_life_UI_changed = this.draw_endemic_life_UI()
|
endemic_life_UI_changed = this.draw_endemic_life_UI()
|
||||||
--buff_UI_changed = customization_menu.draw_buff_UI();
|
buff_UI_changed = this.draw_buff_UI();
|
||||||
|
|
||||||
|
imgui.new_line();
|
||||||
|
debug_changed = this.draw_debug();
|
||||||
|
|
||||||
imgui.pop_font();
|
imgui.pop_font();
|
||||||
imgui.end_window();
|
imgui.end_window();
|
||||||
@@ -426,22 +465,23 @@ function this.draw()
|
|||||||
end
|
end
|
||||||
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
|
for _, buff in pairs(buffs.list) do
|
||||||
buffs.init_UI(buff);
|
buffs.init_UI(buff);
|
||||||
end
|
end
|
||||||
end]]
|
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(false);
|
this.reload_font();
|
||||||
end
|
end
|
||||||
|
|
||||||
if 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 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 modifiers_changed or config_changed then
|
endemic_life_UI_changed or buff_UI_changed or modifiers_changed or config_changed or debug_changed then
|
||||||
config.save_current();
|
config.save_current();
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.draw_config()
|
function this.draw_config()
|
||||||
@@ -561,9 +601,9 @@ function this.draw_modules()
|
|||||||
language.current_language.customization_menu.endemic_life_UI, config.current_config.endemic_life_UI.enabled);
|
language.current_language.customization_menu.endemic_life_UI, config.current_config.endemic_life_UI.enabled);
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
--[[changed, config.current_config.buff_UI.enabled = imgui.checkbox(
|
changed, config.current_config.buff_UI.enabled = imgui.checkbox(
|
||||||
language.current_language.customization_menu.buff_UI, config.current_config.buff_UI.enabled);
|
language.current_language.customization_menu.buff_UI, config.current_config.buff_UI.enabled);
|
||||||
config_changed = config_changed or changed;]]
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
@@ -823,6 +863,7 @@ function this.draw_global_settings(apply_font_requested, language_changed)
|
|||||||
if changed then
|
if changed then
|
||||||
cached_config.language = language.language_names[index];
|
cached_config.language = language.language_names[index];
|
||||||
language.update(index);
|
language.update(index);
|
||||||
|
part_names.init();
|
||||||
this.init();
|
this.init();
|
||||||
|
|
||||||
language_changed = true;
|
language_changed = true;
|
||||||
@@ -993,11 +1034,11 @@ function this.draw_global_settings(apply_font_requested, language_changed)
|
|||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
--[[changed, cached_config.module_visibility.in_training_area.buff_UI = imgui.checkbox(
|
changed, cached_config.module_visibility.in_training_area.buff_UI = imgui.checkbox(
|
||||||
language.current_language.customization_menu.buff_UI,
|
language.current_language.customization_menu.buff_UI,
|
||||||
cached_config.module_visibility.in_training_area.buff_UI);
|
cached_config.module_visibility.in_training_area.buff_UI);
|
||||||
|
|
||||||
config_changed = config_changed or changed;]]
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
imgui.tree_pop();
|
imgui.tree_pop();
|
||||||
end
|
end
|
||||||
@@ -1731,62 +1772,68 @@ function this.draw_damage_meter_UI()
|
|||||||
|
|
||||||
if imgui.tree_node(language.current_language.customization_menu.tracked_damage_types) then
|
if imgui.tree_node(language.current_language.customization_menu.tracked_damage_types) then
|
||||||
|
|
||||||
changed, cached_config.tracked_damage_types.player_damage = imgui.checkbox(
|
changed, cached_config.tracked_damage_types.players = imgui.checkbox(
|
||||||
language.current_language.customization_menu.player_damage, cached_config.tracked_damage_types.player_damage);
|
language.current_language.customization_menu.players, cached_config.tracked_damage_types.players);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
damage_display_changed = damage_display_changed or changed;
|
damage_display_changed = damage_display_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.tracked_damage_types.bomb_damage = imgui.checkbox(
|
changed, cached_config.tracked_damage_types.bombs = imgui.checkbox(
|
||||||
language.current_language.customization_menu.bomb_damage, cached_config.tracked_damage_types.bomb_damage);
|
language.current_language.customization_menu.bombs, cached_config.tracked_damage_types.bombs);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
damage_display_changed = damage_display_changed or changed;
|
damage_display_changed = damage_display_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.tracked_damage_types.kunai_damage = imgui.checkbox(
|
changed, cached_config.tracked_damage_types.kunai = imgui.checkbox(
|
||||||
language.current_language.customization_menu.kunai_damage, cached_config.tracked_damage_types.kunai_damage);
|
language.current_language.customization_menu.kunai, cached_config.tracked_damage_types.kunai);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
damage_display_changed = damage_display_changed or changed;
|
damage_display_changed = damage_display_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.tracked_damage_types.installation_damage = imgui.checkbox(
|
changed, cached_config.tracked_damage_types.installations = imgui.checkbox(
|
||||||
language.current_language.customization_menu.installation_damage, cached_config.tracked_damage_types.installation_damage);
|
language.current_language.customization_menu.installations, cached_config.tracked_damage_types.installations);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
damage_display_changed = damage_display_changed or changed;
|
damage_display_changed = damage_display_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.tracked_damage_types.otomo_damage = imgui.checkbox(
|
changed, cached_config.tracked_damage_types.otomos = imgui.checkbox(
|
||||||
language.current_language.customization_menu.otomo_damage, cached_config.tracked_damage_types.otomo_damage);
|
language.current_language.customization_menu.otomos, cached_config.tracked_damage_types.otomos);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
damage_display_changed = damage_display_changed or changed;
|
damage_display_changed = damage_display_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.tracked_damage_types.wyvern_riding_damage = imgui.checkbox(
|
changed, cached_config.tracked_damage_types.wyvern_riding = imgui.checkbox(
|
||||||
language.current_language.customization_menu.wyvern_riding_damage, cached_config.tracked_damage_types.wyvern_riding_damage);
|
language.current_language.customization_menu.wyvern_riding, cached_config.tracked_damage_types.wyvern_riding);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
damage_display_changed = damage_display_changed or changed;
|
damage_display_changed = damage_display_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.tracked_damage_types.poison_damage = imgui.checkbox(
|
changed, cached_config.tracked_damage_types.poison = imgui.checkbox(
|
||||||
language.current_language.customization_menu.poison_damage, cached_config.tracked_damage_types.poison_damage);
|
language.current_language.customization_menu.poison, cached_config.tracked_damage_types.poison);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
damage_display_changed = damage_display_changed or changed;
|
damage_display_changed = damage_display_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.tracked_damage_types.blast_damage = imgui.checkbox(
|
changed, cached_config.tracked_damage_types.blast = imgui.checkbox(
|
||||||
language.current_language.customization_menu.blast_damage, cached_config.tracked_damage_types.blast_damage);
|
language.current_language.customization_menu.blast, cached_config.tracked_damage_types.blast);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
damage_display_changed = damage_display_changed or changed;
|
damage_display_changed = damage_display_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.tracked_damage_types.endemic_life_damage = imgui.checkbox(
|
changed, cached_config.tracked_damage_types.endemic_life = imgui.checkbox(
|
||||||
language.current_language.customization_menu.endemic_life_damage, cached_config.tracked_damage_types.endemic_life_damage);
|
language.current_language.customization_menu.endemic_life, cached_config.tracked_damage_types.endemic_life);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
damage_display_changed = damage_display_changed or changed;
|
damage_display_changed = damage_display_changed or changed;
|
||||||
|
|
||||||
changed, cached_config.tracked_damage_types.other_damage = imgui.checkbox(
|
changed, cached_config.tracked_damage_types.anomaly_cores = imgui.checkbox(
|
||||||
language.current_language.customization_menu.other_damage, cached_config.tracked_damage_types.other_damage);
|
language.current_language.customization_menu.anomaly_cores, cached_config.tracked_damage_types.anomaly_cores);
|
||||||
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
damage_display_changed = damage_display_changed or changed;
|
||||||
|
|
||||||
|
changed, cached_config.tracked_damage_types.other = imgui.checkbox(
|
||||||
|
language.current_language.customization_menu.other, cached_config.tracked_damage_types.other);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
damage_display_changed = damage_display_changed or changed;
|
damage_display_changed = damage_display_changed or changed;
|
||||||
@@ -2127,7 +2174,7 @@ function this.draw_endemic_life_UI()
|
|||||||
end
|
end
|
||||||
|
|
||||||
changed = label_customization.draw(
|
changed = label_customization.draw(
|
||||||
language.current_language.customization_menu.creature_name_label, cached_config.creature_name_label.visibility);
|
language.current_language.customization_menu.creature_name_label, cached_config.creature_name_label);
|
||||||
|
|
||||||
config_changed = config_changed or changed;
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
@@ -2249,7 +2296,63 @@ function this.draw_buff_UI()
|
|||||||
return config_changed;
|
return config_changed;
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.draw_debug()
|
||||||
|
local cached_config = config.current_config.debug;
|
||||||
|
|
||||||
|
local changed = false;
|
||||||
|
local config_changed = false;
|
||||||
|
|
||||||
|
if imgui.tree_node(language.current_language.customization_menu.debug) then
|
||||||
|
|
||||||
|
imgui.text_colored(string.format("%s:", language.current_language.customization_menu.current_time), 0xFFAAAA66);
|
||||||
|
imgui.same_line();
|
||||||
|
imgui.text(string.format("%.3fs", time.total_elapsed_script_seconds));
|
||||||
|
|
||||||
|
if error_handler.is_empty then
|
||||||
|
imgui.text(language.current_language.customization_menu.everything_seems_to_be_ok);
|
||||||
|
else
|
||||||
|
for error_key, error in pairs(error_handler.list) do
|
||||||
|
|
||||||
|
imgui.button(string.format("%.3fs", error.time));
|
||||||
|
imgui.same_line();
|
||||||
|
imgui.text_colored(error_key, 0xFFAA66AA);
|
||||||
|
imgui.same_line();
|
||||||
|
imgui.text(error.message);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if imgui.tree_node(language.current_language.customization_menu.history) then
|
||||||
|
|
||||||
|
changed, cached_config.history_size = imgui.drag_int(
|
||||||
|
language.current_language.customization_menu.history_size, cached_config.history_size, 1, 0, 1024);
|
||||||
|
|
||||||
|
config_changed = config_changed or changed;
|
||||||
|
|
||||||
|
if changed then
|
||||||
|
error_handler.history = {};
|
||||||
|
end
|
||||||
|
|
||||||
|
for index, error in pairs(error_handler.history) do
|
||||||
|
imgui.text_colored(index, 0xFF66AA66);
|
||||||
|
imgui.same_line();
|
||||||
|
imgui.button(string.format("%.3fs", error.time));
|
||||||
|
imgui.same_line();
|
||||||
|
imgui.text_colored(error.key, 0xFFAA66AA);
|
||||||
|
imgui.same_line();
|
||||||
|
imgui.text(error.message);
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
imgui.tree_pop();
|
||||||
|
end
|
||||||
|
|
||||||
|
imgui.tree_pop();
|
||||||
|
end
|
||||||
|
|
||||||
|
return config_changed;
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_dependencies()
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
@@ -2264,6 +2367,8 @@ function this.init_module()
|
|||||||
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");
|
buffs = require("MHR_Overlay.Buffs.buffs");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
time = require("MHR_Overlay.Game_Handler.time");
|
||||||
|
|
||||||
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");
|
||||||
@@ -2276,9 +2381,11 @@ function this.init_module()
|
|||||||
ailments_customization = require("MHR_Overlay.UI.Customizations.ailments_customization");
|
ailments_customization = require("MHR_Overlay.UI.Customizations.ailments_customization");
|
||||||
ailment_buildups_customization = require("MHR_Overlay.UI.Customizations.ailment_buildups_customization");
|
ailment_buildups_customization = require("MHR_Overlay.UI.Customizations.ailment_buildups_customization");
|
||||||
module_visibility_customization = require("MHR_Overlay.UI.Customizations.module_visibility_customization");
|
module_visibility_customization = require("MHR_Overlay.UI.Customizations.module_visibility_customization");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
this.init();
|
this.init();
|
||||||
this.reload_font(false);
|
this.reload_font();
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@@ -2,6 +2,7 @@ local this = {};
|
|||||||
|
|
||||||
local config;
|
local config;
|
||||||
local utils;
|
local utils;
|
||||||
|
local error_handler;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -82,7 +83,7 @@ function this.limit_text_size(text, size_limit)
|
|||||||
limited_text = utils.unicode.sub(limited_text, 1, -5) .. "...";
|
limited_text = utils.unicode.sub(limited_text, 1, -5) .. "...";
|
||||||
|
|
||||||
if limited_text == old_limited_text then
|
if limited_text == old_limited_text then
|
||||||
break
|
break;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -126,12 +127,19 @@ function this.draw_label(label, position, opacity_scale, ...)
|
|||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local text = string.format(label.text_format, table.unpack({...}));
|
local text = string.format(label.text_formatting, table.unpack({...}));
|
||||||
|
|
||||||
if text == "" then
|
if text == "" then
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local right_alignment_shift = label.settings.right_alignment_shift;
|
||||||
|
|
||||||
|
if right_alignment_shift ~= 0 then
|
||||||
|
local right_aligment_format = string.format("%%%ds", right_alignment_shift);
|
||||||
|
text = string.format(right_aligment_format, text);
|
||||||
|
end
|
||||||
|
|
||||||
local position_x = position.x + label.offset.x;
|
local position_x = position.x + label.offset.x;
|
||||||
local position_y = position.y + label.offset.y;
|
local position_y = position.y + label.offset.y;
|
||||||
|
|
||||||
@@ -167,7 +175,6 @@ function this.draw_label(label, position, opacity_scale, ...)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function this.draw_bar(bar, position, opacity_scale, percentage)
|
function this.draw_bar(bar, position, opacity_scale, percentage)
|
||||||
|
|
||||||
if bar == nil or not bar.visibility then
|
if bar == nil or not bar.visibility then
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
@@ -182,6 +189,7 @@ function this.draw_bar(bar, position, opacity_scale, percentage)
|
|||||||
|
|
||||||
local outline_visibility = bar.outline.visibility;
|
local outline_visibility = bar.outline.visibility;
|
||||||
local style = bar.outline.style; -- Inside/Center/Outside
|
local style = bar.outline.style; -- Inside/Center/Outside
|
||||||
|
local fill_direction = bar.settings.fill_direction; -- Left to Right/Right to Left/Top to Bottom/Bottom to Top
|
||||||
|
|
||||||
local outline_thickness = bar.outline.thickness;
|
local outline_thickness = bar.outline.thickness;
|
||||||
if not outline_visibility then
|
if not outline_visibility then
|
||||||
@@ -206,10 +214,21 @@ function this.draw_bar(bar, position, opacity_scale, percentage)
|
|||||||
local position_x = 0;
|
local position_x = 0;
|
||||||
local position_y = 0;
|
local position_y = 0;
|
||||||
|
|
||||||
local foreground_width = 0;
|
local width = 0;
|
||||||
local background_width = 0;
|
|
||||||
local height = 0;
|
local height = 0;
|
||||||
|
|
||||||
|
local foreground_width = 0;
|
||||||
|
local foreground_height = 0;
|
||||||
|
|
||||||
|
local background_width = 0;
|
||||||
|
local background_height = 0;
|
||||||
|
|
||||||
|
local foreground_shift_x = 0;
|
||||||
|
local foreground_shift_y = 0;
|
||||||
|
|
||||||
|
local background_shift_x = 0;
|
||||||
|
local background_shift_y = 0;
|
||||||
|
|
||||||
if style == "Inside" then
|
if style == "Inside" then
|
||||||
outline_position_x = position.x + bar.offset.x + half_outline_thickness;
|
outline_position_x = position.x + bar.offset.x + half_outline_thickness;
|
||||||
outline_position_y = position.y + bar.offset.y + half_outline_thickness;
|
outline_position_y = position.y + bar.offset.y + half_outline_thickness;
|
||||||
@@ -220,10 +239,7 @@ function this.draw_bar(bar, position, opacity_scale, percentage)
|
|||||||
position_x = outline_position_x + half_outline_thickness + outline_offset;
|
position_x = outline_position_x + half_outline_thickness + outline_offset;
|
||||||
position_y = outline_position_y + half_outline_thickness + outline_offset;
|
position_y = outline_position_y + half_outline_thickness + outline_offset;
|
||||||
|
|
||||||
local width = outline_width - outline_thickness - outline_offset - outline_offset;
|
width = outline_width - outline_thickness - outline_offset - outline_offset;
|
||||||
foreground_width = width * percentage;
|
|
||||||
background_width = width - foreground_width;
|
|
||||||
|
|
||||||
height = outline_height - outline_thickness - outline_offset - outline_offset;
|
height = outline_height - outline_thickness - outline_offset - outline_offset;
|
||||||
|
|
||||||
elseif style == "Center" then
|
elseif style == "Center" then
|
||||||
@@ -236,22 +252,16 @@ function this.draw_bar(bar, position, opacity_scale, percentage)
|
|||||||
position_x = outline_position_x + half_outline_thickness + outline_offset;
|
position_x = outline_position_x + half_outline_thickness + outline_offset;
|
||||||
position_y = outline_position_y + half_outline_thickness + outline_offset;
|
position_y = outline_position_y + half_outline_thickness + outline_offset;
|
||||||
|
|
||||||
local width = outline_width - outline_thickness - outline_offset - outline_offset;
|
width = outline_width - outline_thickness - outline_offset - outline_offset;
|
||||||
foreground_width = width * percentage;
|
|
||||||
background_width = width - foreground_width;
|
|
||||||
|
|
||||||
height = outline_height - outline_thickness - outline_offset - outline_offset;
|
height = outline_height - outline_thickness - outline_offset - outline_offset;
|
||||||
|
|
||||||
else
|
else -- Outside
|
||||||
position_x = position.x + bar.offset.x;
|
position_x = position.x + bar.offset.x;
|
||||||
position_y = position.y + bar.offset.y;
|
position_y = position.y + bar.offset.y;
|
||||||
|
|
||||||
local width = bar.size.width;
|
width = bar.size.width;
|
||||||
height = bar.size.height;
|
height = bar.size.height;
|
||||||
|
|
||||||
foreground_width = width * percentage;
|
|
||||||
background_width = width - foreground_width;
|
|
||||||
|
|
||||||
outline_position_x = position_x - half_outline_thickness - outline_offset;
|
outline_position_x = position_x - half_outline_thickness - outline_offset;
|
||||||
outline_position_y = position_y - half_outline_thickness - outline_offset;
|
outline_position_y = position_y - half_outline_thickness - outline_offset;
|
||||||
|
|
||||||
@@ -259,6 +269,43 @@ function this.draw_bar(bar, position, opacity_scale, percentage)
|
|||||||
outline_height = height + outline_thickness + outline_offset + outline_offset;
|
outline_height = height + outline_thickness + outline_offset + outline_offset;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if fill_direction == "Right to Left" then
|
||||||
|
foreground_width = width * percentage;
|
||||||
|
foreground_height = height;
|
||||||
|
|
||||||
|
background_width = width - foreground_width;
|
||||||
|
background_height = height;
|
||||||
|
|
||||||
|
foreground_shift_x = background_width;
|
||||||
|
|
||||||
|
elseif fill_direction == "Top to Bottom" then
|
||||||
|
foreground_width = width;
|
||||||
|
foreground_height = height * percentage;
|
||||||
|
|
||||||
|
background_width = width;
|
||||||
|
background_height = height - foreground_height;
|
||||||
|
|
||||||
|
background_shift_y = foreground_height;
|
||||||
|
|
||||||
|
elseif fill_direction == "Bottom to Top" then
|
||||||
|
foreground_width = width;
|
||||||
|
foreground_height = height * percentage;
|
||||||
|
|
||||||
|
background_width = width;
|
||||||
|
background_height = height - foreground_height;
|
||||||
|
|
||||||
|
foreground_shift_y = background_height;
|
||||||
|
|
||||||
|
else -- Left to Right
|
||||||
|
foreground_width = width * percentage;
|
||||||
|
foreground_height = height;
|
||||||
|
|
||||||
|
background_width = width - foreground_width;
|
||||||
|
background_height = height;
|
||||||
|
|
||||||
|
background_shift_x = foreground_width;
|
||||||
|
end
|
||||||
|
|
||||||
local foreground_color = bar.colors.foreground;
|
local foreground_color = bar.colors.foreground;
|
||||||
local background_color = bar.colors.background;
|
local background_color = bar.colors.background;
|
||||||
local outline_color = bar.colors.outline;
|
local outline_color = bar.colors.outline;
|
||||||
@@ -271,35 +318,33 @@ function this.draw_bar(bar, position, opacity_scale, percentage)
|
|||||||
|
|
||||||
local use_d2d = d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available;
|
local use_d2d = d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available;
|
||||||
|
|
||||||
-- outline
|
-- background
|
||||||
if outline_thickness ~= 0 then
|
if background_width ~= 0 then
|
||||||
if use_d2d then
|
if use_d2d then
|
||||||
d2d.outline_rect(outline_position_x, outline_position_y, outline_width, outline_height, outline_thickness,
|
d2d.fill_rect(position_x + background_shift_x, position_y + background_shift_y, background_width, background_height, background_color);
|
||||||
outline_color);
|
|
||||||
else
|
else
|
||||||
outline_color = this.argb_color_to_abgr_color(outline_color);
|
background_color = this.argb_color_to_abgr_color(background_color);
|
||||||
draw.outline_rect(outline_position_x, outline_position_y, outline_width, outline_height, outline_color);
|
draw.filled_rect(position_x + background_shift_x, position_y + background_shift_y, background_width, background_height, background_color)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- foreground
|
-- foreground
|
||||||
if foreground_width ~= 0 then
|
if foreground_width ~= 0 then
|
||||||
if use_d2d then
|
if use_d2d then
|
||||||
d2d.fill_rect(position_x, position_y, foreground_width, height, foreground_color);
|
d2d.fill_rect(position_x + foreground_shift_x, position_y + foreground_shift_y, foreground_width, foreground_height, foreground_color);
|
||||||
|
|
||||||
else
|
else
|
||||||
foreground_color = this.argb_color_to_abgr_color(foreground_color);
|
foreground_color = this.argb_color_to_abgr_color(foreground_color);
|
||||||
draw.filled_rect(position_x, position_y, foreground_width, height, foreground_color)
|
draw.filled_rect(position_x + foreground_shift_x, position_y + foreground_shift_y, foreground_width, foreground_height, foreground_color)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- background
|
-- outline
|
||||||
if background_width ~= 0 then
|
if outline_thickness ~= 0 then
|
||||||
if use_d2d then
|
if use_d2d then
|
||||||
d2d.fill_rect(position_x + foreground_width, position_y, background_width, height, background_color);
|
d2d.outline_rect(outline_position_x, outline_position_y, outline_width, outline_height, outline_thickness, outline_color);
|
||||||
else
|
else
|
||||||
background_color = this.argb_color_to_abgr_color(background_color);
|
outline_color = this.argb_color_to_abgr_color(outline_color);
|
||||||
draw.filled_rect(position_x + foreground_width, position_y, background_width, height, background_color)
|
draw.outline_rect(outline_position_x, outline_position_y, outline_width, outline_height, outline_color);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -332,9 +377,13 @@ function this.draw_capture_line(health_UI, position, opacity_scale, percentage)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_dependencies()
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
utils = require("MHR_Overlay.Misc.utils");
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.init_module()
|
||||||
end
|
end
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
"gold": "Gold",
|
"gold": "Gold",
|
||||||
"mini": "Mini",
|
"mini": "Mini",
|
||||||
"otomo": "Buddy",
|
"otomo": "Buddy",
|
||||||
|
"part_anomaly_core": "Anomaly Core",
|
||||||
"part_break": "Break",
|
"part_break": "Break",
|
||||||
"part_sever": "Sever",
|
"part_sever": "Sever",
|
||||||
"player": "Player",
|
"player": "Player",
|
||||||
@@ -37,6 +38,18 @@
|
|||||||
"tranq_bomb": "Tranq Bomb",
|
"tranq_bomb": "Tranq Bomb",
|
||||||
"waterblight": "Waterblight"
|
"waterblight": "Waterblight"
|
||||||
},
|
},
|
||||||
|
"consumables": {
|
||||||
|
"adamant_seed": "Adamant Seed",
|
||||||
|
"armorskin": "Armorskin",
|
||||||
|
"dash_juice": "Dash Juice",
|
||||||
|
"demon_powder": "Demon Powder",
|
||||||
|
"demondrug": "Demondrug",
|
||||||
|
"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!",
|
||||||
@@ -48,23 +61,30 @@
|
|||||||
"ailments": "Ailments",
|
"ailments": "Ailments",
|
||||||
"all_UI": "All UI",
|
"all_UI": "All UI",
|
||||||
"anchor": "Anchor",
|
"anchor": "Anchor",
|
||||||
|
"anomaly_cores": "Anomaly Cores",
|
||||||
|
"anomaly_filter": "Anomaly Core",
|
||||||
|
"anomaly_health": "Anomaly Core Health",
|
||||||
|
"anomaly_health_percentage": "Anomaly Core Health Percentage",
|
||||||
"apply": "Apply",
|
"apply": "Apply",
|
||||||
"assign_new_key": "Assign new key",
|
"assign_new_key": "Assign new key",
|
||||||
"auto_highlight": "Auto-highlight",
|
"auto_highlight": "Auto-highlight",
|
||||||
"background": "Background",
|
"background": "Background",
|
||||||
"bar": "Bar",
|
"bar": "Bar",
|
||||||
"blast_damage": "Blast Damage",
|
"blast": "Blast",
|
||||||
"body_parts": "Body Parts",
|
"body_parts": "Body Parts",
|
||||||
"bold": "Bold",
|
"bold": "Bold",
|
||||||
"bomb_damage": "Bomb Damage",
|
"bombs": "Bombs",
|
||||||
"bottom_left": "Bottom-Left",
|
"bottom_left": "Bottom-Left",
|
||||||
"bottom_right": "Bottom-Right",
|
"bottom_right": "Bottom-Right",
|
||||||
|
"bottom_to_top": "Bottom to Top",
|
||||||
|
"break_anomaly_filter": "Break + Anomaly Core",
|
||||||
"break_count": "Break Count",
|
"break_count": "Break Count",
|
||||||
"break_filter": "Break",
|
"break_filter": "Break",
|
||||||
"break_health": "Break Health",
|
"break_health": "Break Health",
|
||||||
"break_health_percentage": "Break Health Percentage",
|
"break_health_percentage": "Break Health Percentage",
|
||||||
"break_max_count": "Break Max Count",
|
"break_max_count": "Break Max Count",
|
||||||
"break_severe_filter": "Break + Severe",
|
"break_sever_anomaly_filter": "Break + Sever + Anomaly Core",
|
||||||
|
"break_sever_filter": "Break + Sever",
|
||||||
"buff_UI": "Buff UI",
|
"buff_UI": "Buff UI",
|
||||||
"buildup": "Buildup",
|
"buildup": "Buildup",
|
||||||
"buildup_bar": "Buildup Bar",
|
"buildup_bar": "Buildup Bar",
|
||||||
@@ -84,6 +104,7 @@
|
|||||||
"crown": "Crown",
|
"crown": "Crown",
|
||||||
"crown_thresholds": "Crown Thresholds",
|
"crown_thresholds": "Crown Thresholds",
|
||||||
"current_state": "Current State",
|
"current_state": "Current State",
|
||||||
|
"current_time": "Current Time",
|
||||||
"current_value": "Current Value",
|
"current_value": "Current Value",
|
||||||
"cutscene": "Cutscene",
|
"cutscene": "Cutscene",
|
||||||
"damage": "Damage",
|
"damage": "Damage",
|
||||||
@@ -92,6 +113,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",
|
||||||
|
"debug": "Debug",
|
||||||
"default_state": "Default State",
|
"default_state": "Default State",
|
||||||
"delete": "Delete",
|
"delete": "Delete",
|
||||||
"distance": "Distance",
|
"distance": "Distance",
|
||||||
@@ -104,11 +126,13 @@
|
|||||||
"dynamically_positioned": "Dynamically Positioned",
|
"dynamically_positioned": "Dynamically Positioned",
|
||||||
"enable_for": "Enable for",
|
"enable_for": "Enable for",
|
||||||
"enabled": "Enabled",
|
"enabled": "Enabled",
|
||||||
|
"endemic_life": "Endemic Life",
|
||||||
"endemic_life_UI": "Endemic Life UI",
|
"endemic_life_UI": "Endemic Life UI",
|
||||||
"endemic_life_damage": "Endemic Life Damage",
|
"everything_seems_to_be_ok": "Everything seems to be OK!",
|
||||||
"family": "Family",
|
"family": "Family",
|
||||||
"farthest": "Farthest",
|
"farthest": "Farthest",
|
||||||
"fight_time": "Fight Time",
|
"fight_time": "Fight Time",
|
||||||
|
"fill_direction": "Fill Direction",
|
||||||
"filter": "Filter",
|
"filter": "Filter",
|
||||||
"filter_mode": "Filter Mode",
|
"filter_mode": "Filter Mode",
|
||||||
"first": "First",
|
"first": "First",
|
||||||
@@ -120,11 +144,15 @@
|
|||||||
"global_scale_modifier": "Global Scale Modifier",
|
"global_scale_modifier": "Global Scale Modifier",
|
||||||
"global_settings": "Global Settings",
|
"global_settings": "Global Settings",
|
||||||
"health": "Health",
|
"health": "Health",
|
||||||
|
"health_anomaly_filter": "Health + Anomaly Core",
|
||||||
|
"health_break_anomaly_filter": "Health + Break + Anomaly Core",
|
||||||
"health_break_filter": "Health + Break",
|
"health_break_filter": "Health + Break",
|
||||||
"health_break_severe_filter": "Health + Break + Severe",
|
"health_break_sever_anomaly_filter": "Health + Break + Sever + Anomaly Core",
|
||||||
|
"health_break_sever_filter": "Health + Break + Sever",
|
||||||
"health_filter": "Health",
|
"health_filter": "Health",
|
||||||
"health_percentage": "Health Percentage",
|
"health_percentage": "Health Percentage",
|
||||||
"health_severe_filter": "Health + Severe",
|
"health_sever_anomaly_filter": "Health + Sever + Anomaly Core",
|
||||||
|
"health_sever_filter": "Health + Sever",
|
||||||
"height": "Height",
|
"height": "Height",
|
||||||
"hide_ailments_with_zero_buildup": "Hide Ailments when Buildup is 0",
|
"hide_ailments_with_zero_buildup": "Hide Ailments when Buildup is 0",
|
||||||
"hide_all_active_ailments": "Hide All Active Ailments",
|
"hide_all_active_ailments": "Hide All Active Ailments",
|
||||||
@@ -150,6 +178,8 @@
|
|||||||
"highlighted_buildup_bar": "Highlighted Buildup Bar",
|
"highlighted_buildup_bar": "Highlighted Buildup Bar",
|
||||||
"highlighted_damage_bar": "Highlighted Damage Bar",
|
"highlighted_damage_bar": "Highlighted Damage Bar",
|
||||||
"highlighted_targeted": "Highlighted (targeted)",
|
"highlighted_targeted": "Highlighted (targeted)",
|
||||||
|
"history": "History",
|
||||||
|
"history_size": "History Size",
|
||||||
"horizontal": "Horizontal",
|
"horizontal": "Horizontal",
|
||||||
"hotkeys": "Hotkeys",
|
"hotkeys": "Hotkeys",
|
||||||
"hunter_rank": "Hunter Rank",
|
"hunter_rank": "Hunter Rank",
|
||||||
@@ -159,11 +189,11 @@
|
|||||||
"in_training_area": "In Training Area",
|
"in_training_area": "In Training Area",
|
||||||
"include": "Include",
|
"include": "Include",
|
||||||
"inside": "Inside",
|
"inside": "Inside",
|
||||||
"installation_damage": "Installation Damage",
|
"installations": "Installations",
|
||||||
"italic": "Italic",
|
"italic": "Italic",
|
||||||
"join_time": "Join Time",
|
"join_time": "Join Time",
|
||||||
"killcam": "Killcam",
|
"killcam": "Killcam",
|
||||||
"kunai_damage": "Kunai Damage",
|
"kunai": "Kunai",
|
||||||
"language": "Language",
|
"language": "Language",
|
||||||
"large_monster_UI": "Large Monster UI",
|
"large_monster_UI": "Large Monster UI",
|
||||||
"large_monster_dynamic_UI": "Large Monster Dynamic UI",
|
"large_monster_dynamic_UI": "Large Monster Dynamic UI",
|
||||||
@@ -171,6 +201,7 @@
|
|||||||
"large_monster_static_UI": "Large Monster Static UI",
|
"large_monster_static_UI": "Large Monster Static UI",
|
||||||
"large_monsters": "Large Monsters",
|
"large_monsters": "Large Monsters",
|
||||||
"last": "Last",
|
"last": "Last",
|
||||||
|
"left_to_right": "Left to Right",
|
||||||
"level": "Level",
|
"level": "Level",
|
||||||
"level_label": "Level Label",
|
"level_label": "Level Label",
|
||||||
"loading_quest": "Loading Quest",
|
"loading_quest": "Loading Quest",
|
||||||
@@ -191,10 +222,10 @@
|
|||||||
"module_visibility_based_on_game_state": "Module Visibility based on Game State",
|
"module_visibility_based_on_game_state": "Module Visibility based on Game State",
|
||||||
"modules": "Modules",
|
"modules": "Modules",
|
||||||
"monster_can_be_captured": "Monster can be captured",
|
"monster_can_be_captured": "Monster can be captured",
|
||||||
"monster_damage": "Monster Damage",
|
|
||||||
"monster_id": "Monster ID",
|
"monster_id": "Monster ID",
|
||||||
"monster_name": "Monster Name",
|
"monster_name": "Monster Name",
|
||||||
"monster_name_label": "Monster Name Label",
|
"monster_name_label": "Monster Name Label",
|
||||||
|
"monsters": "Monsters",
|
||||||
"my_damage_bar_location": "My Damage Bar Location",
|
"my_damage_bar_location": "My Damage Bar Location",
|
||||||
"my_otomos": "My Buddies",
|
"my_otomos": "My Buddies",
|
||||||
"myself": "Myself",
|
"myself": "Myself",
|
||||||
@@ -207,10 +238,10 @@
|
|||||||
"offset_is_relative_to_parts": "Offset is Relative to Parts",
|
"offset_is_relative_to_parts": "Offset is Relative to Parts",
|
||||||
"opacity_falloff": "Opacity Falloff",
|
"opacity_falloff": "Opacity Falloff",
|
||||||
"orientation": "Orientation",
|
"orientation": "Orientation",
|
||||||
"other_damage": "Other Damage",
|
"other": "Other",
|
||||||
"other_player_otomos": "Other Player Buddies",
|
"other_player_otomos": "Other Player Buddies",
|
||||||
"other_players": "Other Players",
|
"other_players": "Other Players",
|
||||||
"otomo_damage": "Buddy Damage",
|
"otomos": "Buddies",
|
||||||
"outline": "Outline",
|
"outline": "Outline",
|
||||||
"outside": "Outside",
|
"outside": "Outside",
|
||||||
"part_health": "Part Health",
|
"part_health": "Part Health",
|
||||||
@@ -218,12 +249,12 @@
|
|||||||
"part_name_label": "Part Name Label",
|
"part_name_label": "Part Name Label",
|
||||||
"percentage_label": "Percentage Label",
|
"percentage_label": "Percentage Label",
|
||||||
"performance": "Performance",
|
"performance": "Performance",
|
||||||
"player_damage": "Player Damage",
|
|
||||||
"player_name_label": "Player Name Label",
|
"player_name_label": "Player Name Label",
|
||||||
"player_name_size_limit": "Player Name Size Limit",
|
"player_name_size_limit": "Player Name Size Limit",
|
||||||
"player_spacing": "Player Spacing",
|
"player_spacing": "Player Spacing",
|
||||||
|
"players": "Players",
|
||||||
"playing_quest": "Playing Quest",
|
"playing_quest": "Playing Quest",
|
||||||
"poison_damage": "Poison Damage",
|
"poison": "Poison",
|
||||||
"position": "Position",
|
"position": "Position",
|
||||||
"press_any_key": "Press any key...",
|
"press_any_key": "Press any key...",
|
||||||
"prioritize_large_monsters": "Large Monsters on High Priority",
|
"prioritize_large_monsters": "Large Monsters on High Priority",
|
||||||
@@ -237,15 +268,19 @@
|
|||||||
"relative_offset": "Relative Offset",
|
"relative_offset": "Relative Offset",
|
||||||
"rename": "Rename",
|
"rename": "Rename",
|
||||||
"render_highlighted_monster": "Render Highlighted Monster",
|
"render_highlighted_monster": "Render Highlighted Monster",
|
||||||
|
"render_inactive_anomaly_cores": "Render Inactive Anomaly Cores",
|
||||||
"render_not_highlighted_monsters": "Render Not Highlighted Monsters",
|
"render_not_highlighted_monsters": "Render Not Highlighted Monsters",
|
||||||
"renderer": "Renderer",
|
"renderer": "Renderer",
|
||||||
"reset": "Reset",
|
"reset": "Reset",
|
||||||
"reversed_order": "Reversed Order",
|
"reversed_order": "Reversed Order",
|
||||||
"reward_screen": "Reward Screen",
|
"reward_screen": "Reward Screen",
|
||||||
|
"right_alignment_shift": "Right Alignment Shift",
|
||||||
|
"right_to_left": "Right to Left",
|
||||||
"servant_otomos": "Servant Buddies",
|
"servant_otomos": "Servant Buddies",
|
||||||
"servants": "Followers",
|
"servants": "Followers",
|
||||||
"settings": "Settings",
|
"settings": "Settings",
|
||||||
"severe_filter": "Severe",
|
"sever_anomaly_filter": "Sever + Anomaly Core",
|
||||||
|
"sever_filter": "Sever",
|
||||||
"shadow": "Shadow",
|
"shadow": "Shadow",
|
||||||
"show_my_otomos_separately": "Show My Buddies separately",
|
"show_my_otomos_separately": "Show My Buddies separately",
|
||||||
"show_other_player_otomos_separately": "Show Other Player Buddies separately",
|
"show_other_player_otomos_separately": "Show Other Player Buddies separately",
|
||||||
@@ -276,6 +311,7 @@
|
|||||||
"top_dps": "Top DPS",
|
"top_dps": "Top DPS",
|
||||||
"top_left": "Top-Left",
|
"top_left": "Top-Left",
|
||||||
"top_right": "Top-Right",
|
"top_right": "Top-Right",
|
||||||
|
"top_to_bottom": "Top to Bottom",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"total_buildup": "Total Buildup",
|
"total_buildup": "Total Buildup",
|
||||||
"total_buildup_label": "Total Buildup Label",
|
"total_buildup_label": "Total Buildup Label",
|
||||||
@@ -298,12 +334,42 @@
|
|||||||
"visible": "Visible",
|
"visible": "Visible",
|
||||||
"width": "Width",
|
"width": "Width",
|
||||||
"world_offset": "World Offset",
|
"world_offset": "World Offset",
|
||||||
"wyvern_riding_damage": "Wyvern Riding Damage",
|
"wyvern_riding": "Wyvern Riding",
|
||||||
"x": "X",
|
"x": "X",
|
||||||
"y": "Y",
|
"y": "Y",
|
||||||
"z": "Z"
|
"z": "Z"
|
||||||
},
|
},
|
||||||
"font_name": "NotoSansKR-Bold.otf",
|
"font_name": "",
|
||||||
|
"melody_effects": {
|
||||||
|
"affinity_up": "Affinity Up",
|
||||||
|
"attack_and_affinity_up": "Attack and Affinity Up",
|
||||||
|
"attack_and_defense_up": "Attack and Defense Up",
|
||||||
|
"attack_up": "Attack Up",
|
||||||
|
"blight_negated": "Blight Negated",
|
||||||
|
"defense_up": "Defense Up",
|
||||||
|
"divine_protection": "Divine Protection",
|
||||||
|
"earplugs_l": "Earplugs (L)",
|
||||||
|
"earplugs_s": "Earplugs (S)",
|
||||||
|
"elemental_attack_boost": "Elemental Attack Boost",
|
||||||
|
"environment_damage_negated": "Environment Damage Negated",
|
||||||
|
"health_recovery_l": "Health Recovery (L)",
|
||||||
|
"health_recovery_s": "Health Recovery (S)",
|
||||||
|
"health_recovery_s_antidote": "Health Recovery (S) + Antidote",
|
||||||
|
"health_regeneration": "Health Regeneration",
|
||||||
|
"infernal_melody": "Infernal Melody",
|
||||||
|
"knockbacks_negated": "Knockbacks Negated",
|
||||||
|
"self_improvement": "Self-Improvement",
|
||||||
|
"sharpness_extension": "Sharpness Extension",
|
||||||
|
"sharpness_loss_reduced": "Sharpness Loss Reduced",
|
||||||
|
"sharpness_regeneration": "Sharpness Regeneration",
|
||||||
|
"sonic_barrier": "Sonic Barrier",
|
||||||
|
"sonic_wave": "Sonic Wave",
|
||||||
|
"stamina_recovery_up": "Stamina Recovery Up",
|
||||||
|
"stamina_use_reduced": "Stamina Use Reduced",
|
||||||
|
"stun_negated": "Stun Negated",
|
||||||
|
"tremors_negated": "Tremors Negated",
|
||||||
|
"wind_pressure_negated": "Wind Pressure Negated"
|
||||||
|
},
|
||||||
"parts": {
|
"parts": {
|
||||||
"abdomen": "Abdomen",
|
"abdomen": "Abdomen",
|
||||||
"amatsu_unknown": "?",
|
"amatsu_unknown": "?",
|
||||||
@@ -372,5 +438,8 @@
|
|||||||
"wingclaw": "Wingclaw",
|
"wingclaw": "Wingclaw",
|
||||||
"wingclaws": "Wingclaws",
|
"wingclaws": "Wingclaws",
|
||||||
"wings": "Wings"
|
"wings": "Wings"
|
||||||
}
|
},
|
||||||
|
"unicode_glyph_ranges": [
|
||||||
|
0
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
"gold": "金冠",
|
"gold": "金冠",
|
||||||
"mini": "小型",
|
"mini": "小型",
|
||||||
"otomo": "Buddy",
|
"otomo": "Buddy",
|
||||||
|
"part_anomaly_core": "Anomaly Core",
|
||||||
"part_break": "部位破壊",
|
"part_break": "部位破壊",
|
||||||
"part_sever": "尻尾切断",
|
"part_sever": "尻尾切断",
|
||||||
"player": "Player",
|
"player": "Player",
|
||||||
@@ -37,6 +38,18 @@
|
|||||||
"tranq_bomb": "捕獲用麻酔玉",
|
"tranq_bomb": "捕獲用麻酔玉",
|
||||||
"waterblight": "水属性やられ"
|
"waterblight": "水属性やられ"
|
||||||
},
|
},
|
||||||
|
"consumables": {
|
||||||
|
"adamant_seed": "Adamant Seed",
|
||||||
|
"armorskin": "Armorskin",
|
||||||
|
"dash_juice": "Dash Juice",
|
||||||
|
"demon_powder": "Demon Powder",
|
||||||
|
"demondrug": "Demondrug",
|
||||||
|
"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": "フォントの変更後はスクリプトリセットを行ってください。",
|
||||||
@@ -48,23 +61,30 @@
|
|||||||
"ailments": "状態異常表示",
|
"ailments": "状態異常表示",
|
||||||
"all_UI": "全てのUI",
|
"all_UI": "全てのUI",
|
||||||
"anchor": "固定",
|
"anchor": "固定",
|
||||||
|
"anomaly_cores": "Anomaly Cores",
|
||||||
|
"anomaly_filter": "Anomaly Core",
|
||||||
|
"anomaly_health": "Anomaly Core Health",
|
||||||
|
"anomaly_health_percentage": "Anomaly Core Health Percentage",
|
||||||
"apply": "適用",
|
"apply": "適用",
|
||||||
"assign_new_key": "新規に割り当てるキーを入力",
|
"assign_new_key": "新規に割り当てるキーを入力",
|
||||||
"auto_highlight": "Auto-highlight",
|
"auto_highlight": "Auto-highlight",
|
||||||
"background": "背景色",
|
"background": "背景色",
|
||||||
"bar": "バー",
|
"bar": "バー",
|
||||||
"blast_damage": "爆破ダメージ",
|
"blast": "爆破",
|
||||||
"body_parts": "部位",
|
"body_parts": "部位",
|
||||||
"bold": "ボールド",
|
"bold": "ボールド",
|
||||||
"bomb_damage": "爆弾ダメージ",
|
"bombs": "Bombs",
|
||||||
"bottom_left": "左下",
|
"bottom_left": "左下",
|
||||||
"bottom_right": "右下",
|
"bottom_right": "右下",
|
||||||
|
"bottom_to_top": "Bottom to Top",
|
||||||
|
"break_anomaly_filter": "Break + Anomaly Core",
|
||||||
"break_count": "破壊時間",
|
"break_count": "破壊時間",
|
||||||
"break_filter": "Break",
|
"break_filter": "Break",
|
||||||
"break_health": "部位破壊までのダメージ状況",
|
"break_health": "部位破壊までのダメージ状況",
|
||||||
"break_health_percentage": "部位破壊までのダメージ状況(%)",
|
"break_health_percentage": "部位破壊までのダメージ状況(%)",
|
||||||
"break_max_count": "最大破壊数",
|
"break_max_count": "最大破壊数",
|
||||||
"break_severe_filter": "Break + Severe",
|
"break_sever_anomaly_filter": "Break + Sever + Anomaly Core",
|
||||||
|
"break_sever_filter": "Break + Sever",
|
||||||
"buff_UI": "Buff UI",
|
"buff_UI": "Buff UI",
|
||||||
"buildup": "蓄積値",
|
"buildup": "蓄積値",
|
||||||
"buildup_bar": "蓄積値バー",
|
"buildup_bar": "蓄積値バー",
|
||||||
@@ -84,6 +104,7 @@
|
|||||||
"crown": "王冠",
|
"crown": "王冠",
|
||||||
"crown_thresholds": "王冠の閾値",
|
"crown_thresholds": "王冠の閾値",
|
||||||
"current_state": "Current State",
|
"current_state": "Current State",
|
||||||
|
"current_time": "Current Time",
|
||||||
"current_value": "Current Value",
|
"current_value": "Current Value",
|
||||||
"cutscene": "Cutscene",
|
"cutscene": "Cutscene",
|
||||||
"damage": "ダメージ",
|
"damage": "ダメージ",
|
||||||
@@ -92,6 +113,7 @@
|
|||||||
"damage_meter_UI": "ダメージメーターUI",
|
"damage_meter_UI": "ダメージメーターUI",
|
||||||
"damage_percentage_label": "ダメージ割合(%)ラベル",
|
"damage_percentage_label": "ダメージ割合(%)ラベル",
|
||||||
"damage_value_label": "ダメージラベル",
|
"damage_value_label": "ダメージラベル",
|
||||||
|
"debug": "Debug",
|
||||||
"default_state": "Default State",
|
"default_state": "Default State",
|
||||||
"delete": "Delete",
|
"delete": "Delete",
|
||||||
"distance": "距離",
|
"distance": "距離",
|
||||||
@@ -104,11 +126,13 @@
|
|||||||
"dynamically_positioned": "モンスターに追随して表示",
|
"dynamically_positioned": "モンスターに追随して表示",
|
||||||
"enable_for": "有効にする",
|
"enable_for": "有効にする",
|
||||||
"enabled": "有効",
|
"enabled": "有効",
|
||||||
|
"endemic_life": "Endemic Life",
|
||||||
"endemic_life_UI": "環境生物UI",
|
"endemic_life_UI": "環境生物UI",
|
||||||
"endemic_life_damage": "環境生物のダメージ",
|
"everything_seems_to_be_ok": "Everything seems to be OK!",
|
||||||
"family": "Family",
|
"family": "Family",
|
||||||
"farthest": "Farthest",
|
"farthest": "Farthest",
|
||||||
"fight_time": "戦闘時間",
|
"fight_time": "戦闘時間",
|
||||||
|
"fill_direction": "Fill Direction",
|
||||||
"filter": "フィルター",
|
"filter": "フィルター",
|
||||||
"filter_mode": "Filter Mode",
|
"filter_mode": "Filter Mode",
|
||||||
"first": "最初",
|
"first": "最初",
|
||||||
@@ -120,11 +144,15 @@
|
|||||||
"global_scale_modifier": "全体的なスケールの調整",
|
"global_scale_modifier": "全体的なスケールの調整",
|
||||||
"global_settings": "全体設定",
|
"global_settings": "全体設定",
|
||||||
"health": "体力",
|
"health": "体力",
|
||||||
|
"health_anomaly_filter": "Health + Anomaly Core",
|
||||||
|
"health_break_anomaly_filter": "Health + Break + Anomaly Core",
|
||||||
"health_break_filter": "Health + Break",
|
"health_break_filter": "Health + Break",
|
||||||
"health_break_severe_filter": "Health + Break + Severe",
|
"health_break_sever_anomaly_filter": "Health + Break + Sever + Anomaly Core",
|
||||||
|
"health_break_sever_filter": "Health + Break + Sever",
|
||||||
"health_filter": "Health",
|
"health_filter": "Health",
|
||||||
"health_percentage": "ダメージ割合(%)",
|
"health_percentage": "ダメージ割合(%)",
|
||||||
"health_severe_filter": "Health + Severe",
|
"health_sever_anomaly_filter": "Health + Sever + Anomaly Core",
|
||||||
|
"health_sever_filter": "Health + Sever",
|
||||||
"height": "ヘイト",
|
"height": "ヘイト",
|
||||||
"hide_ailments_with_zero_buildup": "蓄積値がゼロの時に状態異常の表示を隠す",
|
"hide_ailments_with_zero_buildup": "蓄積値がゼロの時に状態異常の表示を隠す",
|
||||||
"hide_all_active_ailments": "全ての有効な状態異常を隠す",
|
"hide_all_active_ailments": "全ての有効な状態異常を隠す",
|
||||||
@@ -150,6 +178,8 @@
|
|||||||
"highlighted_buildup_bar": "ハイライトされた蓄積値バー",
|
"highlighted_buildup_bar": "ハイライトされた蓄積値バー",
|
||||||
"highlighted_damage_bar": "ハイライトされたダメージバー",
|
"highlighted_damage_bar": "ハイライトされたダメージバー",
|
||||||
"highlighted_targeted": "詳細表示 (ターゲット)",
|
"highlighted_targeted": "詳細表示 (ターゲット)",
|
||||||
|
"history": "History",
|
||||||
|
"history_size": "History Size",
|
||||||
"horizontal": "水平",
|
"horizontal": "水平",
|
||||||
"hotkeys": "ホットキー",
|
"hotkeys": "ホットキー",
|
||||||
"hunter_rank": "ハンターランク",
|
"hunter_rank": "ハンターランク",
|
||||||
@@ -159,11 +189,11 @@
|
|||||||
"in_training_area": "In Training Area",
|
"in_training_area": "In Training Area",
|
||||||
"include": "含める情報",
|
"include": "含める情報",
|
||||||
"inside": "Inside",
|
"inside": "Inside",
|
||||||
"installation_damage": "設備のダメージ",
|
"installations": "Installations",
|
||||||
"italic": "イタリック",
|
"italic": "イタリック",
|
||||||
"join_time": "参加時間",
|
"join_time": "参加時間",
|
||||||
"killcam": "Killcam",
|
"killcam": "Killcam",
|
||||||
"kunai_damage": "クナイダメージ",
|
"kunai": "Kunai",
|
||||||
"language": "表示言語",
|
"language": "表示言語",
|
||||||
"large_monster_UI": "大型モンスターUI",
|
"large_monster_UI": "大型モンスターUI",
|
||||||
"large_monster_dynamic_UI": "大型モンスターのダイナミック表示UI",
|
"large_monster_dynamic_UI": "大型モンスターのダイナミック表示UI",
|
||||||
@@ -171,6 +201,7 @@
|
|||||||
"large_monster_static_UI": "大型モンスターのスタティック表示UI",
|
"large_monster_static_UI": "大型モンスターのスタティック表示UI",
|
||||||
"large_monsters": "大型モンスター",
|
"large_monsters": "大型モンスター",
|
||||||
"last": "最後",
|
"last": "最後",
|
||||||
|
"left_to_right": "Left to Right",
|
||||||
"level": "Level",
|
"level": "Level",
|
||||||
"level_label": "Level Label",
|
"level_label": "Level Label",
|
||||||
"loading_quest": "Loading Quest",
|
"loading_quest": "Loading Quest",
|
||||||
@@ -191,10 +222,10 @@
|
|||||||
"module_visibility_based_on_game_state": "Module Visibility based on Game State",
|
"module_visibility_based_on_game_state": "Module Visibility based on Game State",
|
||||||
"modules": "モジュール",
|
"modules": "モジュール",
|
||||||
"monster_can_be_captured": "捕獲可能なモンスター",
|
"monster_can_be_captured": "捕獲可能なモンスター",
|
||||||
"monster_damage": "モンスターダメージ",
|
|
||||||
"monster_id": "モンスターID",
|
"monster_id": "モンスターID",
|
||||||
"monster_name": "モンスター名",
|
"monster_name": "モンスター名",
|
||||||
"monster_name_label": "モンスター名ラベル",
|
"monster_name_label": "モンスター名ラベル",
|
||||||
|
"monsters": "Monsters",
|
||||||
"my_damage_bar_location": "自身のダメージバーの場所",
|
"my_damage_bar_location": "自身のダメージバーの場所",
|
||||||
"my_otomos": "My Buddies",
|
"my_otomos": "My Buddies",
|
||||||
"myself": "Myself",
|
"myself": "Myself",
|
||||||
@@ -207,10 +238,10 @@
|
|||||||
"offset_is_relative_to_parts": "部位表示に対する相対的な位置",
|
"offset_is_relative_to_parts": "部位表示に対する相対的な位置",
|
||||||
"opacity_falloff": "透明度を上げる",
|
"opacity_falloff": "透明度を上げる",
|
||||||
"orientation": "並べ方",
|
"orientation": "並べ方",
|
||||||
"other_damage": "その他のダメージ",
|
"other": "Other",
|
||||||
"other_player_otomos": "Other Player Buddies",
|
"other_player_otomos": "Other Player Buddies",
|
||||||
"other_players": "他のプレイヤー",
|
"other_players": "他のプレイヤー",
|
||||||
"otomo_damage": "オトモのダメージ",
|
"otomos": "Buddies",
|
||||||
"outline": "Outline",
|
"outline": "Outline",
|
||||||
"outside": "Outside",
|
"outside": "Outside",
|
||||||
"part_health": "部位体力",
|
"part_health": "部位体力",
|
||||||
@@ -218,12 +249,12 @@
|
|||||||
"part_name_label": "部位名ラベル",
|
"part_name_label": "部位名ラベル",
|
||||||
"percentage_label": "パーセンテージラベル",
|
"percentage_label": "パーセンテージラベル",
|
||||||
"performance": "パフォーマンス",
|
"performance": "パフォーマンス",
|
||||||
"player_damage": "プレイヤーダメージ",
|
|
||||||
"player_name_label": "プレイヤー名ラベル",
|
"player_name_label": "プレイヤー名ラベル",
|
||||||
"player_name_size_limit": "プレイヤー名のサイズ上限",
|
"player_name_size_limit": "プレイヤー名のサイズ上限",
|
||||||
"player_spacing": "プレイヤー表示の間隔",
|
"player_spacing": "プレイヤー表示の間隔",
|
||||||
|
"players": "Players",
|
||||||
"playing_quest": "Playing Quest",
|
"playing_quest": "Playing Quest",
|
||||||
"poison_damage": "毒ダメージ",
|
"poison": "毒",
|
||||||
"position": "位置",
|
"position": "位置",
|
||||||
"press_any_key": "何かボタンを押してください。",
|
"press_any_key": "何かボタンを押してください。",
|
||||||
"prioritize_large_monsters": "大型モンスターを優先する",
|
"prioritize_large_monsters": "大型モンスターを優先する",
|
||||||
@@ -237,15 +268,19 @@
|
|||||||
"relative_offset": "相対的な表示位置",
|
"relative_offset": "相対的な表示位置",
|
||||||
"rename": "Rename",
|
"rename": "Rename",
|
||||||
"render_highlighted_monster": "ハイライトされたモンスターをレンダリング(表示)する",
|
"render_highlighted_monster": "ハイライトされたモンスターをレンダリング(表示)する",
|
||||||
|
"render_inactive_anomaly_cores": "Render Inactive Anomaly Cores",
|
||||||
"render_not_highlighted_monsters": "ハイライトされていないモンスターをレンダリング(表示)する",
|
"render_not_highlighted_monsters": "ハイライトされていないモンスターをレンダリング(表示)する",
|
||||||
"renderer": "Renderer",
|
"renderer": "Renderer",
|
||||||
"reset": "Reset",
|
"reset": "Reset",
|
||||||
"reversed_order": "逆順",
|
"reversed_order": "逆順",
|
||||||
"reward_screen": "Reward Screen",
|
"reward_screen": "Reward Screen",
|
||||||
|
"right_alignment_shift": "Right Alignment Shift",
|
||||||
|
"right_to_left": "Right to Left",
|
||||||
"servant_otomos": "Servant Buddies",
|
"servant_otomos": "Servant Buddies",
|
||||||
"servants": "Followers",
|
"servants": "Followers",
|
||||||
"settings": "設定",
|
"settings": "設定",
|
||||||
"severe_filter": "Severe",
|
"sever_anomaly_filter": "Sever + Anomaly Core",
|
||||||
|
"sever_filter": "Sever",
|
||||||
"shadow": "影",
|
"shadow": "影",
|
||||||
"show_my_otomos_separately": "Show my Buddies separately",
|
"show_my_otomos_separately": "Show my Buddies separately",
|
||||||
"show_other_player_otomos_separately": "Show Other Player Buddies separately",
|
"show_other_player_otomos_separately": "Show Other Player Buddies separately",
|
||||||
@@ -276,6 +311,7 @@
|
|||||||
"top_dps": "最高DPS",
|
"top_dps": "最高DPS",
|
||||||
"top_left": "左上",
|
"top_left": "左上",
|
||||||
"top_right": "右上",
|
"top_right": "右上",
|
||||||
|
"top_to_bottom": "Top to Bottom",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"total_buildup": "蓄積合計",
|
"total_buildup": "蓄積合計",
|
||||||
"total_buildup_label": "合計蓄積ラベル",
|
"total_buildup_label": "合計蓄積ラベル",
|
||||||
@@ -298,12 +334,42 @@
|
|||||||
"visible": "表示する",
|
"visible": "表示する",
|
||||||
"width": "幅",
|
"width": "幅",
|
||||||
"world_offset": "表示位置",
|
"world_offset": "表示位置",
|
||||||
"wyvern_riding_damage": "操竜ダメージ",
|
"wyvern_riding": "Wyvern Riding",
|
||||||
"x": "X",
|
"x": "X",
|
||||||
"y": "Y",
|
"y": "Y",
|
||||||
"z": "Z"
|
"z": "Z"
|
||||||
},
|
},
|
||||||
"font_name": "NotoSansJP-Bold.otf",
|
"font_name": "NotoSansJP-Bold.otf",
|
||||||
|
"melody_effects": {
|
||||||
|
"affinity_up": "Affinity Up",
|
||||||
|
"attack_and_affinity_up": "Attack and Affinity Up",
|
||||||
|
"attack_and_defense_up": "Attack and Defense Up",
|
||||||
|
"attack_up": "Attack Up",
|
||||||
|
"blight_negated": "Blight Negated",
|
||||||
|
"defense_up": "Defense Up",
|
||||||
|
"divine_protection": "Divine Protection",
|
||||||
|
"earplugs_l": "Earplugs (L)",
|
||||||
|
"earplugs_s": "Earplugs (S)",
|
||||||
|
"elemental_attack_boost": "Elemental Attack Boost",
|
||||||
|
"environment_damage_negated": "Environment Damage Negated",
|
||||||
|
"health_recovery_l": "Health Recovery (L)",
|
||||||
|
"health_recovery_s": "Health Recovery (S)",
|
||||||
|
"health_recovery_s_antidote": "Health Recovery (S) + Antidote",
|
||||||
|
"health_regeneration": "Health Regeneration",
|
||||||
|
"infernal_melody": "Infernal Melody",
|
||||||
|
"knockbacks_negated": "Knockbacks Negated",
|
||||||
|
"self_improvement": "Self-Improvement",
|
||||||
|
"sharpness_extension": "Sharpness Extension",
|
||||||
|
"sharpness_loss_reduced": "Sharpness Loss Reduced",
|
||||||
|
"sharpness_regeneration": "Sharpness Regeneration",
|
||||||
|
"sonic_barrier": "Sonic Barrier",
|
||||||
|
"sonic_wave": "Sonic Wave",
|
||||||
|
"stamina_recovery_up": "Stamina Recovery Up",
|
||||||
|
"stamina_use_reduced": "Stamina Use Reduced",
|
||||||
|
"stun_negated": "Stun Negated",
|
||||||
|
"tremors_negated": "Tremors Negated",
|
||||||
|
"wind_pressure_negated": "Wind Pressure Negated"
|
||||||
|
},
|
||||||
"parts": {
|
"parts": {
|
||||||
"abdomen": "腹部",
|
"abdomen": "腹部",
|
||||||
"amatsu_unknown": "?",
|
"amatsu_unknown": "?",
|
||||||
@@ -372,5 +438,20 @@
|
|||||||
"wingclaw": "翼爪",
|
"wingclaw": "翼爪",
|
||||||
"wingclaws": "Wingclaws",
|
"wingclaws": "Wingclaws",
|
||||||
"wings": "翼"
|
"wings": "翼"
|
||||||
}
|
},
|
||||||
|
"unicode_glyph_ranges": [
|
||||||
|
32,
|
||||||
|
255,
|
||||||
|
8192,
|
||||||
|
8303,
|
||||||
|
12288,
|
||||||
|
12543,
|
||||||
|
12784,
|
||||||
|
12799,
|
||||||
|
19968,
|
||||||
|
40879,
|
||||||
|
65280,
|
||||||
|
65519,
|
||||||
|
0
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
"gold": "금관",
|
"gold": "금관",
|
||||||
"mini": "최소",
|
"mini": "최소",
|
||||||
"otomo": "동반자",
|
"otomo": "동반자",
|
||||||
|
"part_anomaly_core": "괴이핵",
|
||||||
"part_break": "파괴",
|
"part_break": "파괴",
|
||||||
"part_sever": "절단",
|
"part_sever": "절단",
|
||||||
"player": "헌터",
|
"player": "헌터",
|
||||||
@@ -37,6 +38,18 @@
|
|||||||
"tranq_bomb": "포획용마취옥",
|
"tranq_bomb": "포획용마취옥",
|
||||||
"waterblight": "진흙구리"
|
"waterblight": "진흙구리"
|
||||||
},
|
},
|
||||||
|
"consumables": {
|
||||||
|
"adamant_seed": "Adamant Seed",
|
||||||
|
"armorskin": "Armorskin",
|
||||||
|
"dash_juice": "Dash Juice",
|
||||||
|
"demon_powder": "Demon Powder",
|
||||||
|
"demondrug": "Demondrug",
|
||||||
|
"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": "글꼴 변경시 스크립트를 리로드 해야합니다!",
|
||||||
@@ -48,23 +61,30 @@
|
|||||||
"ailments": "상태이상",
|
"ailments": "상태이상",
|
||||||
"all_UI": "모든 UI",
|
"all_UI": "모든 UI",
|
||||||
"anchor": "기준",
|
"anchor": "기준",
|
||||||
|
"anomaly_cores": "괴이핵",
|
||||||
|
"anomaly_filter": "괴이핵",
|
||||||
|
"anomaly_health": "괴이핵 체력",
|
||||||
|
"anomaly_health_percentage": "괴이핵 체력 비율",
|
||||||
"apply": "적용",
|
"apply": "적용",
|
||||||
"assign_new_key": "새 키를 할당",
|
"assign_new_key": "새 키를 할당",
|
||||||
"auto_highlight": "자동 타겟 설정",
|
"auto_highlight": "자동 타겟 설정",
|
||||||
"background": "배경색",
|
"background": "배경색",
|
||||||
"bar": "막대",
|
"bar": "막대",
|
||||||
"blast_damage": "폭파 대미지",
|
"blast": "폭파",
|
||||||
"body_parts": "부위",
|
"body_parts": "부위",
|
||||||
"bold": "굵게",
|
"bold": "굵게",
|
||||||
"bomb_damage": "폭탄 대미지",
|
"bombs": "폭탄",
|
||||||
"bottom_left": "좌하단",
|
"bottom_left": "왼쪽 아래",
|
||||||
"bottom_right": "우하단",
|
"bottom_right": "오른쪽 아래",
|
||||||
|
"bottom_to_top": "아래에서 위로",
|
||||||
|
"break_anomaly_filter": "파괴 + 괴이핵",
|
||||||
"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_severe_filter": "파괴 + 절단",
|
"break_sever_anomaly_filter": "파괴 + 절단 + 괴이핵",
|
||||||
|
"break_sever_filter": "파괴 + 절단",
|
||||||
"buff_UI": "버프 UI",
|
"buff_UI": "버프 UI",
|
||||||
"buildup": "누적치",
|
"buildup": "누적치",
|
||||||
"buildup_bar": "누적치 막대",
|
"buildup_bar": "누적치 막대",
|
||||||
@@ -83,8 +103,9 @@
|
|||||||
"creature_name_label": "환경생물 이름 정보",
|
"creature_name_label": "환경생물 이름 정보",
|
||||||
"crown": "금관",
|
"crown": "금관",
|
||||||
"crown_thresholds": "금관 판정값",
|
"crown_thresholds": "금관 판정값",
|
||||||
"current_state": "Current State",
|
"current_state": "현재 상태",
|
||||||
"current_value": "Current Value",
|
"current_time": "Current Time",
|
||||||
|
"current_value": "현재 값",
|
||||||
"cutscene": "컷신",
|
"cutscene": "컷신",
|
||||||
"damage": "대미지",
|
"damage": "대미지",
|
||||||
"damage_bar": "대미지 막대",
|
"damage_bar": "대미지 막대",
|
||||||
@@ -92,7 +113,9 @@
|
|||||||
"damage_meter_UI": "대미지 미터 UI",
|
"damage_meter_UI": "대미지 미터 UI",
|
||||||
"damage_percentage_label": "대미지 비율 정보",
|
"damage_percentage_label": "대미지 비율 정보",
|
||||||
"damage_value_label": "대미지 값 정보",
|
"damage_value_label": "대미지 값 정보",
|
||||||
"default_state": "Default State",
|
"debug": "Debug",
|
||||||
|
"debug_errors": "Debug Errors",
|
||||||
|
"default_state": "기본 상태",
|
||||||
"delete": "삭제하기",
|
"delete": "삭제하기",
|
||||||
"distance": "간격",
|
"distance": "간격",
|
||||||
"dps": "DPS",
|
"dps": "DPS",
|
||||||
@@ -104,13 +127,15 @@
|
|||||||
"dynamically_positioned": "유동 위치 UI",
|
"dynamically_positioned": "유동 위치 UI",
|
||||||
"enable_for": "표시 대상",
|
"enable_for": "표시 대상",
|
||||||
"enabled": "사용함",
|
"enabled": "사용함",
|
||||||
|
"endemic_life": "환경생물",
|
||||||
"endemic_life_UI": "환경생물 UI",
|
"endemic_life_UI": "환경생물 UI",
|
||||||
"endemic_life_damage": "환경생물 대미지",
|
"everything_seems_to_be_ok": "Everything seems to be OK!",
|
||||||
"family": "글꼴",
|
"family": "글꼴",
|
||||||
"farthest": "가장 멀리있는",
|
"farthest": "가장 멀리있는",
|
||||||
"fight_time": "전투 시간",
|
"fight_time": "전투 시간",
|
||||||
|
"fill_direction": "채우는 방향",
|
||||||
"filter": "필터",
|
"filter": "필터",
|
||||||
"filter_mode": "Filter Mode",
|
"filter_mode": "필터 모드",
|
||||||
"first": "맨 앞",
|
"first": "맨 앞",
|
||||||
"first_hit": "첫 공격",
|
"first_hit": "첫 공격",
|
||||||
"flinch_count": "경직 횟수",
|
"flinch_count": "경직 횟수",
|
||||||
@@ -120,11 +145,15 @@
|
|||||||
"global_scale_modifier": "전역 크기 배율",
|
"global_scale_modifier": "전역 크기 배율",
|
||||||
"global_settings": "전역 설정",
|
"global_settings": "전역 설정",
|
||||||
"health": "체력",
|
"health": "체력",
|
||||||
|
"health_anomaly_filter": "체력 + 괴이핵",
|
||||||
|
"health_break_anomaly_filter": "체력 + 파괴 + 괴이핵",
|
||||||
"health_break_filter": "체력 + 파괴",
|
"health_break_filter": "체력 + 파괴",
|
||||||
"health_break_severe_filter": "체력 + 파괴 + 절단",
|
"health_break_sever_anomaly_filter": "체력 + 파괴 + 절단 + 괴이핵",
|
||||||
|
"health_break_sever_filter": "체력 + 파괴 + 절단",
|
||||||
"health_filter": "체력",
|
"health_filter": "체력",
|
||||||
"health_percentage": "체력 비율",
|
"health_percentage": "체력 비율",
|
||||||
"health_severe_filter": "체력 + 절단",
|
"health_sever_anomaly_filter": "체력 + 절단 + 괴이핵",
|
||||||
|
"health_sever_filter": "체력 + 절단",
|
||||||
"height": "높이",
|
"height": "높이",
|
||||||
"hide_ailments_with_zero_buildup": "누적치가 0이면 상태이상 표시 안 함",
|
"hide_ailments_with_zero_buildup": "누적치가 0이면 상태이상 표시 안 함",
|
||||||
"hide_all_active_ailments": "걸린 상태이상 모두 표시 안 함",
|
"hide_all_active_ailments": "걸린 상태이상 모두 표시 안 함",
|
||||||
@@ -150,6 +179,8 @@
|
|||||||
"highlighted_buildup_bar": "주시대상 몬스터 누적치 막대",
|
"highlighted_buildup_bar": "주시대상 몬스터 누적치 막대",
|
||||||
"highlighted_damage_bar": "주시대상 몬스터 대미지 막대",
|
"highlighted_damage_bar": "주시대상 몬스터 대미지 막대",
|
||||||
"highlighted_targeted": "주시대상 몬스터 표시",
|
"highlighted_targeted": "주시대상 몬스터 표시",
|
||||||
|
"history": "History",
|
||||||
|
"history_size": "History Size",
|
||||||
"horizontal": "가로",
|
"horizontal": "가로",
|
||||||
"hotkeys": "단축키",
|
"hotkeys": "단축키",
|
||||||
"hunter_rank": "헌터 랭크",
|
"hunter_rank": "헌터 랭크",
|
||||||
@@ -159,11 +190,11 @@
|
|||||||
"in_training_area": "훈련구역 내",
|
"in_training_area": "훈련구역 내",
|
||||||
"include": "포함",
|
"include": "포함",
|
||||||
"inside": "내부",
|
"inside": "내부",
|
||||||
"installation_damage": "설비 대미지",
|
"installations": "설치",
|
||||||
"italic": "기울임",
|
"italic": "기울임",
|
||||||
"join_time": "참가 시간",
|
"join_time": "참가 시간",
|
||||||
"killcam": "처치 영상",
|
"killcam": "처치 영상",
|
||||||
"kunai_damage": "쿠나이 대미지",
|
"kunai": "쿠나이",
|
||||||
"language": "언어",
|
"language": "언어",
|
||||||
"large_monster_UI": "대형 몬스터 UI",
|
"large_monster_UI": "대형 몬스터 UI",
|
||||||
"large_monster_dynamic_UI": "대형 몬스터 유동 UI",
|
"large_monster_dynamic_UI": "대형 몬스터 유동 UI",
|
||||||
@@ -171,6 +202,7 @@
|
|||||||
"large_monster_static_UI": "대형 몬스터 고정 UI",
|
"large_monster_static_UI": "대형 몬스터 고정 UI",
|
||||||
"large_monsters": "대형 몬스터",
|
"large_monsters": "대형 몬스터",
|
||||||
"last": "맨 뒤",
|
"last": "맨 뒤",
|
||||||
|
"left_to_right": "왼쪽에서 오른쪽",
|
||||||
"level": "레벨",
|
"level": "레벨",
|
||||||
"level_label": "레벨 정보",
|
"level_label": "레벨 정보",
|
||||||
"loading_quest": "퀘스트 로딩 중",
|
"loading_quest": "퀘스트 로딩 중",
|
||||||
@@ -181,7 +213,7 @@
|
|||||||
"master_rank": "마스터 랭크",
|
"master_rank": "마스터 랭크",
|
||||||
"max_distance": "최대 거리",
|
"max_distance": "최대 거리",
|
||||||
"max_monster_updates_per_tick": "틱당 최대 몬스터 갱신 횟수",
|
"max_monster_updates_per_tick": "틱당 최대 몬스터 갱신 횟수",
|
||||||
"max_value": "Max Value",
|
"max_value": "최대값",
|
||||||
"me": "나",
|
"me": "나",
|
||||||
"menu_font": "메뉴 글꼴",
|
"menu_font": "메뉴 글꼴",
|
||||||
"menu_font_change_disclaimer": "언어 및 메뉴 글꼴 크기를 여러 번 변경하면 비정상 종료가 될 수 있습니다!",
|
"menu_font_change_disclaimer": "언어 및 메뉴 글꼴 크기를 여러 번 변경하면 비정상 종료가 될 수 있습니다!",
|
||||||
@@ -189,28 +221,28 @@
|
|||||||
"mode": "모드",
|
"mode": "모드",
|
||||||
"modifiers": "설정 배율",
|
"modifiers": "설정 배율",
|
||||||
"module_visibility_based_on_game_state": "게임 상태에 따라 모듈 표시",
|
"module_visibility_based_on_game_state": "게임 상태에 따라 모듈 표시",
|
||||||
"modules": "UI",
|
"modules": "모듈",
|
||||||
"monster_can_be_captured": "몬스터 포획 가능",
|
"monster_can_be_captured": "몬스터 포획 가능",
|
||||||
"monster_damage": "몬스터 대미지",
|
|
||||||
"monster_id": "몬스터 ID",
|
"monster_id": "몬스터 ID",
|
||||||
"monster_name": "몬스터명",
|
"monster_name": "몬스터명",
|
||||||
"monster_name_label": "몬스터명 정보",
|
"monster_name_label": "몬스터명 정보",
|
||||||
|
"monsters": "몬스터",
|
||||||
"my_damage_bar_location": "내 대미지 막대 위치",
|
"my_damage_bar_location": "내 대미지 막대 위치",
|
||||||
"my_otomos": "내 동반자",
|
"my_otomos": "내 동반자",
|
||||||
"myself": "나",
|
"myself": "나",
|
||||||
"name": "이름",
|
"name": "이름",
|
||||||
"name_label": "이름 정보",
|
"name_label": "이름 정보",
|
||||||
"new": "새",
|
"new": "새로 만들기",
|
||||||
"none": "없음",
|
"none": "없음",
|
||||||
"normal": "기본",
|
"normal": "기본",
|
||||||
"offset": "오프셋",
|
"offset": "오프셋",
|
||||||
"offset_is_relative_to_parts": "오프셋을 부위 기준으로",
|
"offset_is_relative_to_parts": "오프셋을 부위 기준으로",
|
||||||
"opacity_falloff": "투명도 감소",
|
"opacity_falloff": "투명도 감소",
|
||||||
"orientation": "방향",
|
"orientation": "방향",
|
||||||
"other_damage": "기타 대미지",
|
"other": "기타",
|
||||||
"other_player_otomos": "다른 플레이어 동반자",
|
"other_player_otomos": "다른 플레이어 동반자",
|
||||||
"other_players": "다른 헌터",
|
"other_players": "다른 헌터",
|
||||||
"otomo_damage": "동반자 대미지",
|
"otomos": "동반자",
|
||||||
"outline": "외곽선",
|
"outline": "외곽선",
|
||||||
"outside": "외부",
|
"outside": "외부",
|
||||||
"part_health": "부위 수치",
|
"part_health": "부위 수치",
|
||||||
@@ -218,12 +250,12 @@
|
|||||||
"part_name_label": "부위 정보",
|
"part_name_label": "부위 정보",
|
||||||
"percentage_label": "비율 정보",
|
"percentage_label": "비율 정보",
|
||||||
"performance": "성능",
|
"performance": "성능",
|
||||||
"player_damage": "헌터 대미지",
|
|
||||||
"player_name_label": "헌터명 정보",
|
"player_name_label": "헌터명 정보",
|
||||||
"player_name_size_limit": "헌터명 크기 제한",
|
"player_name_size_limit": "헌터명 크기 제한",
|
||||||
"player_spacing": "플레이어 간격",
|
"player_spacing": "플레이어 간격",
|
||||||
|
"players": "모든 플레이어",
|
||||||
"playing_quest": "퀘스트 중",
|
"playing_quest": "퀘스트 중",
|
||||||
"poison_damage": "독 대미지",
|
"poison": "독",
|
||||||
"position": "위치",
|
"position": "위치",
|
||||||
"press_any_key": "설정할 키를 누르세요...",
|
"press_any_key": "설정할 키를 누르세요...",
|
||||||
"prioritize_large_monsters": "대형 몬스터를 우선적으로",
|
"prioritize_large_monsters": "대형 몬스터를 우선적으로",
|
||||||
@@ -237,15 +269,19 @@
|
|||||||
"relative_offset": "상대적 위치 오프셋",
|
"relative_offset": "상대적 위치 오프셋",
|
||||||
"rename": "이름 변경",
|
"rename": "이름 변경",
|
||||||
"render_highlighted_monster": "주시대상 몬스터 표시",
|
"render_highlighted_monster": "주시대상 몬스터 표시",
|
||||||
|
"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_to_left": "오른쪽에서 왼쪽",
|
||||||
"servant_otomos": "맹우 동반자",
|
"servant_otomos": "맹우 동반자",
|
||||||
"servants": "맹우",
|
"servants": "맹우",
|
||||||
"settings": "설정",
|
"settings": "설정",
|
||||||
"severe_filter": "절단",
|
"sever_anomaly_filter": "절단 + 괴이핵",
|
||||||
|
"sever_filter": "절단",
|
||||||
"shadow": "그림자",
|
"shadow": "그림자",
|
||||||
"show_my_otomos_separately": "내 동반자를 따로",
|
"show_my_otomos_separately": "내 동반자를 따로",
|
||||||
"show_other_player_otomos_separately": "다른 플레이어의 동반자를 따로",
|
"show_other_player_otomos_separately": "다른 플레이어의 동반자를 따로",
|
||||||
@@ -274,8 +310,9 @@
|
|||||||
"top_buildup": "총 누적치",
|
"top_buildup": "총 누적치",
|
||||||
"top_damage": "최고 대미지",
|
"top_damage": "최고 대미지",
|
||||||
"top_dps": "최고 DPS",
|
"top_dps": "최고 DPS",
|
||||||
"top_left": "좌상단",
|
"top_left": "왼쪽 위",
|
||||||
"top_right": "우상단",
|
"top_right": "오른쪽 위",
|
||||||
|
"top_to_bottom": "위에서 아래",
|
||||||
"total": "전체",
|
"total": "전체",
|
||||||
"total_buildup": "총 누적치",
|
"total_buildup": "총 누적치",
|
||||||
"total_buildup_label": "총 누적치 정보",
|
"total_buildup_label": "총 누적치 정보",
|
||||||
@@ -298,12 +335,42 @@
|
|||||||
"visible": "표시함",
|
"visible": "표시함",
|
||||||
"width": "너비",
|
"width": "너비",
|
||||||
"world_offset": "전역 오프셋",
|
"world_offset": "전역 오프셋",
|
||||||
"wyvern_riding_damage": "용조종 대미지",
|
"wyvern_riding": "용조종",
|
||||||
"x": "X",
|
"x": "X",
|
||||||
"y": "Y",
|
"y": "Y",
|
||||||
"z": "Z"
|
"z": "Z"
|
||||||
},
|
},
|
||||||
"font_name": "NotoSansKR-Bold.otf",
|
"font_name": "NotoSansKR-Bold.otf",
|
||||||
|
"melody_effects": {
|
||||||
|
"affinity_up": "Affinity Up",
|
||||||
|
"attack_and_affinity_up": "Attack and Affinity Up",
|
||||||
|
"attack_and_defense_up": "Attack and Defense Up",
|
||||||
|
"attack_up": "Attack Up",
|
||||||
|
"blight_negated": "Blight Negated",
|
||||||
|
"defense_up": "Defense Up",
|
||||||
|
"divine_protection": "Divine Protection",
|
||||||
|
"earplugs_l": "Earplugs (L)",
|
||||||
|
"earplugs_s": "Earplugs (S)",
|
||||||
|
"elemental_attack_boost": "Elemental Attack Boost",
|
||||||
|
"environment_damage_negated": "Environment Damage Negated",
|
||||||
|
"health_recovery_l": "Health Recovery (L)",
|
||||||
|
"health_recovery_s": "Health Recovery (S)",
|
||||||
|
"health_recovery_s_antidote": "Health Recovery (S) + Antidote",
|
||||||
|
"health_regeneration": "Health Regeneration",
|
||||||
|
"infernal_melody": "Infernal Melody",
|
||||||
|
"knockbacks_negated": "Knockbacks Negated",
|
||||||
|
"self_improvement": "Self-Improvement",
|
||||||
|
"sharpness_extension": "Sharpness Extension",
|
||||||
|
"sharpness_loss_reduced": "Sharpness Loss Reduced",
|
||||||
|
"sharpness_regeneration": "Sharpness Regeneration",
|
||||||
|
"sonic_barrier": "Sonic Barrier",
|
||||||
|
"sonic_wave": "Sonic Wave",
|
||||||
|
"stamina_recovery_up": "Stamina Recovery Up",
|
||||||
|
"stamina_use_reduced": "Stamina Use Reduced",
|
||||||
|
"stun_negated": "Stun Negated",
|
||||||
|
"tremors_negated": "Tremors Negated",
|
||||||
|
"wind_pressure_negated": "Wind Pressure Negated"
|
||||||
|
},
|
||||||
"parts": {
|
"parts": {
|
||||||
"abdomen": "배",
|
"abdomen": "배",
|
||||||
"amatsu_unknown": "?",
|
"amatsu_unknown": "?",
|
||||||
@@ -372,5 +439,20 @@
|
|||||||
"wingclaw": "날개발톱",
|
"wingclaw": "날개발톱",
|
||||||
"wingclaws": "날개발톱",
|
"wingclaws": "날개발톱",
|
||||||
"wings": "날개"
|
"wings": "날개"
|
||||||
}
|
},
|
||||||
|
"unicode_glyph_ranges": [
|
||||||
|
32,
|
||||||
|
255,
|
||||||
|
4352,
|
||||||
|
4607,
|
||||||
|
8192,
|
||||||
|
8303,
|
||||||
|
12592,
|
||||||
|
12687,
|
||||||
|
44032,
|
||||||
|
55215,
|
||||||
|
65280,
|
||||||
|
65519,
|
||||||
|
0
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
"gold": "Золото",
|
"gold": "Золото",
|
||||||
"mini": "Мини",
|
"mini": "Мини",
|
||||||
"otomo": "Cпутник",
|
"otomo": "Cпутник",
|
||||||
|
"part_anomaly_core": "Ядро аномалии",
|
||||||
"part_break": "Повреждение",
|
"part_break": "Повреждение",
|
||||||
"part_sever": "Отсечение",
|
"part_sever": "Отсечение",
|
||||||
"player": "Игрок",
|
"player": "Игрок",
|
||||||
@@ -37,6 +38,18 @@
|
|||||||
"tranq_bomb": "Снотворная порча",
|
"tranq_bomb": "Снотворная порча",
|
||||||
"waterblight": "Водяная порча"
|
"waterblight": "Водяная порча"
|
||||||
},
|
},
|
||||||
|
"consumables": {
|
||||||
|
"adamant_seed": "Adamant Seed",
|
||||||
|
"armorskin": "Armorskin",
|
||||||
|
"dash_juice": "Dash Juice",
|
||||||
|
"demon_powder": "Demon Powder",
|
||||||
|
"demondrug": "Demondrug",
|
||||||
|
"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": "Любые изменения шрифта требуют перезагрузку скрипта!",
|
||||||
@@ -48,23 +61,30 @@
|
|||||||
"ailments": "Аномальные статусы",
|
"ailments": "Аномальные статусы",
|
||||||
"all_UI": "Весь интерфейс",
|
"all_UI": "Весь интерфейс",
|
||||||
"anchor": "Привязка",
|
"anchor": "Привязка",
|
||||||
|
"anomaly_cores": "Ядра аномалии",
|
||||||
|
"anomaly_filter": "Ядро аномалии",
|
||||||
|
"anomaly_health": "Здоровье ядра аномалии",
|
||||||
|
"anomaly_health_percentage": "Здоровье ядра аномалии в процентах",
|
||||||
"apply": "Применить",
|
"apply": "Применить",
|
||||||
"assign_new_key": "Привязать клавишу",
|
"assign_new_key": "Привязать клавишу",
|
||||||
"auto_highlight": "Автофокус",
|
"auto_highlight": "Автофокус",
|
||||||
"background": "Фон",
|
"background": "Фон",
|
||||||
"bar": "Шкала",
|
"bar": "Шкала",
|
||||||
"blast_damage": "Урон от взрыва",
|
"blast": "Взрыв",
|
||||||
"body_parts": "Части тела",
|
"body_parts": "Части тела",
|
||||||
"bold": "Жирный",
|
"bold": "Жирный",
|
||||||
"bomb_damage": "Урон от бомб",
|
"bombs": "Бомбы",
|
||||||
"bottom_left": "Левый нижний угол",
|
"bottom_left": "Левый нижний угол",
|
||||||
"bottom_right": "Правй нижний угол",
|
"bottom_right": "Правй нижний угол",
|
||||||
|
"bottom_to_top": "Снизу вверх",
|
||||||
|
"break_anomaly_filter": "Повреждение + Ядро аномалии",
|
||||||
"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_severe_filter": "Повреждение + Отсечение",
|
"break_sever_anomaly_filter": "Повреждение + Отсечение + Ядро аномалии",
|
||||||
|
"break_sever_filter": "Повреждение + Отсечение",
|
||||||
"buff_UI": "Интерфейс баффов",
|
"buff_UI": "Интерфейс баффов",
|
||||||
"buildup": "Накопление",
|
"buildup": "Накопление",
|
||||||
"buildup_bar": "Шкала накопления",
|
"buildup_bar": "Шкала накопления",
|
||||||
@@ -84,6 +104,7 @@
|
|||||||
"crown": "Корона",
|
"crown": "Корона",
|
||||||
"crown_thresholds": "Лимиты корон",
|
"crown_thresholds": "Лимиты корон",
|
||||||
"current_state": "Текущее состояние",
|
"current_state": "Текущее состояние",
|
||||||
|
"current_time": "Current Time",
|
||||||
"current_value": "Текущее значение",
|
"current_value": "Текущее значение",
|
||||||
"cutscene": "Катсцена",
|
"cutscene": "Катсцена",
|
||||||
"damage": "Урон",
|
"damage": "Урон",
|
||||||
@@ -92,6 +113,8 @@
|
|||||||
"damage_meter_UI": "Интерфейс модуля урона",
|
"damage_meter_UI": "Интерфейс модуля урона",
|
||||||
"damage_percentage_label": "Метка урона в процентах",
|
"damage_percentage_label": "Метка урона в процентах",
|
||||||
"damage_value_label": "Метка значений урона",
|
"damage_value_label": "Метка значений урона",
|
||||||
|
"debug": "Debug",
|
||||||
|
"debug_errors": "Debug Errors",
|
||||||
"default_state": "Состояние по умолчанию",
|
"default_state": "Состояние по умолчанию",
|
||||||
"delete": "Удалить",
|
"delete": "Удалить",
|
||||||
"distance": "Расстояние",
|
"distance": "Расстояние",
|
||||||
@@ -104,11 +127,13 @@
|
|||||||
"dynamically_positioned": "Рассположенный динамично",
|
"dynamically_positioned": "Рассположенный динамично",
|
||||||
"enable_for": "Показывать для",
|
"enable_for": "Показывать для",
|
||||||
"enabled": "Включить",
|
"enabled": "Включить",
|
||||||
|
"endemic_life": "Местная живность",
|
||||||
"endemic_life_UI": "Интерфейс местной живности",
|
"endemic_life_UI": "Интерфейс местной живности",
|
||||||
"endemic_life_damage": "Урон от окружения",
|
"everything_seems_to_be_ok": "Everything seems to be OK!",
|
||||||
"family": "Семейство",
|
"family": "Семейство",
|
||||||
"farthest": "Самый дальний",
|
"farthest": "Самый дальний",
|
||||||
"fight_time": "Время в бою",
|
"fight_time": "Время в бою",
|
||||||
|
"fill_direction": "Направление заполнения",
|
||||||
"filter": "Фильтр",
|
"filter": "Фильтр",
|
||||||
"filter_mode": "Режим Фильтра",
|
"filter_mode": "Режим Фильтра",
|
||||||
"first": "Первый",
|
"first": "Первый",
|
||||||
@@ -120,11 +145,15 @@
|
|||||||
"global_scale_modifier": "Глобальный модификатор размера",
|
"global_scale_modifier": "Глобальный модификатор размера",
|
||||||
"global_settings": "Общие настройки",
|
"global_settings": "Общие настройки",
|
||||||
"health": "Здоровье",
|
"health": "Здоровье",
|
||||||
|
"health_anomaly_filter": "Здоровье + Ядро аномалии",
|
||||||
|
"health_break_anomaly_filter": "Здоровье + Повреждение + Ядро аномалии",
|
||||||
"health_break_filter": "Здоровье + Повреждение",
|
"health_break_filter": "Здоровье + Повреждение",
|
||||||
"health_break_severe_filter": "Здоровье + Повреждение + Отсечение",
|
"health_break_sever_anomaly_filter": "Здоровье + Повреждение + Отсечение + Ядро аномалии",
|
||||||
|
"health_break_sever_filter": "Здоровье + Повреждение + Отсечение",
|
||||||
"health_filter": "Здоровье",
|
"health_filter": "Здоровье",
|
||||||
"health_percentage": "Здоровье в процентах",
|
"health_percentage": "Здоровье в процентах",
|
||||||
"health_severe_filter": "Здоровье + Отсечение",
|
"health_sever_anomaly_filter": "Здоровье + Отсечение + Ядро аномалии",
|
||||||
|
"health_sever_filter": "Здоровье + Отсечение",
|
||||||
"height": "Высота",
|
"height": "Высота",
|
||||||
"hide_ailments_with_zero_buildup": "Скрыть аномальный статус, если накопление равно 0",
|
"hide_ailments_with_zero_buildup": "Скрыть аномальный статус, если накопление равно 0",
|
||||||
"hide_all_active_ailments": "Скрыть все активные аномальные статусы",
|
"hide_all_active_ailments": "Скрыть все активные аномальные статусы",
|
||||||
@@ -150,6 +179,8 @@
|
|||||||
"highlighted_buildup_bar": "Помеченная шкала накопления",
|
"highlighted_buildup_bar": "Помеченная шкала накопления",
|
||||||
"highlighted_damage_bar": "Помеченная шкала урона",
|
"highlighted_damage_bar": "Помеченная шкала урона",
|
||||||
"highlighted_targeted": "Помеченный",
|
"highlighted_targeted": "Помеченный",
|
||||||
|
"history": "History",
|
||||||
|
"history_size": "History Size",
|
||||||
"horizontal": "Горизонтально",
|
"horizontal": "Горизонтально",
|
||||||
"hotkeys": "Горячие клавиши",
|
"hotkeys": "Горячие клавиши",
|
||||||
"hunter_rank": "Ранг охотника",
|
"hunter_rank": "Ранг охотника",
|
||||||
@@ -159,11 +190,11 @@
|
|||||||
"in_training_area": "В тренировочной зоне",
|
"in_training_area": "В тренировочной зоне",
|
||||||
"include": "Элементы",
|
"include": "Элементы",
|
||||||
"inside": "Внутри",
|
"inside": "Внутри",
|
||||||
"installation_damage": "Урон от установок",
|
"installations": "Установки",
|
||||||
"italic": "Курсив",
|
"italic": "Курсив",
|
||||||
"join_time": "Время присоединения",
|
"join_time": "Время присоединения",
|
||||||
"killcam": "Камера смерти",
|
"killcam": "Камера смерти",
|
||||||
"kunai_damage": "Урон от кунаев",
|
"kunai": "Кунаи",
|
||||||
"language": "Язык",
|
"language": "Язык",
|
||||||
"large_monster_UI": "Интерфейс больший монстров",
|
"large_monster_UI": "Интерфейс больший монстров",
|
||||||
"large_monster_dynamic_UI": "Динамический интерфейс больших монстров",
|
"large_monster_dynamic_UI": "Динамический интерфейс больших монстров",
|
||||||
@@ -171,6 +202,7 @@
|
|||||||
"large_monster_static_UI": "Статический интерфейс больших монстров",
|
"large_monster_static_UI": "Статический интерфейс больших монстров",
|
||||||
"large_monsters": "Большие монстры",
|
"large_monsters": "Большие монстры",
|
||||||
"last": "Последний",
|
"last": "Последний",
|
||||||
|
"left_to_right": "Слева направо",
|
||||||
"level": "Уровень",
|
"level": "Уровень",
|
||||||
"level_label": "Метка уровня",
|
"level_label": "Метка уровня",
|
||||||
"loading_quest": "Загрузка квеста",
|
"loading_quest": "Загрузка квеста",
|
||||||
@@ -191,10 +223,10 @@
|
|||||||
"module_visibility_based_on_game_state": "Видимость модулей в зависимости от состояния игры",
|
"module_visibility_based_on_game_state": "Видимость модулей в зависимости от состояния игры",
|
||||||
"modules": "Модули",
|
"modules": "Модули",
|
||||||
"monster_can_be_captured": "Монстр может быть схвачен",
|
"monster_can_be_captured": "Монстр может быть схвачен",
|
||||||
"monster_damage": "Урон от монстров",
|
|
||||||
"monster_id": "ИД монстра",
|
"monster_id": "ИД монстра",
|
||||||
"monster_name": "Имя монстра",
|
"monster_name": "Имя монстра",
|
||||||
"monster_name_label": "Метка имени монстра",
|
"monster_name_label": "Метка имени монстра",
|
||||||
|
"monsters": "Монстры",
|
||||||
"my_damage_bar_location": "Позиция моей шкалы урона",
|
"my_damage_bar_location": "Позиция моей шкалы урона",
|
||||||
"my_otomos": "Мои спутники",
|
"my_otomos": "Мои спутники",
|
||||||
"myself": "Я",
|
"myself": "Я",
|
||||||
@@ -207,10 +239,10 @@
|
|||||||
"offset_is_relative_to_parts": "Сдвиг относителен к частям тела",
|
"offset_is_relative_to_parts": "Сдвиг относителен к частям тела",
|
||||||
"opacity_falloff": "Увеличение прозрачности от расстояния",
|
"opacity_falloff": "Увеличение прозрачности от расстояния",
|
||||||
"orientation": "Ориентация",
|
"orientation": "Ориентация",
|
||||||
"other_damage": "Другой урон",
|
"other": "Другое",
|
||||||
"other_player_otomos": "Спутники других игроков",
|
"other_player_otomos": "Спутники других игроков",
|
||||||
"other_players": "Другие игроки",
|
"other_players": "Другие игроки",
|
||||||
"otomo_damage": "Урон от спутников",
|
"otomos": "Спутники",
|
||||||
"outline": "Обводка",
|
"outline": "Обводка",
|
||||||
"outside": "Снаружи",
|
"outside": "Снаружи",
|
||||||
"part_health": "Здоровье части",
|
"part_health": "Здоровье части",
|
||||||
@@ -218,12 +250,12 @@
|
|||||||
"part_name_label": "Метка имени части тела",
|
"part_name_label": "Метка имени части тела",
|
||||||
"percentage_label": "Метка процентов",
|
"percentage_label": "Метка процентов",
|
||||||
"performance": "Производительность",
|
"performance": "Производительность",
|
||||||
"player_damage": "Урон игрока",
|
|
||||||
"player_name_label": "Метка имени игрока",
|
"player_name_label": "Метка имени игрока",
|
||||||
"player_name_size_limit": "Ограничить ширину имени игрока",
|
"player_name_size_limit": "Ограничить ширину имени игрока",
|
||||||
"player_spacing": "Расстояние между игроками",
|
"player_spacing": "Расстояние между игроками",
|
||||||
|
"players": "Игроки",
|
||||||
"playing_quest": "Во время квеста",
|
"playing_quest": "Во время квеста",
|
||||||
"poison_damage": "Урон от отравления",
|
"poison": "Отравление",
|
||||||
"position": "Расположение",
|
"position": "Расположение",
|
||||||
"press_any_key": "Нажмите любую клавишу...",
|
"press_any_key": "Нажмите любую клавишу...",
|
||||||
"prioritize_large_monsters": "Большие монстры в приоритете",
|
"prioritize_large_monsters": "Большие монстры в приоритете",
|
||||||
@@ -237,15 +269,19 @@
|
|||||||
"relative_offset": "Относительный сдвиг",
|
"relative_offset": "Относительный сдвиг",
|
||||||
"rename": "Переименовать",
|
"rename": "Переименовать",
|
||||||
"render_highlighted_monster": "Показывать помеченного монстра",
|
"render_highlighted_monster": "Показывать помеченного монстра",
|
||||||
|
"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_to_left": "Справа налево",
|
||||||
"servant_otomos": "Спутники последователей",
|
"servant_otomos": "Спутники последователей",
|
||||||
"servants": "Последователи",
|
"servants": "Последователи",
|
||||||
"settings": "Настройки",
|
"settings": "Настройки",
|
||||||
"severe_filter": "Отсечение",
|
"sever_anomaly_filter": "Отсечение + Ядро аномалии",
|
||||||
|
"sever_filter": "Отсечение",
|
||||||
"shadow": "Тень",
|
"shadow": "Тень",
|
||||||
"show_my_otomos_separately": "Показывать моих спутников отдельно",
|
"show_my_otomos_separately": "Показывать моих спутников отдельно",
|
||||||
"show_other_player_otomos_separately": "Показывать спутников других игроков отдельно",
|
"show_other_player_otomos_separately": "Показывать спутников других игроков отдельно",
|
||||||
@@ -276,6 +312,7 @@
|
|||||||
"top_dps": "Наибольший урон в секунду",
|
"top_dps": "Наибольший урон в секунду",
|
||||||
"top_left": "Левый верхний угол",
|
"top_left": "Левый верхний угол",
|
||||||
"top_right": "Правый верхний угол",
|
"top_right": "Правый верхний угол",
|
||||||
|
"top_to_bottom": "Сверху вниз",
|
||||||
"total": "Всего",
|
"total": "Всего",
|
||||||
"total_buildup": "Общее накопление",
|
"total_buildup": "Общее накопление",
|
||||||
"total_buildup_label": "Метка общего накопления",
|
"total_buildup_label": "Метка общего накопления",
|
||||||
@@ -298,12 +335,42 @@
|
|||||||
"visible": "Включить",
|
"visible": "Включить",
|
||||||
"width": "Ширина",
|
"width": "Ширина",
|
||||||
"world_offset": "Сдвиг в игровом пространстве",
|
"world_offset": "Сдвиг в игровом пространстве",
|
||||||
"wyvern_riding_damage": "Урон от езды на виверне",
|
"wyvern_riding": "Езда на виверне",
|
||||||
"x": "X",
|
"x": "X",
|
||||||
"y": "Y",
|
"y": "Y",
|
||||||
"z": "Z"
|
"z": "Z"
|
||||||
},
|
},
|
||||||
"font_name": "NotoSansKR-Bold.otf",
|
"font_name": "NotoSansKR-Bold.otf",
|
||||||
|
"melody_effects": {
|
||||||
|
"affinity_up": "Affinity Up",
|
||||||
|
"attack_and_affinity_up": "Attack and Affinity Up",
|
||||||
|
"attack_and_defense_up": "Attack and Defense Up",
|
||||||
|
"attack_up": "Attack Up",
|
||||||
|
"blight_negated": "Blight Negated",
|
||||||
|
"defense_up": "Defense Up",
|
||||||
|
"divine_protection": "Divine Protection",
|
||||||
|
"earplugs_l": "Earplugs (L)",
|
||||||
|
"earplugs_s": "Earplugs (S)",
|
||||||
|
"elemental_attack_boost": "Elemental Attack Boost",
|
||||||
|
"environment_damage_negated": "Environment Damage Negated",
|
||||||
|
"health_recovery_l": "Health Recovery (L)",
|
||||||
|
"health_recovery_s": "Health Recovery (S)",
|
||||||
|
"health_recovery_s_antidote": "Health Recovery (S) + Antidote",
|
||||||
|
"health_regeneration": "Health Regeneration",
|
||||||
|
"infernal_melody": "Infernal Melody",
|
||||||
|
"knockbacks_negated": "Knockbacks Negated",
|
||||||
|
"self_improvement": "Self-Improvement",
|
||||||
|
"sharpness_extension": "Sharpness Extension",
|
||||||
|
"sharpness_loss_reduced": "Sharpness Loss Reduced",
|
||||||
|
"sharpness_regeneration": "Sharpness Regeneration",
|
||||||
|
"sonic_barrier": "Sonic Barrier",
|
||||||
|
"sonic_wave": "Sonic Wave",
|
||||||
|
"stamina_recovery_up": "Stamina Recovery Up",
|
||||||
|
"stamina_use_reduced": "Stamina Use Reduced",
|
||||||
|
"stun_negated": "Stun Negated",
|
||||||
|
"tremors_negated": "Tremors Negated",
|
||||||
|
"wind_pressure_negated": "Wind Pressure Negated"
|
||||||
|
},
|
||||||
"parts": {
|
"parts": {
|
||||||
"abdomen": "Брюхо",
|
"abdomen": "Брюхо",
|
||||||
"amatsu_unknown": "?",
|
"amatsu_unknown": "?",
|
||||||
@@ -372,5 +439,16 @@
|
|||||||
"wingclaw": "Крыло-коготь",
|
"wingclaw": "Крыло-коготь",
|
||||||
"wingclaws": "Крыло-коготь",
|
"wingclaws": "Крыло-коготь",
|
||||||
"wings": "Крылья"
|
"wings": "Крылья"
|
||||||
}
|
},
|
||||||
|
"unicode_glyph_ranges": [
|
||||||
|
32,
|
||||||
|
255,
|
||||||
|
1024,
|
||||||
|
1241,
|
||||||
|
8192,
|
||||||
|
8303,
|
||||||
|
65280,
|
||||||
|
65519,
|
||||||
|
0
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
"gold": "金冠",
|
"gold": "金冠",
|
||||||
"mini": "小型",
|
"mini": "小型",
|
||||||
"otomo": "随从",
|
"otomo": "随从",
|
||||||
|
"part_anomaly_core": "怪异核",
|
||||||
"part_break": "部位破坏",
|
"part_break": "部位破坏",
|
||||||
"part_sever": "部位切断",
|
"part_sever": "部位切断",
|
||||||
"player": "玩家",
|
"player": "玩家",
|
||||||
@@ -37,6 +38,18 @@
|
|||||||
"tranq_bomb": "捕获用麻醉球",
|
"tranq_bomb": "捕获用麻醉球",
|
||||||
"waterblight": "水异常状态"
|
"waterblight": "水异常状态"
|
||||||
},
|
},
|
||||||
|
"consumables": {
|
||||||
|
"adamant_seed": "Adamant Seed",
|
||||||
|
"armorskin": "Armorskin",
|
||||||
|
"dash_juice": "Dash Juice",
|
||||||
|
"demon_powder": "Demon Powder",
|
||||||
|
"demondrug": "Demondrug",
|
||||||
|
"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": "当更改字体时,请重新加载脚本!",
|
||||||
@@ -48,23 +61,30 @@
|
|||||||
"ailments": "状态异常",
|
"ailments": "状态异常",
|
||||||
"all_UI": "所有UI",
|
"all_UI": "所有UI",
|
||||||
"anchor": "锚点",
|
"anchor": "锚点",
|
||||||
|
"anomaly_cores": "怪异核",
|
||||||
|
"anomaly_filter": "怪异核",
|
||||||
|
"anomaly_health": "怪异核破坏值",
|
||||||
|
"anomaly_health_percentage": "怪异核破坏百分比",
|
||||||
"apply": "应用",
|
"apply": "应用",
|
||||||
"assign_new_key": "指定新按键",
|
"assign_new_key": "指定新按键",
|
||||||
"auto_highlight": "自动高亮",
|
"auto_highlight": "自动高亮",
|
||||||
"background": "背景",
|
"background": "背景",
|
||||||
"bar": "状态条",
|
"bar": "状态条",
|
||||||
"blast_damage": "爆破伤害",
|
"blast": "爆破",
|
||||||
"body_parts": "身体部位",
|
"body_parts": "身体部位",
|
||||||
"bold": "粗体",
|
"bold": "粗体",
|
||||||
"bomb_damage": "爆弹桶伤害",
|
"bombs": "爆桶",
|
||||||
"bottom_left": "左下",
|
"bottom_left": "左下",
|
||||||
"bottom_right": "右下",
|
"bottom_right": "右下",
|
||||||
|
"bottom_to_top": "从下到上",
|
||||||
|
"break_anomaly_filter": "破坏+怪异核",
|
||||||
"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_severe_filter": "破坏+切断",
|
"break_sever_anomaly_filter": "破坏+切断+怪异核",
|
||||||
|
"break_sever_filter": "破坏+切断",
|
||||||
"buff_UI": "Buff UI",
|
"buff_UI": "Buff UI",
|
||||||
"buildup": "积累值",
|
"buildup": "积累值",
|
||||||
"buildup_bar": "积累值条",
|
"buildup_bar": "积累值条",
|
||||||
@@ -84,6 +104,7 @@
|
|||||||
"crown": "皇冠",
|
"crown": "皇冠",
|
||||||
"crown_thresholds": "皇冠阈值",
|
"crown_thresholds": "皇冠阈值",
|
||||||
"current_state": "当前阶段",
|
"current_state": "当前阶段",
|
||||||
|
"current_time": "Current Time",
|
||||||
"current_value": "当前值",
|
"current_value": "当前值",
|
||||||
"cutscene": "过场动画",
|
"cutscene": "过场动画",
|
||||||
"damage": "伤害",
|
"damage": "伤害",
|
||||||
@@ -92,6 +113,8 @@
|
|||||||
"damage_meter_UI": "伤害统计UI",
|
"damage_meter_UI": "伤害统计UI",
|
||||||
"damage_percentage_label": "伤害百分比标签",
|
"damage_percentage_label": "伤害百分比标签",
|
||||||
"damage_value_label": "伤害量标签",
|
"damage_value_label": "伤害量标签",
|
||||||
|
"debug": "Debug",
|
||||||
|
"debug_errors": "Debug Errors",
|
||||||
"default_state": "默认阶段",
|
"default_state": "默认阶段",
|
||||||
"delete": "删除",
|
"delete": "删除",
|
||||||
"distance": "距离",
|
"distance": "距离",
|
||||||
@@ -104,11 +127,13 @@
|
|||||||
"dynamically_positioned": "动态位置",
|
"dynamically_positioned": "动态位置",
|
||||||
"enable_for": "开启",
|
"enable_for": "开启",
|
||||||
"enabled": "开启",
|
"enabled": "开启",
|
||||||
|
"endemic_life": "环境生物",
|
||||||
"endemic_life_UI": "环境生物UI",
|
"endemic_life_UI": "环境生物UI",
|
||||||
"endemic_life_damage": "环境生物伤害",
|
"everything_seems_to_be_ok": "Everything seems to be OK!",
|
||||||
"family": "字体",
|
"family": "字体",
|
||||||
"farthest": "最远",
|
"farthest": "最远",
|
||||||
"fight_time": "战斗时间",
|
"fight_time": "战斗时间",
|
||||||
|
"fill_direction": "填充方向",
|
||||||
"filter": "筛选器",
|
"filter": "筛选器",
|
||||||
"filter_mode": "筛选方式",
|
"filter_mode": "筛选方式",
|
||||||
"first": "第一",
|
"first": "第一",
|
||||||
@@ -120,11 +145,15 @@
|
|||||||
"global_scale_modifier": "全局比例更改",
|
"global_scale_modifier": "全局比例更改",
|
||||||
"global_settings": "全局设定",
|
"global_settings": "全局设定",
|
||||||
"health": "生命",
|
"health": "生命",
|
||||||
|
"health_anomaly_filter": "生命+怪异核",
|
||||||
|
"health_break_anomaly_filter": "生命+破坏+怪异核",
|
||||||
"health_break_filter": "生命+破坏",
|
"health_break_filter": "生命+破坏",
|
||||||
"health_break_severe_filter": "生命+破坏+切断",
|
"health_break_sever_anomaly_filter": "生命+破坏+切断+怪异核",
|
||||||
|
"health_break_sever_filter": "生命+破坏+切断",
|
||||||
"health_filter": "生命",
|
"health_filter": "生命",
|
||||||
"health_percentage": "生命百分比",
|
"health_percentage": "生命百分比",
|
||||||
"health_severe_filter": "生命+切断",
|
"health_sever_anomaly_filter": "生命+切断+怪异核",
|
||||||
|
"health_sever_filter": "生命+切断",
|
||||||
"height": "高度",
|
"height": "高度",
|
||||||
"hide_ailments_with_zero_buildup": "当积累值为0时隐藏该状态异常",
|
"hide_ailments_with_zero_buildup": "当积累值为0时隐藏该状态异常",
|
||||||
"hide_all_active_ailments": "隐藏所有激活的状态异常",
|
"hide_all_active_ailments": "隐藏所有激活的状态异常",
|
||||||
@@ -150,6 +179,8 @@
|
|||||||
"highlighted_buildup_bar": "高亮积累值条",
|
"highlighted_buildup_bar": "高亮积累值条",
|
||||||
"highlighted_damage_bar": "高亮伤害条",
|
"highlighted_damage_bar": "高亮伤害条",
|
||||||
"highlighted_targeted": "高亮目标[锁定目标的UI]",
|
"highlighted_targeted": "高亮目标[锁定目标的UI]",
|
||||||
|
"history": "History",
|
||||||
|
"history_size": "History Size",
|
||||||
"horizontal": "水平",
|
"horizontal": "水平",
|
||||||
"hotkeys": "热键",
|
"hotkeys": "热键",
|
||||||
"hunter_rank": "猎人等级",
|
"hunter_rank": "猎人等级",
|
||||||
@@ -159,11 +190,11 @@
|
|||||||
"in_training_area": "在修炼场",
|
"in_training_area": "在修炼场",
|
||||||
"include": "包含",
|
"include": "包含",
|
||||||
"inside": "里面",
|
"inside": "里面",
|
||||||
"installation_damage": "设施伤害",
|
"installations": "狩猎设备",
|
||||||
"italic": "斜体",
|
"italic": "斜体",
|
||||||
"join_time": "加入时间",
|
"join_time": "加入时间",
|
||||||
"killcam": "击杀镜头",
|
"killcam": "击杀镜头",
|
||||||
"kunai_damage": "苦无伤害",
|
"kunai": "苦无",
|
||||||
"language": "语言",
|
"language": "语言",
|
||||||
"large_monster_UI": "大型怪物UI",
|
"large_monster_UI": "大型怪物UI",
|
||||||
"large_monster_dynamic_UI": "大型怪物浮动UI",
|
"large_monster_dynamic_UI": "大型怪物浮动UI",
|
||||||
@@ -171,6 +202,7 @@
|
|||||||
"large_monster_static_UI": "大型怪物固定UI",
|
"large_monster_static_UI": "大型怪物固定UI",
|
||||||
"large_monsters": "大型怪物群",
|
"large_monsters": "大型怪物群",
|
||||||
"last": "最后",
|
"last": "最后",
|
||||||
|
"left_to_right": "从左到右",
|
||||||
"level": "等级",
|
"level": "等级",
|
||||||
"level_label": "等级标签",
|
"level_label": "等级标签",
|
||||||
"loading_quest": "任务加载中",
|
"loading_quest": "任务加载中",
|
||||||
@@ -191,10 +223,10 @@
|
|||||||
"module_visibility_based_on_game_state": "基于游戏状态的模组可视化设置",
|
"module_visibility_based_on_game_state": "基于游戏状态的模组可视化设置",
|
||||||
"modules": "模块",
|
"modules": "模块",
|
||||||
"monster_can_be_captured": "可捕获的怪物",
|
"monster_can_be_captured": "可捕获的怪物",
|
||||||
"monster_damage": "怪物伤害",
|
|
||||||
"monster_id": "怪物ID",
|
"monster_id": "怪物ID",
|
||||||
"monster_name": "怪物名",
|
"monster_name": "怪物名",
|
||||||
"monster_name_label": "怪物名标签",
|
"monster_name_label": "怪物名标签",
|
||||||
|
"monsters": "怪物",
|
||||||
"my_damage_bar_location": "我的伤害条位置",
|
"my_damage_bar_location": "我的伤害条位置",
|
||||||
"my_otomos": "我的随从",
|
"my_otomos": "我的随从",
|
||||||
"myself": "我自己",
|
"myself": "我自己",
|
||||||
@@ -207,10 +239,10 @@
|
|||||||
"offset_is_relative_to_parts": "根据部位偏移",
|
"offset_is_relative_to_parts": "根据部位偏移",
|
||||||
"opacity_falloff": "透明度增加",
|
"opacity_falloff": "透明度增加",
|
||||||
"orientation": "方向",
|
"orientation": "方向",
|
||||||
"other_damage": "其他伤害",
|
"other": "其它",
|
||||||
"other_player_otomos": "其他玩家的随从",
|
"other_player_otomos": "其他玩家的随从",
|
||||||
"other_players": "其他玩家",
|
"other_players": "其他玩家",
|
||||||
"otomo_damage": "随从伤害",
|
"otomos": "随从",
|
||||||
"outline": "轮廓",
|
"outline": "轮廓",
|
||||||
"outside": "外面",
|
"outside": "外面",
|
||||||
"part_health": "部位生命值",
|
"part_health": "部位生命值",
|
||||||
@@ -218,12 +250,12 @@
|
|||||||
"part_name_label": "部位名标签",
|
"part_name_label": "部位名标签",
|
||||||
"percentage_label": "百分比标签",
|
"percentage_label": "百分比标签",
|
||||||
"performance": "性能",
|
"performance": "性能",
|
||||||
"player_damage": "玩家伤害",
|
|
||||||
"player_name_label": "玩家名标签",
|
"player_name_label": "玩家名标签",
|
||||||
"player_name_size_limit": "玩家名长度限制",
|
"player_name_size_limit": "玩家名长度限制",
|
||||||
"player_spacing": "玩家间距",
|
"player_spacing": "玩家间距",
|
||||||
|
"players": "玩家",
|
||||||
"playing_quest": "操作界面/正常游玩时",
|
"playing_quest": "操作界面/正常游玩时",
|
||||||
"poison_damage": "中毒伤害",
|
"poison": "中毒",
|
||||||
"position": "位置",
|
"position": "位置",
|
||||||
"press_any_key": "按任意键...",
|
"press_any_key": "按任意键...",
|
||||||
"prioritize_large_monsters": "大型怪物优先",
|
"prioritize_large_monsters": "大型怪物优先",
|
||||||
@@ -237,15 +269,19 @@
|
|||||||
"relative_offset": "相对偏移",
|
"relative_offset": "相对偏移",
|
||||||
"rename": "重命名",
|
"rename": "重命名",
|
||||||
"render_highlighted_monster": "渲染高亮怪物",
|
"render_highlighted_monster": "渲染高亮怪物",
|
||||||
|
"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_to_left": "从右到左",
|
||||||
"servant_otomos": "盟友随从",
|
"servant_otomos": "盟友随从",
|
||||||
"servants": "盟友",
|
"servants": "盟友",
|
||||||
"settings": "设定",
|
"settings": "设定",
|
||||||
"severe_filter": "切断",
|
"sever_anomaly_filter": "切断+怪异核",
|
||||||
|
"sever_filter": "切断",
|
||||||
"shadow": "阴影",
|
"shadow": "阴影",
|
||||||
"show_my_otomos_separately": "分开显示我的随从",
|
"show_my_otomos_separately": "分开显示我的随从",
|
||||||
"show_other_player_otomos_separately": "分开显示其他玩家的随从",
|
"show_other_player_otomos_separately": "分开显示其他玩家的随从",
|
||||||
@@ -276,6 +312,7 @@
|
|||||||
"top_dps": "最高DPS",
|
"top_dps": "最高DPS",
|
||||||
"top_left": "左上",
|
"top_left": "左上",
|
||||||
"top_right": "右上",
|
"top_right": "右上",
|
||||||
|
"top_to_bottom": "从上到下",
|
||||||
"total": "总计",
|
"total": "总计",
|
||||||
"total_buildup": "总积累值",
|
"total_buildup": "总积累值",
|
||||||
"total_buildup_label": "总积累值标签",
|
"total_buildup_label": "总积累值标签",
|
||||||
@@ -298,12 +335,42 @@
|
|||||||
"visible": "可见",
|
"visible": "可见",
|
||||||
"width": "宽度",
|
"width": "宽度",
|
||||||
"world_offset": "整体偏移",
|
"world_offset": "整体偏移",
|
||||||
"wyvern_riding_damage": "御龙伤害",
|
"wyvern_riding": "御龙",
|
||||||
"x": "X轴",
|
"x": "X轴",
|
||||||
"y": "Y轴",
|
"y": "Y轴",
|
||||||
"z": "Z轴"
|
"z": "Z轴"
|
||||||
},
|
},
|
||||||
"font_name": "NotoSansSC-Bold.otf",
|
"font_name": "NotoSansSC-Bold.otf",
|
||||||
|
"melody_effects": {
|
||||||
|
"affinity_up": "Affinity Up",
|
||||||
|
"attack_and_affinity_up": "Attack and Affinity Up",
|
||||||
|
"attack_and_defense_up": "Attack and Defense Up",
|
||||||
|
"attack_up": "Attack Up",
|
||||||
|
"blight_negated": "Blight Negated",
|
||||||
|
"defense_up": "Defense Up",
|
||||||
|
"divine_protection": "Divine Protection",
|
||||||
|
"earplugs_l": "Earplugs (L)",
|
||||||
|
"earplugs_s": "Earplugs (S)",
|
||||||
|
"elemental_attack_boost": "Elemental Attack Boost",
|
||||||
|
"environment_damage_negated": "Environment Damage Negated",
|
||||||
|
"health_recovery_l": "Health Recovery (L)",
|
||||||
|
"health_recovery_s": "Health Recovery (S)",
|
||||||
|
"health_recovery_s_antidote": "Health Recovery (S) + Antidote",
|
||||||
|
"health_regeneration": "Health Regeneration",
|
||||||
|
"infernal_melody": "Infernal Melody",
|
||||||
|
"knockbacks_negated": "Knockbacks Negated",
|
||||||
|
"self_improvement": "Self-Improvement",
|
||||||
|
"sharpness_extension": "Sharpness Extension",
|
||||||
|
"sharpness_loss_reduced": "Sharpness Loss Reduced",
|
||||||
|
"sharpness_regeneration": "Sharpness Regeneration",
|
||||||
|
"sonic_barrier": "Sonic Barrier",
|
||||||
|
"sonic_wave": "Sonic Wave",
|
||||||
|
"stamina_recovery_up": "Stamina Recovery Up",
|
||||||
|
"stamina_use_reduced": "Stamina Use Reduced",
|
||||||
|
"stun_negated": "Stun Negated",
|
||||||
|
"tremors_negated": "Tremors Negated",
|
||||||
|
"wind_pressure_negated": "Wind Pressure Negated"
|
||||||
|
},
|
||||||
"parts": {
|
"parts": {
|
||||||
"abdomen": "腹部",
|
"abdomen": "腹部",
|
||||||
"amatsu_unknown": "?",
|
"amatsu_unknown": "?",
|
||||||
@@ -372,5 +439,20 @@
|
|||||||
"wingclaw": "翼爪",
|
"wingclaw": "翼爪",
|
||||||
"wingclaws": "翼爪",
|
"wingclaws": "翼爪",
|
||||||
"wings": "翼"
|
"wings": "翼"
|
||||||
}
|
},
|
||||||
|
"unicode_glyph_ranges": [
|
||||||
|
32,
|
||||||
|
255,
|
||||||
|
8192,
|
||||||
|
8303,
|
||||||
|
12288,
|
||||||
|
12543,
|
||||||
|
12784,
|
||||||
|
12799,
|
||||||
|
19968,
|
||||||
|
40879,
|
||||||
|
65280,
|
||||||
|
65519,
|
||||||
|
0
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
"gold": "金冠",
|
"gold": "金冠",
|
||||||
"mini": "小型",
|
"mini": "小型",
|
||||||
"otomo": "Buddy",
|
"otomo": "Buddy",
|
||||||
|
"part_anomaly_core": "Anomaly Core",
|
||||||
"part_break": "Break",
|
"part_break": "Break",
|
||||||
"part_sever": "Sever",
|
"part_sever": "Sever",
|
||||||
"player": "玩家",
|
"player": "玩家",
|
||||||
@@ -37,6 +38,18 @@
|
|||||||
"tranq_bomb": "麻醉",
|
"tranq_bomb": "麻醉",
|
||||||
"waterblight": "水屬性異常"
|
"waterblight": "水屬性異常"
|
||||||
},
|
},
|
||||||
|
"consumables": {
|
||||||
|
"adamant_seed": "Adamant Seed",
|
||||||
|
"armorskin": "Armorskin",
|
||||||
|
"dash_juice": "Dash Juice",
|
||||||
|
"demon_powder": "Demon Powder",
|
||||||
|
"demondrug": "Demondrug",
|
||||||
|
"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": "當更改文字時,請重新載入",
|
||||||
@@ -48,23 +61,30 @@
|
|||||||
"ailments": "異常狀態",
|
"ailments": "異常狀態",
|
||||||
"all_UI": "全部UI",
|
"all_UI": "全部UI",
|
||||||
"anchor": "錨點",
|
"anchor": "錨點",
|
||||||
|
"anomaly_cores": "Anomaly Cores",
|
||||||
|
"anomaly_filter": "Anomaly Core",
|
||||||
|
"anomaly_health": "Anomaly Core Health",
|
||||||
|
"anomaly_health_percentage": "Anomaly Core Health Percentage",
|
||||||
"apply": "套用",
|
"apply": "套用",
|
||||||
"assign_new_key": "指定新按鍵",
|
"assign_new_key": "指定新按鍵",
|
||||||
"auto_highlight": "自動高亮",
|
"auto_highlight": "自動高亮",
|
||||||
"background": "圖形化顯示條的背景底色",
|
"background": "圖形化顯示條的背景底色",
|
||||||
"bar": "圖形化顯示條",
|
"bar": "圖形化顯示條",
|
||||||
"blast_damage": "爆破傷害",
|
"blast": "爆破",
|
||||||
"body_parts": "身體部位",
|
"body_parts": "身體部位",
|
||||||
"bold": "粗體",
|
"bold": "粗體",
|
||||||
"bomb_damage": "爆炸傷害",
|
"bombs": "Bombs",
|
||||||
"bottom_left": "左下",
|
"bottom_left": "左下",
|
||||||
"bottom_right": "右下",
|
"bottom_right": "右下",
|
||||||
|
"bottom_to_top": "Bottom to Top",
|
||||||
|
"break_anomaly_filter": "Break + Anomaly Core",
|
||||||
"break_count": "破壞次數",
|
"break_count": "破壞次數",
|
||||||
"break_filter": "Break",
|
"break_filter": "Break",
|
||||||
"break_health": "Break Health",
|
"break_health": "Break Health",
|
||||||
"break_health_percentage": "Break Health Percentage",
|
"break_health_percentage": "Break Health Percentage",
|
||||||
"break_max_count": "Break Max Count",
|
"break_max_count": "Break Max Count",
|
||||||
"break_severe_filter": "Break + Severe",
|
"break_sever_anomaly_filter": "Break + Sever + Anomaly Core",
|
||||||
|
"break_sever_filter": "Break + Sever",
|
||||||
"buff_UI": "Buff UI",
|
"buff_UI": "Buff UI",
|
||||||
"buildup": "累積值",
|
"buildup": "累積值",
|
||||||
"buildup_bar": "累積值條",
|
"buildup_bar": "累積值條",
|
||||||
@@ -84,6 +104,7 @@
|
|||||||
"crown": "皇冠",
|
"crown": "皇冠",
|
||||||
"crown_thresholds": "皇冠的大小判定範圍",
|
"crown_thresholds": "皇冠的大小判定範圍",
|
||||||
"current_state": "Current State",
|
"current_state": "Current State",
|
||||||
|
"current_time": "Current Time",
|
||||||
"current_value": "Current Value",
|
"current_value": "Current Value",
|
||||||
"cutscene": "Cutscene",
|
"cutscene": "Cutscene",
|
||||||
"damage": "傷害",
|
"damage": "傷害",
|
||||||
@@ -92,6 +113,8 @@
|
|||||||
"damage_meter_UI": "傷害量計算 UI",
|
"damage_meter_UI": "傷害量計算 UI",
|
||||||
"damage_percentage_label": "傷害量百分比",
|
"damage_percentage_label": "傷害量百分比",
|
||||||
"damage_value_label": "傷害量",
|
"damage_value_label": "傷害量",
|
||||||
|
"debug": "Debug",
|
||||||
|
"debug_errors": "Debug Errors",
|
||||||
"default_state": "Default State",
|
"default_state": "Default State",
|
||||||
"delete": "Delete",
|
"delete": "Delete",
|
||||||
"distance": "距離",
|
"distance": "距離",
|
||||||
@@ -104,11 +127,13 @@
|
|||||||
"dynamically_positioned": "浮動的魔物資訊",
|
"dynamically_positioned": "浮動的魔物資訊",
|
||||||
"enable_for": "啟用對象",
|
"enable_for": "啟用對象",
|
||||||
"enabled": "啟用",
|
"enabled": "啟用",
|
||||||
|
"endemic_life": "Endemic Life",
|
||||||
"endemic_life_UI": "環境生物 UI",
|
"endemic_life_UI": "環境生物 UI",
|
||||||
"endemic_life_damage": "環境生物傷害",
|
"everything_seems_to_be_ok": "Everything seems to be OK!",
|
||||||
"family": "字體",
|
"family": "字體",
|
||||||
"farthest": "最遠的",
|
"farthest": "最遠的",
|
||||||
"fight_time": "戰鬥時間",
|
"fight_time": "戰鬥時間",
|
||||||
|
"fill_direction": "Fill Direction",
|
||||||
"filter": "篩選器",
|
"filter": "篩選器",
|
||||||
"filter_mode": "Filter Mode",
|
"filter_mode": "Filter Mode",
|
||||||
"first": "第一",
|
"first": "第一",
|
||||||
@@ -120,11 +145,15 @@
|
|||||||
"global_scale_modifier": "全域比例更改",
|
"global_scale_modifier": "全域比例更改",
|
||||||
"global_settings": "全域設定",
|
"global_settings": "全域設定",
|
||||||
"health": "血量",
|
"health": "血量",
|
||||||
|
"health_anomaly_filter": "Health + Anomaly Core",
|
||||||
|
"health_break_anomaly_filter": "Health + Break + Anomaly Core",
|
||||||
"health_break_filter": "Health + Break",
|
"health_break_filter": "Health + Break",
|
||||||
"health_break_severe_filter": "Health + Break + Severe",
|
"health_break_sever_anomaly_filter": "Health + Break + Sever + Anomaly Core",
|
||||||
|
"health_break_sever_filter": "Health + Break + Sever",
|
||||||
"health_filter": "Health",
|
"health_filter": "Health",
|
||||||
"health_percentage": "血量百分比",
|
"health_percentage": "血量百分比",
|
||||||
"health_severe_filter": "Health + Severe",
|
"health_sever_anomaly_filter": "Health + Sever + Anomaly Core",
|
||||||
|
"health_sever_filter": "Health + Sever",
|
||||||
"height": "高度",
|
"height": "高度",
|
||||||
"hide_ailments_with_zero_buildup": "當累積值為0時,隱藏該異常狀態",
|
"hide_ailments_with_zero_buildup": "當累積值為0時,隱藏該異常狀態",
|
||||||
"hide_all_active_ailments": "隱藏觸發中的異常狀態",
|
"hide_all_active_ailments": "隱藏觸發中的異常狀態",
|
||||||
@@ -150,6 +179,8 @@
|
|||||||
"highlighted_buildup_bar": "重點累積條",
|
"highlighted_buildup_bar": "重點累積條",
|
||||||
"highlighted_damage_bar": "重點傷害條",
|
"highlighted_damage_bar": "重點傷害條",
|
||||||
"highlighted_targeted": "鎖定的魔物資訊(目標)",
|
"highlighted_targeted": "鎖定的魔物資訊(目標)",
|
||||||
|
"history": "History",
|
||||||
|
"history_size": "History Size",
|
||||||
"horizontal": "水平",
|
"horizontal": "水平",
|
||||||
"hotkeys": "快捷鍵",
|
"hotkeys": "快捷鍵",
|
||||||
"hunter_rank": "獵人等級",
|
"hunter_rank": "獵人等級",
|
||||||
@@ -159,11 +190,11 @@
|
|||||||
"in_training_area": "In Training Area",
|
"in_training_area": "In Training Area",
|
||||||
"include": "細部資訊調整",
|
"include": "細部資訊調整",
|
||||||
"inside": "內部",
|
"inside": "內部",
|
||||||
"installation_damage": "設備傷害",
|
"installations": "Installations",
|
||||||
"italic": "斜體",
|
"italic": "斜體",
|
||||||
"join_time": "加入時間",
|
"join_time": "加入時間",
|
||||||
"killcam": "Killcam",
|
"killcam": "Killcam",
|
||||||
"kunai_damage": "苦無傷害",
|
"kunai": "Kunai",
|
||||||
"language": "語言",
|
"language": "語言",
|
||||||
"large_monster_UI": "大型魔物 UI",
|
"large_monster_UI": "大型魔物 UI",
|
||||||
"large_monster_dynamic_UI": "大型魔物浮動 UI",
|
"large_monster_dynamic_UI": "大型魔物浮動 UI",
|
||||||
@@ -171,6 +202,7 @@
|
|||||||
"large_monster_static_UI": "大型魔物固定 UI",
|
"large_monster_static_UI": "大型魔物固定 UI",
|
||||||
"large_monsters": "大型魔物群",
|
"large_monsters": "大型魔物群",
|
||||||
"last": "最後",
|
"last": "最後",
|
||||||
|
"left_to_right": "Left to Right",
|
||||||
"level": "Level",
|
"level": "Level",
|
||||||
"level_label": "Level Label",
|
"level_label": "Level Label",
|
||||||
"loading_quest": "Loading Quest",
|
"loading_quest": "Loading Quest",
|
||||||
@@ -191,10 +223,10 @@
|
|||||||
"module_visibility_based_on_game_state": "Module Visibility based on Game State",
|
"module_visibility_based_on_game_state": "Module Visibility based on Game State",
|
||||||
"modules": "模組",
|
"modules": "模組",
|
||||||
"monster_can_be_captured": "可捕獲的魔物",
|
"monster_can_be_captured": "可捕獲的魔物",
|
||||||
"monster_damage": "魔物傷害",
|
|
||||||
"monster_id": "Monster ID",
|
"monster_id": "Monster ID",
|
||||||
"monster_name": "魔物名稱",
|
"monster_name": "魔物名稱",
|
||||||
"monster_name_label": "魔物名稱",
|
"monster_name_label": "魔物名稱",
|
||||||
|
"monsters": "Monsters",
|
||||||
"my_damage_bar_location": "我的傷害條",
|
"my_damage_bar_location": "我的傷害條",
|
||||||
"my_otomos": "My Buddies",
|
"my_otomos": "My Buddies",
|
||||||
"myself": "Myself",
|
"myself": "Myself",
|
||||||
@@ -207,10 +239,10 @@
|
|||||||
"offset_is_relative_to_parts": "與部位顯示相對偏移",
|
"offset_is_relative_to_parts": "與部位顯示相對偏移",
|
||||||
"opacity_falloff": "透明度提高",
|
"opacity_falloff": "透明度提高",
|
||||||
"orientation": "對齊方式",
|
"orientation": "對齊方式",
|
||||||
"other_damage": "其他傷害",
|
"other": "Other",
|
||||||
"other_player_otomos": "Other Player Buddies",
|
"other_player_otomos": "Other Player Buddies",
|
||||||
"other_players": "其他玩家",
|
"other_players": "其他玩家",
|
||||||
"otomo_damage": "隨從傷害",
|
"otomos": "Buddies",
|
||||||
"outline": "描邊",
|
"outline": "描邊",
|
||||||
"outside": "外部",
|
"outside": "外部",
|
||||||
"part_health": "部位血量",
|
"part_health": "部位血量",
|
||||||
@@ -218,12 +250,12 @@
|
|||||||
"part_name_label": "部位名稱",
|
"part_name_label": "部位名稱",
|
||||||
"percentage_label": "百分比",
|
"percentage_label": "百分比",
|
||||||
"performance": "效能",
|
"performance": "效能",
|
||||||
"player_damage": "玩家傷害量",
|
|
||||||
"player_name_label": "玩家名稱",
|
"player_name_label": "玩家名稱",
|
||||||
"player_name_size_limit": "玩家名稱大小限制",
|
"player_name_size_limit": "玩家名稱大小限制",
|
||||||
"player_spacing": "玩家間格",
|
"player_spacing": "玩家間格",
|
||||||
|
"players": "Players",
|
||||||
"playing_quest": "Playing Quest",
|
"playing_quest": "Playing Quest",
|
||||||
"poison_damage": "毒傷害",
|
"poison": "毒",
|
||||||
"position": "位置",
|
"position": "位置",
|
||||||
"press_any_key": "輸入任意鍵...",
|
"press_any_key": "輸入任意鍵...",
|
||||||
"prioritize_large_monsters": "大型魔物優先",
|
"prioritize_large_monsters": "大型魔物優先",
|
||||||
@@ -237,15 +269,19 @@
|
|||||||
"relative_offset": "相對偏移",
|
"relative_offset": "相對偏移",
|
||||||
"rename": "Rename",
|
"rename": "Rename",
|
||||||
"render_highlighted_monster": "渲染目標魔物",
|
"render_highlighted_monster": "渲染目標魔物",
|
||||||
|
"render_inactive_anomaly_cores": "Render Inactive Anomaly Cores",
|
||||||
"render_not_highlighted_monsters": "渲染非目標魔物",
|
"render_not_highlighted_monsters": "渲染非目標魔物",
|
||||||
"renderer": "Renderer",
|
"renderer": "Renderer",
|
||||||
"reset": "Reset",
|
"reset": "Reset",
|
||||||
"reversed_order": "反向排序",
|
"reversed_order": "反向排序",
|
||||||
"reward_screen": "Reward Screen",
|
"reward_screen": "Reward Screen",
|
||||||
|
"right_alignment_shift": "Right Alignment Shift",
|
||||||
|
"right_to_left": "Right to Left",
|
||||||
"servant_otomos": "Servant Buddies",
|
"servant_otomos": "Servant Buddies",
|
||||||
"servants": "Followers",
|
"servants": "Followers",
|
||||||
"settings": "設定",
|
"settings": "設定",
|
||||||
"severe_filter": "Severe",
|
"sever_anomaly_filter": "Sever + Anomaly Core",
|
||||||
|
"sever_filter": "Sever",
|
||||||
"shadow": "陰影",
|
"shadow": "陰影",
|
||||||
"show_my_otomos_separately": "Show my Buddies separately",
|
"show_my_otomos_separately": "Show my Buddies separately",
|
||||||
"show_other_player_otomos_separately": "Show Other Player Buddies separately",
|
"show_other_player_otomos_separately": "Show Other Player Buddies separately",
|
||||||
@@ -276,6 +312,7 @@
|
|||||||
"top_dps": "最高 DPS",
|
"top_dps": "最高 DPS",
|
||||||
"top_left": "左上",
|
"top_left": "左上",
|
||||||
"top_right": "右上",
|
"top_right": "右上",
|
||||||
|
"top_to_bottom": "Top to Bottom",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
"total_buildup": "總累積值",
|
"total_buildup": "總累積值",
|
||||||
"total_buildup_label": "總累積值文字",
|
"total_buildup_label": "總累積值文字",
|
||||||
@@ -298,12 +335,42 @@
|
|||||||
"visible": "可見",
|
"visible": "可見",
|
||||||
"width": "寬度",
|
"width": "寬度",
|
||||||
"world_offset": "地圖中的位置",
|
"world_offset": "地圖中的位置",
|
||||||
"wyvern_riding_damage": "操龍傷害",
|
"wyvern_riding": "Wyvern Riding",
|
||||||
"x": "X軸",
|
"x": "X軸",
|
||||||
"y": "Y軸",
|
"y": "Y軸",
|
||||||
"z": "Z軸"
|
"z": "Z軸"
|
||||||
},
|
},
|
||||||
"font_name": "NotoSansTC-Bold.otf",
|
"font_name": "NotoSansTC-Bold.otf",
|
||||||
|
"melody_effects": {
|
||||||
|
"affinity_up": "Affinity Up",
|
||||||
|
"attack_and_affinity_up": "Attack and Affinity Up",
|
||||||
|
"attack_and_defense_up": "Attack and Defense Up",
|
||||||
|
"attack_up": "Attack Up",
|
||||||
|
"blight_negated": "Blight Negated",
|
||||||
|
"defense_up": "Defense Up",
|
||||||
|
"divine_protection": "Divine Protection",
|
||||||
|
"earplugs_l": "Earplugs (L)",
|
||||||
|
"earplugs_s": "Earplugs (S)",
|
||||||
|
"elemental_attack_boost": "Elemental Attack Boost",
|
||||||
|
"environment_damage_negated": "Environment Damage Negated",
|
||||||
|
"health_recovery_l": "Health Recovery (L)",
|
||||||
|
"health_recovery_s": "Health Recovery (S)",
|
||||||
|
"health_recovery_s_antidote": "Health Recovery (S) + Antidote",
|
||||||
|
"health_regeneration": "Health Regeneration",
|
||||||
|
"infernal_melody": "Infernal Melody",
|
||||||
|
"knockbacks_negated": "Knockbacks Negated",
|
||||||
|
"self_improvement": "Self-Improvement",
|
||||||
|
"sharpness_extension": "Sharpness Extension",
|
||||||
|
"sharpness_loss_reduced": "Sharpness Loss Reduced",
|
||||||
|
"sharpness_regeneration": "Sharpness Regeneration",
|
||||||
|
"sonic_barrier": "Sonic Barrier",
|
||||||
|
"sonic_wave": "Sonic Wave",
|
||||||
|
"stamina_recovery_up": "Stamina Recovery Up",
|
||||||
|
"stamina_use_reduced": "Stamina Use Reduced",
|
||||||
|
"stun_negated": "Stun Negated",
|
||||||
|
"tremors_negated": "Tremors Negated",
|
||||||
|
"wind_pressure_negated": "Wind Pressure Negated"
|
||||||
|
},
|
||||||
"parts": {
|
"parts": {
|
||||||
"abdomen": "腹部",
|
"abdomen": "腹部",
|
||||||
"amatsu_unknown": "?",
|
"amatsu_unknown": "?",
|
||||||
@@ -372,5 +439,20 @@
|
|||||||
"wingclaw": "翼爪",
|
"wingclaw": "翼爪",
|
||||||
"wingclaws": "翼爪",
|
"wingclaws": "翼爪",
|
||||||
"wings": "翅膀"
|
"wings": "翅膀"
|
||||||
}
|
},
|
||||||
|
"unicode_glyph_ranges": [
|
||||||
|
32,
|
||||||
|
255,
|
||||||
|
8192,
|
||||||
|
8303,
|
||||||
|
12288,
|
||||||
|
12543,
|
||||||
|
12784,
|
||||||
|
12799,
|
||||||
|
19968,
|
||||||
|
40879,
|
||||||
|
65280,
|
||||||
|
65519,
|
||||||
|
0
|
||||||
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user