39 Commits

Author SHA1 Message Date
GreenComfyTea
2390bfe8ac Bump version to v2.7.1 2024-05-23 18:35:07 +03:00
GreenComfyTea
7398bab9ea [Buff UI] Fix buffs not working when Sorting by Timer/Duration is selected 2024-05-12 10:26:43 +03:00
GreenComfyTea
877a48583a Update russian localization 2024-05-11 08:26:14 +03:00
GreenComfyTea
ee6dfe2139 Hide some errors 2024-05-11 08:06:20 +03:00
GreenComfyTea
d4c52617d9 Add Endemic Life Head Tracking 2024-05-06 19:08:08 +03:00
GreenComfyTea
30d858b1f8 Bump version to 2.7 2024-05-06 18:45:16 +03:00
GreenComfyTea
3c8f5019ab Grammar 2024-05-06 18:44:49 +03:00
GreenComfyTea
4caa69930d Add Small and Large Monster Head Tracking 2024-05-06 18:44:33 +03:00
GreenComfyTea
874c89daa5 Update README.md 2024-04-10 13:53:11 +03:00
GreenComfyTea
26590a3e0b Bump version to v2.6.6 2024-03-01 16:57:15 +02:00
GreenComfyTea
1439498a67 [Hunting Horn -> Bead of Resonance]: Fixed in online when not host 2024-03-01 16:57:01 +02:00
GreenComfyTea
6a876ccdb4 Revert "Whitelist default.json localization file"
This reverts commit 9560dad602.
2024-02-09 10:48:45 +02:00
GreenComfyTea
9560dad602 Whitelist default.json localization file 2024-02-09 10:46:56 +02:00
GreenComfyTea
032b77ca95 Bump version to v2.6.5 2024-02-09 10:42:53 +02:00
GreenComfyTea
efdaae5b5a Formatting 2024-02-09 10:42:37 +02:00
GreenComfyTea
419d25070b Make keyboard.update() event-based 2024-02-09 10:42:21 +02:00
GreenComfyTea
bee2e7d873 Update README.md 2024-01-27 13:43:29 +02:00
GreenComfyTea
9bcc1142f6 Update README.md 2024-01-22 20:23:21 +02:00
GreenComfyTea
afec53e5f1 Bump version to 2.6.4 2024-01-22 19:38:42 +02:00
GreenComfyTea
b3cfa61660 Buff UI -> Fix Rampage Skills filters not working 2024-01-22 19:38:11 +02:00
GreenComfyTea
2f10a5d9e5 Buff UI -> Fix Harvest Moon not getting cleared when the buff expires or when skill is switched 2024-01-22 19:37:42 +02:00
GreenComfyTea
0dc74d4cc9 Buff UI -> Clear buff data on error 2024-01-22 19:36:12 +02:00
GreenComfyTea
9b82e27725 Bump version to 2.6.3 2023-10-29 15:36:43 +02:00
GreenComfyTea
2a3c8106d5 Fix: Power Shealthe, Sonic Boom, Bead of Resonance 2023-10-29 15:36:26 +02:00
GreenComfyTea
3b89ce8303 Bump version to v2.6.2 2023-10-24 10:15:42 +03:00
GreenComfyTea
f2e23626cf Fix creating DEFAULT file in /data/ when no config 2023-10-24 10:15:19 +03:00
GreenComfyTea
8a55873e14 Bump version to 2.6.1 2023-10-16 08:56:48 +03:00
GreenComfyTea
b93bdd0338 Add Buff UI and Stats UI to Hotkeys
+ Fix a Bug when Removed Hotkey was not Saved in the Config
+ Allow Changing Selected Hotkey when Any Other Hotkey is Waiting for a Keypress
2023-10-16 08:55:46 +03:00
GreenComfyTea
f01ec08990 Merge branch 'main' of https://github.com/GreenComfyTea/MHR-Overlay 2023-10-10 12:56:26 +03:00
GreenComfyTea
b6ed4f036a Adjust Dragon Conversion Buff Names 2023-10-10 12:56:18 +03:00
GreenComfyTea
fedf5bc7af Update README.md 2023-10-10 12:54:29 +03:00
GreenComfyTea
009eb9ffb0 Add Missing Might Seed Buff Filter 2023-10-10 12:30:19 +03:00
GreenComfyTea
b8a7f109e0 Add Missing Falling Asleep Buff Filter 2023-10-10 12:28:25 +03:00
GreenComfyTea
51b824e385 Update README.md 2023-10-10 11:08:50 +03:00
GreenComfyTea
c8bd65556e Fix Unicode Ranges 2023-10-10 10:57:07 +03:00
GreenComfyTea
0781662344 Update Unicode Ranges 2023-10-10 10:17:36 +03:00
GreenComfyTea
5bdcd1b9cf Update NotoSans-CJK Fonts to v2.004 2023-10-10 09:55:02 +03:00
GreenComfyTea
305a78b654 Add NotoSansArabic-Bold.otf Font 2023-10-10 09:30:38 +03:00
GreenComfyTea
6236c1e088 Add Missing NotoSans-Bold.otf Font 2023-10-10 09:28:41 +03:00
48 changed files with 1255 additions and 777 deletions

View File

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

View File

