Advertisement
Guest User

Untitled

a guest
Sep 27th, 2012
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.61 KB | None | 0 0
  1. SPELL_SHADOWHEAL = 37456 -- cast self
  2. SPELL_SHADOWBOLT = 58827 -- main tank
  3. ----------------
  4. SPELL_FROSTARMOR = 18100 -- cast self
  5. SPELL_ICETOMB = 29670 -- random player
  6. ----------------
  7. SPELL_FIRESHIELD = 37318 -- cast self
  8. SPELL_FIREBALL = 41484 -- random player
  9. ----------------
  10. SPELL_LIGHTNINGSHIELD = 59845 -- cast self
  11. SPELL_LIGHTNINGBOLT = 52921 -- random player
  12. ----------------
  13. SPELL_ARCANEBOLT = 59520 -- random player (ranged)
  14. SPELL_DEATH = 5 -- random player
  15.  
  16. local self = getfenv(1)
  17.  
  18. function OnCombat(Unit, event)
  19. Unit:SendChatMessage(14, 0, "Ha puny humans, you dare challenge me!")
  20. self[tostring(Unit)] = {
  21.     --------------
  22.     shadowheal = 5, -- phase 1 spells
  23.     shadowbolt = 6, -- phase 1 and start spells
  24.     --------------
  25.     frostarmor = 1, -- * phase 2 spells
  26.     icetomb = 6, -- phase 2 spells
  27.     --------------
  28.     fireshield = 1, -- * phase 3 spells
  29.     fireball = 6, -- phase 3 spells
  30.     --------------
  31.     lightningshield = 15, -- phase 4 spells
  32.     lightningbolt = 2, -- phase 4 spells
  33.     --------------
  34.     arcanebolt = 4, -- phase 5 spells
  35.     --------------
  36.     death = 5, -- phase 6 spells
  37.     --------------
  38.     phaseid = 0 -- phase controller
  39. }
  40. Unit:RegisterAIUpdateEvent(1000)
  41. end
  42.  
  43. function AIupdate(Unit)
  44. if(Unit:IsCasting() ) then return end
  45.     if(Unit:GetNextTarget() == nil) then
  46.         Unit:WipeThreatList()
  47.         return
  48.     end
  49. local vars = self[tostring(Unit)]
  50. if(Unit:GetHealthPct() > 90)then -- start phase
  51.     vars.shadowbolt = vars.shadowbolt - 1
  52.     if(vars.shadowbolt <= 0)then
  53.         Unit:FullCastSpellOnTarget(SPELL_SHADOWBOLT, Unit:GetMainTank())
  54.         vars.shadowbolt = 6
  55.     end
  56. elseif(Unit:GetHealthPct() > 80 and Unit:GetHealthPct() <= 90 and vars.phaseid == 0)then -- phase 1 transition
  57.     Unit:SendChatMessage(14, 0, "I shall never fall!")
  58.     vars.phaseid = 1
  59. elseif(Unit:GetHealthPct() > 80 and Unit:GetHealthPct() <= 90 and vars.phaseid == 1)then -- phase 1
  60.     vars.shadowbolt = vars.shadowbolt - 1
  61.     vars.shadowheal = vars.shadowheal - 1
  62.     if(vars.shadowbolt <= 0)then
  63.         Unit:FullCastSpellOnTarget(SPELL_SHADOWBOLT, Unit:GetMainTank())
  64.         vars.shadowbolt = 6
  65.     elseif(vars.shadowheal <= 0)then
  66.         Unit:CastSpell(SPELL_SHADOWHEAL)
  67.         vars.shadowheal = 5
  68.     end
  69. elseif(Unit:GetHealthPct() > 60 and Unit:GetHealthPct() <= 80 and vars.phaseid == 1)then -- phase 2 transition
  70.     Unit:SendChatMessage(14, 0, "So you think that was hard, Ha!")
  71.     Unit:SetModel(6209)
  72.     vars.phaseid = 2
  73. elseif(Unit:GetHealthPct() > 60 and Unit:GetHealthPct() <= 80 and vars.phaseid == 2)then -- phase 2
  74.     if(Unit:HasAura(SPELL_FROSTARMOR) == false)then
  75.         Unit:CastSpell(SPELL_FROSTARMOR)
  76.     end
  77.     vars.icetomb = vars.icetomb - 1
  78.     if(vars.icetomb <= 0)then
  79.         Unit:FullCastSpellOnTarget(SPELL_ICETOMB, Unit:GetRandomPlayer(0))
  80.         vars.icetomb = 6
  81.     end
  82. elseif(Unit:GetHealthPct() > 40 and Unit:GetHealthPct() <= 60 and vars.phaseid == 2)then -- phase 3 transition
  83.     Unit:SendChatMessage(14, 0, "Time for things to get hotter!")
  84.     Unit:SetModel(1070)
  85.     Unit:SetScale(2)
  86.     if(Unit:HasAura(SPELL_FROSTARMOR))then
  87.         Unit:RemoveAura(SPELL_FROSTARMOR)
  88.     end
  89.     vars.phaseid = 3
  90. elseif(Unit:GetHealthPct() > 40 and Unit:GetHealthPct() <= 60 and vars.phaseid == 3)then -- phase 3
  91.     if(Unit:HasAura(SPELL_FIRESHIELD) == false)then
  92.         Unit:CastSpell(SPELL_FIRESHIELD)
  93.     end
  94.     vars.fireball = vars.fireball - 1
  95.     if(vars.fireball <= 0)then
  96.         Unit:FullCastSpellOnTarget(SPELL_FIREBALL, Unit:GetRandomPlayer(0))
  97.         vars.fireball = 6
  98.     end
  99. elseif(Unit:GetHealthPct() > 20 and Unit:GetHealthPct() <= 40 and vars.phaseid == 3)then -- phase 4 transition
  100.     Unit:SetScale(1)
  101.     if(Unit:HasAura(SPELL_FIRESHIELD))then
  102.         Unit:RemoveAura(SPELL_FIRESHIELD)
  103.     end
  104.     Unit:SetModel(14515)
  105.     vars.phaseid = 4
  106. elseif(Unit:GetHealthPct() > 20 and Unit:GetHealthPct() <= 40 and vars.phaseid == 4)then -- phase 4
  107.     vars.lightningshield = vars.lightningshield - 1
  108.     vars.lightningbolt = vars.lightningbolt - 1
  109.     if(vars.lightningshield <= 0)then
  110.         Unit:CastSpell(SPELL_LIGHTNINGSHIELD)
  111.         vars.lightningshield = 15
  112.     elseif(vars.lightningbolt <= 0)then
  113.         Unit:FullCastSpellOnTarget(SPELL_LIGHTNINGBOLT, Unit:GetRandomPlayer(0))
  114.         vars.lightningbolt = 2
  115.     end
  116. elseif(Unit:GetHealthPct() > 5 and Unit:GetHealthPct() <= 20 and vars.phaseid == 4)then -- phase 5 transition
  117.     if(Unit:HasAura(SPELL_LIGHTNINGSHIELD))then
  118.         Unit:RemoveAura(SPELL_LIGHTNINGSHIELD)
  119.     end
  120.     Unit:SetModel(14253)
  121.     vars.phaseid = 5
  122. elseif(Unit:GetHealthPct() > 5 and Unit:GetHealthPct() <= 20 and vars.phaseid == 5)then -- phase 5
  123.     vars.arcanebolt = vars.arcanebolt - 1
  124.     if(vars.arcanebolt <= 0)then
  125.         Unit:FullCastSpellOnTarget(SPELL_ARCANEBOLT, Unit:GetRandomPlayer(1))
  126.     end
  127. elseif(Unit:GetHealthPct() <= 5 and vars.phaseid == 5)then -- phase 6 transition
  128.     Unit:SendChatMessage(14, 0, "Enough! This must end!")
  129.     Unit:SetModel(3980)
  130.     vars.phaseid = 6
  131. elseif(Unit:GetHealthPct() <= 5 and vars.phaseid == 6)then -- phase 6
  132.     vars.death = vars.death - 1
  133.     if(vars.death <= 0)then
  134.         Unit:FullCastSpellOnTarget(SPELL_DEATH, Unit:GetRandomPlayer(0))
  135.     end
  136. end
  137. end
  138.  
  139. function OnDied(Unit, event)
  140. Unit:SendChatMessage(14, 0, "How.. How can this be!")
  141. Unit:RemoveEvents()
  142. Unit:RemoveAIUpdateEvent()
  143. Unit:DeMorph()
  144. Unit:SetScale(1)
  145. end
  146.  
  147. function OnLeaveCombat(Unit, event)
  148. Unit:RemoveAura(SPELL_LIGHTNINGSHIELD)
  149. Unit:RemoveAura(SPELL_FIRESHIELD)
  150. Unit:RemoveAura(SPELL_FROSTARMOR)
  151. Unit:SetScale(1)
  152. Unit:RemoveEvents()
  153. Unit:RemoveAIUpdateEvent()
  154. Unit:DeMorph()
  155. end
  156.  
  157. function OnKIllPlayer(Unit, event, pDied)
  158. if(pDied:IsPlayer())then
  159.     Unit:SendChatMessage(14, 0, "Ha your strength is puny!")
  160. end
  161. end
  162.  
  163. RegisterUnitEvent(38581,1,OnCombat)
  164. RegisterUnitEvent(38581,2,OnLeaveCombat)
  165. RegisterUnitEvent(38581,4,OnDied)
  166. RegisterUnitEvent(38581,21,AIupdate)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement