- 18 Фев 2020
- 120
- 13
- Проект
- Evo Land
Приветствую столкнулся с такой проблемой
пытаюсь увеличить параметры предмета а именно бонус-силы бонус-здоровья и бонус-регена
через методы
MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL
и
MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL_VALUE
По факту у меня все работает но визуально в описании предмета остаются старые значения
вот сам код
вот локализация:
таже локализация есть и в англ. версии.
вот скрин результата

как можете наблюдать тараска в базе дает 225000 здоровья но я в коде увеличиваю его 5 раз. по итогу дает 1.18 лямов.
тоже самое с силой +5000к.
пытаюсь увеличить параметры предмета а именно бонус-силы бонус-здоровья и бонус-регена
через методы
MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL
и
MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL_VALUE
По факту у меня все работает но визуально в описании предмета остаются старые значения
вот сам код
Lua:
modifier_custom_huskar_god_of_shield_value_buff = class({
IsHidden = function(self) return true end,
IsPurgable = function(self) return false end,
IsDebuff = function(self) return false end,
RemoveOnDeath = function(self) return false end,
DeclareFunctions = function() return {
MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL,
MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL_VALUE
} end
})
function modifier_custom_huskar_god_of_shield_value_buff:OnCreated(params)
if IsServer() then
self.selected_item = params.selected_item
self.multiplier = 5 -- 500% усиление
-- Находим предмет у героя и сохраняем его
self.item_ability = nil
local parent = self:GetParent()
for i = 0, 8 do
local item = parent:GetItemInSlot(i)
if item and item:GetName() == self.selected_item then
self.item_ability = item
break
end
end
if self.item_ability then
self:ForceAbilityRefresh()
end
else
self.selected_item = params.selected_item
self.multiplier = 5 -- 500% усиление
end
end
function modifier_custom_huskar_god_of_shield_value_buff:ForceAbilityRefresh()
if not IsServer() then return end
if not self.item_ability then return end
local currentLevel = self.item_ability:GetLevel()
if currentLevel > 0 then
self.item_ability:SetLevel(currentLevel - 1)
self.item_ability:SetLevel(currentLevel)
end
print("Предмет обновлен без удаления")
end
function modifier_custom_huskar_god_of_shield_value_buff:GetModifierOverrideAbilitySpecial(params)
if not self.item_ability then return 0 end
-- Проверяем, относится ли запрос к нашему сохраненному предмету
if params.ability == self.item_ability then
return 1 -- Переопределяем ВСЕ значения выбранного предмета
end
return 0 -- Для всех остальных способностей не переопределяем
end
function modifier_custom_huskar_god_of_shield_value_buff:GetModifierOverrideAbilitySpecialValue(params)
if not self.item_ability then return 0 end
-- Проверяем, относится ли запрос к нашему сохраненному предмету
if params.ability == self.item_ability then
-- Получаем исходное значение через GetLevelSpecialValueNoOverride
local original_value = params.ability:GetLevelSpecialValueNoOverride(params.ability_special_value, params.ability_special_level)
-- УМНОЖАЕМ ЗНАЧЕНИЕ НА 500% (в 5 раз)
local multiplied_value = original_value * self.multiplier
return multiplied_value
end
return 0
end
KV:
"DOTA_Tooltip_Ability_item_imba_heart" "Heart of Tarrasque"
"DOTA_Tooltip_ability_item_imba_heart_Description" "<h1>Пассивная: Heart of the Dragon</h1> Восстанавливает %base_regen%% от максимального здоровья в секунду."
"DOTA_Tooltip_ability_item_imba_heart_Lore" "Еще тёплое сердце тарраска,наделяющие владельца невиданной мужественностью."
"DOTA_Tooltip_ability_item_imba_heart_bonus_strength" "+$str"
"DOTA_Tooltip_ability_item_imba_heart_bonus_health" "+$health"
вот скрин результата

как можете наблюдать тараска в базе дает 225000 здоровья но я в коде увеличиваю его 5 раз. по итогу дает 1.18 лямов.
тоже самое с силой +5000к.