@@ -543,7 +543,6 @@ end
re.on_frame(function()
time.update_timers();
keyboard.update();
if d2d == nil or not config.current_config.global_settings.renderer.use_d2d_if_available then
draw_loop();

View File

@@ -253,7 +253,9 @@ function this.update_poison(player)
local poison_level = poison_level_field:get_data(player);
if poison_level == nil then
error_handler.report("abnormal_statuses.update_poison", "Failed to access Data: poison_level");
error_handler.report("abnormal_statuses.update_poison", "Failed to Access Data: poison_level");
this.list.poison = nil;
this.list.deadly_poison = nil;
return;
end
@@ -288,7 +290,9 @@ function this.update_bubbleblight(player)
local bubble_type = bubble_type_field:get_data(player);
if bubble_type == nil then
error_handler.report("abnormal_statuses.update_bubbleblight", "Failed to access Data: bubble_Type");
error_handler.report("abnormal_statuses.update_bubbleblight", "Failed to Access Data: bubble_Type");
this.list.minor_bubbleblight = nil;
this.list.major_bubbleblight = nil;
return;
end
@@ -314,13 +318,15 @@ function this.update_muck(player)
local is_mud_damage = get_is_mud_damage_method:call(player);
if is_mud_damage == nil then
error_handler.report("abnormal_statuses.update_generic_boolean_value_method", "Failed to access Data: is_mud_damage");
error_handler.report("abnormal_statuses.update_generic_boolean_value_method", "Failed to Access Data: is_mud_damage");
this.list.muck = nil;
return;
end
local is_gold_mud_damage = get_is_gold_mud_damage_method:call(player);
if is_gold_mud_damage == nil then
error_handler.report("abnormal_statuses.update_generic_boolean_value_method", "Failed to access Data: is_gold_mud_damage");
error_handler.report("abnormal_statuses.update_generic_boolean_value_method", "Failed to Access Data: is_gold_mud_damage");
this.list.muck = nil;
return;
end
@@ -339,13 +345,15 @@ function this.update_frenzy_infection(player)
local virus_accumulator_value = virus_accumulator_field:get_data(player);
if virus_accumulator_value == nil then
error_handler.report("abnormal_statuses.update_frenzy_infection", "Failed to access Data: virus_accumulator_value");
error_handler.report("abnormal_statuses.update_frenzy_infection", "Failed to Access Data: virus_accumulator_value");
this.list.frenzy_infection = nil;
return;
end
local virus_timer = virus_timer_field:get_data(player);
if virus_timer == nil then
error_handler.report("abnormal_statuses.update_frenzy_infection", "Failed to access Data: virus_timer");
error_handler.report("abnormal_statuses.update_frenzy_infection", "Failed to Access Data: virus_timer");
this.list.frenzy_infection = nil;
return;
end
@@ -361,6 +369,7 @@ end
function this.update_sleep(player)
if this.apply_filter("sleep") then
this.list.sleep = nil;
return;
end

View File

@@ -142,13 +142,17 @@ function this.init_names()
misc_buffs.init_names();
end
local tere = {};
local tere2 = {};
local tere3 = {};
function this.update()
if not config.current_config.buff_UI.enabled then
return;
end
if singletons.player_manager == nil then
error_handler.report("buffs.update", "Failed to access Data: player_manager");
error_handler.report("buffs.update", "Failed to Access Data: player_manager");
return;
end
@@ -160,7 +164,7 @@ function this.update()
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");
error_handler.report("buffs.update", "Failed to Access Data: master_player");
return;
end
@@ -168,24 +172,24 @@ function this.update()
local master_player_data = get_player_data_method:call(master_player);
if master_player_data == nil then
error_handler.report("buffs.update", "Failed to access Data: master_player_data");
error_handler.report("buffs.update", "Failed to Access Data: master_player_data");
return;
end
local weapon_type = player_weapon_type_field:get_data(master_player);
if weapon_type == nil then
error_handler.report("buffs.update", "Failed to access Data: weapon_type");
error_handler.report("buffs.update", "Failed to Access Data: weapon_type");
return;
end
if singletons.player_manager == nil then
error_handler.report("buffs.update", "Failed to access Data: player_manager");
error_handler.report("buffs.update", "Failed to Access Data: player_manager");
return;
end
local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
if item_parameter == nil then
error_handler.report("buffs.update", "Failed to access Data: item_parameter");
error_handler.report("buffs.update", "Failed to Access Data: item_parameter");
return;
end
@@ -255,7 +259,8 @@ function this.update_generic_buff(buff_list, filter_list, get_name_function,
end
if value == nil then
error_handler.report("buffs.update_generic_number", string.format("Failed to access Data: %s_value", buff_key));
error_handler.report("buffs.update_generic_number", string.format("Failed to Access Data: %s_value", buff_key));
buff_list[buff_key] = nil;
return;
end
@@ -291,7 +296,8 @@ function this.update_generic_buff(buff_list, filter_list, get_name_function,
end
if timer == nil then
error_handler.report("buffs.update_generic_number", string.format("Failed to access Data: %s_timer", buff_key));
error_handler.report("buffs.update_generic_number", string.format("Failed to Access Data: %s_timer", buff_key));
buff_list[buff_key] = nil;
return;
end

View File

@@ -220,12 +220,14 @@ function this.update_dango_insurance()
end
if singletons.player_manager == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: player_manager");
error_handler.report("dango_skills.update_dango_insurance", "Failed to Access Data: player_manager");
this.list.dango_insurance = nil;
return;
end
if singletons.quest_manager == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: quest_manager");
error_handler.report("dango_skills.update_dango_insurance", "Failed to Access Data: quest_manager");
this.list.dango_insurance = nil;
return;
end
@@ -233,13 +235,15 @@ function this.update_dango_insurance()
local flag_cat_skill_insurance = flag_cat_skill_insurance_field:get_data(singletons.quest_manager);
if flag_cat_skill_insurance == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: flag_cat_skill_insurance");
error_handler.report("dango_skills.update_dango_insurance", "Failed to Access Data: flag_cat_skill_insurance");
this.list.dango_insurance = nil;
return;
end
local is_cat_skill_insurance = is_cat_skill_insurance_method:call(singletons.quest_manager, flag_cat_skill_insurance);
if is_cat_skill_insurance == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: is_cat_skill_insurance");
error_handler.report("dango_skills.update_dango_insurance", "Failed to Access Data: is_cat_skill_insurance");
this.list.dango_insurance = nil;
return;
end
@@ -260,7 +264,8 @@ function this.update_dango_insurance_defense_up(player_data)
local insurance_def_up_lv3 = kitchen_skill_insurance_def_up_lv3_field:get_data(player_data);
if insurance_def_up_lv3 == nil then
error_handler.report("dango_skills.update_dango_insurance_defense_up", "Failed to access Data: insurance_def_up_lv3");
error_handler.report("dango_skills.update_dango_insurance_defense_up", "Failed to Access Data: insurance_def_up_lv3");
this.list.dango_insurance_defense_up = nil;
return;
end
@@ -268,7 +273,8 @@ function this.update_dango_insurance_defense_up(player_data)
local insurance_def_up_lv4 = kitchen_skill_insurance_def_up_lv4_field:get_data(player_data);
if insurance_def_up_lv4 == nil then
error_handler.report("dango_skills.update_dango_insurance_defense_up", "Failed to access Data: insurance_def_up_lv4");
error_handler.report("dango_skills.update_dango_insurance_defense_up", "Failed to Access Data: insurance_def_up_lv4");
this.list.dango_insurance_defense_up = nil;
return;
end
@@ -292,7 +298,8 @@ function this.update_dango_flyer(player)
local is_kitchen_skill_wire_stop_regene = get_is_kitchen_skill_wire_stop_regene_method:call(player);
if is_kitchen_skill_wire_stop_regene == nil then
error_handler.report("dango_skills.update_dango_flyer", "Failed to access Data: is_kitchen_skill_wire_stop_regene");
error_handler.report("dango_skills.update_dango_flyer", "Failed to Access Data: is_kitchen_skill_wire_stop_regene");
this.list.dango_flyer = nil;
return;
end
@@ -300,7 +307,8 @@ function this.update_dango_flyer(player)
local is_kitchen_skill_wire_stop_heal_spd = get_is_kitchen_skill_wire_stop_heal_spd_method:call(player);
if is_kitchen_skill_wire_stop_heal_spd == nil then
error_handler.report("dango_skills.update_dango_flyer", "Failed to access Data: is_kitchen_skill_wire_stop_heal_spd");
error_handler.report("dango_skills.update_dango_flyer", "Failed to Access Data: is_kitchen_skill_wire_stop_heal_spd");
this.list.dango_flyer = nil;
return;
end
@@ -330,7 +338,8 @@ function this.update_super_recovery_dango(player)
local kitchen_skill_surume_regene_timer = get_kitchen_skill_surume_regene_timer_method:call(player);
if kitchen_skill_surume_regene_timer == nil then
error_handler.report("dango_skills.update_super_recovery_dango", "Failed to access Data: kitchen_skill_surume_regene_timer");
error_handler.report("dango_skills.update_super_recovery_dango", "Failed to Access Data: kitchen_skill_surume_regene_timer");
this.list.super_recovery_dango = nil;
return;
end
@@ -370,7 +379,7 @@ function this.get_dango_skill_name(key)
local dango_skill_name = get_name_method:call(nil, dango_skill_id);
if dango_skill_name == nil then
error_handler.report("dango_skills.get_dango_name", string.format("Failed to access Data: %s_name", key));
error_handler.report("dango_skills.get_dango_name", string.format("Failed to Access Data: %s_name", key));
return key;
end

View File

@@ -143,7 +143,9 @@ function this.update_ruby_and_gold_wirebugs(player, player_data)
local marionette_mode_type = get_marionette_mode_type_method:call(player);
if marionette_mode_type == nil then
error_handler.report("endemic_life_buffs.update_ruby_and_gold_wirebugs", "Failed to access Data: marionette_mode_type");
error_handler.report("endemic_life_buffs.update_ruby_and_gold_wirebugs", "Failed to Access Data: marionette_mode_type");
this.list.ruby_wirebug = nil;
this.list.gold_wirebug = nil;
end
if marionette_mode_type ~= 1 and marionette_mode_type ~= 2 then
@@ -167,7 +169,8 @@ function this.update_butterflame(player_data)
local atk_up_buff_second = atk_up_buff_second_field:get_data(player_data);
if atk_up_buff_second == nil then
error_handler.report("item_buffs.update_butterflame", "Failed to access Data: atk_up_buff_second");
error_handler.report("item_buffs.update_butterflame", "Failed to Access Data: atk_up_buff_second");
this.list.butterflame = nil;
return;
end
@@ -193,13 +196,13 @@ end
function this.get_endemic_life_name(key)
if singletons.message_manager == nil then
error_handler.report("endemic_life_buffs.get_endemic_life_name", "Failed to access Data: message_manager");
error_handler.report("endemic_life_buffs.get_endemic_life_name", "Failed to Access Data: message_manager");
return key;
end
local endemic_life_name = get_env_creature_name_message_method:call(singletons.message_manager, env_creature.creature_ids[key]);
if endemic_life_name == nil then
error_handler.report("endemic_life_buffs.get_endemic_life_name", string.format("Failed to access Data: %s_name", key));
error_handler.report("endemic_life_buffs.get_endemic_life_name", string.format("Failed to Access Data: %s_name", key));
return key;
end

View File

@@ -170,7 +170,9 @@ 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("item_buffs.update_demondrug", "Failed to access Data: demondrug_value");
error_handler.report("item_buffs.update_demondrug", "Failed to Access Data: demondrug_value");
this.list.demondrug = nil;
this.list.mega_demondrug = nil;
return;
end
@@ -182,13 +184,17 @@ function this.update_demondrug(player_data, item_parameter)
local demondrug_const_value = demondrug_atk_up_field:get_data(item_parameter);
if demondrug_const_value == nil then
error_handler.report("item_buffs.update_demondrug", "Failed to access Data: demondrug_const_value");
error_handler.report("item_buffs.update_demondrug", "Failed to Access Data: demondrug_const_value");
this.list.demondrug = nil;
this.list.mega_demondrug = nil;
return;
end
local mega_demondrug_const_value = great_demondrug_atk_up_field:get_data(item_parameter);
if mega_demondrug_const_value == nil then
error_handler.report("item_buffs.update_demondrug", "Failed to access Data: mega_demondrug_const_value");
error_handler.report("item_buffs.update_demondrug", "Failed to Access Data: mega_demondrug_const_value");
this.list.demondrug = nil;
this.list.mega_demondrug = nil;
return;
end
@@ -221,7 +227,9 @@ 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("item_buffs.update_armorskin", "Failed to access Data: armorskin_value");
error_handler.report("item_buffs.update_armorskin", "Failed to Access Data: armorskin_value");
this.list.armorskin = nil;
this.list.mega_armorskin = nil;
return;
end
@@ -233,13 +241,17 @@ function this.update_armorskin(player_data, item_parameter)
local armorskin_const_value = armorskin_def_up_field:get_data(item_parameter);
if armorskin_const_value == nil then
error_handler.report("item_buffs.update_armorskin", "Failed to access Data: armorskin_const_value");
error_handler.report("item_buffs.update_armorskin", "Failed to Access Data: armorskin_const_value");
this.list.armorskin = nil;
this.list.mega_armorskin = nil;
return;
end
local mega_armorskin_const_value = great_armorskin_def_up_field:get_data(item_parameter);
if mega_armorskin_const_value == nil then
error_handler.report("item_buffs.update_armorskin", "Failed to access Data: mega_armorskin_const_value");
error_handler.report("item_buffs.update_armorskin", "Failed to Access Data: mega_armorskin_const_value");
this.list.armorskin = nil;
this.list.mega_armorskin = nil;
return;
end
@@ -268,13 +280,15 @@ function this.update_might_seed(player_data, item_parameter)
local atk_up_buff_second = atk_up_buff_second_field:get_data(player_data);
if atk_up_buff_second == nil then
error_handler.report("item_buffs.update_might_seed", "Failed to access Data: atk_up_buff_second");
error_handler.report("item_buffs.update_might_seed", "Failed to Access Data: atk_up_buff_second");
this.list.might_seed = nil;
return;
end
local might_seed_atk_up = might_seed_atk_up_field:get_data(item_parameter);
if might_seed_atk_up == nil then
error_handler.report("item_buffs.update_might_seed", "Failed to access Data: might_seed_atk_up");
error_handler.report("item_buffs.update_might_seed", "Failed to Access Data: might_seed_atk_up");
this.list.might_seed = nil;
return;
end
@@ -301,7 +315,7 @@ end
function this.get_item_buff_name(key)
local item_buff_name = get_name_method:call(nil, item_ids[key]);
if item_buff_name == nil then
error_handler.report("item_buffs.get_item_buff_name", string.format("Failed to access Data: %s_name", key));
error_handler.report("item_buffs.get_item_buff_name", string.format("Failed to Access Data: %s_name", key));
return key;
end

View File

@@ -127,13 +127,13 @@ local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.Dat
function this.update(master_player)
local music_data_array = music_data_field:get_data(master_player);
if music_data_array == nil then
error_handler.report("melody_effects.update", "Failed to access Data: music_data_array");
error_handler.report("melody_effects.update", "Failed to Access Data: music_data_array");
return;
end
local length = get_length_method:call(music_data_array);
if length == nil then
error_handler.report("melody_effects.update", "Failed to access Data: music_data_array -> length");
error_handler.report("melody_effects.update", "Failed to Access Data: music_data_array -> length");
return;
end
@@ -152,7 +152,8 @@ function this.update(master_player)
local music_data = get_value_method:call(music_data_array, id);
if music_data == nil then
error_handler.report("melody_effects.update", "Failed to access Data: music_data No." .. tostring(id));
error_handler.report("melody_effects.update", "Failed to Access Data: music_data No." .. tostring(id));
this.list[lua_index] = nil;
goto continue;
end
@@ -164,7 +165,8 @@ end
function this.update_melody_effect(lua_index, id, key, melody_effect, melody_data)
local melody_timer = time_field:get_data(melody_data);
if melody_timer == nil then
error_handler.report("melody_effects.update_melody_effect", "Failed to access Data: melody_timer No. " .. tostring(id));
error_handler.report("melody_effects.update_melody_effect", "Failed to Access Data: melody_timer No. " .. tostring(id));
this.list[lua_index] = nil;
return;
end
@@ -231,7 +233,7 @@ function this.get_melody_effect_name(id)
local melody_effect_name = get_name_method:call(nil, id);
if melody_effect_name == nil then
local name = string.format("Melody Effect No. %d", id);
error_handler.report("melody_effects.get_melody_effect_name", "Failed to access Data: " .. melody_effect_name);
error_handler.report("melody_effects.get_melody_effect_name", "Failed to Access Data: " .. melody_effect_name);
return name;
end

View File

@@ -130,13 +130,15 @@ function this.update_attack_up(player_data, item_parameter)
local atk_up_buff_second = atk_up_buff_second_field:get_data(player_data);
if atk_up_buff_second == nil then
error_handler.report("item_buffs.update_attack_up", "Failed to access Data: atk_up_buff_second");
error_handler.report("item_buffs.update_attack_up", "Failed to Access Data: atk_up_buff_second");
this.list.attack_up = nil;
return;
end
local might_seed_atk_up = might_seed_atk_up_field:get_data(item_parameter);
if might_seed_atk_up == nil then
error_handler.report("item_buffs.update_might_seed", "Failed to access Data: might_seed_atk_up");
error_handler.report("item_buffs.update_might_seed", "Failed to Access Data: might_seed_atk_up");
this.list.attack_up = nil;
return;
end

View File

@@ -134,7 +134,7 @@ end
function this.get_otomo_move_name(key)
local otomo_move_name = get_name_method:call(nil, otomo_moves_ids[key]);
if otomo_move_name == nil then
error_handler.report("otomo_moves.get_otomo_move_name", string.format("Failed to access Data: %s_name", key));
error_handler.report("otomo_moves.get_otomo_move_name", string.format("Failed to Access Data: %s_name", key));
return key;
end

View File

@@ -88,7 +88,7 @@ function this.update_rampage_skill(key, value_owner, value_holder, timer_owner,
end
function this.apply_filter(key)
return this.apply_filter(this.list, config.current_config.buff_UI.filter.rampage_skills, key);
return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.rampage_skills, key);
end
function this.init_all_UI()
@@ -106,7 +106,7 @@ end
function this.get_rampage_skill_name(key)
local rampage_skill_name = get_name_method:call(nil, rampage_skill_ids[key]);
if rampage_skill_name == nil then
error_handler.report("rampage_skills.get_rampage_skill_name", string.format("Failed to access Data: %s_name", key));
error_handler.report("rampage_skills.get_rampage_skill_name", string.format("Failed to Access Data: %s_name", key));
return key;
end

View File

@@ -472,7 +472,7 @@ end
function this.update_equipped_skill_data(player)
local player_skill_list = get_player_skill_list_method:call(player);
if player_skill_list == nil then
error_handler.report("this.update_equipped_skill_data", "Failed to access Data: player_skill_list");
error_handler.report("this.update_equipped_skill_data", "Failed to Access Data: player_skill_list");
return;
end
@@ -490,7 +490,7 @@ function this.update_equipped_skill_data(player)
local skill_level = skill_lv_field:get_data(re_skill_data);
if skill_level == nil then
error_handler.report("skills.update_equipped_skill_data", string.format("Failed to access Data: %s -> skill_level", skill_key));
error_handler.report("skills.update_equipped_skill_data", string.format("Failed to Access Data: %s -> skill_level", skill_key));
goto continue;
end
@@ -514,7 +514,8 @@ function this.update_wind_mantle(player, weapon_type)
local is_wind_mantle_enable = is_equip_skill_226_enable_field:get_data(player);
if is_wind_mantle_enable == nil then
error_handler.report("skills.update_wind_mantle", "Failed to access Data: is_wind_mantle_enable");
error_handler.report("skills.update_wind_mantle", "Failed to Access Data: is_wind_mantle_enable");
this.list.wind_mantle = nil;
return;
end
@@ -525,13 +526,15 @@ function this.update_wind_mantle(player, weapon_type)
local wind_mantle_timer = equip_skill_226_attack_off_timer_field:get_data(player);
if wind_mantle_timer == nil then
error_handler.report("skills.update_wind_mantle", "Failed to access Data: wind_mantle_timer");
error_handler.report("skills.update_wind_mantle", "Failed to Access Data: wind_mantle_timer");
this.list.wind_mantle = nil;
return;
end
local wind_mantle_value = equip_skill_226_attack_count_field:get_data(player);
if wind_mantle_value == nil then
error_handler.report("skills.update_wind_mantle", "Failed to access Data: wind_mantle_value");
error_handler.report("skills.update_wind_mantle", "Failed to Access Data: wind_mantle_value");
this.list.wind_mantle = nil;
return;
end
@@ -564,11 +567,13 @@ function this.update_maximum_might(player_data)
local whole_body_timer = whole_body_timer_field:get_data(player_data);
if whole_body_timer == nil then
error_handler.report("skills.update_maximum_might", "Failed to access Data: whole_body_timer");
error_handler.report("skills.update_maximum_might", "Failed to Access Data: whole_body_timer");
this.list.maximum_might = nil;
return;
end
if player_info.list.max_stamina == -1 then
this.list.maximum_might = nil;
return;
end
@@ -627,7 +632,8 @@ function this.update_bloodlust()
if bloodlust == nil then
local bloodlust_name = this.get_skill_name("bloodlust");
if bloodlust_name == nil then
error_handler.report("skills.update_bloodlust", "Failed to access Data: bloodlust_name");
error_handler.report("skills.update_bloodlust", "Failed to Access Data: bloodlust_name");
this.list.bloodlust = nil;
return;
end
@@ -644,7 +650,8 @@ function this.update_frenzied_bloodlust(player, player_data)
local hunter_wire_skill_231_num = get_hunter_wire_skill_231_num_method:call(player);
if hunter_wire_skill_231_num == nil then
error_handler.report("skills.update_frenzied_bloodlust", "Failed to access Data: hunter_wire_skill_231_num");
error_handler.report("skills.update_frenzied_bloodlust", "Failed to Access Data: hunter_wire_skill_231_num");
this.list.frenzied_bloodlust = nil;
return;
end
@@ -657,13 +664,15 @@ function this.update_frenzied_bloodlust(player, player_data)
local equip_skill_231_wire_num_timer = equip_skill_231_wire_num_timer_field:get_data(player_data);
if equip_skill_231_wire_num_timer == nil then
error_handler.report("skills.update_frenzied_bloodlust", "Failed to access Data: equip_skill_231_wire_num_timer");
error_handler.report("skills.update_frenzied_bloodlust", "Failed to Access Data: equip_skill_231_wire_num_timer");
this.list.frenzied_bloodlust = nil;
return;
end
local equip_skill_231_wp_off_timer = equip_skill_231_wp_off_timer_field:get_data(player_data);
if equip_skill_231_wp_off_timer == nil then
error_handler.report("skills.update_frenzied_bloodlust", "Failed to access Data: equip_skill_231_wp_off_timer");
error_handler.report("skills.update_frenzied_bloodlust", "Failed to Access Data: equip_skill_231_wp_off_timer");
this.list.frenzied_bloodlust = nil;
return;
end
@@ -770,7 +779,8 @@ function this.update_resentment(player_data)
local r_vital = r_vital_field:get_data(player_data);
if r_vital == nil then
error_handler.report("skills.update_resentment", "Failed to access Data: r_vital");
error_handler.report("skills.update_resentment", "Failed to Access Data: r_vital");
this.list.resentment = nil;
return;
end
@@ -802,7 +812,8 @@ function this.update_spiribirds_call(player_data)
local equip_skill_211_timer = equip_skill_211_timer_field:get_data(player_data);
if equip_skill_211_timer == nil then
error_handler.report("skills.update_spiribirds_call", "Failed to access Data: equip_skill_211_timer");
error_handler.report("skills.update_spiribirds_call", "Failed to Access Data: equip_skill_211_timer");
this.list.spiribirds_call = nil;
return;
end
@@ -863,7 +874,7 @@ function this.get_skill_name(key)
local skill_name = get_name_method:call(nil, skill_data_list[key].id);
if skill_name == nil then
error_handler.report("skills.get_skill_name", string.format("Failed to access Data: %s_name", key));
error_handler.report("skills.get_skill_name", string.format("Failed to Access Data: %s_name", key));
return key;
end

View File

@@ -304,7 +304,7 @@ local insect_glaive_type_name = "insect_glaive";
-- 13 Bow
local bow_type_name = "bow";
local previous_weapon_type = -1;
local previous_weapon_type = 0;
local previous_weapon_key = "great_sword";
local spirit_gauge_breakpoints = {3, 2};
@@ -503,7 +503,7 @@ function this.update(player, player_data, weapon_type)
end
previous_weapon_type = weapon_type;
previous_weapon_key = this.keys[previous_weapon_type].key;
previous_weapon_key = this.keys[previous_weapon_type + 1].key;
if weapon_type == 0 then
this.update_great_sword_skills(player);
@@ -586,35 +586,41 @@ function this.update_harvest_moon()
end
if singletons.long_sword_shell_manager == nil then
error_handler.report("weapon_skills.update_harvest_moon", "Failed to access Data: long_sword_shell_manager");
error_handler.report("weapon_skills.update_harvest_moon", "Failed to Access Data: long_sword_shell_manager");
this.list.harvest_moon = nil;
return;
end
local master_long_sword_shell_010_list = get_master_long_sword_shell_010s_method:call(singletons.long_sword_shell_manager, players.myself.id);
if master_long_sword_shell_010_list == nil then
error_handler.report("weapon_skills.update_harvest_moon", "Failed to access Data: master_long_sword_shell_010_list");
error_handler.report("weapon_skills.update_harvest_moon", "Failed to Access Data: master_long_sword_shell_010_list");
this.list.harvest_moon = nil;
return;
end
local master_long_sword_shell_010_list_count = get_long_sword_shell_010_list_count_method:call(master_long_sword_shell_010_list);
if master_long_sword_shell_010_list_count == nil then
error_handler.report("weapon_skills.update_harvest_moon", "Failed to access Data: master_long_sword_shell_010_list_count");
error_handler.report("weapon_skills.update_harvest_moon", "Failed to Access Data: master_long_sword_shell_010_list_count");
this.list.harvest_moon = nil;
return;
end
if master_long_sword_shell_010_list_count == 0 then
this.list.harvest_moon = nil;
return;
end
local master_long_sword_shell_010 = get_long_sword_shell_010_list_item_method:call(master_long_sword_shell_010_list, 0);
if master_long_sword_shell_010 == nil then
error_handler.report("weapon_skills.update_harvest_moon", "Failed to access Data: master_long_sword_shell_010");
error_handler.report("weapon_skills.update_harvest_moon", "Failed to Access Data: master_long_sword_shell_010");
this.list.harvest_moon = nil;
return;
end
local life_timer = long_sword_shell_010_life_timer_field:get_data(master_long_sword_shell_010);
if life_timer == nil then
error_handler.report("weapon_skills.update_harvest_moon", "Failed to access Data: life_timer");
error_handler.report("weapon_skills.update_harvest_moon", "Failed to Access Data: life_timer");
this.list.harvest_moon = nil;
return;
end
@@ -639,7 +645,8 @@ function this.update_wyvernblast_reload(player_data)
local wyvernblast_reload_timer = wyvernblast_reload_timer_field:get_data(player_data);
if wyvernblast_reload_timer == nil then
error_handler.report("weapon_skills.update_wyvernblast_reload", "Failed to access Data: heavy_bowgun_overheat_timer_field");
error_handler.report("weapon_skills.update_wyvernblast_reload", "Failed to Access Data: heavy_bowgun_overheat_timer_field");
this.list.wyvernblast_reload = nil;
return;
end
@@ -668,19 +675,22 @@ function this.update_rising_moon()
end
if singletons.light_bowgun_shell_manager == nil then
error_handler.report("weapon_skills.update_rising_moon", "Failed to access Data: light_bowgun_shell_manager");
error_handler.report("weapon_skills.update_rising_moon", "Failed to Access Data: light_bowgun_shell_manager");
this.list.rising_moon = nil;
return;
end
local light_bowgun_shell_030s_speed_boost_list = get_light_bowgun_shell_030s_speed_boost_list_method:call(singletons.light_bowgun_shell_manager);
if light_bowgun_shell_030s_speed_boost_list == nil then
error_handler.report("weapon_skills.update_rising_moon", "Failed to access Data: light_bowgun_shell_030s_speed_boost_list");
error_handler.report("weapon_skills.update_rising_moon", "Failed to Access Data: light_bowgun_shell_030s_speed_boost_list");
this.list.rising_moon = nil;
return;
end
local light_bowgun_shell_030_speed_boost_list_count = get_light_bowgun_shell_030_list_count_method:call(light_bowgun_shell_030s_speed_boost_list);
if light_bowgun_shell_030_speed_boost_list_count == nil then
error_handler.report("weapon_skills.update_rising_moon", "Failed to access Data: light_bowgun_shell_030_speed_boost_list_count");
error_handler.report("weapon_skills.update_rising_moon", "Failed to Access Data: light_bowgun_shell_030_speed_boost_list_count");
this.list.rising_moon = nil;
return;
end
@@ -689,16 +699,17 @@ function this.update_rising_moon()
return;
end
-- Possibly requires players.myself.id instead of 0?
local light_bowgun_shell_030 = get_light_bowgun_shell_030_list_item_method:call(light_bowgun_shell_030s_speed_boost_list, 0);
if light_bowgun_shell_030 == nil then
error_handler.report("weapon_skills.update_rising_moon", "Failed to access Data: light_bowgun_shell_030");
error_handler.report("weapon_skills.update_rising_moon", "Failed to Access Data: light_bowgun_shell_030");
this.list.rising_moon = nil;
return;
end
local is_hit_enable = light_bowgun_shell_030_is_enable_hit_field:get_data(light_bowgun_shell_030);
if is_hit_enable == nil then
error_handler.report("weapon_skills.update_rising_moon", "Failed to access Data: is_hit_enable");
error_handler.report("weapon_skills.update_rising_moon", "Failed to Access Data: is_hit_enable");
this.list.rising_moon = nil;
return;
end
@@ -709,7 +720,8 @@ function this.update_rising_moon()
local timer = light_bowgun_shell_030_timer_field:get_data(light_bowgun_shell_030);
if timer == nil then
error_handler.report("weapon_skills.update_rising_moon", "Failed to access Data: timer");
error_handler.report("weapon_skills.update_rising_moon", "Failed to Access Data: timer");
this.list.rising_moon = nil;
return;
end
@@ -727,19 +739,22 @@ function this.update_setting_sun()
end
if singletons.light_bowgun_shell_manager == nil then
error_handler.report("weapon_skills.update_setting_sun", "Failed to access Data: light_bowgun_shell_manager");
error_handler.report("weapon_skills.update_setting_sun", "Failed to Access Data: light_bowgun_shell_manager");
this.list.setting_sun = nil;
return;
end
local light_bowgun_shell_030s_all_list = get_light_bowgun_shell_030s_all_list_method:call(singletons.light_bowgun_shell_manager);
if light_bowgun_shell_030s_all_list == nil then
error_handler.report("weapon_skills.update_setting_sun", "Failed to access Data: light_bowgun_shell_030s_all_list");
error_handler.report("weapon_skills.update_setting_sun", "Failed to Access Data: light_bowgun_shell_030s_all_list");
this.list.setting_sun = nil;
return;
end
local light_bowgun_shell_030_all_list_count = get_light_bowgun_shell_030_list_count_method:call(light_bowgun_shell_030s_all_list);
if light_bowgun_shell_030_all_list_count == nil then
error_handler.report("weapon_skills.update_setting_sun", "Failed to access Data: light_bowgun_shell_030_all_list_count");
error_handler.report("weapon_skills.update_setting_sun", "Failed to Access Data: light_bowgun_shell_030_all_list_count");
this.list.setting_sun = nil;
return;
end
@@ -753,16 +768,17 @@ function this.update_setting_sun()
return;
end
-- Possibly requires players.myself.id instead of 0?
local light_bowgun_shell_030 = get_light_bowgun_shell_030_list_item_method:call(light_bowgun_shell_030s_all_list, 0);
if light_bowgun_shell_030 == nil then
error_handler.report("weapon_skills.update_setting_sun", "Failed to access Data: light_bowgun_shell_030");
error_handler.report("weapon_skills.update_setting_sun", "Failed to Access Data: light_bowgun_shell_030");
this.list.setting_sun = nil;
return;
end
local is_hit_enable = light_bowgun_shell_030_is_enable_hit_field:get_data(light_bowgun_shell_030);
if is_hit_enable == nil then
error_handler.report("weapon_skills.update_setting_sun", "Failed to access Data: is_hit_enable");
error_handler.report("weapon_skills.update_setting_sun", "Failed to Access Data: is_hit_enable");
this.list.setting_sun = nil;
return;
end
@@ -773,7 +789,8 @@ function this.update_setting_sun()
local timer = light_bowgun_shell_030_timer_field:get_data(light_bowgun_shell_030);
if timer == nil then
error_handler.report("weapon_skills.update_setting_sun", "Failed to access Data: timer");
error_handler.report("weapon_skills.update_setting_sun", "Failed to Access Data: timer");
this.list.setting_sun = nil;
return;
end
@@ -792,7 +809,8 @@ function this.update_overheat(player_data)
local heavy_bowgun_overheat_timer = heavy_bowgun_overheat_timer_field:get_data(player_data);
if heavy_bowgun_overheat_timer_field == nil then
error_handler.report("weapon_skills.update_overheat", "Failed to access Data: heavy_bowgun_overheat_timer_field");
error_handler.report("weapon_skills.update_overheat", "Failed to Access Data: heavy_bowgun_overheat_timer_field");
this.list.overheat = nil;
return;
end
@@ -827,7 +845,8 @@ function this.update_twin_wine(player)
local chain_death_match_shell = chain_death_match_shell_field:get_data(player);
if chain_death_match_shell == nil then
error_handler.report("weapon_skills.update_twin_wine", "Failed to access Data: chain_death_match_shell");
error_handler.report("weapon_skills.update_twin_wine", "Failed to Access Data: chain_death_match_shell");
this.list.twin_wine = nil;
return;
end
@@ -851,7 +870,8 @@ function this.update_archdemon_mode(player)
local is_kijin_kyouka = is_kijin_kyouka_field:get_data(player);
if is_kijin_kyouka == nil then
error_handler.report("weapon_skills.update_archdemon_mode", "Failed to access Data: is_kijin_kyouka");
error_handler.report("weapon_skills.update_archdemon_mode", "Failed to Access Data: is_kijin_kyouka");
this.list.archdemon_mode = nil;
return;
end
@@ -862,7 +882,8 @@ function this.update_archdemon_mode(player)
local kijin_kyouka_gauge = get_kijin_kyouka_gauge_method:call(player);
if kijin_kyouka_gauge == nil then
error_handler.report("weapon_skills.update_archdemon_mode", "Failed to access Data: kijin_kyouka_gauge");
error_handler.report("weapon_skills.update_archdemon_mode", "Failed to Access Data: kijin_kyouka_gauge");
this.list.archdemon_mode = nil;
return;
end
@@ -887,36 +908,41 @@ function this.update_bead_of_resonance()
end
if singletons.horn_shell_manager == nil then
error_handler.report("weapon_skills.update_bead_of_resonance", "Failed to access Data: horn_shell_manager");
error_handler.report("weapon_skills.update_bead_of_resonance", "Failed to Access Data: horn_shell_manager");
this.list.bead_of_resonance = nil;
return;
end
local horn_shell_003s_array = horn_shell_003s_field:get_data(singletons.horn_shell_manager);
if horn_shell_003s_array == nil then
error_handler.report("weapon_skills.update_bead_of_resonance", "Failed to access Data: horn_shell_003s_list");
error_handler.report("weapon_skills.update_bead_of_resonance", "Failed to Access Data: horn_shell_003s_list");
this.list.bead_of_resonance = nil;
return;
end
local horn_shell_003s_array_length = get_length_method:call(horn_shell_003s_array);
if horn_shell_003s_array_length == nil then
error_handler.report("weapon_skills.update_bead_of_resonance", "Failed to access Data: horn_shell_003s_array_length");
return;
end
if players.myself.id >= horn_shell_003s_array_length then
error_handler.report("weapon_skills.update_bead_of_resonance", "Failed to Access Data: horn_shell_003s_array_length");
this.list.bead_of_resonance = nil;
return;
end
local horn_shell_003_list = get_value_method:call(horn_shell_003s_array, players.myself.id);
if horn_shell_003s_array_length == 0 then
this.list.bead_of_resonance = nil;
return;
end
local horn_shell_003_list = get_value_method:call(horn_shell_003s_array, 0);
if horn_shell_003_list == nil then
error_handler.report("weapon_skills.update_bead_of_resonance", "Failed to access Data: horn_shell_003_list");
error_handler.report("weapon_skills.update_bead_of_resonance", "Failed to Access Data: horn_shell_003_list");
this.list.bead_of_resonance = nil;
return;
end
local horn_shell_003_list_count = get_horn_shell_003_list_count_method:call(horn_shell_003_list);
if horn_shell_003_list_count == nil then
error_handler.report("weapon_skills.update_bead_of_resonance", "Failed to access Data: horn_shell_003_list_count");
error_handler.report("weapon_skills.update_bead_of_resonance", "Failed to Access Data: horn_shell_003_list_count");
this.list.bead_of_resonance = nil;
return;
end
@@ -927,13 +953,15 @@ function this.update_bead_of_resonance()
local horn_shell_003 = get_horn_shell_003_list_item_method:call(horn_shell_003_list, 0);
if horn_shell_003 == nil then
error_handler.report("weapon_skills.update_bead_of_resonance", "Failed to access Data: horn_shell_003");
error_handler.report("weapon_skills.update_bead_of_resonance", "Failed to Access Data: horn_shell_003");
this.list.bead_of_resonance = nil;
return;
end
local life_timer = horn_shell_003_life_timer_field:get_data(horn_shell_003);
if life_timer == nil then
error_handler.report("weapon_skills.update_bead_of_resonance", "Failed to access Data: life_timer");
error_handler.report("weapon_skills.update_bead_of_resonance", "Failed to Access Data: life_timer");
this.list.bead_of_resonance = nil;
return;
end
@@ -952,18 +980,19 @@ function this.update_sonic_bloom(player)
local blast_speaker_shell = get_ref_blast_speaker_shell_method:call(player);
if blast_speaker_shell == nil then
this.list.bead_of_resonance = nil;
this.list.sonic_bloom = nil;
return;
end
local life_timer = horn_shell_020_life_timer_field:get_data(blast_speaker_shell);
if life_timer == nil then
error_handler.report("weapon_skills.update_sonic_bloom", "Failed to access Data: life_timer");
error_handler.report("weapon_skills.update_sonic_bloom", "Failed to Access Data: life_timer");
this.list.sonic_bloom = nil;
return;
end
if utils.number.is_equal(life_timer, 0) then
this.list.bead_of_resonance = nil;
this.list.sonic_bloom = nil;
return;
end
@@ -972,7 +1001,6 @@ end
function this.update_charge_blade_skills(player)
this.update_weapon_skill("element_boost", charge_blade_type_name, nil, nil, player, shield_buff_timer_field);
this.update_weapon_skill("sword_boost_mode", charge_blade_type_name, nil, nil, player, sword_buff_timer_field);
end
@@ -998,7 +1026,8 @@ function this.update_all_extracts_mix(player)
local is_get_all_extractive = is_get_all_extractive_method:call(player);
if is_get_all_extractive == nil then
error_handler.report("weapon_skills.update_all_extracts_mix", "Failed to access Data: is_get_all_extractive");
error_handler.report("weapon_skills.update_all_extracts_mix", "Failed to Access Data: is_get_all_extractive");
this.list.all_extracts_mix = nil;
return;
end
@@ -1009,7 +1038,8 @@ function this.update_all_extracts_mix(player)
local red_extractive_time = get_red_extractive_time_method:call(player);
if red_extractive_time == nil then
error_handler.report("weapon_skills.update_all_extracts_mix", "Failed to access Data: red_extractive_time");
error_handler.report("weapon_skills.update_all_extracts_mix", "Failed to Access Data: red_extractive_time");
this.list.all_extracts_mix = nil;
return;
end
@@ -1028,7 +1058,8 @@ function this.update_extract(player, extract_key, time_holder)
local extractive_time = time_holder:call(player);
if extractive_time == nil then
error_handler.report("weapon_skills.update_extract", string.format("Failed to access Data: %s_extractive_time", extract_key));
error_handler.report("weapon_skills.update_extract", string.format("Failed to Access Data: %s_extractive_time", extract_key));
this.list[extract_key] = nil;
return;
end
@@ -1073,7 +1104,7 @@ function this.get_weapon_skill_name(weapon_skill_key)
local weapon_skill_name = get_name_method:call(nil, weapon_skill_id);
if weapon_skill_name == nil then
error_handler.report("weapon_skills.get_weapon_skill_name", string.format("Failed to access Data: %s_name", weapon_skill_key));
error_handler.report("weapon_skills.get_weapon_skill_name", string.format("Failed to Access Data: %s_name", weapon_skill_key));
return weapon_skill_key;
end

View File

@@ -107,13 +107,13 @@ function this.update_damage(enemy, enemy_calc_damage_info)
local is_large_monster = is_boss_enemy_method:call(enemy);
if is_large_monster == nil then
error_handler.report("damage_hook.update_damage", "Failed to access Data: is_large_monster");
error_handler.report("damage_hook.update_damage", "Failed to Access Data: is_large_monster");
return;
end
local dead_or_captured = check_die_method:call(enemy);
if dead_or_captured == nil then
error_handler.report("damage_hook.update_damage", "Failed to access Data: dead_or_captured");
error_handler.report("damage_hook.update_damage", "Failed to Access Data: dead_or_captured");
return;
end
@@ -331,7 +331,7 @@ function this.on_anomaly_core_break(anomaly_core_part)
local anomaly_core_break_damage_rate = get_mystery_core_break_damage_rate_method:call(anomaly_monster.enemy);
if anomaly_core_break_damage_rate == nil then
error_handler.report("damage_hook.on_anomaly_core_break", "Failed to access Data: anomaly_core_break_damage_rate");
error_handler.report("damage_hook.on_anomaly_core_break", "Failed to Access Data: anomaly_core_break_damage_rate");
return;
end

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -70,7 +70,7 @@ end
function this.update_message_manager()
this.message_manager = sdk.get_managed_singleton("snow.gui.MessageManager");
if this.message_manager == nil then
error_handler.report("singletons.update_message_manager", "Failed to access Data: message_manager");
error_handler.report("singletons.update_message_manager", "Failed to Access Data: message_manager");
end
return this.message_manager;
@@ -79,7 +79,7 @@ end
function this.update_enemy_manager()
this.enemy_manager = sdk.get_managed_singleton("snow.enemy.EnemyManager");
if this.enemy_manager == nil then
error_handler.report("singletons.update_enemy_manager", "Failed to access Data: enemy_manager");
error_handler.report("singletons.update_enemy_manager", "Failed to Access Data: enemy_manager");
end
return this.enemy_manager;
@@ -88,7 +88,7 @@ end
function this.update_lobby_manager()
this.lobby_manager = sdk.get_managed_singleton("snow.LobbyManager");
if this.lobby_manager == nil then
error_handler.report("singletons.update_lobby_manager", "Failed to access Data: lobby_manager");
error_handler.report("singletons.update_lobby_manager", "Failed to Access Data: lobby_manager");
return false;
end
@@ -98,7 +98,7 @@ end
function this.update_progress_manager()
this.progress_manager = sdk.get_managed_singleton("snow.progress.ProgressManager");
if this.progress_manager == nil then
error_handler.report("singletons.update_progress_manager", "Failed to access Data: progress_manager");
error_handler.report("singletons.update_progress_manager", "Failed to Access Data: progress_manager");
return false;
end
@@ -108,7 +108,7 @@ end
function this.update_quest_manager()
this.quest_manager = sdk.get_managed_singleton("snow.QuestManager");
if this.quest_manager == nil then
error_handler.report("singletons.update_quest_manager", "Failed to access Data: quest_manager");
error_handler.report("singletons.update_quest_manager", "Failed to Access Data: quest_manager");
end
return this.quest_manager;
@@ -117,7 +117,7 @@ end
function this.update_player_manager()
this.player_manager = sdk.get_managed_singleton("snow.player.PlayerManager");
if this.player_manager == nil then
error_handler.report("singletons.update_player_manager", "Failed to access Data: player_manager");
error_handler.report("singletons.update_player_manager", "Failed to Access Data: player_manager");
end
return this.player_manager;
@@ -126,7 +126,7 @@ end
function this.update_village_area_manager()
this.village_area_manager = sdk.get_managed_singleton("snow.VillageAreaManager");
if this.village_area_manager == nil then
error_handler.report("singletons.update_village_area_manager", "Failed to access Data: village_area_manager");
-- error_handler.report("singletons.update_village_area_manager", "Failed to Access Data: village_area_manager");
end
return this.village_area_manager;
@@ -135,7 +135,7 @@ end
function this.update_gui_manager()
this.gui_manager = sdk.get_managed_singleton("snow.gui.GuiManager");
if this.gui_manager == nil then
error_handler.report("singletons.update_gui_manager", "Failed to access Data: gui_manager");
error_handler.report("singletons.update_gui_manager", "Failed to Access Data: gui_manager");
end
return this.gui_manager;
@@ -144,7 +144,7 @@ end
function this.update_game_keyboard()
this.game_keyboard = sdk.get_managed_singleton("snow.GameKeyboard");
if this.game_keyboard == nil then
error_handler.report("singletons.update_game_keyboard", "Failed to access Data: game_keyboard");
error_handler.report("singletons.update_game_keyboard", "Failed to Access Data: game_keyboard");
end
return this.game_keyboard;
@@ -153,7 +153,7 @@ end
function this.update_scene_manager()
this.scene_manager = sdk.get_native_singleton("via.SceneManager");
if this.scene_manager == nil then
error_handler.report("singletons.update_scene_manager", "Failed to access Data: scene_manager");
error_handler.report("singletons.update_scene_manager", "Failed to Access Data: scene_manager");
end
return this.scene_manager;
@@ -162,7 +162,7 @@ end
function this.update_game_manager()
this.game_manager = sdk.get_managed_singleton("snow.SnowGameManager");
if this.game_manager == nil then
error_handler.report("singletons.update_game_manager", "Failed to access Data: game_manager");
error_handler.report("singletons.update_game_manager", "Failed to Access Data: game_manager");
end
return this.game_manager;
@@ -171,7 +171,7 @@ end
function this.update_servant_manager()
this.servant_manager = sdk.get_managed_singleton("snow.ai.ServantManager");
if this.servant_manager == nil then
error_handler.report("singletons.update_servant_manager", "Failed to access Data: servant_manager");
error_handler.report("singletons.update_servant_manager", "Failed to Access Data: servant_manager");
end
return this.servant_manager;
@@ -180,7 +180,7 @@ end
function this.update_otomo_manager()
this.otomo_manager = sdk.get_managed_singleton("snow.otomo.OtomoManager");
if this.otomo_manager == nil then
error_handler.report("singletons.update_otomo_manager", "Failed to access Data: otomo_manager");
error_handler.report("singletons.update_otomo_manager", "Failed to Access Data: otomo_manager");
end
return this.otomo_manager;
@@ -189,7 +189,7 @@ end
function this.update_long_sword_shell_manager()
this.long_sword_shell_manager = sdk.get_managed_singleton("snow.shell.LongSwordShellManager");
if this.long_sword_shell_manager == nil then
error_handler.report("singletons.update_long_sword_shell_manager", "Failed to access Data: long_sword_shell_manager");
error_handler.report("singletons.update_long_sword_shell_manager", "Failed to Access Data: long_sword_shell_manager");
end
return this.long_sword_shell_manager;
@@ -198,7 +198,7 @@ end
function this.update_light_bowgun_shell_manager()
this.light_bowgun_shell_manager = sdk.get_managed_singleton("snow.shell.LightBowgunShellManager");
if this.light_bowgun_shell_manager == nil then
error_handler.report("singletons.update_light_bowgun_shell_manager", "Failed to access Data: light_bowgun_shell_manager");
error_handler.report("singletons.update_light_bowgun_shell_manager", "Failed to Access Data: light_bowgun_shell_manager");
end
return this.light_bowgun_shell_manager;
@@ -207,7 +207,7 @@ end
function this.update_horn_shell_manager()
this.horn_shell_manager = sdk.get_managed_singleton("snow.shell.HornShellManager");
if this.horn_shell_manager == nil then
error_handler.report("singletons.update_horn_shell_manager", "Failed to access Data: horn_shell_manager");
error_handler.report("singletons.update_horn_shell_manager", "Failed to Access Data: horn_shell_manager");
end
return this.horn_shell_manager;

View File

@@ -74,14 +74,14 @@ function this.new_timer(callback, cooldown_seconds, start_offset_seconds)
this.timer_list[callback] = timer;
end
function this.new_delay_timer(callback, delay)
if callback == nil or delay == nil then
function this.new_delay_timer(callback, delay_seconds)
if callback == nil or delay_seconds == nil then
return;
end
local delay_timer = {};
delay_timer.callback = callback;
delay_timer.delay = delay;
delay_timer.delay = delay_seconds;
delay_timer.init_time = os.clock();
@@ -153,14 +153,14 @@ function this.update_quest_time()
local quest_time_elapsed_minutes = get_quest_elapsed_time_min_method:call(singletons.quest_manager);
if quest_time_elapsed_minutes == nil then
error_handler.report("time.update_quest_time", "Failed to access Data: quest_time_elapsed_minutes");
error_handler.report("time.update_quest_time", "Failed to Access Data: quest_time_elapsed_minutes");
else
this.elapsed_minutes = quest_time_elapsed_minutes;
end
local quest_time_total_elapsed_seconds = get_quest_elapsed_time_sec_method:call(singletons.quest_manager);
if quest_time_total_elapsed_seconds == nil then
error_handler.report("time.update_quest_time", "Failed to access Data: quest_time_total_elapsed_seconds");
error_handler.report("time.update_quest_time", "Failed to Access Data: quest_time_total_elapsed_seconds");
else
this.total_elapsed_seconds = quest_time_total_elapsed_seconds;
end

View File

@@ -36,7 +36,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
this.version = "2.6";
this.version = "2.7.1";
this.config_folder = "MHR Overlay\\configs\\";
this.current_config_value_file_name = "MHR Overlay\\config.json";
@@ -292,6 +292,20 @@ function this.init_default()
ctrl = false,
alt = false,
key = 0
},
buff_UI = {
shift = false,
ctrl = false,
alt = false,
key = 0
},
stats_UI = {
shift = false,
ctrl = false,
alt = false,
key = 0
}
}
},
@@ -306,18 +320,20 @@ function this.init_default()
dynamic_positioning = {
enabled = true,
max_distance = 300,
head_tracking = true,
opacity_falloff = true,
max_distance = 300,
world_offset = {
x = 0,
y = 3,
y = 1,
z = 0
},
viewport_offset = {
x = -50,
y = 0
y = -30
}
},
@@ -1008,23 +1024,24 @@ function this.init_default()
enabled = true,
settings = {
head_tracking = true,
hide_dead_or_captured = true,
render_highlighted_monster = true,
render_not_highlighted_monsters = true,
max_distance = 300,
opacity_falloff = true,
max_distance = 300,
time_limit = 15
},
world_offset = {
x = 0,
y = 6,
y = 2,
z = 0
},
viewport_offset = {
x = -100,
y = 0
y = -30
},
monster_name_label = {
@@ -7440,6 +7457,7 @@ function this.init_default()
enabled = false,
settings = {
head_tracking = true,
hide_inactive_creatures = true,
max_distance = 300,
opacity_falloff = true
@@ -7533,6 +7551,7 @@ function this.init_default()
deadly_poison = true,
stun = true,
paralysis = true,
falling_asleep = true,
sleep = true,
defense_down = true,
resistance_down = true,
@@ -7556,6 +7575,7 @@ function this.init_default()
mega_demondrug = true,
armorskin = true,
mega_armorskin = true,
might_seed = true,
demon_powder = true,
hardshell_powder = true,
gourmet_fish = true,
@@ -9199,7 +9219,7 @@ function this.load_configs()
table.insert(this.config_names, this.current_config_name);
table.insert(this.configs, this.current_config);
this.save(this.current_config_name, this.current_config);
this.save(string.format("%s\\%s.json", this.config_folder, this.current_config_name), this.current_config);
end
this.save_current_config_name();

View File

@@ -37,17 +37,17 @@ local package = package;
this.language_folder = "MHR Overlay\\languages\\";
-- this.traditional_chinese_ranges = {
-- this.chinese_ranges = {
-- 0x0020, 0x00FF, -- Basic Latin + Latin Supplement
-- 0x2000, 0x206F, -- General Punctuation
-- 0x2000, 0x206F, -- General Punctuations
-- 0x2E80, 0x2EFF, -- CJK Radicals Supplement
-- 0x3000, 0x303F, -- CJK Symbols and Punctuations
-- 0x31F0, 0x31FF, -- Katakana Phonetic Extensions
-- 0x3200, 0x4DBF, -- Enclosed CJK Letters and Months, CJK Compatibility, CJK Unified Ideographs Extension A
-- 0x4E00, 0x9FAF, -- CJK Unified Ideograms
-- 0x4E00, 0x9FFF, -- CJK Unified Ideograms
-- 0xF900, 0xFAFF, -- CJK Compatibility Ideographs
-- 0xFE30, 0xFE4F, -- CJK Compatibility Forms
-- 0xFF00, 0xFFEF, -- Half-width characters
-- 0
-- };
-- this.japanese_glyph_ranges = {
@@ -55,36 +55,34 @@ this.language_folder = "MHR Overlay\\languages\\";
-- 0x2000, 0x206F, -- General Punctuation
-- 0x2E80, 0x2EFF, -- CJK Radicals Supplement
-- 0x3000, 0x30FF, -- CJK Symbols and Punctuations, Hiragana, Katakana
-- 0x31F0, 0x31FF, -- Katakana Phonetic Extensions
-- 0x3200, 0x4DBF, -- Enclosed CJK Letters and Months, CJK Compatibility, CJK Unified Ideographs Extension A
-- 0x4E00, 0x9FAF, -- CJK Unified Ideograms
-- 0x31F0, 0x4DBF, -- Katakana Phonetic Extensions, Enclosed CJK Letters and Months, CJK Compatibility, CJK Unified Ideographs Extension A
-- 0x4E00, 0x9FFF, -- CJK Unified Ideograms
-- 0xF900, 0xFAFF, -- CJK Compatibility Ideographs
-- 0xFE30, 0xFE4F, -- CJK Compatibility Forms
-- 0xFF00, 0xFFEF, -- Half-width characters
-- 0
-- };
-- this.korean_glyph_ranges = {
-- 0x0020, 0x00FF, -- Basic Latin + Latin Supplement
-- 0x1100, 0x11FF, -- Hangul Jamo
-- 0x2000, 0x206F, -- General Punctuation
-- 0x2E80, 0x2EFF, -- CJK Radicals Supplement
-- 0x3000, 0x303F, -- CJK Symbols and Punctuations
-- 0x3130, 0x318F, -- Hangul Compatibility Jamo
-- 0x3200, 0x4DBF, -- Enclosed CJK Letters and Months, CJK Compatibility, CJK Unified Ideographs Extension A
-- 0x4E00, 0x9FFF, -- CJK Unified Ideograms
-- 0xAC00, 0xD7AF, -- Hangul Syllables
-- 0xF900, 0xFAFF, -- CJK Compatibility Ideographs
-- 0xFE30, 0xFE4F, -- CJK Compatibility Forms
-- 0xFF00, 0xFFEF, -- Half-width characters
-- 0
-- }
this.current_language = {};
this.default_language = {
font_name = "NotoSans-Bold.otf",
unicode_glyph_ranges = {
0x0020, 0x00FF, -- Basic Latin + Latin Supplement
0x0100, 0x017F, -- Latin Extended-A
0x0400, 0x052F, -- Cyrillic
0x1E00, 0x1EFF, -- Latin Extended Additional
0x2000, 0x206F, -- General Punctuation
0xFF00, 0xFFEF, -- Halfwidth and Fullwidth Forms
0
},
font_name = nil,
unicode_glyph_ranges = nil,
parts = {
head = "Head",
@@ -316,8 +314,8 @@ this.default_language = {
coalescence = "Coalescence",
counterstrike = "Counterstrike",
dereliction = "Dereliction",
dragon_conversion_elemental_attack_up = "Dragon Conversion Elem. Atk Up",
dragon_conversion_elemental_res_up = "Dragon Conversion Elem. Res Up",
dragon_conversion_elemental_attack_up = "Dragon Conversion: Elem. Atk Up",
dragon_conversion_elemental_res_up = "Dragon Conversion: Elem. Res Up",
dragonheart = "Dragonheart",
embolden = "Embolden",
frenzied_bloodlust = "Frenzied Bloodlust",
@@ -904,6 +902,8 @@ this.default_language = {
infinite_buffs_location = "Infinite Buffs Location",
effect_level = "Effect Level",
head_tracking = "Head Tracking"
},
};
@@ -961,9 +961,21 @@ function this.init_dependencies()
end
function this.init_module()
this.save_default();
this.load();
this.current_language = this.default_language;
this.default_language.font_name = "NotoSans-Bold.otf";
this.default_language.unicode_glyph_ranges = {
0x0020, 0x00FF, -- Basic Latin + Latin Supplement
0x0100, 0x024F, -- Latin Extended-A, Latin Extended-B,
0x0400, 0x052F, -- Cyrillic, Cyrillic Supplementary
0x1E00, 0x1EFF, -- Latin Extended Additional
0x2000, 0x206F, -- General Punctuation
0xFF00, 0xFFEF, -- Halfwidth and Fullwidth Forms
0
};
this.save_default();
end
return this;

View File

@@ -129,19 +129,19 @@ function this.update()
end
if singletons.player_manager == nil then
error_handler.report("player_info.update", "Failed to access Data: player_manager");
error_handler.report("player_info.update", "Failed to Access Data: player_manager");
return;
end
local master_player = find_master_player_method:call(singletons.player_manager);
if master_player == nil then
error_handler.report("player_info.update", "Failed to access Data: master_player");
error_handler.report("player_info.update", "Failed to Access Data: master_player");
return;
end
local master_player_data = get_player_data_method:call(master_player);
if master_player_data == nil then
error_handler.report("player_info.update", "Failed to access Data: master_player_data");
error_handler.report("player_info.update", "Failed to Access Data: master_player_data");
end
master_player_ref = master_player;
@@ -176,7 +176,7 @@ end
function this.update_generic(key, player_data, field)
local value = field:get_data(player_data);
if value == nil then
error_handler.report("player_info.update_generic", string.format("Failed to access Data: %s_value", key));
error_handler.report("player_info.update_generic", string.format("Failed to Access Data: %s_value", key));
return;
end
@@ -186,14 +186,14 @@ end
function this.update_resistances(player_data)
local resistance_element_array = resistance_element_field:get_data(player_data);
if resistance_element_array == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: resistance_element_array");
error_handler.report("player_info.update_resistances", "Failed to Access Data: resistance_element_array");
return;
end
-- Fire Resistance
local fire_resistance_single_valtype = get_value_method:call(resistance_element_array, 0);
if fire_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: fire_resistance_single_valtype");
error_handler.report("player_info.update_resistances", "Failed to Access Data: fire_resistance_single_valtype");
return;
end
@@ -201,14 +201,14 @@ function this.update_resistances(player_data)
if fire_resistance ~= nil then
this.list.fire_resistance = math.floor(fire_resistance);
else
error_handler.report("player_info.update_resistances", "Failed to access Data: fire_resistance");
error_handler.report("player_info.update_resistances", "Failed to Access Data: fire_resistance");
return;
end
-- Water Resistance
local water_resistance_single_valtype = get_value_method:call(resistance_element_array, 1);
if water_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: water_resistance_single_valtype");
error_handler.report("player_info.update_resistances", "Failed to Access Data: water_resistance_single_valtype");
return;
end
@@ -216,14 +216,14 @@ function this.update_resistances(player_data)
if water_resistance ~= nil then
this.list.water_resistance = math.floor(water_resistance);
else
error_handler.report("player_info.update_resistances", "Failed to access Data: water_resistance");
error_handler.report("player_info.update_resistances", "Failed to Access Data: water_resistance");
return;
end
-- Thunder Resistance
local thunder_resistance_single_valtype = get_value_method:call(resistance_element_array, 2);
if thunder_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: thunder_resistance_single_valtype");
error_handler.report("player_info.update_resistances", "Failed to Access Data: thunder_resistance_single_valtype");
return;
end
@@ -231,14 +231,14 @@ function this.update_resistances(player_data)
if thunder_resistance ~= nil then
this.list.thunder_resistance = math.floor(thunder_resistance);
else
error_handler.report("player_info.update_resistances", "Failed to access Data: thunder_resistance");
error_handler.report("player_info.update_resistances", "Failed to Access Data: thunder_resistance");
return;
end
-- Ice Resistance
local ice_resistance_single_valtype = get_value_method:call(resistance_element_array, 3);
if ice_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: ice_resistance_single_valtype");
error_handler.report("player_info.update_resistances", "Failed to Access Data: ice_resistance_single_valtype");
return;
end
@@ -246,14 +246,14 @@ function this.update_resistances(player_data)
if ice_resistance ~= nil then
this.list.ice_resistance = math.floor(ice_resistance);
else
error_handler.report("player_info.update_resistances", "Failed to access Data: ice_resistance");
error_handler.report("player_info.update_resistances", "Failed to Access Data: ice_resistance");
return;
end
-- Dragon Resistance
local dragon_resistance_single_valtype = get_value_method:call(resistance_element_array, 4);
if dragon_resistance_single_valtype == nil then
error_handler.report("player_info.update_resistances", "Failed to access Data: dragon_resistance_single_valtype");
error_handler.report("player_info.update_resistances", "Failed to Access Data: dragon_resistance_single_valtype");
return;
end
@@ -261,7 +261,7 @@ function this.update_resistances(player_data)
if dragon_resistance ~= nil then
this.list.dragon_resistance = math.floor(dragon_resistance);
else
error_handler.report("player_info.update_resistances", "Failed to access Data: dragon_resistance");
error_handler.report("player_info.update_resistances", "Failed to Access Data: dragon_resistance");
return;
end
end
@@ -285,7 +285,7 @@ end
function this.update_health(quest_player_base)
local vital = get_vital_method:call(master_player_data_ref);
if vital == nil then
error_handler.report("player_info.update_health", "Failed to access Data: vital");
error_handler.report("player_info.update_health", "Failed to Access Data: vital");
return;
end
@@ -299,7 +299,7 @@ function this.update_heroics(quest_player_base)
local is_predicament_power_up = is_predicament_power_up_method:call(master_player_ref);
if is_predicament_power_up == nil then
error_handler.report("player_info.update_heroics", "Failed to access Data: is_predicament_power_up");
error_handler.report("player_info.update_heroics", "Failed to Access Data: is_predicament_power_up");
return;
end
@@ -313,7 +313,7 @@ function this.update_dango_adrenaline(quest_player_base)
local is_kitchen_skill_predicament_powerup = is_kitchen_skill_predicament_powerup_method:call(master_player_ref);
if is_kitchen_skill_predicament_powerup == nil then
error_handler.report("player_info.update_dango_adrenaline", "Failed to access Data: is_kitchen_skill_predicament_powerup");
error_handler.report("player_info.update_dango_adrenaline", "Failed to Access Data: is_kitchen_skill_predicament_powerup");
return;
end

View File

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

View File

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

View File

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

View File

@@ -205,13 +205,13 @@ end
function this.update_health(enemy_damage_check)
local enemy = get_ref_enemy:call(enemy_damage_check);
if enemy == nil then
error_handler.report("monster_hook.update_health", "Failed to access Data: enemy");
error_handler.report("monster_hook.update_health", "Failed to Access Data: enemy");
return;
end
local is_large = is_boss_enemy_method:call(enemy);
if is_large == nil then
error_handler.report("monster_hook.update_health", "Failed to access Data: is_large");
error_handler.report("monster_hook.update_health", "Failed to Access Data: is_large");
return;
end
@@ -234,7 +234,7 @@ function this.update_stamina(stamina_param, stamina_sub)
local enemy = get_enemy_method:call(stamina_param);
if enemy == nil then
error_handler.report("monster_hook.update_stamina", "Failed to access Data: enemy");
error_handler.report("monster_hook.update_stamina", "Failed to Access Data: enemy");
return;
end

View File

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

View File

@@ -205,7 +205,7 @@ function this.sort_buffs(_displayed_buffs, cached_config)
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.timer < right.timer;
return left.name < right.name;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
@@ -217,7 +217,7 @@ function this.sort_buffs(_displayed_buffs, cached_config)
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.timer < right.timer;
return left.name < right.name;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
@@ -236,7 +236,7 @@ function this.sort_buffs(_displayed_buffs, cached_config)
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.timer > right.timer;
return left.name > right.name;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
@@ -248,7 +248,7 @@ function this.sort_buffs(_displayed_buffs, cached_config)
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.timer > right.timer;
return left.name > right.name;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
@@ -269,7 +269,7 @@ function this.sort_buffs(_displayed_buffs, cached_config)
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.duration < right.duration;
return left.name < right.name;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
@@ -281,7 +281,7 @@ function this.sort_buffs(_displayed_buffs, cached_config)
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.duration < right.duration;
return left.name < right.name;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
@@ -300,7 +300,7 @@ function this.sort_buffs(_displayed_buffs, cached_config)
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.duration > right.duration;
return left.name > right.name;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
@@ -312,7 +312,7 @@ function this.sort_buffs(_displayed_buffs, cached_config)
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.duration > right.duration;
return left.name > right.name;
elseif left.is_infinite then
return true;
elseif right.is_infinite then

View File

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

View File

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

View File

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

View File

@@ -145,6 +145,8 @@ this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
this.menu_font_changed = false;
this.config_name_input = "";
@@ -387,6 +389,7 @@ function this.draw()
local language_changed = false;
local modifiers_changed = false;
local modules_changed = false;
local hotkeys_changed = false;
local global_settings_changed = false;
local timer_delays_changed = false;
local small_monster_UI_changed = false;
@@ -422,7 +425,7 @@ function this.draw()
config_changed, apply_font_requested = this.draw_config();
modules_changed = this.draw_modules();
this.draw_hotkeys();
hotkeys_changed = this.draw_hotkeys();
global_settings_changed, modifiers_changed, timer_delays_changed, apply_font_requested, language_changed = this.draw_global_settings(apply_font_requested, config_changed);
small_monster_UI_changed = this.draw_small_monster_UI();
@@ -442,96 +445,6 @@ function this.draw()
imgui.new_line();
debug_changed = this.draw_debug();
-- local lorem_ipsum = [[
-- Japanese:
-- 個、えろつのはんエセコモニョ雲雲てなっけもいてのょり阿目手区きも模差露毛阿はら雲毛かくれめ二野なすなまよひか氏氏くっ瀬知魔んよ絵魔て列離日ね留差ほつれつえてゆせそそ、都、うし絵らにな根遊二雲以ゆ野目るヒカヤロ、オシレ遊擢ねてゆ等手津もえ。津阿みこえ知氏阿ンカカおぬやてと。
-- おせす尾樹目個二阿樹ねけゃもたら。おうょる阿雲けてろふ尾課二毛日ニュサのへひ課遊にらそほき離以ろひむもふそろは素日シキハモゅつ野知つせ毛舳ひ列留よせ御遊舳れつ、ねすんと譜保。以樹。夜津尾派露鵜り手手すやとれあろまめにて、こに列留魔知他列二樹ほ。はつに保知等てまゃ無夜とひけやへこ。
-- 素派目鵜ちうはえなエヘフレキ、派知他瀬列遊根区いな都留手けもつっそぬりいゆおふゅれもイタキホ無二コチクキやそるき野毛以そいはぬうめ御んせたくめ遊模魔つ鵜阿ほよほつ擢以露、等離譜ぬれ鵜ゆおきまうるかせ擢ひたフンユ。
-- 保ゆぬホノハスシカ以屋ら日模へたよ樹手手まお手根派御マツッセチカら、ヒョアレょへち保以屋瀬キョュナめにゆな樹舳毛手え鵜留等瀬ほえ夜区鵜根目名阿絵区日素めフルモョヌスリサクマテカ根鵜さおゆヒエサレ露日鵜留りすせいへたそりるきや個舳らそめっっ知二阿露きね課譜名けょひ根区列以樹個。列津以模ャセャサョみうえのらす鵜派舳。
-- 目個なふ、そゃ氏区、鵜瀬保以露遊やはみすき舳課保手舳津譜素個等くせうアメヨルラチヘ留素保手氏たえたお露瀬日毛野ちふ巣課瀬日留列ぬりにほゆ絵擢名模。ふの。っうつゆ、みょタノフカ目列巣舳手知けすん手魔、無雲の課ゅおんりょ。
-- 魔雲留課舳根舳か手素二はめ差ーャオシ津やちんなふやてもか列等以露つまえよ。はゆて擢露譜へねょ以区ねのへふもとゃえきナュユモトヌセ樹列知阿阿他列等みれとほルスナ。魔お区ゃゅね素遊ふにふ以個素日絵こもとれち。ゆゆっや阿絵ちネネむろ夜派等阿離知手氏るつねおきえ巣留夜派雲名目他ュノミサミキメウケヘ。
-- 氏毛かき夜鵜まのひよかひほねに他んんはし、しへ課氏模めなサシヌケミヘけんむりひめめえもこほよ。差根トャレムリテメへめメメ個差津らめのはょゃ巣えせく列名個舳もま個派るみめ根鵜、きすめ区瀬屋雲れ。鵜留譜夜ツリミふたれ個とい「めつょめこったゅふ」ゅ、すぬやら日区尾等手んひ模、マホセね絵絵コヤヌマ絵んんっへけなぬ野差課瀬ゅり絵等ウチイヌヘ樹、雲他ねろくす名無尾派手遊等区雲そほせるえ派列。
-- よそ津根差屋雲う夜舳野絵こさほえふろクヒはす目鵜っえンノネモソ尾野毛おむめ保日等夜ささえゃうあ列瀬ョイニケョセオウュレヘすすさめ、ぬちひぬはゅれしまろむ屋知まきぬむのひひの目津名二名尾無知め区津津瀬えくよほえっしえお目個留瀬毛譜二雲野知屋ぬ差無鵜のやゆアコハサシヤ根素手無、や模露ョヌヒムフクミ。
-- きまるふかいゅみ他夜都知手野雲サヨシ舳露。くち、野フノユタせおょち目課るれらつはッサウセモュムオンョ無尾列かりのこけろイネいまてめの、絵夜毛遊毛離差無以素課瀬日ゆこう素瀬シサスヒモン列擢はやせ留知名すさぬ。
-- 魔等むホカヨアるユチエリサ御都。素樹絵そたゃ擢個尾列ま無雲知名セイ譜津遊たち夜尾ゅっきたろん無模毛都遊ゆ名差。さ雲目ちゆゅんれ、素御やひい巣擢樹つあそ魔、模都以巣舳すれ鵜以「鵜ヘノメヨメヘにさ」もちかしみっはまひゅねほら鵜保尾氏派かろるめあ。遊目樹目鵜毛はせなへめ。
-- English:
-- abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
-- French:
-- abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ Àà Ââ Ææ Çç Éé Èè Êê Ëë Îî Ïï Ôô Œœ Ùù Ûû Üü Ÿÿ
-- German:
-- abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ Ä Ü Ö ß
-- Italian:
-- abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
-- Spanish:
-- abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ Ññ
-- Russian:
-- абвгдеёжзийклмнопрстуфцчшщъыьэюя АБВГДЕЁЖЗИЙКЛМНОПРСТУФЦЧШЩЪЫЬЭЮЯ
-- Polish:
-- abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ Ąą Ćć Ęę Łł Ńń Óó Śś Źź Żż é
-- Brazilian Portuguese:
-- abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
-- Korean
-- ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎㅏ ㅑ ㅓ ㅕ ㅗ ㅛ ㅜ ㅠ ㅡ ㅣㄲ ㄸ ㅃ ㅉ ㅆ ㅢ ㅚ ㅐ ㅟ ㅔ ㅒ ㅖ ㅘ ㅝ ㅙ ㅞ
-- 기관과 간에 이 것이다. 풀밭에 부패뿐이다, 보라, 봄바람이다. 희망의 황금시대다, 못할 앞이 지혜는 공자는 평화스러운 그리하였는가? 긴지라 청춘이 없으면 바이며, 우리의 길지 미묘한 무엇을 끝에 것은 사는가 끓는다. 인류의 그것을 같이.
-- 같으며, 물방아 예수는 풍부하게 이상의 있으랴? 그들의 용기가 튼튼하며, 사라지지 보내는 내려온 위하여서 꽃이 것이다. 심장의 피가 고행을 무한한 끝까지 보라. 같이. 그리하였는가? 무엇이 넣는 물방아 봄바람이다. 이것은 청춘의 있는 이것이다. 못할 방지하는 구하기 능히 속에 피다.
-- 찾아다녀도. 쓸쓸한 생생하며. 찾아다녀도. 튼튼하며. 이상의 피다, 눈에 새가 피부가 그들의 그들의 작고 것은 운다. 부패를 인생에 이상은 보배를 그리하였는가? 품었기 창공에 작고 커다란 용기가 것이 것이다, 쓸쓸하랴?이것을 심장의 긴지라 착목한는 것이다.
-- 속에 우리 그들은 광야에서 인생에 노년에게서 청춘이 동산에는 것이다. 얼음과 할지니. 길지 낙원을 대한 말이다. 뭇 피가 이것이다, 풍부하게 바이며. 살았으며. 스며들어 착목한는 이상은 우리 밥을 그들은 평화스러운 용기가 칼이다, 방황하여도.
-- 얼음과 장식하는 아니한 있다. 소금이라 온갖 너의 것이다. 눈이 동력은 그들의 이상. 끓는 뼈 이상은 싶이 보내는 인간의 뿐이다, 피어나는 착목한는 이것이야말로 사랑의 쓸쓸하랴? 가치를 그것을 놀이 싸인 무엇이 이것이다. 곧 않는 풀밭에 것은 용감하고 낙원을 황금시대다. 몸이 인간의 교향악이다. 너의 반짝이는 우리의 방지하는 아름다우냐? 트고.
-- 힘차게 이 같으며, 앞이 동력은 인생의 바로 심장은 바이며. 역사를 고동을 약동하다. 실현에 투명하되 별과 낙원을 듣는다. 구하지 같은 노년에게서 열락의 이상의 있으며, 같지 인간은 위하여. 못할 가치를 인생을 그들은 무엇이 내려온 때문이다, 하는 꽃 인간의 같이 미인을 인생을 이것이다.
-- 용감하고 때에. 가치를 기관과 그러므로 사랑의 이상은 살았으며. 방황하였으며. 그들은 방황하여도. 그들은 철환하였는가 운다. 끝에 동산에는 눈이 풀이 동력은 품에 주는 일월과 아름다우냐? 가는 같은 하여도 그리하였는가? 주는 몸이 위하여. 목숨을 이것은 곧 피부가 날카로우나 위하여 청춘의 위하여. 약동하다.
-- 불러 과실이 가는 쓸쓸하랴? 보내는 것이 뜨거운지라. 것이다. 가치를 인간은 풀이 이상 하여도 없으면. 산야에 위하여. 피고. 모래뿐일 낙원을 바이며, 우리 작고 바로 많이 있는 위하여서, 길지 피가 시들어 힘차게 주며.
-- 아름답고 그들에게 꽃 그러므로 약동하다. 만물은 품었기 따뜻한 석가는 봄바람이다. 천지는 크고 것이다. 구할 이상의 무한한 눈이 것이다. 그와 이상의 사랑의 바로 보배를 가지에 동력은 열매를 사막이다. 같이 것이 할지니. 인생에 기쁘며. 방황하였으며.
-- 우리의 찬미를 없으면 아니더면. 그러므로 인생에 얼마나 그것은 것이다. 바이며. 얼음에 그들의 시들어 하였으며, 것이다. 천자만홍이 품었기 청춘이 끓는 않는 끓는다. 같이 발휘하기 열매를 예수는 인생의 때문이다, 얼음과 낙원을 우리의 없으면 용기가 이것이야말로 돋고.
-- Chinese Traditional:
-- 枝測歳就大治昔室帯師象験庁編共。識問好加者元位指領化書今情。究都高転一質年語聞療土児任記流成週照竹定。房宿案月新報謙欺上健済逮毎子祭。籍成未移違行彩暮者多謝略文。提校意社接停報適増交匠氏室絶。導購説瞬彼花町提談氷計票記載聞防需。暮貢毎水細文東降健与回勢。年読治教来詳指答販名殺平芸民必和。薬幹読輔断事那主放合変端英利走。
-- 団無次住時問多事権少全般執理凱声透浄記。警国消報提造幾事連野投算伊見。活対真覧意近話大上日長点。提催思展産一可子心参幅一犠。標問鳴開台前由有違済任木必乗岐問費氏応録。基集引具下応日続年官者局両覧能種傷次。変年南調年流撃張代延見幕金物逆上記決地。誰事路専金拓数質大法判図部石。野親二画減頭絞選同支著全意策賭落必能。
-- 個記郎梅政格棋明北情偉支禁趣択旋議。切気功首日始格科打浮夕位端木。更房野実瞬保拠融元図航申憂機攻堀界景。権政闘催偽各遅果五面方代谷。覧登睦輪味身属博同二思裂開治。聞足事年人督治進開済郷疑芸用多。化事惑火広想三報共図京場一罪述合音。名町差導電国費陸済足景時口遺再写搬。者禁宅茶議手天保内術結生社受健問開。
-- 光話今世日員月供団載社池委撮観実造北規。一特通従貴和上美井買板婦放開記市総。図枝向旅刻野欲内放賛好千率初。初戦掛要保社際転目読以急活変反読。産程士旬介抗吉両過国芸社着民若所務田南。会立名尚講派話教事中自種浜。治謙績信歓土力松笑会億果併。路研害多響測求阿知高超学和影念。能提腹国碁問思全除札図講敗円張任北況。
-- 術高歌道転認情女必浜阪起者外。属芋辞土理性聞東音供昭豊裕。料三実玉短別上立童守庭終京社点協開。処模歩棚員要育通人筑変品転。覚並稿災答瑞用能見特阪受洲退。青般見販住悲識教東回福川演取確康対学足。開町体之室売世態略味器庁転北習。誰属役編研扱玲宰勝世利稿痕見話携問。午使際季回成読写子陸校稿図変逃時樹。
-- 健要南浜紹神名元田価散細後療熱郎顧。調現速清質宅対把辺急建所必強題演有見。柴別聴試互行門浩詐左話判私由屋。意類打円全施引権豊共打禁再雪。場含納験圧目表説磯開利世家東積月断在極業。勝撮意道面間打低転彰終鳥徹。著北案社族来破転大力収見運任企。有富景油購石超支自神報直雪追真根。約車万視作男審弱書化求住人要連元極。
-- 載改阜新社保聞活辺盤司間情渡問。登第実止領著義望施変模彼務説企。里科遊事事訴病危芸留際年芸掲問。告著営元住課提遂対呼問暮成。提発下限時軋小主百北明合聴社告送肪響際。林査今浪米特宇会北購玲健。記語吉延恋流終社費士西標下検器北家担。理極載価問木世鱸籍治勢浮芸予可百。道敗組解住人真始日美幹録送件子治。
-- 面好沿上全業物速効炭時題界表変省磁因。警学際年準訳時俊用岡鋭呼漢。賞団堂情開体性子転権貴顔考裁崩経。舞詰池碁田魚経紀情宮動施再。新嶋乳引済下守提公生春際目。蔵家代通資町者量村法年東仕題。合親講好治秋根主表必背元方碁任江部医。権海献停完定質対済興造載非禁納独野池時。最長覧事堂定創人検新経要企。賞経上関工写時声繊園人恥大。
-- 疎舎岡実約来新心境広長腹本蓮茎気宅費。警間表川舞傾考暴圏無量顔召検密需惑領。平朝使一在士面地芸要問海街了連。館想児作入新謙的質木極原辞田係摘営。生車賞石破載記枚川弁題立重禁。着演郷任和総能天講中全転才部。層愛続好務橋疾土健給節球情合。業国場鈴圏断埼画検判氏品購情写者校思。図技衝舞強読画再上査趣発府挑侵。
-- 部国為経番弘超首応理貸駆面橋以内。打郵西版庁車支特手世用面。運崎王穏小込画録量全度彦綿視補囲提的辺解。掲子乳百面自紀古測市際変年月。目京協投大講子経跡備株年更職室。為鈴門輸田学碁花法国務理。津再合紹覧岳容春言馬通返。銭著問転写命久広覧葉女提供覧日第精戻王点。評白付難担変切見雨潔速八。席長日倉魚開玲理料報男本業負文一衛。
-- Chinese Simplified:
-- 住們投水覺很你音行行定把
-- 古特縣人同,能的開電際認所友吸賣子如目眼它時李了做廣加令另受香大有積我喜士成施到山不且回推。
-- 病是大西參的金:期那代、對一物而書車書濟熱她。現美影海當投中一生放準時鄉機;起遠富行……我在開們住這,為明調主情今……決像民覺起政管是性:集物萬屋師後時但或裝邊裡腳,支而可論不沒毒業難統息精上父適。
-- 告像經功滿一我爭我收學有代。始狀裝園時火型隨不精?
-- 第我光:倒沒平成想這清對朋目才設平業。配力我學,條一上何法語氣會倒著有美時人下也創進道香臺水著們府。
-- 解裡什;甚國對經吃上個了白?要來北維外就古要何大作女由會為資,臺師爭一主機大時像遠百究到下目往有生怕運上回,房會成不岸術員一,國我親得。隊是下過分人來才體風精,對答水球制也,沒當吸在女王此存頭黃人建有性、不樣影、關的國課:通當作平何你得早獨以面處,傳林票由是麗的也朋決顧我想各術有險,商日則山的不配那話在黨進相許一們春界企、政會家視業,門行差加那當野此不林打願。一強起,住大熱總成百花。
-- Arabic:
-- ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي ء
-- لان هنا؟ عجّل العسكري أن, تم يبق يرتبط اسبوعين وباستثناء, فصل قامت العمليات التغييرات أي. غير هُزم وسوء بداية مع, أجزاء المدن ثم عرض. أم كلا غضون حاملات, وبدأت المبرمة تشيكوسلوفاكيا أي الى. ومطالبة واندونيسيا، جعل ثم.
-- قد بتطويق مقاومة الإقتصادي ومن. أن عملية يعادل وفي, خلاف جديداً ضرب ثم, و الشهير التبرعات بحق. لم اسبوعين ألمانيا الجنرال بين. أملاً الإيطالية عدد ما, تونس انتهت أم وفي, ثمّة وبدأت استراليا، تلك أي. ثم إبّان عالمية قُدُماً بعد. يبق عجّل بقسوة الشرقي عن.
-- أن أخر أسابيع الأسيوي, ٣٠ الحكم مسارح الحيلولة تعد. بلا تمهيد الثالث وقوعها، لم, ضرب خطّة مرجع تجهيز ثم. سابق أواخر حكومة ومن بـ, أن يبق المواد ليتسنّى بريطانيا, ألمّ تاريخ السفن تم جهة. والنفيس والفلبين أسر بل.
-- دون هو الدمج انتباه بريطانيا،, ثم حصدت ساعة واعتلاء شيء. شيء تم أدنى وسمّيت المتاخمة, إيو عل لعدم مشروط مقاطعة. بل تطوير حاملات بمباركة وصل, كما قُدُماً بالولايات بـ. دون الثالث، للإتحاد وحلفاؤها أم, أمّا والديون الأثناء، ذلك قد.
-- ما أحكم مواقعها لان. الأرواح لتقليعة بـ الا, مايو ومحاولة المتساقطة، فقد تم. لم بخطوط تشيكوسلوفاكيا ذات, بلا لم مساعدة الجنرال, ان خطّة للأراضي ذلك. لم كانت كانتا تغييرات بحق. دون أي عشوائية باستحداث.
-- ذلك بقصف البشريةً كل. كنقطة اعلان بالولايات من بين, أخذ وسوء الساحل لم, بقيادة إتفاقية الإثنان لم لها. وبدأت السيطرة المشتّتون عل بين, عن إعادة انتهت للإتحاد أخر. إذ ليرتفع وتتحمّل عدد. مايو فكانت كما كل.
-- قد مارد الإقتصادية حول, حتى أم وأزيز مساعدة الأرضية, بحق ما خطّة وتتحمّل. بـ غير تنفّس البرية ولكسمبورغ, تم جهة عقبت أسيا. تعداد المارق بمحاولة بـ الى, لم أعمال عشوائية بين. أم حيث هُزم أثره، ليركز, لأداء المارق فصل ما. أسر لم لهيمنة السيطرة. ما إيو لإنعدام التقليدي وبالتحديد،.
-- كان كل خلاف موالية, بال ثم غريمه بتحدّي. هذا هو وترك تحرير, فصل من فرنسية واستمرت. مع قبضتهم ويكيبيديا فصل. ما فهرست وحلفاؤها بلا, كما مع ٠٨٠٤ وسمّيت استطاعوا.
-- أن ويعزى الشهيرة بالرّغم تحت. مع أسر رئيس ماليزيا، المتساقطة،, فمرّ اليابان الحيلولة كلا في. دار ما غرّة، يتعلّق, موالية المواد لبلجيكا، في بين, أحكم المجتمع التنازلي تم ومن. يبق جديدة إعادة مكثّفة ان, لإعادة جزيرتي واعتلاء بال ما. الخاسرة بالإنزال ما يتم, اسبوعين الأثناء، حيث أم.
-- فشكّل الإتفاقية قد كان, ابتدعها وفنلندا بل انه. في جهة تاريخ احداث تكتيكاً, أمام للصين إختار وتم إذ. أما بأضرار الربيع، عشوائية من, وشعار نهاية كُلفة بل تحت. هو أخذ اوروبا الأسيوي قُدُماً. دون في للصين فرنسا أدوات. غير تسبب الذود الأحمر ثم.
-- Latin American Spanish:
-- abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ Ññ
-- ]];
-- imgui.text(lorem_ipsum);
imgui.pop_font();
imgui.end_window();
@@ -607,7 +520,7 @@ function this.draw()
this.reload_font();
end
if window_changed or modules_changed or global_settings_changed or small_monster_UI_changed or large_monster_dynamic_UI_changed or
if window_changed or modules_changed or hotkeys_changed or global_settings_changed or small_monster_UI_changed or large_monster_dynamic_UI_changed or
large_monster_static_UI_changed or large_monster_highlighted_UI_changed or time_UI_changed or damage_meter_UI_changed or
endemic_life_UI_changed or buff_UI_changed or stats_UI_changed or modifiers_changed or config_changed or debug_changed then
config.save_current();
@@ -743,6 +656,8 @@ function this.draw_modules()
end
function this.draw_hotkeys()
local config_changed = false;
if imgui.tree_node(language.current_language.customization_menu.hotkeys) then
if this.all_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then
@@ -751,25 +666,26 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.all_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.all_UI.alt = false;
this.all_UI_waiting_for_key = false;
config_changed = true;
end
elseif imgui.button(language.current_language.customization_menu.all_UI) then
local is_any_other_waiting = this.small_monster_UI_waiting_for_key or
this.large_monster_UI_waiting_for_key or
this.large_monster_dynamic_UI_waiting_for_key or
this.large_monster_static_UI_waiting_for_key or
this.large_monster_highlighted_UI_waiting_for_key or
this.time_UI_waiting_for_key or
this.damage_meter_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.all_UI_waiting_for_key = true;
end
this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end
imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.all_UI));
if this.small_monster_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.small_monster_UI.key = 0;
@@ -777,24 +693,25 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.small_monster_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.small_monster_UI.alt = false;
this.small_monster_UI_waiting_for_key = false;
config_changed = true;
end
elseif imgui.button(language.current_language.customization_menu.small_monster_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or
this.large_monster_UI_waiting_for_key or
this.large_monster_dynamic_UI_waiting_for_key or
this.large_monster_static_UI_waiting_for_key or
this.large_monster_highlighted_UI_waiting_for_key or
this.time_UI_waiting_for_key or
this.damage_meter_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key = true;
end
this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end
imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.small_monster_UI));
if this.large_monster_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_UI.key = 0;
@@ -802,24 +719,25 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_UI.alt = false;
this.large_monster_UI_waiting_for_key = false;
config_changed = true;
end
elseif imgui.button(language.current_language.customization_menu.large_monster_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or
this.small_monster_UI_waiting_for_key or
this.large_monster_dynamic_UI_waiting_for_key or
this.large_monster_static_UI_waiting_for_key or
this.large_monster_highlighted_UI_waiting_for_key or
this.time_UI_waiting_for_key or
this.damage_meter_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key = true;
end
this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end
imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.large_monster_UI));
if this.large_monster_dynamic_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_dynamic_UI.key = 0;
@@ -827,25 +745,25 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_dynamic_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_dynamic_UI.alt = false;
this.large_monster_dynamic_UI_waiting_for_key = false;
config_changed = true;
end
elseif imgui.button(language.current_language.customization_menu.large_monster_dynamic_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or
this.small_monster_UI_waiting_for_key or
this.large_monster_UI_waiting_for_key or
this.large_monster_static_UI_waiting_for_key or
this.large_monster_highlighted_UI_waiting_for_key or
this.time_UI_waiting_for_key or
this.damage_meter_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key = true;
end
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end
imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.large_monster_dynamic_UI));
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers
.large_monster_dynamic_UI));
if this.large_monster_static_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_static_UI.key = 0;
@@ -853,25 +771,25 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_static_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_static_UI.alt = false;
this.large_monster_static_UI_waiting_for_key = false;
config_changed = true;
end
elseif imgui.button(language.current_language.customization_menu.large_monster_static_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or
this.small_monster_UI_waiting_for_key or
this.large_monster_UI_waiting_for_key or
this.large_monster_dynamic_UI_waiting_for_key or
this.large_monster_highlighted_UI_waiting_for_key or
this.time_UI_waiting_for_key or
this.damage_meter_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = true;
end
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end
imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.large_monster_static_UI));
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers
.large_monster_static_UI));
if this.large_monster_highlighted_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_highlighted_UI.key = 0;
@@ -879,23 +797,25 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_highlighted_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.large_monster_highlighted_UI.alt = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
config_changed = true;
end
elseif imgui.button(language.current_language.customization_menu.large_monster_highlighted_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or
this.small_monster_UI_waiting_for_key or
this.large_monster_UI_waiting_for_key or
this.large_monster_dynamic_UI_waiting_for_key or
this.large_monster_static_UI_waiting_for_key or
this.time_UI_waiting_for_key or
this.damage_meter_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = true;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end
end
imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers
.large_monster_highlighted_UI));
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.large_monster_highlighted_UI));
if this.time_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.time_UI.key = 0;
@@ -903,24 +823,25 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.time_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.time_UI.alt = false;
this.time_UI_waiting_for_key = false;
config_changed = true;
end
elseif imgui.button(language.current_language.customization_menu.time_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or
this.small_monster_UI_waiting_for_key or
this.large_monster_UI_waiting_for_key or
this.large_monster_dynamic_UI_waiting_for_key or
this.large_monster_static_UI_waiting_for_key or
this.large_monster_highlighted_UI_waiting_for_key or
this.damage_meter_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = true;
end
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end
imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.time_UI));
if this.damage_meter_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.damage_meter_UI.key = 0;
@@ -928,24 +849,25 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.damage_meter_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.damage_meter_UI.alt = false;
this.damage_meter_UI_waiting_for_key = false;
config_changed = true;
end
elseif imgui.button(language.current_language.customization_menu.damage_meter_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or
this.small_monster_UI_waiting_for_key or
this.large_monster_UI_waiting_for_key or
this.large_monster_dynamic_UI_waiting_for_key or
this.large_monster_static_UI_waiting_for_key or
this.large_monster_highlighted_UI_waiting_for_key or
this.time_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = true;
end
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end
imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.damage_meter_UI));
if this.endemic_life_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.endemic_life_UI.key = 0;
@@ -953,26 +875,81 @@ function this.draw_hotkeys()
config.current_config.global_settings.hotkeys_with_modifiers.endemic_life_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.endemic_life_UI.alt = false;
this.endemic_life_UI_waiting_for_key = false;
config_changed = true;
end
elseif imgui.button(language.current_language.customization_menu.endemic_life_UI) then
local is_any_other_waiting = this.all_UI_waiting_for_key or
this.small_monster_UI_waiting_for_key or
this.large_monster_UI_waiting_for_key or
this.large_monster_dynamic_UI_waiting_for_key or
this.large_monster_static_UI_waiting_for_key or
this.large_monster_highlighted_UI_waiting_for_key or
this.time_UI_waiting_for_key or
this.endemic_life_UI_waiting_for_key;
if not is_any_other_waiting then
this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = true;
end
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = false;
end
imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.endemic_life_UI));
if this.buff_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.buff_UI.key = 0;
config.current_config.global_settings.hotkeys_with_modifiers.buff_UI.ctrl = false;
config.current_config.global_settings.hotkeys_with_modifiers.buff_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.buff_UI.alt = false;
this.buff_UI_waiting_for_key = false;
config_changed = true;
end
elseif imgui.button(language.current_language.customization_menu.buff_UI) then
this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = true;
this.stats_UI_waiting_for_key = false;
end
imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.buff_UI));
if this.stats_UI_waiting_for_key then
if imgui.button(language.current_language.customization_menu.press_any_key) then
config.current_config.global_settings.hotkeys_with_modifiers.stats_UI.key = 0;
config.current_config.global_settings.hotkeys_with_modifiers.stats_UI.ctrl = false;
config.current_config.global_settings.hotkeys_with_modifiers.stats_UI.shift = false;
config.current_config.global_settings.hotkeys_with_modifiers.stats_UI.alt = false;
this.stats_UI_waiting_for_key = false;
config_changed = true;
end
elseif imgui.button(language.current_language.customization_menu.stats_UI) then
this.all_UI_waiting_for_key = false;
this.small_monster_UI_waiting_for_key = false;
this.large_monster_UI_waiting_for_key = false;
this.large_monster_dynamic_UI_waiting_for_key = false;
this.large_monster_static_UI_waiting_for_key = false;
this.large_monster_highlighted_UI_waiting_for_key = false;
this.time_UI_waiting_for_key = false;
this.damage_meter_UI_waiting_for_key = false;
this.endemic_life_UI_waiting_for_key = false;
this.buff_UI_waiting_for_key = false;
this.stats_UI_waiting_for_key = true;
end
imgui.same_line();
imgui.text(keyboard.get_hotkey_name(config.current_config.global_settings.hotkeys_with_modifiers.stats_UI));
imgui.tree_pop();
end
return config_changed;
end
function this.draw_global_settings(apply_font_requested, language_changed)
@@ -1361,6 +1338,11 @@ function this.draw_small_monster_UI()
config_changed = config_changed or changed;
changed, cached_config.dynamic_positioning.head_tracking = imgui.checkbox(
language.current_language.customization_menu.head_tracking, cached_config.dynamic_positioning.head_tracking);
config_changed = config_changed or changed;
changed, cached_config.dynamic_positioning.opacity_falloff =
imgui.checkbox(language.current_language.customization_menu.opacity_falloff,
cached_config.dynamic_positioning.opacity_falloff);
@@ -1502,6 +1484,11 @@ function this.draw_large_monster_dynamic_UI()
config_changed = config_changed or changed;
if imgui.tree_node(language.current_language.customization_menu.settings) then
changed, cached_config.settings.head_tracking = imgui.checkbox(
language.current_language.customization_menu.head_tracking, cached_config.settings.head_tracking);
config_changed = config_changed or changed;
changed, cached_config.settings.hide_dead_or_captured = imgui.checkbox(
language.current_language.customization_menu.hide_dead_or_captured, cached_config.settings.hide_dead_or_captured);
@@ -2323,6 +2310,11 @@ function this.draw_endemic_life_UI()
config_changed = config_changed or changed;
if imgui.tree_node(language.current_language.customization_menu.settings) then
changed, cached_config.settings.head_tracking = imgui.checkbox(
language.current_language.customization_menu.head_tracking, cached_config.settings.head_tracking);
config_changed = config_changed or changed;
changed, cached_config.settings.hide_inactive_creatures = imgui.checkbox(
language.current_language.customization_menu.hide_inactive_creatures, cached_config.settings.hide_inactive_creatures);

View File

@@ -165,6 +165,7 @@
"global_position_modifier": "Global Position Modifier",
"global_scale_modifier": "Global Scale Modifier",
"global_settings": "Global Settings",
"head_tracking": "Head Tracking",
"health": "Health",
"health_anomaly_filter": "Health + Anomaly Core",
"health_break_anomaly_filter": "Health + Break + Anomaly Core",
@@ -553,8 +554,8 @@
"coalescence": "Coalescence",
"counterstrike": "Counterstrike",
"dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res Up",
"dragon_conversion_elemental_attack_up": "Dragon Conversion: Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"frenzied_bloodlust": "Frenzied Bloodlust",
@@ -601,7 +602,7 @@
32,
255,
256,
383,
591,
1024,
1327,
7680,

View File

@@ -165,6 +165,7 @@
"global_position_modifier": "全体的な位置の調整",
"global_scale_modifier": "全体的なスケールの調整",
"global_settings": "全体設定",
"head_tracking": "Head Tracking",
"health": "体力",
"health_anomaly_filter": "Health + Anomaly Core",
"health_break_anomaly_filter": "Health + Break + Anomaly Core",
@@ -553,8 +554,8 @@
"coalescence": "Coalescence",
"counterstrike": "Counterstrike",
"dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res Up",
"dragon_conversion_elemental_attack_up": "Dragon Conversion: Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"frenzied_bloodlust": "Frenzied Bloodlust",
@@ -602,12 +603,18 @@
255,
8192,
8303,
11904,
12031,
12288,
12543,
12784,
12799,
19903,
19968,
40879,
40959,
63744,
64255,
65072,
65103,
65280,
65519,
0

