Уменьшение БАТ

  • Автор темы Автор темы Danis
  • Дата начала Дата начала
Ваах, ты хочешь давать независимое ускорение атаки герою?
 
[quote author=Danis link=topic=1083.msg6187#msg6187 date=1473519649]
ZLOY, А сделать чтобы не уходило в минус никак нельзя?
[/quote]

Проверять результат - если он становится отрицательным, просто ставить в 0.
 
Код:
	parent.modifAttackTime = (parent.modifAttackTime or 0) - self:GetAbility():GetSpecialValueFor("base_attack_modifier")
	if parent.modifAttackTime < 0 then
		parent.modifAttackTime = 0
	end
 
Последнее редактирование модератором:
То есть эту фигню:

Код:
if parent.baseAttackTime+parent.modifAttackTime <0 then
	parent:SetBaseAttackTime(0)
else
	parent:SetBaseAttackTime(parent.baseAttackTime+parent.modifAttackTime)
end
 
Последнее редактирование модератором:
[quote author=Danis link=topic=1083.msg6191#msg6191 date=1473519786]
Илья, Ноль не вариант
[/quote]

Хаххах, в смысле не вариант?? Тебе не надо, чтобы БАТ был отрицательным. И минимальное положительное его значение - это 0. :D
 
Код:
function modifier1:OnCreated() --modifier1 изменяет базовой время атаки на определенное значение.
	local parent = self:GetParent()
	parent.baseAttackTime = parent.baseAttackTime or parent:GetBaseAttackTime()
	parent.modifAttackTime = (parent.modifAttackTime or 0) + self:GetAbility():GetSpecialValueFor("base_attack_modifier")
	parent:SetBaseAttackTime(parent.baseAttackTime+parent.modifAttackTime)
end

function modifier1:OnDestroy()
	local parent = self:GetParent()
	parent.baseAttackTime = parent.baseAttackTime or parent:GetBaseAttackTime()
	parent.modifAttackTime = (parent.modifAttackTime or 0) - self:GetAbility():GetSpecialValueFor("base_attack_modifier")
	parent:SetBaseAttackTime(parent.baseAttackTime+parent.modifAttackTime)
end

function modifier2:OnCreated() --modifier2 устанавливает базовое время атаки с учетом modifier1.
	local parent = self:GetParent()
	self.defaultBaseAttackTime = parent.baseAttackTime or parent:GetBaseAttackTime()
	parent.baseAttackTime = self:GetAbility():GetSpecialValueFor("newBaseAttackTime")
	parent.modifAttackTime = parent.modifAttackTime or 0
	parent:SetBaseAttackTime(parent.baseAttackTime+parent.modifAttackTime)
end

function modifier2:OnDestroy() 
	local parent = self:GetParent()
	parent.baseAttackTime = self.defaultBaseAttackTime
	parent.modifAttackTime = parent.modifAttackTime or 0
	parent:SetBaseAttackTime(parent.baseAttackTime+parent.modifAttackTime)
end
modifier2 нельзя больше одного впиливать ибо может случится некое говно без учета других таких модификаторов
modifier1 может быть сколько угодно
 
Последнее редактирование модератором:
Ладно, я так понял что не получится сделать круто, буду делать тогда по старинке.
 
Очень интересная затея)
Люблю сложные системы)
Если тебе нужно каждый раз при "получении" модификатора снижать базовую скорость атаки на 0.1, то почему бы не сделать один модификатор со стаками, а второй будет присваивать герою базовую скорость атаки таким образом: 0.6-(0.1*количество стаков первого модификатора) ?
 
Последнее редактирование модератором:
Реклама: