Created
April 26, 2017 21:25
-
-
Save cgdangelo/2acb27326132ae41cd64ce8e594af238 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/engine/class_modules/sc_mage.cpp b/engine/class_modules/sc_mage.cpp | |
index 30370d8..a2a0df2 100755 | |
--- a/engine/class_modules/sc_mage.cpp | |
+++ b/engine/class_modules/sc_mage.cpp | |
@@ -381,6 +381,11 @@ public: | |
// Procs | |
struct procs_t | |
{ | |
+ proc_t* arcane_missiles_generated, // AM proc | |
+ * arcane_missiles_removed, // AM cast | |
+ * arcane_missiles_expired, // AM buff expires | |
+ * arcane_missiles_wasted; // Additional AM generated at max stacks | |
+ | |
proc_t* heating_up_generated, // Crits without HU/HS | |
* heating_up_removed, // Non-crits with HU >200ms after application | |
* heating_up_ib_converted, // IBs used on HU | |
@@ -1606,6 +1611,13 @@ struct arcane_missiles_t : public buff_t | |
} | |
return buff_t::trigger( stacks, value, chance, duration ); | |
} | |
+ | |
+ void expire( timespan_t ) | |
+ { | |
+ mage_t* p = static_cast<mage_t*>( player ); | |
+ | |
+ p -> procs.arcane_missiles_wasted -> occur(); | |
+ } | |
}; | |
@@ -1997,9 +2009,20 @@ public: | |
void trigger_am( int source_id, double chance = -1.0, | |
int stacks = 1 ) | |
{ | |
+ const auto am_stacks = p() -> buffs.arcane_missiles -> stack(); | |
+ | |
if ( static_cast<buff_t*>(p() -> buffs.arcane_missiles) | |
-> trigger( stacks, buff_t::DEFAULT_VALUE(), chance ) ) | |
{ | |
+ if (am_stacks == p() -> buffs.arcane_missiles -> max_stack() ) | |
+ { | |
+ p() -> procs.arcane_missiles_wasted -> occur(); | |
+ } | |
+ else | |
+ { | |
+ p() -> procs.arcane_missiles_generated -> occur(); | |
+ } | |
+ | |
if ( source_id < 0 ) | |
{ | |
p() -> sim -> out_debug.printf( "Action %s does not have valid AM source_id", | |
@@ -3444,6 +3467,8 @@ struct arcane_missiles_t : public arcane_mage_spell_t | |
p() -> buffs.arcane_missiles -> decrement(); | |
+ p() -> procs.arcane_missiles_removed -> occur(); | |
+ | |
} | |
void last_tick ( dot_t * d ) override | |
@@ -8181,6 +8206,10 @@ void mage_t::init_procs() | |
switch ( specialization() ) | |
{ | |
case MAGE_ARCANE: | |
+ procs.arcane_missiles_expired = get_proc( "Arcane Missiles expired" ); | |
+ procs.arcane_missiles_generated = get_proc( "Arcane Missiles generated" ); | |
+ procs.arcane_missiles_removed = get_proc( "Arcane Missiles removed" ); | |
+ procs.arcane_missiles_wasted = get_proc( "Arcane Missiles wasted" ); | |
break; | |
case MAGE_FROST: | |
break; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment