mirror of
https://github.com/GreenComfyTea/MHR-Overlay.git
synced 2026-01-30 07:18:03 -08:00
Compare commits
5 Commits
6c2d09b505
...
3e66b920ef
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3e66b920ef | ||
|
|
7f38532026 | ||
|
|
b805d88205 | ||
|
|
a100932a02 | ||
|
|
692e911617 |
@@ -69,13 +69,20 @@ local get_value_method = system_array_type_def:get_method("GetValue(System.Int32
|
|||||||
function this.new(type, key, name, level, duration)
|
function this.new(type, key, name, level, duration)
|
||||||
local is_infinite = false;
|
local is_infinite = false;
|
||||||
|
|
||||||
level = level or 1;
|
if name == nil then
|
||||||
|
name = utils.constants.uninitialized_string;
|
||||||
|
end
|
||||||
|
|
||||||
if duration == nil then
|
if duration == nil then
|
||||||
duration = 0;
|
duration = 0;
|
||||||
|
end
|
||||||
|
|
||||||
|
if duration == 0 then
|
||||||
is_infinite = true;
|
is_infinite = true;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
level = level or 1;
|
||||||
|
|
||||||
local buff = {};
|
local buff = {};
|
||||||
|
|
||||||
buff.type = type;
|
buff.type = type;
|
||||||
@@ -145,7 +152,7 @@ function this.update()
|
|||||||
if master_player_data ~= nil then
|
if master_player_data ~= nil then
|
||||||
consumables.update(master_player_data);
|
consumables.update(master_player_data);
|
||||||
endemic_life_buffs.update(master_player_data);
|
endemic_life_buffs.update(master_player_data);
|
||||||
skills.update(master_player_data);
|
skills.update(master_player, master_player_data);
|
||||||
dangos.update(master_player_data);
|
dangos.update(master_player_data);
|
||||||
else
|
else
|
||||||
error_handler.report("buffs.update", "Failed to access Data: master_player_data");
|
error_handler.report("buffs.update", "Failed to access Data: master_player_data");
|
||||||
@@ -174,10 +181,6 @@ function this.update()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.draw(buff, buff_UI, position_on_screen, opacity_scale)
|
|
||||||
buff_UI_entity.draw(buff, buff_UI, position_on_screen, opacity_scale);
|
|
||||||
end
|
|
||||||
|
|
||||||
function this.update_timer(buff, timer)
|
function this.update_timer(buff, timer)
|
||||||
if timer < 0 then
|
if timer < 0 then
|
||||||
timer = 0;
|
timer = 0;
|
||||||
@@ -194,6 +197,11 @@ function this.update_timer(buff, timer)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function this.draw(buff, buff_UI, position_on_screen, opacity_scale)
|
||||||
|
buff_UI_entity.draw(buff, buff_UI, position_on_screen, opacity_scale);
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
function this.init_dependencies()
|
function this.init_dependencies()
|
||||||
config = require("MHR_Overlay.Misc.config");
|
config = require("MHR_Overlay.Misc.config");
|
||||||
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
|
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ this.list = {
|
|||||||
mega_armorskin = nil,
|
mega_armorskin = nil,
|
||||||
might_seed = nil,
|
might_seed = nil,
|
||||||
adamant_seed = nil,
|
adamant_seed = nil,
|
||||||
|
demon_powder = nil,
|
||||||
hardshell_powder = nil,
|
hardshell_powder = nil,
|
||||||
immunizer = nil,
|
immunizer = nil,
|
||||||
dash_juice = nil,
|
dash_juice = nil,
|
||||||
@@ -109,13 +110,69 @@ function this.update(player_data)
|
|||||||
|
|
||||||
this.update_demondrug(player_data, item_parameter);
|
this.update_demondrug(player_data, item_parameter);
|
||||||
this.update_armorskin(player_data, item_parameter);
|
this.update_armorskin(player_data, item_parameter);
|
||||||
this.update_might_seed(player_data, item_parameter);
|
|
||||||
this.update_adamant_seed(player_data, item_parameter);
|
|
||||||
this.update_demon_powder(player_data, item_parameter);
|
|
||||||
this.update_hardshell_powder(player_data, item_parameter);
|
|
||||||
this.update_immunizer(player_data, item_parameter);
|
|
||||||
this.update_dash_juice(player_data, item_parameter);
|
|
||||||
this.update_gourmet_fish(player_data, item_parameter);
|
this.update_gourmet_fish(player_data, item_parameter);
|
||||||
|
|
||||||
|
this.update_generic("might_seed", player_data, item_parameter,
|
||||||
|
atk_up_buff_second_field, atk_up_buff_second_timer_field, might_seed_timer_field);
|
||||||
|
|
||||||
|
this.update_generic("adamant_seed", player_data, item_parameter,
|
||||||
|
def_up_buff_second_field, def_up_buff_second_timer_field, adamant_seed_timer_field);
|
||||||
|
|
||||||
|
this.update_generic("demon_powder", player_data, item_parameter,
|
||||||
|
atk_up_item_second_field, atk_up_item_second_timer_field, demondrug_powder_timer_field);
|
||||||
|
|
||||||
|
this.update_generic("hardshell_powder", player_data, item_parameter,
|
||||||
|
def_up_item_second_field, def_up_item_second_timer_field, armorskin_powder_timer_field);
|
||||||
|
|
||||||
|
this.update_generic("immunizer", player_data, item_parameter,
|
||||||
|
nil, vitalizer_timer_field, vitalizer_timer_const_field);
|
||||||
|
|
||||||
|
this.update_generic("dash_juice", player_data, item_parameter,
|
||||||
|
nil, stamina_up_buff_second_timer_field, stamina_up_buff_second_field);
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.update_generic(consumable_key, player_data, item_parameter, value_field, timer_field, timer_const_value_field)
|
||||||
|
if value_field ~= nil then
|
||||||
|
|
||||||
|
local value = value_field:get_data(player_data);
|
||||||
|
if value == nil then
|
||||||
|
error_handler.report("consumables.update_generic_with_value", string.format("Failed to access Data: %s_value", consumable_key));
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
if value == 0 then
|
||||||
|
this.list[consumable_key] = nil;
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local timer = timer_field:get_data(player_data);
|
||||||
|
if timer == nil then
|
||||||
|
error_handler.report("consumables.update_generic_with_value", string.format("Failed to access Data: %s_timer", consumable_key));
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
if value_field == nil and timer == 0 then
|
||||||
|
this.list[consumable_key] = nil;
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local consumable = this.list[consumable_key];
|
||||||
|
if consumable == nil then
|
||||||
|
local timer_const_value = timer_const_value_field:get_data(item_parameter);
|
||||||
|
if timer_const_value == nil then
|
||||||
|
error_handler.report("consumables.update_generic_with_value", string.format("Failed to access Data: %s_timer_const_value", consumable_key));
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local name = language.current_language.consumables[consumable_key];
|
||||||
|
|
||||||
|
consumable = buffs.new(buffs.types.consumable, consumable_key, name, 1, timer_const_value);
|
||||||
|
this.list[consumable_key] = consumable;
|
||||||
|
else
|
||||||
|
buffs.update_timer(consumable, timer / 60);
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.update_demondrug(player_data, item_parameter)
|
function this.update_demondrug(player_data, item_parameter)
|
||||||
@@ -215,205 +272,6 @@ function this.update_armorskin(player_data, item_parameter)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.update_might_seed(player_data, item_parameter)
|
|
||||||
local might_seed_value = atk_up_buff_second_field:get_data(player_data);
|
|
||||||
if might_seed_value == nil then
|
|
||||||
error_handler.report("consumables.update_might_seed", "Failed to access Data: might_seed_value");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
if might_seed_value == 0 then
|
|
||||||
this.list.might_seed = nil;
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local might_seed_timer = atk_up_buff_second_timer_field:get_data(player_data);
|
|
||||||
if might_seed_timer == nil then
|
|
||||||
error_handler.report("consumables.update_might_seed", "Failed to access Data: might_seed_timer");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local buff = this.list.might_seed;
|
|
||||||
if buff == nil then
|
|
||||||
local might_seed_timer_const_value = might_seed_timer_field:get_data(item_parameter);
|
|
||||||
if might_seed_timer_const_value == nil then
|
|
||||||
error_handler.report("consumables.update_might_seed", "Failed to access Data: might_seed_timer_const_value");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local name = language.current_language.consumables.might_seed;
|
|
||||||
|
|
||||||
buff = buffs.new(buffs.types.consumable, "might_seed", name, 1, might_seed_timer_const_value);
|
|
||||||
this.list.might_seed = buff;
|
|
||||||
else
|
|
||||||
buffs.update_timer(buff, might_seed_timer / 60);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function this.update_adamant_seed(player_data, item_parameter)
|
|
||||||
local adamant_seed_value = def_up_buff_second_field:get_data(player_data);
|
|
||||||
if adamant_seed_value == nil then
|
|
||||||
error_handler.report("consumables.update_adamant_seed", "Failed to access Data: adamant_seed_value");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
if adamant_seed_value == 0 then
|
|
||||||
this.list.adamant_seed = nil;
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local adamant_seed_timer = def_up_buff_second_timer_field:get_data(player_data);
|
|
||||||
if adamant_seed_timer == nil then
|
|
||||||
error_handler.report("consumables.update_adamant_seed", "Failed to access Data: adamant_seed_timer");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local buff = this.list.adamant_seed;
|
|
||||||
if buff == nil then
|
|
||||||
local adamant_seed_timer_const_value = adamant_seed_timer_field:get_data(item_parameter);
|
|
||||||
if adamant_seed_timer_const_value == nil then
|
|
||||||
error_handler.report("consumables.update_adamant_seed", "Failed to access Data: adamant_seed_timer_const_value");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local name = language.current_language.consumables.adamant_seed;
|
|
||||||
|
|
||||||
buff = buffs.new(buffs.types.consumable, "adamant_seed", name, 1, adamant_seed_timer_const_value);
|
|
||||||
this.list.adamant_seed = buff;
|
|
||||||
else
|
|
||||||
buffs.update_timer(buff, adamant_seed_timer / 60);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function this.update_demon_powder(player_data, item_parameter)
|
|
||||||
local demon_powder_value = atk_up_item_second_field:get_data(player_data);
|
|
||||||
if demon_powder_value == nil then
|
|
||||||
error_handler.report("consumables.update_demon_powder", "Failed to access Data: demon_powder_value");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
if demon_powder_value == 0 then
|
|
||||||
this.list.demon_powder = nil;
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local demon_powder_timer = atk_up_item_second_timer_field:get_data(player_data);
|
|
||||||
if demon_powder_timer == nil then
|
|
||||||
error_handler.report("consumables.update_demon_powder", "Failed to access Data: demon_powder_timer");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local buff = this.list.demon_powder;
|
|
||||||
if buff == nil then
|
|
||||||
local demon_powder_timer_const_value = demondrug_powder_timer_field:get_data(item_parameter);
|
|
||||||
if demon_powder_timer_const_value == nil then
|
|
||||||
error_handler.report("consumables.update_demon_powder", "Failed to access Data: demon_powder_timer_const_value");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local name = language.current_language.consumables.demon_powder;
|
|
||||||
|
|
||||||
buff = buffs.new(buffs.types.consumable, "demon_powder", name, demon_powder_timer_const_value);
|
|
||||||
this.list.demon_powder = buff;
|
|
||||||
else
|
|
||||||
buffs.update_timer(buff, demon_powder_timer / 60);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function this.update_hardshell_powder(player_data, item_parameter)
|
|
||||||
local hardshell_powder_value = def_up_item_second_field:get_data(player_data);
|
|
||||||
if hardshell_powder_value == nil then
|
|
||||||
error_handler.report("consumables.update_hardshell_powder", "Failed to access Data: hardshell_powder_value");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
if hardshell_powder_value == 0 then
|
|
||||||
this.list.hardshell_powder = nil;
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local hardshell_powder_timer = def_up_item_second_timer_field:get_data(player_data);
|
|
||||||
if hardshell_powder_timer == nil then
|
|
||||||
error_handler.report("consumables.update_hardshell_powder", "Failed to access Data: hardshell_powder_timer");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local buff = this.list.hardshell_powder;
|
|
||||||
if buff == nil then
|
|
||||||
local demon_powder_timer_const_value = armorskin_powder_timer_field:get_data(item_parameter);
|
|
||||||
if demon_powder_timer_const_value == nil then
|
|
||||||
error_handler.report("consumables.update_hardshell_powder", "Failed to access Data: demon_powder_timer_const_value");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local name = language.current_language.consumables.hardshell_powder;
|
|
||||||
|
|
||||||
buff = buffs.new(buffs.types.consumable, "hardshell_powder", name, 1, demon_powder_timer_const_value);
|
|
||||||
this.list.hardshell_powder = buff;
|
|
||||||
else
|
|
||||||
buffs.update_timer(buff, hardshell_powder_timer / 60);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function this.update_immunizer(player_data, item_parameter)
|
|
||||||
local immunizer_timer = vitalizer_timer_field:get_data(player_data);
|
|
||||||
if immunizer_timer == nil then
|
|
||||||
error_handler.report("consumables.update_immunizer", "Failed to access Data: immunizer_timer");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
if immunizer_timer == 0 then
|
|
||||||
this.list.immunizer = nil;
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local buff = this.list.immunizer;
|
|
||||||
if buff == nil then
|
|
||||||
local immunizer_timer_const_value = vitalizer_timer_const_field:get_data(item_parameter);
|
|
||||||
if immunizer_timer_const_value == nil then
|
|
||||||
error_handler.report("consumables.update_immunizer", "Failed to access Data: immunizer_timer_const_value");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local name = language.current_language.consumables.immunizer;
|
|
||||||
|
|
||||||
buff = buffs.new(buffs.types.consumable, "immunizer", name, 1, immunizer_timer_const_value);
|
|
||||||
this.list.immunizer = buff;
|
|
||||||
else
|
|
||||||
buffs.update_timer(buff, immunizer_timer / 60);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function this.update_dash_juice(player_data, item_parameter)
|
|
||||||
local dash_juice_timer = stamina_up_buff_second_timer_field:get_data(player_data);
|
|
||||||
if dash_juice_timer == nil then
|
|
||||||
error_handler.report("consumables.update_dash_juice", "Failed to access Data: dash_juice_timer");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
if dash_juice_timer == 0 then
|
|
||||||
this.list.dash_juice = nil;
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local buff = this.list.dash_juice;
|
|
||||||
|
|
||||||
if buff == nil then
|
|
||||||
local dash_juice_timer_const_value = stamina_up_buff_second_field:get_data(item_parameter);
|
|
||||||
if dash_juice_timer_const_value == nil then
|
|
||||||
error_handler.report("consumables.update_dash_juice", "Failed to access Data: dash_juice_timer_const_value");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local name = language.current_language.consumables.dash_juice;
|
|
||||||
|
|
||||||
buff = buffs.new(buffs.types.consumable, "dash_juice", name, 1, dash_juice_timer_const_value);
|
|
||||||
this.list.dash_juice = buff;
|
|
||||||
else
|
|
||||||
buffs.update_timer(buff, dash_juice_timer / 60);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function this.update_gourmet_fish(player_data, item_parameter)
|
function this.update_gourmet_fish(player_data, item_parameter)
|
||||||
local gourmet_fish_timer = fish_regene_enable_field:get_data(player_data);
|
local gourmet_fish_timer = fish_regene_enable_field:get_data(player_data);
|
||||||
if gourmet_fish_timer == nil then
|
if gourmet_fish_timer == nil then
|
||||||
|
|||||||
@@ -110,33 +110,34 @@ local time_field = music_data_type_def:get_field("_Time");
|
|||||||
|
|
||||||
function this.update(melody_data_table)
|
function this.update(melody_data_table)
|
||||||
for lua_index, melody_data in ipairs(melody_data_table) do
|
for lua_index, melody_data in ipairs(melody_data_table) do
|
||||||
if melody_data == "" then
|
if melody_data ~= "" then
|
||||||
goto continue;
|
this.update_melody_effect(lua_index, melody_data);
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function this.update_melody_effect(lua_index, melody_data)
|
||||||
local melody_timer = time_field:get_data(melody_data);
|
local melody_timer = time_field:get_data(melody_data);
|
||||||
if melody_timer == nil then
|
if melody_timer == nil then
|
||||||
error_handler.report("melody_effects.update", "Failed to access Data: melody_timer No. " .. tostring(lua_index - 1));
|
error_handler.report("melody_effects.update", "Failed to access Data: melody_timer No. " .. tostring(lua_index - 1));
|
||||||
goto continue;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
if melody_timer == 0 then
|
if melody_timer == 0 then
|
||||||
this.list[lua_index] = nil;
|
this.list[lua_index] = nil;
|
||||||
goto continue;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local buff = this.list[lua_index];
|
local melody_effect = this.list[lua_index];
|
||||||
if buff == nil then
|
if melody_effect == nil then
|
||||||
local key = melody_effect_keys[lua_index];
|
local melody_effect_key = melody_effect_keys[lua_index];
|
||||||
local name = language.current_language.melody_effects[key];
|
local name = language.current_language.melody_effects[melody_effect_key];
|
||||||
|
|
||||||
buff = buffs.new(buffs.types.melody_effect, key, name, 1, melody_timer / 60);
|
melody_effect = buffs.new(buffs.types.melody_effect, melody_effect_key, name, 1, melody_timer / 60);
|
||||||
this.list[lua_index] = buff;
|
this.list[lua_index] = melody_effect;
|
||||||
else
|
else
|
||||||
buffs.update_timer(buff, melody_timer / 60);
|
buffs.update_timer(melody_effect, melody_timer / 60);
|
||||||
end
|
|
||||||
|
|
||||||
::continue::
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -47,8 +47,37 @@ this.list = {
|
|||||||
kushala_daora_soul = nil,
|
kushala_daora_soul = nil,
|
||||||
intrepid_heart = nil,
|
intrepid_heart = nil,
|
||||||
dereliction = nil,
|
dereliction = nil,
|
||||||
|
latent_power = nil,
|
||||||
|
wind_mantle = nil,
|
||||||
|
grinder_s = nil,
|
||||||
|
counterstrike = nil,
|
||||||
|
affinity_sliding = nil,
|
||||||
|
coalescence = nil,
|
||||||
|
adrenaline_rush = nil,
|
||||||
|
wall_runner = nil,
|
||||||
|
offensive_guard = nil,
|
||||||
|
hellfire_cloak = nil,
|
||||||
|
agitator = nil,
|
||||||
|
furious = nil
|
||||||
};
|
};
|
||||||
|
|
||||||
|
local burst_breakpoint = 5;
|
||||||
|
local kushara_daora_soul_breakpoint = 5;
|
||||||
|
local intrepid_heart_minimal_value = 400;
|
||||||
|
local dereliction_breakpoints = {100, 50};
|
||||||
|
|
||||||
|
local wind_mantle_duration = 15;
|
||||||
|
local wind_mantle_breakpoints = { 20, 10 }; -- Sword & Shield, Lance, Hammer, Switch Axe, Insect Glaive, Long Sword, Hunting Horn
|
||||||
|
local wind_mantle_special_breakpoints = {
|
||||||
|
[0] = { 10, 5 }, -- Great Sword
|
||||||
|
[3] = { 60, 30 }, -- Light Bowgun
|
||||||
|
[4] = { 60, 30 }, -- Heavy Bowgun
|
||||||
|
[6] = { 30, 15 }, -- Gunlance
|
||||||
|
[9] = { 40, 20 }, -- Dual Blades
|
||||||
|
[11] = { 30, 15 }, -- Charge Blade
|
||||||
|
[13] = { 60, 30 }, -- Bow
|
||||||
|
}
|
||||||
|
|
||||||
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
|
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
|
||||||
local get_player_data_method = player_manager_type_def:get_method("get_PlayerData");
|
local get_player_data_method = player_manager_type_def:get_method("get_PlayerData");
|
||||||
local get_ref_item_parameter_method = player_manager_type_def:get_method("get_RefItemParameter");
|
local get_ref_item_parameter_method = player_manager_type_def:get_method("get_RefItemParameter");
|
||||||
@@ -67,115 +96,135 @@ local hyakuryu_dragon_power_up_timer_field = player_data_type_def:get_field("_Hy
|
|||||||
local equip_skill_223_accumulator_field = player_data_type_def:get_field("_EquipSkill223Accumulator");
|
local equip_skill_223_accumulator_field = player_data_type_def:get_field("_EquipSkill223Accumulator");
|
||||||
-- Derelection
|
-- Derelection
|
||||||
local symbiosis_skill_lost_vital_field = player_data_type_def:get_field("_SymbiosisSkillLostVital");
|
local symbiosis_skill_lost_vital_field = player_data_type_def:get_field("_SymbiosisSkillLostVital");
|
||||||
|
-- Grinder (S)
|
||||||
|
local brand_new_sharpness_adjust_up_timer_field = player_data_type_def:get_field("_BrandNewSharpnessAdjustUpTimer");
|
||||||
|
-- Counterstrike
|
||||||
|
local counterattack_powerup_timer_field = player_data_type_def:get_field("_CounterattackPowerupTimer");
|
||||||
|
-- Affinity Sliding
|
||||||
|
local sliding_powerup_timer_field = player_data_type_def:get_field("_SlidingPowerupTimer");
|
||||||
|
-- Coalescence
|
||||||
|
local disaster_turn_powerup_timer_field = player_data_type_def:get_field("_DisasterTurnPowerUpTimer");
|
||||||
|
-- Adrenaline Rush
|
||||||
|
local equip_skill_208_atk_up_field = player_data_type_def:get_field("_EquipSkill208_AtkUpTimer");
|
||||||
|
-- Wall Runner
|
||||||
|
local wall_run_powerup_timer_field = player_data_type_def:get_field("_WallRunPowerupTimer");
|
||||||
|
-- Offensive Guard
|
||||||
|
local equip_skill_036_timer_field = player_data_type_def:get_field("_EquipSkill_036_Timer");
|
||||||
|
-- Hellfire Cloak
|
||||||
|
local onibi_powerup_timer_field = player_data_type_def:get_field("_OnibiPowerUpTiemr");
|
||||||
|
-- Agitator
|
||||||
|
local challenge_timer_field = player_data_type_def:get_field("_ChallengeTimer");
|
||||||
|
-- Furious
|
||||||
|
local furious_skill_stamina_buff_second_timer_field = player_data_type_def:get_field("_FuriousSkillStaminaBuffSecondTimer");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
local player_base_type_def = sdk.find_type_definition("snow.player.PlayerBase");
|
||||||
|
local player_weapon_type_field = player_base_type_def:get_field("_playerWeaponType");
|
||||||
|
|
||||||
|
-- Latent Power
|
||||||
|
local power_freedom_timer_field = player_base_type_def:get_field("_PowerFreedomTimer");
|
||||||
|
-- Protective Polish
|
||||||
|
local sharpness_gauge_boost_timer_field = player_base_type_def:get_field("_SharpnessGaugeBoostTimer");
|
||||||
|
|
||||||
|
local player_quest_base_type_def = sdk.find_type_definition("snow.player.PlayerQuestBase");
|
||||||
|
-- Wind Mantle
|
||||||
|
local equip_skill_226_attack_count_field = player_quest_base_type_def:get_field("_EquipSkill226AttackCount");
|
||||||
|
local equip_skill_226_attack_off_timer_field = player_quest_base_type_def:get_field("_EquipSkill226AttackOffTimer");
|
||||||
|
-- Heaven-Sent
|
||||||
|
local is_active_equip_skill_230_method = player_quest_base_type_def:get_method("isActiveEquipSkill230");
|
||||||
|
|
||||||
local system_array_type_def = sdk.find_type_definition("System.Array");
|
local system_array_type_def = sdk.find_type_definition("System.Array");
|
||||||
local length_method = system_array_type_def:get_method("get_Length");
|
local length_method = system_array_type_def:get_method("get_Length");
|
||||||
local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)");
|
local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)");
|
||||||
|
|
||||||
function this.update(player_data)
|
function this.update(player, player_data)
|
||||||
local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
|
local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
|
||||||
if item_parameter == nil then
|
if item_parameter == nil then
|
||||||
error_handler.report("skills.update", "Failed to access Data: item_parameter");
|
error_handler.report("skills.update", "Failed to access Data: item_parameter");
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
this.update_burst(player_data);
|
|
||||||
this.update_kushala_daora_soul(player_data);
|
|
||||||
this.update_intrepid_heart(player_data);
|
|
||||||
this.update_dereliction(player_data);
|
this.update_dereliction(player_data);
|
||||||
|
this.update_wind_mantle(player);
|
||||||
|
this.update_heaven_sent(player);
|
||||||
|
|
||||||
--xy = string.format("%s\n%s", player_data._Attack, player_data._SymbiosisSkillLostVital);
|
this.update_generic("burst", player_data, rengeki_power_up_count_field, rengeki_power_up_timer_field, nil, burst_breakpoint);
|
||||||
|
this.update_generic("kushala_daora_soul", player_data,
|
||||||
|
hyakuryu_dragon_power_up_count_field, hyakuryu_dragon_power_up_timer_field, nil, kushara_daora_soul_breakpoint);
|
||||||
|
this.update_generic("intrepid_heart", player_data, equip_skill_223_accumulator_field, nil, intrepid_heart_minimal_value, nil, true);
|
||||||
|
this.update_generic("latent_power", player, nil, power_freedom_timer_field);
|
||||||
|
this.update_generic("protective_polish", player, nil, sharpness_gauge_boost_timer_field);
|
||||||
|
this.update_generic("grinder_s", player_data, nil, brand_new_sharpness_adjust_up_timer_field);
|
||||||
|
this.update_generic("counterstrike", player_data, nil, counterattack_powerup_timer_field);
|
||||||
|
this.update_generic("affinity_sliding", player_data, nil, sliding_powerup_timer_field);
|
||||||
|
this.update_generic("coalescence", player_data, nil, disaster_turn_powerup_timer_field);
|
||||||
|
this.update_generic("adrenaline_rush", player_data, nil, equip_skill_208_atk_up_field);
|
||||||
|
this.update_generic("wall_runner", player_data, nil, wall_run_powerup_timer_field);
|
||||||
|
this.update_generic("offensive_guard", player_data, nil, equip_skill_036_timer_field);
|
||||||
|
this.update_generic("hellfire_cloak", player_data, nil, onibi_powerup_timer_field);
|
||||||
|
this.update_generic("agitator", player_data, nil, challenge_timer_field, nil, nil, true);
|
||||||
|
this.update_generic("furious", player_data, nil, furious_skill_stamina_buff_second_timer_field);
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.update_burst(player_data)
|
function this.update_generic(skill_key, timer_owner, value_field, timer_field, minimal_value, breakpoint, is_infinite)
|
||||||
local burst_value = rengeki_power_up_count_field:get_data(player_data);
|
minimal_value = minimal_value or 1;
|
||||||
if burst_value == nil then
|
breakpoint = breakpoint or 1000000;
|
||||||
error_handler.report("skills.update_burst", "Failed to access Data: burst_value");
|
if is_infinite == nil then is_infinite = false; end
|
||||||
|
|
||||||
|
local level = 1;
|
||||||
|
|
||||||
|
if value_field ~= nil then
|
||||||
|
|
||||||
|
local value = value_field:get_data(timer_owner);
|
||||||
|
if value == nil then
|
||||||
|
error_handler.report("skills.update_generic", string.format("Failed to access Data: %s_value", skill_key));
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
if burst_value == 0 then
|
if value < minimal_value then
|
||||||
this.list.burst = nil;
|
this.list[skill_key] = nil;
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local burst_timer = rengeki_power_up_timer_field:get_data(player_data);
|
if value >= breakpoint then
|
||||||
if burst_timer == nil then
|
level = 2;
|
||||||
error_handler.report("skills.update_burst", "Failed to access Data: burst_timer");
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local timer;
|
||||||
|
if timer_field ~= nil then
|
||||||
|
timer = timer_field:get_data(timer_owner);
|
||||||
|
if timer == nil then
|
||||||
|
error_handler.report("skills.update_generic", string.format("Failed to access Data: %s_timer", skill_key));
|
||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local skill_level = 1;
|
if value_field == nil and timer == 0 then
|
||||||
if burst_value >= 5 then
|
this.list[skill_key] = nil;
|
||||||
skill_level = 2;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local buff = this.list.burst;
|
timer = timer / 60;
|
||||||
if buff == nil then
|
end
|
||||||
local name = language.current_language.skills.burst;
|
|
||||||
|
|
||||||
buff = buffs.new(buffs.types.skill, "burst", name, skill_level, burst_timer / 60);
|
local skill = this.list[skill_key];
|
||||||
this.list.burst = buff;
|
if skill == nil then
|
||||||
|
local name = language.current_language.skills[skill_key];
|
||||||
|
|
||||||
|
if is_infinite then
|
||||||
|
timer = nil;
|
||||||
|
end
|
||||||
|
|
||||||
|
skill = buffs.new(buffs.types.skill, skill_key, name, level, timer);
|
||||||
|
this.list[skill_key] = skill;
|
||||||
else
|
else
|
||||||
buff.level = skill_level;
|
skill.level = level;
|
||||||
buffs.update_timer(buff, burst_timer / 60);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function this.update_kushala_daora_soul(player_data)
|
if not is_infinite then
|
||||||
local kushala_daora_soul_value = hyakuryu_dragon_power_up_count_field:get_data(player_data);
|
buffs.update_timer(skill, timer);
|
||||||
if kushala_daora_soul_value == nil then
|
|
||||||
error_handler.report("skills.update_kushala_daora_soul", "Failed to access Data: kushala_daora_soul_value");
|
|
||||||
return;
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if kushala_daora_soul_value == 0 then
|
|
||||||
this.list.kushala_daora_soul = nil;
|
|
||||||
this.list.kushala_daora_soul_2 = nil;
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local kushala_daora_soul_timer = hyakuryu_dragon_power_up_timer_field:get_data(player_data);
|
|
||||||
if kushala_daora_soul_timer == nil then
|
|
||||||
error_handler.report("skills.update_kushala_daora_soul", "Failed to access Data: kushala_daora_soul_timer");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local skill_level = 1;
|
|
||||||
if kushala_daora_soul_value >= 5 then
|
|
||||||
skill_level = 2;
|
|
||||||
end
|
|
||||||
|
|
||||||
local buff = this.list.kushala_daora_soul;
|
|
||||||
if buff == nil then
|
|
||||||
local name = language.current_language.skills.kushala_daora_soul;
|
|
||||||
|
|
||||||
buff = buffs.new(buffs.types.skill, "kushala_daora_soul", name, skill_level, kushala_daora_soul_timer / 60);
|
|
||||||
this.list.kushala_daora_soul = buff;
|
|
||||||
else
|
|
||||||
buff.level = skill_level;
|
|
||||||
buffs.update_timer(buff, kushala_daora_soul_timer / 60);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function this.update_intrepid_heart(player_data)
|
|
||||||
local intrepid_heart_value = equip_skill_223_accumulator_field:get_data(player_data);
|
|
||||||
if intrepid_heart_value == nil then
|
|
||||||
error_handler.report("skills.update_intrepid_heart", "Failed to access Data: intrepid_heart_value");
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
if intrepid_heart_value < 400 then
|
|
||||||
this.list.intrepid_heart = nil;
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
local buff = this.list.intrepid_heart;
|
|
||||||
if buff == nil then
|
|
||||||
local name = language.current_language.skills.intrepid_heart;
|
|
||||||
|
|
||||||
buff = buffs.new(buffs.types.skill, "intrepid_heart", name, 1);
|
|
||||||
this.list.intrepid_heart = buff;
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -191,21 +240,95 @@ function this.update_dereliction(player_data)
|
|||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
local skill_level = 1;
|
local level = 1;
|
||||||
if dereliction_value >= 100 then
|
for index, breakpoint in ipairs(dereliction_breakpoints) do
|
||||||
skill_level = 3;
|
if dereliction_value >= breakpoint then
|
||||||
elseif dereliction_value >= 50 then
|
level = 4 - index;
|
||||||
skill_level = 2;
|
break;
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local buff = this.list.dereliction;
|
local skill = this.list.dereliction;
|
||||||
if buff == nil then
|
if skill == nil then
|
||||||
local name = language.current_language.skills.dereliction;
|
local name = language.current_language.skills.dereliction;
|
||||||
|
|
||||||
buff = buffs.new(buffs.types.skill, "dereliction", name, skill_level);
|
skill = buffs.new(buffs.types.skill, "dereliction", name, level);
|
||||||
this.list.dereliction = buff;
|
this.list.dereliction = skill;
|
||||||
else
|
else
|
||||||
buff.level = skill_level;
|
skill.level = level;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.update_wind_mantle(player)
|
||||||
|
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");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
if wind_mantle_timer == 0 then
|
||||||
|
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");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local weapon_type = player_weapon_type_field:get_data(player);
|
||||||
|
if player == nil then
|
||||||
|
error_handler.report("skills.update_wind_mantle", "Failed to access Data: weapon_type");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local breakpoints = wind_mantle_breakpoints;
|
||||||
|
for weapon_type_index, special_breakpoints in pairs(wind_mantle_special_breakpoints) do
|
||||||
|
if weapon_type == weapon_type_index then
|
||||||
|
breakpoints = special_breakpoints;
|
||||||
|
break;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local level = 1;
|
||||||
|
for index, breakpoint in ipairs(breakpoints) do
|
||||||
|
if wind_mantle_value >= breakpoint then
|
||||||
|
level = 4 - index;
|
||||||
|
break;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local buff = this.list.wind_mantle;
|
||||||
|
if buff == nil then
|
||||||
|
local name = language.current_language.skills.wind_mantle;
|
||||||
|
|
||||||
|
buff = buffs.new(buffs.types.skill, "wind_mantle", name, level, wind_mantle_duration);
|
||||||
|
this.list.wind_mantle = buff;
|
||||||
|
else
|
||||||
|
buff.level = level;
|
||||||
|
buffs.update_timer(buff, wind_mantle_duration - (wind_mantle_timer / 60));
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function this.update_heaven_sent(player)
|
||||||
|
local is_heaven_sent_active = is_active_equip_skill_230_method:call(player);
|
||||||
|
if is_heaven_sent_active == nil then
|
||||||
|
error_handler.report("skills.update_heaven_sent", "Failed to access Data: is_heaven_sent_active");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
if not is_heaven_sent_active then
|
||||||
|
this.list.heaven_sent = nil;
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
|
local buff = this.list.heaven_sent;
|
||||||
|
if buff == nil then
|
||||||
|
local name = language.current_language.skills.heaven_sent;
|
||||||
|
|
||||||
|
buff = buffs.new(buffs.types.skill, "heaven_sent", name, 1);
|
||||||
|
this.list.heaven_sent = buff;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ local drawing;
|
|||||||
local language;
|
local language;
|
||||||
local players;
|
local players;
|
||||||
local error_handler;
|
local error_handler;
|
||||||
|
local utils;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -56,8 +57,8 @@ function this.new(id, name, level, type)
|
|||||||
|
|
||||||
non_player.type = type;
|
non_player.type = type;
|
||||||
|
|
||||||
non_player.join_time = -1;
|
non_player.join_time = utils.constants.uninitialized_int;
|
||||||
non_player.first_hit_time = -1;
|
non_player.first_hit_time = utils.constants.uninitialized_int;
|
||||||
non_player.dps = 0;
|
non_player.dps = 0;
|
||||||
|
|
||||||
non_player.small_monsters = players.init_damage_sources()
|
non_player.small_monsters = players.init_damage_sources()
|
||||||
@@ -409,6 +410,7 @@ function this.init_dependencies()
|
|||||||
language = require("MHR_Overlay.Misc.language");
|
language = require("MHR_Overlay.Misc.language");
|
||||||
players = require("MHR_Overlay.Damage_Meter.players");
|
players = require("MHR_Overlay.Damage_Meter.players");
|
||||||
error_handler = require("MHR_Overlay.Misc.error_handler");
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_module()
|
||||||
|
|||||||
@@ -91,8 +91,8 @@ function this.new(id, name, master_rank, hunter_rank, type)
|
|||||||
|
|
||||||
player.cart_count = 0;
|
player.cart_count = 0;
|
||||||
|
|
||||||
player.join_time = -1;
|
player.join_time = utils.constants.uninitialized_int;
|
||||||
player.first_hit_time = -1;
|
player.first_hit_time = utils.constants.uninitialized_int;
|
||||||
player.dps = 0;
|
player.dps = 0;
|
||||||
|
|
||||||
player.small_monsters = this.init_damage_sources();
|
player.small_monsters = this.init_damage_sources();
|
||||||
@@ -141,7 +141,7 @@ function this.update_damage(player, damage_source_type, is_large_monster, damage
|
|||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
|
|
||||||
if player.first_hit_time == -1 then
|
if player.first_hit_time == utils.constants.uninitialized_int then
|
||||||
player.first_hit_time = time.total_elapsed_script_seconds;
|
player.first_hit_time = time.total_elapsed_script_seconds;
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -375,7 +375,7 @@ end
|
|||||||
function this.update_player_dps(player)
|
function this.update_player_dps(player)
|
||||||
local cached_config = config.current_config.damage_meter_UI.settings;
|
local cached_config = config.current_config.damage_meter_UI.settings;
|
||||||
|
|
||||||
if player.join_time == -1 then
|
if player.join_time == utils.constants.uninitialized_int then
|
||||||
player.join_time = time.total_elapsed_script_seconds;
|
player.join_time = time.total_elapsed_script_seconds;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -239,7 +239,21 @@ this.default_language = {
|
|||||||
burst = "Burst",
|
burst = "Burst",
|
||||||
kushala_daora_soul = "Kushala Daora Soul",
|
kushala_daora_soul = "Kushala Daora Soul",
|
||||||
intrepid_heart = "Intrepid Heart",
|
intrepid_heart = "Intrepid Heart",
|
||||||
dereliction = "Dereliction"
|
dereliction = "Dereliction",
|
||||||
|
latent_power = "Latent Power",
|
||||||
|
protective_polish = "Protective Polish",
|
||||||
|
wind_mantle = "Wind Mantle",
|
||||||
|
heaven_sent = "Heaven-Sent",
|
||||||
|
grinder_s = "Grinder (S)",
|
||||||
|
counterstrike = "Counterstrike",
|
||||||
|
affinity_sliding = "Affinity Sliding",
|
||||||
|
coalescence = "Coalescence",
|
||||||
|
adrenaline_rush = "Adrenaline Rush",
|
||||||
|
wall_runner = "Wall Runner",
|
||||||
|
offensive_guard = "Offensive Guard",
|
||||||
|
hellfire_cloak = "Hellfire Cloak",
|
||||||
|
agitator = "Agitator",
|
||||||
|
furious = "Furious"
|
||||||
},
|
},
|
||||||
|
|
||||||
dangos = {
|
dangos = {
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ local is_empty;
|
|||||||
local unicode_map;
|
local unicode_map;
|
||||||
local unicode_relative_position;
|
local unicode_relative_position;
|
||||||
local unicode_chars;
|
local unicode_chars;
|
||||||
|
local epsilon = 0.000001;
|
||||||
|
|
||||||
this.table = {};
|
this.table = {};
|
||||||
this.number = {};
|
this.number = {};
|
||||||
@@ -51,6 +52,11 @@ this.vec4 = {};
|
|||||||
this.math = {};
|
this.math = {};
|
||||||
this.unicode = {};
|
this.unicode = {};
|
||||||
|
|
||||||
|
this.constants = {};
|
||||||
|
this.constants.uninitialized_int = -420;
|
||||||
|
this.constants.uninitialized_string = "Uninitialized";
|
||||||
|
this.constants.epsilon = epsilon;
|
||||||
|
|
||||||
function this.table.tostring(table_)
|
function this.table.tostring(table_)
|
||||||
if type(table_) == "number" or type(table_) == "boolean" or type(table_) == "string" then
|
if type(table_) == "number" or type(table_) == "boolean" or type(table_) == "string" then
|
||||||
return tostring(table_);
|
return tostring(table_);
|
||||||
@@ -225,6 +231,14 @@ function this.number.is_even(value)
|
|||||||
return value % 2 == 0;
|
return value % 2 == 0;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function this.number.is_equal(value1, value2)
|
||||||
|
if math.abs(value1 - value2) < epsilon then
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
|
||||||
|
return false;
|
||||||
|
end
|
||||||
|
|
||||||
function this.string.trim(str)
|
function this.string.trim(str)
|
||||||
return str:match("^%s*(.-)%s*$");
|
return str:match("^%s*(.-)%s*$");
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ local small_monster;
|
|||||||
local large_monster;
|
local large_monster;
|
||||||
local non_players;
|
local non_players;
|
||||||
local error_handler;
|
local error_handler;
|
||||||
|
local utils;
|
||||||
|
|
||||||
local sdk = sdk;
|
local sdk = sdk;
|
||||||
local tostring = tostring;
|
local tostring = tostring;
|
||||||
@@ -95,7 +96,7 @@ function this.new(_ailments, ailment_id)
|
|||||||
new_ailment.buildup_percentage = 0;
|
new_ailment.buildup_percentage = 0;
|
||||||
|
|
||||||
new_ailment.timer = 0;
|
new_ailment.timer = 0;
|
||||||
new_ailment.duration = 100000;
|
new_ailment.duration = 0;
|
||||||
new_ailment.timer_percentage = 0;
|
new_ailment.timer_percentage = 0;
|
||||||
|
|
||||||
new_ailment.minutes_left = 0;
|
new_ailment.minutes_left = 0;
|
||||||
@@ -874,6 +875,7 @@ function this.init_dependencies()
|
|||||||
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
||||||
large_monster = require("MHR_Overlay.Monsters.large_monster");
|
large_monster = require("MHR_Overlay.Monsters.large_monster");
|
||||||
error_handler = require("MHR_Overlay.Misc.error_handler");
|
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||||
|
utils = require("MHR_Overlay.Misc.utils");
|
||||||
end
|
end
|
||||||
|
|
||||||
function this.init_module()
|
function this.init_module()
|
||||||
|
|||||||
@@ -73,8 +73,8 @@ function this.new(enemy)
|
|||||||
monster.id = 0;
|
monster.id = 0;
|
||||||
monster.unique_id = 0;
|
monster.unique_id = 0;
|
||||||
|
|
||||||
monster.health = 100000;
|
monster.health = 0;
|
||||||
monster.max_health = 100000;
|
monster.max_health = 0;
|
||||||
monster.health_percentage = 0;
|
monster.health_percentage = 0;
|
||||||
monster.missing_health = 0;
|
monster.missing_health = 0;
|
||||||
monster.is_health_initialized = false;
|
monster.is_health_initialized = false;
|
||||||
@@ -90,12 +90,12 @@ function this.new(enemy)
|
|||||||
|
|
||||||
monster.is_tired = false;
|
monster.is_tired = false;
|
||||||
monster.stamina = 0;
|
monster.stamina = 0;
|
||||||
monster.max_stamina = 1000;
|
monster.max_stamina = 0;
|
||||||
monster.stamina_percentage = 0;
|
monster.stamina_percentage = 0;
|
||||||
monster.missing_stamina = 0;
|
monster.missing_stamina = 0;
|
||||||
|
|
||||||
monster.tired_timer = 0;
|
monster.tired_timer = 0;
|
||||||
monster.tired_duration = 600;
|
monster.tired_duration = 0;
|
||||||
|
|
||||||
monster.tired_total_seconds_left = 0;
|
monster.tired_total_seconds_left = 0;
|
||||||
monster.tired_minutes_left = 0;
|
monster.tired_minutes_left = 0;
|
||||||
@@ -104,12 +104,12 @@ function this.new(enemy)
|
|||||||
|
|
||||||
monster.is_in_rage = false;
|
monster.is_in_rage = false;
|
||||||
monster.rage_point = 0;
|
monster.rage_point = 0;
|
||||||
monster.rage_limit = 3000;
|
monster.rage_limit = 0;
|
||||||
monster.rage_count = 0;
|
monster.rage_count = 0;
|
||||||
monster.rage_percentage = 0;
|
monster.rage_percentage = 0;
|
||||||
|
|
||||||
monster.rage_timer = 0;
|
monster.rage_timer = 0;
|
||||||
monster.rage_duration = 600;
|
monster.rage_duration = 0;
|
||||||
|
|
||||||
monster.rage_total_seconds_left = 0;
|
monster.rage_total_seconds_left = 0;
|
||||||
monster.rage_minutes_left = 0;
|
monster.rage_minutes_left = 0;
|
||||||
@@ -120,10 +120,10 @@ function this.new(enemy)
|
|||||||
monster.distance = 0;
|
monster.distance = 0;
|
||||||
|
|
||||||
monster.name = "Large Monster";
|
monster.name = "Large Monster";
|
||||||
monster.size = -1;
|
monster.size = 0;
|
||||||
monster.small_border = -1;
|
monster.small_border = 0;
|
||||||
monster.big_border = -1;
|
monster.big_border = 0;
|
||||||
monster.king_border = -1;
|
monster.king_border = 0;
|
||||||
monster.crown = "";
|
monster.crown = "";
|
||||||
|
|
||||||
monster.is_anomaly = false;
|
monster.is_anomaly = false;
|
||||||
@@ -771,6 +771,7 @@ function this.update_rage(enemy, monster, anger_param)
|
|||||||
|
|
||||||
local is_in_rage = is_anger_method:call(anger_param);
|
local is_in_rage = is_anger_method:call(anger_param);
|
||||||
if is_in_rage ~= nil then
|
if is_in_rage ~= nil then
|
||||||
|
--xy = xy .. tostring(is_in_rage) .. "\n";
|
||||||
monster.is_in_rage = is_in_rage;
|
monster.is_in_rage = is_in_rage;
|
||||||
else
|
else
|
||||||
error_handler.report("large_monster.update_rage", "Failed to access Data: is_in_rage");
|
error_handler.report("large_monster.update_rage", "Failed to access Data: is_in_rage");
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ function this.new(enemy)
|
|||||||
monster.is_large = false;
|
monster.is_large = false;
|
||||||
|
|
||||||
monster.health = 0;
|
monster.health = 0;
|
||||||
monster.max_health = 999999;
|
monster.max_health = 0;
|
||||||
monster.health_percentage = 0;
|
monster.health_percentage = 0;
|
||||||
monster.missing_health = 0;
|
monster.missing_health = 0;
|
||||||
monster.capture_health = 0;
|
monster.capture_health = 0;
|
||||||
|
|||||||
@@ -444,10 +444,24 @@
|
|||||||
"wings": "Wings"
|
"wings": "Wings"
|
||||||
},
|
},
|
||||||
"skills": {
|
"skills": {
|
||||||
|
"adrenaline_rush": "Adrenaline Rush",
|
||||||
|
"affinity_sliding": "Affinity Sliding",
|
||||||
|
"agitator": "Agitator",
|
||||||
"burst": "Burst",
|
"burst": "Burst",
|
||||||
|
"coalescence": "Coalescence",
|
||||||
|
"counterstrike": "Counterstrike",
|
||||||
"dereliction": "Dereliction",
|
"dereliction": "Dereliction",
|
||||||
|
"furious": "Furious",
|
||||||
|
"grinder_s": "Grinder (S)",
|
||||||
|
"heaven_sent": "Heaven-Sent",
|
||||||
|
"hellfire_cloak": "Hellfire Cloak",
|
||||||
"intrepid_heart": "Intrepid Heart",
|
"intrepid_heart": "Intrepid Heart",
|
||||||
"kushala_daora_soul": "Kushala Daora Soul"
|
"kushala_daora_soul": "Kushala Daora Soul",
|
||||||
|
"latent_power": "Latent Power",
|
||||||
|
"offensive_guard": "Offensive Guard",
|
||||||
|
"protective_polish": "Protective Polish",
|
||||||
|
"wall_runner": "Wall Runner",
|
||||||
|
"wind_mantle": "Wind Mantle"
|
||||||
},
|
},
|
||||||
"unicode_glyph_ranges": [
|
"unicode_glyph_ranges": [
|
||||||
0
|
0
|
||||||
|
|||||||
@@ -444,10 +444,24 @@
|
|||||||
"wings": "翼"
|
"wings": "翼"
|
||||||
},
|
},
|
||||||
"skills": {
|
"skills": {
|
||||||
|
"adrenaline_rush": "Adrenaline Rush",
|
||||||
|
"affinity_sliding": "Affinity Sliding",
|
||||||
|
"agitator": "Agitator",
|
||||||
"burst": "Burst",
|
"burst": "Burst",
|
||||||
|
"coalescence": "Coalescence",
|
||||||
|
"counterstrike": "Counterstrike",
|
||||||
"dereliction": "Dereliction",
|
"dereliction": "Dereliction",
|
||||||
|
"furious": "Furious",
|
||||||
|
"grinder_s": "Grinder (S)",
|
||||||
|
"heaven_sent": "Heaven-Sent",
|
||||||
|
"hellfire_cloak": "Hellfire Cloak",
|
||||||
"intrepid_heart": "Intrepid Heart",
|
"intrepid_heart": "Intrepid Heart",
|
||||||
"kushala_daora_soul": "Kushala Daora Soul"
|
"kushala_daora_soul": "Kushala Daora Soul",
|
||||||
|
"latent_power": "Latent Power",
|
||||||
|
"offensive_guard": "Offensive Guard",
|
||||||
|
"protective_polish": "Protective Polish",
|
||||||
|
"wall_runner": "Wall Runner",
|
||||||
|
"wind_mantle": "Wind Mantle"
|
||||||
},
|
},
|
||||||
"unicode_glyph_ranges": [
|
"unicode_glyph_ranges": [
|
||||||
32,
|
32,
|
||||||
|
|||||||
@@ -445,10 +445,24 @@
|
|||||||
"wings": "날개"
|
"wings": "날개"
|
||||||
},
|
},
|
||||||
"skills": {
|
"skills": {
|
||||||
|
"adrenaline_rush": "Adrenaline Rush",
|
||||||
|
"affinity_sliding": "Affinity Sliding",
|
||||||
|
"agitator": "Agitator",
|
||||||
"burst": "Burst",
|
"burst": "Burst",
|
||||||
|
"coalescence": "Coalescence",
|
||||||
|
"counterstrike": "Counterstrike",
|
||||||
"dereliction": "Dereliction",
|
"dereliction": "Dereliction",
|
||||||
|
"furious": "Furious",
|
||||||
|
"grinder_s": "Grinder (S)",
|
||||||
|
"heaven_sent": "Heaven-Sent",
|
||||||
|
"hellfire_cloak": "Hellfire Cloak",
|
||||||
"intrepid_heart": "Intrepid Heart",
|
"intrepid_heart": "Intrepid Heart",
|
||||||
"kushala_daora_soul": "Kushala Daora Soul"
|
"kushala_daora_soul": "Kushala Daora Soul",
|
||||||
|
"latent_power": "Latent Power",
|
||||||
|
"offensive_guard": "Offensive Guard",
|
||||||
|
"protective_polish": "Protective Polish",
|
||||||
|
"wall_runner": "Wall Runner",
|
||||||
|
"wind_mantle": "Wind Mantle"
|
||||||
},
|
},
|
||||||
"unicode_glyph_ranges": [
|
"unicode_glyph_ranges": [
|
||||||
32,
|
32,
|
||||||
|
|||||||
@@ -445,10 +445,24 @@
|
|||||||
"wings": "Крылья"
|
"wings": "Крылья"
|
||||||
},
|
},
|
||||||
"skills": {
|
"skills": {
|
||||||
|
"adrenaline_rush": "Adrenaline Rush",
|
||||||
|
"affinity_sliding": "Affinity Sliding",
|
||||||
|
"agitator": "Agitator",
|
||||||
"burst": "Burst",
|
"burst": "Burst",
|
||||||
|
"coalescence": "Coalescence",
|
||||||
|
"counterstrike": "Counterstrike",
|
||||||
"dereliction": "Dereliction",
|
"dereliction": "Dereliction",
|
||||||
|
"furious": "Furious",
|
||||||
|
"grinder_s": "Grinder (S)",
|
||||||
|
"heaven_sent": "Heaven-Sent",
|
||||||
|
"hellfire_cloak": "Hellfire Cloak",
|
||||||
"intrepid_heart": "Intrepid Heart",
|
"intrepid_heart": "Intrepid Heart",
|
||||||
"kushala_daora_soul": "Kushala Daora Soul"
|
"kushala_daora_soul": "Kushala Daora Soul",
|
||||||
|
"latent_power": "Latent Power",
|
||||||
|
"offensive_guard": "Offensive Guard",
|
||||||
|
"protective_polish": "Protective Polish",
|
||||||
|
"wall_runner": "Wall Runner",
|
||||||
|
"wind_mantle": "Wind Mantle"
|
||||||
},
|
},
|
||||||
"unicode_glyph_ranges": [
|
"unicode_glyph_ranges": [
|
||||||
32,
|
32,
|
||||||
|
|||||||
@@ -445,10 +445,24 @@
|
|||||||
"wings": "翼"
|
"wings": "翼"
|
||||||
},
|
},
|
||||||
"skills": {
|
"skills": {
|
||||||
|
"adrenaline_rush": "Adrenaline Rush",
|
||||||
|
"affinity_sliding": "Affinity Sliding",
|
||||||
|
"agitator": "Agitator",
|
||||||
"burst": "Burst",
|
"burst": "Burst",
|
||||||
|
"coalescence": "Coalescence",
|
||||||
|
"counterstrike": "Counterstrike",
|
||||||
"dereliction": "Dereliction",
|
"dereliction": "Dereliction",
|
||||||
|
"furious": "Furious",
|
||||||
|
"grinder_s": "Grinder (S)",
|
||||||
|
"heaven_sent": "Heaven-Sent",
|
||||||
|
"hellfire_cloak": "Hellfire Cloak",
|
||||||
"intrepid_heart": "Intrepid Heart",
|
"intrepid_heart": "Intrepid Heart",
|
||||||
"kushala_daora_soul": "Kushala Daora Soul"
|
"kushala_daora_soul": "Kushala Daora Soul",
|
||||||
|
"latent_power": "Latent Power",
|
||||||
|
"offensive_guard": "Offensive Guard",
|
||||||
|
"protective_polish": "Protective Polish",
|
||||||
|
"wall_runner": "Wall Runner",
|
||||||
|
"wind_mantle": "Wind Mantle"
|
||||||
},
|
},
|
||||||
"unicode_glyph_ranges": [
|
"unicode_glyph_ranges": [
|
||||||
32,
|
32,
|
||||||
|
|||||||
@@ -445,10 +445,24 @@
|
|||||||
"wings": "翅膀"
|
"wings": "翅膀"
|
||||||
},
|
},
|
||||||
"skills": {
|
"skills": {
|
||||||
|
"adrenaline_rush": "Adrenaline Rush",
|
||||||
|
"affinity_sliding": "Affinity Sliding",
|
||||||
|
"agitator": "Agitator",
|
||||||
"burst": "Burst",
|
"burst": "Burst",
|
||||||
|
"coalescence": "Coalescence",
|
||||||
|
"counterstrike": "Counterstrike",
|
||||||
"dereliction": "Dereliction",
|
"dereliction": "Dereliction",
|
||||||
|
"furious": "Furious",
|
||||||
|
"grinder_s": "Grinder (S)",
|
||||||
|
"heaven_sent": "Heaven-Sent",
|
||||||
|
"hellfire_cloak": "Hellfire Cloak",
|
||||||
"intrepid_heart": "Intrepid Heart",
|
"intrepid_heart": "Intrepid Heart",
|
||||||
"kushala_daora_soul": "Kushala Daora Soul"
|
"kushala_daora_soul": "Kushala Daora Soul",
|
||||||
|
"latent_power": "Latent Power",
|
||||||
|
"offensive_guard": "Offensive Guard",
|
||||||
|
"protective_polish": "Protective Polish",
|
||||||
|
"wall_runner": "Wall Runner",
|
||||||
|
"wind_mantle": "Wind Mantle"
|
||||||
},
|
},
|
||||||
"unicode_glyph_ranges": [
|
"unicode_glyph_ranges": [
|
||||||
32,
|
32,
|
||||||
|
|||||||
Reference in New Issue
Block a user