Advertisement
Guest User

Untitled

a guest
Jan 18th, 2014
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.96 KB | None | 0 0
  1. -- Abominus Boss Mod for King Boss Mods
  2. -- Written by Noshei
  3. -- Copyright 2013
  4. --
  5.  
  6. KBMSLRDPBWT_Settings = nil
  7. chKBMSLRDPBWT_Settings = nil
  8.  
  9. -- Link Mods
  10. local AddonData = Inspect.Addon.Detail("KingMolinator")
  11. local KBM = AddonData.data
  12. if not KBM.BossMod then
  13. return
  14. end
  15. local PB = KBM.BossMod["RPlanebreaker_Bastion"]
  16.  
  17. local PBA = {
  18. Enabled = true,
  19. Directory = PB.Directory,
  20. File = "Abominus.lua",
  21. Instance = PB.Name,
  22. InstanceObj = PB,
  23. HasPhases = true,
  24. Lang = {},
  25. ID = "Abominus",
  26. Object = "PBA",
  27. TimeoutOverride = true,
  28. Timeout = 20,
  29. Enrage = 12 * 60,
  30. }
  31.  
  32. KBM.RegisterMod(PBA.ID, PBA)
  33.  
  34. -- Main Unit Dictionary
  35. PBA.Lang.Unit = {}
  36. PBA.Lang.Unit.Abominus = KBM.Language:Add("Planebreaker Abominus") -- ???
  37. PBA.Lang.Unit.Zorzyx = KBM.Language:Add("Zor’zyx")
  38. PBA.Lang.Unit.Torkrik = KBM.Language:Add("Tor’krik")
  39. PBA.Lang.Unit.Ixior = KBM.Language:Add("Ix’ior")
  40.  
  41. -- Ability Dictionary
  42. PBA.Lang.Ability = {}
  43.  
  44. -- Description Dictionary
  45. PBA.Lang.Main = {}
  46. PBA.Lang.Main.Encounter = KBM.Language:Add("Abominus")
  47.  
  48. -- Debuff Dictionary
  49. PBA.Lang.Debuff = {}
  50. PBA.Lang.Debuff.Petrification = KBM.Language:Add("Petrification")
  51. PBA.Lang.Debuff.PetrificationID = "B4F2B766BAC029D3B"
  52. PBA.Lang.Debuff.Sandstorm = KBM.Language:Add("Sandstorm Target")
  53. PBA.Lang.Debuff.SandstormID = "B14A5C9A23557342C"
  54.  
  55. -- Notify Dictionary
  56. PBA.Lang.Notify = {}
  57. PBA.Lang.Notify.Reflect = KBM.Language:Add("Ix'ior prepares to hurl a blast of magical energy at (%a*).")
  58.  
  59. -- Messages Dictionary
  60. PBA.Lang.Messages = {}
  61. PBA.Lang.Messages.Sandstorm = KBM.Language:Add("Sandstorm on YOU!")
  62. PBA.Lang.Messages.Reflect = KBM.Language:Add("Reflect needed on:")
  63.  
  64.  
  65. PBA.Descript = PBA.Lang.Main.Encounter[KBM.Lang]
  66.  
  67. PBA.Abominus = {
  68. Mod = PBA,
  69. Level = "??",
  70. Active = false,
  71. Name = PBA.Lang.Unit.Abominus[KBM.Lang],
  72. Dead = false,
  73. Available = false,
  74. Menu = {},
  75. UTID = "none",
  76. UnitID = nil,
  77. TimeOut = 5,
  78. Castbar = nil,
  79. TimersRef = {},
  80. AlertsRef = {},
  81. MechRef = {},
  82. Triggers = {},
  83. Settings = {
  84. CastBar = KBM.Defaults.Castbar(),
  85. TimersRef = {
  86. Enabled = false,
  87. },
  88. AlertsRef = {
  89. Enabled = true,
  90. Sandstorm = KBM.Defaults.AlertObj.Create("yellow"),
  91. },
  92. MechRef = {
  93. Enabled = true,
  94. Sandstorm = KBM.Defaults.MechObj.Create("yellow"),
  95. Reflect = KBM.Defaults.MechObj.Create("blue"),
  96. },
  97. }
  98. }
  99.  
  100. PBA.Zorzyx = {
  101. Mod = PBA,
  102. Level = "??",
  103. Active = false,
  104. Name = PBA.Lang.Unit.Zorzyx[KBM.Lang],
  105. Dead = false,
  106. Available = false,
  107. Menu = {},
  108. UTID = "U49172D1806E351F8",
  109. UnitID = nil,
  110. TimeOut = 5,
  111. Castbar = nil,
  112. --TimersRef = {},
  113. --AlertsRef = {},
  114. --MechRef = {},
  115. Triggers = {},
  116. Settings = {
  117. CastBar = KBM.Defaults.Castbar(),
  118. --TimersRef = {
  119. -- Enabled = false,
  120. --},
  121. --AlertsRef = {
  122. -- Enabled = true,
  123. --},
  124. --MechRef = {
  125. -- Enabled = true,
  126. --},
  127. }
  128. }
  129.  
  130. PBA.Torkrik = {
  131. Mod = PBA,
  132. Level = "??",
  133. Active = false,
  134. Name = PBA.Lang.Unit.Torkrik[KBM.Lang],
  135. Dead = false,
  136. Available = false,
  137. Menu = {},
  138. UTID = "U6639A5224FD93943",
  139. UnitID = nil,
  140. TimeOut = 5,
  141. Castbar = nil,
  142. --TimersRef = {},
  143. --AlertsRef = {},
  144. --MechRef = {},
  145. Triggers = {},
  146. Settings = {
  147. CastBar = KBM.Defaults.Castbar(),
  148. --TimersRef = {
  149. -- Enabled = false,
  150. --},
  151. --AlertsRef = {
  152. -- Enabled = true,
  153. --},
  154. --MechRef = {
  155. -- Enabled = true,
  156. --},
  157. }
  158. }
  159.  
  160. PBA.Ixior = {
  161. Mod = PBA,
  162. Level = "??",
  163. Active = false,
  164. Name = PBA.Lang.Unit.Ixior[KBM.Lang],
  165. Dead = false,
  166. Available = false,
  167. Menu = {},
  168. UTID = "U78B9A29C3FB7E378",
  169. UnitID = nil,
  170. TimeOut = 5,
  171. Castbar = nil,
  172. --TimersRef = {},
  173. --AlertsRef = {},
  174. --MechRef = {},
  175. --Triggers = {},
  176. Settings = {
  177. CastBar = KBM.Defaults.Castbar(),
  178. --TimersRef = {
  179. -- Enabled = false,
  180. --},
  181. --AlertsRef = {
  182. -- Enabled = true,
  183. --},
  184. --MechRef = {
  185. -- Enabled = true,
  186. --},
  187. }
  188. }
  189.  
  190. function PBA:AddBosses(KBM_Boss)
  191. self.MenuName = self.Descript
  192. self.Bosses = {
  193. [self.Abominus.Name] = self.Abominus,
  194. [self.Zorzyx.Name] = self.Zorzyx,
  195. [self.Torkrik.Name] = self.Torkrik,
  196. [self.Ixior.Name] = self.Ixior,
  197. }
  198.  
  199. for BossName, BossObj in pairs(self.Bosses) do
  200. if BossObj.Settings then
  201. if BossObj.Settings.CastBar then
  202. BossObj.Settings.CastBar.Override = true
  203. BossObj.Settings.CastBar.Multi = true
  204. end
  205. end
  206. end
  207. end
  208.  
  209. function PBA:InitVars()
  210. self.Settings = {
  211. Enabled = true,
  212. CastBar = {
  213. Override = true,
  214. Multi = true,
  215. },
  216. EncTimer = KBM.Defaults.EncTimer(),
  217. PhaseMon = KBM.Defaults.PhaseMon(),
  218. MechSpy = KBM.Defaults.MechSpy(),
  219. Abominus = {
  220. CastBar = self.Abominus.Settings.CastBar,
  221. TimersRef = self.Abominus.Settings.TimersRef,
  222. AlertsRef = self.Abominus.Settings.AlertsRef,
  223. MechRef = self.Abominus.Settings.MechRef,
  224. },
  225. MechTimer = KBM.Defaults.MechTimer(),
  226. Alerts = KBM.Defaults.Alerts(),
  227. }
  228. KBMSLRDPBWT_Settings = self.Settings
  229. chKBMSLRDPBWT_Settings = self.Settings
  230.  
  231. end
  232.  
  233. function PBA:SwapSettings(bool)
  234.  
  235. if bool then
  236. KBMSLRDPBWT_Settings = self.Settings
  237. self.Settings = chKBMSLRDPBWT_Settings
  238. else
  239. chKBMSLRDPBWT_Settings = self.Settings
  240. self.Settings = KBMSLRDPBWT_Settings
  241. end
  242.  
  243. end
  244.  
  245. function PBA:LoadVars()
  246. if KBM.Options.Character then
  247. KBM.LoadTable(chKBMSLRDPBWT_Settings, self.Settings)
  248. else
  249. KBM.LoadTable(KBMSLRDPBWT_Settings, self.Settings)
  250. end
  251.  
  252. if KBM.Options.Character then
  253. chKBMSLRDPBWT_Settings = self.Settings
  254. else
  255. KBMSLRDPBWT_Settings = self.Settings
  256. end
  257.  
  258. self.Settings.Enabled = true
  259. end
  260.  
  261. function PBA:SaveVars()
  262. self.Enabled = true
  263. if KBM.Options.Character then
  264. chKBMSLRDPBWT_Settings = self.Settings
  265. else
  266. KBMSLRDPBWT_Settings = self.Settings
  267. end
  268. end
  269.  
  270. function PBA:Castbar(units)
  271. end
  272.  
  273. function PBA:RemoveUnits(UnitID)
  274. if self.Abominus.UnitID == UnitID then
  275. self.Abominus.Available = false
  276. return true
  277. end
  278. return false
  279. end
  280.  
  281. function PBA.PhaseTwo()
  282. PBA.PhaseObj.Objectives:Remove()
  283. PBA.PhaseObj:SetPhase("2")
  284. PBA.PhaseObj.Objectives:AddPercent(PBA.Zorzyx, 0, 70)
  285. PBA.PhaseObj.Objectives:AddPercent(PBA.Torkrik, 0, 70)
  286. PBA.PhaseObj.Objectives:AddPercent(PBA.Ixior, 0, 70)
  287. end
  288.  
  289. function PBA.PhaseFinal()
  290. PBA.PhaseObj.Objectives:Remove()
  291. PBA.PhaseObj:SetPhase(KBM.Language.Options.Final[KBM.Lang])
  292. PBA.PhaseObj.Objectives:AddPercent(PBA.Abominus, 0, 100)
  293. PBA.PhaseObj.Objectives:AddPercent(PBA.Zorzyx, 0, 100)
  294. PBA.PhaseObj.Objectives:AddPercent(PBA.Torkrik, 0, 100)
  295. PBA.PhaseObj.Objectives:AddPercent(PBA.Ixior, 0, 100)
  296. end
  297.  
  298. function PBA:Death(UnitID)
  299. if self.Abominus.UnitID == UnitID then
  300. self.Abominus.Dead = true
  301. return true
  302. end
  303. if self.Ix’ior.UnitID == UnitID then
  304. self.PhaseFinal()
  305. end
  306. return false
  307. end
  308.  
  309. function PBA:UnitHPCheck(uDetails, unitID)
  310. if uDetails and unitID then
  311. local BossObj = self.UTID[uDetails.type]
  312. if not BossObj then
  313. BossObj = self.Bosses[uDetails.name]
  314. end
  315. if BossObj then
  316. if not self.EncounterRunning then
  317. self.EncounterRunning = true
  318. self.StartTime = Inspect.Time.Real()
  319. self.HeldTime = self.StartTime
  320. self.TimeElapsed = 0
  321. BossObj.Dead = false
  322. BossObj.Casting = false
  323. if BossObj.CastBar then
  324. BossObj.CastBar:Create(unitID)
  325. end
  326. self.PhaseObj:Start(self.StartTime)
  327. self.PhaseObj:SetPhase("1")
  328. self.Phase = 1
  329. self.PhaseObj.Objectives:AddPercent(self.Zorzyx, 70, 100)
  330. self.PhaseObj.Objectives:AddPercent(self.Torkrik, 70, 100)
  331. self.PhaseObj.Objectives:AddPercent(self.Ixior, 70, 100)
  332. KBM.TankSwap:Start(self.Lang.Debuff.PetrificationID, unitID)
  333. else
  334. BossObj.Dead = false
  335. BossObj.Casting = false
  336. if BossObj.UnitID ~= unitID then
  337. BossObj.CastBar:Remove()
  338. BossObj.CastBar:Create(unitID)
  339. end
  340. end
  341. BossObj.UnitID = unitID
  342. BossObj.Available = true
  343. return BossObj
  344. end
  345. end
  346. end
  347.  
  348. function PBA:Reset()
  349. self.EncounterRunning = false
  350. for BossName, BossObj in pairs(self.Bosses) do
  351. BossObj.Available = false
  352. BossObj.UnitID = nil
  353. BossObj.Dead = false
  354. BossObj.Casting = false
  355. if BossObj.CastBar then
  356. BossObj.CastBar:Remove()
  357. end
  358. end
  359. self.PhaseObj:End(Inspect.Time.Real())
  360. end
  361.  
  362. function PBA:Timer()
  363.  
  364. end
  365.  
  366. function PBA:DefineMenu()
  367. self.Menu = PBA.Menu:CreateEncounter(self.Abominus, self.Enabled)
  368. end
  369.  
  370. function PBA:Start()
  371. -- Create Timers
  372. -- KBM.Defaults.TimerObj.Assign(self.Abominus)
  373.  
  374. -- Create Alerts
  375. self.Abominus.AlertsRef.Sandstorm = KBM.Alert:Create(self.Lang.Debuff.Sandstorm[KBM.Lang], 10, true, true, "yellow")
  376. KBM.Defaults.AlertObj.Assign(self.Abominus)
  377.  
  378. -- Create Mechanic Spies
  379. self.Abominus.MechRef.Sandstorm = KBM.MechSpy:Add(self.Lang.Debuff.Sandstorm[KBM.Lang], nil, "playerDebuff", self.Abominus)
  380. self.Abominus.MechRef.Reflect = KBM.MechSpy:Add(self.Lang.Messages.Reflect[KBM.Lang], 5, "mechanic", self.Abominus)
  381. KBM.Defaults.MechObj.Assign(self.Abominus)
  382.  
  383. -- Assign Alerts and Timers for Triggers
  384.  
  385. self.Abominus.Triggers.Sandstorm = KBM.Trigger:Create(self.Lang.Debuff.Sandstorm[KBM.Lang], "playerDebuff", self.Abominus)
  386. self.Abominus.Triggers.Sandstorm:AddSpy(self.Abominus.MechRef.Sandstorm)
  387. self.Abominus.Triggers.Sandstorm:AddAlert(self.Abominus.AlertsRef.Sandstorm, true)
  388. self.Abominus.Triggers.SandstormRem = KBM.Trigger:Create(self.Lang.Debuff.Sandstorm[KBM.Lang], "playerBuffRemove", self.Abominus)
  389. self.Abominus.Triggers.SandstormRem:AddStop(self.Abominus.MechRef.Sandstorm)
  390.  
  391. self.Abominus.Triggers.Reflect = KBM.Trigger:Create(self.Lang.Notify.Reflect[KBM.Lang], "notify", self.Abominus)
  392. self.Abominus.Triggers.Reflect:AddSpy(self.Abominus.MechRef.Reflect)
  393.  
  394. self.Abominus.Triggers.PhaseTwo = KBM.Trigger:Create(70, "percent", self.Ix’ior)
  395. self.Abominus.Triggers.PhaseTwo:AddPhase(self.PhaseTwo)
  396.  
  397. self.Abominus.CastBar = KBM.Castbar:Add(self, self.Abominus)
  398. self.Zorzyx.CastBar = KBM.Castbar:Add(self, self.Zorzyx)
  399. self.Torkrik.CastBar = KBM.Castbar:Add(self, self.Torkrik)
  400. self.Ixior.CastBar = KBM.Castbar:Add(self, self.Ixior)
  401. self.PhaseObj = KBM.PhaseMonitor.Phase:Create(1)
  402. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement