Объясните почему двойной урон идёт

AiroPro

Пользователь
15 Май 2020
17
0
Проект
Bleach vs One Piece
function bvo_megumin_skill_1( keys )
local caster = keys.caster
local ability = keys.ability
local multi = keys.multi
local point = keys.target_points[1]
local Int = caster:GetBaseIntellect()
local radius = ability:GetLevelSpecialValueFor("radius", ability:GetLevel() - 1 )
local damage = ability:GetLevelSpecialValueFor("damage", ability:GetLevel() - 1 )

local localUnits = FindUnitsInRadius(caster:GetTeamNumber(),
point,
nil,
radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC,
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_ANY_ORDER,
false)

for _,unit in pairs(localUnits) do
local damageTable = {
victim = unit,
attacker = caster,
damage = damage + Int * multi, -- интеллект стоит на 1 урон 400 а при срабатывании магии выбивает 740
damage_type = DAMAGE_TYPE_MAGICAL,
}
ApplyDamage(damageTable)
SendOverheadEventMessage(nil, OVERHEAD_ALERT_BONUS_POISON_DAMAGE, caster, ApplyDamage(damageTable) , nil)
print ("intellect:"..Int.."damage with multiplication:"..Int * multi.."total damage:"..damage) -- по данному скрипту он показывает урон 360
ability:ApplyDataDrivenModifier(caster, unit, "bvo_megumin_skill_1_modifier", {duration=0.1})
end

local dummy = CreateUnitByName("npc_dummy_unit", point, false, nil, nil, caster:GetTeam())
dummy:AddAbility("custom_point_dummy")
local abl = dummy:FindAbilityByName("custom_point_dummy")
if abl ~= nil then abl:SetLevel(1) end
dummy:EmitSound("Hero_Gyrocopter.CallDown.Damage")
Timers:CreateTimer(3.0, function ()
dummy:RemoveSelf()
end)
 

lars

Пользователь
7 Июн 2019
10
3
function bvo_megumin_skill_1( keys )
local caster = keys.caster
local ability = keys.ability
local multi = keys.multi
local point = keys.target_points[1]
local Int = caster:GetBaseIntellect()
local radius = ability:GetLevelSpecialValueFor("radius", ability:GetLevel() - 1 )
local damage = ability:GetLevelSpecialValueFor("damage", ability:GetLevel() - 1 )

local localUnits = FindUnitsInRadius(caster:GetTeamNumber(),
point,
nil,
radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC,
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_ANY_ORDER,
false)

for _,unit in pairs(localUnits) do
local damageTable = {
victim = unit,
attacker = caster,
damage = damage + Int * multi, -- интеллект стоит на 1 урон 400 а при срабатывании магии выбивает 740
damage_type = DAMAGE_TYPE_MAGICAL,
}
ApplyDamage(damageTable)
SendOverheadEventMessage(nil, OVERHEAD_ALERT_BONUS_POISON_DAMAGE, caster, ApplyDamage(damageTable) , nil)
print ("intellect:"..Int.."damage with multiplication:"..Int * multi.."total damage:"..damage) -- по данному скрипту он показывает урон 360
ability:ApplyDataDrivenModifier(caster, unit, "bvo_megumin_skill_1_modifier", {duration=0.1})
end

local dummy = CreateUnitByName("npc_dummy_unit", point, false, nil, nil, caster:GetTeam())
dummy:AddAbility("custom_point_dummy")
local abl = dummy:FindAbilityByName("custom_point_dummy")
if abl ~= nil then abl:SetLevel(1) end
dummy:EmitSound("Hero_Gyrocopter.CallDown.Damage")
Timers:CreateTimer(3.0, function ()
dummy:RemoveSelf()
end)
ApplyDamage вызывается 2 раза. Поменяй на
local nDamage = ApplyDamage(damageTable)
SendOverheadEventMessage(nil, OVERHEAD_ALERT_BONUS_POISON_DAMAGE, caster, nDamage , nil)
 
Реклама: