-- Project Name: Siltbreaker Hard Mode
-- Author: BroFrank
-- SteamAccountID: 144490770
--Max Level Abilitiy MODIFIER
--Version 1
modifier_maxlv_bonus_abaddon = class({})
-----------------------------------------------------------------------------------------
function modifier_maxlv_bonus_abaddon:IsHidden()
return false
end
-----------------------------------------------------------------------------------------
function modifier_maxlv_bonus_abaddon:IsPurgable()
return false
end
--------------------------------------------------------------------------------
function modifier_maxlv_bonus_abaddon:GetPriority()
return MODIFIER_PRIORITY_ULTRA
end
-----------------------------------------------------------------------------------------
function modifier_maxlv_bonus_abaddon:OnCreated( kv )
self.damage_reduction_pct = self:GetAbility():GetSpecialValueFor( "damage_reduction_pct" )
self.damage_redirect_pct = self:GetAbility():GetSpecialValueFor( "damage_redirect_pct" )
self.damage_redirect_radius = self:GetAbility():GetSpecialValueFor( "damage_redirect_radius" )
end
-----------------------------------------------------------------------------------------
function modifier_maxlv_bonus_abaddon:DeclareFunctions()
local funcs =
{
MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE,
MODIFIER_EVENT_ON_TAKEDAMAGE,
}
return funcs
end
--------------------------------------------------------------------------------
function modifier_maxlv_bonus_abaddon:GetModifierIncomingDamage_Percentage()
return -self.damage_reduction_pct
end
--------------------------------------------------------------------------------
function modifier_maxlv_bonus_abaddon:OnTakeDamage( params )
if IsServer() then
local Attacker = params.attacker
local Target = params.unit
local Ability = params.inflictor
local flDamage = params.damage
local flDamageType = params.damage_type
local flDamageType = params.damage_type
if Attacker == nil or Target == nil then
return 0
end
if Target ~= self:GetParent() then
return 0
end
if bit.band( params.damage_flags, DOTA_DAMAGE_FLAG_REFLECTION ) == DOTA_DAMAGE_FLAG_REFLECTION then
return 0
end
--print("Abaddon Buff")
local enemies = FindUnitsInRadius( Target:GetTeamNumber(), self:GetCaster():GetOrigin(), nil, self.damage_redirect_radius, DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC, DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES, 0, false )
for _,enemy in pairs( enemies ) do
if enemy ~= nil then
local Averagedamage = ( flDamage * self.damage_redirect_pct / 100 ) / #enemies
local damageInfo =
{
victim = enemy,
attacker = Target,
damage = Averagedamage,
damage_type = flDamageType,
ability = nil,
}
--print("Abaddon Damage: "..Averagedamage.."/"..flDamage)
ApplyDamage( damageInfo )
end
end
end
return 0
end |