Utilize this keyword everywhere

This commit is contained in:
GreenComfyTea
2023-04-21 10:19:12 +03:00
parent 94e9e5d18b
commit 9b1ff5b264
49 changed files with 1398 additions and 1403 deletions

View File

@@ -1,4 +1,4 @@
local buffs = {};
local this = {};
local buff_UI_entity;
local config;
@@ -35,9 +35,9 @@ local os = os;
local ValueType = ValueType;
local package = package;
buffs.list = {};
this.list = {};
function buffs.new(name)
function this.new(name)
local buff = {};
buff.name = name;
@@ -53,48 +53,48 @@ function buffs.new(name)
buff.is_infinite = false;
buffs.init_UI(buff);
this.init_UI(buff);
return buff;
end
function buffs.init_buffs()
buffs.list = {};
function this.init_buffs()
this.list = {};
end
function buffs.init_UI(buff)
function this.init_UI(buff)
local cached_config = config.current_config.buff_UI;
buff.buff_UI = buff_UI_entity.new(cached_config.bar, cached_config.name_label, cached_config.timer_label);
end
function buffs.draw(buff, buff_UI, position_on_screen, opacity_scale)
function this.draw(buff, buff_UI, position_on_screen, opacity_scale)
buff_UI_entity.draw(buff, buff_UI, position_on_screen, opacity_scale);
end
function buffs.init_module()
function this.init_module()
config = require("MHR_Overlay.Misc.config");
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
local buff = buffs.new("Enviroment Damage Negated");
local buff = this.new("Enviroment Damage Negated");
buff.duration = 90;
buff.timer = 65;
buff.timer_percentage = 0.66;
buff.minutes_left = 1;
buff.seconds_left = 5
buffs.list["Enviroment Damage Negated"] = buff;
this.list["Enviroment Damage Negated"] = buff;
local buff = buffs.new("Sharpness Loss Reduced");
local buff = this.new("Sharpness Loss Reduced");
buff.duration = 120;
buff.timer = 70;
buff.timer_percentage = 0.583;
buff.minutes_left = 1;
buff.seconds_left = 10
buffs.list["Sharpness Loss Reduced"] = buff;
this.list["Sharpness Loss Reduced"] = buff;
local buff = buffs.new("Sharpness Loss Reduced 2");
local buff = this.new("Sharpness Loss Reduced 2");
buff.duration = 120;
buff.timer = 70;
buff.timer_percentage = 0.583;
@@ -102,7 +102,7 @@ function buffs.init_module()
buff.seconds_left = 10
buff.is_infinite = true;
buffs.list["Sharpness Loss Reduced 2"] = buff;
this.list["Sharpness Loss Reduced 2"] = buff;
end
return buffs;
return this;

View File

