SpawnNumbers={}; TraineesSpawned=0; DeathknightSpawned=0; RidersSpawned=0; IMBA_LIVE_TRAINEE_DEATH = "Unrelenting Trainee dies." IMBA_LIVE_DEATHKNIGHT_DEATH = "Unrelenting Deathknight dies." IMBA_LIVE_RIDER_DEATH = "Unrelenting Rider dies." IMBA_DEAD_TRAINEE_DEATH = "Spectral Trainee dies." IMBA_DEAD_DEATHKNIGHT_DEATH = "Spectral Deathknight dies." IMBA_DEAD_RIDER_DEATH = "Spectral Rider dies." IMBA_DEAD_HORSE_DEATH = "Spectral Horse dies." IMBA_GOTHIK_YELL = "Foolishly you have sought your own demise" if (GetLocale()=="frFR") then --Translation by A.su.K.A IMBA_LIVE_TRAINEE_DEATH = "Jeune recrue tenace meurt." IMBA_LIVE_DEATHKNIGHT_DEATH = "Chevalier de la mort tenace meurt." IMBA_LIVE_RIDER_DEATH = "Cavalier tenace meurt." IMBA_DEAD_TRAINEE_DEATH = "Jeune recrue spectral meurt." IMBA_DEAD_DEATHKNIGHT_DEATH = "Chevalier de la mort spectral meurt." IMBA_DEAD_RIDER_DEATH = "Cavalier spectral meurt." IMBA_DEAD_HORSE_DEATH = "Cheval spectral meurt." IMBA_GOTHIK_YELL = "Dans votre folie, vous avez provoqu\195\169 votre propre mort." end function IMBA_Gothik_UpdateBarNumbers() IMBA_Gothik_LiveTrainees:SetValText(SpawnNumbers["LiveTrainees"]-KillNumLiveTrainees); IMBA_Gothik_LiveDeathknights:SetValText(SpawnNumbers["LiveDeathknights"]-KillNumLiveDeathknights); IMBA_Gothik_LiveRiders:SetValText(SpawnNumbers["LiveRiders"]-KillNumLiveRiders); IMBA_Gothik_DeadTrainees:SetValText(KillNumLiveTrainees-KillNumDeadTrainees); IMBA_Gothik_DeadDeathknights:SetValText(KillNumLiveDeathknights-KillNumDeadDeathknights); IMBA_Gothik_DeadRiders:SetValText(KillNumLiveRiders-KillNumDeadRiders); IMBA_Gothik_DeadHorses:SetValText(KillNumLiveRiders-KillNumDeadHorses); end function IMBA_Gothik_InitSpawnNumbers() SpawnNumbers={}; SpawnNumbers["LiveTrainees"]=0; SpawnNumbers["LiveDeathknights"]=0; SpawnNumbers["LiveRiders"]=0; KillNumLiveTrainees=0; KillNumLiveDeathknights=0; KillNumLiveRiders=0; KillNumDeadTrainees=0; KillNumDeadDeathknights=0; KillNumDeadRiders=0; KillNumDeadHorses=0; SendAddonMessage("IMBA", "VARSYNC KillNumLiveTrainees 0 REPLACE","RAID"); SendAddonMessage("IMBA", "VARSYNC KillNumLiveDeathknights 0 REPLACE","RAID"); SendAddonMessage("IMBA", "VARSYNC KillNumLiveRiders 0 REPLACE","RAID"); SendAddonMessage("IMBA", "VARSYNC KillNumDeadTrainees 0 REPLACE","RAID"); SendAddonMessage("IMBA", "VARSYNC KillNumDeadDeathknights 0 REPLACE","RAID"); SendAddonMessage("IMBA", "VARSYNC KillNumDeadRiders 0 REPLACE","RAID"); SendAddonMessage("IMBA", "VARSYNC KillNumDeadHorses 0 REPLACE","RAID"); TraineesSpawned=0; DeathknightsSpawned=0; RidersSpawned=0; IMBA_Gothik_UpdateBarNumbers(); end function IMBA_Gothik_TraineeSpawn() SpawnNumbers["LiveTrainees"]=SpawnNumbers["LiveTrainees"]+3; IMBA_Gothik_UpdateBarNumbers(); TraineesSpawned=TraineesSpawned+1; if TraineesSpawned>= 11 then IMBA_Gothik_TimerTrainee.active=false; IMBA_Gothik_TimerTrainee:SetValText(""); else IMBA_Gothik_TimerTrainee:SetBarText("Trainee Spawn "..TraineesSpawned+1); end end function IMBA_Gothik_DeathknightSpawn() SpawnNumbers["LiveDeathknights"]=SpawnNumbers["LiveDeathknights"]+2; IMBA_Gothik_UpdateBarNumbers(); DeathknightsSpawned=DeathknightsSpawned+1; if DeathknightsSpawned>= 7 then IMBA_Gothik_TimerDeathknight.active=false; IMBA_Gothik_TimerDeathknight:SetValText(""); else IMBA_Gothik_TimerDeathknight:SetBarText("Deathknight Spawn "..DeathknightsSpawned+1); end end function IMBA_Gothik_RiderSpawn() SpawnNumbers["LiveRiders"]=SpawnNumbers["LiveRiders"]+1; RidersSpawned=RidersSpawned+1; IMBA_Gothik_UpdateBarNumbers(); if RidersSpawned>= 4 then IMBA_Gothik_TimerRider.active=false; IMBA_Gothik_TimerRider:SetValText(""); else IMBA_Gothik_TimerRider:SetBarText("Rider Spawn "..RidersSpawned+1); end end IMBA_GOTHIK_TRAINEE_SPAWN_TIME = 20 IMBA_GOTHIK_TRAINEE_FIRST_SPAWN_TIME = 27 IMBA_GOTHIK_DK_SPAWN_TIME = 25 IMBA_GOTHIK_DK_FIRST_SPAWN_TIME = 77 IMBA_GOTHIK_RIDER_SPAWN_TIME = 30 IMBA_GOTHIK_RIDER_FIRST_SPAWN_TIME = 137 IMBA_GOTHIK_STAGE1_TIME = 270 function IMBA_Gothik_FirstTraineeSpawn() IMBA_Gothik_TimerTrainee:StartTimer(IMBA_GOTHIK_TRAINEE_SPAWN_TIME,true,IMBA_Gothik_TraineeSpawn); IMBA_Gothik_TraineeSpawn(); end function IMBA_Gothik_FirstDeathknightSpawn() IMBA_Gothik_TimerDeathknight:StartTimer(IMBA_GOTHIK_DK_SPAWN_TIME,true,IMBA_Gothik_DeathknightSpawn); IMBA_Gothik_DeathknightSpawn(); end function IMBA_Gothik_FirstRiderSpawn() IMBA_Gothik_TimerRider:StartTimer(IMBA_GOTHIK_RIDER_SPAWN_TIME,true,IMBA_Gothik_RiderSpawn); IMBA_Gothik_RiderSpawn(); end function IMBA_Gothik_Stage2Start() IMBA_Gothik_TimerStage2:SetValText(""); IMBA_Gothik_TimerStage2.active=false; end function IMBA_Gothik_Start() IMBA_Gothik_TimerTrainee:StartTimer(IMBA_GOTHIK_TRAINEE_FIRST_SPAWN_TIME,false,IMBA_Gothik_FirstTraineeSpawn); IMBA_Gothik_TimerDeathknight:StartTimer(IMBA_GOTHIK_DK_FIRST_SPAWN_TIME,false,IMBA_Gothik_FirstDeathknightSpawn); IMBA_Gothik_TimerRider:StartTimer(IMBA_GOTHIK_RIDER_FIRST_SPAWN_TIME,false,IMBA_Gothik_FirstRiderSpawn); IMBA_Gothik_TimerStage2:StartTimer(IMBA_GOTHIK_STAGE1_TIME,false,IMBA_Gothik_Stage2Start); IMBA_Gothik_TimerTrainee:SetBarText("Trainee Spawn 1"); IMBA_Gothik_TimerDeathknight:SetBarText("Deathknight Spawn 1"); IMBA_Gothik_TimerRider:SetBarText("Rider Spawn 1"); end function IMBA_Gothik_YellActivator(arg1) if string.find(arg1,IMBA_GOTHIK_YELL) then --Normal Aggro Yell IMBA_Gothik_InitSpawnNumbers(); IMBA_Gothik_Start(); IMBA_Gothik:Show(); return true; elseif string.find(arg1,"Teamanare shi rikk mannor rikk lok karkun") then --Aggro Yell in Demonic IMBA_Gothik_InitSpawnNumbers(); IMBA_Gothik_Start(); IMBA_Gothik:Show(); return true; end return false; end function IMBA_Gothik_RegisterEvents() this:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH"); end function IMBA_Gothik_UnregisterEvents() this:UnregisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH"); end function IMBA_Gothik_OnLoad() this:SetBackdropBorderColor(1, 1, 1, 1); this:SetBackdropColor(0.0,0.0,0.0,0.6); IMBA_Gothik_Title:SetText("Gothik Status"); IMBA_Gothik_TitleLive:SetText("Live Spawn Numbers"); IMBA_Gothik_LiveTrainees:SetBarText("Trainees"); IMBA_Gothik_LiveTrainees:SetValText("0"); IMBA_Gothik_LiveDeathknights:SetBarText("Deathknights"); IMBA_Gothik_LiveDeathknights:SetValText("0"); IMBA_Gothik_LiveRiders:SetBarText("Riders"); IMBA_Gothik_LiveRiders:SetValText("0"); IMBA_Gothik_TitleDead:SetText("Undead Spawn Numbers"); IMBA_Gothik_DeadTrainees:SetBarText("Trainees"); IMBA_Gothik_DeadTrainees:SetValText("0"); IMBA_Gothik_DeadDeathknights:SetBarText("Deathknights"); IMBA_Gothik_DeadDeathknights:SetValText("0"); IMBA_Gothik_DeadRiders:SetBarText("Riders"); IMBA_Gothik_DeadRiders:SetValText("0"); IMBA_Gothik_DeadHorses:SetBarText("Horses"); IMBA_Gothik_DeadHorses:SetValText("0"); IMBA_Gothik_TitleTimers:SetText("Timers"); IMBA_Gothik_TimerTrainee.timeLength=20; IMBA_Gothik_TimerTrainee.timeEnd=GetTime()+20; IMBA_Gothik_TimerTrainee.repeating=true; IMBA_Gothik_TimerTrainee.active=false; IMBA_Gothik_TimerTrainee:SetBarText("Trainee Spawn 1"); IMBA_Gothik_TimerTrainee.callback=IMBA_Gothik_TraineeSpawn; IMBA_Gothik_TimerDeathknight.timeLength=25; IMBA_Gothik_TimerDeathknight.timeEnd=GetTime()+25; IMBA_Gothik_TimerDeathknight.repeating=true; IMBA_Gothik_TimerDeathknight.active=false; IMBA_Gothik_TimerDeathknight:SetBarText("Deathknight Spawn 1"); IMBA_Gothik_TimerDeathknight.callback=IMBA_Gothik_DeathknightSpawn; IMBA_Gothik_TimerRider.timeLength=30; IMBA_Gothik_TimerRider.timeEnd=GetTime()+30; IMBA_Gothik_TimerRider.repeating=true; IMBA_Gothik_TimerRider.active=false; IMBA_Gothik_TimerRider:SetBarText("Rider Spawn 1"); IMBA_Gothik_TimerRider.callback=IMBA_Gothik_RiderSpawn; IMBA_Gothik_TimerStage2.timeLength=270; IMBA_Gothik_TimerStage2.timeEnd=GetTime()+270; IMBA_Gothik_TimerStage2.repeating=true; IMBA_Gothik_TimerStage2.active=false; IMBA_Gothik_TimerStage2:SetBarText("Gothik Comes Down"); IMBA_Gothik_InitSpawnNumbers(); IMBA_AddAddon("Gothik the Harverster", "Tracks Spawn Times and Total Adds Alive", IMBA_LOCATIONS_NAXX_DK, nil, "IMBA_Gothik_YellActivator","Foolishly you have sought your own demise", "IMBA_Gothik"); IMBA_AddSyncVar("Gothik the Harverster","KillNumLiveTrainees","MAX"); IMBA_AddSyncVar("Gothik the Harverster","KillNumLiveDeathknights","MAX"); IMBA_AddSyncVar("Gothik the Harverster","KillNumLiveRiders","MAX"); IMBA_AddSyncVar("Gothik the Harverster","KillNumDeadTrainees","MAX"); IMBA_AddSyncVar("Gothik the Harverster","KillNumDeadDeathknights","MAX"); IMBA_AddSyncVar("Gothik the Harverster","KillNumDeadRiders","MAX"); IMBA_AddSyncVar("Gothik the Harverster","KillNumDeadHorses","MAX"); end function IMBA_Gothik_OnEvent(event) if ( event == "CHAT_MSG_COMBAT_HOSTILE_DEATH" ) then if ( arg1 == IMBA_LIVE_TRAINEE_DEATH ) then KillNumLiveTrainees=KillNumLiveTrainees+1; IMBA_Gothik_UpdateBarNumbers(); elseif ( arg1 == IMBA_LIVE_DEATHKNIGHT_DEATH ) then KillNumLiveDeathknights=KillNumLiveDeathknights+1; IMBA_Gothik_UpdateBarNumbers(); elseif ( arg1 == IMBA_LIVE_RIDER_DEATH ) then KillNumLiveRiders=KillNumLiveRiders+1; IMBA_Gothik_UpdateBarNumbers(); elseif ( arg1 == IMBA_DEAD_TRAINEE_DEATH ) then KillNumDeadTrainees=KillNumDeadTrainees+1; IMBA_Gothik_UpdateBarNumbers(); elseif ( arg1 == IMBA_DEAD_DEATHKNIGHT_DEATH ) then KillNumDeadDeathknights=KillNumDeadDeathknights+1; IMBA_Gothik_UpdateBarNumbers(); elseif ( arg1 == IMBA_DEAD_RIDER_DEATH ) then KillNumDeadRiders=KillNumDeadRiders+1; IMBA_Gothik_UpdateBarNumbers(); elseif ( arg1 == IMBA_DEAD_HORSE_DEATH ) then KillNumDeadHorses=KillNumDeadHorses+1; IMBA_Gothik_UpdateBarNumbers(); end end end