Files
2HUCardTDGame/aghanim_singleplayer/scripts/vscripts/modifiers/modifier_blessing_damage_reflect.lua
2021-10-24 15:36:18 -04:00

77 lines
2.1 KiB
Lua
Executable File

require( "modifiers/modifier_blessing_base" )
modifier_blessing_damage_reflect = class( modifier_blessing_base )
----------------------------------------
function modifier_blessing_damage_reflect:OnBlessingCreated( kv )
self.flDamageReflectPercentage = kv.damage_reflect
--print ( "Reflecting Damage = " .. self.flDamageReflectPercentage )
end
--------------------------------------------------------------------------------
function modifier_blessing_damage_reflect:DeclareFunctions()
local funcs =
{
MODIFIER_EVENT_ON_TAKEDAMAGE,
MODIFIER_PROPERTY_TOOLTIP,
}
return funcs
end
--------------------------------------------------------------------------------
function modifier_blessing_damage_reflect:OnTakeDamage( params )
if IsServer() then
-- Are we being attacked?
local hUnit = params.unit
if hUnit ~= self:GetParent() then
return 0
end
-- Is the attacker something to reflect damage upon
local hAttacker = params.attacker
if hAttacker == nil or hAttacker:IsBuilding() then
return 0
end
if hAttacker == self:GetParent() or hAttacker:GetTeamNumber() == self:GetParent():GetTeamNumber() then
return 0
end
if bit.band( params.damage_flags, DOTA_DAMAGE_FLAG_REFLECTION ) == DOTA_DAMAGE_FLAG_REFLECTION then
return 0
end
-- Get damage amount and calculate the relfected amount
local flDamage = params.damage
local flDamageReflect = flDamage * self.flDamageReflectPercentage
-- Create reflect sound (BladeMail)
--EmitSoundOn( "DOTA_Item.BladeMail.Damage", self:GetParent() )
-- Send damage back
local damageInfo =
{
victim = hAttacker,
attacker = self:GetParent(),
damage = flDamageReflect,
damage_type = params.damage_type,
damage_flags = DOTA_DAMAGE_FLAG_REFLECTION,
ability = nil,
}
ApplyDamage( damageInfo )
--print( "Damage = " .. flDamage .. ", Reflecting Damage = " .. flDamageReflect )
end
return 0
end
--------------------------------------------------------------------------------
function modifier_blessing_damage_reflect:OnTooltip( params )
local nDamageReflectPercentage = ( self.flDamageReflectPercentage * 100.0 )
return nDamageReflectPercentage
end