154 lines
4.5 KiB
Lua
Executable File
154 lines
4.5 KiB
Lua
Executable File
require( "map_encounter" )
|
|
require( "aghanim_utility_functions" )
|
|
require( "spawner" )
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
if CMapEncounter_Enraged_Wildwings == nil then
|
|
CMapEncounter_Enraged_Wildwings = class( {}, {}, CMapEncounter )
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function CMapEncounter_Enraged_Wildwings:constructor( hRoom, szEncounterName )
|
|
|
|
CMapEncounter.constructor( self, hRoom, szEncounterName )
|
|
|
|
self.szPeonSpawner = "spawner_peon"
|
|
self.szCaptainSpawner = "spawner_captain"
|
|
self.nCaptains = 6
|
|
local bInvulnerable = true
|
|
|
|
self.vWaveSchedule =
|
|
{
|
|
{
|
|
Time = 0,
|
|
Count = 2,
|
|
},
|
|
{
|
|
Time = 36,
|
|
Count = 3,
|
|
},
|
|
}
|
|
|
|
self:AddSpawner( CDotaSpawner( "spawner_captain_trigger", "spawner_captain_trigger",
|
|
{
|
|
{
|
|
EntityName = "npc_aghsfort_creature_enraged_wildwing",
|
|
Team = DOTA_TEAM_BADGUYS,
|
|
Count = 1,
|
|
PositionNoise = 50.0,
|
|
}
|
|
} ) )
|
|
|
|
self:AddPortalSpawnerV2( CPortalSpawnerV2( self.szCaptainSpawner, self.szCaptainSpawner, 4, 5, 1.0,
|
|
{
|
|
{
|
|
EntityName = "npc_aghsfort_creature_enraged_wildwing",
|
|
Team = DOTA_TEAM_BADGUYS,
|
|
Count = 1,
|
|
PositionNoise = 100.0,
|
|
},
|
|
{
|
|
EntityName = "npc_aghsfort_creature_tornado_harpy",
|
|
Team = DOTA_TEAM_BADGUYS,
|
|
Count = 2,
|
|
PositionNoise = 100.0,
|
|
},
|
|
|
|
|
|
|
|
}, bInvulnerable ) )
|
|
|
|
self:SetPortalTriggerSpawner( "spawner_captain_trigger", 0.8 )
|
|
self:SetSpawnerSchedule( "spawner_captain_trigger", nil ) -- means spawn once when triggered
|
|
--self:SetSpawnerSchedule( self.szPeonSpawner, self.vPeonSchedule )
|
|
self:SetSpawnerSchedule( self.szCaptainSpawner, self.vWaveSchedule )
|
|
self:SetCalculateRewardsFromUnitCount( true )
|
|
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function CMapEncounter_Enraged_Wildwings:GetPreviewUnit()
|
|
return "npc_aghsfort_creature_enraged_wildwing"
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function CMapEncounter_Enraged_Wildwings:GetMaxSpawnedUnitCount()
|
|
local nCount = 0
|
|
local hWarriorSpawners = self:GetSpawner( self.szPeonSpawner )
|
|
if hWarriorSpawners then
|
|
nCount = nCount + hWarriorSpawners:GetSpawnPositionCount() * 2
|
|
end
|
|
|
|
local hChampionSpawners = self:GetSpawner( self.szCaptainSpawner )
|
|
if hChampionSpawners then
|
|
nCount = nCount + hChampionSpawners:GetSpawnPositionCount()
|
|
end
|
|
|
|
return nCount
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function CMapEncounter_Enraged_Wildwings:InitializeObjectives()
|
|
CMapEncounter.InitializeObjectives( self )
|
|
self:AddEncounterObjective( "kill_wildwings", 0, self.nCaptains )
|
|
end
|
|
--------------------------------------------------------------------------------
|
|
|
|
function CMapEncounter_Enraged_Wildwings:OnRequiredEnemyKilled( hAttacker, hVictim )
|
|
CMapEncounter.OnRequiredEnemyKilled( self, hAttacker, hVictim )
|
|
|
|
if hVictim and hVictim:GetUnitName() == "npc_aghsfort_creature_enraged_wildwing" then
|
|
local nCurrentValue = self:GetEncounterObjectiveProgress( "kill_wildwings" )
|
|
self:UpdateEncounterObjective( "kill_wildwings", nCurrentValue + 1, nil )
|
|
end
|
|
end
|
|
--------------------------------------------------------------------------------
|
|
|
|
function CMapEncounter_Enraged_Wildwings:Start()
|
|
CMapEncounter.Start( self )
|
|
self:StartAllSpawnerSchedules( 0 )
|
|
|
|
--for _,Spawner in pairs ( self:GetSpawners() ) do
|
|
-- if Spawner:GetSpawnerName() == "spawner_peon" then
|
|
-- Spawner:SpawnUnitsFromRandomSpawners( Spawner:GetSpawnPositionCount() )
|
|
-- else
|
|
-- Spawner:SpawnUnitsFromRandomSpawners( self.nCaptains )
|
|
-- end
|
|
--end
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function CMapEncounter_Enraged_Wildwings:OnThink()
|
|
CMapEncounter.OnThink( self )
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function CMapEncounter_Enraged_Wildwings:CreateEnemies()
|
|
for _,Spawner in pairs ( self:GetSpawners() ) do
|
|
Spawner:SpawnUnits()
|
|
end
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
function CMapEncounter_Enraged_Wildwings:MustKillForEncounterCompletion( hEnemyCreature )
|
|
if hEnemyCreature:GetUnitName() == "npc_aghsfort_creature_enraged_wildwing_tornado" then
|
|
return false
|
|
end
|
|
return true
|
|
end
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
return CMapEncounter_Enraged_Wildwings
|