- 25 Сен 2015
- 2,348
- 41
Итак, может, после перекура я и сам допру, где допускаю ошибку, но пока что задам вопрос:
Хочу чтобы моя абилка накладывала баф брони, сила которого зависит от интеллекта кастующего.
Собственно, вот абилка:
И вот модификатор бафа:
Что у меня есть сейчас: абилка работает, но не красиво. Некрасиво потому, что я нашел пока что только один выход - через стаки.
Собственно, как можно наблюдать в коде абилки, я передаю в модификатор количество интеллекта кастующего
и в момент создания модификатора на цели задаю такое же количесто стаков.
Далее в момент запроса доп. брони у модификатора, я возвращаю попрошайкам это количество стаков.
Что мне не нравится в этом варианте: стаки мне не нравятся. Внешне.
Почему же я пока что остановился на этом варианте? Потому что,к моему глубокому удивлению, у меня не получается в момент навешивания бафа
пользоваться вещами из
Кроме того, я обнаружил то, что в момент навешивания бафа мы можем получить
Но не можем получить
Однако в момент создания модификатора все работает:
На гитхабе есть похожий вариант, но что-то он отказывается работать.
Может, кто-то знает, что я упускаю?
Хочу чтобы моя абилка накладывала баф брони, сила которого зависит от интеллекта кастующего.
Собственно, вот абилка:
Код:
LinkLuaModifier("modifier_physical_armor_bonus", "modifiers/modifier_physical_armor_bonus.lua", LUA_MODIFIER_MOTION_NONE )
greater_defense = class({})
function greater_defense:OnSpellStart()
local caster = self:GetCaster()
local target = self:GetCursorTarget()
local bonus = caster:GetIntellect()/50
target:AddNewModifier( caster, self, "modifier_physical_armor_bonus", {duration = 10, armor = bonus} )
end
И вот модификатор бафа:
Код:
modifier_physical_armor_bonus = class({})
function modifier_physical_armor_bonus:IsHidden()
return false
end
function modifier_physical_armor_bonus:DeclareFunctions()
local funcs = {
MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS,
}
return funcs
end
function modifier_physical_armor_bonus:GetTexture()
return "omniknight_repel"
end
function modifier_physical_armor_bonus:OnCreated(params)
if IsServer() then
self.armor = params.armor
self:SetStackCount(self.armor)
print(self:GetCaster():GetIntellect())
end
end
function modifier_physical_armor_bonus:GetModifierPhysicalArmorBonus()
return self:GetStackCount()
end
function modifier_physical_armor_bonus:RemoveOnDeath()
return true
end
Что у меня есть сейчас: абилка работает, но не красиво. Некрасиво потому, что я нашел пока что только один выход - через стаки.
Собственно, как можно наблюдать в коде абилки, я передаю в модификатор количество интеллекта кастующего
Код:
local bonus = caster:GetIntellect()/50
target:AddNewModifier( caster, self, "modifier_physical_armor_bonus", {duration = 10, armor = bonus} )
и в момент создания модификатора на цели задаю такое же количесто стаков.
Код:
self.armor = params.armor
self:SetStackCount(self.armor)
Далее в момент запроса доп. брони у модификатора, я возвращаю попрошайкам это количество стаков.
Код:
function modifier_physical_armor_bonus:GetModifierPhysicalArmorBonus()
return self:GetStackCount()
end
Что мне не нравится в этом варианте: стаки мне не нравятся. Внешне.
Почему же я пока что остановился на этом варианте? Потому что,к моему глубокому удивлению, у меня не получается в момент навешивания бафа
Код:
modifier_physical_armor_bonus:GetModifierPhysicalArmorBonus()
Код:
modifier_physical_armor_bonus:OnCreated(params)
Кроме того, я обнаружил то, что в момент навешивания бафа мы можем получить
Код:
self:GetCaster()
Код:
self:GetCaster():GetIntellect()
Код:
print(self:GetCaster():GetIntellect())
На гитхабе есть похожий вариант, но что-то он отказывается работать.
Может, кто-то знает, что я упускаю?
Последнее редактирование модератором: