Буду краток.
В addon_game_mode.lua в удобное для вас место распологаем:
В addon_game_mode_client.lua также располагаем тот-же самый код:
Если не расположить его в клиентской части, то в способностях не будут отображаться радиусы.
Далее в удобную вам способность, предмет, модификатор добавляем:
На этом собственно всё. Буду рад если это вам поможет.
В addon_game_mode.lua в удобное для вас место распологаем:
Lua:
function CacheAbilityKeyValues()
for ability_name, ability_data in pairs(LoadKeyValues("scripts/npc/npc_abilities_custom.txt")) do
if ability_data.AbilityValues then
for special_value, value_data in pairs(ability_data.AbilityValues) do
if type(value_data) == "table" and value_data.affected_by_aoe_increase then
_G.aoe_ability_values[ability_name] = _G.aoe_ability_values[ability_name] or {}
_G.aoe_ability_values[ability_name][special_value] = true
--print(ability_name)
--print(special_value)
end
end
end
end
for ability_name, ability_data in pairs(LoadKeyValues("scripts/npc/npc_items_custom.txt")) do
if ability_data.AbilityValues then
for special_value, value_data in pairs(ability_data.AbilityValues) do
if type(value_data) == "table" and value_data.affected_by_aoe_increase then
_G.aoe_ability_values[ability_name] = _G.aoe_ability_values[ability_name] or {}
_G.aoe_ability_values[ability_name][special_value] = true
--print(ability_name)
--print(special_value)
end
end
end
end
end
function Activate()
barebones:InitGameMode()
_G.aoe_ability_values = {}
CacheAbilityKeyValues()
end
В addon_game_mode_client.lua также располагаем тот-же самый код:
Lua:
function CacheAbilityKeyValues()
for ability_name, ability_data in pairs(LoadKeyValues("scripts/npc/npc_abilities_custom.txt")) do
if ability_data.AbilityValues then
for special_value, value_data in pairs(ability_data.AbilityValues) do
if type(value_data) == "table" and value_data.affected_by_aoe_increase then
_G.aoe_ability_values[ability_name] = _G.aoe_ability_values[ability_name] or {}
_G.aoe_ability_values[ability_name][special_value] = true
--print(ability_name)
--print(special_value)
end
end
end
end
for ability_name, ability_data in pairs(LoadKeyValues("scripts/npc/npc_items_custom.txt")) do
if ability_data.AbilityValues then
for special_value, value_data in pairs(ability_data.AbilityValues) do
if type(value_data) == "table" and value_data.affected_by_aoe_increase then
_G.aoe_ability_values[ability_name] = _G.aoe_ability_values[ability_name] or {}
_G.aoe_ability_values[ability_name][special_value] = true
--print(ability_name)
--print(special_value)
end
end
end
end
end
_G.aoe_ability_values = {}
CacheAbilityKeyValues()
Если не расположить его в клиентской части, то в способностях не будут отображаться радиусы.
Далее в удобную вам способность, предмет, модификатор добавляем:
Lua:
function modifier_bloodstone_strygwyr:DeclareFunctions()
local funcs = {
MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL,
MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL_VALUE
}
return funcs
end
function modifier_bloodstone_strygwyr:GetModifierOverrideAbilitySpecial(keys)
local ability = self:GetAbility()
local target_ability = keys.ability
local special_value_name = keys.ability_special_value
if not ability or not target_ability or not special_value_name then
return 0
end
local ability_name = target_ability:GetAbilityName()
if _G.aoe_ability_values[ability_name] and _G.aoe_ability_values[ability_name][special_value_name] then
if not self.aoe_values[special_value_name] then
self.aoe_values[special_value_name] = true
end
return 1
end
return 0
end
function modifier_bloodstone_strygwyr:GetModifierOverrideAbilitySpecialValue(keys)
local target_ability = keys.ability
local special_value_name = keys.ability_special_value
local special_level = keys.ability_special_level
if target_ability and _G.aoe_ability_values[target_ability:GetAbilityName()] and _G.aoe_ability_values[target_ability:GetAbilityName()][special_value_name] then
local base_value = target_ability:GetLevelSpecialValueNoOverride(special_value_name, special_level) --Тут базовый радиус скила
local bonus_aoe = self:GetAbility():GetLevelSpecialValueFor("skill_range", (self:GetAbility():GetLevel() - 1)) + (self:GetAbility():GetLevelSpecialValueFor("aoe_per_charge", (self:GetAbility():GetLevel() - 1)) * self:GetAbility():GetCurrentCharges()) --Тут ваш бонус
return base_value + bonus_aoe
end
end
На этом собственно всё. Буду рад если это вам поможет.