vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 --[[
2 DiscoDice by Discoepfeand of Sargeras
3  
4 The mod is designed to make it easier to manage Slice and Dice
5  
6 Many Thanks goes to the creator of stunwatch for great examples
7  
8 in his code which I could use in here.
9  
10 "get Jiggy"
11 ]]
12  
13 -- Constants
14 DISCODICE_MAX_COMBO_POINTS = MAX_COMBO_POINTS;
15  
16 function DiscoDice_Initialize()
17 this:RegisterEvent("CHAT_MSG_WHISPER");
18 this:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS")
19 this:RegisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE")
20 this:RegisterEvent("PLAYER_COMBO_POINTS");
21 this:RegisterEvent("SPELLCAST_STOP")
22 this:RegisterEvent("SPELLCAST_START")
23 DiscoDice_StartupMessage()
24 DiscoDice.SnDEnd = 0;
25 DiscoDice.SnDEndRupture = 0;
26 DiscoDice.SnDEndEA = 0;
27 DiscoDice.itsago = 0;
28 DiscoDice.itsagoRupture = 0;
29 DiscoDice.itsagoEA = 0;
30 DiscoDice.ShowStatus = 3;
31  
32 maxtime = GetTime()
33 -- oldichi = CastSpellByName
34 -- CastSpellByName = MyMod_newCastSpellByName
35  
36 if DiscoDice_var == nil then
37 DiscoDice_var = 1.0
38 end
39  
40 if DiscoDice_ShowType == nil then
41 DiscoDice_ShowType = "normal"
42 end
43  
44 if DiscoDice_State == nil then
45 DiscoDice_state = "on"
46 end
47  
48 if DiscoDice_displaytype == nil then
49 DiscoDice_Displaytype = 2
50 end
51  
52 if DiscoDice_Scale == nil then
53 DiscoDice_Scale = 1
54 end
55  
56 if DiscoDice.EndMod == nil then
57 DiscoDice.EndMod = 0
58 end
59  
60 if DiscoDice.EndModRupture == nil then
61 DiscoDice.EndModRupture = 0
62 end
63  
64 if DiscoDice.EndModEA == nil then
65 DiscoDice.EndModEA = 0
66 end
67  
68 if DiscoDice_EAONOFF == nil then
69 DiscoDice_EAONOFF = "off"
70 end
71  
72 if DiscoDice_RuptureONOFF == nil then
73 DiscoDice_RuptureONOFF = "off"
74 end
75  
76 DiscoDice.CurrCombo = 0
77  
78 DiscoDice.SnDEnd = GetTime()
79 DiscoDice.SnDEndRupture = GetTime()
80 DiscoDice.SnDEndEA = GetTime()
81  
82 DiscoDice:SetScale(DiscoDice_Scale * UIParent:GetScale());
83 DEFAULT_CHAT_FRAME:AddMessage("blah " .. DiscoDice.EndMod .. "DiscoDice is using a ".. DiscoDice_var .. " time multiplier due to talents. It is currently turned " .. DiscoDice_state .. " and using a " .. DiscoDice_Scale .. " scaling factor.")
84  
85 SlashCmdList["DISCODICE"] = DiscoDice_command;
86 SLASH_DISCODICE1 = "/discodice";
87 SLASH_DISCODICE2 = "/ddice";
88  
89 end
90  
91 function DiscoDice_command(myArg1)
92  
93 if (myArg1 == "on") then
94 DiscoDice_state = "on"
95 DEFAULT_CHAT_FRAME:AddMessage("DiscoDice is now on")
96 elseif (myArg1 == "off") then
97 DiscoDice_state = "off"
98 DEFAULT_CHAT_FRAME:AddMessage("DiscoDice is now off.")
99 elseif (myArg1 == "hide") then
100 DiscoDiceBar1:Hide()
101 DiscoDiceBar2:Hide()
102 DiscoDiceBar3:Hide()
103 DiscoDice.ShowStatus = 3;
104 DiscoDice:EnableMouse(0)
105 elseif myArg1 == "status" then
106 DEFAULT_CHAT_FRAME:AddMessage("DiscoDice is using a ".. DiscoDice_var .. " time multiplier due to talents. It is currently turned " .. DiscoDice_state .. " and using a " .. DiscoDice_Scale .. " scaling factor. Expose Armor bar is " .. DiscoDice_EAONOFF .. " and Rupture bar is " .. DiscoDice_RuptureONOFF ..". SnD Show Type is " .. DiscoDice_ShowType ..".")
107 elseif (myArg1 == "show") then
108 DiscoDice_ShowBars()
109 elseif strfind(myArg1, "rupture") then
110 local DiscoDiceArg = string.find(myArg1, " ");
111 DiscoDice_RuptureONOFF = string.sub(myArg1, DiscoDiceArg + 1, string.len(myArg1));
112 DEFAULT_CHAT_FRAME:AddMessage("Rupture bar is now" .. DiscoDice_RuptureONOFF .. ".")
113 elseif strfind(myArg1, "expose") then
114 local DiscoDiceArg = string.find(myArg1, " ");
115 DiscoDice_EAONOFF = string.sub(myArg1, DiscoDiceArg + 1, string.len(myArg1));
116 DEFAULT_CHAT_FRAME:AddMessage("Expose Armor bar is now" .. DiscoDice_EAONOFF .. ".")
117 elseif strfind(myArg1, "display") then
118 local DiscoDiceArg = string.find(myArg1, " ");
119 DiscoDice_Displaytype = string.sub(myArg1, DiscoDiceArg + 1, string.len(myArg1));
120 elseif myArg1 == "doRupture" then
121 DiscoDiceBar2_Rupture()
122 elseif myArg1 == "doEA" then
123 DiscoDiceBar3_EA()
124 elseif strfind(myArg1, "talent") then
125 local DiscoDiceArg = string.find(myArg1, " ");
126 DiscoDice.Talent = string.sub(myArg1, DiscoDiceArg + 1, string.len(myArg1));
127 if DiscoDice.Talent == "1" then
128 DiscoDice_var = 1.15
129 DEFAULT_CHAT_FRAME:AddMessage("DiscoDice is using 1/3 improved Slice and Dice.")
130 elseif DiscoDice.Talent == "2" then
131 DiscoDice_var = 1.30
132 DEFAULT_CHAT_FRAME:AddMessage("DiscoDice is using 2/3 improved Slice and Dice.")
133 elseif DiscoDice.Talent == "3" then
134 DiscoDice_var = 1.45
135 DEFAULT_CHAT_FRAME:AddMessage("DiscoDice is using 3/3 improved Slice and Dice.")
136 else
137 DiscoDice_var = 1.00
138 DEFAULT_CHAT_FRAME:AddMessage("DiscoDice is using 0/3 improved Slice and Dice.")
139 end
140 elseif strfind(myArg1, "scale") then
141 local DiscoDiceArg = string.find(myArg1, " ")
142 DiscoDice_Scale = string.sub(myArg1, DiscoDiceArg + 1, string.len(myArg1))
143 DiscoDice_Scale = DiscoDice_Scale * 1
144 if ((DiscoDice_Scale < 3.01) and (DiscoDice_Scale > 0.5)) then
145 DiscoDice:ClearAllPoints();
146 DiscoDice:SetPoint("CENTER", "UIParent", "CENTER", 0, 0);
147 DiscoDice_ShowBars()
148 else
149 DEFAULT_CHAT_FRAME:AddMessage("Please choose a number between 0.5 and 3")
150 end
151 elseif strfind(myArg1, "mode") then
152 local DiscoDiceArg = string.find(myArg1, " ")
153 local DiscoDiceTempShow = string.sub(myArg1, DiscoDiceArg + 1, string.len(myArg1))
154 if (DiscoDiceTempShow == "fixed") then
155 DiscoDice_ShowType = "fixed";
156 DEFAULT_CHAT_FRAME:AddMessage("Now using a fixed bar size for Slice and Dice events")
157 else
158 DiscoDice_ShowType = "normal"
159 DEFAULT_CHAT_FRAME:AddMessage("Now using a full bar for all Slice and Dice events")
160 end
161 else
162 DEFAULT_CHAT_FRAME:AddMessage("DiscoDice commands:")
163 DEFAULT_CHAT_FRAME:AddMessage("/discodice and /ddice are interchangeable.")
164 DEFAULT_CHAT_FRAME:AddMessage("/ddice on and /ddice off turn the display on and off.")
165 DEFAULT_CHAT_FRAME:AddMessage("/ddice show: shows the bar and lets you move it.")
166 DEFAULT_CHAT_FRAME:AddMessage("/ddice hide: returns the bar to its hidden state until you next use Slice and Dice.")
167 DEFAULT_CHAT_FRAME:AddMessage("/ddice display [combo/timer] : toggles between the bar text being combo points or seconds left.")
168 DEFAULT_CHAT_FRAME:AddMessage("/ddice talent [0/1/2/3] : registers you as that many points in improved Slice and Dice.")
169 DEFAULT_CHAT_FRAME:AddMessage("/ddice scale [put number from 0.5 to 3 here] : scales the size of the bar on your screen.")
170 DEFAULT_CHAT_FRAME:AddMessage("/ddice rupture [on/off] : turns the rupture bar on or off")
171 DEFAULT_CHAT_FRAME:AddMessage("/ddice expose [on/off] : turns the expose armor bar on or off")
172 DEFAULT_CHAT_FRAME:AddMessage(myArg1)
173  
174 end
175 end
176  
177 function DiscoDice_ShowBars()
178 DiscoDice:EnableMouse(1);
179 DiscoDice.ShowStatus = 1;
180  
181 DiscoDiceBar1:SetAlpha(1);
182 DiscoDiceBar1StatusBar:SetMinMaxValues(0, 100);
183 DiscoDiceBar1StatusBar:SetValue(100)
184 DiscoDiceBar1StatusBarSpark:SetPoint("CENTER", "DiscoDiceBar1", "LEFT", 5, 0);
185 DiscoDiceBar1Text:SetText("Slice and Dice");
186 DiscoDiceBar1StatusBar:SetStatusBarColor(.5, .5, 1, 1);
187  
188 DiscoDiceBar2:SetAlpha(1);
189 DiscoDiceBar2StatusBar:SetMinMaxValues(0, 100);
190 DiscoDiceBar2StatusBar:SetValue(100)
191 DiscoDiceBar2StatusBarSpark:SetPoint("CENTER", "DiscoDiceBar2", "LEFT", 5, 0);
192 DiscoDiceBar2Text:SetText("Rupture");
193 DiscoDiceBar2StatusBar:SetStatusBarColor(1, .5, .5, 1);
194  
195 DiscoDiceBar3:SetAlpha(1);
196 DiscoDiceBar3StatusBar:SetMinMaxValues(0, 100);
197 DiscoDiceBar3StatusBar:SetValue(100)
198 DiscoDiceBar3StatusBarSpark:SetPoint("CENTER", "DiscoDiceBar3", "LEFT", 5, 0);
199 DiscoDiceBar3Text:SetText("Expose Armor");
200 DiscoDiceBar3StatusBar:SetStatusBarColor(.5, 1, .5, 1);
201  
202 DiscoDice:SetScale(DiscoDice_Scale * UIParent:GetScale());
203 DiscoDiceBar1:Show();
204 DiscoDiceBar2:Show();
205 DiscoDiceBar3:Show();
206 end
207  
208 function DiscoDice_OnUpdate()
209  
210 if (DiscoDice.itsago == 0 ) then
211 else
212 local status = GetTime()
213 if DiscoDice_ShowType == "normal" then
214 if ( status <= DiscoDice.SnDEnd ) then
215 DiscoDiceBar1StatusBar:SetMinMaxValues(DiscoDice.SnDStart, DiscoDice.SnDEnd);
216 local sparkPosition = 162 - ((status - DiscoDice.SnDStart) / (DiscoDice.SnDEnd - DiscoDice.SnDStart)) * 162;
217 DiscoDiceBar1StatusBar:SetValue(DiscoDice.SnDEnd + DiscoDice.SnDStart - status);
218 DiscoDiceBar1StatusBarSpark:SetPoint("CENTER", "DiscoDiceBar1StatusBar", "LEFT", sparkPosition, 0);
219 if DiscoDice_Displaytype == "combo" then
220 DiscoDice.SnDText = DiscoDice.CurrCombo
221 else
222 DiscoDice.RoundedTime = floor(DiscoDice.SnDEnd - status)
223 DiscoDice.SnDText = DiscoDice.RoundedTime
224 end
225 DiscoDiceBar1Text:SetText(DiscoDice.SnDText)
226 elseif ( DiscoDiceBar1:GetAlpha() > 0 ) then
227 local alpha = DiscoDiceBar1:GetAlpha() - 0.05;
228 if( alpha > 0 ) then
229 DiscoDiceBar1:SetAlpha(alpha);
230 else
231 DiscoDiceBar1:Hide();
232 DiscoDice.itsago = 0
233 end
234 end
235 else
236 if ( status <= DiscoDice.SnDEnd ) then
237 DiscoDiceBar1StatusBar:SetMinMaxValues(DiscoDice.SnDStart, DiscoDice.SnDEnd);
238 DiscoDiceBar1StatusBarB:SetMinMaxValues(DiscoDice.SnDStart, DiscoDice.SnDEnd);
239 local sparkPosition = 162 - ((status - DiscoDice.SnDStart) / (DiscoDice.SnDEnd - DiscoDice.SnDStart)) * 162;
240 sparkPosition = sparkPosition * DiscoDice.FixedRatio
241 DiscoDiceBar1StatusBar:SetValue(DiscoDice.SnDEnd * DiscoDice.FixedRatio + DiscoDice.SnDStart - status * DiscoDice.FixedRatio);
242 if DiscoDice.CurrCombo > 0 then
243 DiscoDiceBar1StatusBarB:SetValue(((DiscoDice.SnDEnd - DiscoDice.SnDStart)/21)*(6 + DiscoDice.CurrCombo * 3) + DiscoDice.SnDStart);
244 else
245 DiscoDiceBar1StatusBarB:SetValue(DiscoDice.SnDStart);
246 end
247 DiscoDiceBar1StatusBarSpark:SetPoint("CENTER", "DiscoDiceBar1StatusBar", "LEFT", sparkPosition, 0);
248 if DiscoDice_Displaytype == "combo" then
249 DiscoDice.SnDText = DiscoDice.CurrCombo
250 else
251 DiscoDice.RoundedTime = floor(DiscoDice.SnDEnd - status)
252 DiscoDice.SnDText = DiscoDice.RoundedTime
253 end
254 DiscoDiceBar1Text:SetText(DiscoDice.SnDText)
255 elseif ( DiscoDiceBar1:GetAlpha() > 0 ) then
256 local alpha = DiscoDiceBar1:GetAlpha() - 0.05;
257 if( alpha > 0 ) then
258 DiscoDiceBar1:SetAlpha(alpha);
259 else
260 DiscoDiceBar1:Hide();
261 DiscoDice.itsago = 0
262 end
263 end
264 end
265 end
266  
267 if (DiscoDice.itsagoRupture == 0 ) then
268 else
269 local statusRupture = GetTime()
270 if ( statusRupture <= DiscoDice.SnDEndRupture ) then
271 DiscoDiceBar2StatusBar:SetMinMaxValues(DiscoDice.SnDStartRupture, DiscoDice.SnDEndRupture);
272 local sparkPositionRupture = 162 - ((statusRupture - DiscoDice.SnDStartRupture) / (DiscoDice.SnDEndRupture - DiscoDice.SnDStartRupture)) * 162;
273 DiscoDiceBar2StatusBar:SetValue(DiscoDice.SnDEndRupture + DiscoDice.SnDStartRupture - statusRupture);
274 DiscoDiceBar2StatusBarSpark:SetPoint("CENTER", "DiscoDiceBar2StatusBar", "LEFT", sparkPositionRupture, 0);
275 if DiscoDice_Displaytype == "combo" then
276 DiscoDice.SnDTextRupture = DiscoDice.CurrCombo
277 else
278 DiscoDice.RoundedTimeRupture = floor(DiscoDice.SnDEndRupture - statusRupture)
279 DiscoDice.SnDTextRupture = DiscoDice.RoundedTimeRupture
280 end
281 DiscoDiceBar2Text:SetText(DiscoDice.SnDTextRupture)
282 elseif ( DiscoDiceBar2:GetAlpha() > 0 ) then
283 local alphaRupture = DiscoDiceBar2:GetAlpha() - 0.05;
284 if( alphaRupture > 0 ) then
285 DiscoDiceBar2:SetAlpha(alphaRupture);
286 else
287 DiscoDiceBar2:Hide();
288 DiscoDice.itsagoRupture = 0
289 end
290 end
291 end
292  
293 if (DiscoDice.itsagoEA == 0 ) then
294 else
295 local statusEA = GetTime()
296 if ( statusEA <= DiscoDice.SnDEndEA ) then
297 DiscoDiceBar3StatusBar:SetMinMaxValues(DiscoDice.SnDStartEA, DiscoDice.SnDEndEA);
298 local sparkPositionEA = 162 - ((statusEA - DiscoDice.SnDStartEA) / (DiscoDice.SnDEndEA - DiscoDice.SnDStartEA)) * 162;
299 DiscoDiceBar3StatusBar:SetValue(DiscoDice.SnDEndEA + DiscoDice.SnDStartEA - statusEA);
300 DiscoDiceBar3StatusBarSpark:SetPoint("CENTER", "DiscoDiceBar3StatusBar", "LEFT", sparkPositionEA, 0);
301 if DiscoDice_Displaytype == "combo" then
302 DiscoDice.SnDTextEA = DiscoDice.CurrCombo
303 else
304 DiscoDice.RoundedTimeEA = floor(DiscoDice.SnDEndEA - statusEA)
305 DiscoDice.SnDTextEA = DiscoDice.RoundedTimeEA
306 end
307 DiscoDiceBar3Text:SetText(DiscoDice.SnDTextEA)
308 elseif ( DiscoDiceBar3:GetAlpha() > 0 ) then
309 local alphaEA = DiscoDiceBar3:GetAlpha() - 0.05;
310 if( alphaEA > 0 ) then
311 DiscoDiceBar3:SetAlpha(alphaEA);
312 else
313 DiscoDiceBar3:Hide();
314 DiscoDice.itsagoEA = 0
315 end
316 end
317 end
318  
319  
320  
321 end
322  
323 function DiscoDice_LockUnlock()
324 if (DiscoDice.ShowStatus == 1) then
325 DiscoDice.ShowStatus = 2;
326 else
327 DiscoDice.ShowStatus = 1;
328 end
329 end
330  
331  
332 function DiscoDice_OnEvent(event)
333 if DiscoDice_state ~= "on" then
334 return
335 end
336 if event == "CHAT_MSG_SPELL_SELF_DAMAGE" then
337 if arg1 == "You perform Slice and Dice." then
338 DiscoDiceBar1_Slice()
339 end
340 elseif event == "PLAYER_COMBO_POINTS" then
341 DiscoDice.CurrCombo = GetComboPoints()
342 end
343 end
344  
345  
346 function DiscoDiceBar1_Slice()
347 if DiscoDice.EndMod ~= 0 then
348 DiscoDice.SnDPoss = GetTime() + DiscoDice_var * (6 + (3*DiscoDice.CurrCombo))
349 if DiscoDice.SnDPoss < DiscoDice.SnDEnd then
350 return
351 end
352 end
353 DiscoDice:EnableMouse(0)
354 DiscoDice.itsago = 1;
355 DiscoDice:SetScale(DiscoDice_Scale * UIParent:GetScale());
356 DiscoDiceBar1Text:SetText("");
357 DiscoDiceBar1:SetBackdropColor(0, 0, 0, 0.3);
358 DiscoDiceBar1StatusBar:SetStatusBarColor(.5, .5, 1, 1);
359 DiscoDiceBar1:SetAlpha(1)
360 DiscoDiceBar1StatusBar:SetAlpha(.75)
361 DiscoDiceBar1:Show()
362 DiscoDice.EndMod = DiscoDice_var * (6 + (3*DiscoDice.CurrCombo))
363 DiscoDice.SnDStart = GetTime();
364 DiscoDice.SnDEnd = GetTime() + DiscoDice.EndMod;
365 DiscoDice.FixedRatio = (6 + (3*DiscoDice.CurrCombo))/21;
366 -- DiscoDiceBar1StatusBarB:SetValue(DiscoDice.SnDEnd);
367 DiscoDiceBar1StatusBarB:SetValue(0);
368 DiscoDiceBar1StatusBarB:SetStatusBarColor(1, 1, 0, .9);
369 end
370  
371 function DiscoDiceBar2_Rupture()
372 CastSpellByName("Rupture")
373 if ((DiscoDice_RuptureONOFF ~= "on") or (DiscoDice.CurrCombo == 0) or (UnitMana("player") < 25)) then
374 return
375 end
376 DiscoDice.itsagoRupture = 1;
377 if DiscoDice.EndModRupture ~= 0 then
378 DiscoDice.SnDPossRupture = GetTime() + DiscoDice_var * (2 + (4*DiscoDice.CurrCombo))
379 if DiscoDice.SnDPossRupture < DiscoDice.SnDEndRupture then
380 return
381 end
382 end
383 DiscoDice:EnableMouse(0)
384 DiscoDiceBar2Text:SetText("");
385 DiscoDice:SetScale(DiscoDice_Scale * UIParent:GetScale());
386 DiscoDiceBar2:SetBackdropColor(0, 0, 0, 0.3);
387 DiscoDiceBar2StatusBar:SetStatusBarColor(1, .5, .5, 1);
388 DiscoDiceBar2:SetAlpha(0.75)
389 DiscoDiceBar2:Show()
390 DiscoDice.EndModRupture = 2 + 4*DiscoDice.CurrCombo
391 DiscoDice.SnDStartRupture = GetTime();
392 DiscoDice.SnDEndRupture = GetTime() + DiscoDice.EndModRupture;
393 end
394  
395 function DiscoDiceBar3_EA()
396 CastSpellByName("Expose Armor")
397 if ((DiscoDice_EAONOFF ~= "on") or (DiscoDice.CurrCombo == 0) or (UnitMana("player") < 25)) then
398 return
399 end
400 DiscoDice:EnableMouse(0)
401 DiscoDice.itsagoEA = 1;
402 DiscoDiceBar3Text:SetText("");
403 DiscoDice:SetScale(DiscoDice_Scale * UIParent:GetScale());
404 DiscoDiceBar3:SetBackdropColor(0, 0, 0, 0.3);
405 DiscoDiceBar3StatusBar:SetStatusBarColor(.5, 1, .5, 1);
406 DiscoDiceBar3:SetAlpha(0.75)
407 DiscoDiceBar3:Show()
408 DiscoDice.EndModEA = 30
409 DiscoDice.SnDStartEA = GetTime();
410 DiscoDice.SnDEndEA = GetTime() + DiscoDice.EndModEA;
411 end
412  
413 function DiscoDice_StartupMessage()
414 DEFAULT_CHAT_FRAME:AddMessage("DiscoDice is loaded. Type /ddice to show commands.")
415 end
416