View File

@@ -165,6 +165,7 @@
"global_position_modifier": "전역 위치 배율",
"global_scale_modifier": "전역 크기 배율",
"global_settings": "전역 설정",
"head_tracking": "Head Tracking",
"health": "체력",
"health_anomaly_filter": "체력 + 괴이핵",
"health_break_anomaly_filter": "체력 + 파괴 + 괴이핵",
@@ -553,8 +554,8 @@
"coalescence": "Coalescence",
"counterstrike": "Counterstrike",
"dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res Up",
"dragon_conversion_elemental_attack_up": "Dragon Conversion: Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"frenzied_bloodlust": "Frenzied Bloodlust",
@@ -604,10 +605,22 @@
4607,
8192,
8303,
11904,
12031,
12288,
12351,
12592,
12687,
12800,
19903,
19968,
40959,
44032,
55215,
63744,
64255,
65072,
65103,
65280,
65519,
0

View File

@@ -165,6 +165,7 @@
"global_position_modifier": "Глобальный модификатор расположения",
"global_scale_modifier": "Глобальный модификатор размера",
"global_settings": "Общие настройки",
"head_tracking": "Отслеживание головы",
"health": "Здоровье",
"health_anomaly_filter": "Здоровье + Ядро аномалии",
"health_break_anomaly_filter": "Здоровье + Повреждение + Ядро аномалии",
@@ -409,7 +410,7 @@
"stinkmink": "Пахучка",
"yellow_lampsquid": "Жлт. Лампокальм."
},
"font_name": "NotoSansKR-Bold.otf",
"font_name": "NotoSans-Bold.otf",
"item_buffs": {
"adamant_seed": "Адамант. зерно",
"armor_ammo": "Защитные снаряды",
@@ -600,14 +601,20 @@
"unicode_glyph_ranges": [
32,
255,
256,
383,
1024,
1241,
1327,
7680,
7935,
8192,
8303,
65280,
65519,
0,
8303,
64255,
65072,
65103,
65280,
65519,
0

View File

@@ -165,6 +165,7 @@
"global_position_modifier": "全局位置更改",
"global_scale_modifier": "全局比例更改",
"global_settings": "全局设定",
"head_tracking": "Head Tracking",
"health": "生命",
"health_anomaly_filter": "Health + Anomaly Core",
"health_break_anomaly_filter": "Health + Break + Anomaly Core",
@@ -553,8 +554,8 @@
"coalescence": "Coalescence",
"counterstrike": "Counterstrike",
"dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res Up",
"dragon_conversion_elemental_attack_up": "Dragon Conversion: Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"frenzied_bloodlust": "Frenzied Bloodlust",
@@ -602,12 +603,18 @@
255,
8192,
8303,
11904,
12031,
12288,
12543,
12784,
12799,
12351,
12800,
19903,
19968,
40879,
40959,
63744,
64255,
65072,
65103,
65280,
65519,
0

View File

@@ -165,6 +165,7 @@
"global_position_modifier": "全域位置更改",
"global_scale_modifier": "全域比例更改",
"global_settings": "全域設定",
"head_tracking": "Head Tracking",
"health": "血量",
"health_anomaly_filter": "Health + Anomaly Core",
"health_break_anomaly_filter": "Health + Break + Anomaly Core",
@@ -553,8 +554,8 @@
"coalescence": "Coalescence",
"counterstrike": "Counterstrike",
"dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res Up",
"dragon_conversion_elemental_attack_up": "Dragon Conversion: Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"frenzied_bloodlust": "Frenzied Bloodlust",
@@ -602,12 +603,18 @@
255,
8192,
8303,
11904,
12031,
12288,
12543,
12784,
12799,
12351,
12800,
19903,
19968,
40879,
40959,
63744,
64255,
65072,
65103,
65280,
65519,
0

Binary file not shown.

Binary file not shown.