Really only concerns dd actions/spells with travel time.
Currently (in the engine) actions calculate the final damage amount in ::execute(), after that they are basically immutable (damage numbers wise) with ::impact() simply doing damage accounting.
In-game though it looks like the final damage is calculated on impact and spells snapshot different multipliers at different times. I did not do very extensive testing, but my current theory from the testing I've done is that target debuffs "state" gets snapshotted on cast end while player buffs are accounted for on impact.
The latter is easily (somewhat) testable with a mage (even the premade one, though higher haste levels make it easier) by standing at max range and casting RoP right after Frostbolt (or any spell with low travel speed) - Frostbolt benefits from RoP even though RoP buff is applied while the FB is in flight.
Rapid Killing (buff from MM artifact trait that boosts crit damage) behaves the same - it (Trueshot which applies it) may be activated after Windburst cast, with the projectile in the air, and it will affect it; conversely if it [Rapid Killing] fades while Windburst is mid-flight it does not affect it on impact.
The former is pretty common knowledge, I believe. For MM hunters, for example, Vulnerable is accounted for on cast end, which can be easily checked with a variety of scenarios and is usually taken advantage of in play.
Blizzard designed Frost Mages to compute damage on impact. This is a special case. Would be interested in seeing some logs where target-based multipliers affect in flight projectiles for other classes. Lava Burst for example is the converse, it checks for the presence of the target-based aura (Flame Shock) when the spell is cast and generates damage based on that, not when the bolt of lava impacts the target.
I'm mostly talking about player-based multipliers here.
What really prompted me doing the testing and writing this is Trueshot / Rapid Killing. Which affects in-flight projectiles.
Then I decided to test some other classes (and buff types) - Frost was the first choice as it both has a slow projectile in Frostbolt and a player +dmg buff in RoP.
Sure, but Blizzard has outright stated that Frost is a special case here (they compute damage on impact, instead of cast finish). If you can do WCL logs where this effect is shown for trueshot / rapid killing, i'd be really interested. (And then it begs the question what has happened, since it's not supposed to work like that)
Quick testing as I can't find the old logs atm
the last Windburst there is with Trueshot activated after Windburst SPELL_CAST_SUCCESS
I'm not proficient enough with WCL, but the relevant log lines are
1/8 16:06:28.235 SPELL_CAST_SUCCESS,Player-1598-06E9661C,"Shermy-Sunstrider",0x511,0x0,Creature-0-3895-1116-18-87762-00006C7AA0,"Raider's Training Dummy",0x10a28,0x0,204147,"Windburst",0x1,Player-1598-06E9661C,0000000000000000,2547600,2547600,25821,6005,2,106,150,20,5236.73,-4129.05,823
1/8 16:06:28.543 SPELL_AURA_APPLIED,Player-1598-06E9661C,"Shermy-Sunstrider",0x511,0x0,Player-1598-06E9661C,"Shermy-Sunstrider",0x511,0x0,193526,"Trueshot",0x1,BUFF
1/8 16:06:28.543 SPELL_CAST_SUCCESS,Player-1598-06E9661C,"Shermy-Sunstrider",0x511,0x0,0000000000000000,nil,0x80000000,0x80000000,193526,"Trueshot",0x1,Player-1598-06E9661C,0000000000000000,2547600,2547600,25821,6005,2,89,150,0,5236.73,-4129.05,823
1/8 16:06:28.543 SPELL_AURA_APPLIED,Player-1598-06E9661C,"Shermy-Sunstrider",0x511,0x0,Player-1598-06E9661C,"Shermy-Sunstrider",0x511,0x0,191342,"Rapid Killing",0x1,BUFF
1/8 16:06:28.877 SPELL_DAMAGE,Player-1598-06E9661C,"Shermy-Sunstrider",0x511,0x0,Creature-0-3895-1116-18-87762-00006C7AA0,"Raider's Training Dummy",0x10a28,0x0,204147,"Windburst",0x1,Creature-0-3895-1116-18-87762-00006C7AA0,0000000000000000,1,10832800,0,0,1,0,0,0,5237.46,-4156.50,103,1439845,1183622,1,0,0,0,1,nil,nil
while Windburst without Rapid Killing does sub 1m crits:
1/8 16:02:31.792 SPELL_DAMAGE,Player-1598-06E9661C,"Shermy-Sunstrider",0x511,0x0,Creature-0-3895-1116-18-87762-00006C7AA0,"Raider's Training Dummy",0x10a28,0x0,204147,"Windburst",0x1,Creature-0-3895-1116-18-87762-00006C7AA0,0000000000000000,1,10832800,0,0,1,0,0,0,5237.46,-4156.50,103,959924,959923,1,0,0,0,1,nil,nil
You are talking about critical damage here? It indeed looks like buffs that affect critical damage bonus can be applied at impact, which probably means critical damage is actually calculated at impact.
Yeah, Rapid Killing is a critical damage bonus multiplier buff.
I'm currently trying to test RoP on a Fire mage.
Premade mages do not have enough haste (even under TW) to test Fireball -> RoP (or I'm doing something wrong). But at least blinking out of RoP with Fireball in flight retains the RoP bonus on it, so I guess it really is only about critical damage.
Yep, that would be my guess also. But it may also mean that "critical strike success" is rolled on impact. This would change some timing-related things. I'll see if Blizzard wants to comment on this stuff, and then look at what to do in the core to adjust the critical strike bonus damage computation.
I don't think crit chance is rolled on impact, at least on warrior.
Cast storm bolt (has travel time)
Immediately press battle cry - 100% crit
Storm bolt will not crit everytime on impact.
Nay, it is looking like it's only critical bonus damage.
Changed this behavior in c745ee8.