@@ -1,4 +1,4 @@
local damage_hook = {};
local this = {};
local quest_status;
local players;
@@ -79,7 +79,7 @@ local packet_quest_forfeit_type_def = sdk.find_type_definition("snow.QuestManage
local dead_player_id_field = packet_quest_forfeit_type_def:get_field("_DeadPlIndex");
local is_from_host_field = packet_quest_forfeit_type_def:get_field("_IsFromQuestHostPacket");
function damage_hook.get_damage_source_type(damage_source_type_id, is_marionette_attack)
function this.get_damage_source_type(damage_source_type_id, is_marionette_attack)
if is_marionette_attack then
return "wyvern riding";
elseif damage_source_type_id == 0 or damage_source_type_id == 7 or damage_source_type_id == 11 or damage_source_type_id == 13 then
@@ -100,7 +100,7 @@ function damage_hook.get_damage_source_type(damage_source_type_id, is_marionette
end
-- snow.hit.EnemyCalcDamageInfo.AfterCalcInfo_DamageSide
function damage_hook.update_damage(enemy, enemy_calc_damage_info)
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
@@ -184,7 +184,7 @@ function damage_hook.update_damage(enemy, enemy_calc_damage_info)
-- 31 - EcSwampLeech
-- 32 - EcPenetrateFish
local damage_source_type = damage_hook.get_damage_source_type(attacker_type, is_marionette_attack);
local damage_source_type = this.get_damage_source_type(attacker_type, is_marionette_attack);
local monster;
if is_large_monster then
@@ -232,7 +232,7 @@ end
--end
function damage_hook.cart(dead_player_id, flag_cat_skill_insurance)
function this.cart(dead_player_id, flag_cat_skill_insurance)
-- flag_cat_skill_insurance = 0
-- flag_cat_skill_insurance = 1
local player = players.list[dead_player_id];
@@ -245,7 +245,7 @@ function damage_hook.cart(dead_player_id, flag_cat_skill_insurance)
quest_status.get_cart_count();
end
function damage_hook.on_stock_direct_marionette_finish_shoot_hit_parts_damage(enemy, damage_rate, is_endure, is_ignore_multi_rate, category, no)
function this.on_stock_direct_marionette_finish_shoot_hit_parts_damage(enemy, damage_rate, is_endure, is_ignore_multi_rate, category, no)
local monster = large_monster.get_monster(enemy);
local damage = utils.math.round(monster.max_health * damage_rate);
@@ -273,7 +273,7 @@ function damage_hook.on_stock_direct_marionette_finish_shoot_hit_parts_damage(en
return;
end
local damage_source_type = damage_hook.get_damage_source_type(0, true);
local damage_source_type = this.get_damage_source_type(0, true);
local is_large_monster = monster.is_large;
local large_monster_damage_object = {};
@@ -309,7 +309,7 @@ function damage_hook.on_stock_direct_marionette_finish_shoot_hit_parts_damage(en
players.update_damage(player, damage_source_type, true, large_monster_damage_object);
end
function damage_hook.init_module()
function this.init_module()
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
players = require("MHR_Overlay.Damage_Meter.players");
small_monster = require("MHR_Overlay.Monsters.small_monster");
@@ -327,19 +327,19 @@ function damage_hook.init_module()
local category = sdk.to_int64(args[6]); --snow.enemy.EnemyDef.VitalCategory
local no = sdk.to_int64(args[7]);
damage_hook.on_stock_direct_marionette_finish_shoot_hit_parts_damage(enemy, damage_rate, is_endure, is_ignore_multi_rate, category, no);
this.on_stock_direct_marionette_finish_shoot_hit_parts_damage(enemy, damage_rate, is_endure, is_ignore_multi_rate, category, no);
end, function(retval)
return retval;
end);
sdk.hook(enemy_character_base_after_calc_damage_damage_side_method, function(args)
pcall(damage_hook.update_damage, sdk.to_managed_object(args[2]), sdk.to_managed_object(args[3]));
pcall(this.update_damage, sdk.to_managed_object(args[2]), sdk.to_managed_object(args[3]));
end, function(retval)
return retval;
end);
sdk.hook(quest_forfeit_method, function(args)
pcall(damage_hook.cart, sdk.to_int64(args[3]), (sdk.to_int64(args[4]) & 0xFFFFFFFF));
pcall(this.cart, sdk.to_int64(args[3]), (sdk.to_int64(args[4]) & 0xFFFFFFFF));
end, function(retval)
return retval;
end);
@@ -351,4 +351,4 @@ function damage_hook.init_module()
--end);
end
return damage_hook;
return this;

View File

@@ -1,4 +1,4 @@
local non_players = {};
local this = {};
local config;
local singletons;
@@ -42,12 +42,12 @@ local os = os;
local ValueType = ValueType;
local package = package;
non_players.servant_list = {};
non_players.otomo_list = {};
this.servant_list = {};
this.otomo_list = {};
non_players.my_second_otomo_id = -1;
this.my_second_otomo_id = -1;
function non_players.new(id, name, level, type)
function this.new(id, name, level, type)
local non_player = {};
non_player.id = id;
non_player.name = name;
@@ -68,22 +68,22 @@ function non_players.new(id, name, level, type)
non_player.display.elemental_damage = 0;
non_player.display.ailment_damage = 0;
non_players.init_UI(non_player);
this.init_UI(non_player);
return non_player;
end
function non_players.get_servant(servant_id)
return non_players.servant_list[servant_id];
function this.get_servant(servant_id)
return this.servant_list[servant_id];
end
function non_players.get_otomo(otomo_id)
return non_players.otomo_list[otomo_id];
function this.get_otomo(otomo_id)
return this.otomo_list[otomo_id];
end
function non_players.init()
non_players.servant_list = {};
non_players.otomo_list = {};
function this.init()
this.servant_list = {};
this.otomo_list = {};
end
local servant_manager_type_def = sdk.find_type_definition("snow.ai.ServantManager");
@@ -128,7 +128,7 @@ local otomo_info_name_field = otomo_info_type_def:get_field("_Name");
local otomo_info_level_field = otomo_info_type_def:get_field("_Level");
local otomo_info_order_field = otomo_info_type_def:get_field("_Order");
function non_players.update_servant_list()
function this.update_servant_list()
local cached_config = config.current_config.damage_meter_UI;
if singletons.servant_manager == nil then
@@ -176,40 +176,40 @@ function non_players.update_servant_list()
goto continue;
end
if non_players.servant_list[id] == nil then
non_players.servant_list[id] = non_players.new(id, name, 0, players.types.servant);
if this.servant_list[id] == nil then
this.servant_list[id] = this.new(id, name, 0, players.types.servant);
end
if not cached_config.settings.hide_servants then
table.insert(players.display_list, non_players.servant_list[id]);
table.insert(players.display_list, this.servant_list[id]);
end
::continue::
end
end
function non_players.update_otomo_list(is_on_quest, is_online)
function this.update_otomo_list(is_on_quest, is_online)
if is_online then
if is_on_quest then
--non_players.update_my_otomos();
non_players.update_otomos(quest_otomo_info_field);
this.update_otomos(quest_otomo_info_field);
else
non_players.update_otomos(otomo_info_field);
this.update_otomos(otomo_info_field);
end
else
if is_on_quest then
non_players.update_my_otomos();
non_players.update_servant_otomos();
this.update_my_otomos();
this.update_servant_otomos();
else
non_players.update_my_otomos();
this.update_my_otomos();
end
end
end
function non_players.update_my_otomos()
function this.update_my_otomos()
local cached_config = config.current_config.damage_meter_UI;
local first_otomo = get_master_otomo_info_method:call(singletons.otomo_manager, 0);
@@ -219,12 +219,12 @@ function non_players.update_my_otomos()
local level = otomo_create_data_level_field:get_data(first_otomo) or 0;
local myself_id = players.myself.id;
if non_players.otomo_list[myself_id] == nil then
non_players.otomo_list[myself_id] = non_players.new(0, name, level, players.types.my_otomo);
if this.otomo_list[myself_id] == nil then
this.otomo_list[myself_id] = this.new(0, name, level, players.types.my_otomo);
end
if cached_config.settings.show_my_otomos_separately then
table.insert(players.display_list, non_players.otomo_list[myself_id]);
table.insert(players.display_list, this.otomo_list[myself_id]);
end
end
end
@@ -236,18 +236,18 @@ function non_players.update_my_otomos()
local level = otomo_create_data_level_field:get_data(second_otomo) or 0;
-- the secondary otomo is actually the 4th one!
if non_players.otomo_list[non_players.my_second_otomo_id] == nil then
non_players.otomo_list[non_players.my_second_otomo_id] = non_players.new(non_players.my_second_otomo_id, name, level, players.types.my_otomo);
if this.otomo_list[this.my_second_otomo_id] == nil then
this.otomo_list[this.my_second_otomo_id] = this.new(this.my_second_otomo_id, name, level, players.types.my_otomo);
end
if cached_config.settings.show_my_otomos_separately then
table.insert(players.display_list, non_players.otomo_list[non_players.my_second_otomo_id]);
table.insert(players.display_list, this.otomo_list[this.my_second_otomo_id]);
end
end
end
end
function non_players.update_servant_otomos()
function this.update_servant_otomos()
local cached_config = config.current_config.damage_meter_UI;
local servant_otomo_list = get_servant_otomo_list_method:call(singletons.otomo_manager);
@@ -278,12 +278,12 @@ function non_players.update_servant_otomos()
goto continue;
end
if non_players.otomo_list[member_id] == nil then
non_players.otomo_list[member_id] = non_players.new(member_id, name, level, players.types.servant_otomo);
if this.otomo_list[member_id] == nil then
this.otomo_list[member_id] = this.new(member_id, name, level, players.types.servant_otomo);
end
if cached_config.settings.show_servant_otomos_separately then
table.insert(players.display_list, non_players.otomo_list[member_id]);
table.insert(players.display_list, this.otomo_list[member_id]);
end
end
@@ -292,7 +292,7 @@ function non_players.update_servant_otomos()
end
function non_players.update_otomos(otomo_info_field_)
function this.update_otomos(otomo_info_field_)
local cached_config = config.current_config.damage_meter_UI;
if singletons.lobby_manager == nil then
@@ -325,22 +325,22 @@ function non_players.update_otomos(otomo_info_field_)
local level = otomo_info_level_field:get_data(otomo_info) or 0;
local otomo = non_players.otomo_list[id];
local otomo = this.otomo_list[id];
if otomo == nil or (otomo.name ~= name and level ~= otomo.level) or
(otomo.type == players.types.my_otomo and otomo.id ~= players.myself.id) or
(otomo.type ~= players.types.my_otomo and otomo.id == players.myself.id) then
if id == players.myself.id then
otomo = non_players.new(id, name, level, players.types.my_otomo);
non_players.otomo_list[id] = otomo;
otomo = this.new(id, name, level, players.types.my_otomo);
this.otomo_list[id] = otomo;
elseif id >= 4 then
otomo = non_players.new(id, name, level, players.types.servant_otomo);
non_players.otomo_list[id] = otomo;
otomo = this.new(id, name, level, players.types.servant_otomo);
this.otomo_list[id] = otomo;
else
otomo = non_players.new(id, name, level, players.types.other_player_otomo);
non_players.otomo_list[id] = otomo;
otomo = this.new(id, name, level, players.types.other_player_otomo);
this.otomo_list[id] = otomo;
end
end
@@ -363,7 +363,7 @@ function non_players.update_otomos(otomo_info_field_)
end
end
function non_players.init_UI(non_player)
function this.init_UI(non_player)
local cached_config = config.current_config.damage_meter_UI;
if non_player.type == players.types.servant then
@@ -377,7 +377,7 @@ function non_players.init_UI(non_player)
end
end
function non_players.init_module()
function this.init_module()
config = require("MHR_Overlay.Misc.config");
singletons = require("MHR_Overlay.Game_Handler.singletons");
customization_menu = require("MHR_Overlay.UI.customization_menu");
@@ -388,7 +388,7 @@ function non_players.init_module()
language = require("MHR_Overlay.Misc.language");
players = require("MHR_Overlay.Damage_Meter.players");
non_players.init();
this.init();
end
return non_players;
return this;

View File

@@ -1,4 +1,4 @@
local players = {};
local this = {};
local config;
local singletons;
@@ -42,16 +42,16 @@ local os = os;
local ValueType = ValueType;
local package = package;
players.list = {};
players.myself = nil;
players.myself_position = Vector3f.new(0, 0, 0);
players.total = nil;
this.list = {};
this.myself = nil;
this.myself_position = Vector3f.new(0, 0, 0);
this.total = nil;
players.display_list = {};
this.display_list = {};
players.highlighted_damage_UI = nil;
this.highlighted_damage_UI = nil;
players.types = {
this.types = {
["myself"] = 0,
["other_player"] = 1,
["servant"] = 2,
@@ -63,7 +63,7 @@ players.types = {
}
function players.new(id, name, master_rank, hunter_rank, type)
function this.new(id, name, master_rank, hunter_rank, type)
local player = {};
player.id = id;
player.name = name;
@@ -78,8 +78,8 @@ function players.new(id, name, master_rank, hunter_rank, type)
player.first_hit_time = -1;
player.dps = 0;
player.small_monsters = players.init_damage_sources()
player.large_monsters = players.init_damage_sources();
player.small_monsters = this.init_damage_sources()
player.large_monsters = this.init_damage_sources();
player.display = {};
player.display.total_damage = 0;
@@ -87,16 +87,16 @@ function players.new(id, name, master_rank, hunter_rank, type)
player.display.elemental_damage = 0;
player.display.ailment_damage = 0;
players.init_UI(player);
this.init_UI(player);
if players.highlighted_damage_UI == nil then
players.init_highlighted_UI();
if this.highlighted_damage_UI == nil then
this.init_highlighted_UI();
end
return player;
end
function players.init_damage_sources()
function this.init_damage_sources()
local monster_type = {};
monster_type.total_damage = 0;
@@ -174,15 +174,15 @@ function players.init_damage_sources()
return monster_type;
end
function players.get_player(player_id)
function this.get_player(player_id)
if player_id == non_players.my_second_otomo_id then
return players.myself;
return this.myself;
end
return players.list[player_id];
return this.list[player_id];
end
function players.update_damage(player, damage_source_type, is_large_monster, damage_object)
function this.update_damage(player, damage_source_type, is_large_monster, damage_object)
if player == nil then
return;
end
@@ -197,37 +197,37 @@ function players.update_damage(player, damage_source_type, is_large_monster, dam
end
if damage_source_type == "player" then
players.merge_damage(player_monster_type, damage_object);
this.merge_damage(player_monster_type, damage_object);
elseif damage_source_type == "bomb" then
players.merge_damage(player_monster_type.bombs, damage_object);
this.merge_damage(player_monster_type.bombs, damage_object);
elseif damage_source_type == "kunai" then
players.merge_damage(player_monster_type.kunai, damage_object);
this.merge_damage(player_monster_type.kunai, damage_object);
elseif damage_source_type == "installation" then
players.merge_damage(player_monster_type.installations, damage_object);
this.merge_damage(player_monster_type.installations, damage_object);
elseif damage_source_type == "otomo" then
players.merge_damage(player_monster_type.otomo, damage_object);
this.merge_damage(player_monster_type.otomo, damage_object);
elseif damage_source_type == "wyvern riding" then
players.merge_damage(player_monster_type.wyvern_riding, damage_object);
this.merge_damage(player_monster_type.wyvern_riding, damage_object);
elseif damage_source_type == "poison" then
players.merge_damage(player_monster_type.poison, damage_object);
this.merge_damage(player_monster_type.poison, damage_object);
elseif damage_source_type == "blast" then
players.merge_damage(player_monster_type.blast, damage_object);
this.merge_damage(player_monster_type.blast, damage_object);
elseif damage_source_type == "otomo poison" then
players.merge_damage(player_monster_type.otomo_poison, damage_object);
this.merge_damage(player_monster_type.otomo_poison, damage_object);
elseif damage_source_type == "otomo blast" then
players.merge_damage(player_monster_type.otomo_blast, damage_object);
this.merge_damage(player_monster_type.otomo_blast, damage_object);
elseif damage_source_type == "endemic life" then
players.merge_damage(player_monster_type.endemic_life, damage_object);
this.merge_damage(player_monster_type.endemic_life, damage_object);
elseif damage_source_type == "other" then
players.merge_damage(player_monster_type.other, damage_object);
this.merge_damage(player_monster_type.other, damage_object);
else
players.merge_damage(player_monster_type, damage_object);
this.merge_damage(player_monster_type, damage_object);
end
players.update_display(player);
this.update_display(player);
end
function players.update_display(player)
function this.update_display(player)
if player == nil then
return;
end
@@ -251,152 +251,152 @@ function players.update_display(player)
for _, monster_type in ipairs(monster_types) do
if cached_config.tracked_damage_types.player_damage then
players.merge_damage(player.display, monster_type);
this.merge_damage(player.display, monster_type);
end
if cached_config.tracked_damage_types.bomb_damage then
players.merge_damage(player.display, monster_type.bombs);
this.merge_damage(player.display, monster_type.bombs);
end
if cached_config.tracked_damage_types.kunai_damage then
players.merge_damage(player.display, monster_type.kunai);
this.merge_damage(player.display, monster_type.kunai);
end
if cached_config.tracked_damage_types.installation_damage then
players.merge_damage(player.display, monster_type.installations);
this.merge_damage(player.display, monster_type.installations);
end
if cached_config.tracked_damage_types.otomo_damage then
if player.type == players.types.myself then
if player.type == this.types.myself then
if not cached_config.settings.show_my_otomos_separately then
players.merge_damage(player.display, monster_type.otomo);
this.merge_damage(player.display, monster_type.otomo);
end
elseif player.type == players.types.other_player then
elseif player.type == this.types.other_player then
if not cached_config.settings.show_other_player_otomos_separately then
players.merge_damage(player.display, monster_type.otomo);
this.merge_damage(player.display, monster_type.otomo);
end
elseif player.type == players.types.servant then
elseif player.type == this.types.servant then
if not cached_config.settings.show_servant_otomos_separately then
players.merge_damage(player.display, monster_type.otomo);
this.merge_damage(player.display, monster_type.otomo);
end
elseif player.type == players.types.my_otomo then
elseif player.type == this.types.my_otomo then
if cached_config.settings.show_my_otomos_separately then
players.merge_damage(player.display, monster_type.otomo);
this.merge_damage(player.display, monster_type.otomo);
end
elseif player.type == players.types.other_player_otomo then
elseif player.type == this.types.other_player_otomo then
if cached_config.settings.show_other_player_otomos_separately then
players.merge_damage(player.display, monster_type.otomo);
this.merge_damage(player.display, monster_type.otomo);
end
elseif player.type == players.types.servant_otomo then
elseif player.type == this.types.servant_otomo then
if cached_config.settings.show_servant_otomos_separately then
players.merge_damage(player.display, monster_type.otomo);
this.merge_damage(player.display, monster_type.otomo);
end
elseif player.type == players.types.total then
elseif player.type == this.types.total then
players.merge_damage(player.display, monster_type.otomo);
this.merge_damage(player.display, monster_type.otomo);
end
end
if cached_config.tracked_damage_types.wyvern_riding_damage then
players.merge_damage(player.display, monster_type.wyvern_riding);
this.merge_damage(player.display, monster_type.wyvern_riding);
end
if cached_config.tracked_damage_types.poison_damage then
players.merge_damage(player.display, monster_type.poison);
this.merge_damage(player.display, monster_type.poison);
if player.type == players.types.myself then
if player.type == this.types.myself then
if not cached_config.settings.show_my_otomos_separately then
players.merge_damage(player.display, monster_type.otomo_poison);
this.merge_damage(player.display, monster_type.otomo_poison);
end
elseif player.type == players.types.other_player then
elseif player.type == this.types.other_player then
if not cached_config.settings.show_other_player_otomos_separately then
players.merge_damage(player.display, monster_type.otomo_poison);
this.merge_damage(player.display, monster_type.otomo_poison);
end
elseif player.type == players.types.servant then
elseif player.type == this.types.servant then
if not cached_config.settings.show_servant_otomos_separately then
players.merge_damage(player.display, monster_type.otomo_poison);
this.merge_damage(player.display, monster_type.otomo_poison);
end
elseif player.type == players.types.my_otomo then
elseif player.type == this.types.my_otomo then
if cached_config.settings.show_my_otomos_separately then
players.merge_damage(player.display, monster_type.otomo_poison);
this.merge_damage(player.display, monster_type.otomo_poison);
end
elseif player.type == players.types.other_player_otomo then
elseif player.type == this.types.other_player_otomo then
if cached_config.settings.show_other_player_otomos_separately then
players.merge_damage(player.display, monster_type.otomo_poison);
this.merge_damage(player.display, monster_type.otomo_poison);
end
elseif player.type == players.types.servant_otomo then
elseif player.type == this.types.servant_otomo then
if cached_config.settings.show_servant_otomos_separately then
players.merge_damage(player.display, monster_type.otomo_poison);
this.merge_damage(player.display, monster_type.otomo_poison);
end
elseif player.type == players.types.total then
elseif player.type == this.types.total then
players.merge_damage(player.display, monster_type.otomo_poison);
this.merge_damage(player.display, monster_type.otomo_poison);
end
end
if cached_config.tracked_damage_types.blast_damage then
players.merge_damage(player.display, monster_type.blast);
this.merge_damage(player.display, monster_type.blast);
if player.type == players.types.myself then
if player.type == this.types.myself then
if not cached_config.settings.show_my_otomos_separately then
players.merge_damage(player.display, monster_type.otomo_blast);
this.merge_damage(player.display, monster_type.otomo_blast);
end
elseif player.type == players.types.other_player then
elseif player.type == this.types.other_player then
if not cached_config.settings.show_other_player_otomos_separately then
players.merge_damage(player.display, monster_type.otomo_blast);
this.merge_damage(player.display, monster_type.otomo_blast);
end
elseif player.type == players.types.servant then
elseif player.type == this.types.servant then
if not cached_config.settings.show_servant_otomos_separately then
players.merge_damage(player.display, monster_type.otomo_blast);
this.merge_damage(player.display, monster_type.otomo_blast);
end
elseif player.type == players.types.my_otomo then
elseif player.type == this.types.my_otomo then
if cached_config.settings.show_my_otomos_separately then
players.merge_damage(player.display, monster_type.otomo_blast);
this.merge_damage(player.display, monster_type.otomo_blast);
end
elseif player.type == players.types.other_player_otomo then
elseif player.type == this.types.other_player_otomo then
if cached_config.settings.show_other_player_otomos_separately then
players.merge_damage(player.display, monster_type.otomo_blast);
this.merge_damage(player.display, monster_type.otomo_blast);
end
elseif player.type == players.types.servant_otomo then
elseif player.type == this.types.servant_otomo then
if cached_config.settings.show_servant_otomos_separately then
players.merge_damage(player.display, monster_type.otomo_blast);
this.merge_damage(player.display, monster_type.otomo_blast);
end
elseif player.type == players.types.total then
elseif player.type == this.types.total then
players.merge_damage(player.display, monster_type.otomo_blast);
this.merge_damage(player.display, monster_type.otomo_blast);
end
end
if cached_config.tracked_damage_types.endemic_life_damage then
players.merge_damage(player.display, monster_type.endemic_life);
this.merge_damage(player.display, monster_type.endemic_life);
end
if cached_config.tracked_damage_types.other_damage then
players.merge_damage(player.display, monster_type.other);
this.merge_damage(player.display, monster_type.other);
end
end
end
function players.merge_damage(first, second)
function this.merge_damage(first, second)
first.total_damage = first.total_damage + second.total_damage;
first.physical_damage = first.physical_damage + second.physical_damage;
first.elemental_damage = first.elemental_damage + second.elemental_damage;
@@ -405,28 +405,28 @@ function players.merge_damage(first, second)
return first;
end
function players.update_dps(bypass_freeze)
function this.update_dps(bypass_freeze)
local cached_config = config.current_config.damage_meter_UI.settings;
if cached_config.freeze_dps_on_quest_end and quest_status.flow_state >= quest_status.flow_states.KILLCAM and not bypass_freeze then
return;
end
players.total.dps = 0;
for _, player in pairs(players.list) do
players.update_player_dps(player);
this.total.dps = 0;
for _, player in pairs(this.list) do
this.update_player_dps(player);
end
for _, servant in pairs(non_players.servant_list) do
players.update_player_dps(servant);
this.update_player_dps(servant);
end
for _, otomo in pairs(non_players.otomo_list) do
players.update_player_dps(otomo);
this.update_player_dps(otomo);
end
end
function players.update_player_dps(player)
function this.update_player_dps(player)
local cached_config = config.current_config.damage_meter_UI.settings;
if player.join_time == -1 then
@@ -447,54 +447,54 @@ function players.update_player_dps(player)
end
end
players.total.dps = players.total.dps + player.dps;
this.total.dps = this.total.dps + player.dps;
end
function players.sort_players()
function this.sort_players()
local cached_config = config.current_config.damage_meter_UI;
if cached_config.settings.my_damage_bar_location == "Normal" then
table.insert(players.display_list, players.myself);
table.insert(this.display_list, this.myself);
end
-- sort here
if cached_config.sorting.type == "Normal" then
if cached_config.sorting.reversed_order then
table.sort(players.display_list, function(left, right)
table.sort(this.display_list, function(left, right)
return left.id > right.id;
end);
else
table.sort(players.display_list, function(left, right)
table.sort(this.display_list, function(left, right)
return left.id < right.id;
end);
end
elseif cached_config.sorting.type == "DPS" then
if cached_config.sorting.reversed_order then
table.sort(players.display_list, function(left, right)
table.sort(this.display_list, function(left, right)
return left.dps < right.dps;
end);
else
table.sort(players.display_list, function(left, right)
table.sort(this.display_list, function(left, right)
return left.dps > right.dps;
end);
end
else
if cached_config.sorting.reversed_order then
table.sort(players.display_list, function(left, right)
table.sort(this.display_list, function(left, right)
return left.display.total_damage < right.display.total_damage;
end);
else
table.sort(players.display_list, function(left, right)
table.sort(this.display_list, function(left, right)
return left.display.total_damage > right.display.total_damage;
end);
end
end
if cached_config.settings.my_damage_bar_location == "First" then
table.insert(players.display_list, 1, players.myself);
table.insert(this.display_list, 1, this.myself);
elseif cached_config.settings.my_damage_bar_location == "Last" then
table.insert(players.display_list, players.myself);
table.insert(this.display_list, this.myself);
end
end
@@ -504,7 +504,7 @@ local find_master_player_method = player_manager_type_def:get_method("findMaster
local player_base_type_def = sdk.find_type_definition("snow.player.PlayerBase");
local get_pos_field = player_base_type_def:get_method("get_Pos");
function players.update_myself_position()
function this.update_myself_position()
if singletons.player_manager == nil then
customization_menu.status = "No player manager";
return;
@@ -518,15 +518,15 @@ function players.update_myself_position()
local position = get_pos_field:call(master_player);
if position ~= nil then
players.myself_position = position;
this.myself_position = position;
end
end
function players.init()
players.list = {};
players.display_list = {};
players.total = players.new(0, "Total", 0, 0, players.types.total);
players.myself = players.new(-1, "DummyMHROverlay", -1, -1, players.types.myself);
function this.init()
this.list = {};
this.display_list = {};
this.total = this.new(0, "Total", 0, 0, this.types.total);
this.myself = this.new(-1, "DummyMHROverlay", -1, -1, this.types.myself);
end
local lobby_manager_type_def = sdk.find_type_definition("snow.LobbyManager");
@@ -556,15 +556,15 @@ local get_master_rank_method = progress_manager_type_def:get_method("get_MasterR
local get_master_player_id_method = player_manager_type_def:get_method("getMasterPlayerID");
function players.update_player_list(is_on_quest)
function this.update_player_list(is_on_quest)
if is_on_quest then
players.update_player_list_(quest_hunter_info_field);
this.update_player_list_(quest_hunter_info_field);
else
players.update_player_list_(hunter_info_field);
this.update_player_list_(hunter_info_field);
end
end
function players.update_player_list_(hunter_info_field_)
function this.update_player_list_(hunter_info_field_)
local cached_config = config.current_config.damage_meter_UI;
if singletons.lobby_manager == nil then
@@ -598,10 +598,10 @@ function players.update_player_list_(hunter_info_field_)
return;
end
if players.myself == nil or myself_id ~= players.myself.id then
players.list[players.myself.id] = nil;
players.myself = players.new(myself_id, myself_player_name, myself_master_rank, myself_hunter_rank, players.types.myself);
players.list[myself_id] = players.myself;
if this.myself == nil or myself_id ~= this.myself.id then
this.list[this.myself.id] = nil;
this.myself = this.new(myself_id, myself_player_name, myself_master_rank, myself_hunter_rank, this.types.myself);
this.list[myself_id] = this.myself;
end
-- other players
@@ -637,62 +637,62 @@ function players.update_player_list_(hunter_info_field_)
goto continue
end
local player = players.list[id];
local player = this.list[id];
if player == nil then
if name == players.myself.name then
player = players.new(id, name, master_rank, hunter_rank, players.types.myself);
players.myself = player;
players.list[id] = player;
if name == this.myself.name then
player = this.new(id, name, master_rank, hunter_rank, this.types.myself);
this.myself = player;
this.list[id] = player;
else
player = players.new(id, name, master_rank, hunter_rank, players.types.other_player);
players.list[id] = player;
player = this.new(id, name, master_rank, hunter_rank, this.types.other_player);
this.list[id] = player;
end
elseif player.name ~= name or player.hunter_rank ~= hunter_rank or player.master_rank ~= master_rank then
if name == players.myself.name then
player = players.new(id, name, master_rank, hunter_rank, players.types.myself);
players.myself = player;
players.list[id] = player;
if name == this.myself.name then
player = this.new(id, name, master_rank, hunter_rank, this.types.myself);
this.myself = player;
this.list[id] = player;
else
player = players.new(id, name, master_rank, hunter_rank, players.types.other_player);
players.list[id] = player;
player = this.new(id, name, master_rank, hunter_rank, this.types.other_player);
this.list[id] = player;
end
end
if player ~= players.myself then
table.insert(players.display_list, player);
if player ~= this.myself then
table.insert(this.display_list, player);
end
::continue::
end
end
function players.init_UI(player)
function this.init_UI(player)
local cached_config = config.current_config.damage_meter_UI;
if player.type == players.types.myself then
if player.type == this.types.myself then
player.damage_UI = damage_UI_entity.new(cached_config.myself, player.type);
elseif player.type == players.types.other_player then
elseif player.type == this.types.other_player then
player.damage_UI = damage_UI_entity.new(cached_config.other_players, player.type);
elseif player.type == players.types.total then
elseif player.type == this.types.total then
player.damage_UI = damage_UI_entity.new(cached_config.total, player.type);
end
end
function players.init_highlighted_UI()
function this.init_highlighted_UI()
local cached_config = config.current_config.damage_meter_UI;
players.highlighted_damage_UI = damage_UI_entity.new(cached_config.highlighted, players.types.highlight);
this.highlighted_damage_UI = damage_UI_entity.new(cached_config.highlighted, this.types.highlight);
end
function players.draw(player, position_on_screen, opacity_scale, top_damage, top_dps)
function this.draw(player, position_on_screen, opacity_scale, top_damage, top_dps)
damage_UI_entity.draw(player, position_on_screen, opacity_scale, top_damage, top_dps);
end
function players.init_module()
function this.init_module()
config = require("MHR_Overlay.Misc.config");
singletons = require("MHR_Overlay.Game_Handler.singletons");
customization_menu = require("MHR_Overlay.UI.customization_menu");
@@ -703,7 +703,7 @@ function players.init_module()
language = require("MHR_Overlay.Misc.language");
non_players = require("MHR_Overlay.Damage_Meter.non_players");
players.init();
this.init();
end
return players;
return this;

View File

@@ -1,4 +1,4 @@
local env_creature = {};
local this = {};
local drawing;
local customization_menu;
@@ -38,9 +38,9 @@ local os = os;
local ValueType = ValueType;
local package = package;
env_creature.list = {};
this.list = {};
function env_creature.new(REcreature)
function this.new(REcreature)
local creature = {};
creature.life = 0;
@@ -50,22 +50,22 @@ function env_creature.new(REcreature)
creature.position = Vector3f.new(0, 0, 0);
creature.distance = 0;
env_creature.init(creature, REcreature);
env_creature.init_UI(creature);
this.init(creature, REcreature);
this.init_UI(creature);
if env_creature.list[REcreature] == nil then
env_creature.list[REcreature] = creature;
if this.list[REcreature] == nil then
this.list[REcreature] = creature;
end
return creature;
end
function env_creature.get_creature(REcreature)
if env_creature.list[REcreature] == nil then
env_creature.list[REcreature] = env_creature.new(REcreature);
function this.get_creature(REcreature)
if this.list[REcreature] == nil then
this.list[REcreature] = this.new(REcreature);
end
return env_creature.list[REcreature];
return this.list[REcreature];
end
local environment_creature_base_type_def = sdk.find_type_definition("snow.envCreature.EnvironmentCreatureBase");
@@ -77,7 +77,7 @@ local get_env_creature_name_message_method = message_manager_type_def:get_method
local get_pos_method = environment_creature_base_type_def:get_method("get_Pos");
function env_creature.init(creature, REcreature)
function this.init(creature, REcreature)
local creature_type = creature_type_field:get_data(REcreature);
if creature_type == nil then
customization_menu.status = "No env creature type";
@@ -91,7 +91,7 @@ function env_creature.init(creature, REcreature)
end
end
function env_creature.init_UI(creature)
function this.init_UI(creature)
creature.name_label = utils.table.deep_copy(config.current_config.endemic_life_UI.creature_name_label);
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
@@ -100,13 +100,13 @@ function env_creature.init_UI(creature)
creature.name_label.offset.y = creature.name_label.offset.y * global_scale_modifier;
end
function env_creature.update_position(REcreature, creature)
function this.update_position(REcreature, creature)
if not config.current_config.endemic_life_UI.enabled then
return;
end
if creature == nil then
creature = env_creature.get_creature(REcreature);
creature = this.get_creature(REcreature);
end
local position = get_pos_method:call(REcreature);
@@ -115,13 +115,13 @@ function env_creature.update_position(REcreature, creature)
end
end
function env_creature.update(REcreature, creature)
function this.update(REcreature, creature)
if not config.current_config.endemic_life_UI.enabled then
return;
end
if creature == nil then
creature = env_creature.get_creature(REcreature);
creature = this.get_creature(REcreature);
end
local is_inactive = creature_is_inactive_field:get_data(REcreature);
@@ -130,7 +130,7 @@ function env_creature.update(REcreature, creature)
end
end
function env_creature.draw(creature, position_on_screen, opacity_scale)
function this.draw(creature, position_on_screen, opacity_scale)
if d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available then
local text_width, text_height = drawing.font:measure(creature.name);
position_on_screen.x = position_on_screen.x - text_width / 2;
@@ -139,11 +139,11 @@ function env_creature.draw(creature, position_on_screen, opacity_scale)
drawing.draw_label(creature.name_label, position_on_screen, opacity_scale, creature.name);
end
function env_creature.init_list()
env_creature.list = {};
function this.init_list()
this.list = {};
end
function env_creature.init_module()
function this.init_module()
singletons = require("MHR_Overlay.Game_Handler.singletons");
customization_menu = require("MHR_Overlay.UI.customization_menu");
config = require("MHR_Overlay.Misc.config");
@@ -156,4 +156,4 @@ function env_creature.init_module()
--ailment_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_UI_entity");
end
return env_creature;
return this;

View File

@@ -1,4 +1,4 @@
local env_creature_hook = {};
local this = {};
local env_creature;
local config;
@@ -39,22 +39,22 @@ local package = package;
local environment_creature_base_type_def = sdk.find_type_definition("snow.envCreature.EnvironmentCreatureBase");
local update_method = environment_creature_base_type_def:get_method("update");
function env_creature_hook.update(REcreature)
function this.update(REcreature)
local creature = env_creature.get_creature(REcreature);
env_creature.update(REcreature, creature);
env_creature.update_position(REcreature, creature);
end
function env_creature_hook.init_module()
function this.init_module()
config = require("MHR_Overlay.Misc.config");
env_creature = require("MHR_Overlay.Endemic_Life.env_creature");
time = require("MHR_Overlay.Game_Handler.time");
sdk.hook(update_method, function(args)
pcall(env_creature_hook.update, sdk.to_managed_object(args[2]));
pcall(this.update, sdk.to_managed_object(args[2]));
end, function(retval)
return retval;
end);
end
return env_creature_hook;
return this;

View File

@@ -1,4 +1,4 @@
local keyboard = {};
local this = {};
local config;
local singletons;
@@ -49,13 +49,13 @@ 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");
keyboard.hotkey_modifiers_down = {
this.hotkey_modifiers_down = {
ctrl = false,
shift = false,
alt = false
};
keyboard.keys = {
this.keys = {
[0] = "None",
[1] = "Left Mouse Button",
[2] = "Right Mouse Button",
@@ -334,7 +334,7 @@ keyboard.keys = {
};
function keyboard.update()
function this.update()
if singletons.game_keyboard == nil then
customization_menu.status = "No game keyboard";
return;
@@ -346,137 +346,137 @@ function keyboard.update()
return;
end
keyboard.check_modifiers(hard_keyboard);
this.check_modifiers(hard_keyboard);
local new_hotkey_registered = keyboard.register_hotkey(hard_keyboard);
local new_hotkey_registered = this.register_hotkey(hard_keyboard);
if new_hotkey_registered then
config.save();
else
keyboard.check_hotkeys(hard_keyboard);
this.check_hotkeys(hard_keyboard);
end
keyboard.hotkey_modifiers_down.ctrl = false;
keyboard.hotkey_modifiers_down.shift = false;
keyboard.hotkey_modifiers_down.alt = false
this.hotkey_modifiers_down.ctrl = false;
this.hotkey_modifiers_down.shift = false;
this.hotkey_modifiers_down.alt = false
end
function keyboard.check_modifiers(hard_keyboard)
function this.check_modifiers(hard_keyboard)
local is_ctrl_down = get_down_method:call(hard_keyboard, 17);
if is_ctrl_down ~= nil then
keyboard.hotkey_modifiers_down.ctrl = is_ctrl_down;
this.hotkey_modifiers_down.ctrl = is_ctrl_down;
end
local is_shift_down = get_down_method:call(hard_keyboard, 16);
if is_shift_down ~= nil then
keyboard.hotkey_modifiers_down.shift = is_shift_down;
this.hotkey_modifiers_down.shift = is_shift_down;
end
local is_alt_down = get_down_method:call(hard_keyboard, 18);
if is_alt_down ~= nil then
keyboard.hotkey_modifiers_down.alt = is_alt_down;
this.hotkey_modifiers_down.alt = is_alt_down;
end
end
function keyboard.register_hotkey(hard_keyboard)
function this.register_hotkey(hard_keyboard)
local cached_config = config.current_config.global_settings.hotkeys_with_modifiers;
if customization_menu.all_UI_waiting_for_key then
for key, key_name in pairs(keyboard.keys) do
for key, key_name in pairs(this.keys) do
if get_release_method:call(hard_keyboard, key) then
cached_config.all_UI.ctrl = keyboard.hotkey_modifiers_down.ctrl;
cached_config.all_UI.shift = keyboard.hotkey_modifiers_down.shift;
cached_config.all_UI.alt = keyboard.hotkey_modifiers_down.alt;
cached_config.all_UI.ctrl = this.hotkey_modifiers_down.ctrl;
cached_config.all_UI.shift = this.hotkey_modifiers_down.shift;
cached_config.all_UI.alt = this.hotkey_modifiers_down.alt;
cached_config.all_UI.key = key;
customization_menu.all_UI_waiting_for_key = false;
return true;
end
end
elseif customization_menu.small_monster_UI_waiting_for_key then
for key, key_name in pairs(keyboard.keys) do
for key, key_name in pairs(this.keys) do
if get_release_method:call(hard_keyboard, key) then
cached_config.small_monster_UI.ctrl = keyboard.hotkey_modifiers_down.ctrl;
cached_config.small_monster_UI.shift = keyboard.hotkey_modifiers_down.shift;
cached_config.small_monster_UI.alt = keyboard.hotkey_modifiers_down.alt;
cached_config.small_monster_UI.ctrl = this.hotkey_modifiers_down.ctrl;
cached_config.small_monster_UI.shift = this.hotkey_modifiers_down.shift;
cached_config.small_monster_UI.alt = this.hotkey_modifiers_down.alt;
cached_config.small_monster_UI.key = key;
customization_menu.small_monster_UI_waiting_for_key = false;
return true;
end
end
elseif customization_menu.large_monster_UI_waiting_for_key then
for key, key_name in pairs(keyboard.keys) do
for key, key_name in pairs(this.keys) do
if get_release_method:call(hard_keyboard, key) then
cached_config.large_monster_UI.ctrl = keyboard.hotkey_modifiers_down.ctrl;
cached_config.large_monster_UI.shift = keyboard.hotkey_modifiers_down.shift;
cached_config.large_monster_UI.alt = keyboard.hotkey_modifiers_down.alt;
cached_config.large_monster_UI.ctrl = this.hotkey_modifiers_down.ctrl;
cached_config.large_monster_UI.shift = this.hotkey_modifiers_down.shift;
cached_config.large_monster_UI.alt = this.hotkey_modifiers_down.alt;
cached_config.large_monster_UI.key = key;
customization_menu.large_monster_UI_waiting_for_key = false;
return true;
end
end
elseif customization_menu.large_monster_dynamic_UI_waiting_for_key then
for key, key_name in pairs(keyboard.keys) do
for key, key_name in pairs(this.keys) do
if get_release_method:call(hard_keyboard, key) then
cached_config.large_monster_dynamic_UI.ctrl = keyboard.hotkey_modifiers_down.ctrl;
cached_config.large_monster_dynamic_UI.shift = keyboard.hotkey_modifiers_down.shift;
cached_config.large_monster_dynamic_UI.alt = keyboard.hotkey_modifiers_down.alt;
cached_config.large_monster_dynamic_UI.ctrl = this.hotkey_modifiers_down.ctrl;
cached_config.large_monster_dynamic_UI.shift = this.hotkey_modifiers_down.shift;
cached_config.large_monster_dynamic_UI.alt = this.hotkey_modifiers_down.alt;
cached_config.large_monster_dynamic_UI.key = key;
customization_menu.large_monster_dynamic_UI_waiting_for_key = false;
return true;
end
end
elseif customization_menu.large_monster_static_UI_waiting_for_key then
for key, key_name in pairs(keyboard.keys) do
for key, key_name in pairs(this.keys) do
if get_release_method:call(hard_keyboard, key) then
cached_config.large_monster_static_UI.ctrl = keyboard.hotkey_modifiers_down.ctrl;
cached_config.large_monster_static_UI.shift = keyboard.hotkey_modifiers_down.shift;
cached_config.large_monster_static_UI.alt = keyboard.hotkey_modifiers_down.alt;
cached_config.large_monster_static_UI.ctrl = this.hotkey_modifiers_down.ctrl;
cached_config.large_monster_static_UI.shift = this.hotkey_modifiers_down.shift;
cached_config.large_monster_static_UI.alt = this.hotkey_modifiers_down.alt;
cached_config.large_monster_static_UI.key = key;
customization_menu.large_monster_static_UI_waiting_for_key = false;
return true;
end
end
elseif customization_menu.large_monster_highlighted_UI_waiting_for_key then
for key, key_name in pairs(keyboard.keys) do
for key, key_name in pairs(this.keys) do
if get_release_method:call(hard_keyboard, key) then
cached_config.large_monster_highlighted_UI.ctrl = keyboard.hotkey_modifiers_down.ctrl;
cached_config.large_monster_highlighted_UI.shift = keyboard.hotkey_modifiers_down.shift;
cached_config.large_monster_highlighted_UI.alt = keyboard.hotkey_modifiers_down.alt;
cached_config.large_monster_highlighted_UI.ctrl = this.hotkey_modifiers_down.ctrl;
cached_config.large_monster_highlighted_UI.shift = this.hotkey_modifiers_down.shift;
cached_config.large_monster_highlighted_UI.alt = this.hotkey_modifiers_down.alt;
cached_config.large_monster_highlighted_UI.key = key;
customization_menu.large_monster_highlighted_UI_waiting_for_key = false;
return true;
end
end
elseif customization_menu.time_UI_waiting_for_key then
for key, key_name in pairs(keyboard.keys) do
for key, key_name in pairs(this.keys) do
if get_release_method:call(hard_keyboard, key) then
cached_config.time_UI.ctrl = keyboard.hotkey_modifiers_down.ctrl;
cached_config.time_UI.shift = keyboard.hotkey_modifiers_down.shift;
cached_config.time_UI.alt = keyboard.hotkey_modifiers_down.alt;
cached_config.time_UI.ctrl = this.hotkey_modifiers_down.ctrl;
cached_config.time_UI.shift = this.hotkey_modifiers_down.shift;
cached_config.time_UI.alt = this.hotkey_modifiers_down.alt;
cached_config.time_UI.key = key;
customization_menu.time_UI_waiting_for_key = false;
return true;
end
end
elseif customization_menu.damage_meter_UI_waiting_for_key then
for key, key_name in pairs(keyboard.keys) do
for key, key_name in pairs(this.keys) do
if get_release_method:call(hard_keyboard, key) then
cached_config.damage_meter_UI.ctrl = keyboard.hotkey_modifiers_down.ctrl;
cached_config.damage_meter_UI.shift = keyboard.hotkey_modifiers_down.shift;
cached_config.damage_meter_UI.alt = keyboard.hotkey_modifiers_down.alt;
cached_config.damage_meter_UI.ctrl = this.hotkey_modifiers_down.ctrl;
cached_config.damage_meter_UI.shift = this.hotkey_modifiers_down.shift;
cached_config.damage_meter_UI.alt = this.hotkey_modifiers_down.alt;
cached_config.damage_meter_UI.key = key;
customization_menu.damage_meter_UI_waiting_for_key = false;
return true;
end
end
elseif customization_menu.endemic_life_UI_waiting_for_key then
for key, key_name in pairs(keyboard.keys) do
for key, key_name in pairs(this.keys) do
if get_release_method:call(hard_keyboard, key) then
cached_config.endemic_life_UI.ctrl = keyboard.hotkey_modifiers_down.ctrl;
cached_config.endemic_life_UI.shift = keyboard.hotkey_modifiers_down.shift;
cached_config.endemic_life_UI.alt = keyboard.hotkey_modifiers_down.alt;
cached_config.endemic_life_UI.ctrl = this.hotkey_modifiers_down.ctrl;
cached_config.endemic_life_UI.shift = this.hotkey_modifiers_down.shift;
cached_config.endemic_life_UI.alt = this.hotkey_modifiers_down.alt;
cached_config.endemic_life_UI.key = key;
customization_menu.endemic_life_UI_waiting_for_key = false;
return true;
@@ -487,12 +487,12 @@ function keyboard.register_hotkey(hard_keyboard)
return false;
end
function keyboard.check_hotkeys(hard_keyboard)
function this.check_hotkeys(hard_keyboard)
local cached_config = config.current_config.global_settings.hotkeys_with_modifiers;
if not (cached_config.all_UI.ctrl and not keyboard.hotkey_modifiers_down.ctrl)
and not (cached_config.all_UI.shift and not keyboard.hotkey_modifiers_down.shift)
and not (cached_config.all_UI.alt and not keyboard.hotkey_modifiers_down.alt) then
if not (cached_config.all_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
and not (cached_config.all_UI.shift and not this.hotkey_modifiers_down.shift)
and not (cached_config.all_UI.alt and not this.hotkey_modifiers_down.alt) then
if get_release_method:call(hard_keyboard, math.tointeger(cached_config.all_UI.key)) then
local is_any_enabled = config.current_config.time_UI.enabled
@@ -511,17 +511,17 @@ function keyboard.check_hotkeys(hard_keyboard)
end
end
if not (cached_config.small_monster_UI.ctrl and not keyboard.hotkey_modifiers_down.ctrl)
and not (cached_config.small_monster_UI.shift and not keyboard.hotkey_modifiers_down.shift)
and not (cached_config.small_monster_UI.alt and not keyboard.hotkey_modifiers_down.alt) then
if not (cached_config.small_monster_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
and not (cached_config.small_monster_UI.shift and not this.hotkey_modifiers_down.shift)
and not (cached_config.small_monster_UI.alt and not this.hotkey_modifiers_down.alt) then
if get_release_method:call(hard_keyboard, math.tointeger(cached_config.small_monster_UI.key)) then
config.current_config.small_monster_UI.enabled = not config.current_config.small_monster_UI.enabled;
end
end
if not (cached_config.large_monster_UI.ctrl and not keyboard.hotkey_modifiers_down.ctrl)
and not (cached_config.large_monster_UI.shift and not keyboard.hotkey_modifiers_down.shift)
and not (cached_config.large_monster_UI.alt and not keyboard.hotkey_modifiers_down.alt) then
if not (cached_config.large_monster_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
and not (cached_config.large_monster_UI.shift and not this.hotkey_modifiers_down.shift)
and not (cached_config.large_monster_UI.alt and not this.hotkey_modifiers_down.alt) then
if get_release_method:call(hard_keyboard, math.tointeger(cached_config.large_monster_UI.key)) then
local is_any_enabled = config.current_config.large_monster_UI.dynamic.enabled
or config.current_config.large_monster_UI.static.enabled
@@ -533,27 +533,27 @@ function keyboard.check_hotkeys(hard_keyboard)
end
end
if not (cached_config.large_monster_dynamic_UI.ctrl and not keyboard.hotkey_modifiers_down.ctrl)
and not (cached_config.large_monster_dynamic_UI.shift and not keyboard.hotkey_modifiers_down.shift)
and not (cached_config.large_monster_dynamic_UI.alt and not keyboard.hotkey_modifiers_down.alt) then
if not (cached_config.large_monster_dynamic_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
and not (cached_config.large_monster_dynamic_UI.shift and not this.hotkey_modifiers_down.shift)
and not (cached_config.large_monster_dynamic_UI.alt and not this.hotkey_modifiers_down.alt) then
if get_release_method:call(hard_keyboard,
math.tointeger(cached_config.large_monster_dynamic_UI.key)) then
config.current_config.large_monster_UI.dynamic.enabled = not config.current_config.large_monster_UI.dynamic.enabled;
end
end
if not (cached_config.large_monster_static_UI.ctrl and not keyboard.hotkey_modifiers_down.ctrl)
and not (cached_config.large_monster_static_UI.shift and not keyboard.hotkey_modifiers_down.shift)
and not (cached_config.large_monster_static_UI.alt and not keyboard.hotkey_modifiers_down.alt) then
if not (cached_config.large_monster_static_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
and not (cached_config.large_monster_static_UI.shift and not this.hotkey_modifiers_down.shift)
and not (cached_config.large_monster_static_UI.alt and not this.hotkey_modifiers_down.alt) then
if get_release_method:call(hard_keyboard,
math.tointeger(cached_config.large_monster_static_UI.key)) then
config.current_config.large_monster_UI.static.enabled = not config.current_config.large_monster_UI.static.enabled;
end
end
if not (cached_config.large_monster_highlighted_UI.ctrl and not keyboard.hotkey_modifiers_down.ctrl)
and not (cached_config.large_monster_highlighted_UI.shift and not keyboard.hotkey_modifiers_down.shift)
and not (cached_config.large_monster_highlighted_UI.alt and not keyboard.hotkey_modifiers_down.alt) then
if not (cached_config.large_monster_highlighted_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
and not (cached_config.large_monster_highlighted_UI.shift and not this.hotkey_modifiers_down.shift)
and not (cached_config.large_monster_highlighted_UI.alt and not this.hotkey_modifiers_down.alt) then
if get_release_method:call(hard_keyboard,
math.tointeger(cached_config.large_monster_highlighted_UI.key)) then
config.current_config.large_monster_UI.highlighted.enabled = not
@@ -561,32 +561,32 @@ function keyboard.check_hotkeys(hard_keyboard)
end
end
if not (cached_config.time_UI.ctrl and not keyboard.hotkey_modifiers_down.ctrl)
and not (cached_config.time_UI.shift and not keyboard.hotkey_modifiers_down.shift)
and not (cached_config.time_UI.alt and not keyboard.hotkey_modifiers_down.alt) then
if not (cached_config.time_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
and not (cached_config.time_UI.shift and not this.hotkey_modifiers_down.shift)
and not (cached_config.time_UI.alt and not this.hotkey_modifiers_down.alt) then
if get_release_method:call(hard_keyboard, math.tointeger(cached_config.time_UI.key)) then
config.current_config.time_UI.enabled = not config.current_config.time_UI.enabled;
end
end
if not (cached_config.damage_meter_UI.ctrl and not keyboard.hotkey_modifiers_down.ctrl)
and not (cached_config.damage_meter_UI.shift and not keyboard.hotkey_modifiers_down.shift)
and not (cached_config.damage_meter_UI.alt and not keyboard.hotkey_modifiers_down.alt) then
if not (cached_config.damage_meter_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
and not (cached_config.damage_meter_UI.shift and not this.hotkey_modifiers_down.shift)
and not (cached_config.damage_meter_UI.alt and not this.hotkey_modifiers_down.alt) then
if get_release_method:call(hard_keyboard, math.tointeger(cached_config.damage_meter_UI.key)) then
config.current_config.damage_meter_UI.enabled = not config.current_config.damage_meter_UI.enabled;
end
end
if not (cached_config.endemic_life_UI.ctrl and not keyboard.hotkey_modifiers_down.ctrl)
and not (cached_config.endemic_life_UI.shift and not keyboard.hotkey_modifiers_down.shift)
and not (cached_config.endemic_life_UI.alt and not keyboard.hotkey_modifiers_down.alt) then
if not (cached_config.endemic_life_UI.ctrl and not this.hotkey_modifiers_down.ctrl)
and not (cached_config.endemic_life_UI.shift and not this.hotkey_modifiers_down.shift)
and not (cached_config.endemic_life_UI.alt and not this.hotkey_modifiers_down.alt) then
if get_release_method:call(hard_keyboard, math.tointeger(cached_config.endemic_life_UI.key)) then
config.current_config.endemic_life_UI.enabled = not config.current_config.endemic_life_UI.enabled;
end
end
end
function keyboard.get_hotkey_name(hotkey)
function this.get_hotkey_name(hotkey)
local hotkey_name = "";
if hotkey.ctrl then
@@ -601,10 +601,10 @@ function keyboard.get_hotkey_name(hotkey)
hotkey_name = hotkey_name .. "Alt + ";
end
return hotkey_name .. tostring(keyboard.keys[hotkey.key]);
return hotkey_name .. tostring(this.keys[hotkey.key]);
end
function keyboard.init_module()
function this.init_module()
config = require "MHR_Overlay.Misc.config"
singletons = require("MHR_Overlay.Game_Handler.singletons");
customization_menu = require("MHR_Overlay.UI.customization_menu");
@@ -615,4 +615,4 @@ function keyboard.init_module()
time = require("MHR_Overlay.Game_Handler.time");
end
return keyboard;
return this;

View File

@@ -1,4 +1,4 @@
local quest_status = {};
local this = {};
local singletons;
local customization_menu;
@@ -42,7 +42,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
quest_status.flow_states = {
this.flow_states = {
NONE = 0,
IN_LOBBY = 1,
IN_TRAINING_AREA = 2,
@@ -64,15 +64,15 @@ quest_status.flow_states = {
SUMMARY_SCREEN = 32768,
};
quest_status.previous_flow_state = quest_status.flow_states.NONE;
quest_status.flow_state = quest_status.flow_states.NONE;
this.previous_flow_state = this.flow_states.NONE;
this.flow_state = this.flow_states.NONE;
quest_status.index = 0;
quest_status.is_online = false;
this.index = 0;
this.is_online = false;
--quest_status.is_quest_host = false;
quest_status.cart_count = 0;
quest_status.max_cart_count = 3;
this.cart_count = 0;
this.max_cart_count = 3;
local quest_manager_type_def = sdk.find_type_definition("snow.QuestManager");
local on_changed_game_status_method = quest_manager_type_def:get_method("onChangedGameStatus");
@@ -116,8 +116,8 @@ local unique_event_manager_type_def = sdk.find_type_definition("snow.eventcut.Un
local play_event_common_method = unique_event_manager_type_def:get_method("playEventCommon");
local event_manager_dispose_method = unique_event_manager_type_def:get_method("dispose");
function quest_status.get_flow_state_name(flow_state, new_line)
for key, value in pairs(quest_status.flow_states) do
function this.get_flow_state_name(flow_state, new_line)
for key, value in pairs(this.flow_states) do
if value == flow_state then
if new_line then
return "\n" .. tostring(key);
@@ -128,52 +128,52 @@ function quest_status.get_flow_state_name(flow_state, new_line)
end
end
function quest_status.set_flow_state(new_flow_state)
quest_status.previous_flow_state = quest_status.flow_state;
quest_status.flow_state = new_flow_state;
function this.set_flow_state(new_flow_state)
this.previous_flow_state = this.flow_state;
this.flow_state = new_flow_state;
if quest_status.flow_state >= quest_status.flow_states.KILLCAM then
if this.flow_state >= this.flow_states.KILLCAM then
damage_meter_UI.freeze_displayed_players = true;
else
damage_meter_UI.freeze_displayed_players = false;
end
if quest_status.flow_state == quest_status.flow_states.IN_LOBBY or quest_status.flow_state == quest_status.flow_states.IN_TRAINING_AREA then
if this.flow_state == this.flow_states.IN_LOBBY or this.flow_state == this.flow_states.IN_TRAINING_AREA then
players.init();
non_players.init();
small_monster.init_list();
large_monster.init_list();
env_creature.init_list();
damage_meter_UI.last_displayed_players = {};
elseif quest_status.flow_state >= quest_status.flow_states.LOADING_QUEST then
quest_status.get_cart_count();
quest_status.get_max_cart_count();
elseif this.flow_state >= this.flow_states.LOADING_QUEST then
this.get_cart_count();
this.get_max_cart_count();
end
end
function quest_status.get_cart_count()
function this.get_cart_count()
local death_num = get_death_num_method:call(singletons.quest_manager);
if death_num ~= nil then
quest_status.cart_count = death_num;
this.cart_count = death_num;
end
end
function quest_status.get_max_cart_count()
function this.get_max_cart_count()
local quest_life = get_quest_life_method:call(singletons.quest_manager);
if quest_life ~= nil then
quest_status.max_cart_count = quest_life;
this.max_cart_count = quest_life;
end
end
--type 2 = quest start
--type 3 = monster killcam
--type 5 = end screen
function quest_status.on_demo_request_activation(request_data_base)
function this.on_demo_request_activation(request_data_base)
if request_data_base == nil then
return;
end
if quest_status.index ~= 2 then
if this.index ~= 2 then
return;
end
@@ -184,125 +184,125 @@ function quest_status.on_demo_request_activation(request_data_base)
-- QUEST_START_ANIMATION
if request_data_type == 2 then
quest_status.set_flow_state(quest_status.flow_states.QUEST_START_ANIMATION);
this.set_flow_state(this.flow_states.QUEST_START_ANIMATION);
-- KILLCAM
elseif request_data_type == 3 then
quest_status.set_flow_state(quest_status.flow_states.KILLCAM);
this.set_flow_state(this.flow_states.KILLCAM);
-- QUEST_END_ANIMATION
elseif request_data_type == 5 or request_data_type == 6 or request_data_type == 7 then
quest_status.set_flow_state(quest_status.flow_states.QUEST_END_ANIMATION);
this.set_flow_state(this.flow_states.QUEST_END_ANIMATION);
-- PLAYER_DEATH_ANIMATION
elseif request_data_type == 8 then
quest_status.set_flow_state(quest_status.flow_states.PLAYER_DEATH_ANIMATION);
this.set_flow_state(this.flow_states.PLAYER_DEATH_ANIMATION);
-- PLAYER_CART_ANIMATION
elseif request_data_type == 9 then
quest_status.set_flow_state(quest_status.flow_states.PLAYER_CART_ANIMATION);
this.set_flow_state(this.flow_states.PLAYER_CART_ANIMATION);
-- FAST_TRAVEL_ANIMATION
elseif request_data_type == 10 then
quest_status.set_flow_state(quest_status.flow_states.FAST_TRAVEL_ANIMATION);
this.set_flow_state(this.flow_states.FAST_TRAVEL_ANIMATION);
-- WYVERN_RIDING_START_ANIMATION
elseif request_data_type == 11 then
quest_status.set_flow_state(quest_status.flow_states.WYVERN_RIDING_START_ANIMATION);
this.set_flow_state(this.flow_states.WYVERN_RIDING_START_ANIMATION);
end
end
function quest_status.on_demo_end()
if quest_status.index == 2 then
if quest_status.flow_state == quest_status.flow_states.PLAYER_DEATH_ANIMATION
or quest_status.flow_state == quest_status.flow_states.PLAYER_CART_ANIMATION
or quest_status.flow_state == quest_status.flow_states.FAST_TRAVEL_ANIMATION
or quest_status.flow_state == quest_status.flow_states.WYVERN_RIDING_START_ANIMATION then
function this.on_demo_end()
if this.index == 2 then
if this.flow_state == this.flow_states.PLAYER_DEATH_ANIMATION
or this.flow_state == this.flow_states.PLAYER_CART_ANIMATION
or this.flow_state == this.flow_states.FAST_TRAVEL_ANIMATION
or this.flow_state == this.flow_states.WYVERN_RIDING_START_ANIMATION then
quest_status.set_flow_state(quest_status.previous_flow_state);
this.set_flow_state(this.previous_flow_state);
elseif quest_status.flow_state == quest_status.flow_states.QUEST_START_ANIMATION then
elseif this.flow_state == this.flow_states.QUEST_START_ANIMATION then
quest_status.set_flow_state(quest_status.flow_states.PLAYING_QUEST);
this.set_flow_state(this.flow_states.PLAYING_QUEST);
elseif quest_status.flow_state == quest_status.flow_states.KILLCAM then
elseif this.flow_state == this.flow_states.KILLCAM then
quest_status.set_flow_state(quest_status.flow_states.QUEST_END_TIMER);
this.set_flow_state(this.flow_states.QUEST_END_TIMER);
end
end
end
function quest_status.on_set_quest_clear()
if quest_status.index == 2 and quest_status.flow_state ~= quest_status.flow_states.KILLCAM then
quest_status.set_flow_state(quest_status.flow_states.QUEST_END_TIMER);
function this.on_set_quest_clear()
if this.index == 2 and this.flow_state ~= this.flow_states.KILLCAM then
this.set_flow_state(this.flow_states.QUEST_END_TIMER);
end
end
function quest_status.on_quest_end_set_state()
if quest_status.index == 2 then
quest_status.set_flow_state(quest_status.flow_states.QUEST_END_SCREEN);
function this.on_quest_end_set_state()
if this.index == 2 then
this.set_flow_state(this.flow_states.QUEST_END_SCREEN);
end
end
function quest_status.on_gui_result_reward_do_open()
if quest_status.index == 3 then
quest_status.set_flow_state(quest_status.flow_states.REWARD_SCREEN);
function this.on_gui_result_reward_do_open()
if this.index == 3 then
this.set_flow_state(this.flow_states.REWARD_SCREEN);
end
end
function quest_status.on_gui_result_pay_off_do_open()
if quest_status.index == 3 then
quest_status.set_flow_state(quest_status.flow_states.SUMMARY_SCREEN);
function this.on_gui_result_pay_off_do_open()
if this.index == 3 then
this.set_flow_state(this.flow_states.SUMMARY_SCREEN);
end
end
function quest_status.on_play_event_common()
quest_status.set_flow_state(quest_status.flow_states.CUTSCENE);
function this.on_play_event_common()
this.set_flow_state(this.flow_states.CUTSCENE);
end
function quest_status.on_event_manager_dispose()
if quest_status.flow_state == quest_status.flow_states.CUTSCENE then
quest_status.set_flow_state(quest_status.previous_flow_state);
function this.on_event_manager_dispose()
if this.flow_state == this.flow_states.CUTSCENE then
this.set_flow_state(this.previous_flow_state);
end
end
function quest_status.on_set_quest_fail()
if quest_status.flow_state == quest_status.flow_states.PLAYER_DEATH_ANIMATION or
quest_status.flow_state == quest_status.flow_states.PLAYER_CART_ANIMATION or
quest_status.flow_state == quest_status.flow_states.FAST_TRAVEL_ANIMATION or
quest_status.flow_state == quest_status.flow_states.WYVERN_RIDING_START_ANIMATION then
function this.on_set_quest_fail()
if this.flow_state == this.flow_states.PLAYER_DEATH_ANIMATION or
this.flow_state == this.flow_states.PLAYER_CART_ANIMATION or
this.flow_state == this.flow_states.FAST_TRAVEL_ANIMATION or
this.flow_state == this.flow_states.WYVERN_RIDING_START_ANIMATION then
quest_status.set_flow_state(quest_status.flow_states.QUEST_END_ANIMATION);
this.set_flow_state(this.flow_states.QUEST_END_ANIMATION);
end
end
function quest_status.on_village_fast_travel(area)
function this.on_village_fast_travel(area)
if area == nil then
return;
end
if area == 7 then
quest_status.set_flow_state(quest_status.flow_states.IN_TRAINING_AREA);
this.set_flow_state(this.flow_states.IN_TRAINING_AREA);
else
quest_status.set_flow_state(quest_status.flow_states.IN_LOBBY);
this.set_flow_state(this.flow_states.IN_LOBBY);
end
end
function quest_status.on_changed_game_status(new_quest_status)
quest_status.index = new_quest_status;
function this.on_changed_game_status(new_quest_status)
this.index = new_quest_status;
if quest_status.index == 0 then
quest_status.set_flow_state(quest_status.flow_states.NONE);
elseif quest_status.index == 1 then
quest_status.set_flow_state(quest_status.flow_states.IN_LOBBY);
elseif quest_status.index == 2 then
quest_status.set_flow_state(quest_status.flow_states.LOADING_QUEST);
elseif quest_status.index == 3 then
quest_status.set_flow_state(quest_status.flow_states.SUMMARY_SCREEN);
if this.index == 0 then
this.set_flow_state(this.flow_states.NONE);
elseif this.index == 1 then
this.set_flow_state(this.flow_states.IN_LOBBY);
elseif this.index == 2 then
this.set_flow_state(this.flow_states.LOADING_QUEST);
elseif this.index == 3 then
this.set_flow_state(this.flow_states.SUMMARY_SCREEN);
end
end
function quest_status.init()
function this.init()
if singletons.quest_manager == nil then
return;
end
@@ -313,22 +313,22 @@ function quest_status.init()
return;
end
quest_status.index = new_quest_status;
this.index = new_quest_status;
if quest_status.index == 0 then
quest_status.set_flow_state(quest_status.flow_states.NONE);
elseif quest_status.index == 1 then
quest_status.set_flow_state(quest_status.flow_states.IN_LOBBY);
elseif quest_status.index == 2 then
quest_status.set_flow_state(quest_status.flow_states.PLAYING_QUEST);
elseif quest_status.index == 3 then
quest_status.set_flow_state(quest_status.flow_states.SUMMARY_SCREEN);
if this.index == 0 then
this.set_flow_state(this.flow_states.NONE);
elseif this.index == 1 then
this.set_flow_state(this.flow_states.IN_LOBBY);
elseif this.index == 2 then
this.set_flow_state(this.flow_states.PLAYING_QUEST);
elseif this.index == 3 then
this.set_flow_state(this.flow_states.SUMMARY_SCREEN);
end
quest_status.update_is_training_area();
this.update_is_training_area();
end
function quest_status.update_is_online()
function this.update_is_online()
if singletons.lobby_manager == nil then
return;
end
@@ -338,7 +338,7 @@ function quest_status.update_is_online()
return;
end
quest_status.is_online = is_quest_online;
this.is_online = is_quest_online;
end
--[[function quest_status.update_is_quest_host()
@@ -354,7 +354,7 @@ end
quest_status.is_quest_host = is_quest_host;
end--]]
function quest_status.update_is_training_area()
function this.update_is_training_area()
if singletons.village_area_manager == nil then
customization_menu.status = "No village area manager";
return;
@@ -366,11 +366,11 @@ function quest_status.update_is_training_area()
end
if _is_training_area then
quest_status.set_flow_state(quest_status.flow_states.IN_TRAINING_AREA);
this.set_flow_state(this.flow_states.IN_TRAINING_AREA);
end
end
function quest_status.init_module()
function this.init_module()
singletons = require("MHR_Overlay.Game_Handler.singletons");
customization_menu = require("MHR_Overlay.UI.customization_menu");
players = require("MHR_Overlay.Damage_Meter.players");
@@ -381,63 +381,63 @@ function quest_status.init_module()
env_creature = require("MHR_Overlay.Endemic_Life.env_creature");
non_players = require("MHR_Overlay.Damage_Meter.non_players");
quest_status.init();
this.init();
sdk.hook(on_changed_game_status_method, function(args)
quest_status.on_changed_game_status(sdk.to_int64(args[3]));
this.on_changed_game_status(sdk.to_int64(args[3]));
end, function(retval) return retval; end);
sdk.hook(set_quest_clear_method, function(args)
quest_status.on_set_quest_clear();
this.on_set_quest_clear();
end, function(retval) return retval; end);
sdk.hook(set_quest_clear_sub_method, function(args)
quest_status.on_set_quest_clear();
this.on_set_quest_clear();
end, function(retval) return retval; end);
sdk.hook(set_quest_clear_sub_hyakurui_method, function(args)
quest_status.on_set_quest_clear();
this.on_set_quest_clear();
end, function(retval) return retval; end);
sdk.hook(demo_request_activation_method, function(args)
quest_status.on_demo_request_activation(sdk.to_managed_object(args[3]));
this.on_demo_request_activation(sdk.to_managed_object(args[3]));
end, function(retval) return retval; end);
sdk.hook(demo_end_method, function(args)
quest_status.on_demo_end();
this.on_demo_end();
end, function(retval) return retval; end);
sdk.hook(set_quest_clear_method, function(args)
quest_status.on_set_quest_clear();
this.on_set_quest_clear();
end, function(retval) return retval; end);
sdk.hook(quest_end_set_state_method, function(args)
quest_status.on_quest_end_set_state();
this.on_quest_end_set_state();
end, function(retval) return retval; end);
sdk.hook(gui_result_reward_do_open_method, function(args)
quest_status.on_gui_result_reward_do_open();
this.on_gui_result_reward_do_open();
end, function(retval) return retval; end);
sdk.hook(gui_result_pay_off_do_open_method, function(args)
quest_status.on_gui_result_pay_off_do_open();
this.on_gui_result_pay_off_do_open();
end, function(retval) return retval; end);
sdk.hook(play_event_common_method, function(args)
quest_status.on_play_event_common();
this.on_play_event_common();
end, function(retval) return retval; end);
sdk.hook(event_manager_dispose_method, function(args)
quest_status.on_event_manager_dispose();
this.on_event_manager_dispose();
end, function(retval) return retval; end);
sdk.hook(set_quest_fail_method, function(args)
quest_status.on_set_quest_fail();
this.on_set_quest_fail();
end, function(retval) return retval; end);
sdk.hook(fast_travel_method, function(args)
quest_status.on_village_fast_travel(sdk.to_int64(args[3]));
this.on_village_fast_travel(sdk.to_int64(args[3]));
end, function(retval) return retval; end);
end
return quest_status;
return this;

View File

@@ -1,4 +1,4 @@
local screen = {};
local this = {};
local config;
local singletons;
@@ -35,25 +35,25 @@ local os = os;
local ValueType = ValueType;
local package = package;
screen.width = 1920;
screen.height = 1080;
this.width = 1920;
this.height = 1080;
function screen.update_window_size()
function this.update_window_size()
local width;
local height;
if d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available then
width, height = d2d.surface_size();
else
width, height = screen.get_game_window_size();
width, height = this.get_game_window_size();
end
if width ~= nil then
screen.width = width;
this.width = width;
end
if height ~= nil then
screen.height = height;
this.height = height;
end
end
@@ -65,7 +65,7 @@ local size_type = get_size_method:get_return_type();
local width_field = size_type:get_field("w");
local height_field = size_type:get_field("h");
function screen.get_game_window_size()
function this.get_game_window_size()
if scene_view == nil then
scene_view = sdk.call_native_func(singletons.scene_manager, sdk.find_type_definition("via.SceneManager") , "get_MainView");
@@ -96,7 +96,7 @@ function screen.get_game_window_size()
return screen_width, screen_height;
end
function screen.calculate_absolute_coordinates(position)
function this.calculate_absolute_coordinates(position)
local global_position_modifier = config.current_config.global_settings.modifiers.global_position_modifier;
local _position = {
@@ -111,29 +111,29 @@ function screen.calculate_absolute_coordinates(position)
-- top right
if position.anchor == "Top-Right" then
local screen_x = screen.width - _position.x;
local screen_x = this.width - _position.x;
return { x = screen_x, y = _position.y };
end
-- bottom left
if position.anchor == "Bottom-Left" then
local screen_y = screen.height - _position.y;
local screen_y = this.height - _position.y;
return { x = _position.x, y = screen_y };
end
-- bottom right
if position.anchor == "Bottom-Right" then
local screen_x = screen.width - _position.x;
local screen_y = screen.height - _position.y;
local screen_x = this.width - _position.x;
local screen_y = this.height - _position.y;
return { x = screen_x, y = screen_y };
end
return { x = _position.x, y = _position.y };
end
function screen.init_module()
function this.init_module()
config = require("MHR_Overlay.Misc.config");
singletons = require("MHR_Overlay.Game_Handler.singletons");
end
return screen;
return this;

View File

@@ -1,4 +1,4 @@
local singletons = {};
local this = {};
local sdk = sdk;
local tostring = tostring;
@@ -32,207 +32,207 @@ local os = os;
local ValueType = ValueType;
local package = package;
singletons.message_manager = nil;
singletons.enemy_manager = nil;
singletons.lobby_manager = nil;
singletons.progress_manager = nil;
singletons.quest_manager = nil;
singletons.player_manager = nil;
singletons.village_area_manager = nil;
singletons.gui_manager = nil;
singletons.game_keyboard = nil;
singletons.scene_manager = nil;
singletons.game_manager = nil;
this.message_manager = nil;
this.enemy_manager = nil;
this.lobby_manager = nil;
this.progress_manager = nil;
this.quest_manager = nil;
this.player_manager = nil;
this.village_area_manager = nil;
this.gui_manager = nil;
this.game_keyboard = nil;
this.scene_manager = nil;
this.game_manager = nil;
function singletons.init()
singletons.init_message_manager();
singletons.init_enemy_manager();
singletons.init_lobby_manager()
singletons.init_progress_manager();
singletons.init_quest_manager();
singletons.init_player_manager();
singletons.init_village_area_manager();
singletons.init_gui_manager();
singletons.init_game_keyboard();
singletons.init_scene_manager();
singletons.init_game_manager();
singletons.init_servant_manager();
singletons.init_otomo_manager();
function this.init()
this.init_message_manager();
this.init_enemy_manager();
this.init_lobby_manager()
this.init_progress_manager();
this.init_quest_manager();
this.init_player_manager();
this.init_village_area_manager();
this.init_gui_manager();
this.init_game_keyboard();
this.init_scene_manager();
this.init_game_manager();
this.init_servant_manager();
this.init_otomo_manager();
end
function singletons.init_message_manager()
if singletons.message_manager ~= nil then
function this.init_message_manager()
if this.message_manager ~= nil then
return;
end
singletons.message_manager = sdk.get_managed_singleton("snow.gui.MessageManager");
if singletons.message_manager == nil then
this.message_manager = sdk.get_managed_singleton("snow.gui.MessageManager");
if this.message_manager == nil then
--log.error("[MHR Overlay] No message manager");
end
return singletons.message_manager;
return this.message_manager;
end
function singletons.init_enemy_manager()
if singletons.enemy_manager ~= nil then
function this.init_enemy_manager()
if this.enemy_manager ~= nil then
return;
end
singletons.enemy_manager = sdk.get_managed_singleton("snow.enemy.EnemyManager");
if singletons.enemy_manager == nil then
this.enemy_manager = sdk.get_managed_singleton("snow.enemy.EnemyManager");
if this.enemy_manager == nil then
--log.error("[MHR Overlay] No enemy manager");
end
return singletons.enemy_manager;
return this.enemy_manager;
end
function singletons.init_lobby_manager()
if singletons.lobby_manager ~= nil then
function this.init_lobby_manager()
if this.lobby_manager ~= nil then
return;
end
singletons.lobby_manager = sdk.get_managed_singleton("snow.LobbyManager");
if singletons.lobby_manager == nil then
this.lobby_manager = sdk.get_managed_singleton("snow.LobbyManager");
if this.lobby_manager == nil then
--log.error("[MHR Overlay] No lobby manager");
return false;
end
return singletons.lobby_manager;
return this.lobby_manager;
end
function singletons.init_progress_manager()
if singletons.progress_manager ~= nil then
function this.init_progress_manager()
if this.progress_manager ~= nil then
return;
end
singletons.progress_manager = sdk.get_managed_singleton("snow.progress.ProgressManager");
if singletons.progress_manager == nil then
this.progress_manager = sdk.get_managed_singleton("snow.progress.ProgressManager");
if this.progress_manager == nil then
--log.error("[MHR Overlay] No progress manager");
return false;
end
return singletons.progress_manager;
return this.progress_manager;
end
function singletons.init_quest_manager()
if singletons.quest_manager ~= nil then
function this.init_quest_manager()
if this.quest_manager ~= nil then
return;
end
singletons.quest_manager = sdk.get_managed_singleton("snow.QuestManager");
if singletons.quest_manager == nil then
this.quest_manager = sdk.get_managed_singleton("snow.QuestManager");
if this.quest_manager == nil then
--log.error("[MHR Overlay] No quest manager");
end
return singletons.quest_manager;
return this.quest_manager;
end
function singletons.init_player_manager()
if singletons.player_manager ~= nil then
function this.init_player_manager()
if this.player_manager ~= nil then
return;
end
singletons.player_manager = sdk.get_managed_singleton("snow.player.PlayerManager");
if singletons.player_manager == nil then
this.player_manager = sdk.get_managed_singleton("snow.player.PlayerManager");
if this.player_manager == nil then
--log.error("[MHR Overlay] No player manager");
end
return singletons.player_manager;
return this.player_manager;
end
function singletons.init_village_area_manager()
if singletons.village_area_manager ~= nil then
function this.init_village_area_manager()
if this.village_area_manager ~= nil then
return;
end
singletons.village_area_manager = sdk.get_managed_singleton("snow.VillageAreaManager");
if singletons.village_area_manager == nil then
this.village_area_manager = sdk.get_managed_singleton("snow.VillageAreaManager");
if this.village_area_manager == nil then
--log.error("[MHR Overlay] No village area manager");
end
return singletons.village_area_manager;
return this.village_area_manager;
end
function singletons.init_gui_manager()
if singletons.gui_manager ~= nil then
function this.init_gui_manager()
if this.gui_manager ~= nil then
return;
end
singletons.gui_manager = sdk.get_managed_singleton("snow.gui.GuiManager");
if singletons.gui_manager == nil then
this.gui_manager = sdk.get_managed_singleton("snow.gui.GuiManager");
if this.gui_manager == nil then
--log.error("[MHR Overlay] No gui manager");
end
return singletons.gui_manager;
return this.gui_manager;
end
function singletons.init_game_keyboard()
if singletons.game_keyboard ~= nil then
function this.init_game_keyboard()
if this.game_keyboard ~= nil then
return;
end
singletons.game_keyboard = sdk.get_managed_singleton("snow.GameKeyboard");
if singletons.game_keyboard == nil then
this.game_keyboard = sdk.get_managed_singleton("snow.GameKeyboard");
if this.game_keyboard == nil then
--log.error("[MHR Overlay] No game keyboard");
end
return singletons.game_keyboard;
return this.game_keyboard;
end
function singletons.init_scene_manager()
if singletons.scene_manager ~= nil then
function this.init_scene_manager()
if this.scene_manager ~= nil then
return;
end
singletons.scene_manager = sdk.get_native_singleton("via.SceneManager");
if singletons.scene_manager == nil then
this.scene_manager = sdk.get_native_singleton("via.SceneManager");
if this.scene_manager == nil then
--log.error("[MHR Overlay] No enemy manager");
end
return singletons.scene_manager;
return this.scene_manager;
end
function singletons.init_game_manager()
if singletons.game_manager ~= nil then
function this.init_game_manager()
if this.game_manager ~= nil then
return;
end
singletons.game_manager = sdk.get_managed_singleton("snow.SnowGameManager");
if singletons.game_manager == nil then
this.game_manager = sdk.get_managed_singleton("snow.SnowGameManager");
if this.game_manager == nil then
--log.error("[MHR Overlay] No enemy manager");
end
return singletons.game_manager;
return this.game_manager;
end
function singletons.init_servant_manager()
if singletons.servant_manager ~= nil then
function this.init_servant_manager()
if this.servant_manager ~= nil then
return;
end
singletons.servant_manager = sdk.get_managed_singleton("snow.ai.ServantManager");
if singletons.servant_manager == nil then
this.servant_manager = sdk.get_managed_singleton("snow.ai.ServantManager");
if this.servant_manager == nil then
--log.error("[MHR Overlay] No enemy manager");
end
return singletons.servant_manager;
return this.servant_manager;
end
function singletons.init_otomo_manager()
if singletons.otomo_manager ~= nil then
function this.init_otomo_manager()
if this.otomo_manager ~= nil then
return;
end
singletons.otomo_manager = sdk.get_managed_singleton("snow.otomo.OtomoManager");
if singletons.otomo_manager == nil then
this.otomo_manager = sdk.get_managed_singleton("snow.otomo.OtomoManager");
if this.otomo_manager == nil then
--log.error("[MHR Overlay] No enemy manager");
end
return singletons.otomo_manager;
return this.otomo_manager;
end
function singletons.init_module()
singletons.init();
function this.init_module()
this.init();
end
return singletons;
return this;

View File

@@ -1,4 +1,4 @@
local time = {};
local this = {};
local singletons;
local customization_menu;
@@ -44,19 +44,19 @@ local quest_manager_type_def = sdk.find_type_definition("snow.QuestManager");
local get_quest_elapsed_time_min_method = quest_manager_type_def:get_method("getQuestElapsedTimeMin");
local get_quest_elapsed_time_sec_method = quest_manager_type_def:get_method("getQuestElapsedTimeSec");
time.total_elapsed_seconds = 0;
time.elapsed_minutes = 0;
time.elapsed_seconds = 0;
this.total_elapsed_seconds = 0;
this.elapsed_minutes = 0;
this.elapsed_seconds = 0;
time.total_elapsed_script_seconds = 0;
time.last_elapsed_script_seconds = 0;
this.total_elapsed_script_seconds = 0;
this.last_elapsed_script_seconds = 0;
function time.update_script_time()
time.total_elapsed_script_seconds = os.clock();
function this.update_script_time()
this.total_elapsed_script_seconds = os.clock();
end
function time.tick()
time.update_script_time();
function this.tick()
this.update_script_time();
if singletons.quest_manager == nil then
return;
@@ -66,20 +66,20 @@ function time.tick()
if quest_time_elapsed_minutes == nil then
customization_menu.status = "No quest time elapsed minutes";
else
time.elapsed_minutes = quest_time_elapsed_minutes;
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
customization_menu.status = "No quest time total elapsed seconds";
else
time.total_elapsed_seconds = quest_time_total_elapsed_seconds;
this.total_elapsed_seconds = quest_time_total_elapsed_seconds;
end
time.elapsed_seconds = quest_time_total_elapsed_seconds - quest_time_elapsed_minutes * 60;
this.elapsed_seconds = quest_time_total_elapsed_seconds - quest_time_elapsed_minutes * 60;
if time.total_elapsed_script_seconds - time.last_elapsed_script_seconds > 0.5 then
time.last_elapsed_script_seconds = time.total_elapsed_script_seconds;
if this.total_elapsed_script_seconds - this.last_elapsed_script_seconds > 0.5 then
this.last_elapsed_script_seconds = this.total_elapsed_script_seconds;
local is_on_quest = quest_status.flow_state ~= quest_status.flow_states.IN_LOBBY and quest_status.flow_state ~= quest_status.flow_states.IN_TRAINING_AREA;
@@ -93,7 +93,7 @@ function time.tick()
end
end
function time.init_module()
function this.init_module()
players = require("MHR_Overlay.Damage_Meter.players");
singletons = require("MHR_Overlay.Game_Handler.singletons");
customization_menu = require("MHR_Overlay.UI.customization_menu");
@@ -103,4 +103,4 @@ function time.init_module()
non_players = require("MHR_Overlay.Damage_Meter.non_players");
end
return time;
return this;

View File

@@ -1,4 +1,4 @@
local config = {};
local this = {};
local utils;
local language;
@@ -35,24 +35,24 @@ local os = os;
local ValueType = ValueType;
local package = package;
config.version = "2.4.1";
this.version = "2.4.1";
config.config_folder = "MHR Overlay\\configs\\";
config.current_config_value_file_name = "MHR Overlay\\config.json";
this.config_folder = "MHR Overlay\\configs\\";
this.current_config_value_file_name = "MHR Overlay\\config.json";
config.current_config_name = nil;
config.current_config = nil;
this.current_config_name = nil;
this.current_config = nil;
config.config_names = {};
config.configs = {};
this.config_names = {};
this.configs = {};
config.default_config = nil;
this.default_config = nil;
local is_old_config_transferred = false;
function config.init_default()
config.default_config = {
version = config.version,
function this.init_default()
this.default_config = {
version = this.version,
global_settings = {
language = "default",
@@ -5666,37 +5666,37 @@ function config.init_default()
};
end
function config.load_current_config_value()
local loaded_config = json.load_file(config.current_config_value_file_name);
function this.load_current_config_value()
local loaded_config = json.load_file(this.current_config_value_file_name);
if loaded_config ~= nil then
if loaded_config.config == nil then
log.info("[MHR Overlay] old config.json loaded successfully");
local config_save = {
config = config.current_config_name
config = this.current_config_name
};
config.current_config_name = "old_config";
config.current_config = utils.table.merge(config.default_config, loaded_config);
config.current_config.version = config.version;
this.current_config_name = "old_config";
this.current_config = utils.table.merge(this.default_config, loaded_config);
this.current_config.version = this.version;
config.save(config.config_folder .. "old_config.json", config.current_config);
config.save_current_config_name();
this.save(this.config_folder .. "old_config.json", this.current_config);
this.save_current_config_name();
table.insert(config.config_names, "old_config");
table.insert(config.configs, config.current_config);
table.insert(this.config_names, "old_config");
table.insert(this.configs, this.current_config);
is_old_config_transferred = true;
else
log.info("[MHR Overlay] config.json loaded successfully");
config.current_config_name = loaded_config.config;
this.current_config_name = loaded_config.config;
end
else
log.error("[MHR Overlay] Failed to load config.json");
end
end
function config.load_configs()
function this.load_configs()
local config_files = fs.glob([[MHR Overlay\\configs\\.*json]]);
if config_files == nil then
@@ -5705,7 +5705,7 @@ function config.load_configs()
for i, config_file_name in ipairs(config_files) do
local config_name = config_file_name:gsub(config.config_folder, ""):gsub(".json","");
local config_name = config_file_name:gsub(this.config_folder, ""):gsub(".json","");
if config_name == "old_config" and is_old_config_transferred then
goto continue;
@@ -5716,16 +5716,16 @@ function config.load_configs()
log.info("[MHR Overlay] " .. config_name .. ".json loaded successfully");
local merged_config = utils.table.merge(config.default_config, loaded_config);
merged_config.version = config.version;
local merged_config = utils.table.merge(this.default_config, loaded_config);
merged_config.version = this.version;
table.insert(config.config_names, config_name);
table.insert(config.configs, merged_config);
table.insert(this.config_names, config_name);
table.insert(this.configs, merged_config);
config.save(config_file_name, merged_config);
this.save(config_file_name, merged_config);
if config_name == config.current_config_name then
config.current_config = merged_config;
if config_name == this.current_config_name then
this.current_config = merged_config;
end
else
log.error("[MHR Overlay] Failed to load " .. config_name .. ".json");
@@ -5734,29 +5734,29 @@ function config.load_configs()
::continue::
end
if config.current_config == nil then
if #config.configs > 0 then
config.current_config_name = config.config_names[1];
config.current_config = config.configs[1];
if this.current_config == nil then
if #this.configs > 0 then
this.current_config_name = this.config_names[1];
this.current_config = this.configs[1];
else
config.current_config_name = "default";
config.current_config = utils.table.deep_copy(config.default_config);
this.current_config_name = "default";
this.current_config = utils.table.deep_copy(this.default_config);
table.insert(config.config_names, config.current_config_name);
table.insert(config.configs, config.current_config);
table.insert(this.config_names, this.current_config_name);
table.insert(this.configs, this.current_config);
config.save(config.current_config_name, config.current_config);
this.save(this.current_config_name, this.current_config);
end
config.save_current_config_name();
this.save_current_config_name();
end
end
function config.save_current_config_name()
config.save(config.current_config_value_file_name, { config = config.current_config_name });
function this.save_current_config_name()
this.save(this.current_config_value_file_name, { config = this.current_config_name });
end
function config.save(file_name, config_table)
function this.save(file_name, config_table)
-- save current config to disk, replacing any existing file
local success = json.dump_file(file_name, config_table);
if success then
@@ -5766,63 +5766,63 @@ function config.save(file_name, config_table)
end
end
function config.save_current()
config.save(config.config_folder .. config.current_config_name .. ".json", config.current_config);
function this.save_current()
this.save(this.config_folder .. this.current_config_name .. ".json", this.current_config);
end
function config.create_new(config_file_name, config_table)
table.insert(config.config_names, config_file_name);
table.insert(config.configs, config_table);
function this.create_new(config_file_name, config_table)
table.insert(this.config_names, config_file_name);
table.insert(this.configs, config_table);
config.save(config.config_folder .. config_file_name .. ".json", config_table);
this.save(this.config_folder .. config_file_name .. ".json", config_table);
config.current_config_name = config_file_name;
config.current_config = config_table;
this.current_config_name = config_file_name;
this.current_config = config_table;
config.save_current_config_name();
this.save_current_config_name();
end
function config.new(config_name)
function this.new(config_name)
if config_name == "" then
return;
end
local new_config = utils.table.deep_copy(config.default_config);
local new_config = utils.table.deep_copy(this.default_config);
config.create_new(config_name, new_config);
this.create_new(config_name, new_config);
end
function config.duplicate(config_name)
function this.duplicate(config_name)
if config_name == "" then
return;
end
local new_config = utils.table.deep_copy(config.current_config);
local new_config = utils.table.deep_copy(this.current_config);
config.create_new(config_name, new_config);
this.create_new(config_name, new_config);
end
function config.reset()
config.current_config = utils.table.deep_copy(config.default_config);
function this.reset()
this.current_config = utils.table.deep_copy(this.default_config);
local index = utils.table.find_index(config.config_names, config.current_config_name);
config.configs[index] = config.current_config;
local index = utils.table.find_index(this.config_names, this.current_config_name);
this.configs[index] = this.current_config;
end
function config.update(index)
config.current_config = config.configs[index];
config.save_current_config_name();
function this.update(index)
this.current_config = this.configs[index];
this.save_current_config_name();
end
function config.init_module()
function this.init_module()
utils = require("MHR_Overlay.Misc.utils");
language = require("MHR_Overlay.Misc.language");
config.init_default();
config.load_current_config_value();
config.load_configs();
this.init_default();
this.load_current_config_value();
this.load_configs();
language.update(utils.table.find_index(language.language_names, config.current_config.global_settings.language, false));
language.update(utils.table.find_index(language.language_names, this.current_config.global_settings.language, false));
end
return config;
return this;

View File

@@ -1,5 +0,0 @@
local debug = {};
debug.enabled = false;
return debug;

View File

@@ -1,4 +1,4 @@
local language = {};
local this = {};
local utils;
@@ -34,12 +34,12 @@ local os = os;
local ValueType = ValueType;
local package = package;
language.language_folder = "MHR Overlay\\languages\\";
this.language_folder = "MHR Overlay\\languages\\";
language.current_language = {};
this.current_language = {};
language.default_language = {
this.default_language = {
font_name = "NotoSansKR-Bold.otf",
parts = {
head = "Head",
@@ -509,10 +509,10 @@ language.default_language = {
}
};
language.language_names = { "default"};
language.languages = { language.default_language };
this.language_names = { "default"};
this.languages = { this.default_language };
function language.load()
function this.load()
local language_files = fs.glob([[MHR Overlay\\languages\\.*json]]);
if language_files == nil then
@@ -520,18 +520,18 @@ function language.load()
end
for i, language_file_name in ipairs(language_files) do
local language_name = language_file_name:gsub(language.language_folder, ""):gsub(".json","");
local language_name = language_file_name:gsub(this.language_folder, ""):gsub(".json","");
local loaded_language = json.load_file(language_file_name);
if loaded_language ~= nil then
log.info("[MHR Overlay] " .. language_file_name .. ".json loaded successfully");
table.insert(language.language_names, language_name);
table.insert(this.language_names, language_name);
local merged_language = utils.table.merge(language.default_language, loaded_language);
table.insert(language.languages, merged_language);
local merged_language = utils.table.merge(this.default_language, loaded_language);
table.insert(this.languages, merged_language);
language.save(language_file_name, merged_language);
this.save(language_file_name, merged_language);
else
@@ -540,7 +540,7 @@ function language.load()
end
end
function language.save(file_name, language_table)
function this.save(file_name, language_table)
local success = json.dump_file(file_name, language_table);
if success then
log.info("[MHR Overlay] " .. file_name .. " saved successfully");
@@ -549,20 +549,20 @@ function language.save(file_name, language_table)
end
end
function language.save_default()
language.save(language.language_folder .. "en-us.json", language.default_language);
function this.save_default()
this.save(this.language_folder .. "en-us.json", this.default_language);
end
function language.update(index)
language.current_language = language.languages[index];
function this.update(index)
this.current_language = this.languages[index];
end
function language.init_module()
function this.init_module()
utils = require("MHR_Overlay.Misc.utils");
language.save_default();
language.load();
language.current_language = language.default_language;
this.save_default();
this.load();
this.current_language = this.default_language;
end
return language;
return this;

View File

@@ -1,4 +1,4 @@
local part_names = {};
local this = {};
local language;
@@ -34,10 +34,10 @@ local os = os;
local ValueType = ValueType;
local package = package;
part_names.list = {};
this.list = {};
function part_names.init()
part_names.list = {
function this.init()
this.list = {
[98] = -- Great Izuchi 98
{
language.current_language.parts.head,
@@ -922,8 +922,8 @@ function part_names.init()
};
end
function part_names.get_part_name(monster_id, part_id)
local monster_parts = part_names.list[monster_id];
function this.get_part_name(monster_id, part_id)
local monster_parts = this.list[monster_id];
if monster_parts == nil then
return "?";
end
@@ -932,10 +932,10 @@ function part_names.get_part_name(monster_id, part_id)
return part_name;
end
function part_names.init_module()
function this.init_module()
language = require("MHR_Overlay.Misc.language");
part_names.init();
this.init();
end
return part_names;
return this;

View File

@@ -1,4 +1,4 @@
local ailment_buildup = {};
local this = {};
local players;
local language;
@@ -42,7 +42,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function ailment_buildup.draw(monster, ailment_buildup_UI, cached_config, ailment_buildups_position_on_screen, opacity_scale)
function this.draw(monster, ailment_buildup_UI, cached_config, ailment_buildups_position_on_screen, opacity_scale)
local cached_config = cached_config.ailment_buildups;
local cached_damage_meter_UI_config = config.current_config.damage_meter_UI;
@@ -231,7 +231,7 @@ function ailment_buildup.draw(monster, ailment_buildup_UI, cached_config, ailmen
end
function ailment_buildup.init_module()
function this.init_module()
players = require("MHR_Overlay.Damage_Meter.players");
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
@@ -243,4 +243,4 @@ function ailment_buildup.init_module()
drawing = require("MHR_Overlay.UI.drawing");
end
return ailment_buildup;
return this;

View File

@@ -1,4 +1,4 @@
local ailment_hook = {};
local this = {};
local small_monster;
local large_monster;
@@ -60,7 +60,7 @@ local blast_param_type = blast_param_field:get_type();
local blast_damage_method = blast_param_type:get_method("get_BlastDamage");
local blast_adjust_rate_method = blast_param_type:get_method("get_BlastDamageAdjustRateByEnemyLv");
function ailment_hook.poison_proc(poison_param)
function this.poison_proc(poison_param)
if poison_param == nil then
return;
end
@@ -88,7 +88,7 @@ function ailment_hook.poison_proc(poison_param)
ailments.clear_ailment_contribution(monster, ailments.poison_id);
end
function ailment_hook.blast_proc(blast_param)
function this.blast_proc(blast_param)
if blast_param == nil then
return;
end
@@ -118,7 +118,7 @@ function ailment_hook.blast_proc(blast_param)
ailments.clear_ailment_contribution(monster, ailments.blast_id);
end
function ailment_hook.stock_damage()
function this.stock_damage()
for enemy, monster in pairs(large_monster.list) do
local damage_param = damage_param_field:get_data(enemy);
if damage_param == nil then
@@ -144,29 +144,29 @@ function ailment_hook.stock_damage()
end
end
function ailment_hook.init_module()
function this.init_module()
small_monster = require("MHR_Overlay.Monsters.small_monster");
large_monster = require("MHR_Overlay.Monsters.large_monster");
config = require("MHR_Overlay.Misc.config");
ailments = require("MHR_Overlay.Monsters.ailments");
sdk.hook(stock_damage_method, function(args)
pcall(ailment_hook.stock_damage, sdk.to_managed_object(args[2]));
pcall(this.stock_damage, sdk.to_managed_object(args[2]));
end, function(retval)
return retval;
end);
sdk.hook(on_poison_activate_proc_method, function(args)
pcall(ailment_hook.poison_proc, sdk.to_managed_object(args[2]));
pcall(this.poison_proc, sdk.to_managed_object(args[2]));
end, function(retval)
return retval;
end);
sdk.hook(on_blast_activate_proc_method, function(args)
pcall(ailment_hook.blast_proc, sdk.to_managed_object(args[2]));
pcall(this.blast_proc, sdk.to_managed_object(args[2]));
end, function(retval)
return retval;
end);
end
return ailment_hook;
return this;

View File

@@ -1,4 +1,4 @@
local ailments = {};
local this = {};
local players;
local language;
@@ -60,29 +60,29 @@ local package = package;
--15 Koyashi
--16 SteelFang
ailments.paralyze_id = 0;
ailments.sleep_id = 1;
ailments.stun_id = 2;
ailments.flash_id = 3;
ailments.poison_id = 4;
ailments.blast_id = 5;
ailments.exhaust_id = 6;
ailments.ride_id = 7;
ailments.water_id = 8;
ailments.fire_id = 9;
ailments.ice_id = 10;
ailments.thunder_id = 11;
ailments.fall_trap_id = 12;
ailments.shock_trap_id = 13;
ailments.capture_id = 14 --tranq bomb
ailments.koyashi_id = 15; --dung bomb
ailments.steel_fang_id = 16;
this.paralyze_id = 0;
this.sleep_id = 1;
this.stun_id = 2;
this.flash_id = 3;
this.poison_id = 4;
this.blast_id = 5;
this.exhaust_id = 6;
this.ride_id = 7;
this.water_id = 8;
this.fire_id = 9;
this.ice_id = 10;
this.thunder_id = 11;
this.fall_trap_id = 12;
this.shock_trap_id = 13;
this.capture_id = 14 --tranq bomb
this.koyashi_id = 15; --dung bomb
this.steel_fang_id = 16;
ailments.fall_quick_sand_id = 17;
ailments.fall_otomo_trap_id = 18;
ailments.shock_otomo_trap_id = 19;
this.fall_quick_sand_id = 17;
this.fall_otomo_trap_id = 18;
this.shock_otomo_trap_id = 19;
function ailments.new(_ailments, ailment_id)
function this.new(_ailments, ailment_id)
local new_ailment = {}
new_ailment = {};
@@ -105,140 +105,140 @@ function ailments.new(_ailments, ailment_id)
new_ailment.last_change_time = time.total_elapsed_script_seconds;
if ailment_id == ailments.paralyze_id then
if ailment_id == this.paralyze_id then
new_ailment.name = language.current_language.ailments.paralysis;
elseif ailment_id == ailments.sleep_id then
elseif ailment_id == this.sleep_id then
new_ailment.name = language.current_language.ailments.sleep;
elseif ailment_id == ailments.stun_id then
elseif ailment_id == this.stun_id then
new_ailment.name = language.current_language.ailments.stun;
elseif ailment_id == ailments.flash_id then
elseif ailment_id == this.flash_id then
new_ailment.name = language.current_language.ailments.flash;
elseif ailment_id == ailments.poison_id then
elseif ailment_id == this.poison_id then
new_ailment.name = language.current_language.ailments.poison;
elseif ailment_id == ailments.blast_id then
elseif ailment_id == this.blast_id then
new_ailment.name = language.current_language.ailments.blast;
elseif ailment_id == ailments.exhaust_id then
elseif ailment_id == this.exhaust_id then
new_ailment.name = language.current_language.ailments.exhaust;
elseif ailment_id == ailments.ride_id then
elseif ailment_id == this.ride_id then
new_ailment.name = language.current_language.ailments.ride;
elseif ailment_id == ailments.water_id then
elseif ailment_id == this.water_id then
new_ailment.name = language.current_language.ailments.waterblight;
elseif ailment_id == ailments.fire_id then
elseif ailment_id == this.fire_id then
new_ailment.name = language.current_language.ailments.fireblight;
elseif ailment_id == ailments.ice_id then
elseif ailment_id == this.ice_id then
new_ailment.name = language.current_language.ailments.iceblight;
elseif ailment_id == ailments.thunder_id then
elseif ailment_id == this.thunder_id then
new_ailment.name = language.current_language.ailments.thunderblight;
elseif ailment_id == ailments.fall_trap_id then
elseif ailment_id == this.fall_trap_id then
new_ailment.name = language.current_language.ailments.fall_trap;
elseif ailment_id == ailments.shock_trap_id then
elseif ailment_id == this.shock_trap_id then
new_ailment.name = language.current_language.ailments.shock_trap;
elseif ailment_id == ailments.capture_id then
elseif ailment_id == this.capture_id then
new_ailment.name = language.current_language.ailments.tranq_bomb;
elseif ailment_id == ailments.koyashi_id then
elseif ailment_id == this.koyashi_id then
new_ailment.name = language.current_language.ailments.dung_bomb;
elseif ailment_id == ailments.steel_fang_id then
elseif ailment_id == this.steel_fang_id then
new_ailment.name = language.current_language.ailments.steel_fang;
elseif ailment_id == ailments.fall_quick_sand_id then
elseif ailment_id == this.fall_quick_sand_id then
new_ailment.name = language.current_language.ailments.quick_sand;
elseif ailment_id == ailments.fall_otomo_trap_id then
elseif ailment_id == this.fall_otomo_trap_id then
new_ailment.name = language.current_language.ailments.fall_otomo_trap;
elseif ailment_id == ailments.shock_otomo_trap_id then
elseif ailment_id == this.shock_otomo_trap_id then
new_ailment.name = language.current_language.ailments.shock_otomo_trap;
end
_ailments[ailment_id] = new_ailment;
end
function ailments.init_ailments()
function this.init_ailments()
local _ailments = {};
ailments.new(_ailments, ailments.paralyze_id);
ailments.new(_ailments, ailments.sleep_id);
ailments.new(_ailments, ailments.stun_id);
ailments.new(_ailments, ailments.flash_id);
ailments.new(_ailments, ailments.poison_id);
ailments.new(_ailments, ailments.blast_id);
ailments.new(_ailments, ailments.exhaust_id);
ailments.new(_ailments, ailments.ride_id);
ailments.new(_ailments, ailments.water_id);
ailments.new(_ailments, ailments.fire_id);
ailments.new(_ailments, ailments.ice_id);
ailments.new(_ailments, ailments.thunder_id);
this.new(_ailments, this.paralyze_id);
this.new(_ailments, this.sleep_id);
this.new(_ailments, this.stun_id);
this.new(_ailments, this.flash_id);
this.new(_ailments, this.poison_id);
this.new(_ailments, this.blast_id);
this.new(_ailments, this.exhaust_id);
this.new(_ailments, this.ride_id);
this.new(_ailments, this.water_id);
this.new(_ailments, this.fire_id);
this.new(_ailments, this.ice_id);
this.new(_ailments, this.thunder_id);
ailments.new(_ailments, ailments.fall_trap_id);
ailments.new(_ailments, ailments.shock_trap_id);
ailments.new(_ailments, ailments.capture_id); --tranq bomb
ailments.new(_ailments, ailments.koyashi_id); --dung bomb
ailments.new(_ailments, ailments.steel_fang_id);
this.new(_ailments, this.fall_trap_id);
this.new(_ailments, this.shock_trap_id);
this.new(_ailments, this.capture_id); --tranq bomb
this.new(_ailments, this.koyashi_id); --dung bomb
this.new(_ailments, this.steel_fang_id);
--ailments.new(_ailments, ailments.fall_quick_sand_id);
--ailments.new(_ailments, ailments.fall_otomo_trap_id);
--ailments.new(_ailments, ailments.shock_otomo_trap_id);
_ailments[ailments.poison_id].buildup = {};
_ailments[ailments.poison_id].buildup_share = {};
_ailments[ailments.poison_id].cached_buildup_share = {};
_ailments[this.poison_id].buildup = {};
_ailments[this.poison_id].buildup_share = {};
_ailments[this.poison_id].cached_buildup_share = {};
_ailments[ailments.blast_id].buildup = {};
_ailments[ailments.blast_id].buildup_share = {};
_ailments[this.blast_id].buildup = {};
_ailments[this.blast_id].buildup_share = {};
_ailments[ailments.stun_id].buildup = {};
_ailments[ailments.stun_id].buildup_share = {};
_ailments[this.stun_id].buildup = {};
_ailments[this.stun_id].buildup_share = {};
_ailments[ailments.poison_id].otomo_buildup = {};
_ailments[ailments.poison_id].otomo_buildup_share = {};
_ailments[ailments.poison_id].cached_otomo_buildup_share = {};
_ailments[this.poison_id].otomo_buildup = {};
_ailments[this.poison_id].otomo_buildup_share = {};
_ailments[this.poison_id].cached_otomo_buildup_share = {};
_ailments[ailments.blast_id].otomo_buildup = {};
_ailments[ailments.blast_id].otomo_buildup_share = {};
_ailments[this.blast_id].otomo_buildup = {};
_ailments[this.blast_id].otomo_buildup_share = {};
_ailments[ailments.stun_id].otomo_buildup = {};
_ailments[ailments.stun_id].otomo_buildup_share = {};
_ailments[this.stun_id].otomo_buildup = {};
_ailments[this.stun_id].otomo_buildup_share = {};
return _ailments;
end
function ailments.init_ailment_names(_ailments)
function this.init_ailment_names(_ailments)
for ailment_id, ailment in pairs(_ailments) do
if ailment_id == ailments.paralyze_id then
if ailment_id == this.paralyze_id then
ailment.name = language.current_language.ailments.paralysis;
elseif ailment_id == ailments.sleep_id then
elseif ailment_id == this.sleep_id then
ailment.name = language.current_language.ailments.sleep;
elseif ailment_id == ailments.stun_id then
elseif ailment_id == this.stun_id then
ailment.name = language.current_language.ailments.stun;
elseif ailment_id == ailments.flash_id then
elseif ailment_id == this.flash_id then
ailment.name = language.current_language.ailments.flash;
elseif ailment_id == ailments.poison_id then
elseif ailment_id == this.poison_id then
ailment.name = language.current_language.ailments.poison;
elseif ailment_id == ailments.blast_id then
elseif ailment_id == this.blast_id then
ailment.name = language.current_language.ailments.blast;
elseif ailment_id == ailments.exhaust_id then
elseif ailment_id == this.exhaust_id then
ailment.name = language.current_language.ailments.exhaust;
elseif ailment_id == ailments.ride_id then
elseif ailment_id == this.ride_id then
ailment.name = language.current_language.ailments.ride;
elseif ailment_id == ailments.water_id then
elseif ailment_id == this.water_id then
ailment.name = language.current_language.ailments.waterblight;
elseif ailment_id == ailments.fire_id then
elseif ailment_id == this.fire_id then
ailment.name = language.current_language.ailments.fireblight;
elseif ailment_id == ailments.ice_id then
elseif ailment_id == this.ice_id then
ailment.name = language.current_language.ailments.iceblight;
elseif ailment_id == ailments.thunder_id then
elseif ailment_id == this.thunder_id then
ailment.name = language.current_language.ailments.thunderblight;
elseif ailment_id == ailments.fall_trap_id then
elseif ailment_id == this.fall_trap_id then
ailment.name = language.current_language.ailments.fall_trap;
elseif ailment_id == ailments.shock_trap_id then
elseif ailment_id == this.shock_trap_id then
ailment.name = language.current_language.ailments.shock_trap;
elseif ailment_id == ailments.capture_id then
elseif ailment_id == this.capture_id then
ailment.name = language.current_language.ailments.tranq_bomb;
elseif ailment_id == ailments.koyashi_id then
elseif ailment_id == this.koyashi_id then
ailment.name = language.current_language.ailments.dung_bomb;
elseif ailment_id == ailments.steel_fang_id then
elseif ailment_id == this.steel_fang_id then
ailment.name = language.current_language.ailments.steel_fang;
elseif ailment_id == ailments.fall_quick_sand_id then
elseif ailment_id == this.fall_quick_sand_id then
ailment.name = language.current_language.ailments.quick_sand;
elseif ailment_id == ailments.fall_otomo_trap_id then
elseif ailment_id == this.fall_otomo_trap_id then
ailment.name = language.current_language.ailments.fall_otomo_trap;
elseif ailment_id == ailments.shock_otomo_trap_id then
elseif ailment_id == this.shock_otomo_trap_id then
ailment.name = language.current_language.ailments.shock_otomo_trap;
end
end
@@ -274,7 +274,7 @@ local system_array_type_def = sdk.find_type_definition("System.Array");
local length_method = system_array_type_def:get_method("get_Length");
local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)");
function ailments.update_ailments(enemy, monster)
function this.update_ailments(enemy, monster)
if enemy == nil then
return;
end
@@ -283,7 +283,7 @@ function ailments.update_ailments(enemy, monster)
return;
end
ailments.update_stun_poison_blast_ailments(monster, damage_param);
this.update_stun_poison_blast_ailments(monster, damage_param);
if not config.current_config.large_monster_UI.dynamic.ailments.visibility
and not config.current_config.large_monster_UI.static.ailments.visibility
@@ -307,7 +307,7 @@ function ailments.update_ailments(enemy, monster)
end
for id = 0, condition_param_array_length - 1 do
if id == ailments.stun_id or id == ailments.poison_id or id == ailments.blast_id then
if id == this.stun_id or id == this.poison_id or id == this.blast_id then
goto continue
end
@@ -316,29 +316,29 @@ function ailments.update_ailments(enemy, monster)
goto continue
end
ailments.update_ailment(monster, ailment_param, id);
this.update_ailment(monster, ailment_param, id);
::continue::
end
end
function ailments.update_stun_poison_blast_ailments(monster, damage_param)
function this.update_stun_poison_blast_ailments(monster, damage_param)
local stun_param = stun_param_field:get_data(damage_param);
if stun_param ~= nil then
ailments.update_ailment(monster, stun_param, ailments.stun_id);
this.update_ailment(monster, stun_param, this.stun_id);
end
local poison_param = poison_param_field:get_data(damage_param);
if poison_param ~= nil then
ailments.update_ailment(monster, poison_param, ailments.poison_id);
this.update_ailment(monster, poison_param, this.poison_id);
end
local blast_param = blast_param_field:get_data(damage_param);
if blast_param ~= nil then
ailments.update_ailment(monster, blast_param, ailments.blast_id);
this.update_ailment(monster, blast_param, this.blast_id);
end
end
function ailments.update_ailment(monster, ailment_param, id)
function this.update_ailment(monster, ailment_param, id)
local is_enable = get_is_enable_method:call(ailment_param);
local activate_count_array = get_activate_count_method:call(ailment_param);
local buildup_array = get_stock_method:call(ailment_param);
@@ -413,17 +413,17 @@ function ailments.update_ailment(monster, ailment_param, id)
end
if is_enable ~= monster.ailments[id].is_enable then
ailments.update_last_change_time(monster, id);
this.update_last_change_time(monster, id);
end
monster.ailments[id].is_enable = is_enable;
if activate_count ~= nil then
if activate_count ~= monster.ailments[id].activate_count then
ailments.update_last_change_time(monster, id);
this.update_last_change_time(monster, id);
if id == ailments.stun_id then
ailments.clear_ailment_contribution(monster, ailments.stun_id);
if id == this.stun_id then
this.clear_ailment_contribution(monster, this.stun_id);
end
end
@@ -432,7 +432,7 @@ function ailments.update_ailment(monster, ailment_param, id)
if buildup ~= nil then
if buildup ~= monster.ailments[id].total_buildup then
ailments.update_last_change_time(monster, id);
this.update_last_change_time(monster, id);
end
monster.ailments[id].total_buildup = buildup;
@@ -440,7 +440,7 @@ function ailments.update_ailment(monster, ailment_param, id)
if buildup_limit ~= nil then
if buildup_limit ~= monster.ailments[id].buildup_limit then
ailments.update_last_change_time(monster, id);
this.update_last_change_time(monster, id);
end
monster.ailments[id].buildup_limit = buildup_limit;
@@ -452,7 +452,7 @@ function ailments.update_ailment(monster, ailment_param, id)
if timer ~= nil then
if timer ~= monster.ailments[id].timer then
ailments.update_last_change_time(monster, id);
this.update_last_change_time(monster, id);
end
monster.ailments[id].timer = timer;
@@ -460,7 +460,7 @@ function ailments.update_ailment(monster, ailment_param, id)
if is_active ~= nil then
if is_active ~= monster.ailments[id].is_active then
ailments.update_last_change_time(monster, id);
this.update_last_change_time(monster, id);
end
monster.ailments[id].is_active = is_active;
@@ -468,7 +468,7 @@ function ailments.update_ailment(monster, ailment_param, id)
if duration ~= nil and not monster.ailments[id].is_active then
if duration ~= monster.ailments[id].duration then
ailments.update_last_change_time(monster, id);
this.update_last_change_time(monster, id);
end
monster.ailments[id].duration = duration;
@@ -495,12 +495,12 @@ function ailments.update_ailment(monster, ailment_param, id)
end
end
function ailments.update_last_change_time(monster, id)
function this.update_last_change_time(monster, id)
monster.ailments[id].last_change_time = time.total_elapsed_script_seconds;
end
-- Code by coavins
function ailments.update_poison(monster, poison_param)
function this.update_poison(monster, poison_param)
if monster == nil then
return;
end
@@ -511,95 +511,95 @@ function ailments.update_poison(monster, poison_param)
if is_damage then
local poison_damage = poison_damage_field:get_data(poison_param);
ailments.apply_ailment_damage(monster, ailments.poison_id, poison_damage);
this.apply_ailment_damage(monster, this.poison_id, poison_damage);
end
end
end
function ailments.draw(monster, ailment_UI, cached_config, ailments_position_on_screen, opacity_scale)
function this.draw(monster, ailment_UI, cached_config, ailments_position_on_screen, opacity_scale)
local cached_config = cached_config.ailments;
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
--sort parts here
local displayed_ailments = {};
for id, ailment in pairs(monster.ailments) do
if id == ailments.paralyze_id then
if id == this.paralyze_id then
if not cached_config.filter.paralysis then
goto continue
end
elseif id == ailments.sleep_id then
elseif id == this.sleep_id then
if not cached_config.filter.sleep then
goto continue
end
elseif id == ailments.stun_id then
elseif id == this.stun_id then
if not cached_config.filter.stun then
goto continue
end
elseif id == ailments.flash_id then
elseif id == this.flash_id then
if not cached_config.filter.flash then
goto continue
end
elseif id == ailments.poison_id then
elseif id == this.poison_id then
if not cached_config.filter.poison then
goto continue
end
elseif id == ailments.blast_id then
elseif id == this.blast_id then
if not cached_config.filter.blast then
goto continue
end
elseif id == ailments.exhaust_id then
elseif id == this.exhaust_id then
if not cached_config.filter.exhaust then
goto continue
end
elseif id == ailments.ride_id then
elseif id == this.ride_id then
if not cached_config.filter.ride then
goto continue
end
elseif id == ailments.water_id then
elseif id == this.water_id then
if not cached_config.filter.waterblight then
goto continue
end
elseif id == ailments.fire_id then
elseif id == this.fire_id then
if not cached_config.filter.fireblight then
goto continue
end
elseif id == ailments.ice_id then
elseif id == this.ice_id then
if not cached_config.filter.iceblight then
goto continue
end
elseif id == ailments.thunder_id then
elseif id == this.thunder_id then
if not cached_config.filter.thunderblight then
goto continue
end
elseif id == ailments.fall_trap_id then
elseif id == this.fall_trap_id then
if not cached_config.filter.fall_trap then
goto continue
end
elseif id == ailments.shock_trap_id then
elseif id == this.shock_trap_id then
if not cached_config.filter.shock_trap then
goto continue
end
elseif id == ailments.capture_id then
elseif id == this.capture_id then
if not cached_config.filter.tranq_bomb then
goto continue
end
elseif id == ailments.koyashi_id then
elseif id == this.koyashi_id then
if not cached_config.filter.dung_bomb then
goto continue
end
elseif id == ailments.steel_fang_id then
elseif id == this.steel_fang_id then
if not cached_config.filter.steel_fang then
goto continue
end
elseif id == ailments.fall_quick_sand_id then
elseif id == this.fall_quick_sand_id then
if not cached_config.filter.quick_sand then
goto continue
end
elseif id == ailments.fall_otomo_trap_id then
elseif id == this.fall_otomo_trap_id then
if not cached_config.filter.fall_otomo_trap then
goto continue
end
elseif id == ailments.shock_otomo_trap_id then
elseif id == this.shock_otomo_trap_id then
if not cached_config.filter.shock_otomo_trap then
goto continue
end
@@ -685,9 +685,9 @@ function ailments.draw(monster, ailment_UI, cached_config, ailments_position_on_
end
function ailments.apply_ailment_buildup(monster, player, otomo, ailment_type, ailment_buildup)
function this.apply_ailment_buildup(monster, player, otomo, ailment_type, ailment_buildup)
if monster == nil or
(ailment_type ~= ailments.poison_id and ailment_type ~= ailments.blast_id and ailment_type ~= ailments.stun_id)
(ailment_type ~= this.poison_id and ailment_type ~= this.blast_id and ailment_type ~= this.stun_id)
or (ailment_buildup == 0 or ailment_buildup == nil) then
return;
end
@@ -709,11 +709,11 @@ function ailments.apply_ailment_buildup(monster, player, otomo, ailment_type, ai
end
ailments.calculate_ailment_contribution(monster, ailment_type);
this.calculate_ailment_contribution(monster, ailment_type);
end
-- Code by coavins
function ailments.calculate_ailment_contribution(monster, ailment_type)
function this.calculate_ailment_contribution(monster, ailment_type)
-- get total
local total = 0;
for player, player_buildup in pairs(monster.ailments[ailment_type].buildup) do
@@ -739,7 +739,7 @@ function ailments.calculate_ailment_contribution(monster, ailment_type)
end
end
function ailments.clear_ailment_contribution(monster, ailment_type)
function this.clear_ailment_contribution(monster, ailment_type)
monster.ailments[ailment_type].buildup = {};
monster.ailments[ailment_type].otomo_buildup = {};
@@ -748,7 +748,7 @@ function ailments.clear_ailment_contribution(monster, ailment_type)
end
-- Code by coavins
function ailments.apply_ailment_damage(monster, ailment_type, ailment_damage)
function this.apply_ailment_damage(monster, ailment_type, ailment_damage)
-- we only track poison and blast for now
if ailment_type == nil or ailment_damage == nil then
return;
@@ -759,13 +759,13 @@ function ailments.apply_ailment_damage(monster, ailment_type, ailment_damage)
local buildup_share = monster.ailments[ailment_type].buildup_share;
local otomo_buildup_share = monster.ailments[ailment_type].otomo_buildup_share;
if ailment_type == ailments.poison_id then
if ailment_type == this.poison_id then
damage_source_type = "poison";
otomo_damage_source_type = "otomo poison";
buildup_share = monster.ailments[ailment_type].cached_buildup_share;
otomo_buildup_share = monster.ailments[ailment_type].cached_otomo_buildup_share;
elseif ailment_type == ailments.blast_id then
elseif ailment_type == this.blast_id then
damage_source_type = "blast";
otomo_damage_source_type = "otomo blast";
else
@@ -813,7 +813,7 @@ function ailments.apply_ailment_damage(monster, ailment_type, ailment_damage)
players.update_damage(players.total, damage_source_type, monster.is_large, damage_object);
end
function ailments.init_module()
function this.init_module()
players = require("MHR_Overlay.Damage_Meter.players");
non_players = require("MHR_Overlay.Damage_Meter.non_players");
language = require("MHR_Overlay.Misc.language");
@@ -825,4 +825,4 @@ function ailments.init_module()
large_monster = require("MHR_Overlay.Monsters.large_monster");
end
return ailments;
return this;

View File

@@ -1,4 +1,4 @@
local body_part = {};
local this = {};
local singletons;
local customization_menu;
@@ -44,9 +44,9 @@ local os = os;
local ValueType = ValueType;
local package = package;
body_part.list = {};
this.list = {};
function body_part.new(id, name)
function this.new(id, name)
local part = {};
part.id = id;
@@ -73,7 +73,7 @@ function body_part.new(id, name)
return part;
end
function body_part.update_flinch(part, part_current, part_max)
function this.update_flinch(part, part_current, part_max)
if part_current > part.health then
part.flinch_count = part.flinch_count + 1;
end
@@ -94,7 +94,7 @@ function body_part.update_flinch(part, part_current, part_max)
end
end
function body_part.update_break(part, part_break_current, part_break_max, part_break_count, part_break_max_count)
function this.update_break(part, part_break_current, part_break_max, part_break_count, part_break_max_count)
if part.break_health ~= part_break_current then
part.last_change_time = time.total_elapsed_script_seconds;
@@ -123,7 +123,7 @@ function body_part.update_break(part, part_break_current, part_break_max, part_b
end
end
function body_part.update_loss(part, part_loss_current, part_loss_max, is_severed)
function this.update_loss(part, part_loss_current, part_loss_max, is_severed)
if part.loss_health ~= part_loss_current then
part.last_change_time = time.total_elapsed_script_seconds;
end
@@ -147,7 +147,7 @@ function body_part.update_loss(part, part_loss_current, part_loss_max, is_severe
end
function body_part.draw(monster, part_UI, cached_config, parts_position_on_screen, opacity_scale)
function this.draw(monster, part_UI, cached_config, parts_position_on_screen, opacity_scale)
local cached_config = cached_config.body_parts;
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
@@ -340,7 +340,7 @@ function body_part.draw(monster, part_UI, cached_config, parts_position_on_scree
return last_part_position_on_screen;
end
function body_part.init_module()
function this.init_module()
singletons = require("MHR_Overlay.Game_Handler.singletons");
customization_menu = require("MHR_Overlay.UI.customization_menu");
config = require("MHR_Overlay.Misc.config");
@@ -354,4 +354,4 @@ function body_part.init_module()
time = require("MHR_Overlay.Game_Handler.time");
end
return body_part;
return this;

View File

@@ -1,4 +1,4 @@
local large_monster = {};
local this = {};
local singletons;
local customization_menu;
@@ -52,9 +52,9 @@ local os = os;
local ValueType = ValueType;
local package = package;
large_monster.list = {};
this.list = {};
function large_monster.new(enemy)
function this.new(enemy)
local monster = {};
monster.enemy = enemy;
monster.is_large = true;
@@ -124,35 +124,35 @@ function large_monster.new(enemy)
monster.static_UI = {};
monster.highlighted_UI = {};
large_monster.init(monster, enemy);
large_monster.init_UI(monster, monster.dynamic_UI, config.current_config.large_monster_UI.dynamic);
large_monster.init_UI(monster, monster.static_UI, config.current_config.large_monster_UI.static);
large_monster.init_UI(monster, monster.highlighted_UI, config.current_config.large_monster_UI.highlighted);
this.init(monster, enemy);
this.init_UI(monster, monster.dynamic_UI, config.current_config.large_monster_UI.dynamic);
this.init_UI(monster, monster.static_UI, config.current_config.large_monster_UI.static);
this.init_UI(monster, monster.highlighted_UI, config.current_config.large_monster_UI.highlighted);
large_monster.update_position(enemy, monster);
this.update_position(enemy, monster);
local physical_param = large_monster.update_health(enemy, monster);
local physical_param = this.update_health(enemy, monster);
large_monster.update_stamina(enemy, monster, nil);
large_monster.update_stamina_timer(enemy, monster, nil);
this.update_stamina(enemy, monster, nil);
this.update_stamina_timer(enemy, monster, nil);
large_monster.update_rage(enemy, monster, nil);
large_monster.update_rage_timer(enemy, monster, nil);
this.update_rage(enemy, monster, nil);
this.update_rage_timer(enemy, monster, nil);
large_monster.update(enemy, monster);
pcall(large_monster.update_parts, enemy, monster, physical_param);
this.update(enemy, monster);
pcall(this.update_parts, enemy, monster, physical_param);
if large_monster.list[enemy] == nil then
large_monster.list[enemy] = monster;
if this.list[enemy] == nil then
this.list[enemy] = monster;
end
return monster;
end
function large_monster.get_monster(enemy)
local monster = large_monster.list[enemy];
function this.get_monster(enemy)
local monster = this.list[enemy];
if monster == nil then
monster = large_monster.new(enemy);
monster = this.new(enemy);
end
return monster;
end
@@ -178,7 +178,7 @@ local get_set_info_method = enemy_character_base_type_def:get_method("get_SetInf
local set_info_type = get_set_info_method:get_return_type();
local get_unique_id_method = set_info_type:get_method("get_UniqueId");
function large_monster.init(monster, enemy)
function this.init(monster, enemy)
local enemy_type = enemy_type_field:get_data(enemy);
if enemy_type == nil then
customization_menu.status = "No enemy type";
@@ -257,7 +257,7 @@ function large_monster.init(monster, enemy)
monster.is_capturable = is_capture_enable and not is_anomaly;
end
function large_monster.init_UI(monster, monster_UI, cached_config)
function this.init_UI(monster, monster_UI, cached_config)
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
monster_UI.monster_name_label = utils.table.deep_copy(cached_config.monster_name_label);
@@ -383,7 +383,7 @@ local system_array_type_def = sdk.find_type_definition("System.Array");
local length_method = system_array_type_def:get_method("get_Length");
local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)");
function large_monster.update_position(enemy, monster)
function this.update_position(enemy, monster)
if not config.current_config.large_monster_UI.dynamic.enabled and
config.current_config.large_monster_UI.static.sorting.type ~= "Distance" then
return;
@@ -396,8 +396,8 @@ function large_monster.update_position(enemy, monster)
end
-- Code by coavins
function large_monster.update_all_riders()
for enemy, monster in pairs(large_monster.list) do
function this.update_all_riders()
for enemy, monster in pairs(this.list) do
-- get marionette rider
local mario_param = enemy:get_field("<MarioParam>k__BackingField");
if mario_param ~= nil then
@@ -422,7 +422,7 @@ function large_monster.update_all_riders()
end
function large_monster.update(enemy, monster)
function this.update(enemy, monster)
local cached_config = config.current_config.large_monster_UI;
if not cached_config.dynamic.enabled
@@ -471,7 +471,7 @@ function large_monster.update(enemy, monster)
pcall(ailments.update_ailments, enemy, monster);
end
function large_monster.update_health(enemy, monster)
function this.update_health(enemy, monster)
local cached_config = config.current_config.large_monster_UI;
if not cached_config.dynamic.enabled
@@ -511,7 +511,7 @@ function large_monster.update_health(enemy, monster)
return physical_param;
end
function large_monster.update_stamina(enemy, monster, stamina_param)
function this.update_stamina(enemy, monster, stamina_param)
local cached_config = config.current_config.large_monster_UI;
if not cached_config.dynamic.enabled
@@ -548,7 +548,7 @@ function large_monster.update_stamina(enemy, monster, stamina_param)
end
end
function large_monster.update_stamina_timer(enemy, monster, stamina_param)
function this.update_stamina_timer(enemy, monster, stamina_param)
local cached_config = config.current_config.large_monster_UI;
if not cached_config.dynamic.enabled
@@ -595,7 +595,7 @@ function large_monster.update_stamina_timer(enemy, monster, stamina_param)
end
end
function large_monster.update_rage(enemy, monster, anger_param)
function this.update_rage(enemy, monster, anger_param)
local cached_config = config.current_config.large_monster_UI;
if not cached_config.dynamic.enabled
@@ -627,7 +627,7 @@ function large_monster.update_rage(enemy, monster, anger_param)
end
end
function large_monster.update_rage_timer(enemy, monster, anger_param)
function this.update_rage_timer(enemy, monster, anger_param)
local cached_config = config.current_config.large_monster_UI;
if not cached_config.dynamic.enabled
@@ -673,7 +673,7 @@ function large_monster.update_rage_timer(enemy, monster, anger_param)
end
end
function large_monster.update_parts(enemy, monster, physical_param)
function this.update_parts(enemy, monster, physical_param)
local cached_config = config.current_config.large_monster_UI;
if not cached_config.dynamic.enabled
@@ -807,7 +807,7 @@ function large_monster.update_parts(enemy, monster, physical_param)
end
end
function large_monster.draw(monster, type, cached_config, position_on_screen, opacity_scale)
function this.draw(monster, type, cached_config, position_on_screen, opacity_scale)
local monster_UI;
if type == "dynamic" then
@@ -904,11 +904,11 @@ function large_monster.draw(monster, type, cached_config, position_on_screen, op
drawing.draw_label(monster_UI.monster_name_label, position_on_screen, opacity_scale, monster_name_text);
end
function large_monster.init_list()
large_monster.list = {};
function this.init_list()
this.list = {};
end
function large_monster.init_module()
function this.init_module()
singletons = require("MHR_Overlay.Game_Handler.singletons");
customization_menu = require("MHR_Overlay.UI.customization_menu");
language = require("MHR_Overlay.Misc.language");
@@ -931,4 +931,4 @@ function large_monster.init_module()
ailment_buildup = require("MHR_Overlay.Monsters.ailment_buildup");
end
return large_monster;
return this;

View File

@@ -1,4 +1,4 @@
local monster_hook = {};
local this = {};
local small_monster;
local large_monster;
@@ -87,7 +87,7 @@ re.on_pre_application_entry("UpdateBehavior", function()
end
end)
function monster_hook.update_monster(enemy)
function this.update_monster(enemy)
if enemy == nil then
return;
end
@@ -108,13 +108,13 @@ function monster_hook.update_monster(enemy)
end
if is_large then
monster_hook.update_large_monster(enemy);
this.update_large_monster(enemy);
else
monster_hook.update_small_monster(enemy);
this.update_small_monster(enemy);
end
end
function monster_hook.update_large_monster(enemy)
function this.update_large_monster(enemy)
local cached_config = config.current_config.large_monster_UI;
if not cached_config.dynamic.enabled and
@@ -161,7 +161,7 @@ function monster_hook.update_large_monster(enemy)
large_monster.update(enemy, monster);
end
function monster_hook.update_small_monster(enemy)
function this.update_small_monster(enemy)
if not config.current_config.small_monster_UI.enabled then
return;
end
@@ -198,7 +198,7 @@ function monster_hook.update_small_monster(enemy)
end
end
function monster_hook.update_health(enemy_damage_check)
function this.update_health(enemy_damage_check)
local enemy = get_ref_enemy:call(enemy_damage_check);
if enemy == nil then
return;
@@ -220,7 +220,7 @@ function monster_hook.update_health(enemy_damage_check)
end
end
function monster_hook.update_stamina(stamina_param, stamina_sub)
function this.update_stamina(stamina_param, stamina_sub)
if stamina_sub <= 0 then
return;
end
@@ -234,12 +234,12 @@ function monster_hook.update_stamina(stamina_param, stamina_sub)
large_monster.update_stamina(enemy, monster, stamina_param);
end
function monster_hook.update_stamina_timer(stamina_param, enemy)
function this.update_stamina_timer(stamina_param, enemy)
local monster = large_monster.get_monster(enemy);
large_monster.update_stamina_timer(enemy, monster, stamina_param);
end
function monster_hook.update_rage(anger_param, anger_add, enemy)
function this.update_rage(anger_param, anger_add, enemy)
if anger_add <= 0 then
return;
end
@@ -248,12 +248,12 @@ function monster_hook.update_rage(anger_param, anger_add, enemy)
large_monster.update_rage(enemy, monster, anger_param);
end
function monster_hook.update_rage_timer(anger_param, enemy)
function this.update_rage_timer(anger_param, enemy)
local monster = large_monster.get_monster(enemy);
large_monster.update_rage_timer(enemy, monster, anger_param);
end
function monster_hook.init_module()
function this.init_module()
small_monster = require("MHR_Overlay.Monsters.small_monster");
large_monster = require("MHR_Overlay.Monsters.large_monster");
config = require("MHR_Overlay.Misc.config");
@@ -262,29 +262,29 @@ function monster_hook.init_module()
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
sdk.hook(enemy_character_base_update_method, function(args)
pcall(monster_hook.update_monster, sdk.to_managed_object(args[2]));
pcall(this.update_monster, sdk.to_managed_object(args[2]));
end, function(retval)
return retval;
end);
sdk.hook(damage_check_update_param_update_method, function(args)
pcall(monster_hook.update_health, sdk.to_managed_object(args[2]));
pcall(this.update_health, sdk.to_managed_object(args[2]));
end, function(retval)
return retval;
end);
sdk.hook(stamina_sub_method, function(args)
pcall(monster_hook.update_stamina, sdk.to_managed_object(args[2]), sdk.to_float(args[3]));
pcall(this.update_stamina, sdk.to_managed_object(args[2]), sdk.to_float(args[3]));
end, function(retval)
return retval;
end);
sdk.hook(anger_add_method, function(args)
pcall(monster_hook.update_rage, sdk.to_managed_object(args[2]), sdk.to_float(args[3]),
pcall(this.update_rage, sdk.to_managed_object(args[2]), sdk.to_float(args[3]),
sdk.to_managed_object(args[4]));
end, function(retval)
return retval;
end);
end
return monster_hook;
return this;

View File

@@ -1,4 +1,4 @@
local small_monster = {};
local this = {};
local singletons;
local customization_menu;
@@ -45,9 +45,9 @@ local os = os;
local ValueType = ValueType;
local package = package;
small_monster.list = {};
this.list = {};
function small_monster.new(enemy)
function this.new(enemy)
local monster = {};
monster.is_large = false;
@@ -66,24 +66,24 @@ function small_monster.new(enemy)
monster.UI = {};
small_monster.init(monster, enemy);
small_monster.init_UI(monster);
this.init(monster, enemy);
this.init_UI(monster);
small_monster.update_position(enemy, monster);
small_monster.update_health(enemy, monster);
small_monster.update(enemy, monster);
this.update_position(enemy, monster);
this.update_health(enemy, monster);
this.update(enemy, monster);
if small_monster.list[enemy] == nil then
small_monster.list[enemy] = monster;
if this.list[enemy] == nil then
this.list[enemy] = monster;
end
return monster;
end
function small_monster.get_monster(enemy)
local monster = small_monster.list[enemy];
function this.get_monster(enemy)
local monster = this.list[enemy];
if monster == nil then
monster = small_monster.new(enemy);
monster = this.new(enemy);
end
return monster;
@@ -95,7 +95,7 @@ local enemy_type_field = enemy_character_base_type_def:get_field("<EnemyType>k__
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 small_monster.init(monster, enemy)
function this.init(monster, enemy)
local enemy_type = enemy_type_field:get_data(enemy);
if enemy_type == nil then
customization_menu.status = "No enemy type";
@@ -110,7 +110,7 @@ function small_monster.init(monster, enemy)
end
end
function small_monster.init_UI(monster)
function this.init_UI(monster)
local cached_config = config.current_config.small_monster_UI;
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
@@ -163,7 +163,7 @@ local get_max_method = vital_param_type:get_method("get_Max");
local get_pos_field = enemy_character_base_type_def:get_method("get_Pos");
function small_monster.update_position(enemy, monster)
function this.update_position(enemy, monster)
local cached_config = config.current_config.small_monster_UI;
if not cached_config.enabled then
@@ -180,7 +180,7 @@ function small_monster.update_position(enemy, monster)
end
end
function small_monster.update(enemy, monster)
function this.update(enemy, monster)
if not config.current_config.small_monster_UI.enabled then
return;
end
@@ -193,7 +193,7 @@ function small_monster.update(enemy, monster)
pcall(ailments.update_ailments, enemy, monster);
end
function small_monster.update_health(enemy, monster)
function this.update_health(enemy, monster)
if not config.current_config.small_monster_UI.enabled or not config.current_config.small_monster_UI.health.visibility then
return;
end
@@ -220,7 +220,7 @@ function small_monster.update_health(enemy, monster)
end
end
function small_monster.draw(monster, cached_config, position_on_screen, opacity_scale)
function this.draw(monster, cached_config, position_on_screen, opacity_scale)
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
drawing.draw_label(monster.UI.name_label, position_on_screen, opacity_scale, monster.name);
@@ -245,11 +245,11 @@ function small_monster.draw(monster, cached_config, position_on_screen, opacity_
ailment_buildup.draw(monster, monster.UI.ailment_buildup_UI, cached_config, ailment_buildups_position_on_screen, opacity_scale);
end
function small_monster.init_list()
small_monster.list = {};
function this.init_list()
this.list = {};
end
function small_monster.init_module()
function this.init_module()
singletons = require("MHR_Overlay.Game_Handler.singletons");
customization_menu = require("MHR_Overlay.UI.customization_menu");
config = require("MHR_Overlay.Misc.config");
@@ -264,4 +264,4 @@ function small_monster.init_module()
ailment_buildup_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_buildup_UI_entity");
end
return small_monster;
return this;

View File

@@ -1,4 +1,4 @@
local ailment_buildups_customization = {};
local this = {};
local utils;
local config;
@@ -47,7 +47,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function ailment_buildups_customization.draw(cached_config)
function this.draw(cached_config)
local changed = false;
local config_changed = false;
local index = 1;
@@ -200,7 +200,7 @@ function ailment_buildups_customization.draw(cached_config)
return config_changed;
end
function ailment_buildups_customization.init_module()
function this.init_module()
utils = require("MHR_Overlay.Misc.utils");
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
@@ -218,4 +218,4 @@ function ailment_buildups_customization.init_module()
bar_customization = require("MHR_Overlay.UI.Customizations.bar_customization");
end
return ailment_buildups_customization;
return this;

View File

@@ -1,4 +1,4 @@
local ailments_customization = {};
local this = {};
local utils;
local config;
@@ -47,7 +47,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function ailments_customization.draw(cached_config)
function this.draw(cached_config)
local changed = false;
local config_changed = false;
local index = 0;
@@ -365,7 +365,7 @@ function ailments_customization.draw(cached_config)
return config_changed;
end
function ailments_customization.init_module()
function this.init_module()
utils = require("MHR_Overlay.Misc.utils");
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
@@ -382,4 +382,4 @@ function ailments_customization.init_module()
bar_customization = require("MHR_Overlay.UI.Customizations.bar_customization");
end
return ailments_customization;
return this;

View File

@@ -1,4 +1,4 @@
local bar_customization = {};
local this = {};
local utils;
local config;
@@ -46,7 +46,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function bar_customization.draw(bar_name, bar)
function this.draw(bar_name, bar)
if bar == nil then
return false;
end
@@ -191,7 +191,7 @@ function bar_customization.draw(bar_name, bar)
return bar_changed;
end
function bar_customization.init_module()
function this.init_module()
utils = require("MHR_Overlay.Misc.utils");
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
@@ -207,4 +207,4 @@ function bar_customization.init_module()
line_customization = require("MHR_Overlay.UI.Customizations.line_customization");
end
return bar_customization;
return this;

View File

@@ -1,4 +1,4 @@
local body_parts_customization = {};
local this = {};
local utils;
local config;
@@ -47,7 +47,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function body_parts_customization.draw(cached_config)
function this.draw(cached_config)
local changed = false;
local config_changed = false;
local index = 0;
@@ -368,7 +368,7 @@ function body_parts_customization.draw(cached_config)
return config_changed;
end
function body_parts_customization.init_module()
function this.init_module()
utils = require("MHR_Overlay.Misc.utils");
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
@@ -385,4 +385,4 @@ function body_parts_customization.init_module()
bar_customization = require("MHR_Overlay.UI.Customizations.bar_customization");
end
return body_parts_customization;
return this;

View File

@@ -1,4 +1,4 @@
local large_monster_UI_customization = {};
local this = {};
local config;
local screen;
@@ -46,7 +46,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function large_monster_UI_customization.draw(cached_config)
function this.draw(cached_config)
local changed = false;
local config_changed = false;
@@ -88,7 +88,7 @@ function large_monster_UI_customization.draw(cached_config)
return config_changed;
end
function large_monster_UI_customization.init_module()
function this.init_module()
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
screen = require("MHR_Overlay.Game_Handler.screen");
@@ -104,4 +104,4 @@ function large_monster_UI_customization.init_module()
bar_customization = require("MHR_Overlay.UI.Customizations.bar_customization");
end
return large_monster_UI_customization;
return this;

View File

@@ -1,4 +1,4 @@
local label_customization = {};
local this = {};
local config;
local screen;
@@ -44,7 +44,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function label_customization.draw(label_name, label)
function this.draw(label_name, label)
local label_changed = false;
local changed = false;
@@ -115,7 +115,7 @@ function label_customization.draw(label_name, label)
return label_changed;
end
function label_customization.init_module()
function this.init_module()
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
screen = require("MHR_Overlay.Game_Handler.screen");
@@ -129,4 +129,4 @@ function label_customization.init_module()
customization_menu = require("MHR_Overlay.UI.customization_menu");
end
return label_customization;
return this;

View File

@@ -1,4 +1,4 @@
local large_monster_UI_customization = {};
local this = {};
local config;
local screen;
@@ -53,7 +53,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function large_monster_UI_customization.draw(cached_config)
function this.draw(cached_config)
local changed = false;
local config_changed = false;
@@ -81,7 +81,7 @@ function large_monster_UI_customization.draw(cached_config)
return config_changed;
end
function large_monster_UI_customization.init_module()
function this.init_module()
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
screen = require("MHR_Overlay.Game_Handler.screen");
@@ -104,4 +104,4 @@ function large_monster_UI_customization.init_module()
ailment_buildups_customization = require("MHR_Overlay.UI.Customizations.ailment_buildups_customization");
end
return large_monster_UI_customization;
return this;

View File

@@ -1,4 +1,4 @@
local line_customization = {};
local this = {};
local config;
local screen;
@@ -44,7 +44,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function line_customization.draw(line_name, line)
function this.draw(line_name, line)
if line == nil then
return;
end
@@ -95,7 +95,7 @@ function line_customization.draw(line_name, line)
return line_changed;
end
function line_customization.init_module()
function this.init_module()
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
screen = require("MHR_Overlay.Game_Handler.screen");
@@ -109,4 +109,4 @@ function line_customization.init_module()
customization_menu = require("MHR_Overlay.UI.customization_menu");
end
return line_customization;
return this;

View File

@@ -1,4 +1,4 @@
local module_visibility_customization = {};
local this = {};
local config;
local screen;
@@ -46,7 +46,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function module_visibility_customization.draw(cached_config)
function this.draw(cached_config)
local changed = false;
local config_changed = false;
@@ -101,7 +101,7 @@ function module_visibility_customization.draw(cached_config)
return config_changed;
end
function module_visibility_customization.init_module()
function this.init_module()
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
screen = require("MHR_Overlay.Game_Handler.screen");
@@ -115,4 +115,4 @@ function module_visibility_customization.init_module()
customization_menu = require("MHR_Overlay.UI.customization_menu");
end
return module_visibility_customization;
return this;

View File

@@ -1,4 +1,4 @@
local rage_customization = {};
local this = {};
local config;
local screen;
@@ -46,7 +46,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function rage_customization.draw(cached_config)
function this.draw(cached_config)
local changed = false;
local config_changed = false;
@@ -91,7 +91,7 @@ function rage_customization.draw(cached_config)
return config_changed;
end
function rage_customization.init_module()
function this.init_module()
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
screen = require("MHR_Overlay.Game_Handler.screen");
@@ -107,4 +107,4 @@ function rage_customization.init_module()
bar_customization = require("MHR_Overlay.UI.Customizations.bar_customization");
end
return rage_customization;
return this;

View File

@@ -1,4 +1,4 @@
local stamina_customization = {};
local this = {};
local config;
local screen;
@@ -46,7 +46,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function stamina_customization.draw(cached_config)
function this.draw(cached_config)
local changed = false;
local config_changed = false;
@@ -91,7 +91,7 @@ function stamina_customization.draw(cached_config)
return config_changed;
end
function stamina_customization.init_module()
function this.init_module()
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
screen = require("MHR_Overlay.Game_Handler.screen");
@@ -107,4 +107,4 @@ function stamina_customization.init_module()
bar_customization = require("MHR_Overlay.UI.Customizations.bar_customization");
end
return stamina_customization;
return this;

View File

@@ -1,4 +1,4 @@
local buff_UI = {};
local this = {};
local buff_UI_entity;
local config;
@@ -37,7 +37,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function buff_UI.draw()
function this.draw()
local cached_config = config.current_config.buff_UI;
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
@@ -110,7 +110,7 @@ function buff_UI.draw()
end
end
function buff_UI.init_module()
function this.init_module()
config = require("MHR_Overlay.Misc.config");
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
buffs = require("MHR_Overlay.Buffs.buffs");
@@ -124,4 +124,4 @@ function buff_UI.init_module()
--drawing = require("MHR_Overlay.UI.drawing");
end
return buff_UI;
return this;

View File

@@ -1,4 +1,4 @@
local damage_meter_UI = {};
local this = {};
local singletons;
local config;
@@ -43,8 +43,8 @@ local os = os;
local ValueType = ValueType;
local package = package;
damage_meter_UI.last_displayed_players = {};
damage_meter_UI.freeze_displayed_players = false;
this.last_displayed_players = {};
this.freeze_displayed_players = false;
local lobby_manager_type_def = sdk.find_type_definition("snow.LobbyManager");
local quest_hunter_info_field = lobby_manager_type_def:get_field("_questHunterInfo");
@@ -57,7 +57,7 @@ local get_item_method = quest_hunter_info_type_def:get_method("get_Item");
local hunter_info_type_def = sdk.find_type_definition("snow.LobbyManager.HunterInfo");
local member_index_field = hunter_info_type_def:get_field("_memberIndex");
function damage_meter_UI.draw()
function this.draw()
local cached_config = config.current_config.damage_meter_UI;
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
@@ -67,13 +67,13 @@ function damage_meter_UI.draw()
local quest_players = {};
if damage_meter_UI.freeze_displayed_players and not utils.table.is_empty(damage_meter_UI.last_displayed_players) then
quest_players = damage_meter_UI.last_displayed_players;
if this.freeze_displayed_players and not utils.table.is_empty(this.last_displayed_players) then
quest_players = this.last_displayed_players;
else
quest_players = players.display_list;
end
damage_meter_UI.last_displayed_players = quest_players;
this.last_displayed_players = quest_players;
local top_damage = 0;
local top_dps = 0;
@@ -175,7 +175,7 @@ function damage_meter_UI.draw()
end
end
function damage_meter_UI.init_module()
function this.init_module()
singletons = require("MHR_Overlay.Game_Handler.singletons");
config = require("MHR_Overlay.Misc.config");
customization_menu = require("MHR_Overlay.UI.customization_menu");
@@ -188,4 +188,4 @@ function damage_meter_UI.init_module()
utils = require("MHR_Overlay.Misc.utils");
end
return damage_meter_UI;
return this;

View File

@@ -1,4 +1,4 @@
local env_creature_UI = {};
local this = {};
local singletons;
local config;
@@ -46,7 +46,7 @@ local package = package;
local enemy_manager_type_def = sdk.find_type_definition("snow.enemy.EnemyManager");
function env_creature_UI.draw()
function this.draw()
if singletons.enemy_manager == nil then
return;
end
@@ -94,7 +94,7 @@ function env_creature_UI.draw()
end
end
function env_creature_UI.init_module()
function this.init_module()
singletons = require("MHR_Overlay.Game_Handler.singletons");
config = require("MHR_Overlay.Misc.config");
customization_menu = require("MHR_Overlay.UI.customization_menu");
@@ -108,4 +108,4 @@ function env_creature_UI.init_module()
env_creature = require("MHR_Overlay.Endemic_Life.env_creature");
end
return env_creature_UI;
return this;

View File

@@ -1,4 +1,4 @@
local large_monster_UI = {};
local this = {};
local singletons;
local config;
@@ -53,7 +53,7 @@ local get_tg_camera_method = gui_manager_type_def:get_method("get_refGuiHud_TgCa
local tg_camera_type_def = get_tg_camera_method:get_return_type();
local get_targeting_enemy_index_field = tg_camera_type_def:get_field("OldTargetingEmIndex");
function large_monster_UI.draw(dynamic_enabled, static_enabled, highlighted_enabled)
function this.draw(dynamic_enabled, static_enabled, highlighted_enabled)
local cached_config = config.current_config.large_monster_UI;
if singletons.enemy_manager == nil then
@@ -153,27 +153,27 @@ function large_monster_UI.draw(dynamic_enabled, static_enabled, highlighted_enab
end
if dynamic_enabled then
local success = pcall(large_monster_UI.draw_dynamic, displayed_monsters, highlighted_monster, cached_config);
local success = pcall(this.draw_dynamic, displayed_monsters, highlighted_monster, cached_config);
if not success then
customization_menu.status = string.format("[%s] Dynamic Large Monster drawing function threw an exception");
end
end
if highlighted_enabled then
local success = pcall(large_monster_UI.draw_highlighted, highlighted_monster, cached_config);
local success = pcall(this.draw_highlighted, highlighted_monster, cached_config);
if not success then
customization_menu.status = string.format("[%s] Highlighted Large Monster drawing function threw an exception");
end
end
if static_enabled then
local success = pcall(large_monster_UI.draw_static, displayed_monsters, highlighted_monster, cached_config);
local success = pcall(this.draw_static, displayed_monsters, highlighted_monster, cached_config);
if not success then
customization_menu.status = string.format("[%s] Static Large Monster drawing function threw an exception");
end
end
end
function large_monster_UI.draw_dynamic(displayed_monsters, highlighted_monster, cached_config)
function this.draw_dynamic(displayed_monsters, highlighted_monster, cached_config)
cached_config = cached_config.dynamic;
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
@@ -230,7 +230,7 @@ function large_monster_UI.draw_dynamic(displayed_monsters, highlighted_monster,
end
end
function large_monster_UI.draw_static(displayed_monsters, highlighted_monster, cached_config)
function this.draw_static(displayed_monsters, highlighted_monster, cached_config)
cached_config = cached_config.static;
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
@@ -311,7 +311,7 @@ function large_monster_UI.draw_static(displayed_monsters, highlighted_monster, c
end
end
function large_monster_UI.draw_highlighted(monster, cached_config)
function this.draw_highlighted(monster, cached_config)
cached_config = cached_config.highlighted;
if monster == nil then
@@ -327,7 +327,7 @@ function large_monster_UI.draw_highlighted(monster, cached_config)
large_monster.draw(monster, "highlighted", cached_config, position_on_screen, 1);
end
function large_monster_UI.init_module()
function this.init_module()
singletons = require("MHR_Overlay.Game_Handler.singletons");
config = require("MHR_Overlay.Misc.config");
customization_menu = require("MHR_Overlay.UI.customization_menu");
@@ -340,4 +340,4 @@ function large_monster_UI.init_module()
rage_UI_entity = require("MHR_Overlay.UI.UI_Entities.rage_UI_entity");
end
return large_monster_UI;
return this;

View File

@@ -1,4 +1,4 @@
local small_monster_UI = {};
local this = {};
local singletons;
local config;
@@ -46,7 +46,7 @@ local enemy_manager_type_def = sdk.find_type_definition("snow.enemy.EnemyManager
local get_zako_enemy_count_method = enemy_manager_type_def:get_method("getZakoEnemyCount");
local get_zako_enemy_method = enemy_manager_type_def:get_method("getZakoEnemy");
function small_monster_UI.draw()
function this.draw()
if singletons.enemy_manager == nil then
return;
end
@@ -186,7 +186,7 @@ function small_monster_UI.draw()
end
end
function small_monster_UI.init_module()
function this.init_module()
singletons = require("MHR_Overlay.Game_Handler.singletons");
config = require("MHR_Overlay.Misc.config");
customization_menu = require("MHR_Overlay.UI.customization_menu");
@@ -198,4 +198,4 @@ function small_monster_UI.init_module()
stamina_UI_entity = require("MHR_Overlay.UI.UI_Entities.stamina_UI_entity");
end
return small_monster_UI;
return this;

View File

@@ -1,4 +1,4 @@
local time_UI = {};
local this = {};
local time;
local screen;
@@ -38,9 +38,9 @@ local os = os;
local ValueType = ValueType;
local package = package;
time_UI.label = nil;
this.label = nil;
function time_UI.draw()
function this.draw()
local elapsed_minutes = time.elapsed_minutes;
local elapsed_seconds = time.elapsed_seconds;
@@ -50,26 +50,26 @@ function time_UI.draw()
local position_on_screen = screen.calculate_absolute_coordinates(config.current_config.time_UI.position);
drawing.draw_label(time_UI.label, position_on_screen, 1, elapsed_minutes, elapsed_seconds);
drawing.draw_label(this.label, position_on_screen, 1, elapsed_minutes, elapsed_seconds);
end
function time_UI.init_UI()
time_UI.label = utils.table.deep_copy(config.current_config.time_UI.time_label);
function this.init_UI()
this.label = utils.table.deep_copy(config.current_config.time_UI.time_label);
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
time_UI.label.offset.x = time_UI.label.offset.x * global_scale_modifier;
time_UI.label.offset.y = time_UI.label.offset.y * global_scale_modifier;
this.label.offset.x = this.label.offset.x * global_scale_modifier;
this.label.offset.y = this.label.offset.y * global_scale_modifier;
end
function time_UI.init_module()
function this.init_module()
time = require("MHR_Overlay.Game_Handler.time");
screen = require("MHR_Overlay.Game_Handler.screen");
config = require("MHR_Overlay.Misc.config");
drawing = require("MHR_Overlay.UI.drawing");
utils = require("MHR_Overlay.Misc.utils");
time_UI.init_UI()
this.init_UI()
end
return time_UI;
return this;

View File

@@ -1,4 +1,4 @@
local ailment_UI_entity = {};
local this = {};
local config;
local utils;
@@ -37,7 +37,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function ailment_UI_entity.new(visibility, bar, name_label, text_label, value_label, percentage_label, timer_label)
function this.new(visibility, bar, name_label, text_label, value_label, percentage_label, timer_label)
local entity = {};
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
@@ -75,7 +75,7 @@ function ailment_UI_entity.new(visibility, bar, name_label, text_label, value_la
return entity;
end
function ailment_UI_entity.draw(ailment, ailment_UI, cached_config, position_on_screen, opacity_scale)
function this.draw(ailment, ailment_UI, cached_config, position_on_screen, opacity_scale)
if not ailment_UI.visibility then
return;
end
@@ -118,11 +118,11 @@ function ailment_UI_entity.draw(ailment, ailment_UI, cached_config, position_on_
end
end
function ailment_UI_entity.init_module()
function this.init_module()
utils = require("MHR_Overlay.Misc.utils");
drawing = require("MHR_Overlay.UI.drawing");
config = require("MHR_Overlay.Misc.config");
language = require("MHR_Overlay.Misc.language");
end
return ailment_UI_entity;
return this;

View File

@@ -1,4 +1,4 @@
local ailment_buildup_UI_entity = {};
local this = {};
local utils;
local drawing;
@@ -38,7 +38,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function ailment_buildup_UI_entity.new(buildup_bar, highlighted_buildup_bar, ailment_name_label, player_name_label,
function this.new(buildup_bar, highlighted_buildup_bar, ailment_name_label, player_name_label,
buildup_value_label, buildup_percentage_label, total_buildup_label,
total_buildup_value_label)
local entity = {};
@@ -88,7 +88,7 @@ function ailment_buildup_UI_entity.new(buildup_bar, highlighted_buildup_bar, ail
return entity;
end
function ailment_buildup_UI_entity.draw(player, player_buildup, ailment_buildup_UI, cached_config, position_on_screen, opacity_scale, top_buildup)
function this.draw(player, player_buildup, ailment_buildup_UI, cached_config, position_on_screen, opacity_scale, top_buildup)
local player_buildup_bar_percentage = 0;
if cached_config.settings.buildup_bar_relative_to == "Total Buildup" then
@@ -117,7 +117,7 @@ function ailment_buildup_UI_entity.draw(player, player_buildup, ailment_buildup_
drawing.draw_label(ailment_buildup_UI.buildup_percentage_label, position_on_screen, opacity_scale, 100 * player_buildup.buildup_share);
end
function ailment_buildup_UI_entity.init_module()
function this.init_module()
utils = require("MHR_Overlay.Misc.utils");
drawing = require("MHR_Overlay.UI.drawing");
config = require("MHR_Overlay.Misc.config");
@@ -125,4 +125,4 @@ function ailment_buildup_UI_entity.init_module()
language = require("MHR_Overlay.Misc.language");
end
return ailment_buildup_UI_entity;
return this;

View File

@@ -1,4 +1,4 @@
local body_part_UI_entity = {};
local this = {};
local config;
local utils;
@@ -36,7 +36,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function body_part_UI_entity.new(part_visibility, part_name_label, flinch_visibility, flinch_bar, flinch_text_label,
function this.new(part_visibility, part_name_label, flinch_visibility, flinch_bar, flinch_text_label,
flinch_value_label, flinch_percentage_label, break_visibility, break_bar, break_text_label, break_value_label,
break_percentage_label, loss_visibility, loss_bar, loss_text_label, loss_value_label, loss_health_percentage_label)
@@ -120,7 +120,7 @@ function body_part_UI_entity.new(part_visibility, part_name_label, flinch_visibi
return entity;
end
function body_part_UI_entity.draw(part, part_UI, cached_config, position_on_screen, opacity_scale)
function this.draw(part, part_UI, cached_config, position_on_screen, opacity_scale)
if not part_UI.part_visibility then
return;
end
@@ -250,10 +250,10 @@ function body_part_UI_entity.draw(part, part_UI, cached_config, position_on_scre
end
end
function body_part_UI_entity.init_module()
function this.init_module()
utils = require("MHR_Overlay.Misc.utils");
drawing = require("MHR_Overlay.UI.drawing");
config = require("MHR_Overlay.Misc.config");
end
return body_part_UI_entity;
return this;

View File

@@ -1,4 +1,4 @@
local buff_UI_entity = {};
local this = {};
local config;
local utils;
@@ -37,7 +37,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function buff_UI_entity.new(bar, name_label, timer_label)
function this.new(bar, name_label, timer_label)
local entity = {};
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
@@ -63,7 +63,7 @@ function buff_UI_entity.new(bar, name_label, timer_label)
return entity;
end
function buff_UI_entity.draw(buff, buff_UI, position_on_screen, opacity_scale)
function this.draw(buff, buff_UI, position_on_screen, opacity_scale)
local cached_config = config.current_config.buff_UI;
if not buff.is_infinite then
@@ -81,11 +81,11 @@ function buff_UI_entity.draw(buff, buff_UI, position_on_screen, opacity_scale)
end
end
function buff_UI_entity.init_module()
function this.init_module()
utils = require("MHR_Overlay.Misc.utils");
drawing = require("MHR_Overlay.UI.drawing");
config = require("MHR_Overlay.Misc.config");
language = require("MHR_Overlay.Misc.language");
end
return buff_UI_entity;
return this;

View File

@@ -1,4 +1,4 @@
local damage_UI_entity = {};
local this = {};
local utils;
local drawing;
@@ -40,7 +40,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function damage_UI_entity.new(damage_meter_UI_elements, type)
function this.new(damage_meter_UI_elements, type)
local entity = {};
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
@@ -111,7 +111,7 @@ function damage_UI_entity.new(damage_meter_UI_elements, type)
return entity;
end
function damage_UI_entity.draw(player, position_on_screen, opacity_scale, top_damage, top_dps)
function this.draw(player, position_on_screen, opacity_scale, top_damage, top_dps)
local cached_config = config.current_config.damage_meter_UI;
local name_include = nil;
@@ -233,7 +233,7 @@ function damage_UI_entity.draw(player, position_on_screen, opacity_scale, top_da
end
end
function damage_UI_entity.init_module()
function this.init_module()
utils = require("MHR_Overlay.Misc.utils");
drawing = require("MHR_Overlay.UI.drawing");
config = require("MHR_Overlay.Misc.config");
@@ -243,4 +243,4 @@ function damage_UI_entity.init_module()
non_players = require("MHR_Overlay.Damage_Meter.non_players");
end
return damage_UI_entity;
return this;

View File

@@ -1,4 +1,4 @@
local health_UI_entity = {};
local this = {};
local utils;
local drawing;
@@ -37,7 +37,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function health_UI_entity.new(visibility, bar, text_label, value_label, percentage_label)
function this.new(visibility, bar, text_label, value_label, percentage_label)
local entity = {};
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
@@ -67,7 +67,7 @@ function health_UI_entity.new(visibility, bar, text_label, value_label, percenta
return entity;
end
function health_UI_entity.draw(monster, health_UI, position_on_screen, opacity_scale)
function this.draw(monster, health_UI, position_on_screen, opacity_scale)
if not health_UI.visibility then
return;
end
@@ -91,11 +91,11 @@ function health_UI_entity.draw(monster, health_UI, position_on_screen, opacity_s
drawing.draw_label(health_UI.percentage_label, position_on_screen, opacity_scale, 100 * monster.health_percentage);
end
function health_UI_entity.init_module()
function this.init_module()
utils = require("MHR_Overlay.Misc.utils");
drawing = require("MHR_Overlay.UI.drawing");
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
end
return health_UI_entity;
return this;

View File

@@ -1,4 +1,4 @@
local rage_UI_entity = {};
local this = {};
local utils;
local drawing;
@@ -37,7 +37,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function rage_UI_entity.new(visibility, bar, text_label, value_label, percentage_label, timer_label)
function this.new(visibility, bar, text_label, value_label, percentage_label, timer_label)
local entity = {};
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
@@ -71,7 +71,7 @@ function rage_UI_entity.new(visibility, bar, text_label, value_label, percentage
return entity;
end
function rage_UI_entity.draw(monster, rage_UI, position_on_screen, opacity_scale)
function this.draw(monster, rage_UI, position_on_screen, opacity_scale)
if not rage_UI.visibility then
return;
end
@@ -105,11 +105,11 @@ function rage_UI_entity.draw(monster, rage_UI, position_on_screen, opacity_scale
end
end
function rage_UI_entity.init_module()
function this.init_module()
utils = require("MHR_Overlay.Misc.utils");
drawing = require("MHR_Overlay.UI.drawing");
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
end
return rage_UI_entity;
return this;

View File

@@ -1,4 +1,4 @@
local stamina_UI_entity = {};
local this = {};
local utils;
local drawing;
@@ -37,7 +37,7 @@ local os = os;
local ValueType = ValueType;
local package = package;
function stamina_UI_entity.new(visibility, bar, text_label, value_label, percentage_label, timer_label)
function this.new(visibility, bar, text_label, value_label, percentage_label, timer_label)
local entity = {};
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
@@ -69,7 +69,7 @@ function stamina_UI_entity.new(visibility, bar, text_label, value_label, percent
return entity;
end
function stamina_UI_entity.draw(monster, stamina_UI, position_on_screen, opacity_scale)
function this.draw(monster, stamina_UI, position_on_screen, opacity_scale)
if not stamina_UI.visibility then
return;
end
@@ -102,11 +102,11 @@ function stamina_UI_entity.draw(monster, stamina_UI, position_on_screen, opacity
end
end
function stamina_UI_entity.init_module()
function this.init_module()
utils = require("MHR_Overlay.Misc.utils");
drawing = require("MHR_Overlay.UI.drawing");
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
end
return stamina_UI_entity;
return this;

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
local drawing = {};
local this = {};
local config;
local utils;
@@ -35,14 +35,14 @@ local os = os;
local ValueType = ValueType;
local package = package;
drawing.font = nil;
this.font = nil;
function drawing.init_font()
function this.init_font()
local cached_config = config.current_config.global_settings.UI_font;
drawing.font = d2d.Font.new(cached_config.family, cached_config.size, cached_config.bold, cached_config.italic);
this.font = d2d.Font.new(cached_config.family, cached_config.size, cached_config.bold, cached_config.italic);
end
function drawing.argb_color_to_abgr_color(argb_color)
function this.argb_color_to_abgr_color(argb_color)
local alpha = (argb_color >> 24) & 0xFF;
local red = (argb_color >> 16) & 0xFF;
local green = (argb_color >> 8) & 0xFF;
@@ -53,7 +53,7 @@ function drawing.argb_color_to_abgr_color(argb_color)
return abgr_color;
end
function drawing.color_to_argb(color)
function this.color_to_argb(color)
local alpha = (color >> 24) & 0xFF;
local red = (color >> 16) & 0xFF;
local green = (color >> 8) & 0xFF;
@@ -62,18 +62,18 @@ function drawing.color_to_argb(color)
return alpha, red, green, blue;
end
function drawing.argb_to_color(alpha, red, green, blue)
function this.argb_to_color(alpha, red, green, blue)
return 0x1000000 * alpha + 0x10000 * red + 0x100 * green + blue;
end
function drawing.limit_text_size(text, size_limit)
function this.limit_text_size(text, size_limit)
if d2d == nil or not config.current_config.global_settings.renderer.use_d2d_if_available or size_limit <= 0 then
return text;
end
local limited_text = text;
while limited_text ~= "..." do
local text_width, text_height = drawing.font:measure(limited_text);
local text_width, text_height = this.font:measure(limited_text);
if text_width < size_limit then
break
@@ -90,8 +90,8 @@ function drawing.limit_text_size(text, size_limit)
return limited_text;
end
function drawing.scale_color_opacity(color, scale)
local alpha, red, green, blue = drawing.color_to_argb(color);
function this.scale_color_opacity(color, scale)
local alpha, red, green, blue = this.color_to_argb(color);
local new_alpha = math.floor(alpha * scale);
if new_alpha < 0 then
new_alpha = 0;
@@ -100,28 +100,28 @@ function drawing.scale_color_opacity(color, scale)
new_alpha = 255;
end
return drawing.argb_to_color(new_alpha, red, green, blue);
return this.argb_to_color(new_alpha, red, green, blue);
end
function drawing.scale_bar_opacity(bar, scale)
function this.scale_bar_opacity(bar, scale)
if bar == nil or scale == nil or not bar.visibility then
return;
end
bar.colors.foreground = drawing.scale_color_opacity(bar.colors.foreground, scale);
bar.colors.background = drawing.scale_color_opacity(bar.colors.background, scale);
bar.colors.foreground = this.scale_color_opacity(bar.colors.foreground, scale);
bar.colors.background = this.scale_color_opacity(bar.colors.background, scale);
end
function drawing.scale_label_opacity(label, scale)
function this.scale_label_opacity(label, scale)
if label == nil or scale == nil or not label.visibility then
return;
end
label.color = drawing.scale_color_opacity(label.color, scale);
label.shadow.color = drawing.scale_color_opacity(label.shadow.color, scale);
label.color = this.scale_color_opacity(label.color, scale);
label.shadow.color = this.scale_color_opacity(label.shadow.color, scale);
end
function drawing.draw_label(label, position, opacity_scale, ...)
function this.draw_label(label, position, opacity_scale, ...)
if label == nil or not label.visibility then
return;
end
@@ -141,32 +141,32 @@ function drawing.draw_label(label, position, opacity_scale, ...)
local new_shadow_color = label.shadow.color;
if opacity_scale < 1 then
new_shadow_color = drawing.scale_color_opacity(new_shadow_color, opacity_scale);
new_shadow_color = this.scale_color_opacity(new_shadow_color, opacity_scale);
end
if use_d2d then
d2d.text(drawing.font, text, position_x + label.shadow.offset.x, position_y + label.shadow.offset.y, new_shadow_color);
d2d.text(this.font, text, position_x + label.shadow.offset.x, position_y + label.shadow.offset.y, new_shadow_color);
else
new_shadow_color = drawing.argb_color_to_abgr_color(new_shadow_color);
new_shadow_color = this.argb_color_to_abgr_color(new_shadow_color);
draw.text(text, position_x + label.shadow.offset.x, position_y + label.shadow.offset.y, new_shadow_color);
end
end
local new_color = label.color;
if opacity_scale < 1 then
new_color = drawing.scale_color_opacity(new_color, opacity_scale);
new_color = this.scale_color_opacity(new_color, opacity_scale);
end
if use_d2d then
d2d.text(drawing.font, text, position_x, position_y, new_color);
d2d.text(this.font, text, position_x, position_y, new_color);
else
new_color = drawing.argb_color_to_abgr_color(new_color);
new_color = this.argb_color_to_abgr_color(new_color);
draw.text(text, position_x, position_y, new_color);
end
end
function drawing.draw_bar(bar, position, opacity_scale, percentage)
function this.draw_bar(bar, position, opacity_scale, percentage)
if bar == nil or not bar.visibility then
return;
@@ -264,9 +264,9 @@ function drawing.draw_bar(bar, position, opacity_scale, percentage)
local outline_color = bar.colors.outline;
if opacity_scale < 1 then
foreground_color = drawing.scale_color_opacity(foreground_color, opacity_scale);
background_color = drawing.scale_color_opacity(background_color, opacity_scale);
outline_color = drawing.scale_color_opacity(outline_color, opacity_scale);
foreground_color = this.scale_color_opacity(foreground_color, opacity_scale);
background_color = this.scale_color_opacity(background_color, opacity_scale);
outline_color = this.scale_color_opacity(outline_color, opacity_scale);
end
local use_d2d = d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available;
@@ -277,7 +277,7 @@ function drawing.draw_bar(bar, position, opacity_scale, percentage)
d2d.outline_rect(outline_position_x, outline_position_y, outline_width, outline_height, outline_thickness,
outline_color);
else
outline_color = drawing.argb_color_to_abgr_color(outline_color);
outline_color = this.argb_color_to_abgr_color(outline_color);
draw.outline_rect(outline_position_x, outline_position_y, outline_width, outline_height, outline_color);
end
end
@@ -288,7 +288,7 @@ function drawing.draw_bar(bar, position, opacity_scale, percentage)
d2d.fill_rect(position_x, position_y, foreground_width, height, foreground_color);
else
foreground_color = drawing.argb_color_to_abgr_color(foreground_color);
foreground_color = this.argb_color_to_abgr_color(foreground_color);
draw.filled_rect(position_x, position_y, foreground_width, height, foreground_color)
end
end
@@ -298,13 +298,13 @@ function drawing.draw_bar(bar, position, opacity_scale, percentage)
if use_d2d then
d2d.fill_rect(position_x + foreground_width, position_y, background_width, height, background_color);
else
background_color = drawing.argb_color_to_abgr_color(background_color);
background_color = this.argb_color_to_abgr_color(background_color);
draw.filled_rect(position_x + foreground_width, position_y, background_width, height, background_color)
end
end
end
function drawing.draw_capture_line(health_UI, position, opacity_scale, percentage)
function this.draw_capture_line(health_UI, position, opacity_scale, percentage)
if health_UI == nil or not health_UI.visibility or health_UI.bar == nil or not health_UI.bar.visibility or
health_UI.bar.capture_line == nil or not health_UI.bar.capture_line.visibility or percentage >= 1 or percentage <= 0 then
return;
@@ -317,7 +317,7 @@ function drawing.draw_capture_line(health_UI, position, opacity_scale, percentag
local color = health_UI.bar.capture_line.color;
if opacity_scale < 1 then
color = drawing.scale_color_opacity(color, opacity_scale);
color = this.scale_color_opacity(color, opacity_scale);
end
local use_d2d = d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available;
@@ -326,15 +326,15 @@ function drawing.draw_capture_line(health_UI, position, opacity_scale, percentag
d2d.fill_rect(position_x, position_y, health_UI.bar.capture_line.size.width, health_UI.bar.capture_line.size.height,
color);
else
color = drawing.argb_color_to_abgr_color(color);
color = this.argb_color_to_abgr_color(color);
draw.filled_rect(position_x, position_y, health_UI.bar.capture_line.size.width,
health_UI.bar.capture_line.size.height, color)
end
end
function drawing.init_module()
function this.init_module()
config = require("MHR_Overlay.Misc.config");
utils = require("MHR_Overlay.Misc.utils");
end
return drawing;
return this;