Deleted member 238589
D
Deleted member 238589
Something in this script causes the map not to be able to run it. I've been trying different undead scripts and they seem to be working. I also copied each function from the broken script to the working script one by one, and it worked until I copied the attack waves (possibly looping waves), so the problem lies there, but I still can't find it.
JASS:
globals
player user = Player(1)
integer Tier = 1
constant integer DARK_RANGER = 'Nbrn'
endglobals
//BUILDINGS
function BuildOrder takes nothing returns nothing
call SetBuildUnitEx( 5,5,5, ACOLYTE)
call SetBuildUnitEx( 1,1,1, NECROPOLIS_1)
call SetBuildUnitEx( 2,2,2, CRYPT)
call SetBuildUnitEx( 9,9,9, ZIGGURAT_1)
call SetBuildUnitEx( 1,1,1, UNDEAD_ALTAR)
call SetBuildUnitEx( 1,1,1, GRAVEYARD)
call SetBuildUnitEx( 1,1,1, TOMB_OF_RELICS)
call SetBuildUnitEx( 1,1,1, UNDEAD_MINE)
if Tier > 1 then
call SetBuildUnitEx( 1,1,1, NECROPOLIS_2)
call SetBuildUnitEx( 1,1,1, CRYPT)
call SetBuildUnitEx( 1,1,1, GRAVEYARD)
call SetBuildUnitEx( 3,3,3, SLAUGHTERHOUSE)
call SetBuildUnitEx( 3,3,3, DAMNED_TEMPLE)
call SetBuildUnitEx( 1,1,1, SAC_PIT)
endif
if Tier > 2 then
call SetBuildUnitEx( 1,1,1, NECROPOLIS_3)
call SetBuildUnitEx( 2,2,2, BONEYARD)
endif
endfunction
//BASE DEFENDERS
function CampaignDefenses takes nothing returns nothing
if Tier == 1 then
call CampaignDefenderEx( 5,5,5, GHOUL)
call CampaignDefenderEx( 3,3,3, CRYPT_FIEND)
elseif Tier == 2 then
call CampaignDefenderEx( 5,5,5, CRYPT_FIEND)
call CampaignDefenderEx( 2,2,2, ABOMINATION)
elseif Tier == 3 then
call CampaignDefenderEx( 3,3,3, ABOMINATION)
call CampaignDefenderEx( 1,1,1, FROST_WYRM)
call CampaignDefenderEx( 5,5,5, CRYPT_FIEND)
endif
endfunction
//ATTACK WAVES
function Tier1Waves takes nothing returns nothing
local integer AttackTier = Tier
loop
call SetBuildUpgrEx(1,1,1, UPG_UNHOLY_STR)
call SetBuildUpgrEx(1,1,1, UPG_CR_ATTACK)
//Wave 1
call InitAssaultGroup()
call CampaignAttackerEx(1,1,1,DARK_RANGER)
call CampaignAttackerEx(3,3,3,CRYPT_FIEND)
call SuicideOnPlayerEx(M3,M3,M3,user)
exitwhen AttackTier != Tier
call SetBuildUpgrEx(1,1,1, UPG_CANNIBALIZE)
//Wave 2
call InitAssaultGroup()
call CampaignAttackerEx(4,4,4,GHOUL)
call CampaignAttackerEx(2,2,2 CRYPT_FIEND)
call SuicideOnPlayerEx(M3,M3,M3,user)
exitwhen AttackTier != Tier
loop
//Wave 3
call InitAssaultGroup()
call CampaignAttackerEx(6,6,6,GHOUL)
call CampaignAttackerEx(1,1,1,DARK_RANGER)
call SuicideOnPlayerEx(M3,M3,M3,user)
exitwhen AttackTier != Tier
call SetBuildUpgrEx(1,1,1, UPG_UNHOLY_ARMOR)
call SetBuildUpgrEx(1,1,1, UPG_CR_ARMOR)
//Wave 4
call InitAssaultGroup()
call CampaignAttackerEx(4,4,4,GHOUL
call CampaignAttackerEx(4,4,4,CRYPT_FIEND)
call SuicideOnPlayerEx(M3,M3,M3,user)
exitwhen AttackTier != Tier
endloop
exitwhen AttackTier != Tier
endloop
endfunction
function Tier2Waves takes nothing returns nothing
local integer AttackTier = Tier
//Research all upgrades of earlier tier.
call SetBuildUpgrEx(1,1,1, UPG_UNHOLY_STR)
call SetBuildUpgrEx(1,1,1, UPG_CR_ATTACK)
call SetBuildUpgrEx(1,1,1, UPG_UNHOLY_ARMOR)
call SetBuildUpgrEx(1,1,1, UPG_CR_ARMOR)
call SetBuildUpgrEx(1,1,1, UPG_CANNIBALIZE)
loop
call SetBuildUpgrEx(1,1,1, UPG_SKEL_LIFE)
call SetBuildUpgrEx(1,1,1, UPG_EXHUME)
//Wave 1
call InitAssaultGroup()
call CampaignAttackerEx(1,1,1,DARK_RANGER)
call CampaignAttackerEx(4,4,4,CRYPT_FIEND)
call CampaignAttackerEx(2,2,2,OBSIDIAN_STATUE)
call CampaignAttackerEx(4,4,4,GHOUL)
call SuicideOnPlayerEx(M3,M3,M3,user)
exitwhen AttackTier != Tier
call SetBuildUpgrEx(1,1,1, UPG_FIEND_WEB)
call SetBuildUpgrEx(1,1,1, UPG_BURROWING)
//Wave 2
call InitAssaultGroup()
call CampaignAttackerEx(6,6,6,GHOUL)
call CampaignAttackerEx(3,3,3,NECRO)
call CampaignAttackerEx(1,1,1,MEAT_WAGON)
call SuicideOnPlayerEx(M3,M3,M3,user)
exitwhen AttackTier != Tier
call SetBuildUpgrEx(2,2,2, UPG_UNHOLY_STR)
call SetBuildUpgrEx(2,2,2, UPG_CR_ATTACK)
call SetBuildUpgrEx(1,1,1, UPG_NECROS)
call SetBuildUpgrEx(1,1,1, UPG_BANSHEE)
loop
//Wave 4+
call InitAssaultGroup()
call CampaignAttackerEx(1,1,1,DARK_RANGER)
call CampaignAttackerEx(5,5,5,GHOUL)
call CampaignAttackerEx(4,4,4,CRYPT_FIEND)
call CampaignAttackerEx(2,2,2,BANSHEE)
call CampaignAttackerEx(1,1,1,OBSIDIAN_STATUE)
call SuicideOnPlayerEx(M4,M4,M4,user)
exitwhen AttackTier != Tier
call SetBuildUpgrEx(2,2,2, UPG_UNHOLY_ARMOR)
call SetBuildUpgrEx(2,2,2, UPG_CR_ARMOR)
//Wave 5+
call InitAssaultGroup()
call CampaignAttackerEx(8,8,8,GHOUL)
call CampaignAttackerEx(3,3,3,NECRO)
call CampaignAttackerEx(2,2,2,MEAT_WAGON)
call SuicideOnPlayerEx(M4,M4,M4,user)
exitwhen AttackTier != Tier
//Wave 6+
call InitAssaultGroup()
call CampaignAttackerEx(1,1,1,DARK_RANGER)
call CampaignAttackerEx(6,6,6,GHOUL)
call CampaignAttackerEx(3,3,3,BANSHEE)
call CampaignAttackerEx(5,5,5,GARGOYLE)
call SuicideOnPlayerEx(M5,M5,M5,user)
exitwhen AttackTier != Tier
endloop
exitwhen AttackTier != Tier
endloop
endfunction
function Tier3Waves takes nothing returns nothing
local integer AttackTier = Tier
//Research all upgrades of earlier tier.
call SetBuildUpgrEx(2,2,2, UPG_UNHOLY_ARMOR)
call SetBuildUpgrEx(2,2,2, UPG_CR_ARMOR)
call SetBuildUpgrEx(2,2,2, UPG_UNHOLY_STR)
call SetBuildUpgrEx(2,2,2, UPG_CR_ATTACK)
call SetBuildUpgrEx(1,1,1, UPG_NECROS)
call SetBuildUpgrEx(1,1,1, UPG_BANSHEE)
call SetBuildUpgrEx(1,1,1, UPG_FIEND_WEB)
call SetBuildUpgrEx(1,1,1, UPG_BURROWING)
call SetBuildUpgrEx(1,1,1, UPG_SKEL_LIFE)
call SetBuildUpgrEx(1,1,1, UPG_EXHUME)
loop
call SetBuildUpgrEx(1,1,1, UPG_GHOUL_FRENZY)
call SetBuildUpgrEx(1,1,1, UPG_BLK_SPHINX)
call SetBuildUpgrEx(1,1,1, UPG_PLAGUE
call SetBuildUpgrEx(1,1,1, UPG_SKEL_MASTERY)
call SetBuildUpgrEx(1,1,1, UPG_STONE_FORM)
call SetBuildUpgrEx(2,2,2, UPG_NECROS)
call SetBuildUpgrEx(2,2,2, UPG_BANSHEE)
//Wave 1
call InitAssaultGroup()
call CampaignAttackerEx(1,1,1,DARK_RANGER)
call CampaignAttackerEx(4,4,4, ABOMINATION)
call CampaignAttackerEx(2,2,2, OBSIDIAN_STATUE)
call CampaignAttackerEx(4,4,4, GARGOYLE)
call SuicideOnPlayerEx(M4,M4,M4,user)
exitwhen AttackTier != Tier
//Wave 2
call InitAssaultGroup()
call CampaignAttackerEx(8,8,8,GARGOYLE)
call CampaignAttackerEx(2,2,2, FROST_WYRM)
call SuicideOnPlayerEx(M5,M5,M5,user)
exitwhen AttackTier != Tier
call SetBuildUpgrEx(3,3,3, UPG_UNHOLY_ARMOR)
call SetBuildUpgrEx(3,3,3, UPG_CR_ARMOR)
//Wave 3
call InitAssaultGroup()
call CampaignAttackerEx(1,1,1,DARK_RANGER)
call CampaignAttackerEx(2,2,2,NECRO)
call CampaignAttackerEx(2,2,2,BANSHEE)
call CampaignAttackerEx(4,4,4,CRYPT_FIEND)
call CampaignAttackerEx(2,2,2,MEAT_WAGON)
call SuicideOnPlayerEx(M4,M4,M4,user)
exitwhen AttackTier != Tier
call SetBuildUpgrEx(1,1,1, UPG_WYRM_BREATH)
//Wave 4
call InitAssaultGroup()
call CampaignAttackerEx(10,10,10, GHOUL)
call CampaignAttackerEx(4,4,4,NECRO)
call CampaignAttackerEx(2,2,2,MEAT_WAGON)
call CampaignAttackerEx(1,1,1,OBSIDIAN_STATUE)
call SuicideOnPlayerEx(M5,M5,M5,user)
exitwhen AttackTier != Tier
loop
//Wave 5
call InitAssaultGroup()
call CampaignAttackerEx(1,1,1,DARK_RANGER)
call CampaignAttackerEx(6,6,6,CRYPT_FIEND)
call CampaignAttackerEx(4,4,4,ABOMINATION)
call CampaignAttackerEx(3,3,3,GARGOYLE)
call CampaignAttackerEx(1,1,1,FROST_WYRM)
call SuicideOnPlayerEx(M5,M5,M5,user)
exitwhen AttackTier != Tier
call SetBuildUpgrEx(3,3,3, UPG_UNHOLY_STR)
call SetBuildUpgrEx(3,3,3, UPG_CR_ATTACK)
//Wave 6
call InitAssaultGroup()
call CampaignAttackerEx(8,8,8,BLK_SPHINX)
call SuicideOnPlayerEx(M4,M4,M4,user)
exitwhen AttackTier != Tier
//Wave 7
call InitAssaultGroup()
call CampaignAttackerEx(1,1,1,DARK_RANGER)
call CampaignAttackerEx(4,4,4,BANSHEE)
call CampaignAttackerEx(5,5,5,ABOMINATION)
call CampaignAttackerEx(2,2,2,OBSIDIAN_STATUE)
call CampaignAttackerEx(1,1,1,FROST_WYRM)
call SuicideOnPlayerEx(M5,M5,M5,user)
exitwhen AttackTier != Tier
//Wave 8
call InitAssaultGroup()
call CampaignAttackerEx(4,4,4,BLK_SPHINX)
call CampaignAttackerEx(6,6,6,CRYPT_FIEND)
call CampaignAttackerEx(1,1,1,FROST_WYRM)
call SuicideOnPlayerEx(M5,M5,M5,user)
exitwhen AttackTier != Tier
endloop
exitwhen AttackTier != Tier
endloop
endfunction
function AttackLoop takes nothing returns nothing
loop
if Tier == 1 then
call Tier1Waves()
elseif Tier == 2 then
call Tier2Waves()
elseif Tier == 3 then
call Tier3Waves()
else
call DisplayTextToPlayer(user,0,0,"Something's not right")
endif
endloop
endfunction
//COMMAND FUNCTIONS
function TierCondition takes nothing returns nothing
if CommandsWaiting() > 0 then
set Tier = GetLastCommand()
call PopLastCommand()
call InitBuildArray()
call InitDefenseGroup()
call BuildOrder()
call CampaignDefenses()
endif
endfunction
function ConditionLoop takes nothing returns nothing
call TierCondition()
call StaggerSleep(1,5)
loop
call TierCondition()
call Sleep(5)
endloop
endfunction
//HERO LEVELING
function hero_levels takes nothing returns integer
local integer hero = GetHeroId()
local integer level = GetHeroLevelAI()
local integer a = 0
if hero == DARK_RANGER then
if level == 4 or level == 9 or level == 10 then
set a = 'ANsi' //Silence
endif
if level == 1 or level == 3 or level == 7 then
set a = 'ANba' //Black Arrow
endif
if level == 2 or level == 5 or level == 8 then
set a = 'AEar' //Trueshot Aura
endif
if level == 6 then
set a = 'ANch' //Charm
endif
endif
return a
endfunction
//MAIN FUNCTION
function main takes nothing returns nothing
call CampaignAI(ZIGGURAT_1,null)
call DoCampaignFarms(false)
call SetPeonsRepair(true)
call SetSlowChopping(true)
call SetHeroesTakeItems(true)
call SetHeroesBuyItems(true)
call BuildOrder()
call CampaignDefenses()
call StartThread(function ConditionLoop)
call AttackLoop()
endfunction
Last edited by a moderator: