Release! Zul'gurub part 1! menu

User Tag List

Results 1 to 11 of 11
  1. #1
    setuxas's Avatar Member
    Reputation
    20
    Join Date
    May 2009
    Posts
    27
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Release! Zul'gurub part 1!

    Well , I am creating a 2.4.3 server , which will be a place for 60s aaaand, I made and got and fixed some scripts. I found Jeklik and Venoxis , but both weren't fully working , spells bugged , etc.

    Jeklik : Turns into a bat , talks , chages during phase one. Phase 2 - summons bat bombers. You will have to create them because they don't exist. I also couldn't find their aoe spell , so I sticked with a 1k hitting spell. They can be attacked , but , you can't see who they attack. They don't move and also spawn fast (30 secs.) Everything else is working on Jeklik. Just copy and paste and enjoy.

    Code:
    function JeklikBat_Summon(Unit, event)
         Unit:SpawnCreature(14965, -12291.9, -1380.18, 145.002, 2.28638, 14, 0)
         Unit:SpawnCreature(14965, -12291.7, -1380.16, 145.002, 2.28638, 14, 0)
         Unit:SpawnCreature(14965, -12291.5, -1380.14, 145.002, 2.28638, 14, 0)
         Unit:SpawnCreature(14965, -12291.3, -1380.12, 145.002, 2.28638, 14, 0)
         Unit:SpawnCreature(14965, -12291.1, -1380.10, 145.002, 2.28638, 14, 0)
         Unit:SpawnCreature(14965, -12290.9, -1380.08, 145.002, 2.28638, 14, 0)
    end
    
    function Jeklik_Summon(Unit, event)
         Unit:SpawnCreature(39000, -12277.846680, -1419.493652, 147.220337, 0.816039, 14, 30000)
         Unit:SpawnCreature(39000, -12254.751953, -1407.263672, 147.220337, 4.376995, 14, 30000)
         Unit:SpawnCreature(39000, -12248.379883, -1432.314697, 147.220337, 2.578432, 14, 30000)
    end
    
    function Jeklik_ShadowWordPain(Unit, event)
         Unit:FullCastSpellOnTarget(23952, Unit:GetRandomPlayer(0))
    end
    
    function Jeklik_MindFlay(Unit, event)
         Unit:FullCastSpellOnTarget(23953, Unit:GetRandomPlayer(0))
    end
    
    function Jeklik_GreatHeal(Unit, event)
         Unit:FullCastSpell(23954)
    end
    
    function Jeklik_MoveCheck(Unit, event)
         local args=getvars(Unit)
         Unit:WipeThreatList()
         Unit:ModifyRunSpeed(8)
         Unit:ModifyWalkSpeed(8)
         Unit:SetCombatTargetingCapable(0)
         Unit:ModThreat(args.chargetarget, 1000)
    end
    
    function Jeklik_Charge(Unit, event)
         setvars(Unit, {chargetarget=Unit:GetRandomPlayer(0)})
         local args=getvars(Unit)
         Unit:FullCastSpellOnTarget(22911, args.chargetarget)
         Unit:SetCombatTargetingCapable(1)
         Unit:ModifyRunSpeed(300)
         Unit:ModifyWalkSpeed(300)
         Unit:MoveTo(args.chargetarget:GetX(), args.chargetarget:GetY(), args.chargetarget:GetZ(), args.chargetarget:GetO())
         Unit:CastSpell(8281)
         Unit:RegisterEvent("Jeklik_MoveCheck", 1000, 1)
    end
    
    function Jeklik_Phase2(Unit, event)
         if Unit:GetHealthPct() < 51 then
         Unit:SendChatMessage(14, 0, "I command you to rain fire down upon these invaders! ")
         Unit:RemoveEvents()
         Unit:SetModel(15219)
         Unit:RegisterEvent("Jeklik_ShadowWordPain", 15000, 0)
         Unit:RegisterEvent("Jeklik_MindFlay", 22000, 0)
         Unit:RegisterEvent("Jeklik_GreatHeal", 46000, 0)
         Unit:RegisterEvent("Jeklik_Summon", 40000, 0)
         end
    end
    
    function Jeklik_FearRepeat(Unit, event)
         Unit:CastSpell(6605)
         Unit:RegisterEvent("Jeklik_Fear", math.random(22000, 35000), 1)
    end
    
    function Jeklik_Fear(Unit, event)
         Unit:CastSpell(6605)
         Unit:RegisterEvent("Jeklik_FearRepeat", math.random(22000, 35000), 1)
    end
    
    function Jeklik_OnCombat(Unit, event)
         Unit:SendChatMessage(14, 0, "Lord Hir'eek, grant me wings of vengeance!")
         Unit:PlaySoundToSet(8417)
         Unit:SetMovementType(768)
         Unit:SetModel(15191)
         Unit:RegisterEvent("JeklikBat_Summon", 60000, 0)
         Unit:RegisterEvent("Jeklik_Phase2",1000,0)
         Unit:RegisterEvent("Jeklik_Fear", math.random(15000, 35000), 1)
         Unit:RegisterEvent("Jeklik_Charge", 28000, 0)
    end
    
    function Jeklik_OnLeaveCombat(Unit, event)
         if Unit:IsAlive() == true then
         Unit:RemoveEvents()
         Unit:SetModel(15191)
         else
         Unit:RemoveEvents()
         end
    end
    
    function Jeklik_OnDied(Unit)
         Unit:RemoveEvents()
         Unit:SendChatMessage(14, 0, "Finally...death! Curse you, Hakkar! Curse you! ")
         Unit:PlaySoundToSet(8422)
    end
    
    
    
    RegisterUnitEvent(14517,1,"Jeklik_OnCombat")
    RegisterUnitEvent(14517,2,"Jeklik_OnLeaveCombat")
    RegisterUnitEvent(14517,4,"Jeklik_OnDied")
    
    --Bloodseeker Bats move AI.
    function BloodseekerBat_PositionCheck(pUnit, event)
         if pUnit:IsCreatureMoving() == true then
    		local tbl = pUnit:GetInRangeFriends()
    		for k,v in pairs(tbl) do
    			if v:GetEntry() == 14517 then
    				pUnit:MoveTo(v:GetX(), v:GetY(), v:GetZ(), v:GetO())
    			else
    				pUnit:RemoveEvents()
    			end
    		end
    	end
    end  
    
    function BloodseekerBat_OnSpawn(pUnit, event)
         local tbl = pUnit:GetInRangeFriends()
         for k,v in pairs(tbl) do
    		if v:GetEntry() == 14517 then
    			pUnit:ModifyWalkSpeed(14)
    			pUnit:SetMovementType(768)
    			pUnit:MoveTo(v:GetX(), v:GetY(), v:GetZ(), v:GetO())
    			pUnit:RegisterEvent("BloodseekerBat_PositionCheck", 2000, 0)
    		end
    	end
    end
    
    RegisterUnitEvent(14965, 18, "BloodseekerBat_OnSpawn")
    
    function BloodseekerBat_OnWipe(pUnit, event)
         if pUnit:IsAlive() == true then
    		pUnit:RemoveEvents()
    		pUnit:Despawn(100, 0)
    	 else
    		pUnit:RemoveEvents()
         end
    end
    
    RegisterUnitEvent(14965, 2, "BloodseekerBat_OnWipe")
    
    --Gurubashi Bat Bomber AI.
    
    function GurubashiBatBomber_OnSpawn(Unit, event)
         Unit:SetCombatTargetingCapable(1)
         Unit:SetCombatCapable(1)
         Unit:RegisterEvent("GurubashiBatBomber_Liquid", 10000, 1)
    end
    
    function GurubashiBatBomber_LiquidRepeat(Unit, event)
         Unit:FullCastSpellOnTarget(23970, Unit:GetRandomPlayer(0))
         Unit:RegisterEvent("GurubashiBatBomber_Liquid", 10000, 1)
    end
    
    function GurubashiBatBomber_Liquid(Unit, event)
         Unit:FullCastSpellOnTarget(23970, Unit:GetRandomPlayer(0))
         Unit:RegisterEvent("GurubashiBatBomber_LiquidRepeat", 10000, 1)
    end
    
    
    RegisterUnitEvent(39000, 18, "GurubashiBatBomber_OnSpawn")
    
    function GurubashiBatBomber_OnWipe(Unit, event)
         if Unit:IsAlive() == true then
    		Unit:RemoveEvents()
    		Unit:Despawn(100, 0)
    	 else
    		Unit:RemoveEvents()
         end
    end
    
    RegisterUnitEvent(39000, 2, "GurubashiBatBomber_OnWipe")
    I found venoxis too , he had bugs too. First parasitic serpent didn't exist at all (create it if it doesn't exist) , second the serpent couldn't cast the spell it does because of areatrigger missing. and third is that his poison cloud wasn't working. I replaced the cloud with acid breath , which opposes the same threat as the cloud. Copy and enjoy.

    Code:
    function Venoxis_HolyNovaRepeat(pUnit, event)
         pUnit:CastSpell(23858)
         pUnit:RegisterEvent("Venoxis_HolyNova", math.random(26000, 31000), 1)
    end
    
    function Venoxis_HolyNova(pUnit, event)
         pUnit:CastSpell(23858)
         pUnit:RegisterEvent("Venoxis_HolyNovaRepeat", math.random(26000, 31000), 1)
    end
    
    function Venoxis_HolyFireRepeat(pUnit, event)
         pUnit:FullCastSpellOnTarget(23860, pUnit:GetMainTank())
         pUnit:RegisterEvent("Venoxis_HolyFire", math.random(18000, 22000), 1)
    end
    
    function Venoxis_HolyFire(pUnit, event)
         pUnit:FullCastSpellOnTarget(23860, pUnit:GetMainTank())
         pUnit:RegisterEvent("Venoxis_HolyFireRepeat", math.random(18000, 22000), 1)
    end
    
    function Venoxis_Serpent(pUnit, event)
         local serpenttarget=pUnit:GetRandomPlayer(0);
         pUnit:SpawnCreature(14884, serpenttarget:GetX(), serpenttarget:GetY(), serpenttarget:GetZ(), serpenttarget:GetO(), 14, 0)
    end
    
    function Venoxis_Renew(pUnit, event)
         pUnit:CastSpell(23895)
    end
    
    function Venoxis_PoisonCloud(pUnit, event)
         pUnit:CastSpell(24839)
    end
    
    function Venoxis_VenomSpitRepeat(pUnit, event)
         pUnit:FullCastSpellOnTarget(23862, pUnit:GetRandomPlayer(0))
         pUnit:RegisterEvent("Venoxis_VenomSpit", math.random(14000, 18000), 1)
    end
    
    function Venoxis_VenomSpit(pUnit, event)
         pUnit:FullCastSpellOnTarget(23862, pUnit:GetRandomPlayer(0))
         pUnit:RegisterEvent("Venoxis_VenomSpitRepeat", math.random(14000, 18000), 1)
    end
    
    function Venoxis_HolyWrathRepeat(pUnit, event)
         pUnit:FullCastSpellOnTarget(23979, pUnit:GetRandomPlayer(0))
         pUnit:RegisterEvent("Venoxis_HolyWrath", math.random(35000, 37500), 1)
    end
    
    function Venoxis_HolyWrath(pUnit, event)
         pUnit:FullCastSpellOnTarget(23979, pUnit:GetRandomPlayer(0))
         pUnit:RegisterEvent("Venoxis_HolyWrathRepeat", math.random(35000, 37500), 1)
    end
    
    function Venoxis_Phasetwo(pUnit, event)
         if pUnit:GetHealthPct() < 51 then
    	     pUnit:RemoveEvents()
    	     pUnit:SendChatMessage(14, 0, "Let the coils of hate unfurl!")
    	     pUnit:PlaySoundToSet(8421)
    	     pUnit:SetModel(15102)
    	     pUnit:CastSpell(23849)
    	     pUnit:CastSpell(24839)
    	     pUnit:RegisterEvent("Venoxis_PoisonCloud", 22000, 0)
    	     pUnit:RegisterEvent("Venoxis_VenomSpit", math.random(14000, 18000), 1)
         end
    end
    
    function Venoxis_OnEnterCombat(pUnit, event)
         pUnit:RegisterEvent("Venoxis_HolyNova", math.random(26000, 31000), 1)
         pUnit:RegisterEvent("Venoxis_HolyFire", math.random(18000, 22000), 1)
         pUnit:RegisterEvent("Venoxis_HolyWrath", math.random(35000, 37500), 1)
         pUnit:RegisterEvent("Venoxis_Serpent", 45000, 0)
         pUnit:RegisterEvent("Venoxis_Renew", 50000, 0)
         pUnit:RegisterEvent("Venoxis_Phasetwo", 1000, 0)
    end
    
    RegisterUnitEvent(14507, 1, "Venoxis_OnEnterCombat")
    
    function Venoxis_OnWipe(pUnit, event)
         if pUnit:IsAlive() == true then
    	     pUnit:SetModel(15217)
    	     pUnit:RemoveEvents()
         else
         	pUnit:SendChatMessage(14, 0, "Ssserenity..at lassst!")
    	pUnit:PlaySoundToSet(8415)
         end
    end
    
    RegisterUnitEvent(14507, 2, "Venoxis_OnWipe")
    
    function Venoxis_OnDie(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(14507, 4, "Venoxis_OnDie")
    
    --Parasitic Serpent AI
    function Serpent_OneTimeBite(pUnit, event)
         pUnit:FullCastSpellOnTarget(23865, pUnit:GetClosestPlayer(0))
    end
    
    function Serpent_Bite(pUnit, event)
         pUnit:FullCastSpellOnTarget(23865, pUnit:GetClosestPlayer(0))
    end
    
    function Serpent_OnEnterCombat(pUnit, event)
         pUnit:RegisterEvent("Serpent_OneTimeBite", 1000, 1)
         pUnit:RegisterEvent("Serpent_Bite", 10000, 0)
    end
    
    RegisterUnitEvent(14884, 1, "Serpent_OnEnterCombat")
    
    function Serpent_OnWipe(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(14884, 2, "Serpent_OnWipe")
    
    function Serpent_OnDie(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(14884, 4, "Serpent_OnDie")
    
    --Razzashi Cobra AI--
    function RazzashiCobra_PositionCheck(pUnit, event)
         if pUnit:IsInCombat() == true then
    		local tbl = pUnit:GetInRangeFriends()
    		for k,v in pairs(tbl) do
    			if v:GetEntry() == 14507 then
    				pUnit:MoveTo(v:GetX(), v:GetY(), v:GetZ(), v:GetO())
    			else
    				pUnit:RemoveEvents()
    			end
    		end
    	end
    end  
    
    function RazzashiCobra_OnSpawn(pUnit, event)
         local tbl = pUnit:GetInRangeFriends()
         for k,v in pairs(tbl) do
    		if v:GetEntry() == 14507 then
    			pUnit:ModifyWalkSpeed(14)
    			pUnit:SetMovementType(768)
    			pUnit:MoveTo(v:GetX(), v:GetY(), v:GetZ(), v:GetO())
    			pUnit:RegisterEvent("RazzashiCobra_PositionCheck", 2000, 0)
    		end
    	end
    end
    
    RegisterUnitEvent(11373, 18, "RazzashiCobra_OnSpawn")
    
    function RazzashiCobra_OnWipe(pUnit, event)
         if pUnit:IsAlive() == true then
    		pUnit:RemoveEvents()
    	 else
    		pUnit:RemoveEvents()
         end
    end
    
    RegisterUnitEvent(11373, 2, "RazzashiCobra_OnWipe")
    Mar'li.. I scripted her myself , along with her trash (The one that already is , not the one she spawns). The trash had probs. First and last is that Venombrood intoxicating poison didn't work , so I switched it with acid bolt and a stun. Here's her script. Copy and enjoy.

    Code:
    --Mar'li--
    
    function Marli_OnCombat(Unit, Event)
    	Unit:SendChatMessage(14, 0, "Draw me to your web , mistress Shadra , unleash your venom!")
    	Unit:PlaySoundToSet(8418)
    	Unit:RegisterEvent("Marli_Troll1", 1000, 1)
    end
    
    function Marli_Adds(Unit, event)
    	Unit:SendChatMessage(14, 0, "Aid me my brood!")
    	Unit:CastSpell(24083)  
    	Unit:SpawnCreature(15041, -12341.748047, -1605.060059, 133.358185, 5.437986, 14, 0)
    	Unit:SpawnCreature(15041, -12312.323242, -1594.350342, 132.932983, 3.863262, 14, 0)
    	Unit:SpawnCreature(15041, -12307.397461, -1634.042114, 131.088486, 3.011893, 14, 0)
    	Unit:SpawnCreature(15041, -12326.627930, -1567.634644, 132.674591, 4.689337, 14, 0)
    end
    
    function Marli_PoisonVo(Unit, Event)
    	Unit:CastSpell(24099)
    end
    
    function Marli_Drain(Unit, Event)
    	Unit:FullCastSpellOnTarget(24300, Unit:GetRandomPlayer(0))
    end
    
    function Marli_Troll1(Unit, Event)
    	Unit:RemoveEvents()
    	Unit:RegisterEvent("Marli_Adds", 20000, 3)
    	Unit:RegisterEvent("Marli_Drain", math.random(18000, 23000), 3)
    	Unit:RegisterEvent("Marli_PoisonVo", math.random(27000, 32000), 2)
    	Unit:RegisterEvent("Marli_Spider", 60000, 1)
    end
    
    function MarliS_Webs(Unit, Event)
    	Unit:FullCastSpellOnTarget(24110, Unit:GetRandomPlayer(1))
    end
    
    function MarliS_MoveCheck(Unit, event)
         local args=getvars(Unit)
         Unit:WipeThreatList()
         Unit:ModifyRunSpeed(8)
         Unit:ModifyWalkSpeed(8)
         Unit:SetCombatTargetingCapable(0)
         Unit:ModThreat(args.chargetarget, 1000)
    end
    
    function MarliS_Charge(Unit, event)
         setvars(Unit, {chargetarget=Unit:GetRandomPlayer(7)})
         local args=getvars(Unit)
         Unit:FullCastSpellOnTarget(22911, args.chargetarget)
         Unit:SetCombatTargetingCapable(1)
         Unit:ModifyRunSpeed(300)
         Unit:ModifyWalkSpeed(300)
         Unit:MoveTo(args.chargetarget:GetX(), args.chargetarget:GetY(), args.chargetarget:GetZ(), args.chargetarget:GetO())
         Unit:RegisterEvent("MarliS_MoveCheck", 1000, 1)
    end
    
    function MarliS_Thrash(Unit, Event)
    	Unit:CastSpell(3391)
    end
    
    function MarliS_PoisonCo(Unit, Event)
    	Unit:FullCastSpellOnTarget(24111, Unit:GetMainTank(0))
    end
    
    function MarliS_PoisonSo(Unit, Event)
    	Unit:FullCastSpellOnTarget(24112, Unit:GetRandomPlayer(1))
    end
    
    function Marli_Spider(Unit, Event)
    	Unit:RemoveEvents()
    	Unit:SetModel(15226)
    	Unit:CastSpell(24084)
    	Unit:SendChatMessage(14, 0, "Shadra, make of me your avatar!")
    	Unit:RegisterEvent("MarliS_Webs", 1000, 20)
    	Unit:RegisterEvent("MarliS_Charge", 20000, 3)
    	Unit:RegisterEvent("MarliS_Thrash", 20000, 3)
    	Unit:RegisterEvent("MarliS_PoisonCo", math.random(27000, 32000), 2)
    	Unit:RegisterEvent("MarliS_PoisonSo", math.random(17000, 20000), 3)
    	Unit:RegisterEvent("Marli_Troll", 60000, 1)
    end
    
    function Marli_Troll(Unit, Event)
    	Unit:RemoveEvents()
    	Unit:SetModel(15220)
    	Unit:SendChatMessage(14, 0, "The brood shall not fall!")
    	Unit:RegisterEvent("Marli_Adds", 15000, 4)
    	Unit:RegisterEvent("Marli_Drain", math.random(18000, 23000), 3)
    	Unit:RegisterEvent("Marli_PoisonVo", math.random(27000, 32000), 2)
    	Unit:RegisterEvent("Marli_Spider", 60000, 1)
    end
    
    function Marli_OnLeaveCombat(Unit, event)
         if Unit:IsAlive() == true then
         Unit:RemoveEvents()
         Unit:SetModel(15220)
         else
         Unit:RemoveEvents()
         end
    end
    
    function Marli_OnDied(Unit)
         Unit:RemoveEvents()
         Unit:SendChatMessage(14, 0, "Bless you, mortals, for this release...Hakkar controls me no longer. ")
         Unit:PlaySoundToSet(8423)
    end
    
    
    RegisterUnitEvent(14510,1,"Marli_OnCombat")
    RegisterUnitEvent(14510,2,"Marli_OnLeaveCombat")
    RegisterUnitEvent(14510,4,"Marli_OnDied")
    
    --Mar'li spawn AI--
    
    function SpawnofMarli_PositionCheck(pUnit, event)
         if pUnit:IsCreatureMoving() == true then
    		local tbl = pUnit:GetInRangeFriends()
    		for k,v in pairs(tbl) do
    			if v:GetEntry() == 14510 then
    				pUnit:MoveTo(v:GetX(), v:GetY(), v:GetZ(), v:GetO())
    			else
    				pUnit:RemoveEvents()
    			end
    		end
    	end
    end  
    
    function SpawnofMarli_OnSpawn(pUnit, event)
         local tbl = pUnit:GetInRangeFriends()
         for k,v in pairs(tbl) do
    		if v:GetEntry() == 14510 then
    			pUnit:ModifyWalkSpeed(14)
    			pUnit:MoveTo(v:GetX(), v:GetY(), v:GetZ(), v:GetO())
    			pUnit:RegisterEvent("SpawnofMarli_PositionCheck", 2000, 0)
    		end
    	end
    end
    
    RegisterUnitEvent(15041, 18, "SpawnofMarli_OnSpawn")
    
    function SpawnofMarli_OnWipe(pUnit, event)
         if pUnit:IsAlive() == true then
    		pUnit:RemoveEvents()
    		pUnit:Despawn(100, 0)
    	 else
    		pUnit:RemoveEvents()
         end
    end
    
    RegisterUnitEvent(15041, 2, "SpawnofMarli_OnWipe")
    
    --Razzashi Broodwidow Spells--
    
    function Broodwidow_OnCombat(pUnit, Event)
    	pUnit:RegisterEvent("Broodwidow_Webspin", math.random(8000, 13000), 0)
    end
    
    function Broodwidow_Webspin(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(24600, pUnit:GetMainTank(0))
    end
    
    function Broodwidow_OnDie(pUnit, Event)
    	x = pUnit:GetX()
    	y = pUnit:GetY()
    	z = pUnit:GetZ()
    	o = pUnit:GetO()
    	pUnit:SpawnCreature(14880, x, y, z, o, 14, 0)
    	pUnit:SpawnCreature(14880, x, y, z, o, 14, 0)
    	pUnit:SpawnCreature(14880, x, y, z, o, 14, 0)
    	pUnit:RemoveEvents()
    end
    
    
    function Broodwidow_OnLC(pUnit, event)
    	pUnit:RemoveEvents()
    end
    
    
    RegisterUnitEvent(11370, 1, "Broodwidow_OnCombat")
    RegisterUnitEvent(11370, 4, "Broodwidow_OnDie")
    RegisterUnitEvent(11370, 2, "Broodwidow_OnLC")
    
    --Razzashi Venombrood Spells--
    
    function Venombrood_OnCombat(pUnit, Event)
    	pUnit:RegisterEvent("Venombrood_Intoxicating", math.random(9000, 12000), 0)
    end
    
    function Venombrood_Intoxicating(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(44477, pUnit:GetRandomPlayer(1))
    	pUnit:FullCastSpellOnTarget(31046, pUnit:GetRandomPlayer(1))
    end
    
    function Venombrood_OnDie(pUnit, Event)
    	pUnit:RemoveEvents()
    end
    
    function Venombrood_OnLC(pUnit, event)
    	pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(14532, 1, "Venombrood_OnCombat")
    RegisterUnitEvent(14532, 4, "Venombrood_OnDie")
    RegisterUnitEvent(14532, 2, "Venombrood_OnLC")
    
    --Hakkari Shadowcaster Spells--
    
    function HakkariSC_OnCombat(pUnit, Event)
    	pUnit:RegisterEvent("HakkariSC_Talk", 1000, 1)
    	pUnit:RegisterEvent("HakkariSC_ManaB", math.random(8000, 10000), 0)
    	pUnit:RegisterEvent("HakkariSC_ShadowB", math.random(5000, 7000), 0)
    	pUnit:RegisterEvent("HakkariSC_ShadowBV", math.random(8000, 11000), 0)
    end
    
    function HakkariSC_Talk(pUnit, Event)
    Choice=math.random(1, 2)
    if Choice==1 then
    	pUnit:SendChatMessage(12, 0, "How dare you interfere?!")
    if Choice==2 then
    	pUnit:SendChatMessage(12, 0, "We can't be stopped!")
    end
    end
    end
    
    function HakkariSC_ManaB(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(22947, pUnit:GetRandomPlayer(4))
    	if pUnit:GetRandomPlayer(4) == nil then
    end
    end
    
    function HakkariSC_ShadowB(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(15232, pUnit:GetMainTank(0))
    end
    
    function HakkariSC_ShadowBV(pUnit, Event)
    	pUnit:CastSpell(20741)
    end
    
    function HakkariSC_OnDie(pUnit, Event)
    	pUnit:RemoveEvents()
    end
    
    function HakkariSC_OnLC(pUnit, event)
    	pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(11338, 1, "HakkariSC_OnCombat")
    RegisterUnitEvent(11338, 4, "HakkariSC_OnDie")
    RegisterUnitEvent(11338, 2, "HakkariSC_OnLC")
    P.S. The Hakkari Shadowcasters now say something , like many of the trolls do. I don't really know if they say it on retail , but hey , it's fun. Some more trash.

    Code:
    --Gurubashi Axe Thrower
    function AxeThrower_Throw(pUnit, event)
         pUnit:FullCastSpellOnTarget(22887, pUnit:GetRandomPlayer(0))
    end
    
    function AxeThrower_AxeFlurry(pUnit, event)
         pUnit:FullCastSpell(24018)
         pUnit:RegisterEvent("AxeThrower_AxeFlurry", math.random(14000, 20000), 1)
         pUnit:RegisterEvent("AxeThrower_Throw", 2000, 4)
    end
    
    function AxeThrower_OnEnterCombat(pUnit, event)
         pUnit:RegisterEvent("AxeThrower_AxeFlurry", math.random(14000, 20000), 1)
    end
    
    RegisterUnitEvent(11350, 1, "AxeThrower_OnEnterCombat")
    
    function AxeThrower_OnWipe(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(11350, 2, "AxeThrower_OnWipe")
    
    
    --Gurubashi Bat Rider
    function BatRider_Bite(pUnit, event)
         pUnit:FullCastSpellOnTarget(16128, pUnit:GetMainTank(0))
         pUnit:RegisterEvent("BatRider_Bite", math.random(13000, 20000), 1)
    end
    
    function BatRider_Explode(pUnit, event)
         if pUnit:GetHealthPct() <= 40 then
         pUnit:CastSpell(24024)
         pUnit:Kill(pUnit)
         pUnit:RemoveEvents()
         end
    end
    
    function BatRider_OnEnterCombat(pUnit, event)
         pUnit:RegisterEvent("BatRider_Bite", math.random(13000, 20000), 1)
         pUnit:RegisterEvent("BatRider_Explode", 1000, 0)
    end
    
    RegisterUnitEvent(14750, 1, "BatRider_OnEnterCombat")
    
    function BatRider_OnWipe(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(14750, 2, "BatRider_OnWipe")
    
    
    --Gurubashi Berserker
    function Berserker_Enrage(pUnit, event)
         if pUnit:GetHealthPct() <= 50 and enrage == nil then
         enrage=1;
         pUnit:CastSpell(8269)
         end
    end
    
    function Berserker_Thunderclap(pUnit, event)
         pUnit:FullCastSpell(15588)
    end
    
    function Berserker_KnockAway(pUnit, event)
         local maintank=pUnit:GetMainTank();
         pUnit:FullCastSpellOnTarget(11130, maintank)
         --local threatcalc=pUnit:GetThreat(maintank) / (4);
         --local playerthreat=threatcalc * (3);
         --pUnit:ModThreat(maintank, playerthreat)
    end
    
    function Berserker_Fear(pUnit, event)
         local tbl = pUnit:GetInRangePlayers()
         for k,v in pairs(tbl) do
    	if pUnit:GetDistance(v) <= 10 then
    		pUnit:FullCastSpell(30584)
                    pUnit:ModThreat(v, 0)
                    pUnit:ModThreat(pUnit:GetRandomPlayer(0), 100)
    	end
         end
    end
    
    function Berserker_OnEnterCombat(pUnit, event)
         pUnit:RegisterEvent("Berserker_Enrage", 2000, 0)
         pUnit:RegisterEvent("Berserker_Thunderclap", 17000, 0)
         pUnit:RegisterEvent("Berserker_KnockAway", 21000, 0)
         pUnit:RegisterEvent("Berserker_Fear", 24000, 0)
    end
    
    RegisterUnitEvent(11352, 1, "Berserker_OnEnterCombat")
    
    function Berserker_OnWipe(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(11352, 2, "Berserker_OnWipe")
    
    
    --Gurubashi Blooddrinker
    function Blooddrinker_BloodLeech(pUnit, event)
         pUnit:FullCastSpell(24437)
         pUnit:RegisterEvent("Blooddrinker_BloodLeech", math.random(16000, 19000), 1)
    end
    
    function Blooddrinker_DrainLife(pUnit, event)
         pUnit:FullCastSpellOnTarget(24435, pUnit:GetRandomPlayer(0))
    end
    
    function Blooddrinker_OnEnterCombat(pUnit, event)
         pUnit:RegisterEvent("Blooddrinker_BloodLeech", math.random(16000, 19000), 1)
         pUnit:RegisterEvent("Blooddrinker_DrainLife", 25000, 0)
    end
    
    RegisterUnitEvent(11353, 1, "Blooddrinker_BloodLeech")
    
    
    --Gurubashi Headhunter
    function Headhunter_Impale(pUnit, event)
         pUnit:FullCastSpellOnTarget(24049, pUnit:GetRandomPlayer(0))
         pUnit:RegisterEvent("Headhunter_Impale", math.random(14000, 17000), 1)
    end
    
    function Headhunter_MortalStrike(pUnit, event)
         pUnit:FullCastSpellOnTarget(15708, pUnit:GetMainTank())
         pUnit:RegisterEvent("Headhunter_MortalStrike", math.random(18000, 22000), 1)
    end
    
    function Headhunter_WhirlingTrip(pUnit, event)
         pUnit:FullCastSpell(24048)
         pUnit:RegisterEvent("Headhunter_WhirlingTrip", math.random(9000, 14000), 1)
    end
    
    function Headhunter_OnEnterCombat(pUnit, event)
         pUnit:SendChatMessage(12, 0, "My weapon be thirsty!")
         pUnit:RegisterEvent("Headhunter_Impale", math.random(14000, 17000), 1)
         pUnit:RegisterEvent("Headhunter_MortalStrike", math.random(18000, 22000), 1)
         pUnit:RegisterEvent("Headhunter_WhirlingTrip", math.random(9000, 14000), 1)
    end
    
    RegisterUnitEvent(11351, 1, "Headhunter_OnEnterCombat")
    
    function Headhunter_OnWipe(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(11351, 2, "Headhunter_OnWipe")
    
    
    --Hakkari Blood Priest
    
    function BloodPriest_DrainLife(pUnit, event)
         pUnit:FullCastSpellOnTarget(24618, pUnit:GetRandomPlayer(0))
    end
    
    function BloodPriest_OnEnterCombat(pUnit, event)
         pUnit:RegisterEvent("BloodPriest_DrainLife", 17000, 0)
    end
    
    RegisterUnitEvent(11340, 1, "BloodPriest_OnEnterCombat")
    
    function BloodPriest_OnWipe(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(11340, 2,  "BloodPriest_OnWipe")
    
    
    --Hakkari Priest
    function HakkariPriest_Heal(pUnit, event)
         local tbl=pUnit:GetInRangeFriends();
         for k,v in pairs(tbl) do
         mobs={}
         table.insert(mobs, v)
         local mob=math.random(1, table.getn(mobs))
         pUnit:FullCastSpellOnTarget(22883, mobs[mob])
         end
    end
    
    function HakkariPriest_AntiMagicShield(pUnit, event)
         pUnit:CastSpell(24021)
    end
    
    function HakkariPriest_Fear(pUnit, event)
         pUnit:FullCastSpell(13704)
    end
    
    function HakkariPriest_OnEnterCombat(pUnit, event)
         pUnit:SendChatMessage(12, 0, "Your skull gonna decorate our ritual altars!")
         pUnit:RegisterEvent("HakkariPriest_Heal", 7000, 0)
         pUnit:RegisterEvent("HakkariPriest_AntiMagicShield", 18000, 0)
         pUnit:RegisterEvent("HakkariPriest_Fear", 22000, 0)
    end
    
    RegisterUnitEvent(11830, 1, "HakkariPriest_OnEnterCombat")
    
    function HakkariPriest_OnWipe(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(11830, 2, "HakkariPriest_OnWipe")
    
    --Hakkari Witch Doctor
    function WitchDoctor_Hex(pUnit, event)
         pUnit:FullCastSpellOnTarget(24053, pUnit:GetRandomPlayer(0))
         pUnit:RegisterEvent("WitchDoctor_Hex", math.random(14000, 18000), 1)
    end
    
    function WitchDoctor_ShadowShock(pUnit, event)
         pUnit:FullCastSpellOnTarget(17289, pUnit:GetRandomPlayer(0))
         pUnit:RegisterEvent("WitchDoctor_ShadowShock", math.random(10000, 13000), 1)
    end
    
    function WitchDoctor_Shrink(pUnit, event)
         pUnit:FullCastSpell(24054)
    end
    
    function WitchDoctor_OnEnterCombat(pUnit, event)
         pUnit:RegisterEvent("WitchDoctor_Hex", math.random(14000, 18000), 1)
         pUnit:RegisterEvent("WitchDoctor_ShadowShock", math.random(10000, 13000), 1)
         pUnit:RegisterEvent("WitchDoctor_Shrink", 21000, 0)
    end
    
    RegisterUnitEvent(11831, 1, "WitchDoctor_OnEnterCombat")
    
    function WitchDoctor_OnWipe(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(11831, 2, "WitchDoctor_OnWipe")
    
    
    --Razzashi Adder
    function Adder_VenomSpit(pUnit, event)
         pUnit:FullCastSpellOnTarget(24011, pUnit:GetMainTank(0))
         pUnit:RegisterEvent("Adder_VenomSpit", math.random(16000, 20000), 1)
    end
    
    function Adder_OnEnterCombat(pUnit, event)
         pUnit:RegisterEvent("Adder_VenomSpit", math.random(16000, 20000), 1)
    end
    
    RegisterUnitEvent(11372, 1, "Adder_OnEnterCombat")
    
    function Adder_OnWipe(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(11372, 2, "Adder_OnWipe")
    
    
    --Razzashi Cobra
    function Cobra_Poison(pUnit, event)
         pUnit:FullCastSpellOnTarget(24097, pUnit:GetMainTank(0))
         pUnit:RegisterEvent("Cobra_Poison", math.random(8000, 12000), 1)
    end
    
    function Cobra_OnEnterCombat(pUnit, event)
         pUnit:RegisterEvent("Cobra_Poison", math.random(8000, 12000), 1)
    end
    
    RegisterUnitEvent(11373, 1, "Cobra_OnEnterCombat")
    
    function Cobra_OnWipe(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(11373, 2, "Cobra_OnWipe")
    
    
    --Mad Servant
    function MadServant_Fireball(pUnit, event)
         pUnit:FullCastSpellOnTarget(24611, pUnit:GetRandomPlayer(0))
         pUnit:RegisterEvent("MadServant_Fireball", math.random(9000, 12000), 1)
    end
    
    function MadServant_Flamestrike(pUnit, event)
         local player=pUnit:GetRandomPlayer(0);
         pUnit:CastSpellAoF(24612, player:GetX(), player:GetY(), player:GetZ())
         pUnit:RegisterEvent("MadServant_Flamestrike", math.random(14000, 16000), 1)
    end
    
    function MadServant_OnEnterCombat(pUnit, event)
         pUnit:RegisterEvent("MadServant_Fireball", math.random(9000, 12000), 1)
         pUnit:RegisterEvent("MadServant_Flamestrike", math.random(14000, 16000), 1)
    end
    
    RegisterUnitEvent(15111, 1, "MadServant_OnEnterCombat")
    
    function MadServant_OnWipe(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(15111, 2, "MadServant_OnWipe")
    
    
    --Voodo Slave
    function Slave_LightningBlast(pUnit, event)
         pUnit:FullCastSpellOnTarget(43996, pUnit:GetMainTank())
         pUnit:RegisterEvent("Slave_LightningBlast", math.random(6000, 8000), 1)
    end
    
    function Slave_OnEnterCombat(pUnit, event)
         pUnit:RegisterEvent("Slave_LightningBlast", math.random(6000, 8000), 1)
    end
    
    RegisterUnitEvent(14883, 1, "Slave_OnEnterCombat")
    
    function Slave_OnWipe(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(14883, 2, "Slave_OnWipe")
    
    
    --Soulflayer
    function Soulflayer_SoulTap(pUnit, event)
         pUnit:FullCastSpellOnTarget(24619, pUnit:GetRandomPlayer(7))
         pUnit:RegisterEvent("Soulflayer_SoulTap", math.random(18000, 22000), 1)
    end
    
    function Soulflayer_Fear(pUnit, event)
         pUnit:FullCastSpellOnTarget(22678, pUnit:GetRandomPlayer(0))
         pUnit:RegisterEvent("Soulflayer_Fear", math.random(12000, 15000), 1)
    end
    
    function Soulflayer_OnEnterCombat(pUnit, event)
         pUnit:RegisterEvent("Soulflayer_SoulTap", math.random(18000, 22000), 1)
         pUnit:RegisterEvent("Soulflayer_Fear", math.random(12000, 15000), 1)
    end
    
    RegisterUnitEvent(11359, 1, "Soulflayer_OnEnterCombat")
    
    function Soulflayer_OnWipe(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(11359, 2, "Soulflayer_OnWipe")
    
    
    --Son of Hakkar
    function SonOfHakkar_Knockdown(pUnit, event)
         pUnit:FullCastSpellOnTarget(16790, pUnit:GetMainTank())
         pUnit:RegisterEvent("SonOfHakkar_Knockdown", math.random(8000, 10000), 1)
    end
    
    function SonOfHakkar_OnEnterCombat(pUnit, event)
         pUnit:RegisterEvent("SonOfHakkar_Knockdown", math.random(8000, 10000), 1)
    end
    
    RegisterUnitEvent(11357, 1, "SonOfHakkar_OnEnterCombat")
    
    function SonOfHakkar_OnWipe(pUnit, event)
         pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(11357, 2, "SonOfHakkar_OnWipe")
    
    function SonOfHakkar_OnDie(pUnit, event)
         pUnit:RemoveEvents()
         pUnit:CastSpell(24321)
    end
    
    RegisterUnitEvent(11357, 4, "SonOfHakkar_OnDie")
    This is the first part. The second part will include Bloodlord , Thekal , Ghaz'ranka and Edge of madness. Setuxas.

    Release! Zul'gurub part 1!
  2. #2
    stoneharry's Avatar Moderator Harry


    Reputation
    1618
    Join Date
    Sep 2007
    Posts
    4,564
    Thanks G/R
    151/150
    Trade Feedback
    0 (0%)
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Your contributing blizzlike content that nobody has bothered doing before and nobody comments? Good work, +5 Rep.

  3. #3
    sasoritail's Avatar Contributor
    Reputation
    161
    Join Date
    Sep 2008
    Posts
    655
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    This is great! Tested on an ArcEmu 2.4.3 Repack!
    +Rep x2
    Last edited by sasoritail; 10-28-2009 at 08:17 AM.
    It's been a while

  4. #4
    setuxas's Avatar Member
    Reputation
    20
    Join Date
    May 2009
    Posts
    27
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Release! Zul'gurub part 2!

    Ok , so I am back , and scripted the 4 bosses I said I would. (Thekal, Edge of Madness, Gahz'ranka and Mandokir)

    Mandokir:

    I saw some infixable bugs in him like leveling when killing. So , ok. When you pull him after 3 secs he spawns his raptor (so it wouldn't be abused). His raptor cast what he should , but 2 more spells. They are very weak. Mandokir himself had a spell called Threatening gaze. The spell was fully bugged , so I stook with him charging randomly. He says "I saw that!" and charged at a random player. I couldn't fix the spirits , but the boss turned out to be the ultimate fun boss. He also says something when aggroed , as it should be.

    Code:
    function Bloodlord_Execute(Unit, Event)
    	Unit:FullCastSpellOnTarget(7160, Unit:GetMainTank())
    	Unit:RegisterEvent("Bloodlord_ExecuteRepeat", math.random(25000, 27000), 1)
    	if Unit:GetMainTank() == nil then
    end
    end
    
    function Bloodlord_ExecuteRepeat(Unit, Event)
    	Unit:FullCastSpellOnTarget(7160, Unit:GetMainTank())
    	Unit:RegisterEvent("Bloodlord_Execute", math.random(25000, 27000), 1)
    	if Unit:GetMainTank() == nil then
    end
    end
    
    function Bloodlord_Mortal(Unit, Event)
    	Unit:FullCastSpellOnTarget(16858, Unit:GetMainTank())
    	Unit:RegisterEvent("Bloodlord_MortalRepeat", math.random(25000, 28000), 1)
    	if Unit:GetMainTank() == nil then
    end
    end
    
    function Bloodlord_MortalRepeat(Unit, Event)
    	Unit:FullCastSpellOnTarget(16858, Unit:GetMainTank())
    	Unit:RegisterEvent("Bloodlord_Mortal", math.random(25000, 28000), 1)
    	if Unit:GetMainTank() == nil then
    end
    end
    
    function Bloodlord_Summon2(Unit, Event)
    	local x = Unit:GetX()
    	local y = Unit:GetY()
    	local z = Unit:GetZ()
    	local o = Unit:GetO()
    	Unit:SpawnCreature(14988, x, y, z, o, 14, 0)
    end
    
    function Bloodlord_Whirl(Unit, Event)
    	Unit:CastSpell(15589)
    	Unit:RegisterEvent("Bloodlord_WhirlRepeat", 17000, 1)
    end
    
    function Bloodlord_WhirlRepeat(Unit, Event)
    	Unit:CastSpell(15589)
    	Unit:RegisterEvent("Bloodlord_Whirl", 17000, 1)
    end
    
    function Bloodlord_SmallWhirl(Unit, Event)
    	Unit:CastSpell(13736)
    	Unit:RegisterEvent("Bloodlord_SmallWhirlRepeat", math.random(14000, 16000), 1)
    end
    
    function Bloodlord_SmallWhirlRepeat(Unit, Event)
    	Unit:CastSpell(13736)
    	Unit:RegisterEvent("Bloodlord_SmallWhirl", math.random(14000, 16000), 1)
    end
    
    function Bloodlord_WatchRepeat(Unit, Player, Event)
    	setvars(Unit, {chargetarget=Unit:GetRandomPlayer(0)})
    	Unit:SendChatMessage(14, 0, "I saw that!")
    	local args=getvars(Unit)
            Unit:FullCastSpellOnTarget(24408, args.chargetarget)
            Unit:SetCombatTargetingCapable(1)
            Unit:ModifyRunSpeed(300)
            Unit:ModifyWalkSpeed(300)
            Unit:MoveTo(args.chargetarget:GetX(), args.chargetarget:GetY(), args.chargetarget:GetZ(), args.chargetarget:GetO())
            Unit:RegisterEvent("Bloodlord_MoveCheck", 1000, 1)
    end
    
    function Bloodlord_MoveCheck(Unit, event)
         local args=getvars(Unit)
         Unit:WipeThreatList()
         Unit:ModifyRunSpeed(8)
         Unit:ModifyWalkSpeed(8)
         Unit:SetCombatTargetingCapable(0)
         Unit:ModThreat(args.chargetarget, 1000)
    end
    
    
    function Bloodlord_OnCombat(Unit, Event)
    	Unit:SendChatMessage(14, 0, "I'll feed your souls to Hakkar himself!")
    	Unit:PlaySoundToSet(8413)
    	Unit:RegisterEvent("Bloodlord_Execute", math.random(25000, 27000), 1)
    	Unit:RegisterEvent("Bloodlord_WatchRepeat", math.random(18000, 25000), 0)
    	Unit:RegisterEvent("Bloodlord_Mortal", math.random(25000, 28000), 1)
    	Unit:RegisterEvent("Bloodlord_Summon2", 3000, 1)
    	Unit:RegisterEvent("Bloodlord_SmallWhirl", math.random(14000, 16000), 1)
    	Unit:RegisterEvent("Bloodlord_Whirl", 17000, 1)
    end
    
    function Bloodlord_OnLeaveCombat(Unit, Event)
    	Unit:RemoveEvents()
    end
    
    function Bloodlord_OnDie(Unit, Event)
    	Unit:RemoveEvents()
    end
    
    function Bloodlord_OnDodge(Unit, Event)
    	Unit:FullCastSpellOnTarget(24407, Unit:GetMainTank())
    end
    	
    RegisterUnitEvent(11382, 1, "Bloodlord_OnCombat")
    RegisterUnitEvent(11382, 2, "Bloodlord_OnLeaveCombat")
    RegisterUnitEvent(11382, 4, "Bloodlord_OnDie")
    RegisterUnitEvent(11382, 6, "Bloodlord_OnDodge")
    
    --Ohgan--
    
    function Ohgan_OnCombat(Unit, Event)
    	Unit:RegisterEvent("Ohgan_Sunder", math.random(25000, 27000), 1)
    	Unit:RegisterEvent("Ohgan_Thrash", math.random(18000, 25000), 1)
    	Unit:RegisterEvent("Ohgan_Rend", math.random(7000, 11000), 1)
    	Unit:RegisterEvent("Ohgan_Festering", 17000, 1)
    end
    
    
    function Ohgan_Festering(Unit, Event)
    	Unit:FullCastSpellOnTarget(16460, Unit:GetMainTank())
    	Unit:RegisterEvent("Ohgan_FesteringRepeat", 17000, 1)
    end
    
    function Ohgan_FesteringRepeat(Unit, Event)
    	Unit:FullCastSpellOnTarget(16460, Unit:GetMainTank())
    	Unit:RegisterEvent("Ohgan_Festering", 17000, 1)
    end
    
    function Ohgan_Rend(Unit, Event)
    	Unit:FullCastSpellOnTarget(17153, Unit:GetRandomPlayer(0))
    	Unit:RegisterEvent("Ohgan_RendRepeat", math.random(7000, 11000), 1)
    end
    
    function Ohgan_RendRepeat(Unit, Event)
    	Unit:FullCastSpellOnTarget(17153, Unit:GetRandomPlayer(0))
    	Unit:RegisterEvent("Ohgan_Rend", math.random(7000, 11000), 1)
    end
    
    function Ohgan_Sunder(Unit, Event)
    	Unit:FullCastSpellOnTarget(24317, Unit:GetMainTank())
    	Unit:RegisterEvent("Ohgan_SunderRepeat", math.random(25000, 28000), 1)
    end
    
    function Ohgan_SunderRepeat(Unit, Event)
    	Unit:FullCastSpellOnTarget(24317, Unit:GetMainTank())
    	Unit:RegisterEvent("Ohgan_Sunder", math.random(25000, 28000), 1)
    end
    
    function Ohgan_Thrash(Unit, Event)
    	Unit:CastSpell(3391)
    	Unit:RegisterEvent("Ohgan_ThrashRepeat", math.random(18000, 25000), 1)
    end
    
    function Ohgan_ThrashRepeat(Unit, Event)
    	Unit:CastSpell(3391)
    	Unit:RegisterEvent("Ohgan_Thrash", math.random(18000, 25000), 1)
    end
    
    
    function Ohgan_OnLeaveCombat(Unit, Event)
         if Unit:IsAlive() == true then
    		Unit:RemoveEvents()
    		Unit:Despawn(100, 0)
    	 else
    		Unit:RemoveEvents()
         end
    end
    
    function Ohgan_OnDie(Unit, Event)
    	Unit:RemoveEvents()
    end
    
    RegisterUnitEvent(14988, 1, "Ohgan_OnCombat")
    RegisterUnitEvent(14988, 2, "Ohgan_OnLeaveCombat")
    RegisterUnitEvent(14988, 4, "Ohgan_OnDie")
    Gahz'ranka:

    It was very easy to fix mrs. gahz , but there was a huge problem. The summoning item didn't work. I had to improvise and I created a stronger version of Hydromancer Velratha , a boss in Zul'farrak. that I created her I had to make some lore about her too , why is she there. When the Hydromancer is down Gahz'ranka spawns immediatly attacking a nearby player. Everything on ghaz'ranka works , only I had to make a visual for Frost breath. P.S. when you create Hydromancer she should have 68954 HP and hit 852-1235. Enjoy.

    Code:
    --Hydromancer--
    
    function HydZ_OnCombat(pUnit, Event)
    	pUnit:SendChatMessage(14, 0, "What? You again? Oh , so you want to know why I am here? You see , Hakkar ressurected me once more , and now I imprisoned Gahz'ranka in the parallel world , so it wouldn't struggle while Hakkar drains it's power. Don't interrupt me , you don't know what you might unleash. You will die for this intrusion!")
    	pUnit:RegisterEvent("HydZ_WaterB", math.random(17000, 19000), 1)
    	pUnit:RegisterEvent("HydZ_WaterS", math.random(15000, 16000), 1)
    	pUnit:RegisterEvent("HydZ_Waterbolt", math.random(4500, 6000), 1)
    end
    
    function HydZ_WaterB(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(31012, pUnit:GetRandomPlayer(0))
    	pUnit:RegisterEvent("HydZ_WaterBRepeat", math.random(17000, 19000), 1)
    end
    
    function HydZ_WaterBRepeat(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(31012, pUnit:GetRandomPlayer(0))
    	pUnit:RegisterEvent("HydZ_WaterB", math.random(17000, 19000), 1)
    end
    
    function HydZ_WaterS(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(40086, pUnit:GetMainTank())
    	pUnit:RegisterEvent("HydZ_WaterSRepeat", math.random(15000, 16000), 1)
    end
    
    function HydZ_WaterSRepeat(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(40086, pUnit:GetMainTank())
    	pUnit:RegisterEvent("HydZ_WaterS", math.random(15000, 16000), 1)
    end
    
    function HydZ_Waterbolt(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(31707, pUnit:GetRandomPlayer(0))
    	pUnit:RegisterEvent("HydZ_WaterboltRepeat", math.random(4500, 6000), 1)
    end
    
    function HydZ_WaterboltRepeat(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(31707, pUnit:GetRandomPlayer(0))
    	pUnit:RegisterEvent("HydZ_Waterbolt", math.random(4500, 6000), 1)
    end
    
    function HydZ_OnLeave(pUnit, Event)
    	pUnit:RemoveEvents()
    end
    
    function HydZ_OnDie(pUnit, Event)
    	pUnit:RemoveEvents()
    	pUnit:SendChatMessage(14, 0, "You don't know.. What you just unleashed... <Gahz'ranka escapes the parallel world through Hydromancer's body , taring it apart>")
    	local x = pUnit:GetX()
    	local y = pUnit:GetY()
    	local z = pUnit:GetZ()
    	local o = pUnit:GetO()
    	pUnit:SpawnCreature(15114, x, y, z, o, 14, 0)
    end
    
    RegisterUnitEvent(39013, 1, "HydZ_OnCombat")
    RegisterUnitEvent(39013, 2, "HydZ_OnLeave")
    RegisterUnitEvent(39013, 4, "HydZ_OnDie")
    
    --Ghaz'ranka--
    
    function GZ_OnCombat(pUnit, Event)
    	pUnit:RegisterEvent("GZ_Thrash", math.random(6000, 7500), 1)
    	pUnit:RegisterEvent("GZ_Geyser", math.random(17000, 19000), 1)
    	pUnit:RegisterEvent("GZ_FB", math.random(12000, 16000), 1)
    	pUnit:RegisterEvent("GZ_Slam", math.random(14000, 15000), 1)
    end
    
    function GZ_Thrash(pUnit, Event)
    	pUnit:CastSpell(3391)
    	pUnit:RegisterEvent("GZ_Thrash", math.random(6000, 7500), 1)
    end
    
    function GZ_Geyser(pUnit, Event)
    	pUnit:CastSpell(22421)
    	pUnit:RegisterEvent("GZ_Geyser", math.random(17000, 19000), 1)
    end
    
    function GZ_FB(pUnit, Event)
    	pUnit:CastSpell(16099)
    	pUnit:FullCastSpellOnTarget(3131, pUnit:GetMainTank())
    	pUnit:RegisterEvent("GZ_FB", math.random(12000, 16000), 1)
    end
    
    function GZ_Slam(pUnit, Event)
    	pUnit:CastSpell(24326)
    	pUnit:RegisterEvent("GZ_Slam", math.random(14000, 15000), 1)
    end
    
    function GZ_OnLeave(pUnit, Event)
    	pUnit:RemoveEvents()
    end
    
    function GZ_OnDie(pUnit, Event)
    	pUnit:RemoveEvents()
    end
    
    function GZ_OnSpawn(pUnit, Event)
    	pUnit:CastSpell(16099)
    end
    
    RegisterUnitEvent(15114, 1, "GZ_OnCombat")
    RegisterUnitEvent(15114, 2, "GZ_OnLeave")
    RegisterUnitEvent(15114, 4, "GZ_OnDie")
    RegisterUnitEvent(15114, 18, "GZ_OnSpawn")
    Edge of Madness : Finally , done. I worked on it for about 7 hours , and made it a little bit customised , not much though. I couldn't get the table of madness working , so instead I made an npc behing the gong to teach the recipe to alchemists having 300 alchemy skill. I also made 4 invisible npcs. They are only trigger , take invisible models and name them Spirit of Madness , that's all. Whole Edge of Madness talk , and they cast spells too.

    Gri'lek: when goes below 50% will gain ability to turn into a giant + almost one hit a tank (like on retail) , but will be slowed to move 75% slower.

    Hazza'rah : You will have to fix one thing in here. Nightmares , they didn't hit enough , I had to make them stronger. Hazza'rah will cast a spell "Chakra Drain" which drains a little oflife. He summons nightmares which slowly move towards him and cast massive sleep.

    Renataki: Everything by retail , only that he , like all other bosses has some combat speech.

    Wushoolay: Couldn't get his lightning cloud to work so i replaced it with Electric Overload
    it's a weak spell , but enough to replace the aoe cloud. Everything else on him is from retail.

    Enjoy

    Code:
    function Madness_OnUse(pGameObject, event)
    Choice=math.random(1, 4)
    if Choice==1 then
    	pGameObject:SpawnCreature(15082, -11901.538086, -1906.714111, 65.374825, 0.838415, 14, 0)
    	pGameObject:SpawnCreature(39005, -11887.248047, -1890.164307, 64.989609, 0.947447, 14, 0)
    end
    if Choice==2 then
    	pGameObject:SpawnCreature(15083, -11901.538086, -1906.714111, 65.374825, 0.838415, 14, 0)
    	pGameObject:SpawnCreature(39007, -11887.248047, -1890.164307, 64.989609, 0.947447, 14, 0)
    end
    if Choice==3 then
    	pGameObject:SpawnCreature(15084, -11901.538086, -1906.714111, 65.374825, 0.838415, 14, 0)
    	pGameObject:SpawnCreature(39009, -11887.248047, -1890.164307, 64.989609, 0.947447, 14, 0)
    end
    if Choice==4 then
    	pGameObject:SpawnCreature(15085, -11901.538086, -1906.714111, 65.374825, 0.838415, 14, 0)
    	pGameObject:SpawnCreature(39011, -11887.248047, -1890.164307, 64.989609, 0.947447, 14, 0)
    end
    end
    
    RegisterGameObjectEvent(180327, 4, "Madness_OnUse")
    
    --Gri'lek trigger 1--
    
    function GT1_OnCombat(pUnit, Event)
    	pUnit:SendChatMessage(12, 0, "You? Dare challenge Gri'lek? The wanderer? You will surely fail mortals! He will pick your bones one by one! You all will die!")
    	pUnit:Despawn(100, 0)
    end
    
    RegisterUnitEvent(39005, 1, "GT1_OnCombat")
    
    --Hazza'rah trigger 1--
    
    function HT1_OnCombat(pUnit, Event)
    	pUnit:SendChatMessage(12, 0, "The dreamweaver? Really? Well then , see him , as you will see him in your nightmares! Come forth and destroy , Hazza'rah!")
    	pUnit:Despawn(100, 0)
    end
    
    RegisterUnitEvent(39007, 1, "HT1_OnCombat")
    
    --Renataki trigger 1--
    
    function RT1_OnCombat(pUnit, Event)
    	pUnit:SendChatMessage(12, 0, "Renataki , of the thousand blades , come forth and destroy them all! Stab and crush , feel free to kill!")
    	pUnit:Despawn(100, 0)
    end
    
    RegisterUnitEvent(39009, 1, "RT1_OnCombat")
    
    --Wushoolay trigger 1--
    
    function WT1_OnCombat(pUnit, Event)
    	pUnit:SendChatMessage(12, 0, "As the storm comes , Wushoolay comes too! Death will come with the storm!")
    	pUnit:Despawn(100, 0)
    end
    
    RegisterUnitEvent(39011, 1, "WT1_OnCombat")
    
    
    RegisterUnitEvent(39012, 1, "WT2_OnCombat")
    
    --Gri'lek--
    
    function Grilek_OnCombat(pUnit, Event)
    	pUnit:RegisterEvent("Grilek_Combatspeech", 17000, 1)
    	pUnit:RegisterEvent("Grilek_Phase2", 1000, 0)
    	pUnit:RegisterEvent("Grilek_Root", math.random(17000, 21000), 1)
    	pUnit:RegisterEvent("Grilek_Rend", math.random(7000, 9000), 1)
    end
    
    function Grilek_OnSpawn(pUnit, Event)
    	pUnit:SendChatMessage(14, 0, "Ahhh the pain! Wait.. What is this? My torments be over? I see , that mine be , but your torments be just beggining! Come , mortals , face Gri'lek the wanderer!")
    end
    
    function Grilek_Root(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(24648, pUnit:GetRandomPlayer(0))
    	pUnit:RegisterEvent("Grilek_RootRepeat", math.random(17000, 21000), 1)
    end
    
    function Grilek_RootRepeat(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(24648, pUnit:GetRandomPlayer(0))
    	pUnit:RegisterEvent("Grilek_Root", math.random(17000, 21000), 1)
    end
    
    function Grilek_Rend(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(14118, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Grilek_RendRepeat", math.random(7000, 9000), 1)
    end
    
    function Grilek_RendRepeat(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(14118, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Grilek_Rend", math.random(7000, 9000), 1)
    end
    
    function Grilek_Combatspeech(pUnit, Event)
    Choice=math.random(1, 4)
    if Choice==1 then
    	pUnit:SendChatMessage(14, 0, "I be your doom!")
    	pUnit:RegisterEvent("Grilek_CombatspeechRepeat", 17000, 1)
    end
    if Choice==2 then
    	pUnit:SendChatMessage(14, 0, "Cowards! Wretches!")
    	pUnit:RegisterEvent("Grilek_CombatspeechRepeat", 17000, 1)
    end
    if Choice==3 then
    	pUnit:SendChatMessage(14, 0, "Ur'Hakar t'woga bele , rala!")
    	pUnit:RegisterEvent("Grilek_CombatspeechRepeat", 17000, 1)
    end
    if Choice==4 then
    	pUnit:SendChatMessage(14, 0, "Madness will engulf you all!")
    	pUnit:RegisterEvent("Grilek_CombatspeechRepeat", 17000, 1)
    end
    end
    
    function Grilek_CombatspeechRepeat(pUnit, Event)
    Choice=math.random(1, 4)
    if Choice==1 then
    	pUnit:SendChatMessage(14, 0, "I be your doom!")
    	pUnit:RegisterEvent("Grilek_Combatspeech", 17000, 1)
    end
    if Choice==2 then
    	pUnit:SendChatMessage(14, 0, "Cowards! Wretches!")
    	pUnit:RegisterEvent("Grilek_Combatspeech", 17000, 1)
    end
    if Choice==3 then
    	pUnit:SendChatMessage(14, 0, "Ur'Hakar t'woga bele , rala!")
    	pUnit:RegisterEvent("Grilek_Combatspeech", 17000, 1)
    end
    if Choice==4 then
    	pUnit:SendChatMessage(14, 0, "Madness will engulf you all!")
    	pUnit:RegisterEvent("Grilek_Combatspeech", 17000, 1)
    end
    end
    
    function Grilek_Phase2(pUnit, event)
    	if pUnit:GetHealthPct() < 51 then
    	pUnit:RemoveEvents()
    	pUnit:SendChatMessage(14, 0, "Madness came here! And death follows it's path!")
    	pUnit:RegisterEvent("Grilek_Combatspeech2", 17000, 1)
    	pUnit:RegisterEvent("Grilek_Avatar", 15000, 1)
    	pUnit:RegisterEvent("Grilek_Tremor", 18000, 1)
    	end
    end
    
    function Grilek_Combatspeech2(pUnit, Event)
    Choice=math.random(1, 4)
    if Choice==1 then
    	pUnit:SendChatMessage(14, 0, "I will eat you alive!")
    	pUnit:RegisterEvent("Grilek_Combatspeech2Repeat", 17000, 1)
    end
    if Choice==2 then
    	pUnit:SendChatMessage(14, 0, "Ur'Hakar , gepoya qwera tyoda rala!")
    	pUnit:RegisterEvent("Grilek_Combatspeech2Repeat", 17000, 1)
    end
    if Choice==3 then
    	pUnit:SendChatMessage(14, 0, "I shall crush your skulls!")
    	pUnit:RegisterEvent("Grilek_Combatspeech2Repeat", 17000, 1)
    end
    if Choice==4 then
    	pUnit:SendChatMessage(14, 0, "Damnation awaits!")
    	pUnit:RegisterEvent("Grilek_Combatspeech2Repeat", 17000, 1)
    end
    end
    
    function Grilek_Combatspeech2Repeat(pUnit, Event)
    Choice=math.random(1, 4)
    if Choice==1 then
    	pUnit:SendChatMessage(14, 0, "I will eat you alive!")
    	pUnit:RegisterEvent("Grilek_Combatspeech2", 17000, 1)
    end
    if Choice==2 then
    	pUnit:SendChatMessage(14, 0, "Ur'Hakar , gepoya qwera tyoda rala!")
    	pUnit:RegisterEvent("Grilek_Combatspeech2", 17000, 1)
    end
    if Choice==3 then
    	pUnit:SendChatMessage(14, 0, "I shall crush your skulls!")
    	pUnit:RegisterEvent("Grilek_Combatspeech2", 17000, 1)
    end
    if Choice==4 then
    	pUnit:SendChatMessage(14, 0, "Damnation awaits!")
    	pUnit:RegisterEvent("Grilek_Combatspeech2", 17000, 1)
    end
    end
    
    function Grilek_Avatar(pUnit, Event)
    	pUnit:SendChatMessage(14, 0, "Feel the pain I felt!")
    	pUnit:CastSpell(24646)
    	pUnit:ModifyRunSpeed(2)
            pUnit:ModifyWalkSpeed(2)
    	pUnit:RegisterEvent("Grilek_AvatarRepeat", 15000, 1)
    end
    
    function Grilek_AvatarRepeat(pUnit, Event)
    	pUnit:SendChatMessage(14, 0, "I will break you!")
    	pUnit:ModifyRunSpeed(2)
            pUnit:ModifyWalkSpeed(2)
    	pUnit:CastSpell(24646)
    	pUnit:RegisterEvent("Grilek_Avatar", 15000, 1)
    end
    
    function Grilek_Tremor(pUnit, Event)
    	pUnit:CastSpell(24646)
    	pUnit:RegisterEvent("Grilek_TremorRepeat", 18000, 1)
    end
    
    function Grilek_TremorRepeat(pUnit, Event)
    	pUnit:CastSpell(24646)
    	pUnit:RegisterEvent("Grilek_Tremor", 18000, 1)
    end
    
    function Grilek_OnDie(pUnit, Event)
    	pUnit:RemoveEvents()
    end
    
    function Grilek_OnLeave(pUnit, Event)
    	pUnit:RemoveEvents()
    	pUnit:Despawn(100, 0)
    end
    
    RegisterUnitEvent(15082, 1, "Grilek_OnCombat")
    RegisterUnitEvent(15082, 18, "Grilek_OnSpawn")
    RegisterUnitEvent(15082, 2, "Grilek_OnLeave")
    RegisterUnitEvent(15082, 4, "Grilek_OnDie")
    
    --Wushoolay--
    
    function Wush_OnSpawn(pUnit , Event)
    	pUnit:SendChatMessage(14, 0, "What? Are these the 'Best ones' you told me about , Herald? They look weaker than the ones you sent me last time! Pityful whelps , you will die here and today!")
    end
    
    function Wush_OnCombat(pUnit, Event)
    	pUnit:RegisterEvent("Wush_ChainLightW", math.random(19000, 21000), 1)
    	pUnit:RegisterEvent("Wush_ForkedLightW", math.random(17000, 19000), 1)
    	pUnit:RegisterEvent("Wush_Combatspeeh", 17000, 1)
    	pUnit:RegisterEvent("Wush_Jumping", math.random(4000, 6000), 1)
    end
    
    function Wush_Combatspeeh(pUnit, Event)
    Choice=math.random(1, 4)
    if Choice==1 then
    	pUnit:SendChatMessage(14, 0, "Die , whelp!")
    	pUnit:RegisterEvent("Wush_Combatspeeh2Repeat", 17000, 1)
    end
    if Choice==2 then
    	pUnit:SendChatMessage(14, 0, "Let the storm consume you!")
    	pUnit:RegisterEvent("Wush_Combatspeeh2Repeat", 17000, 1)
    end
    if Choice==3 then
    	pUnit:SendChatMessage(14, 0, "Braaah!")
    	pUnit:RegisterEvent("Wush_Combatspeeh2Repeat", 17000, 1)
    end
    if Choice==4 then
    	pUnit:SendChatMessage(14, 0, "Weaklings!")
    	pUnit:RegisterEvent("Wush_Combatspeeh2Repeat", 17000, 1)
    end
    end
    
    function Wush_Combatspeeh2Repeat(pUnit, Event)
    Choice=math.random(1, 4)
    if Choice==1 then
    	pUnit:SendChatMessage(14, 0, "Die , whelp!")
    	pUnit:RegisterEvent("Wush_Combatspeeh", 17000, 1)
    end
    if Choice==2 then
    	pUnit:SendChatMessage(14, 0, "Let the storm consume you!")
    	pUnit:RegisterEvent("Wush_Combatspeeh", 17000, 1)
    end
    if Choice==3 then
    	pUnit:SendChatMessage(14, 0, "Braaah!")
    	pUnit:RegisterEvent("Wush_Combatspeeh", 17000, 1)
    end
    if Choice==4 then
    	pUnit:SendChatMessage(14, 0, "Weaklings!")
    	pUnit:RegisterEvent("Wush_Combatspeeh", 17000, 1)
    end
    end
    
    function Wush_OnDie(pUnit, Event)
    	pUnit:SendChatMessage(14, 0, "Well done.. Well done indeed..")
    	pUnit:RemoveEvents()
    end
    
    function Wush_OnLeave(pUnit, Event)
    	pUnit:RemoveEvents()
    	pUnit:Despawn(100, 0)
    end
    
    function Wush_Jumping(pUnit, Event)
    	pUnit:CastSpellAoF(45336)
    	pUnit:RegisterEvent("Wush_JumpingRepeat", math.random(4000, 6000), 1)
    end
    
    function Wush_JumpingRepeat(pUnit, Event)
    	pUnit:CastSpell(45336)
    	pUnit:RegisterEvent("Wush_Jumping", math.random(4000, 6000), 1)
    end
    
    function Wush_ChainLightW(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(24680, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Wush_ChainLightWRepeat", math.random(19000, 21000), 1)
    end
    
    function Wush_ChainLightWRepeat(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(24680, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Wush_ChainLightW", math.random(19000, 21000), 1)
    end
    
    
    function Wush_ForkedLightW(pUnit, Event)
    	pUnit:CastSpell(24682)
    	pUnit:RegisterEvent("Wush_ForkedLightWRepeat", math.random(17000, 19000), 1)
    end
    
    function Wush_ForkedLightWRepeat(pUnit, Event)
    	pUnit:CastSpell(24682)
    	pUnit:RegisterEvent("Wush_ForkedLightW", math.random(17000, 19000), 1)
    end
    
    
    RegisterUnitEvent(15085, 1, "Wush_OnCombat")
    RegisterUnitEvent(15085, 18, "Wush_OnSpawn")
    RegisterUnitEvent(15085, 2, "Wush_OnLeave")
    RegisterUnitEvent(15085, 4, "Wush_OnDie")
    
    --Renataki--
    
    
    function Renataki_OnSpawn(pUnit , Event)
    	pUnit:SendChatMessage(14, 0, "Herald , herald , herald.. Do you know who I am? Renataki , of the thousand blades.. And yet still , you send me weaklings. You are pathetic , if I will kill them , I will kill you too")
    end
    
    function Renataki_OnCombat(pUnit, Event)
    	pUnit:RegisterEvent("Renataki_Thousand", math.random(19000, 21000), 1)
    	pUnit:RegisterEvent("Renataki_Gouge", math.random(17000, 19000), 1)
    	pUnit:RegisterEvent("Renataki_Combatspeeh", 17000, 1)
    	pUnit:RegisterEvent("Renataki_Thrash", math.random(13000, 16000), 1)
    	pUnit:RegisterEvent("Renataki_Vanish", math.random(15000, 17000), 1)
    end
    
    function Renataki_Combatspeeh(pUnit, Event)
    Choice=math.random(1, 4)
    if Choice==1 then
    	pUnit:SendChatMessage(14, 0, "You are pathetic!")
    	pUnit:RegisterEvent("Renataki_Combatspeeh2Repeat", 17000, 1)
    end
    if Choice==2 then
    	pUnit:SendChatMessage(14, 0, "Weak!")
    	pUnit:RegisterEvent("Renataki_Combatspeeh2Repeat", 17000, 1)
    end
    if Choice==3 then
    	pUnit:SendChatMessage(14, 0, "You call this a fight?!")
    	pUnit:RegisterEvent("Renataki_Combatspeeh2Repeat", 17000, 1)
    end
    if Choice==4 then
    	pUnit:SendChatMessage(14, 0, "I can't even call you an enemy!")
    	pUnit:RegisterEvent("Renataki_Combatspeeh2Repeat", 17000, 1)
    end
    end
    
    function Renataki_Combatspeeh2Repeat(pUnit, Event)
    Choice=math.random(1, 4)
    if Choice==1 then
    	pUnit:SendChatMessage(14, 0, "You are pathetic!")
    	pUnit:RegisterEvent("Renataki_Combatspeeh", 17000, 1)
    end
    if Choice==2 then
    	pUnit:SendChatMessage(14, 0, "Weak!")
    	pUnit:RegisterEvent("Renataki_Combatspeeh", 17000, 1)
    end
    if Choice==3 then
    	pUnit:SendChatMessage(14, 0, "You call this a fight?!")
    	pUnit:RegisterEvent("Renataki_Combatspeeh", 17000, 1)
    end
    if Choice==4 then
    	pUnit:SendChatMessage(14, 0, "I can't even call you an enemy!")
    	pUnit:RegisterEvent("Renataki_Combatspeeh", 17000, 1)
    end
    end
    
    function Renataki_OnDie(pUnit, Event)
    	pUnit:SendChatMessage(14, 0, "Finally... a challenge I can't.. win..")
    	pUnit:RemoveEvents()
    end
    
    function Renataki_OnLeave(pUnit, Event)
    	pUnit:RemoveEvents()
    	pUnit:Despawn(100, 0)
    end
    
    function Renataki_Vanish(pUnit, Event)
    	pUnit:CastSpell(24699)
    	pUnit:RegisterEvent("Renataki_VanishRepeat", math.random(15000, 17000), 1)
    end
    
    function Renataki_VanishRepeat(pUnit, Event)
    	pUnit:CastSpell(24699)
    	pUnit:RegisterEvent("Renataki_Vanish", math.random(15000, 17000), 1)
    end
    
    function Renataki_Thrash(pUnit, Event)
    	pUnit:CastSpell(3391)
    	pUnit:RegisterEvent("Renataki_ThrashRepeat", math.random(13000, 16000), 1)
    end
    
    function Renataki_ThrashRepeat(pUnit, Event)
    	pUnit:CastSpell(3391)
    	pUnit:RegisterEvent("Renataki_Thrash", math.random(13000, 16000), 1)
    end
    
    function Renataki_Thousand(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(24649, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Renataki_ThousandRepeat", math.random(19000, 21000), 1)
    end
    
    function Renataki_ThousandRepeat(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(24649, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Renataki_Thousand", math.random(19000, 21000), 1)
    end
    
    function Renataki_Gouge(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(24698, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Renataki_GougeRepeat", math.random(17000, 19000), 1)
    end
    
    function Renataki_GougeRepeat(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(24698, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Renataki_Gouge", math.random(17000, 19000), 1)
    end
    
    
    RegisterUnitEvent(15084, 1, "Renataki_OnCombat")
    RegisterUnitEvent(15084, 18, "Renataki_OnSpawn")
    RegisterUnitEvent(15084, 2, "Renataki_OnLeave")
    RegisterUnitEvent(15084, 4, "Renataki_OnDie")
    
    --Hazza'rah--
    
    
    function Haz_OnSpawn(pUnit , Event)
    	pUnit:SendChatMessage(14, 0, "Mortals? So the feast begins. The feast upon your fears. I can see them. I can see them all. Don't struggle , you probably know the outcome already. The outcome of you all perishing in my hands. Brace your doom!")
    end
    
    function Haz_OnCombat(pUnit, Event)
    	pUnit:RegisterEvent("Haz_Sleep", math.random(31000, 37000), 1)
    	pUnit:RegisterEvent("Haz_Drain", math.random(17000, 19000), 1)
    	pUnit:RegisterEvent("Haz_Combatspeeh", 17000, 1)
    end
    
    function Haz_Combatspeeh(pUnit, Event)
    Choice=math.random(1, 4)
    if Choice==1 then
    	pUnit:SendChatMessage(14, 0, "You won't survive!")
    	pUnit:RegisterEvent("Haz_Combatspeeh2Repeat", 17000, 1)
    end
    if Choice==2 then
    	pUnit:SendChatMessage(14, 0, "Face your nightmares!")
    	pUnit:RegisterEvent("Haz_Combatspeeh2Repeat", 17000, 1)
    end
    if Choice==3 then
    	pUnit:SendChatMessage(14, 0, "Your dreams are mine!")
    	pUnit:RegisterEvent("Haz_Combatspeeh2Repeat", 17000, 1)
    end
    if Choice==4 then
    	pUnit:SendChatMessage(14, 0, "You can't best immortality!")
    	pUnit:RegisterEvent("Haz_Combatspeeh2Repeat", 17000, 1)
    end
    end
    
    function Haz_Combatspeeh2Repeat(pUnit, Event)
    Choice=math.random(1, 4)
    if Choice==1 then
    	pUnit:SendChatMessage(14, 0, "You won't survive!")
    	pUnit:RegisterEvent("Haz_Combatspeeh", 17000, 1)
    end
    if Choice==2 then
    	pUnit:SendChatMessage(14, 0, "Face your nightmares!")
    	pUnit:RegisterEvent("Haz_Combatspeeh", 17000, 1)
    end
    if Choice==3 then
    	pUnit:SendChatMessage(14, 0, "Your dreams are mine!")
    	pUnit:RegisterEvent("Haz_Combatspeeh", 17000, 1)
    end
    if Choice==4 then
    	pUnit:SendChatMessage(14, 0, "You can't best immortality!")
    	pUnit:RegisterEvent("Haz_Combatspeeh", 17000, 1)
    end
    end
    
    function Haz_OnDie(pUnit, Event)
    	pUnit:SendChatMessage(14, 0, "But.. I am.. Immortal..")
    	pUnit:RemoveEvents()
    end
    
    function Haz_OnLeave(pUnit, Event)
    	pUnit:RemoveEvents()
    	pUnit:Despawn(100, 0)
    end
    
    function Haz_Sleep(pUnit, Event)
    	pUnit:CastSpell(31298)
    	pUnit:SendChatMessage(14, 0, "Scared already?")
    	pUnit:SpawnCreature(15163, -11903.129883, -1872.076172, 64.527519, 6.227480, 14, 0)
    	pUnit:SpawnCreature(15163, -11867.651367, -1892.289429, 64.455376, 2.793723, 14, 0)
    	pUnit:SpawnCreature(15163, -11872.533203, -1853.865967, 64.144119, 3.374918, 14, 0)
    	pUnit:RegisterEvent("Haz_SleepRepeat", math.random(19000, 21000), 1)
    end
    
    function Haz_SleepRepeat(pUnit, Event)
    	pUnit:SendChatMessage(14, 0, "I can feel your fear!")
    	pUnit:CastSpell(31298)
    	pUnit:SpawnCreature(15163, -11903.129883, -1872.076172, 64.527519, 6.227480, 14, 0)
    	pUnit:SpawnCreature(15163, -11867.651367, -1892.289429, 64.455376, 2.793723, 14, 0)
    	pUnit:SpawnCreature(15163, -11872.533203, -1853.865967, 64.144119, 3.374918, 14, 0)
    	pUnit:RegisterEvent("Haz_Sleep", math.random(19000, 21000), 1)
    end
    
    function Haz_Drain(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(44121, pUnit:GetMainTank(0))
    	pUnit:RegisterEvent("Haz_DrainRepeat", math.random(17000, 19000), 1)
    end
    
    function Haz_DrainRepeat(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(44121, pUnit:GetMainTank(0))
    	pUnit:RegisterEvent("Haz_Drain", math.random(17000, 19000), 1)
    end
    
    
    RegisterUnitEvent(15083, 1, "Haz_OnCombat")
    RegisterUnitEvent(15083, 18, "Haz_OnSpawn")
    RegisterUnitEvent(15083, 2, "Haz_OnLeave")
    RegisterUnitEvent(15083, 4, "Haz_OnDie")
    
    --Nightmare AI--
    function Nightmare_PositionCheck(pUnit, event)
         if pUnit:IsCreatureMoving() == true then
    		local tbl = pUnit:GetInRangeFriends()
    		for k,v in pairs(tbl) do
    			if v:GetEntry() == 15083 then
    				pUnit:MoveTo(v:GetX(), v:GetY(), v:GetZ(), v:GetO())
    			else
    				pUnit:RemoveEvents()
    			end
    		end
    	end
    end  
    
    function Nightmare_OnSpawn(pUnit, event)
         local tbl = pUnit:GetInRangeFriends()
         for k,v in pairs(tbl) do
    		if v:GetEntry() == 15083 then
    			pUnit:ModifyWalkSpeed(2)
    			pUnit:ModifyRunSpeed(2)
    			pUnit:SetMovementType(768)
    			pUnit:MoveTo(v:GetX(), v:GetY(), v:GetZ(), v:GetO())
    			pUnit:RegisterEvent("Nightmare_PositionCheck", 2000, 0)
    		end
    	end
    end
    
    RegisterUnitEvent(15163, 18, "Nightmare_OnSpawn")
    
    function Nightmare_OnWipe(pUnit, event)
         if pUnit:IsAlive() == true then
    		pUnit:RemoveEvents()
    		pUnit:Despawn(100, 0)
    	 else
    		pUnit:RemoveEvents()
         end
    end
    
    RegisterUnitEvent(15163, 2, "Nightmare_OnWipe")
    
    function Nightmare_OnDe(pUnit, event)
    	pUnit:Despawn(100, 0)
    	pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(15163, 4, "Nightmare_OnWipe")
    And last , Thekal. I can't fix his reive self thingy , so I made an another good thing. I doubled his hp in SQL and woulla , he is good. He will go tiger at 50 , all his abilities are from retail and etc. I also scripted his Zealots so that they would do something. Before I write his script I want to say something more. I knew that I couldn't fix hakkar when I started scripting Thekal , instead I made an another thing. I made it so that one boss's death would trigger another one's spawn. So it would end up like this : Venoxis > Jeklik > Mar'li > Thekal > Arlokk > Hakkar. Each time you kill a boss another one will spawn. To do that just delete the spawns of mar'li, hakkar , thekal , jeklik and arlokk's gong (Bethekk's gong , the object to summon arlokk) nad put these things into the scripts I wrote in the first part.

    Venoxis: Replace
    Code:
    function Venoxis_OnWipe(pUnit, event)
         if pUnit:IsAlive() == true then
    	     pUnit:SetModel(15217)
    	     pUnit:RemoveEvents()
         else
         	pUnit:SendChatMessage(14, 0, "Ssserenity..at lassst!")
    	pUnit:PlaySoundToSet(8415)
         end
    end
    with

    Code:
    function Venoxis_OnWipe(pUnit, event)
         if pUnit:IsAlive() == true then
    	     pUnit:SetModel(15217)
    	     pUnit:RemoveEvents()
         else
         	pUnit:SendChatMessage(14, 0, "Ssserenity..at lassst!")
    	pUnit:PlaySoundToSet(8415)
    	pUnit:SpawnCreature(14517, -12291.9, -1380.08, 145.002, 2.28638, 14, 0)
         end
    end
    Jeklik :
    Code:
    function Jeklik_OnDied(Unit)
         Unit:RemoveEvents()
         Unit:SendChatMessage(14, 0, "Finally...death! Curse you, Hakkar! Curse you! ")
         Unit:PlaySoundToSet(8422)
    end
    with

    [CODE]function Jeklik_OnDied(Unit)
    Unit:RemoveEvents()
    Unit:SendChatMessage(14, 0, "Finally...death! Curse you, Hakkar! Curse you! ")
    Unit:PlaySoundToSet(8422)
    Unit:SpawnCreature(14510, -12326.5, -1577.11, 133.688, 4.81711, 14, 0)

    and Mar'li:

    Code:
    function Marli_OnDied(Unit)
         Unit:RemoveEvents()
         Unit:SendChatMessage(14, 0, "Bless you, mortals, for this release...Hakkar controls me no longer. ")
         Unit:PlaySoundToSet(8423)
    end
    with

    Code:
    function Marli_OnDied(Unit)
         Unit:RemoveEvents()
         Unit:SendChatMessage(14, 0, "Bless you, mortals, for this release...Hakkar controls me no longer. ")
         Unit:SpawnCreature(14509, -11700.849609, -2000.882080, 62.333935, 1.588969, 14, 0)
         Unit:SpawnCreature(11347, -11702.238281, -1998.168457, 62.333935, 4.785539, 14, 0)
         Unit:SpawnCreature(11348, -11699.454102, -1998.281982, 62.333935, 4.671657, 14, 0)
         Unit:PlaySoundToSet(8423)
    end


    And now , The'kal


    Code:
    function Thekal_OnCombat(pUnit, Event)
    	pUnit:RegisterEvent("Thekal_Silence", math.random(17000, 19000), 1)
    	pUnit:RegisterEvent("Thekal_MortalStrike", math.random(17000, 19000), 1)
    	pUnit:RegisterEvent("Thekal_Phase2", 1000, 0)
    end
    
    function Thekal_Silence(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(22666, pUnit:GetRandomPlayer(4))
    	pUnit:RegisterEvent("Thekal_SilenceRepeat", math.random(17000, 19000), 1)
    	if pUnit:GetRandomPlayer(4) == nil then
    	pUnit:RegisterEvent("Thekal_SilenceRepeat", math.random(17000, 19000), 1)
    end
    end
    
    function Thekal_SilenceRepeat(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(22666, pUnit:GetRandomPlayer(4))
    	pUnit:RegisterEvent("Thekal_Silence", math.random(17000, 19000), 1)
    	if pUnit:GetRandomPlayer(4) == nil then
    	pUnit:RegisterEvent("Thekal_Silence", math.random(17000, 19000), 1)
    end
    end
    
    function Thekal_MortalStrike(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(22859, pUnit:GetMainTank())
    	Unit:RegisterEvent("Thekal_MortalStrikeRepeat", math.random(17000, 19000), 1)
    end
    
    function Thekal_MortalStrikeRepeat(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(22859, pUnit:GetMainTank())
    	Unit:RegisterEvent("Thekal_MortalStrike", math.random(17000, 19000), 1)
    end
    
    function Thekal_Phase2(pUnit, Event)
         if pUnit:GetHealthPct() < 51 then
    	pUnit:RemoveEvents()
    	pUnit:SetModel(14792)
    	pUnit:SendChatMessage(14, 0, "Shirvallah, fill me with your RAGE!")
    	pUnit:PlaySoundToSet(8419)
    	pUnit:RegisterEvent("Thekal_SpeedS", math.random(11000, 14000), 1)
    	pUnit:RegisterEvent("Thekal_ForcePunch", math.random(16000, 21000), 1)
    	pUnit:RegisterEvent("Thekal_Charge", math.random(15000, 19000), 1)
    	pUnit:RegisterEvent("Thekal_Summon", math.random(17000, 19000), 1)
    	pUnit:RegisterEvent("Thekal_Frenzy", 180000, 1)
    end
    end
    
    function Thekal_SpeedS(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(24192, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Thekal_SpeedSRepeat", math.random(11000, 14000), 1)
    end
    
    function Thekal_SpeedSRepeat(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(24192, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Thekal_SpeedS", math.random(11000, 14000), 1)
    end
    
    function Thekal_ForcePunch(pUnit, Event)
    	pUnit:CastSpell(24189)
    	pUnit:RegisterEvent("Thekal_ForcePunchRepeat", math.random(16000, 21000), 1)
    end
    
    function Thekal_ForcePunchRepeat(pUnit, Event)
    	pUnit:CastSpell(24189)
    	pUnit:RegisterEvent("Thekal_ForcePunch", math.random(16000, 21000), 1)
    end
    
    function Thekal_Charge(pUnit, Event)
    	setvars(pUnit, {chargetarget=pnit:GetRandomPlayer(0)})
    	local args=getvars(Unit)
    	pUnit:FullCastSpellOnTarget(24193, args.chargetarget)
    	pUnit:SetCombatTargetingCapable(1)
    	pUnit:ModifyRunSpeed(300)
    	pUnit:ModifyWalkSpeed(300)
    	pUnit:MoveTo(args.chargetarget:GetX(), args.chargetarget:GetY(), args.chargetarget:GetZ(), args.chargetarget:GetO())
    	pUnit:RegisterEvent("Thekal_MoveCheck", 1000, 1)
    	pUnit:RegisterEvent("Thekal_ChargeRepeat", math.random(15000, 19000), 1)
    end
    
    function Thekal_ChargeRepeat(pUnit, Event)
    	setvars(pUnit, {chargetarget=pnit:GetRandomPlayer(0)})
    	local args=getvars(Unit)
    	pUnit:FullCastSpellOnTarget(24193, args.chargetarget)
    	pUnit:SetCombatTargetingCapable(1)
    	pUnit:ModifyRunSpeed(300)
    	pUnit:ModifyWalkSpeed(300)
    	pUnit:MoveTo(args.chargetarget:GetX(), args.chargetarget:GetY(), args.chargetarget:GetZ(), args.chargetarget:GetO())
    	pUnit:RegisterEvent("Thekal_MoveCheck", 1000, 1)
    	pUnit:RegisterEvent("Thekal_Charge", math.random(15000, 19000), 1)
    end
    
    function Thekal_MoveCheck(pUnit, event)
    	local args=getvars(Unit)
    	pUnit:WipeThreatList()
    	pUnit:ModifyRunSpeed(8)
    	pUnit:ModifyWalkSpeed(8)
    	pUnit:SetCombatTargetingCapable(0)
    	pUnit:ModThreat(args.chargetarget, 1000)
    end
    
    function Thekal_Summon(pUnit, event)
    	local x = pUnit:GetX()
    	local y = pUnit:GetY()
    	local z = pUnit:GetZ()
    	local o = pUnit:GetO()
    	pUnit:SpawnCreature(15068, x, y, z, o, 14, 0)
    	pUnit:SpawnCreature(15068, x, y, z, o, 14, 0)
    	pUnit:RegisterEvent("Thekal_SummonRepeat", math.random(17000, 19000), 1)
    end
    
    function Thekal_SummonRepeat(pUnit, event)
    	local x = pUnit:GetX()
    	local y = pUnit:GetY()
    	local z = pUnit:GetZ()
    	local o = pUnit:GetO()
    	pUnit:SpawnCreature(15068, x, y, z, o, 14, 0)
    	pUnit:SpawnCreature(15068, x, y, z, o, 14, 0)
    	pUnit:RegisterEvent("Thekal_Summon", math.random(17000, 19000), 1)
    end
    
    function Thekal_Frenzy(pUnit, Event)
    	pUnit:CastSpell(8269)
    	pUnit:RegisterEvent("Thekal_FrenzyRepeat", 180000, 1)
    end
    
    function Thekal_FrenzyRepeat(pUnit, Event)
    	pUnit:CastSpell(8269)
    	pUnit:RegisterEvent("Thekal_Frenzy", 180000, 1)
    end
    
    function Thekal_OnLeave(pUnit, Event)
    	pUnit:RemoveEvents()
    end
    
    function Thekal_OnDie(pUnit, Event)
    	pUnit:RemoveEvents()
    	pUnit:SendChatMessage(14, 0, "Hakkar binds me no more! Peace at last!")
    	pUnit:PlaySoundToSet(8424)
    	pUnit:SetModel(15216)
    	pUnit:SpawnCreature(14515, -11567.773438, -1627.982178, 41.298172, 3.142107, 14, 0)
    end
    
    RegisterUnitEvent(14509, 1, "Thekal_OnCombat")
    RegisterUnitEvent(14509, 2, "Thekal_OnLeave")
    RegisterUnitEvent(14509, 4, "Thekal_OnDie")
    
    --Zealot Zath--
    
    function Zath_OnCombat(pUnit, Event)
    	pUnit:RegisterEvent("Zath_Blind", math.random(14000, 18000), 1)
    	pUnit:RegisterEvent("Zath_Kick", math.random(12000, 14000), 1)
    	pUnit:RegisterEvent("Zath_Gouge", math.random(11000, 13000), 1)
    	pUnit:RegisterEvent("Zath_Sinister", math.random(5000, 6000), 1)
    end
    
    function Zath_Blind(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(21060, pUnit:GetRandomPlayer(0))
    	pUnit:RegisterEvent("Zath_Blind", math.random(14000, 18000), 1)
    end
    
    function Zath_Kick(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(15614, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Zath_Kick", math.random(12000, 14000), 1)
    end
    
    function Zath_Gouge(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(12540, pUnit:GetRandomPlayer(0))
    	pUnit:RegisterEvent("Zath_Gouge", math.random(11000, 13000), 1)
    end
    
    function Zath_Sinister(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(12540, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Zath_Sinister", math.random(5000, 6000), 1)
    end
    
    function Zath_OnLeave(pUnit, Event)
    	pUnit:RemoveEvents()
    end
    
    function Zath_OnDie(pUnit, Event)
    	pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(11348, 1, "Zath_OnCombat")
    RegisterUnitEvent(11348, 2, "Zath_OnLeave")
    RegisterUnitEvent(11348, 4, "Zath_OnDie")
    
    --Zealot Lor'Khan--
    
    function Lor_OnCombat(pUnit, Event)
    	pUnit:RegisterEvent("Lor_Heal", math.random(7000, 8000), 1)
    	pUnit:RegisterEvent("Lor_Disarm", math.random(14000, 15000), 1)
    	pUnit:RegisterEvent("Lor_Shield", math.random(13000, 16000), 1)
    end
    
    function Lor_Heal(pUnit, Event)
    	pUnit:CastSpell(9163)
    	pUnit:RegisterEvent("Lor_Heal", math.random(7000, 8000), 1)
    end
    
    function Lor_Disarm(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(6713, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Lor_Disarm", math.random(14000, 15000), 1)
    end
    
    function Lor_Shield(pUnit, Event)
    	pUnit:CastSpell(20545)
    	pUnit:RegisterEvent("Lor_Shield", math.random(13000, 16000), 1)
    end
    
    function Lor_OnLeave(pUnit, Event)
    	pUnit:RemoveEvents()
    end
    
    function Lor_OnDie(pUnit, Event)
    	pUnit:RemoveEvents()
    end
    
    RegisterUnitEvent(11347, 1, "Lor_OnCombat")
    RegisterUnitEvent(11347, 2, "Lor_OnLeave")
    RegisterUnitEvent(11347, 4, "Lor_OnDie")

    Enjoy these scripts


    Setuxas

  5. #5
    mag1212's Avatar Active Member
    Reputation
    55
    Join Date
    Aug 2009
    Posts
    352
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    this is very nice rep if i can

  6. #6
    setuxas's Avatar Member
    Reputation
    20
    Join Date
    May 2009
    Posts
    27
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Mini-release! Zul'gurub part 2.1

    I made some few interesting things

    As some far know that when you enter ZG you will see Hakkar yelling something. I just had a radical thought of fixing that. And it works perfectly.

    First - create an invisible npc (As I mentioned invisible npcs in these scripts are triggers) , so create a trigger. Make it's entry to be 39001. And make it lvl 60. Or 70 , depends. Also his name should be Hakkar. And it should be aggresive.

    Second - Enter zul'gurub and where you enter , at that same spot , spawn the npc.

    Third - Copy this
    Code:
    function HakkarTrig1_OnCombat(pUnit, Event)
    	pUnit:SendChatMessage(14, 0, "Minions of Hakkar, hear your God. The sanctity of this temple has been compromised. Invaders encroach upon holy ground! The Altar of Blood must be protected. Kill them all!")
    	pUnit:Despawn(100, 0)
    end
    
    RegisterUnitEvent(39001, 1, "HakkarTrig1_OnCombat")
    And now , once you enter zul'gurub you will see his talk in the chat window.
    Enjoy.

    Setuxas.

  7. #7
    Heliumz's Avatar Member
    Reputation
    26
    Join Date
    Jun 2009
    Posts
    113
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    great job man! thats helped alot! +Rep !

  8. #8
    setuxas's Avatar Member
    Reputation
    20
    Join Date
    May 2009
    Posts
    27
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Release! Zul'gurub part 2.2

    Back with an another update. This one will consist a fix and a new trigger script which you might find interesting.

    The fix is on Thekal , both were grammar mistakes I didn't see while testing.

    Code:
    function Thekal_MortalStrike(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(22859, pUnit:GetMainTank())
    	Unit:RegisterEvent("Thekal_MortalStrikeRepeat", math.random(17000, 19000), 1)
    end
    
    function Thekal_MortalStrikeRepeat(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(22859, pUnit:GetMainTank())
    	Unit:RegisterEvent("Thekal_MortalStrike", math.random(17000, 19000), 1)
    end
    Should be

    Code:
    function Thekal_MortalStrike(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(22859, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Thekal_MortalStrikeRepeat", math.random(17000, 19000), 1)
    end
    
    function Thekal_MortalStrikeRepeat(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(22859, pUnit:GetMainTank())
    	pUnit:RegisterEvent("Thekal_MortalStrike", math.random(17000, 19000), 1)
    end
    And

    Code:
    function Thekal_Charge(pUnit, Event)
    	setvars(pUnit, {chargetarget=pnit:GetRandomPlayer(0)})
    	local args=getvars(Unit)
    	pUnit:FullCastSpellOnTarget(24193, args.chargetarget)
    	pUnit:SetCombatTargetingCapable(1)
    	pUnit:ModifyRunSpeed(300)
    	pUnit:ModifyWalkSpeed(300)
    	pUnit:MoveTo(args.chargetarget:GetX(), args.chargetarget:GetY(), args.chargetarget:GetZ(), args.chargetarget:GetO())
    	pUnit:RegisterEvent("Thekal_MoveCheck", 1000, 1)
    	pUnit:RegisterEvent("Thekal_ChargeRepeat", math.random(15000, 19000), 1)
    end
    
    function Thekal_ChargeRepeat(pUnit, Event)
    	setvars(pUnit, {chargetarget=pnit:GetRandomPlayer(0)})
    	local args=getvars(Unit)
    	pUnit:FullCastSpellOnTarget(24193, args.chargetarget)
    	pUnit:SetCombatTargetingCapable(1)
    	pUnit:ModifyRunSpeed(300)
    	pUnit:ModifyWalkSpeed(300)
    	pUnit:MoveTo(args.chargetarget:GetX(), args.chargetarget:GetY(), args.chargetarget:GetZ(), args.chargetarget:GetO())
    	pUnit:RegisterEvent("Thekal_MoveCheck", 1000, 1)
    	pUnit:RegisterEvent("Thekal_Charge", math.random(15000, 19000), 1)
    end
    Should be

    Code:
    function Thekal_Charge(pUnit, Event)
    	setvars(pUnit, {chargetarget=pUnit:GetRandomPlayer(0)})
    	local args=getvars(Unit)
    	pUnit:FullCastSpellOnTarget(24193, args.chargetarget)
    	pUnit:SetCombatTargetingCapable(1)
    	pUnit:ModifyRunSpeed(300)
    	pUnit:ModifyWalkSpeed(300)
    	pUnit:MoveTo(args.chargetarget:GetX(), args.chargetarget:GetY(), args.chargetarget:GetZ(), args.chargetarget:GetO())
    	pUnit:RegisterEvent("Thekal_MoveCheck", 1000, 1)
    	pUnit:RegisterEvent("Thekal_ChargeRepeat", math.random(15000, 19000), 1)
    end
    
    function Thekal_ChargeRepeat(pUnit, Event)
    	setvars(pUnit, {chargetarget=pUnit:GetRandomPlayer(0)})
    	local args=getvars(Unit)
    	pUnit:FullCastSpellOnTarget(24193, args.chargetarget)
    	pUnit:SetCombatTargetingCapable(1)
    	pUnit:ModifyRunSpeed(300)
    	pUnit:ModifyWalkSpeed(300)
    	pUnit:MoveTo(args.chargetarget:GetX(), args.chargetarget:GetY(), args.chargetarget:GetZ(), args.chargetarget:GetO())
    	pUnit:RegisterEvent("Thekal_MoveCheck", 1000, 1)
    	pUnit:RegisterEvent("Thekal_Charge", math.random(15000, 19000), 1)
    end
    I am very sorry that I missed it , but , I made something new too.


    Some far know that When you approach Zanza at neutral reputation he should talk. I made a script that he would talk , but sadly I can't make it only on neutral.

    Again , create a trigger , make it invisible and spawn it below Zanza in zul'gurub that players wouldn't see it.

    Code:
    function ZanzaTrig_OnCombat(pUnit, Event)
    	pUnit:SendChatMessage(12, 0, "I am Zanza, a Loa of Zandalar. I have come in this ethereal form from Zandalar to help my people. Hakkar has no dominion over my soul. I help those that have helped the Zandalarian people.")
    	pUnit:Despawn(100, 0)
    end
    
    function ZanzaTrig_OnSpawn(pUnit, Event)
    	pUnit:SetCombatCapable(1)
    end
    
    RegisterUnitEvent(39003, 1, "ZanzaTrig_OnCombat")
    RegisterUnitEvent(39003, 18, "ZanzaTrig_OnSpawn")
    Enjoy
    Last edited by setuxas; 10-28-2009 at 01:58 PM.

  9. #9
    Wolfly's Avatar Contributor
    Reputation
    96
    Join Date
    May 2007
    Posts
    325
    Thanks G/R
    1/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Can't you use :GetStanding for the Zanza faction check?
    Like
    Code:
    local player = GetClosestPlayer()
    
    function ZanzaTrig_OnCombat(pUnit, Event)
           pUnit:SetCombatCapable(1)
           pUnit:GetClosestPlayer()
           if (player:GetStanding(270) <= 3000) then
           pUnit:SendChatMessage(12, 0, "I am Zanza, a Loa of Zandalar. I have come in this ethereal form from Zandalar to help my people. Hakkar has no dominion over my soul. I help those that have helped the Zandalarian people.")
           pUnit:Despawn(100, 0)
           end
    end
    
    RegisterUnitEvent(39003, 1, "ZanzaTrig_OnCombat")
    I'm pretty sure this script isn't correct, but it's just to give you the general idea, not even sure wether it's possible or not.

    Other than that, awesome job! +3
    Last edited by Wolfly; 10-28-2009 at 02:12 PM.


  10. #10
    setuxas's Avatar Member
    Reputation
    20
    Join Date
    May 2009
    Posts
    27
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    RELEASE! Zul'gurub part 3!

    Part 3... A part consisting of Arlokk and Thekal's one more fix. I fixed Arlokk so much. She calls tigers , marks , and etc. And for Thekal , it's again a grammar fix.

    Code:
    function Thekal_Charge(pUnit, Event)
    	setvars(pUnit, {chargetarget=pUnit:GetRandomPlayer(0)})
    	local args=getvars(Unit)
    	pUnit:FullCastSpellOnTarget(24193, args.chargetarget)
    	pUnit:SetCombatTargetingCapable(1)
    	pUnit:ModifyRunSpeed(300)
    	pUnit:ModifyWalkSpeed(300)
    	pUnit:MoveTo(args.chargetarget:GetX(), args.chargetarget:GetY(), args.chargetarget:GetZ(), args.chargetarget:GetO())
    	pUnit:RegisterEvent("Thekal_MoveCheck", 1000, 1)
    	pUnit:RegisterEvent("Thekal_ChargeRepeat", math.random(15000, 19000), 1)
    end
    
    function Thekal_ChargeRepeat(pUnit, Event)
    	setvars(pUnit, {chargetarget=pUnit:GetRandomPlayer(0)})
    	local args=getvars(Unit)
    	pUnit:FullCastSpellOnTarget(24193, args.chargetarget)
    	pUnit:SetCombatTargetingCapable(1)
    	pUnit:ModifyRunSpeed(300)
    	pUnit:ModifyWalkSpeed(300)
    	pUnit:MoveTo(args.chargetarget:GetX(), args.chargetarget:GetY(), args.chargetarget:GetZ(), args.chargetarget:GetO())
    	pUnit:RegisterEvent("Thekal_MoveCheck", 1000, 1)
    	pUnit:RegisterEvent("Thekal_Charge", math.random(15000, 19000), 1)
    end
    Should be

    Code:
    function Thekal_Charge(pUnit, Event)
    	setvars(pUnit, {chargetarget=pUnit:GetRandomPlayer(0)})
    	local args=getvars(pUnit)
    	pUnit:FullCastSpellOnTarget(24193, args.chargetarget)
    	pUnit:SetCombatTargetingCapable(1)
    	pUnit:ModifyRunSpeed(300)
    	pUnit:ModifyWalkSpeed(300)
    	pUnit:MoveTo(args.chargetarget:GetX(), args.chargetarget:GetY(), args.chargetarget:GetZ(), args.chargetarget:GetO())
    	pUnit:RegisterEvent("Thekal_MoveCheck", 1000, 1)
    	pUnit:RegisterEvent("Thekal_ChargeRepeat", math.random(15000, 19000), 1)
    end
    
    function Thekal_ChargeRepeat(pUnit, Event)
    	setvars(pUnit, {chargetarget=pUnit:GetRandomPlayer(0)})
    	local args=getvars(pUnit)
    	pUnit:FullCastSpellOnTarget(24193, args.chargetarget)
    	pUnit:SetCombatTargetingCapable(1)
    	pUnit:ModifyRunSpeed(300)
    	pUnit:ModifyWalkSpeed(300)
    	pUnit:MoveTo(args.chargetarget:GetX(), args.chargetarget:GetY(), args.chargetarget:GetZ(), args.chargetarget:GetO())
    	pUnit:RegisterEvent("Thekal_MoveCheck", 1000, 1)
    	pUnit:RegisterEvent("Thekal_Charge", math.random(15000, 19000), 1)
    end

    That's all. Arlokk , she turned out to be wonderful. There is a thing I can't fix though. If in your server mobs pass through walls I suggest some other way to make her spawn. Maybe spawn a monster when Thekal dies to summon Arlokk. It's your choice. Enjoy , Arlokk. Next part will be last and will consist of Hakkar and Jin'do. Enjoy

    Code:
    function Arlokk_OnCombat(pUnit, Event)
    	pUnit:SendChatMessage(14, 0, "Bethekk, your priestess calls upon your might!")
    	pUnit:PlaySoundToSet(8416)
    	pUnit:RegisterEvent("Arlokk_Priest", 1000, 1)
    end
    
    function Arlokk_Shadow(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(24212, pUnit:GetRandomPlayer(0))
    end
    
    function Arlokk_Gouge(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(12540, pUnit:GetMainTank())
    end
    
    function Arlokk_Mark(pUnit, Event)
    	pUnit:SendChatMessage(14, 0, "Feast on that one , my pretties!")
    	pUnit:FullCastSpellOnTarget(24210, pUnit:GetRandomPlayer(0))
    	local serpenttarget=pUnit:GetRandomPlayer(0);
    	pUnit:SpawnCreature(15101, serpenttarget:GetX(), serpenttarget:GetY(), serpenttarget:GetZ(), serpenttarget:GetO(), 14, 0)
    	pUnit:SpawnCreature(15101, serpenttarget:GetX(), serpenttarget:GetY(), serpenttarget:GetZ(), serpenttarget:GetO(), 14, 0)
    	pUnit:SpawnCreature(15101, serpenttarget:GetX(), serpenttarget:GetY(), serpenttarget:GetZ(), serpenttarget:GetO(), 14, 0)
    	pUnit:SpawnCreature(15101, serpenttarget:GetX(), serpenttarget:GetY(), serpenttarget:GetZ(), serpenttarget:GetO(), 14, 0)
    end
    
    function Arlokk_Summon(pUnit, Event)
    	pUnit:SpawnCreature(15101,-11497.970703, -1619.203247, 41.299480, 3.086903, 14, 0)
    	pUnit:SpawnCreature(15101,-11498.878906, -1628.791260, 41.299480, 3.251839, 14, 0)
    	pUnit:SpawnCreature(15101,-11499.885742, -1637.526367, 41.299480, 3.126175, 14, 0)
    end
    
    function Arlokk_Priest(pUnit, Event)
    	pUnit:RemoveEvents()
    	pUnit:SetModel(15218)
    	pUnit:RegisterEvent("Arlokk_Shadow", 18000, 3)
    	pUnit:RegisterEvent("Arlokk_Gouge", 15000, 4)
    	pUnit:RegisterEvent("Arlokk_Panther", 10000, 6)
    	pUnit:RegisterEvent("Arlokk_Summon", 6000, 10)
    	pUnit:RegisterEvent("Arlokk_Mark", 30000, 2)
    
    end
    
    function Arlokk_Ravage(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(24213, pUnit:GetMainTank())
    end
    
    function Arlokk_Thrash(pUnit, Event)
    	pUnit:CastSpell(3391)
    end
    
    function Arlokk_Whirl(pUnit, Event)
    	pUnit:CastSpell(15589)
    end
    
    function Arlokk_Smallwhirl(pUnit, Event)
    	pUnit:CastSpell(24236)
    end
    
    function Arlokk_Stab(pUnit, Event)
    	pUnit:FullCastSpellOnTarget(15582, pUnit:GetMainTank())
    end
    
    function Arlokk_Panther(pUnit, Event)
    	pUnit:RemoveEvents()
    	pUnit:SetModel(15013)
    	pUnit:RegisterEvent("Arlokk_Whirl", 18000, 3)
    	pUnit:RegisterEvent("Arlokk_Smallwhirl", 15000, 4)
    	pUnit:RegisterEvent("Arlokk_Thrash", 8000, 7)
    	pUnit:RegisterEvent("Arlokk_Ravage", 11000, 5)
    	pUnit:RegisterEvent("Arlokk_Mark", 30000, 2)
    	pUnit:RegisterEvent("Arlokk_Stab", 17000, 3)
    	pUnit:RegisterEvent("Arlokk_Priest", 60000, 1)
    	pUnit:RegisterEvent("Arlokk_Summon", 10000, 6)
    end
    
    function Arlokk_OnLeave(pUnit, Event)
    	pUnit:RemoveEvents()
    end
    
    function Arlokk_OnDie(pUnit, Event)
    	pUnit:SendChatMessage(14, 0, "At last, I am free of the Soulflayer!")
    	pUnit:PlaySoundToSet(8412)
    	pUnit:RemoveEvents()
    	pUnit:SpawnCreature(14834,-11788.8, -1644.29, 54.7225, 4.74263, 14, 0)
    end
    
    RegisterUnitEvent(14515, 1, "Arlokk_OnCombat")
    RegisterUnitEvent(14515, 2, "Arlokk_OnLeave")
    RegisterUnitEvent(14515, 4, "Arlokk_OnDie")
    
    --Zulian Prowler AI--
    
    
    function ProwlahZ_PositionCheck(pUnit, event)
         if pUnit:IsCreatureMoving() == true then
    		local tbl = pUnit:GetInRangeFriends()
    		for k,v in pairs(tbl) do
    			if v:GetEntry() == 14515 then
    				pUnit:MoveTo(v:GetX(), v:GetY(), v:GetZ(), v:GetO())
    			else
    				pUnit:RemoveEvents()
    			end
    		end
    	end
    end  
    
    function ProwlahZ_OnSpawn(pUnit, event)
         local tbl = pUnit:GetInRangeFriends()
         for k,v in pairs(tbl) do
    		if v:GetEntry() == 14515 then
    			pUnit:ModifyWalkSpeed(14)
    			pUnit:MoveTo(v:GetX(), v:GetY(), v:GetZ(), v:GetO())
    			pUnit:RegisterEvent("ProwlahZ_PositionCheck", 2000, 0)
    		end
    	end
    end
    
    RegisterUnitEvent(15101, 18, "ProwlahZ_OnSpawn")
    
    function ProwlahZ_OnWipe(pUnit, event)
         if pUnit:IsAlive() == true then
    		pUnit:RemoveEvents()
    		pUnit:Despawn(100, 0)
    	 else
    		pUnit:RemoveEvents()
         end
    end
    
    RegisterUnitEvent(15101, 2, "ProwlahZ_OnWipe")

    As I said , next part is last , and will consist of Hakkar and Jin'do. After that I will be learning C++ and scripting instances and raids. You will hear soon.


    Setuxas

  11. #11
    svedin's Avatar Contributor
    Reputation
    124
    Join Date
    Jun 2008
    Posts
    557
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    great work... can be used if any one have start making a 1.12.1 server :P

    +RepX2 from me

Similar Threads

  1. The Secrets' of Zul'Gurub v2
    By impulse102 in forum World of Warcraft Exploits
    Replies: 4
    Last Post: 09-18-2006, 02:24 PM
  2. Behind Zul Gurub Portal after 1.11
    By kuikui in forum World of Warcraft Exploits
    Replies: 3
    Last Post: 09-16-2006, 12:16 PM
  3. The Secrets' of Zul'Gurub
    By Matt in forum World of Warcraft Exploits
    Replies: 16
    Last Post: 07-16-2006, 05:17 PM
  4. Zul'gurub Crafting
    By Cush in forum World of Warcraft Guides
    Replies: 0
    Last Post: 05-28-2006, 01:13 PM
  5. Zul'Gurub Guide?
    By sp5710 in forum World of Warcraft General
    Replies: 6
    Last Post: 05-27-2006, 01:47 AM
All times are GMT -5. The time now is 03:53 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search