initial commit
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
boss_visage_passive = class({})
|
||||
|
||||
LinkLuaModifier( "modifier_boss_visage_passive", "modifiers/creatures/modifier_boss_visage_passive", LUA_MODIFIER_MOTION_NONE )
|
||||
|
||||
----------------------------------------------------------------------------------------
|
||||
|
||||
function boss_visage_passive:Precache( context )
|
||||
PrecacheResource( "particle", "particles/units/heroes/hero_visage/visage_soul_assumption_bolt6.vpcf", context )
|
||||
PrecacheResource( "particle", "particles/status_fx/status_effect_earth_spirit_petrify.vpcf", context )
|
||||
PrecacheResource( "particle", "particles/act_2/storegga_channel.vpcf", context )
|
||||
PrecacheResource( "soundfile", "soundevents/game_sounds_heroes/game_sounds_visage.vsndevts", context )
|
||||
PrecacheResource( "soundfile", "soundevents/voscripts/game_sounds_vo_visage.vsndevts", context )
|
||||
end
|
||||
|
||||
----------------------------------------------------------------------------------------
|
||||
|
||||
function boss_visage_passive:GetIntrinsicModifierName()
|
||||
return "modifier_boss_visage_passive"
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
function boss_visage_passive:OnProjectileThinkHandle( nProjectileHandle )
|
||||
if IsServer() and self:GetCaster() ~= nil then
|
||||
self.soul_assumption_radius = self:GetSpecialValueFor( "soul_assumption_radius" )
|
||||
local vLocation = ProjectileManager:GetTrackingProjectileLocation( nProjectileHandle )
|
||||
local hFamiliars = FindUnitsInRadius( self:GetCaster():GetTeamNumber(), vLocation, nil, self.soul_assumption_radius, DOTA_UNIT_TARGET_TEAM_FRIENDLY, DOTA_UNIT_TARGET_BASIC, DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES + DOTA_UNIT_TARGET_FLAG_INVULNERABLE, FIND_CLOSEST, false )
|
||||
for _,Familiar in pairs ( hFamiliars ) do
|
||||
if Familiar ~= nil and Familiar:GetUnitName() == "npc_dota_boss_visage_familiar" then
|
||||
self:WakeFamiliar( Familiar )
|
||||
ProjectileManager:DestroyTrackingProjectile( nProjectileHandle )
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function boss_visage_passive:WakeFamiliar( hFamiliar )
|
||||
if IsServer() then
|
||||
print( "Waking familiar!" )
|
||||
hFamiliar:RemoveModifierByName( "modifier_boss_visage_familiar_stone_form_buff" )
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function boss_visage_passive:OnProjectileHit( hTarget, vLocation )
|
||||
if IsServer() == false or hTarget == nil then
|
||||
return true
|
||||
end
|
||||
|
||||
if hTarget:IsMagicImmune() == false and hTarget:IsInvulnerable() == false then
|
||||
local damageInfo =
|
||||
{
|
||||
victim = hTarget,
|
||||
attacker = self:GetCaster(),
|
||||
damage = self:GetSpecialValueFor( "soul_assumption_damage" ),
|
||||
damage_type = DAMAGE_TYPE_MAGICAL,
|
||||
ability = self,
|
||||
}
|
||||
|
||||
ApplyDamage( damageInfo )
|
||||
|
||||
EmitSoundOn( "Hero_Visage.SoulAssumption.Target", hTarget )
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
Reference in New Issue
Block a user