initial commit
This commit is contained in:
160
aghanim_singleplayer/scripts/vscripts/encounters/encounter_boss_visage.lua
Executable file
160
aghanim_singleplayer/scripts/vscripts/encounters/encounter_boss_visage.lua
Executable file
@@ -0,0 +1,160 @@
|
||||
require( "encounters/encounter_boss_base" )
|
||||
require( "aghanim_utility_functions" )
|
||||
require( "spawner" )
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
if CMapEncounter_BossVisage == nil then
|
||||
CMapEncounter_BossVisage = class( {}, {}, CMapEncounter_BossBase )
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function CMapEncounter_BossVisage:constructor( hRoom, szEncounterName )
|
||||
CMapEncounter_BossBase.constructor( self, hRoom, szEncounterName )
|
||||
|
||||
self:AddSpawner( CDotaSpawner( "spawner_boss", "spawner_boss",
|
||||
{
|
||||
{
|
||||
EntityName = self:GetPreviewUnit(),
|
||||
Team = DOTA_TEAM_BADGUYS,
|
||||
Count = 1,
|
||||
PositionNoise = 0.0,
|
||||
|
||||
},
|
||||
} ) )
|
||||
|
||||
self:AddSpawner( CDotaSpawner( "spawner_familiar", "spawner_familiar",
|
||||
{
|
||||
{
|
||||
EntityName = "npc_dota_boss_visage_familiar",
|
||||
Team = DOTA_TEAM_BADGUYS,
|
||||
Count = 1,
|
||||
PositionNoise = 0.0,
|
||||
|
||||
},
|
||||
} ) )
|
||||
|
||||
self:AddSpawner( CDotaSpawner( "spawner_familiar_statue_east", "spawner_familiar_statue_east",
|
||||
{
|
||||
{
|
||||
EntityName = "npc_dota_boss_visage_familiar_statue",
|
||||
Team = DOTA_TEAM_BADGUYS,
|
||||
Count = 1,
|
||||
PositionNoise = 0.0,
|
||||
|
||||
},
|
||||
} ) )
|
||||
|
||||
self:AddSpawner( CDotaSpawner( "spawner_familiar_statue_west", "spawner_familiar_statue_west",
|
||||
{
|
||||
{
|
||||
EntityName = "npc_dota_boss_visage_familiar_statue",
|
||||
Team = DOTA_TEAM_BADGUYS,
|
||||
Count = 1,
|
||||
PositionNoise = 0.0,
|
||||
|
||||
},
|
||||
} ) )
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function CMapEncounter_BossVisage:GetPreviewUnit()
|
||||
return "npc_dota_boss_visage"
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function CMapEncounter_BossVisage:Precache( context )
|
||||
CMapEncounter_BossBase.Precache( self, context )
|
||||
|
||||
PrecacheUnitByNameSync( "npc_dota_boss_visage_familiar", context, -1 )
|
||||
PrecacheResource( "particle_folder", "particles/units/heroes/hero_visage", context )
|
||||
PrecacheResource( "soundfile", "soundevents/game_sounds_heroes/game_sounds_visage.vsndevts", context )
|
||||
PrecacheResource( "soundfile", "soundevents/voscripts/game_sounds_vo_visage.vsndevts", context )
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function CMapEncounter_BossVisage:OnEncounterLoaded()
|
||||
CMapEncounter_BossBase.OnEncounterLoaded( self )
|
||||
|
||||
self.vecFamiliars = self:GetSpawner( "spawner_familiar" ):SpawnUnits()
|
||||
self.vecFamiliarStatuesWest = self:GetSpawner( "spawner_familiar_statue_west" ):SpawnUnits()
|
||||
self.vecFamiliarStatuesEast = self:GetSpawner( "spawner_familiar_statue_east" ):SpawnUnits()
|
||||
for _,Familiar in pairs ( self.vecFamiliars ) do
|
||||
Familiar:FaceTowards( self:GetSpawner( "spawner_boss" ):GetSpawners()[1]:GetAbsOrigin() )
|
||||
end
|
||||
|
||||
for _,StatueWest in pairs ( self.vecFamiliarStatuesWest ) do
|
||||
StatueWest:SetAbsAngles( 0, 0, 0 )
|
||||
end
|
||||
|
||||
for _,StatueEast in pairs ( self.vecFamiliarStatuesEast ) do
|
||||
StatueEast:SetAbsAngles( 0, 180, 0 )
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function CMapEncounter_BossVisage:OnThink()
|
||||
CMapEncounter_BossBase.OnThink( self )
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function CMapEncounter_BossVisage:MustKillForEncounterCompletion( hEnemyCreature )
|
||||
if hEnemyCreature:GetUnitName() == "npc_dota_boss_visage_familiar" then
|
||||
return false
|
||||
end
|
||||
if hEnemyCreature:GetUnitName() == "npc_dota_boss_visage_familiar_statue" then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
function CMapEncounter_BossVisage:OnBossSpawned( hBoss )
|
||||
CMapEncounter_BossBase.OnBossSpawned( self, hBoss )
|
||||
hBoss.AI:SetEncounter( self )
|
||||
hBoss.WestStatues = self.vecFamiliarStatuesWest
|
||||
hBoss.EastStatues = self.vecFamiliarStatuesEast
|
||||
|
||||
for _,Familiar in pairs ( self.vecFamiliars ) do
|
||||
Familiar:FaceTowards( self:GetSpawner( "spawner_boss" ):GetSpawners()[1]:GetAbsOrigin() )
|
||||
Familiar:FindAbilityByName( "boss_visage_familiar_stone_form" ):OnSpellStart()
|
||||
end
|
||||
|
||||
for _,StatueWest in pairs ( self.vecFamiliarStatuesWest ) do
|
||||
StatueWest:FindAbilityByName( "boss_visage_familiar_stone_form" ):OnSpellStart()
|
||||
end
|
||||
|
||||
for _,StatueEast in pairs ( self.vecFamiliarStatuesEast ) do
|
||||
StatueEast:FindAbilityByName( "boss_visage_familiar_stone_form" ):OnSpellStart()
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
function CMapEncounter_BossVisage:OnBossKilled( hBoss, hAttacker )
|
||||
CMapEncounter_BossBase.OnBossKilled( self, hBoss, hAttacker )
|
||||
|
||||
for _,Familiar in pairs ( self.vecFamiliars ) do
|
||||
Familiar:ForceKill( false )
|
||||
end
|
||||
|
||||
for _,StatueWest in pairs ( self.vecFamiliarStatuesWest ) do
|
||||
StatueWest:ForceKill( false )
|
||||
end
|
||||
|
||||
for _,StatueEast in pairs ( self.vecFamiliarStatuesEast ) do
|
||||
StatueEast:ForceKill( false )
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
return CMapEncounter_BossVisage
|
||||
Reference in New Issue
Block a user