initial commit
This commit is contained in:
72
aghanim_singleplayer/scripts/vscripts/items/item_watchers_gaze.lua
Executable file
72
aghanim_singleplayer/scripts/vscripts/items/item_watchers_gaze.lua
Executable file
@@ -0,0 +1,72 @@
|
||||
item_watchers_gaze = class({})
|
||||
LinkLuaModifier( "modifier_item_watchers_gaze", "modifiers/modifier_item_watchers_gaze", LUA_MODIFIER_MOTION_NONE )
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function item_watchers_gaze:Precache( context )
|
||||
PrecacheResource( "particle", "particles/units/heroes/hero_medusa/medusa_stone_gaze_cast.vpcf", context )
|
||||
PrecacheResource( "particle", "particles/units/heroes/hero_medusa/medusa_stone_gaze_active.vpcf", context )
|
||||
end
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function item_watchers_gaze:OnSpellStart()
|
||||
if IsServer() then
|
||||
local vision_cone = self:GetSpecialValueFor( "vision_cone" )
|
||||
local nFXIndex = ParticleManager:CreateParticle( "particles/units/heroes/hero_medusa/medusa_stone_gaze_cast.vpcf", PATTACH_ABSORIGIN_FOLLOW, self:GetCaster() )
|
||||
ParticleManager:ReleaseParticleIndex( nFXIndex )
|
||||
|
||||
local enemies = FindUnitsInRadius( self:GetCaster():GetTeamNumber(), self:GetCaster():GetOrigin(), nil, 800, 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 vToTarget = enemy:GetOrigin() - self:GetCaster():GetOrigin()
|
||||
vToTarget = vToTarget:Normalized()
|
||||
local flDirectionDot = DotProduct( vToTarget, self:GetCaster():GetForwardVector() )
|
||||
local flAngle = 180 * math.acos( flDirectionDot ) / math.pi
|
||||
if flAngle < 60 then
|
||||
enemy:AddNewModifier( self:GetCaster(), self, "modifier_medusa_stone_gaze_stone", {duration = self:GetSpecialValueFor( "stone_duration" ) } )
|
||||
EmitSoundOn( "WatchersGaze.Target" ,enemy )
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
local nFXIndex = ParticleManager:CreateParticle( "particles/units/heroes/hero_medusa/medusa_stone_gaze_active.vpcf", PATTACH_ABSORIGIN_FOLLOW, self:GetCaster() )
|
||||
ParticleManager:SetParticleControlEnt( nFXIndex, 1, self:GetCaster(), PATTACH_POINT_FOLLOW, "attach_hitloc", self:GetCaster():GetOrigin(), true )
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function item_watchers_gaze:GetIntrinsicModifierName()
|
||||
return "modifier_item_watchers_gaze"
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function item_watchers_gaze:Spawn()
|
||||
self.required_level = self:GetSpecialValueFor( "required_level" )
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function item_watchers_gaze:OnHeroLevelUp()
|
||||
if IsServer() then
|
||||
if self:GetCaster():GetLevel() == self.required_level and self:IsInBackpack() == false then
|
||||
self:OnUnequip()
|
||||
self:OnEquip()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function item_watchers_gaze:IsMuted()
|
||||
if self.required_level > self:GetCaster():GetLevel() then
|
||||
return true
|
||||
end
|
||||
if not self:GetCaster():IsHero() then
|
||||
return true
|
||||
end
|
||||
return self.BaseClass.IsMuted( self )
|
||||
end
|
||||
Reference in New Issue
Block a user