mirror of
https://github.com/GreenComfyTea/MHR-Overlay.git
synced 2026-01-24 04:18:11 -08:00
Pull Most Buff Name from the Game
+ Solve Consumable Buff Timer Collisions
This commit is contained in:
@@ -162,36 +162,34 @@ function this.update(player, player_data)
|
||||
this.update_muck(player);
|
||||
this.update_frenzy_infection(player);
|
||||
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "fireblight", nil, nil, player, fire_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "fireblight", this.get_abnormal_status_name, nil, nil, player, fire_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "fireblight", this.get_abnormal_status_name, nil, nil, player, fire_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "waterblight", this.get_abnormal_status_name, nil, nil, player, water_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "iceblight", this.get_abnormal_status_name, nil, nil, player, ice_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "thunderblight", this.get_abnormal_status_name, nil, nil, player, thunder_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "dragonblight", this.get_abnormal_status_name, nil, nil, player, dragon_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "blastblight", this.get_abnormal_status_name, nil, nil, player, bomb_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "hellfireblight", this.get_abnormal_status_name, nil, nil, player, oni_bomb_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "bloodblight", this.get_abnormal_status_name, nil, nil, player, mystery_debuff_timer);
|
||||
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "fireblight", nil, nil, player, fire_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "waterblight", nil, nil, player, water_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "iceblight", nil, nil, player, ice_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "thunderblight", nil, nil, player, thunder_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "dragonblight", nil, nil, player, dragon_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "stun", this.get_abnormal_status_name, nil, nil, player, stun_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "paralysis", this.get_abnormal_status_name, nil, nil, player, paralyze_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "sleep", this.get_abnormal_status_name, nil, nil, player, sleep_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "defense_down", this.get_abnormal_status_name, nil, nil, player, defense_down_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "resistance_down", this.get_abnormal_status_name, nil, nil, player, resistance_down_duration_timer);
|
||||
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "blastblight", nil, nil, player, bomb_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "hellfireblight", nil, nil, player, oni_bomb_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "bloodblight", nil, nil, player, mystery_debuff_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "tremor", this.get_abnormal_status_name, nil, nil, player, quake_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "roar", this.get_abnormal_status_name, nil, nil, player, ear_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "webbed", this.get_abnormal_status_name, nil, nil, player, beto_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "stench", this.get_abnormal_status_name, nil, nil, player, stink_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "leeched", this.get_abnormal_status_name, nil, nil, player, blooding_enemy_timer, nil, nil, true);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "bleeding", this.get_abnormal_status_name, nil, nil, player, bleeding_debuff_timer);
|
||||
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "stun", nil, nil, player, stun_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "paralysis", nil, nil, player, paralyze_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "sleep", nil, nil, player, sleep_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "frenzy", this.get_abnormal_status_name, nil, nil, player, virus_onset_timer_field);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "frenzy_overcome", this.get_abnormal_status_name, nil, nil, player_data, virus_overcome_buff_timer_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "defense_down", nil, nil, player, defense_down_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "resistance_down", nil, nil, player, resistance_down_duration_timer);
|
||||
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "tremor", nil, nil, player, quake_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "roar", nil, nil, player, ear_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "webbed", nil, nil, player, beto_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "stench", nil, nil, player, stink_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "leeched", nil, nil, player, blooding_enemy_timer, nil, nil, true);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "bleeding", nil, nil, player, bleeding_debuff_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "frenzy", nil, nil, player, virus_onset_timer_field);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "frenzy_overcome", nil, nil, player_data, virus_overcome_buff_timer_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "engulfed", player, get_is_vacuum_damage_method);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "frostblight", player, get_is_frozen_damage_method);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "engulfed", this.get_abnormal_status_name, player, get_is_vacuum_damage_method);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "frostblight", this.get_abnormal_status_name, player, get_is_frozen_damage_method);
|
||||
end
|
||||
|
||||
function this.update_poison(player)
|
||||
@@ -208,10 +206,10 @@ function this.update_poison(player)
|
||||
end
|
||||
|
||||
if poison_level == 1 then
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "poison", player, poison_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "poison", this.get_abnormal_status_name, player, poison_duration_timer);
|
||||
this.list.deadly_poison = nil;
|
||||
else
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "deadly_poison", player, poison_duration_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "deadly_poison", this.get_abnormal_status_name, player, poison_duration_timer);
|
||||
this.list.poison = nil;
|
||||
end
|
||||
end
|
||||
@@ -230,10 +228,10 @@ function this.update_bubbleblight(player)
|
||||
end
|
||||
|
||||
if bubble_type == 1 then
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "minor_bubbleblight", player, bubble_damage_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "minor_bubbleblight", this.get_abnormal_status_name, player, bubble_damage_timer);
|
||||
this.list.major_bubbleblight = nil;
|
||||
else
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "major_bubbleblight", player, bubble_damage_timer);
|
||||
buffs.update_generic_buff(this.list, ailments_type_name, "major_bubbleblight", this.get_abnormal_status_name, player, bubble_damage_timer);
|
||||
this.list.minor_bubbleblight = nil;
|
||||
end
|
||||
end
|
||||
@@ -256,7 +254,7 @@ function this.update_muck(player)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(ailments_type_name, "muck");
|
||||
buffs.update_generic(ailments_type_name, "muck", this.get_abnormal_status_name);
|
||||
end
|
||||
|
||||
function this.update_frenzy_infection(player)
|
||||
@@ -279,21 +277,24 @@ function this.update_frenzy_infection(player)
|
||||
|
||||
local timer = frenzy_infected_duration - (virus_accumulator_value + virus_timer / 60);
|
||||
|
||||
buffs.update_generic(this.list, ailments_type_name, "frenzy_infection", 1, timer, frenzy_infected_duration);
|
||||
buffs.update_generic(this.list, ailments_type_name, "frenzy_infection", this.get_abnormal_status_name, 1, timer, frenzy_infected_duration);
|
||||
end
|
||||
|
||||
function this.init_names()
|
||||
for debuff_key, debuff in pairs(this.list) do
|
||||
local name = language.current_language.ailments[debuff_key];
|
||||
|
||||
if name == nil then
|
||||
name = debuff_key;
|
||||
end
|
||||
|
||||
debuff.name = name;
|
||||
for abnormal_status_key, debuff in pairs(this.list) do
|
||||
debuff.name = this.get_abnormal_status_name(abnormal_status_key);
|
||||
end
|
||||
end
|
||||
|
||||
function this.get_abnormal_status_name(abnormal_status_key)
|
||||
local abnormal_status_name = language.current_language.ailments[abnormal_status_key];
|
||||
if abnormal_status_name == nil then
|
||||
return abnormal_status_key;
|
||||
end
|
||||
|
||||
return abnormal_status_name;
|
||||
end
|
||||
|
||||
function this.init_dependencies()
|
||||
buffs = require("MHR_Overlay.Buffs.buffs");
|
||||
config = require("MHR_Overlay.Misc.config");
|
||||
|
||||
@@ -17,6 +17,7 @@ local dangos;
|
||||
local abnormal_statuses;
|
||||
local otomo_moves;
|
||||
local weapon_skills;
|
||||
local misc_buffs;
|
||||
|
||||
local sdk = sdk;
|
||||
local tostring = tostring;
|
||||
@@ -50,6 +51,17 @@ local os = os;
|
||||
local ValueType = ValueType;
|
||||
local package = package;
|
||||
|
||||
--[[
|
||||
TODO:
|
||||
[x] DONE! Wirebug-related skills
|
||||
More otomo skills
|
||||
[x] DONE! More Dango skills
|
||||
Part breaker, charge master
|
||||
[x] DONE! Weapon buffs
|
||||
More endemic life, such as Lampsquid
|
||||
[x] DONE! Horn music
|
||||
]]
|
||||
|
||||
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
|
||||
local get_player_method = player_manager_type_def:get_method("getPlayer");
|
||||
local find_master_player_method = player_manager_type_def:get_method("findMasterPlayer");
|
||||
@@ -115,11 +127,7 @@ function this.init_UI(buff)
|
||||
end
|
||||
|
||||
function this.init_names()
|
||||
consumables.init_names();
|
||||
melody_effects.init_names();
|
||||
endemic_life_buffs.init_names();
|
||||
skills.init_names();
|
||||
dangos.init_names();
|
||||
abnormal_statuses.init_names();
|
||||
end
|
||||
|
||||
@@ -170,7 +178,23 @@ function this.update()
|
||||
endemic_life_buffs.update(master_player, master_player_data);
|
||||
abnormal_statuses.update(master_player, master_player_data);
|
||||
weapon_skills.update(master_player, master_player_data, weapon_type);
|
||||
misc_buffs.update(master_player, master_player_data);
|
||||
end
|
||||
|
||||
-- local tbl = {
|
||||
-- "_IsEnable_KitchenSkill048_Reduce",
|
||||
-- "_KitchenSkill_Insurance_DefUp_Lv3",
|
||||
-- "_KitchenSkill_Insurance_DefUp_Lv4",
|
||||
-- "_KitchenSkill051_AtkUpTimer",
|
||||
-- "_KitchenSkill051_AtkUp",
|
||||
-- "_KitchenSkill054_Timer",
|
||||
-- "_KitchenSkill054_DefUp",
|
||||
-- };
|
||||
|
||||
-- xy = "";
|
||||
-- for _, key in ipairs(tbl) do
|
||||
-- xy = string.format("%s%s: %s\n", xy, key, tostring(master_player_data:get_field(key)));
|
||||
-- end
|
||||
end
|
||||
|
||||
function this.update_timer(buff, timer, duration)
|
||||
@@ -199,7 +223,7 @@ function this.update_timer(buff, timer, duration)
|
||||
end
|
||||
end
|
||||
|
||||
function this.update_generic_buff(buff_list, buff_type, buff_key,
|
||||
function this.update_generic_buff(buff_list, buff_type, buff_key, get_name_function,
|
||||
value_owner, value_holder,
|
||||
timer_owner, timer_holder,
|
||||
duration_owner, duration_holder,
|
||||
@@ -286,17 +310,17 @@ function this.update_generic_buff(buff_list, buff_type, buff_key,
|
||||
end
|
||||
end
|
||||
|
||||
return this.update_generic(buff_list, buff_type, buff_key, level, timer, duration);
|
||||
return this.update_generic(buff_list, buff_type, buff_key, get_name_function, level, timer, duration);
|
||||
end
|
||||
|
||||
function this.update_generic(buff_list, buff_type, buff_key, level, timer, duration)
|
||||
function this.update_generic(buff_list, buff_type, buff_key, get_name_function, level, timer, duration)
|
||||
duration = duration or timer;
|
||||
level = level or 1;
|
||||
|
||||
local buff = buff_list[buff_key];
|
||||
if buff == nil then
|
||||
local name = language.current_language[buff_type][buff_key];
|
||||
|
||||
local name = get_name_function(buff_key);
|
||||
|
||||
buff = this.new(buff_type, buff_key, name, level, duration);
|
||||
buff_list[buff_key] = buff;
|
||||
else
|
||||
@@ -329,6 +353,7 @@ function this.init_dependencies()
|
||||
abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses");
|
||||
otomo_moves = require("MHR_Overlay.Buffs.otomo_moves");
|
||||
weapon_skills = require("MHR_Overlay.Buffs.weapon_skills");
|
||||
misc_buffs = require("MHR_Overlay.Buffs.misc_buffs");
|
||||
end
|
||||
|
||||
function this.init_module()
|
||||
|
||||
@@ -8,6 +8,7 @@ local players;
|
||||
local utils;
|
||||
local language;
|
||||
local error_handler;
|
||||
local endemic_life_buffs;
|
||||
|
||||
local sdk = sdk;
|
||||
local tostring = tostring;
|
||||
@@ -55,6 +56,20 @@ this.list = {
|
||||
gourmet_fish = nil,
|
||||
};
|
||||
|
||||
local consumable_ids = {
|
||||
demondrug = 68157917,
|
||||
mega_demondrug = 68157918,
|
||||
armorskin = 68157922,
|
||||
mega_armorskin = 68157923,
|
||||
might_seed = 68157919,
|
||||
adamant_seed = 68157924,
|
||||
demon_powder = 68157920,
|
||||
hardshell_powder = 68157925,
|
||||
immunizer = 68157911,
|
||||
dash_juice = 68157913,
|
||||
gourmet_fish = 68157909
|
||||
}
|
||||
|
||||
local consumables_type_name = "consumables";
|
||||
|
||||
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
|
||||
@@ -65,10 +80,13 @@ local player_user_data_item_parameter_type_def = get_ref_item_parameter_method:g
|
||||
|
||||
local demondrug_atk_up_field = player_user_data_item_parameter_type_def:get_field("_DemondrugAtkUp");
|
||||
local great_demondrug_atk_up_field = player_user_data_item_parameter_type_def:get_field("_GreatDemondrugAtkUp");
|
||||
|
||||
local armorskin_def_up_field = player_user_data_item_parameter_type_def:get_field("_ArmorSkinDefUp");
|
||||
local great_armorskin_def_up_field = player_user_data_item_parameter_type_def:get_field("_GreatArmorSkinDefUp");
|
||||
|
||||
local might_seed_atk_up_field = player_user_data_item_parameter_type_def:get_field("_MightSeedAtkUp");
|
||||
local might_seed_timer_field = player_user_data_item_parameter_type_def:get_field("_MightSeedTimer");
|
||||
|
||||
local adamant_seed_timer_field = player_user_data_item_parameter_type_def:get_field("_AdamantSeedTimer");
|
||||
local demondrug_powder_timer_field = player_user_data_item_parameter_type_def:get_field("_DemondrugPowderTimer");
|
||||
local armorskin_powder_timer_field = player_user_data_item_parameter_type_def:get_field("_ArmorSkinPowderTimer");
|
||||
@@ -99,6 +117,9 @@ local stamina_up_buff_second_timer_field = player_data_type_def:get_field("_Stam
|
||||
-- Gourmet Fish
|
||||
local fish_regene_enable_field = player_data_type_def:get_field("_FishRegeneEnableTimer");
|
||||
|
||||
local data_shortcut_type_def = sdk.find_type_definition("snow.data.DataShortcut");
|
||||
local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.ContentsIdSystem.ItemId)");
|
||||
|
||||
function this.update(player_data)
|
||||
local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
|
||||
if item_parameter == nil then
|
||||
@@ -106,44 +127,27 @@ function this.update(player_data)
|
||||
return;
|
||||
end
|
||||
|
||||
local cached_language = language.current_language
|
||||
|
||||
this.update_demondrug(player_data, item_parameter);
|
||||
this.update_armorskin(player_data, item_parameter);
|
||||
this.update_might_seed(player_data, item_parameter);
|
||||
this.update_dash_juice(player_data, item_parameter);
|
||||
|
||||
buffs.update_generic_buff(this.list, consumables_type_name, "adamant_seed", this.get_consumable_name,
|
||||
player_data, def_up_buff_second_field, player_data, def_up_buff_second_timer_field, item_parameter, adamant_seed_timer_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, consumables_type_name, "demon_powder", this.get_consumable_name,
|
||||
player_data, atk_up_item_second_field, player_data, atk_up_item_second_timer_field, item_parameter, demondrug_powder_timer_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, consumables_type_name, "hardshell_powder", this.get_consumable_name,
|
||||
player_data, def_up_item_second_field, player_data, def_up_item_second_timer_field, item_parameter, armorskin_powder_timer_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, consumables_type_name, "immunizer", this.get_consumable_name,
|
||||
nil, nil, player_data, vitalizer_timer_field, item_parameter, vitalizer_timer_const_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, consumables_type_name, "might_seed",
|
||||
player_data, atk_up_buff_second_field,
|
||||
player_data, atk_up_buff_second_timer_field,
|
||||
item_parameter, might_seed_timer_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, consumables_type_name, "adamant_seed",
|
||||
player_data, def_up_buff_second_field,
|
||||
player_data, def_up_buff_second_timer_field,
|
||||
item_parameter, adamant_seed_timer_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, consumables_type_name, "demon_powder",
|
||||
player_data, atk_up_item_second_field,
|
||||
player_data, atk_up_item_second_timer_field,
|
||||
item_parameter, demondrug_powder_timer_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, consumables_type_name, "hardshell_powder",
|
||||
player_data, def_up_item_second_field,
|
||||
player_data, def_up_item_second_timer_field,
|
||||
item_parameter, armorskin_powder_timer_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, consumables_type_name, "immunizer",
|
||||
nil, nil,
|
||||
player_data, vitalizer_timer_field,
|
||||
item_parameter, vitalizer_timer_const_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, consumables_type_name, "immunizer",
|
||||
nil, nil,
|
||||
player_data, stamina_up_buff_second_timer_field,
|
||||
item_parameter, stamina_up_buff_second_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, consumables_type_name, "gourmet_fish",
|
||||
nil, nil,
|
||||
player_data, fish_regene_enable_field,
|
||||
nil, nil);
|
||||
|
||||
buffs.update_generic_buff(this.list, consumables_type_name, "gourmet_fish", this.get_consumable_name,
|
||||
nil, nil, player_data, fish_regene_enable_field, nil, nil);
|
||||
end
|
||||
|
||||
function this.update_demondrug(player_data, item_parameter)
|
||||
@@ -171,14 +175,17 @@ function this.update_demondrug(player_data, item_parameter)
|
||||
return;
|
||||
end
|
||||
|
||||
local consumable_key;
|
||||
if demondrug_value == demondrug_const_value then
|
||||
buffs.update_generic(this.list, consumables_type_name, "demondrug");
|
||||
consumable_key = "demondrug";
|
||||
this.list.mega_demondrug = nil;
|
||||
|
||||
elseif demondrug_value == mega_demondrug_const_value then
|
||||
buffs.update_generic(this.list, consumables_type_name, "mega_demondrug");
|
||||
consumable_key = "mega_demondrug";
|
||||
this.list.demondrug = nil;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, consumables_type_name, consumable_key, this.get_consumable_name);
|
||||
end
|
||||
|
||||
function this.update_armorskin(player_data, item_parameter)
|
||||
@@ -206,26 +213,81 @@ function this.update_armorskin(player_data, item_parameter)
|
||||
return;
|
||||
end
|
||||
|
||||
local consumable_key;
|
||||
if armorskin_value == armorskin_const_value then
|
||||
buffs.update_generic(this.list, consumables_type_name, "armorskin");
|
||||
consumable_key = "armorskin";
|
||||
this.list.mega_armorskin = nil;
|
||||
|
||||
elseif armorskin_value == mega_armorskin_const_value then
|
||||
buffs.update_generic(this.list, consumables_type_name, "mega_armorskin");
|
||||
consumable_key = "mega_armorskin";
|
||||
this.list.armorskin = nil;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, consumables_type_name, consumable_key, this.get_consumable_name);
|
||||
end
|
||||
|
||||
function this.init_names()
|
||||
for consumable_key, consumable in pairs(this.list) do
|
||||
local name = language.current_language.consumables[consumable_key];
|
||||
|
||||
if name == nil then
|
||||
name = consumable_key;
|
||||
end
|
||||
|
||||
consumable.name = name;
|
||||
function this.update_might_seed(player_data, item_parameter)
|
||||
local atk_up_buff_second = atk_up_buff_second_field:get_data(player_data);
|
||||
if atk_up_buff_second == nil then
|
||||
error_handler.report("consumables.update_might_seed", "Failed to access Data: atk_up_buff_second");
|
||||
return;
|
||||
end
|
||||
|
||||
local might_seed_atk_up = might_seed_atk_up_field:get_data(item_parameter);
|
||||
if might_seed_atk_up == nil then
|
||||
error_handler.report("consumables.update_might_seed", "Failed to access Data: might_seed_atk_up");
|
||||
return;
|
||||
end
|
||||
|
||||
if atk_up_buff_second ~= might_seed_atk_up then
|
||||
this.list.might_seed = nil;
|
||||
return;
|
||||
end
|
||||
|
||||
this.update_generic_buff(this.list, consumables_type_name, "might_seed", this.get_consumable_name,
|
||||
nil, nil, player_data, atk_up_buff_second_timer_field, item_parameter, might_seed_timer_field);
|
||||
end
|
||||
|
||||
function this.update_dash_juice(player_data, item_parameter)
|
||||
local stamina_up_buff_second_timer = stamina_up_buff_second_timer_field:get_data(player_data);
|
||||
if stamina_up_buff_second_timer == nil then
|
||||
error_handler.report("consumables.update_dash_juice", "Failed to access Data: stamina_up_buff_second_timer");
|
||||
return;
|
||||
end
|
||||
|
||||
local stamina_up_buff_second = stamina_up_buff_second_field:get_data(item_parameter);
|
||||
if stamina_up_buff_second == nil then
|
||||
error_handler.report("consumables.update_dash_juice", "Failed to access Data: stamina_up_buff_second");
|
||||
return;
|
||||
end
|
||||
|
||||
if utils.number.is_equal(stamina_up_buff_second_timer, 0) then
|
||||
this.list.dash_juice = nil;
|
||||
return;
|
||||
end
|
||||
|
||||
local timer = stamina_up_buff_second_timer / 60;
|
||||
local dash_juice_consumable = this.list.dash_juice;
|
||||
|
||||
if dash_juice_consumable == nil
|
||||
or (dash_juice_consumable ~= nil and timer > dash_juice_consumable.timer) then
|
||||
if timer <= endemic_life_buffs.peepersects_duration + 0.1 then
|
||||
this.list.dash_juice = nil;
|
||||
return;
|
||||
end
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, consumables_type_name, "dash_juice", this.get_consumable_name, 1, timer, stamina_up_buff_second);
|
||||
end
|
||||
|
||||
function this.get_consumable_name(consumable_key)
|
||||
local consumable_name = get_name_method:call(nil, consumable_ids[consumable_key]);
|
||||
if consumable_name == nil then
|
||||
error_handler.report("consumables.get_consumable_name", string.format("Failed to access Data: %s_name", consumable_key));
|
||||
return consumable_key;
|
||||
end
|
||||
|
||||
return consumable_name;
|
||||
end
|
||||
|
||||
function this.init_dependencies()
|
||||
@@ -237,6 +299,7 @@ function this.init_dependencies()
|
||||
players = require("MHR_Overlay.Damage_Meter.players");
|
||||
language = require("MHR_Overlay.Misc.language");
|
||||
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||
endemic_life_buffs = require("MHR_Overlay.Buffs.endemic_life_buffs");
|
||||
end
|
||||
|
||||
function this.init_module()
|
||||
|
||||
@@ -43,13 +43,77 @@ local package = package;
|
||||
|
||||
this.list = {
|
||||
dango_defender = nil,
|
||||
dango_adrenaline = nil
|
||||
dango_adrenaline = nil,
|
||||
dango_booster = nil,
|
||||
dango_glutton = nil,
|
||||
|
||||
dango_bulker = nil,
|
||||
};
|
||||
|
||||
local dango_ids = {
|
||||
dango_polisher = 1,
|
||||
dango_rider = 2,
|
||||
dango_adrenaline = 3,
|
||||
dango_carver_lo = 4,
|
||||
dango_carver_hi = 5,
|
||||
dango_medic_lo = 6,
|
||||
dango_medic_hi = 7,
|
||||
dango_fighter = 8,
|
||||
dango_pyro = 9,
|
||||
dango_specialist = 10,
|
||||
dango_defender_lo = 11,
|
||||
dango_defender_hi = 12,
|
||||
dango_harvester = 13,
|
||||
dango_marksman = 14,
|
||||
dango_fortune_caller = 15,
|
||||
dango_miracle_worker = 16,
|
||||
dango_deflector = 17,
|
||||
dango_weakener = 18,
|
||||
dango_calculator = 19,
|
||||
dango_temper = 20,
|
||||
dango_wall_runner = 21,
|
||||
dango_slugger = 22,
|
||||
dango_money_maker = 23,
|
||||
dango_bombardier = 24,
|
||||
dango_moxie = 25,
|
||||
dango_immunizer = 26,
|
||||
dango_trainer = 27,
|
||||
dango_booster = 28,
|
||||
dango_feet = 29,
|
||||
dango_bulker = 30,
|
||||
dango_insurance = 31,
|
||||
dango_reviver = 32,
|
||||
dango_summoner = 33,
|
||||
dango_hurler = 34,
|
||||
dango_fire_res_lo = 35,
|
||||
dango_fire_res_hi = 36,
|
||||
dango_water_res_lo = 37,
|
||||
dango_water_res_hi = 38,
|
||||
dango_thunder_res_lo = 39,
|
||||
dango_thunder_res_hi = 40,
|
||||
dango_ice_res_lo = 41,
|
||||
dango_ice_res_hi = 42,
|
||||
dango_dragon_res_lo = 43,
|
||||
dango_dragon_res_hi = 44,
|
||||
dango_gatherer = 45,
|
||||
dango_glutton = 46,
|
||||
dango_bird_caller = 47,
|
||||
dango_flyer = 48,
|
||||
dango_defender = 49,
|
||||
enhanced_dango_fighter = 50,
|
||||
dango_driver = 51,
|
||||
dango_hunter = 52,
|
||||
dango_guard = 53,
|
||||
dango_shifter = 54,
|
||||
dango_connector = 55,
|
||||
super_recovery_dango = 56
|
||||
};
|
||||
|
||||
this.is_dango_adrenaline_active = false;
|
||||
|
||||
local dangos_type_name = "dangos";
|
||||
local dango_defender_minimal_value = 200;
|
||||
local dango_bulker_attack_up = 15;
|
||||
|
||||
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
|
||||
local get_player_data_method = player_manager_type_def:get_method("get_PlayerData");
|
||||
@@ -62,11 +126,22 @@ local player_user_data_item_parameter_type_def = get_ref_item_parameter_method:g
|
||||
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
|
||||
-- Dango Defender
|
||||
local kitchen_skill_048_field = player_data_type_def:get_field("_KitchenSkill048_Damage");
|
||||
-- Dango Booster
|
||||
local kitchen_skill_027_timer_field = player_data_type_def:get_field("_KitchenSkill027Timer");
|
||||
-- Dango Glutton
|
||||
local kitchen_skill_045_timer_field = player_data_type_def:get_field("_KitchenSkill045Timer");
|
||||
-- Dango Bulker
|
||||
local atk_up_buff_second_field = player_data_type_def:get_field("_AtkUpBuffSecond");
|
||||
local atk_up_buff_second_timer_field = player_data_type_def:get_field("_AtkUpBuffSecondTimer");
|
||||
|
||||
|
||||
local player_base_type_def = sdk.find_type_definition("snow.player.PlayerBase");
|
||||
-- Dango Adrenaline
|
||||
local is_kitchen_skill_predicament_powerup_method = player_base_type_def:get_method("isKitchenSkillPredicamentPowerUp");
|
||||
|
||||
local data_shortcut_type_def = sdk.find_type_definition("snow.data.DataShortcut");
|
||||
local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.DataDef.PlKitchenSkillId)");
|
||||
|
||||
function this.update(player, player_data)
|
||||
local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
|
||||
if item_parameter == nil then
|
||||
@@ -74,10 +149,20 @@ function this.update(player, player_data)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic_buff(this.list, dangos_type_name, "dango_defender", player_data, kitchen_skill_048_field, nil, nil, nil, nil, true, dango_defender_minimal_value);
|
||||
this.update_dango_adrenaline();
|
||||
end
|
||||
this.update_dango_bulker(player_data);
|
||||
|
||||
buffs.update_generic_buff(this.list, dangos_type_name, "dango_defender", this.get_dango_name,
|
||||
player_data, kitchen_skill_048_field, nil, nil, nil, nil, true, dango_defender_minimal_value);
|
||||
|
||||
buffs.update_generic_buff(this.list, dangos_type_name, "dango_booster", this.get_dango_name,
|
||||
nil, nil, player_data, kitchen_skill_027_timer_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, dangos_type_name, "dango_glutton", this.get_dango_name,
|
||||
nil, nil, player_data, kitchen_skill_045_timer_field);
|
||||
|
||||
|
||||
end
|
||||
|
||||
function this.update_dango_adrenaline()
|
||||
if not this.is_dango_adrenaline_active then
|
||||
@@ -85,19 +170,32 @@ function this.update_dango_adrenaline()
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, dangos_type_name, "dango_adrenaline");
|
||||
buffs.update_generic(this.list, dangos_type_name, "dango_adrenaline", this.get_dango_name);
|
||||
end
|
||||
|
||||
function this.init_names()
|
||||
for dango_key, dango in pairs(this.list) do
|
||||
local name = language.current_language.dangos[dango_key];
|
||||
|
||||
if name == nil then
|
||||
name = dango_key;
|
||||
end
|
||||
|
||||
dango.name = name;
|
||||
function this.update_dango_bulker(player_data)
|
||||
local atk_up_buff_second = atk_up_buff_second_field:get_data(player_data);
|
||||
if atk_up_buff_second == nil then
|
||||
error_handler.report("consumables.update_dango_bulker", "Failed to access Data: atk_up_buff_second");
|
||||
return;
|
||||
end
|
||||
|
||||
if atk_up_buff_second ~= dango_bulker_attack_up then
|
||||
this.list.dango_bulker = nil;
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic_buff(this.list, dangos_type_name, "dango_bulker", this.get_dango_name, nil, nil, player_data, atk_up_buff_second_timer_field);
|
||||
end
|
||||
|
||||
function this.get_dango_name(dango_key)
|
||||
local dango_name = get_name_method:call(nil, dango_ids[dango_key]);
|
||||
if dango_name == nil then
|
||||
error_handler.report("dangos.get_dango_name", string.format("Failed to access Data: %s_name", dango_key));
|
||||
return dango_key;
|
||||
end
|
||||
|
||||
return dango_name;
|
||||
end
|
||||
|
||||
function this.init_dependencies()
|
||||
@@ -111,6 +209,7 @@ function this.init_dependencies()
|
||||
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||
end
|
||||
|
||||
|
||||
function this.init_module()
|
||||
end
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ local utils;
|
||||
local language;
|
||||
local error_handler;
|
||||
local env_creature;
|
||||
local consumables;
|
||||
|
||||
local sdk = sdk;
|
||||
local tostring = tostring;
|
||||
@@ -49,7 +50,13 @@ this.list = {
|
||||
gold_wirebug = nil
|
||||
};
|
||||
|
||||
this.peepersects_duration = 90;
|
||||
|
||||
local endemic_life_buffs_type_name = "endemic_life_buffs";
|
||||
|
||||
local marionette_mode_types = { "ruby_wirebug", "gold_wirebug" };
|
||||
local butterflame_attack_up = 25;
|
||||
|
||||
|
||||
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
|
||||
local get_player_data_method = player_manager_type_def:get_method("get_PlayerData");
|
||||
@@ -65,8 +72,11 @@ local crit_up_ec_second_timer_field = player_data_type_def:get_field("_CritUpEcS
|
||||
local def_up_buff_second_rate_timer_field = player_data_type_def:get_field("_DefUpBuffSecondRateTimer");
|
||||
-- Ruby/Gold Wirebugs
|
||||
local wirebug_powerup_timer_field = player_data_type_def:get_field("_WireBugPowerUpTimer");
|
||||
|
||||
|
||||
-- Butterflame
|
||||
local atk_up_buff_second_field = player_data_type_def:get_field("_AtkUpBuffSecond");
|
||||
local atk_up_buff_second_timer_field = player_data_type_def:get_field("_AtkUpBuffSecondTimer");
|
||||
-- Peepersects
|
||||
local stamina_up_buff_second_timer_field = player_data_type_def:get_field("_StaminaUpBuffSecondTimer");
|
||||
|
||||
local player_quest_base_type_def = sdk.find_type_definition("snow.player.PlayerQuestBase");
|
||||
-- Ruby/Gold Wirebugs
|
||||
@@ -75,66 +85,16 @@ local get_marionette_mode_type_method = player_quest_base_type_def:get_method("g
|
||||
local message_manager_type_def = sdk.find_type_definition("snow.gui.MessageManager");
|
||||
local get_env_creature_name_message_method = message_manager_type_def:get_method("getEnvCreatureNameMessage");
|
||||
|
||||
function this.update(player, player_data)
|
||||
this.update_generic_timer("cutterfly", player_data, crit_up_ec_second_timer_field);
|
||||
this.update_generic_timer("clothfly", player_data, def_up_buff_second_rate_timer_field);
|
||||
function this.update(player, player_data, item_parameter)
|
||||
this.update_ruby_and_gold_wirebugs(player, player_data);
|
||||
end
|
||||
this.update_butterflame(player_data);
|
||||
this.update_peepersects(player_data);
|
||||
|
||||
function this.update_generic_timer(endemic_life_buff_key, timer_owner, timer_holder, is_infinite)
|
||||
local timer = nil;
|
||||
if timer_holder ~= nil then
|
||||
if utils.type.is_REField then
|
||||
timer = timer_holder:get_data(timer_owner);
|
||||
else
|
||||
timer = timer_holder:call(timer_owner);
|
||||
end
|
||||
|
||||
if timer == nil then
|
||||
error_handler.report("endemic_life_buffs.update_generic_timer", string.format("Failed to access Data: %s_timer", endemic_life_buff_key));
|
||||
return;
|
||||
end
|
||||
buffs.update_generic_buff(this.list, endemic_life_buffs_type_name, "cutterfly", this.get_endemic_life_name,
|
||||
nil, nil, player_data, crit_up_ec_second_timer_field);
|
||||
|
||||
if utils.number.is_equal(timer, 0) then
|
||||
this.list[endemic_life_buff_key] = nil;
|
||||
return;
|
||||
end
|
||||
|
||||
if is_infinite then
|
||||
timer = nil;
|
||||
else
|
||||
timer = timer / 60;
|
||||
end
|
||||
end
|
||||
|
||||
this.update_generic(endemic_life_buff_key, 1, timer);
|
||||
end
|
||||
|
||||
function this.update_generic(endemic_life_buff_key, level, timer, duration)
|
||||
duration = duration or timer;
|
||||
|
||||
if singletons.message_manager == nil then
|
||||
error_handler.report("endemic_life_buffs.update_generic", "Failed to access Data: message_manager");
|
||||
return;
|
||||
end
|
||||
|
||||
local endemic_life_buff = this.list[endemic_life_buff_key];
|
||||
if endemic_life_buff == nil then
|
||||
local name = get_env_creature_name_message_method:call(singletons.message_manager, env_creature.creature_ids[endemic_life_buff_key]);
|
||||
if name == nil then
|
||||
error_handler.report("endemic_life_buffs.update_generic", string.format("Failed to access Data: %s -> name", endemic_life_buff_key));
|
||||
return;
|
||||
end
|
||||
|
||||
endemic_life_buff = buffs.new("endemic_life_buffs", endemic_life_buff_key, name, level, duration);
|
||||
this.list[endemic_life_buff_key] = endemic_life_buff;
|
||||
else
|
||||
endemic_life_buff.level = level;
|
||||
|
||||
if timer ~= nil then
|
||||
buffs.update_timer(endemic_life_buff, timer);
|
||||
end
|
||||
end
|
||||
buffs.update_generic_buff(this.list, endemic_life_buffs_type_name, "clothfly", this.get_endemic_life_name,
|
||||
nil, nil, player_data, def_up_buff_second_rate_timer_field);
|
||||
end
|
||||
|
||||
function this.update_ruby_and_gold_wirebugs(player, player_data)
|
||||
@@ -155,11 +115,70 @@ function this.update_ruby_and_gold_wirebugs(player, player_data)
|
||||
|
||||
local endemic_life_buff_key = marionette_mode_types[marionette_mode_type];
|
||||
|
||||
this.update_generic_timer(endemic_life_buff_key, player_data, wirebug_powerup_timer_field);
|
||||
buffs.update_generic_timer(this.list, endemic_life_buffs_type_name, endemic_life_buff_key, this.get_endemic_life_name,
|
||||
player_data, wirebug_powerup_timer_field);
|
||||
end
|
||||
|
||||
function this.init_names()
|
||||
-- Nothing to do here
|
||||
function this.update_butterflame(player_data)
|
||||
local atk_up_buff_second = atk_up_buff_second_field:get_data(player_data);
|
||||
if atk_up_buff_second == nil then
|
||||
error_handler.report("consumables.update_butterflame", "Failed to access Data: atk_up_buff_second");
|
||||
return;
|
||||
end
|
||||
|
||||
if atk_up_buff_second ~= butterflame_attack_up then
|
||||
this.list.butterflame = nil;
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic_timer(this.list, endemic_life_buffs_type_name, "butterflame", this.get_endemic_life_name,
|
||||
player_data, atk_up_buff_second_timer_field);
|
||||
end
|
||||
|
||||
function this.update_peepersects(player_data)
|
||||
local stamina_up_buff_second_timer = stamina_up_buff_second_timer_field:get_data(player_data);
|
||||
if stamina_up_buff_second_timer == nil then
|
||||
error_handler.report("consumables.update_peepersects", "Failed to access Data: stamina_up_buff_second_timer");
|
||||
return;
|
||||
end
|
||||
|
||||
if utils.number.is_equal(stamina_up_buff_second_timer, 0) then
|
||||
this.list.peepersects = nil;
|
||||
return;
|
||||
end
|
||||
|
||||
local timer = stamina_up_buff_second_timer / 60;
|
||||
local peepersects_buff = this.list.peepersects;
|
||||
|
||||
if peepersects_buff == nil and consumables.list.dash_juice ~= nil and timer <= consumables.list.dash_juice.timer then
|
||||
return;
|
||||
end
|
||||
|
||||
if peepersects_buff == nil
|
||||
or (peepersects_buff ~= nil and timer > peepersects_buff.timer) then
|
||||
local timer_percentage = timer / this.peepersects_duration;
|
||||
if timer_percentage < 0.95 or timer_percentage > 1.05 then
|
||||
this.list.peepersects = nil;
|
||||
return;
|
||||
end
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, endemic_life_buffs_type_name, "peepersects", this.get_endemic_life_name, 1, timer, this.peepersects_duration);
|
||||
end
|
||||
|
||||
function this.get_endemic_life_name(endemic_life_buff_key)
|
||||
if singletons.message_manager == nil then
|
||||
error_handler.report("endemic_life_buffs.get_endemic_life_name", "Failed to access Data: message_manager");
|
||||
return endemic_life_buff_key;
|
||||
end
|
||||
|
||||
local endemic_life_name = get_env_creature_name_message_method:call(singletons.message_manager, env_creature.creature_ids[endemic_life_buff_key]);
|
||||
if endemic_life_name == nil then
|
||||
error_handler.report("endemic_life_buffs.get_endemic_life_name", string.format("Failed to access Data: %s_name", endemic_life_buff_key));
|
||||
return endemic_life_buff_key;
|
||||
end
|
||||
|
||||
return endemic_life_name;
|
||||
end
|
||||
|
||||
function this.init_dependencies()
|
||||
@@ -172,6 +191,7 @@ function this.init_dependencies()
|
||||
language = require("MHR_Overlay.Misc.language");
|
||||
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||
env_creature = require("MHR_Overlay.Endemic_Life.env_creature");
|
||||
consumables = require("MHR_Overlay.Buffs.consumables");
|
||||
end
|
||||
|
||||
function this.init_module()
|
||||
|
||||
@@ -41,7 +41,7 @@ local os = os;
|
||||
local ValueType = ValueType;
|
||||
local package = package;
|
||||
|
||||
local ids = {
|
||||
--[[local melody_effect_ids = {
|
||||
self_improvement = 0,
|
||||
attack_up = 1,
|
||||
defense_up = 2,
|
||||
@@ -70,38 +70,7 @@ local ids = {
|
||||
infernal_melody = 25,
|
||||
sharpness_regeneration = 26,
|
||||
sharpness_extension = 27
|
||||
};
|
||||
|
||||
local melody_effect_keys = {
|
||||
"self_improvement",
|
||||
"attack_up",
|
||||
"defense_up",
|
||||
"affinity_up",
|
||||
"elemental_attack_boost",
|
||||
"attack_and_defense_up",
|
||||
"attack_and_affinity_up",
|
||||
"knockbacks_negated",
|
||||
"earplugs_s",
|
||||
"earplugs_l",
|
||||
"tremors_negated",
|
||||
"wind_pressure_negated",
|
||||
"stun_negated",
|
||||
"blight_negated",
|
||||
"divine_protection",
|
||||
"health_recovery_s",
|
||||
"health_recovery_l",
|
||||
"health_recovery_s_antidote",
|
||||
"health_regeneration",
|
||||
"stamina_use_reduced",
|
||||
"stamina_recovery_up",
|
||||
"sharpness_loss_reduced",
|
||||
"environment_damage_negated",
|
||||
"sonic_wave",
|
||||
"sonic_barrier",
|
||||
"infernal_melody",
|
||||
"sharpness_regeneration",
|
||||
"sharpness_extension"
|
||||
};
|
||||
};]]
|
||||
|
||||
this.list = {};
|
||||
|
||||
@@ -118,6 +87,9 @@ local system_array_type_def = sdk.find_type_definition("System.Array");
|
||||
local get_length_method = system_array_type_def:get_method("get_Length");
|
||||
local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)");
|
||||
|
||||
local data_shortcut_type_def = sdk.find_type_definition("snow.data.DataShortcut");
|
||||
local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.DataDef.HornConcertId)");
|
||||
|
||||
function this.update(master_player)
|
||||
local music_data_array = music_data_field:get_data(master_player);
|
||||
if music_data_array == nil then
|
||||
@@ -138,45 +110,45 @@ function this.update(master_player)
|
||||
goto continue;
|
||||
end
|
||||
|
||||
this.update_melody_effect(i + 1, music_data);
|
||||
this.update_melody_effect(i, music_data);
|
||||
::continue::
|
||||
end
|
||||
end
|
||||
|
||||
function this.update_melody_effect(lua_index, melody_data)
|
||||
function this.update_melody_effect(index, melody_data)
|
||||
local lua_index = index + 1;
|
||||
|
||||
local melody_timer = time_field:get_data(melody_data);
|
||||
if melody_timer == nil then
|
||||
error_handler.report("melody_effects.update", "Failed to access Data: melody_timer No. " .. tostring(lua_index - 1));
|
||||
return;
|
||||
end
|
||||
if melody_timer == nil then
|
||||
error_handler.report("melody_effects.update_melody_effect", "Failed to access Data: melody_timer No. " .. tostring(index));
|
||||
return;
|
||||
end
|
||||
|
||||
if utils.number.is_equal(melody_timer, 0) then
|
||||
this.list[lua_index] = nil;
|
||||
return;
|
||||
end
|
||||
if utils.number.is_equal(melody_timer, 0) then
|
||||
this.list[lua_index] = nil;
|
||||
return;
|
||||
end
|
||||
|
||||
local melody_effect = this.list[lua_index];
|
||||
if melody_effect == nil then
|
||||
local melody_effect_key = melody_effect_keys[lua_index];
|
||||
local name = language.current_language.melody_effects[melody_effect_key];
|
||||
local melody_effect = this.list[lua_index];
|
||||
if melody_effect == nil then
|
||||
local melody_effect_name = this.get_melody_effect_name(index);
|
||||
|
||||
melody_effect = buffs.new("melody_effects", melody_effect_key, name, 1, melody_timer / 60);
|
||||
this.list[lua_index] = melody_effect;
|
||||
else
|
||||
buffs.update_timer(melody_effect, melody_timer / 60);
|
||||
end
|
||||
melody_effect = buffs.new("melody_effects", lua_index, melody_effect_name, 1, melody_timer / 60);
|
||||
this.list[lua_index] = melody_effect;
|
||||
else
|
||||
buffs.update_timer(melody_effect, melody_timer / 60);
|
||||
end
|
||||
end
|
||||
|
||||
function this.init_names()
|
||||
for index, dango in pairs(this.list) do
|
||||
local name = language.current_language.dangos[dango.key];
|
||||
|
||||
if name == nil then
|
||||
name = dango.key;
|
||||
end
|
||||
|
||||
dango.name = name;
|
||||
function this.get_melody_effect_name(melody_effect_id)
|
||||
local melody_effect_name = get_name_method:call(nil, melody_effect_id);
|
||||
if melody_effect_name == nil then
|
||||
local name = string.format("Melody Effect No. %d", melody_effect_id);
|
||||
error_handler.report("melody_effects.get_melody_effect_name", "Failed to access Data: " .. melody_effect_name);
|
||||
return name;
|
||||
end
|
||||
|
||||
return melody_effect_name;
|
||||
end
|
||||
|
||||
function this.init_dependencies()
|
||||
|
||||
112
reframework/autorun/MHR_Overlay/Buffs/misc_buffs.lua
Normal file
112
reframework/autorun/MHR_Overlay/Buffs/misc_buffs.lua
Normal file
@@ -0,0 +1,112 @@
|
||||
local this = {};
|
||||
|
||||
local buffs;
|
||||
local buff_UI_entity;
|
||||
local config;
|
||||
local singletons;
|
||||
local players;
|
||||
local utils;
|
||||
local language;
|
||||
local error_handler;
|
||||
local endemic_life_buffs;
|
||||
local consumables;
|
||||
|
||||
local sdk = sdk;
|
||||
local tostring = tostring;
|
||||
local pairs = pairs;
|
||||
local ipairs = ipairs;
|
||||
local tonumber = tonumber;
|
||||
local require = require;
|
||||
local pcall = pcall;
|
||||
local table = table;
|
||||
local string = string;
|
||||
local Vector3f = Vector3f;
|
||||
local d2d = d2d;
|
||||
local math = math;
|
||||
local json = json;
|
||||
local log = log;
|
||||
local fs = fs;
|
||||
local next = next;
|
||||
local type = type;
|
||||
local setmetatable = setmetatable;
|
||||
local getmetatable = getmetatable;
|
||||
local assert = assert;
|
||||
local select = select;
|
||||
local coroutine = coroutine;
|
||||
local utf8 = utf8;
|
||||
local re = re;
|
||||
local imgui = imgui;
|
||||
local draw = draw;
|
||||
local Vector2f = Vector2f;
|
||||
local reframework = reframework;
|
||||
local os = os;
|
||||
local ValueType = ValueType;
|
||||
local package = package;
|
||||
|
||||
this.list = {
|
||||
stamina_use_down = nil,
|
||||
};
|
||||
|
||||
local misc_buffs_type_name = "misc_buffs";
|
||||
|
||||
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
|
||||
-- Dash Juice/Peepersects
|
||||
local stamina_up_buff_second_timer_field = player_data_type_def:get_field("_StaminaUpBuffSecondTimer");
|
||||
|
||||
function this.update(player, player_data)
|
||||
this.update_stamina_use_down(player_data);
|
||||
end
|
||||
|
||||
function this.update_stamina_use_down(player_data)
|
||||
if consumables.list.dash_juice ~= nil or endemic_life_buffs.list.peepersects ~= nil then
|
||||
this.list.stamina_use_down = nil;
|
||||
return;
|
||||
end
|
||||
|
||||
local stamina_up_buff_second_timer = stamina_up_buff_second_timer_field:get_data(player_data);
|
||||
if stamina_up_buff_second_timer == nil then
|
||||
error_handler.report("consumables.update_stamina_use_down", "Failed to access Data: stamina_up_buff_second_timer");
|
||||
return;
|
||||
end
|
||||
|
||||
if utils.number.is_equal(stamina_up_buff_second_timer, 0) then
|
||||
this.list.stamina_use_down = nil;
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, misc_buffs_type_name, "stamina_use_down", 1,
|
||||
stamina_up_buff_second_timer / 60, endemic_life_buffs.peepersects_duration);
|
||||
end
|
||||
|
||||
function this.init_names()
|
||||
for misc_buff_key, dango in pairs(this.list) do
|
||||
dango.name = this.get_misc_buff_name(misc_buff_key);
|
||||
end
|
||||
end
|
||||
|
||||
function this.get_misc_buff_name(misc_buff_key)
|
||||
local misc_buff_name = language.current_language.misc_buffs[misc_buff_key];
|
||||
if misc_buff_name == nil then
|
||||
return misc_buff_key;
|
||||
end
|
||||
|
||||
return misc_buff_name;
|
||||
end
|
||||
|
||||
function this.init_dependencies()
|
||||
buffs = require("MHR_Overlay.Buffs.buffs");
|
||||
config = require("MHR_Overlay.Misc.config");
|
||||
utils = require("MHR_Overlay.Misc.utils");
|
||||
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
|
||||
singletons = require("MHR_Overlay.Game_Handler.singletons");
|
||||
players = require("MHR_Overlay.Damage_Meter.players");
|
||||
language = require("MHR_Overlay.Misc.language");
|
||||
error_handler = require("MHR_Overlay.Misc.error_handler");
|
||||
endemic_life_buffs = require("MHR_Overlay.Buffs.endemic_life_buffs");
|
||||
consumables = require("MHR_Overlay.Buffs.consumables");
|
||||
end
|
||||
|
||||
function this.init_module()
|
||||
end
|
||||
|
||||
return this;
|
||||
@@ -47,8 +47,41 @@ local package = package;
|
||||
|
||||
this.list = {
|
||||
rousing_roar = nil,
|
||||
power_drum = nil,
|
||||
go_fight_win = nil
|
||||
go_fight_win = nil,
|
||||
power_drum = nil
|
||||
};
|
||||
|
||||
local otomo_moves_ids = {
|
||||
herbaceous_healing = 1,
|
||||
felyne_silkbind = 2,
|
||||
felyne_wyvernblast = 3,
|
||||
rousing_roar = 4,
|
||||
endemic_life_barrage = 5,
|
||||
health_horn = 6,
|
||||
healing_bubble = 7,
|
||||
vase_of_vitality = 8,
|
||||
furbidden_acorn = 9,
|
||||
poison_purr_ison = 10,
|
||||
summeown_endemic_life = 11,
|
||||
shock_purr_ison = 12,
|
||||
go_fight_win = 13,
|
||||
giga_barrel_bombay = 14,
|
||||
flash_bombay = 15,
|
||||
anti_monster_mine = 16,
|
||||
zap_blast_spinner = 17,
|
||||
furr_ious = 18,
|
||||
power_drum = 19,
|
||||
fleet_foot_feat = 20,
|
||||
whirlwind_assault = 21,
|
||||
pilfer = 22,
|
||||
shock_tripper = 23,
|
||||
mega_boomerang = 24,
|
||||
camouflage = 25,
|
||||
healing_clover_bat = 26,
|
||||
felyne_firewors = 27,
|
||||
lottery_box = 28,
|
||||
felyne_powered_up = 29,
|
||||
ameowzing_mist = 30
|
||||
};
|
||||
|
||||
local otomo_moves_type_name = "otomo_moves";
|
||||
@@ -64,22 +97,28 @@ local kijin_otomo_timer_field = player_data_type_def:get_field("_KijinOtomoTimer
|
||||
-- Palico: Go, Fight, Win
|
||||
local runhigh_otomo_timer_field = player_data_type_def:get_field("_RunhighOtomoTimer");
|
||||
|
||||
local data_shortcut_type_def = sdk.find_type_definition("snow.data.DataShortcut");
|
||||
local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.DataDef.OtSupportActionId)");
|
||||
|
||||
function this.update(player_data)
|
||||
buffs.update_generic_buff(this.list, otomo_moves_type_name, "rousing_roar", nil, nil, player_data, beast_roar_otomo_timer_field);
|
||||
buffs.update_generic_buff(this.list, otomo_moves_type_name, "power_drum", nil, nil, player_data, kijin_otomo_timer_field);
|
||||
buffs.update_generic_buff(this.list, otomo_moves_type_name, "go_fight_win", nil, nil, player_data, runhigh_otomo_timer_field);
|
||||
buffs.update_generic_buff(this.list, otomo_moves_type_name, "rousing_roar", this.get_otomo_move_name,
|
||||
nil, nil, player_data, beast_roar_otomo_timer_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, otomo_moves_type_name, "go_fight_win", this.get_otomo_move_name,
|
||||
nil, nil, player_data, runhigh_otomo_timer_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, otomo_moves_type_name, "power_drum", this.get_otomo_move_name,
|
||||
nil, nil, player_data, kijin_otomo_timer_field);
|
||||
end
|
||||
|
||||
function this.init_names()
|
||||
for otomo_move_key, otomo_move in pairs(this.list) do
|
||||
local name = language.current_language.otomo_moves[otomo_move_key];
|
||||
|
||||
if name == nil then
|
||||
name = otomo_move_key;
|
||||
end
|
||||
|
||||
otomo_move.name = name;
|
||||
function this.get_otomo_move_name(otomo_move_key)
|
||||
local otomo_move_name = get_name_method:call(nil, otomo_moves_ids[otomo_move_key]);
|
||||
if otomo_move_name == nil then
|
||||
error_handler.report("otomo_moves.get_otomo_move_name", string.format("Failed to access Data: %s_name", otomo_move_key));
|
||||
return otomo_move_key;
|
||||
end
|
||||
|
||||
return otomo_move_name;
|
||||
end
|
||||
|
||||
function this.init_dependencies()
|
||||
|
||||
@@ -51,6 +51,7 @@ this.list = {
|
||||
intrepid_heart = nil,
|
||||
dereliction = nil,
|
||||
latent_power = nil,
|
||||
protective_polish = nil,
|
||||
wind_mantle = nil,
|
||||
grinder_s = nil,
|
||||
counterstrike = nil,
|
||||
@@ -62,6 +63,7 @@ this.list = {
|
||||
hellfire_cloak = nil,
|
||||
agitator = nil,
|
||||
furious = nil,
|
||||
status_trigger = nil,
|
||||
heaven_sent = nil,
|
||||
heroics = nil,
|
||||
resuscitate = nil,
|
||||
@@ -70,167 +72,161 @@ this.list = {
|
||||
frenzied_bloodlust = nil,
|
||||
peak_performance = nil,
|
||||
dragonheart = nil,
|
||||
resentment = nil
|
||||
resentment = nil,
|
||||
bladescale_hone = nil,
|
||||
spiribirds_call = nil
|
||||
};
|
||||
|
||||
local skills_type_name = "skills";
|
||||
|
||||
local skill_data_list = {
|
||||
-- 1 Pl_EquipSkill_000 Attack Boost
|
||||
-- 2 Pl_EquipSkill_001 Agitator
|
||||
-- 3 Pl_EquipSkill_002 Peak Performance
|
||||
peak_performance = { id = 3, level = 0, is_equipped = false },
|
||||
-- 4 Pl_EquipSkill_003 Resentment
|
||||
resentment = { id = 4, level = 0, is_equipped = false },
|
||||
-- 5 Pl_EquipSkill_004 Resuscitate
|
||||
resuscitate = { id = 5, level = 0, is_equipped = false },
|
||||
-- 6 Pl_EquipSkill_005 Critical Eye
|
||||
-- 7 Pl_EquipSkill_006 Critical Boost
|
||||
-- 8 Pl_EquipSkill_007 Weakness Exploit
|
||||
-- 9 Pl_EquipSkill_008 Latent Power
|
||||
-- 10 Pl_EquipSkill_009 Maximum Might
|
||||
maximum_might = { id = 10, level = 0, is_equipped = false },
|
||||
-- 11 Pl_EquipSkill_010 Critical Element
|
||||
-- 12 Pl_EquipSkill_011 Master's Touch
|
||||
-- 13 Pl_EquipSkill_012 Fire Attack
|
||||
-- 14 Pl_EquipSkill_013 Water Attack
|
||||
-- 15 Pl_EquipSkill_014 Ice Attack
|
||||
-- 16 Pl_EquipSkill_015 Thunder Attack
|
||||
-- 17 Pl_EquipSkill_016 Dragon Attack
|
||||
-- 18 Pl_EquipSkill_017 Poison Attack
|
||||
-- 19 Pl_EquipSkill_018 Paralysis Attack
|
||||
-- 20 Pl_EquipSkill_019 Sleep Attack
|
||||
-- 21 Pl_EquipSkill_020 Blast Attack
|
||||
-- 22 Pl_EquipSkill_021 Handicraft
|
||||
-- 23 Pl_EquipSkill_022 Razor Sharp
|
||||
-- 24 Pl_EquipSkill_023 Spare Shot
|
||||
-- 25 Pl_EquipSkill_024 Protective Polish
|
||||
-- 26 Pl_EquipSkill_025 Mind's Eye
|
||||
-- 27 Pl_EquipSkill_026 Ballistics
|
||||
-- 28 Pl_EquipSkill_027 Bludgeoner
|
||||
-- 29 Pl_EquipSkill_028 Bow Charge Plus
|
||||
-- 30 Pl_EquipSkill_029 Focus
|
||||
-- 31 Pl_EquipSkill_030 Power Prolonger
|
||||
-- 32 Pl_EquipSkill_031 Marathon Runner
|
||||
-- 33 Pl_EquipSkill_032 Constitution
|
||||
-- 34 Pl_EquipSkill_033 Stamina Surge
|
||||
-- 35 Pl_EquipSkill_034 Guard
|
||||
-- 36 Pl_EquipSkill_035 Guard Up
|
||||
-- 37 Pl_EquipSkill_036 Offensive Guard
|
||||
-- 38 Pl_EquipSkill_037 Critical Draw
|
||||
-- 39 Pl_EquipSkill_038 Punishing Draw
|
||||
-- 40 Pl_EquipSkill_039 Quick Sheathe
|
||||
-- 41 Pl_EquipSkill_040 Slugger
|
||||
-- 42 Pl_EquipSkill_041 Stamina Thief
|
||||
-- 43 Pl_EquipSkill_042 Affinity Sliding
|
||||
-- 44 Pl_EquipSkill_043 Horn Maestro
|
||||
-- 45 Pl_EquipSkill_044 Artillery
|
||||
-- 46 Pl_EquipSkill_045 Load Shells
|
||||
-- 47 Pl_EquipSkill_046 Special Ammo Boost
|
||||
-- 48 Pl_EquipSkill_047 Normal/Rapid Up
|
||||
-- 49 Pl_EquipSkill_048 Pierce Up
|
||||
-- 50 Pl_EquipSkill_049 Spread Up
|
||||
-- 51 Pl_EquipSkill_050 Ammo Up
|
||||
-- 52 Pl_EquipSkill_051 Reload Speed
|
||||
-- 53 Pl_EquipSkill_052 Recoil Down
|
||||
-- 54 Pl_EquipSkill_053 Steadiness
|
||||
-- 55 Pl_EquipSkill_054 Rapid Fire Up
|
||||
-- 56 Pl_EquipSkill_055 Defense Boost
|
||||
-- 57 Pl_EquipSkill_056 Divine Blessing
|
||||
-- 58 Pl_EquipSkill_057 Recovery Up
|
||||
-- 59 Pl_EquipSkill_058 Recovery Speed
|
||||
-- 60 Pl_EquipSkill_059 Speed Eating
|
||||
-- 61 Pl_EquipSkill_060 Earplugs
|
||||
-- 62 Pl_EquipSkill_061 Windproof
|
||||
-- 63 Pl_EquipSkill_062 Tremor Resistance
|
||||
-- 64 Pl_EquipSkill_063 Bubbly Dance
|
||||
-- 65 Pl_EquipSkill_064 Evade Window
|
||||
-- 66 Pl_EquipSkill_065 Evade Extender
|
||||
-- 67 Pl_EquipSkill_066 Fire Resistance
|
||||
-- 68 Pl_EquipSkill_067 Water Resistance
|
||||
-- 69 Pl_EquipSkill_068 Ice Resistance
|
||||
-- 70 Pl_EquipSkill_069 Thunder Resistance
|
||||
-- 71 Pl_EquipSkill_070 Dragon Resistance
|
||||
-- 72 Pl_EquipSkill_071 Blight Resistance
|
||||
-- 73 Pl_EquipSkill_072 Poison Resistance
|
||||
-- 74 Pl_EquipSkill_073 Paralysis Resistance
|
||||
-- 75 Pl_EquipSkill_074 Sleep Resistance
|
||||
-- 76 Pl_EquipSkill_075 Stun Resistance
|
||||
-- 77 Pl_EquipSkill_076 Muck Resistance
|
||||
-- 78 Pl_EquipSkill_077 Blast Resistance
|
||||
-- 79 Pl_EquipSkill_078 Botanist
|
||||
-- 80 Pl_EquipSkill_079 Geologist
|
||||
-- 81 Pl_EquipSkill_080 Partbreaker
|
||||
-- 82 Pl_EquipSkill_081 Capture Master
|
||||
-- 83 Pl_EquipSkill_082 Carving Master
|
||||
-- 84 Pl_EquipSkill_083 Good Luck
|
||||
-- 85 Pl_EquipSkill_084 Speed Sharpening
|
||||
-- 86 Pl_EquipSkill_085 Bombardier
|
||||
-- 87 Pl_EquipSkill_086 Mushroomancer
|
||||
-- 88 Pl_EquipSkill_087 Item Prolonger
|
||||
-- 89 Pl_EquipSkill_088 Wide-Range
|
||||
-- 90 Pl_EquipSkill_089 Free Meal
|
||||
-- 91 Pl_EquipSkill_090 Heroics
|
||||
heroics = { id = 91, level = 0, is_equipped = false },
|
||||
-- 92 Pl_EquipSkill_091 Fortify
|
||||
-- 93 Pl_EquipSkill_092 Flinch Free
|
||||
-- 94 Pl_EquipSkill_093 Jump Master
|
||||
-- 95 Pl_EquipSkill_094 Carving Pro
|
||||
-- 96 Pl_EquipSkill_095 Hunger Resistance
|
||||
-- 97 Pl_EquipSkill_096 Leap of Faith
|
||||
-- 98 Pl_EquipSkill_097 Diversion
|
||||
-- 99 Pl_EquipSkill_098 Master Mounter
|
||||
-- 100 Pl_EquipSkill_099 Chameleos Blessing
|
||||
-- 101 Pl_EquipSkill_100 Kushala Blessing
|
||||
-- 102 Pl_EquipSkill_101 Teostra Blessing
|
||||
-- 103 Pl_EquipSkill_102 Dragonheart
|
||||
dragonheart = { id = 103, level = 0, is_equipped = false },
|
||||
-- 104 Pl_EquipSkill_103 Wirebug Whisperer
|
||||
-- 105 Pl_EquipSkill_104 Wall Runner
|
||||
-- 106 Pl_EquipSkill_105 Counterstrike
|
||||
-- 107 Pl_EquipSkill_106 Rapid Morph
|
||||
-- 108 Pl_EquipSkill_107 Hellfire Cloak
|
||||
-- 109 Pl_EquipSkill_108 Wind Alignment
|
||||
-- 110 Pl_EquipSkill_109 Thunder Alignment
|
||||
-- 111 Pl_EquipSkill_110 Stormsoul
|
||||
-- 112 Pl_EquipSkill_200 Blood Rite
|
||||
-- 113 Pl_EquipSkill_201 Dereliction
|
||||
dereliction = { id = 113, level = 0, is_equipped = false },
|
||||
-- 114 Pl_EquipSkill_202 Furious
|
||||
-- 115 Pl_EquipSkill_203 Mail of Hellfire
|
||||
-- 116 Pl_EquipSkill_204 Coalescence
|
||||
-- 117 Pl_EquipSkill_205 Bloodlust
|
||||
bloodlust = { id = 117, level = 0, is_equipped = false },
|
||||
-- 118 Pl_EquipSkill_206 Defiance
|
||||
-- 119 Pl_EquipSkill_207 Sneak Attack
|
||||
-- 120 Pl_EquipSkill_208 Adrenaline Rush
|
||||
-- 122 Pl_EquipSkill_209 Redirection
|
||||
-- 123 Pl_EquipSkill_210 Spiribird's Call
|
||||
-- 124 Pl_EquipSkill_211 Charge Master
|
||||
-- 125 Pl_EquipSkill_212 Foray
|
||||
-- 126 Pl_EquipSkill_213 Tune-Up
|
||||
-- 127 Pl_EquipSkill_214 Grinder (S)
|
||||
-- 128 Pl_EquipSkill_215 Bladescale Hone
|
||||
-- 129 Pl_EquipSkill_216 Wall Runner (Boost)
|
||||
-- 133 Pl_EquipSkill_217 Quick Breath
|
||||
-- 130 Pl_EquipSkill_218 Element Exploit
|
||||
-- 131 Pl_EquipSkill_219 Burst
|
||||
-- 132 Pl_EquipSkill_220 Guts
|
||||
-- 134 Pl_EquipSkill_221 Status Trigger
|
||||
-- 135 Pl_EquipSkill_222 Intrepid Heart
|
||||
-- 136 Pl_EquipSkill_223 Buildup Boost
|
||||
-- 121 Pl_EquipSkill_224 Embolden
|
||||
-- 138 Pl_EquipSkill_225 Wind Mantle
|
||||
-- 139 Pl_EquipSkill_226 Powder Mantle
|
||||
-- 137 Pl_EquipSkill_227 Berserk
|
||||
-- 145 Pl_EquipSkill_228 Strife
|
||||
-- 140 Pl_EquipSkill_229 Frostcraft
|
||||
-- 141 Pl_EquipSkill_230 Dragon Conversion
|
||||
-- 142 Pl_EquipSkill_231 Heaven-Sent
|
||||
-- 143 Pl_EquipSkill_232 Frenzied Bloodlust
|
||||
-- 144 Pl_EquipSkill_233 Blood Awakening
|
||||
-- 146 Pl_EquipSkill_234 Shock Absorber
|
||||
-- 147 Pl_EquipSkill_235 Inspiration
|
||||
-- attack_boost = { id = 1 },
|
||||
agitator = { id = 2 },
|
||||
peak_performance = { id = 3, level = 0, is_equipped = false },
|
||||
resentment = { id = 4, level = 0, is_equipped = false },
|
||||
resuscitate = { id = 5, level = 0, is_equipped = false },
|
||||
-- critical_eye = { id = 6 },
|
||||
-- critical_boost = { id = 7 },
|
||||
-- weakness_exploit = { id = 8 },
|
||||
latent_power = { id = 9 },
|
||||
maximum_might = { id = 10, level = 0, is_equipped = false },
|
||||
-- critical_element = { id = 11 },
|
||||
-- masters_touch = { id = 12 },
|
||||
-- fire_attack = { id = 13 },
|
||||
-- water_attack = { id = 14 },
|
||||
-- ice_attack = { id = 15 },
|
||||
-- thunder_attack = { id = 16 },
|
||||
-- dragon_attack = { id = 17 },
|
||||
-- poison_attack = { id = 18 },
|
||||
-- paralysis_attack = { id = 19 },
|
||||
-- sleep_attack = { id = 20 },
|
||||
-- blast_attack = { id = 21 },
|
||||
-- handicraft = { id = 22 },
|
||||
-- razor_sharp = { id = 23 },
|
||||
-- spare_shot = { id = 24 },
|
||||
protective_polish = { id = 25 },
|
||||
-- minds_eye = { id = 26 },
|
||||
-- ballistics = { id = 27 },
|
||||
-- bludgeoner = { id = 28 },
|
||||
-- bow_charge_plus = { id = 29 },
|
||||
-- focus = { id = 30 },
|
||||
-- power_prolonger = { id = 31 },
|
||||
-- marathon_runner = { id = 32 },
|
||||
-- constitution = { id = 33 },
|
||||
-- stamina_surge = { id = 34 },
|
||||
-- guard = { id = 35 },
|
||||
-- guard_up = { id = 36 },
|
||||
offensive_guard = { id = 37 },
|
||||
-- critical_draw = { id = 38 },
|
||||
-- punishing_draw = { id = 39 },
|
||||
-- quick_sheathe = { id = 40 },
|
||||
-- slugger = { id = 41 },
|
||||
-- stamina_thief = { id = 42 },
|
||||
affinity_sliding = { id = 43 },
|
||||
-- horn_maestro = { id = 44 },
|
||||
-- artillery = { id = 45 },
|
||||
-- load_shells = { id = 46 },
|
||||
-- special_ammo_boost = { id = 47 },
|
||||
-- normal_rapid_up = { id = 48 },
|
||||
-- pierce_up = { id = 49 },
|
||||
-- spread_up = { id = 50 },
|
||||
-- ammo_up = { id = 51 },
|
||||
-- reload_speed = { id = 52 },
|
||||
-- recoil_down = { id = 53 },
|
||||
-- steadiness = { id = 54 },
|
||||
-- rapid_fire_up = { id = 55 },
|
||||
-- defense_boost = { id = 56 },
|
||||
-- divine_blessing = { id = 57 },
|
||||
-- recovery_up = { id = 58 },
|
||||
-- recovery_speed = { id = 59 },
|
||||
-- speed_eating = { id = 60 },
|
||||
-- earplugs = { id = 61 },
|
||||
-- windproof = { id = 62 },
|
||||
-- tremor_resistance = { id = 63 },
|
||||
-- bubbly_dance = { id = 64 },
|
||||
-- evade_window = { id = 65 },
|
||||
-- evade_extender = { id = 66 },
|
||||
-- fire_resistance = { id = 67 },
|
||||
-- water_resistance = { id = 68 },
|
||||
-- ice_resistance = { id = 69 },
|
||||
-- thunder_resistance = { id = 70 },
|
||||
-- dragon_resistance = { id = 71 },
|
||||
-- blight_resistance = { id = 72 },
|
||||
-- poison_resistance = { id = 73 },
|
||||
-- paralysis_resistance = { id = 74 },
|
||||
-- sleep_resistance = { id = 75 },
|
||||
-- stun_resistance = { id = 76 },
|
||||
-- muck_resistance = { id = 77 },
|
||||
-- blast_resistance = { id = 78 },
|
||||
-- botanist = { id = 79 },
|
||||
-- geologist = { id = 80 },
|
||||
-- partbreaker = { id = 81 },
|
||||
-- capture_master = { id = 82 },
|
||||
-- carving_master = { id = 83 },
|
||||
-- good_luck = { id = 84 },
|
||||
-- speed_sharpening = { id = 85 },
|
||||
-- bombardier = { id = 86 },
|
||||
-- mushroomancer = { id = 87 },
|
||||
-- item_prolonger = { id = 88 },
|
||||
-- wide_range = { id = 89 },
|
||||
-- free_meal = { id = 90 },
|
||||
heroics = { id = 91, level = 0, is_equipped = false },
|
||||
-- fortify = { id = 92 },
|
||||
-- flinch_free = { id = 93 },
|
||||
-- jump_master = { id = 94 },
|
||||
-- carving_pro = { id = 95 },
|
||||
-- hunger_resistance = { id = 96 },
|
||||
-- leap_of_faith = { id = 97 },
|
||||
-- diversion = { id = 98 },
|
||||
-- master_mounter = { id = 99 },
|
||||
-- chameleos_blessing = { id = 100 },
|
||||
-- kushala_blessing = { id = 101 },
|
||||
-- teostra_blessing = { id = 102 },
|
||||
dragonheart = { id = 103, level = 0, is_equipped = false },
|
||||
-- wirebug_whisperer = { id = 104 },
|
||||
wall_runner = { id = 105 },
|
||||
counterstrike = { id = 106 },
|
||||
-- rapid_morph = { id = 107 },
|
||||
hellfire_cloak = { id = 108 },
|
||||
-- wind_alignment = { id = 109 },
|
||||
-- thunder_alignment = { id = 110 },
|
||||
-- stormsoul = { id = 111 },
|
||||
-- blood_rite = { id = 112 },
|
||||
dereliction = { id = 113, level = 0, is_equipped = false },
|
||||
furious = { id = 114 },
|
||||
-- mail_of_hellfire = { id = 115 },
|
||||
coalescence = { id = 116 },
|
||||
bloodlust = { id = 117, level = 0, is_equipped = false },
|
||||
-- defiance = { id = 118 },
|
||||
-- sneak_attack = { id = 119 },
|
||||
adrenaline_rush = { id = 120 },
|
||||
-- embolden = { id = 121 },
|
||||
-- redirection = { id = 122 },
|
||||
spiribirds_call = { id = 123 },
|
||||
-- charge_master = { id = 124 },
|
||||
-- foray = { id = 125 },
|
||||
-- tune_up = { id = 126 },
|
||||
grinder_s = { id = 127 },
|
||||
bladescale_hone = { id = 128 },
|
||||
-- wall_runner_boost = { id = 129 },
|
||||
-- element_exploit = { id = 130 },
|
||||
burst = { id = 131 },
|
||||
-- guts = { id = 132 },
|
||||
-- quick_breath = { id = 133 },
|
||||
status_trigger = { id = 134 },
|
||||
intrepid_heart = { id = 135 },
|
||||
-- buildup_boost = { id = 136 },
|
||||
-- berserk = { id = 137 },
|
||||
wind_mantle = { id = 138 },
|
||||
-- powder_mantle = { id = 139 },
|
||||
-- frostcraft = { id = 140 },
|
||||
-- dragon_conversion = { id = 141 },
|
||||
heaven_sent = { id = 142 },
|
||||
frenzied_bloodlust = { id = 143 },
|
||||
-- blood_awakening = { id = 144 },
|
||||
-- strife = { id = 145 },
|
||||
-- shock_absorber = { id = 146 },
|
||||
-- inspiration = { id = 147 },
|
||||
}
|
||||
|
||||
local burst_breakpoints = {5};
|
||||
@@ -246,6 +242,8 @@ local frenzied_bloodlust_sheathed_duration = 0;
|
||||
|
||||
local dragonheart_breakpoints = {0.5, 0.5, 0.7, 0.7, 0.8};
|
||||
|
||||
local spiribirds_call_duration = 60;
|
||||
|
||||
local wind_mantle_duration = 15;
|
||||
local wind_mantle_breakpoints = { 20, 10 }; -- Sword & Shield, Lance, Hammer, Switch Axe, Insect Glaive, Long Sword, Hunting Horn
|
||||
local wind_mantle_special_breakpoints = {
|
||||
@@ -304,6 +302,8 @@ local equip_skill_231_wp_off_timer_field = player_data_type_def:get_field("_Equi
|
||||
local r_vital_field = player_data_type_def:get_field("_r_Vital");
|
||||
-- Status Trigger
|
||||
local equip_skill_222_timer_field = player_data_type_def:get_field("_EquipSkill222_Timer");
|
||||
-- Spiritbird's Call
|
||||
local equip_skill_211_timer_field = player_data_type_def:get_field("_EquipSkill211_Timer");
|
||||
|
||||
|
||||
|
||||
@@ -339,7 +339,8 @@ local get_hunter_wire_skill_231_num_method = player_quest_base_type_def:get_meth
|
||||
local bow_type_def = sdk.find_type_definition("snow.player.Bow");
|
||||
local _equip_skill_216_bottle_up_timer_field = bow_type_def:get_field("_EquipSkill216_BottleUpTimer");
|
||||
|
||||
local qeree = {};
|
||||
local data_shortcut_type_def = sdk.find_type_definition("snow.data.DataShortcut");
|
||||
local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.DataDef.PlEquipSkillId)");
|
||||
|
||||
function this.update(player, player_data, weapon_type)
|
||||
--local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
|
||||
@@ -348,46 +349,6 @@ function this.update(player, player_data, weapon_type)
|
||||
-- return;
|
||||
--end
|
||||
|
||||
-- local fields = player_quest_base_type_def:get_fields();
|
||||
|
||||
-- xy = "Player:\n";
|
||||
-- for i = 1, 999 do
|
||||
-- local field = fields[i];
|
||||
-- if field == nil then
|
||||
-- break;
|
||||
-- end
|
||||
|
||||
-- local value = field:get_data(player);
|
||||
|
||||
-- if qeree[field] == nil then
|
||||
-- qeree[field] = value;
|
||||
-- end
|
||||
|
||||
-- if qeree[field] ~= value then
|
||||
-- xy = string.format("%s%d %s = %s\n", xy, i, field:get_name(), tostring(value));
|
||||
-- end
|
||||
-- end
|
||||
|
||||
-- fields = player_data_type_def:get_fields();
|
||||
|
||||
-- xy = xy .. "Player Data:\n";
|
||||
-- for i = 1, 999 do
|
||||
-- local field = fields[i];
|
||||
-- if field == nil then
|
||||
-- break;
|
||||
-- end
|
||||
|
||||
-- local value = field:get_data(player_data);
|
||||
|
||||
-- if qeree[field] == nil then
|
||||
-- qeree[field] = value;
|
||||
-- end
|
||||
|
||||
-- if qeree[field] ~= value then
|
||||
-- xy = string.format("%s%d %s = %s\n", xy, i, field:get_name(), tostring(value));
|
||||
-- end
|
||||
-- end
|
||||
|
||||
this.update_equipped_skill_data(player);
|
||||
|
||||
this.update_wind_mantle(player, weapon_type);
|
||||
@@ -398,6 +359,7 @@ function this.update(player, player_data, weapon_type)
|
||||
this.update_dragonheart();
|
||||
this.update_resentment(player_data);
|
||||
this.update_bladescale_hone(player, weapon_type);
|
||||
this.update_spiribirds_call(player_data);
|
||||
|
||||
this.update_generic_skill("dereliction", player_data, symbiosis_skill_lost_vital_field,
|
||||
nil, nil, nil, nil, true, nil, dereliction_breakpoints);
|
||||
@@ -435,12 +397,12 @@ function this.update_generic_skill(skill_key, value_owner, value_holder, timer_o
|
||||
is_infinite, minimal_value, level_breakpoints)
|
||||
|
||||
local skill_data = skill_data_list[skill_key];
|
||||
if skill_data ~= nil and not skill_data.is_equipped then
|
||||
if skill_data ~= nil and skill_data.is_equipped ~= nil and not skill_data.is_equipped then
|
||||
this.list[skill_key] = nil;
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic_buff(this.list, skills_type_name, skill_key,
|
||||
buffs.update_generic_buff(this.list, skills_type_name, skill_key, this.get_skill_name,
|
||||
value_owner, value_holder, timer_owner, timer_holder, duration_owner, duration_holder,
|
||||
is_infinite, minimal_value, level_breakpoints);
|
||||
end
|
||||
@@ -452,15 +414,11 @@ function this.update_equipped_skill_data(player)
|
||||
return;
|
||||
end
|
||||
|
||||
-- xy = ""
|
||||
-- for i = 0, 999 do
|
||||
-- local has_skill = has_skill_method:call(player_skill_list, i, 1);
|
||||
-- if has_skill then
|
||||
-- xy = string.format("%s%d = %s\n", xy, i, tostring(has_skill));
|
||||
-- end
|
||||
-- end
|
||||
|
||||
for skill_key, skill_data in pairs(skill_data_list) do
|
||||
if skill_data.is_equipped == nil then
|
||||
goto continue;
|
||||
end
|
||||
|
||||
local re_skill_data = get_skill_data_method:call(player_skill_list, skill_data.id);
|
||||
if re_skill_data == nil then
|
||||
goto continue;
|
||||
@@ -516,7 +474,7 @@ function this.update_wind_mantle(player, weapon_type)
|
||||
end
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, skills_type_name, "wind_mantle", level, wind_mantle_duration - (wind_mantle_timer / 60), wind_mantle_duration);
|
||||
buffs.update_generic(this.list, skills_type_name, "wind_mantle", this.get_skill_name, level, wind_mantle_duration - (wind_mantle_timer / 60), wind_mantle_duration);
|
||||
end
|
||||
|
||||
function this.update_maximum_might(player_data)
|
||||
@@ -544,17 +502,17 @@ function this.update_maximum_might(player_data)
|
||||
end
|
||||
|
||||
elseif skill == nil then
|
||||
local name = language.current_language.skills.maximum_might;
|
||||
local maximum_might_name = this.get_skill_name("maximum_might");
|
||||
|
||||
if whole_body_timer < maximum_might_previous_timer_value then
|
||||
this.list.maximum_might = buffs.new(skills_type_name, "maximum_might", name, 1);
|
||||
this.list.maximum_might = buffs.new(skills_type_name, "maximum_might", maximum_might_name, 1);
|
||||
|
||||
elseif is_timer_zero then
|
||||
if maximum_might_delay_timer == nil then
|
||||
maximum_might_delay_timer = time.new_delay_timer(function()
|
||||
maximum_might_delay_timer = nil;
|
||||
|
||||
this.list.maximum_might = buffs.new(skills_type_name, "maximum_might", name, 1);
|
||||
this.list.maximum_might = buffs.new(skills_type_name, "maximum_might", maximum_might_name, 1);
|
||||
end, 3.5);
|
||||
end
|
||||
|
||||
@@ -579,8 +537,13 @@ function this.update_bloodlust()
|
||||
end
|
||||
|
||||
if this.list.bloodlust == nil then
|
||||
local name = language.current_language.skills.bloodlust;
|
||||
this.list.bloodlust = buffs.new(skills_type_name, "bloodlust", name);
|
||||
local bloodlust_name = this.get_skill_name("bloodlust");
|
||||
if bloodlust_name == nil then
|
||||
error_handler.report("skills.update_generic_buff", "Failed to access Data: bloodlust_name");
|
||||
return;
|
||||
end
|
||||
|
||||
this.list.bloodlust = buffs.new(skills_type_name, "bloodlust", bloodlust_name);
|
||||
end
|
||||
end
|
||||
|
||||
@@ -631,7 +594,7 @@ function this.update_frenzied_bloodlust(player, player_data)
|
||||
timer = equip_skill_231_wp_off_timer;
|
||||
end
|
||||
|
||||
local skill = buffs.update_generic(this.list, skills_type_name, "frenzied_bloodlust", 1, timer / 60);
|
||||
local skill = buffs.update_generic(this.list, skills_type_name, "frenzied_bloodlust", this.get_skill_name, 1, timer / 60);
|
||||
|
||||
if is_wp_off_timer_max then
|
||||
skill.duration = frenzied_bloodlust_duration / 60;
|
||||
@@ -651,7 +614,7 @@ function this.update_peak_performance()
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, skills_type_name, "peak_performance");
|
||||
buffs.update_generic(this.list, skills_type_name, "peak_performance", this.get_skill_name);
|
||||
end
|
||||
|
||||
function this.update_dragonheart()
|
||||
@@ -674,7 +637,7 @@ function this.update_dragonheart()
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, skills_type_name, "dragonheart");
|
||||
buffs.update_generic(this.list, skills_type_name, "dragonheart", this.get_skill_name);
|
||||
end
|
||||
|
||||
function this.update_resentment(player_data)
|
||||
@@ -694,7 +657,7 @@ function this.update_resentment(player_data)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, skills_type_name, "resentment");
|
||||
buffs.update_generic(this.list, skills_type_name, "resentment", this.get_skill_name);
|
||||
end
|
||||
|
||||
function this.update_bladescale_hone(player, weapon_type)
|
||||
@@ -706,16 +669,31 @@ function this.update_bladescale_hone(player, weapon_type)
|
||||
this.update_generic_skill("bladescale_hone", nil, nil, player, _equip_skill_216_bottle_up_timer_field);
|
||||
end
|
||||
|
||||
function this.init_names()
|
||||
for skill_key, skill in pairs(this.list) do
|
||||
local name = language.current_language.skills[skill_key];
|
||||
|
||||
if name == nil then
|
||||
name = skill_key;
|
||||
end
|
||||
|
||||
skill.name = name;
|
||||
function this.update_spiribirds_call(player_data)
|
||||
local equip_skill_211_timer = equip_skill_211_timer_field:get_data(player_data);
|
||||
if equip_skill_211_timer == nil then
|
||||
error_handler.report("skills.update_spiribirds_call", "Failed to access Data: equip_skill_211_timer");
|
||||
return;
|
||||
end
|
||||
|
||||
if utils.number.is_equal(equip_skill_211_timer, 0) then
|
||||
this.list.spiribirds_call = nil;
|
||||
return;
|
||||
end
|
||||
|
||||
local timer = spiribirds_call_duration - (equip_skill_211_timer / 60);
|
||||
|
||||
buffs.update_generic(this.list, skills_type_name, "spiribirds_call", this.get_skill_name, 1, timer, spiribirds_call_duration);
|
||||
end
|
||||
|
||||
function this.get_skill_name(skill_key)
|
||||
local skill_name = get_name_method:call(nil, skill_data_list[skill_key].id);
|
||||
if skill_name == nil then
|
||||
error_handler.report("skills.get_skill_name", string.format("Failed to access Data: %s_name", skill_key));
|
||||
return skill_key;
|
||||
end
|
||||
|
||||
return skill_name;
|
||||
end
|
||||
|
||||
function this.init_dependencies()
|
||||
|
||||
@@ -58,10 +58,13 @@ this.list = {
|
||||
harvest_moon = nil,
|
||||
-- Light Bowgun
|
||||
fanning_maneuver = nil,
|
||||
wyvernblast_reload = nil,
|
||||
-- Heavy Bowgun
|
||||
counter_charger = nil,
|
||||
rising_moon = nil,
|
||||
setting_sun = nil,
|
||||
overheat = nil,
|
||||
wyvernsnipe_reload = nil,
|
||||
-- Hammer
|
||||
impact_burst = nil,
|
||||
-- Gunlance
|
||||
@@ -93,6 +96,57 @@ this.list = {
|
||||
bolt_boost = nil
|
||||
};
|
||||
|
||||
local weapon_skill_ids = {
|
||||
-- Great Sword
|
||||
power_sheathe = nil,
|
||||
-- Switch Axe
|
||||
amped_state = nil,
|
||||
switch_charger = nil,
|
||||
axe_heavy_slam = nil,
|
||||
-- Long Sword
|
||||
spirit_gauge_autofill = nil, -- Soaring Kick, Iai Slash
|
||||
spirit_gauge = nil,
|
||||
harvest_moon = 94,
|
||||
-- Light Bowgun
|
||||
fanning_maneuver = 72,
|
||||
wyvernblast_reload = nil,
|
||||
-- Heavy Bowgun
|
||||
counter_charger = 76,
|
||||
rising_moon = 147,
|
||||
setting_sun = 149,
|
||||
overheat = nil,
|
||||
wyvernsnipe_reload = nil,
|
||||
-- Hammer
|
||||
impact_burst = 109,
|
||||
-- Gunlance
|
||||
ground_splitter = 46,
|
||||
erupting_cannon = 121,
|
||||
-- Lance
|
||||
anchor_rage = 37,
|
||||
spiral_thrust = 38,
|
||||
twin_wine = nil,
|
||||
-- Sword & Shield
|
||||
destroyer_oil = 97,
|
||||
-- Dual Blades
|
||||
ironshine_silk = 104,
|
||||
archdemon_mode = nil,
|
||||
-- Hunting Horn
|
||||
silkbind_shockwave = 114,
|
||||
bead_of_resonance = 35,
|
||||
sonic_bloom = 112,
|
||||
-- Charge Blade
|
||||
element_boost = nil,
|
||||
sword_boost_mode = nil,
|
||||
-- Insect Glaive
|
||||
red_extract = nil,
|
||||
white_extract = nil,
|
||||
orange_extract = nil,
|
||||
all_extracts_mix = nil,
|
||||
-- Bow
|
||||
herculean_draw = nil,
|
||||
bolt_boost = 154
|
||||
};
|
||||
|
||||
-- 0 Great Sword
|
||||
-- 1 Switch Axe
|
||||
-- 2 Long Sword
|
||||
@@ -113,6 +167,8 @@ local previous_weapon_type = -1;
|
||||
|
||||
local spirit_gauge_breakpoints = {3, 2};
|
||||
|
||||
local wyverblast_reload_duration = 60;
|
||||
|
||||
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
|
||||
local get_player_data_method = player_manager_type_def:get_method("get_PlayerData");
|
||||
|
||||
@@ -168,6 +224,8 @@ local get_long_sword_shell_010_list_item_method = long_sword_shell_010_list_type
|
||||
local light_bowgun_type_def = sdk.find_type_definition("snow.player.LightBowgun");
|
||||
-- Fanning Maneuver
|
||||
local light_bowgun_wire_buff_timer_field = light_bowgun_type_def:get_field("LightBowgunWireBuffTimer");
|
||||
-- Wyvernblast Reload
|
||||
local wyvernblast_reload_timer_field = player_data_type_def:get_field("_WyvernBlastReloadTimer");
|
||||
|
||||
-- Heavy Bowgun
|
||||
|
||||
@@ -175,7 +233,6 @@ local heavy_bowgun_type_def = sdk.find_type_definition("snow.player.HeavyBowgun"
|
||||
-- Counter Charger
|
||||
local reduce_charge_timer_field = heavy_bowgun_type_def:get_field("_ReduseChargeTimer");
|
||||
local reduce_charge_timer_base_field = heavy_bowgun_type_def:get_field("_ReduseChargeTimeBase");
|
||||
|
||||
-- Rising Moon
|
||||
local light_bowgun_shell_manager_type_def = sdk.find_type_definition("snow.shell.LightBowgunShellManager");
|
||||
local get_light_bowgun_shell_030s_speed_boost_list_method = light_bowgun_shell_manager_type_def:get_method("get_getLightBowgunShell030s_SpeedBoost");
|
||||
@@ -183,13 +240,17 @@ local get_light_bowgun_shell_030s_speed_boost_list_method = light_bowgun_shell_m
|
||||
local light_bowgun_shell_030_type_def = sdk.find_type_definition("snow.shell.LightBowgunShell030");
|
||||
local light_bowgun_shell_030_is_enable_hit_field = light_bowgun_shell_030_type_def:get_field("<IsEnableHit>k__BackingField");
|
||||
local light_bowgun_shell_030_timer_field = light_bowgun_shell_030_type_def:get_field("_Timer");
|
||||
|
||||
-- Setting Sun
|
||||
local get_light_bowgun_shell_030s_all_list_method = light_bowgun_shell_manager_type_def:get_method("get_getLightBowgunShell030s_All");
|
||||
|
||||
local light_bowgun_shell_030_list_type_def = sdk.find_type_definition("System.Collections.Generic.List`1<snow.shell.LightBowgunShell030>");
|
||||
local get_light_bowgun_shell_030_list_count_method = light_bowgun_shell_030_list_type_def:get_method("get_Count");
|
||||
local get_light_bowgun_shell_030_list_item_method = light_bowgun_shell_030_list_type_def:get_method("get_Item");
|
||||
-- Overheat
|
||||
local heavy_bowgun_overheat_timer_field = player_data_type_def:get_field("_HeavyBowgunOverHeatTimer");
|
||||
-- Wyvernsnipe Reload
|
||||
local heavy_bowgun_wyvern_snipe_timer_field = player_data_type_def:get_field("_HeavyBowgunWyvernSnipeTimer");
|
||||
|
||||
|
||||
-- Hammer
|
||||
|
||||
@@ -345,6 +406,8 @@ local single_mvalue_field = single_type_def:get_field("mValue");
|
||||
local int32_type_def = sdk.find_type_definition("System.Int32");
|
||||
local int32_mvalue_field = int32_type_def:get_field("mValue");
|
||||
|
||||
local data_shortcut_type_def = sdk.find_type_definition("snow.data.DataShortcut");
|
||||
local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.DataDef.PlWeaponActionId)");
|
||||
|
||||
local heavy_bowgun_shot_type_data_fields = { explode_pile_data_normal_field, explode_pile_data_radiate_field, explode_pile_data_spread_field};
|
||||
|
||||
@@ -365,10 +428,10 @@ function this.update(player, player_data, weapon_type)
|
||||
this.update_long_sword_skills(player);
|
||||
|
||||
elseif weapon_type == 3 then
|
||||
this.update_light_bowgun_skills(player);
|
||||
this.update_light_bowgun_skills(player, player_data);
|
||||
|
||||
elseif weapon_type == 4 then
|
||||
this.update_heavy_bowgun_skills(player);
|
||||
this.update_heavy_bowgun_skills(player, player_data);
|
||||
|
||||
elseif weapon_type == 5 then
|
||||
this.update_hammer_skills(player);
|
||||
@@ -400,8 +463,8 @@ function this.update(player, player_data, weapon_type)
|
||||
end
|
||||
|
||||
function this.update_great_sword_skills(player)
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "power_sheathe", nil, nil,
|
||||
player, move_wp_off_buff_set_time_field, player, move_wp_off_buff_set_time_field);
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "power_sheathe", this.get_weapon_skill_name,
|
||||
nil, nil, player, move_wp_off_buff_set_time_field, player, move_wp_off_buff_set_time_field);
|
||||
end
|
||||
|
||||
function this.update_switch_axe_skills(player)
|
||||
@@ -411,26 +474,26 @@ function this.update_switch_axe_skills(player)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "amped_state", nil, nil,
|
||||
player, get_bottle_awake_duration_timer_method, player, bottle_awake_duration_time_field);
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "amped_state", this.get_weapon_skill_name,
|
||||
nil, nil, player, get_bottle_awake_duration_timer_method, player, bottle_awake_duration_time_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "switch_charger", nil, nil,
|
||||
player, no_use_slash_gauge_timer_field, player_user_data_slash_axe, get_no_user_slash_gauge_time_method);
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "switch_charger", this.get_weapon_skill_name,
|
||||
nil, nil, player, no_use_slash_gauge_timer_field, player_user_data_slash_axe, get_no_user_slash_gauge_time_method);
|
||||
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "axe_heavy_slam", nil, nil,
|
||||
player, bottle_awake_assist_timer_field);
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "axe_heavy_slam", this.get_weapon_skill_name,
|
||||
nil, nil, player, bottle_awake_assist_timer_field);
|
||||
end
|
||||
|
||||
function this.update_long_sword_skills(player)
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "spirit_gauge_autofill", nil, nil,
|
||||
player, get_long_sword_gauge_powerup_time_method);
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "spirit_gauge_autofill", this.get_weapon_skill_name,
|
||||
nil, nil, player, get_long_sword_gauge_powerup_time_method);
|
||||
|
||||
this.update_spirit_gauge(player);
|
||||
this.update_harvest_moon();
|
||||
end
|
||||
|
||||
function this.update_spirit_gauge(player)
|
||||
local weapon_skill = buffs.update_generic_buff(this.list, weapon_skills_type_name, "spirit_gauge",
|
||||
local weapon_skill = buffs.update_generic_buff(this.list, weapon_skills_type_name, "spirit_gauge", this.get_weapon_skill_name,
|
||||
player, get_long_sword_gauge_lv_method, player, get_long_sword_gauge_lv_timer_method, nil, nil, false, nil, spirit_gauge_breakpoints);
|
||||
|
||||
if weapon_skill == nil then
|
||||
@@ -496,7 +559,7 @@ function this.update_harvest_moon()
|
||||
return;
|
||||
end
|
||||
|
||||
local life_timer = life_timer_field:get_data(master_long_sword_shell_010);
|
||||
local life_timer = long_sword_shell_010_life_timer_field:get_data(master_long_sword_shell_010);
|
||||
if life_timer == nil then
|
||||
error_handler.report("weapon_skills.update_harvest_moon", "Failed to access Data: life_timer");
|
||||
return;
|
||||
@@ -507,20 +570,43 @@ function this.update_harvest_moon()
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "harvest_moon", 1, life_timer);
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "harvest_moon", this.get_weapon_skill_name, 1, life_timer);
|
||||
end
|
||||
|
||||
function this.update_light_bowgun_skills(player)
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "fanning_maneuver", nil, nil,
|
||||
player, light_bowgun_wire_buff_timer_field);
|
||||
function this.update_light_bowgun_skills(player, player_data)
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "fanning_maneuver", this.get_weapon_skill_name,
|
||||
nil, nil, player, light_bowgun_wire_buff_timer_field);
|
||||
|
||||
this.update_wyvernblast_reload(player_data);
|
||||
end
|
||||
|
||||
function this.update_heavy_bowgun_skills(player)
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "counter_charger", nil, nil,
|
||||
player, reduce_charge_timer_field, player, reduce_charge_timer_base_field);
|
||||
function this.update_wyvernblast_reload(player_data)
|
||||
local wyvernblast_reload_timer = wyvernblast_reload_timer_field:get_data(player_data);
|
||||
if wyvernblast_reload_timer == nil then
|
||||
error_handler.report("weapon_skills.update_wyvernblast_reload", "Failed to access Data: heavy_bowgun_overheat_timer_field");
|
||||
return;
|
||||
end
|
||||
|
||||
if wyvernblast_reload_timer <= 1 then
|
||||
this.list.wyvernblast_reload = nil;
|
||||
return;
|
||||
end
|
||||
|
||||
local timer = wyverblast_reload_duration - (wyvernblast_reload_timer / 60);
|
||||
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "wyvernblast_reload", this.get_weapon_skill_name, 1, timer);
|
||||
end
|
||||
|
||||
function this.update_heavy_bowgun_skills(player, player_data)
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "counter_charger", this.get_weapon_skill_name,
|
||||
nil, nil, player, reduce_charge_timer_field, player, reduce_charge_timer_base_field);
|
||||
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "wyvernsnipe_reload", this.get_weapon_skill_name,
|
||||
nil, nil, player_data, heavy_bowgun_wyvern_snipe_timer_field);
|
||||
|
||||
this.update_rising_moon();
|
||||
this.update_setting_sun()
|
||||
this.update_setting_sun();
|
||||
this.update_overheat(player_data);
|
||||
end
|
||||
|
||||
function this.update_rising_moon()
|
||||
@@ -575,7 +661,7 @@ function this.update_rising_moon()
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "rising_moon", 1, timer);
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "rising_moon", this.get_weapon_skill_name, 1, timer);
|
||||
end
|
||||
|
||||
function this.update_setting_sun()
|
||||
@@ -635,7 +721,22 @@ function this.update_setting_sun()
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "setting_sun", 1, timer);
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "setting_sun", this.get_weapon_skill_name, 1, timer);
|
||||
end
|
||||
|
||||
function this.update_overheat(player_data)
|
||||
local heavy_bowgun_overheat_timer = heavy_bowgun_overheat_timer_field:get_data(player_data);
|
||||
if heavy_bowgun_overheat_timer_field == nil then
|
||||
error_handler.report("weapon_skills.update_overheat", "Failed to access Data: heavy_bowgun_overheat_timer_field");
|
||||
return;
|
||||
end
|
||||
|
||||
if heavy_bowgun_overheat_timer <= 1 then
|
||||
this.list.overheat = nil;
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "overheat", this.get_weapon_skill_name, 1, heavy_bowgun_overheat_timer);
|
||||
end
|
||||
|
||||
function this.update_hammer_skills(player)
|
||||
@@ -645,8 +746,8 @@ function this.update_hammer_skills(player)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "impact_burst", nil, nil,
|
||||
player, horn_impact_pulls_timer_field, player_user_data_hammer, hammer_impact_pulls_time_max_field);
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "impact_burst", this.get_weapon_skill_name,
|
||||
nil, nil, player, horn_impact_pulls_timer_field, player_user_data_hammer, hammer_impact_pulls_time_max_field);
|
||||
end
|
||||
|
||||
function this.update_gunlance_skills(player)
|
||||
@@ -656,8 +757,8 @@ function this.update_gunlance_skills(player)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "ground_splitter", nil, nil,
|
||||
player, shot_damage_up_duration_timer_field, player_user_data_gunlance, get_player_user_data_gunlance_method);
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "ground_splitter", this.get_weapon_skill_name,
|
||||
nil, nil, player, shot_damage_up_duration_timer_field, player_user_data_gunlance, get_player_user_data_gunlance_method);
|
||||
|
||||
this.update_erupting_cannon(player, player_user_data_gunlance);
|
||||
end
|
||||
@@ -675,13 +776,13 @@ function this.update_erupting_cannon(player, player_user_data_gunlance)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "erupting_cannon", nil, nil,
|
||||
player, explode_pile_buff_timer_field, explode_pile_data, explode_pile_data_duration_field);
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "erupting_cannon", this.get_weapon_skill_name,
|
||||
nil, nil, player, explode_pile_buff_timer_field, explode_pile_data, explode_pile_data_duration_field);
|
||||
end
|
||||
|
||||
function this.update_lance_skills(player)
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "spiral_thrust", nil, nil,
|
||||
player, get_ruten_timer_method);
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "spiral_thrust", this.get_weapon_skill_name,
|
||||
nil, nil, player, get_ruten_timer_method);
|
||||
|
||||
this.update_anchor_rage(player);
|
||||
this.update_twin_wine(player);
|
||||
@@ -728,8 +829,8 @@ function this.update_anchor_rage(player)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "anchor_rage", nil, nil,
|
||||
player, get_guard_rage_timer_method, guard_rage_duration_valtype, single_mvalue_field);
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "anchor_rage", this.get_weapon_skill_name,
|
||||
nil, nil, player, get_guard_rage_timer_method, guard_rage_duration_valtype, single_mvalue_field);
|
||||
end
|
||||
|
||||
function this.update_twin_wine(player)
|
||||
@@ -739,8 +840,8 @@ function this.update_twin_wine(player)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "twin_wine", nil, nil,
|
||||
chain_death_match_shell, chain_death_match_shell_life_timer_field);
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "twin_wine", this.get_weapon_skill_name,
|
||||
nil, nil, chain_death_match_shell, chain_death_match_shell_life_timer_field);
|
||||
end
|
||||
|
||||
function this.update_sword_and_shield_skills(player)
|
||||
@@ -750,8 +851,8 @@ function this.update_sword_and_shield_skills(player)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "destroyer_oil", nil, nil,
|
||||
player, get_oil_buff_timer_method, player_user_data_short_sword, oil_buff_time_field);
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "destroyer_oil", this.get_weapon_skill_name,
|
||||
nil, nil, player, get_oil_buff_timer_method, player_user_data_short_sword, oil_buff_time_field);
|
||||
end
|
||||
|
||||
function this.update_dual_blades_skills(player)
|
||||
@@ -763,8 +864,10 @@ function this.update_dual_blades_skills(player)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "ironshine_silk", nil, nil,
|
||||
player, get_sharpness_recovery_buff_valid_timer_method, player_user_data_dual_blades, sharpness_recovery_buff_valid_max_timer_field);
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "ironshine_silk", this.get_weapon_skill_name,
|
||||
nil, nil, player,
|
||||
get_sharpness_recovery_buff_valid_timer_method,
|
||||
player_user_data_dual_blades, sharpness_recovery_buff_valid_max_timer_field);
|
||||
end
|
||||
|
||||
function this.update_archdemon_mode(player)
|
||||
@@ -790,7 +893,7 @@ function this.update_archdemon_mode(player)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "archdemon_mode", 1, kijin_kyouka_gauge);
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "archdemon_mode", this.get_weapon_skill_name, 1, kijin_kyouka_gauge);
|
||||
end
|
||||
|
||||
function this.update_hunting_horn_skills(player)
|
||||
@@ -803,8 +906,8 @@ function this.update_hunting_horn_skills(player)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "silkbind_shockwave", nil, nil,
|
||||
player, horn_impact_pulls_timer_field, player_user_data_horn, horn_impact_pulls_duration_field);
|
||||
buffs.update_generic_buff(this.list, weapon_skills_type_name, "silkbind_shockwave", this.get_weapon_skill_name,
|
||||
nil, nil, player, horn_impact_pulls_timer_field, player_user_data_horn, horn_impact_pulls_duration_field);
|
||||
end
|
||||
|
||||
function this.update_bead_of_resonance()
|
||||
@@ -864,7 +967,7 @@ function this.update_bead_of_resonance()
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "bead_of_resonance", 1, life_timer);
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "bead_of_resonance", this.get_weapon_skill_name, 1, life_timer);
|
||||
end
|
||||
|
||||
function this.update_sonic_bloom(player)
|
||||
@@ -885,7 +988,7 @@ function this.update_sonic_bloom(player)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "sonic_bloom", 1, life_timer);
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "sonic_bloom", this.get_weapon_skill_name, 1, life_timer);
|
||||
end
|
||||
|
||||
function this.update_charge_blade_skills(player)
|
||||
@@ -934,7 +1037,7 @@ function this.update_element_boost(player, player_user_data_charge_axe)
|
||||
end
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "element_boost", 1, shield_buff_timer, duration);
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "element_boost", this.get_weapon_skill_name, 1, shield_buff_timer, duration);
|
||||
end
|
||||
|
||||
function this.update_sword_boost_mode(player, player_user_data_charge_axe)
|
||||
@@ -955,7 +1058,8 @@ function this.update_sword_boost_mode(player, player_user_data_charge_axe)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "sword_boost_mode", 1, sword_buff_timer / 60, sword_buff_time_duration / 60);
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "sword_boost_mode", this.get_weapon_skill_name, 1,
|
||||
sword_buff_timer / 60, sword_buff_time_duration / 60);
|
||||
end
|
||||
|
||||
function this.update_insect_glaive_skills(player)
|
||||
@@ -968,9 +1072,9 @@ function this.update_insect_glaive_skills(player)
|
||||
return;
|
||||
end
|
||||
|
||||
this.update_extract(player, "red_extract", get_red_extractive_time_method, red_extractive_max_time_field)
|
||||
this.update_extract(player, "white_extract", get_white_extractive_time_method, white_extractive_max_time_field)
|
||||
this.update_extract(player, "orange_extract", get_orange_extractive_time_method, orange_extractive_max_time_field)
|
||||
this.update_extract(player, "red_extract", get_red_extractive_time_method, red_extractive_max_time_field);
|
||||
this.update_extract(player, "white_extract", get_white_extractive_time_method, white_extractive_max_time_field);
|
||||
this.update_extract(player, "orange_extract", get_orange_extractive_time_method, orange_extractive_max_time_field);
|
||||
end
|
||||
|
||||
function this.update_all_extracts_mix(player)
|
||||
@@ -1002,7 +1106,8 @@ function this.update_all_extracts_mix(player)
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "all_extracts_mix", 1, red_extractive_time, all_extractive_max_time);
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, "all_extracts_mix", this.get_weapon_skill_name, 1,
|
||||
red_extractive_time, all_extractive_max_time);
|
||||
end
|
||||
|
||||
function this.update_extract(player, extract_key, time_holder, max_time_holder)
|
||||
@@ -1047,7 +1152,7 @@ function this.update_extract(player, extract_key, time_holder, max_time_holder)
|
||||
duration = extractive_max_time;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, extract_key, 1, extractive_time, duration);
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, extract_key, this.get_weapon_skill_name, 1, extractive_time, duration);
|
||||
end
|
||||
|
||||
function this.update_bow_skills(player)
|
||||
@@ -1079,21 +1184,30 @@ function this.update_bow_skill(player, bow_skill_key, timer_holder, player_user_
|
||||
return;
|
||||
end
|
||||
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, bow_skill_key, 1, timer / 60, max_time / 60);
|
||||
buffs.update_generic(this.list, weapon_skills_type_name, bow_skill_key, this.get_weapon_skill_name, 1, timer / 60, max_time / 60);
|
||||
end
|
||||
|
||||
function this.init_names()
|
||||
for weapon_skill_key, weapon_skill in pairs(this.list) do
|
||||
local name = language.current_language.weapon_skills[weapon_skill_key];
|
||||
|
||||
if name == nil then
|
||||
name = weapon_skill_key;
|
||||
end
|
||||
|
||||
weapon_skill.name = name;
|
||||
weapon_skill.name = this.get_weapon_skill_name(weapon_skill_key);
|
||||
end
|
||||
end
|
||||
|
||||
function this.get_weapon_skill_name(weapon_skill_key)
|
||||
if weapon_skill_ids[weapon_skill_key] == nil then
|
||||
return language.current_language.weapon_skills[weapon_skill_key];
|
||||
else
|
||||
local weapon_skill_name = get_name_method:call(nil, weapon_skill_ids[weapon_skill_key]);
|
||||
if weapon_skill_name == nil then
|
||||
error_handler.report("weapon_skills.get_weapon_skill_name", string.format("Failed to access Data: %s_name", weapon_skill_key));
|
||||
return weapon_skill_key;
|
||||
end
|
||||
|
||||
return weapon_skill_name;
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function this.init_dependencies()
|
||||
buffs = require("MHR_Overlay.Buffs.buffs");
|
||||
config = require("MHR_Overlay.Misc.config");
|
||||
|
||||
Reference in New Issue
Block a user