Jump to content

Theorycrafting Assumptions


Aelanis

Recommended Posts

I normally go the really lazy way and just say "Heres you're mainstat, now increment power/crit by values of 1!", but you did it on a per mod basis so I did it that way.

 

So, uh, I may have made a very serious typo that might be the cause of Deception doing so much damage. I said Saber Strike goes to roughly 0 in the Execute and Voltaic stays the same. Well, Voltaic actually goes to roughly 3/4 of what it used to, and Saber Strike does roughly the same. Big difference. Hopefully that puts it more in line with reality.

Edited by Aelanis
Link to comment
Share on other sites

  • Replies 58
  • Created
  • Last Reply

Top Posters In This Topic

Well I know squat of coding so I wouldn't be able to tell if thats to hard to do. I'll trust the expertise of you guys on that one.

Just a note to not get misunderstood. The problem I had was not so much how much damage was done by a spec. The point I wanted to make was that the critrating will be (slightly) to high in serenities case. In most bossfights you will see relativly less serenity, spinning and double strikes which are making use of the 30% surge bonus. The more DoT ticks a parse has, the fewer amount of crit is needed.

If its to hard to code than just ignore this idea but if the difference is noticeable a note of it might be a wise thing.

 

As for the relics, there are actually generally accepted values for uptime. Instead of using those, I literally took the uptime off of StarParse, which calculates buff uptime for you. Relics are already accounted for properly :)

 

I know that those are accepted values for uptime. I'm just saying that its not doable to predict when/which attacks will get buffed. In the worst case it will proc while you are doing 1 or 2 saberstrikes instead of 2 spinning strikes. Thats quite a big difference. I am aware there isn't a better way of theorising it into a model/simulation.

 

Same discussion point about alacrity. Are you taking the whole alacrity into account or are you taking a factor of it? I am currently using a 50% (average), 60% (Skilled) and 75% (Very Skilled) factor for it since I don't believe anyone can make use of the full 100% boost during any bossfight (exept fights like maybe the 1st bosses in DF/DP/Rav/ToS)

Link to comment
Share on other sites

Well I know squat of coding so I wouldn't be able to tell if thats to hard to do. I'll trust the expertise of you guys on that one.

Just a note to not get misunderstood. The problem I had was not so much how much damage was done by a spec. The point I wanted to make was that the critrating will be (slightly) to high in serenities case. In most bossfights you will see relativly less serenity, spinning and double strikes which are making use of the 30% surge bonus. The more DoT ticks a parse has, the fewer amount of crit is needed.

If its to hard to code than just ignore this idea but if the difference is noticeable a note of it might be a wise thing.

 

 

 

I know that those are accepted values for uptime. I'm just saying that its not doable to predict when/which attacks will get buffed. In the worst case it will proc while you are doing 1 or 2 saberstrikes instead of 2 spinning strikes. Thats quite a big difference. I am aware there isn't a better way of theorising it into a model/simulation.

 

Same discussion point about alacrity. Are you taking the whole alacrity into account or are you taking a factor of it? I am currently using a 50% (average), 60% (Skilled) and 75% (Very Skilled) factor for it since I don't believe anyone can make use of the full 100% boost during any bossfight (exept fights like maybe the 1st bosses in DF/DP/Rav/ToS)

 

You can safely assume full use of the alacrity boost. Otherwise, due to downtime, you'd have to assume incomplete use of every other stat in the game as well. Alacrity, if anything, is least affected by downtime, due to cooldown reductions. On top of this, there really is no reason to optimize for sub-standard levels of play. At the risk of sounding elitist, there's no point in assuming people are anything but near-perfect when playing the spec. What purpose would it serve to optimize for someone playing at less than full capacity, when they're only going to get better with more practice and instruction? It's just increasing the workload (and computation time, though it's typically a small amount of time anyway) for a very marginal benefit.

 

As for relics: there is literally no other way to do it. You'll see higher damage values if you get lucky (or are skilled) and lower damage values if you get unlucky (or don't game your relic procs for max value). Because of that, better players will achieve slightly higher numbers than our calculations will say, while less skilled players may not quite meet the values. Unfortunately, that's how time averages work: they don't account for people taking advantage of good situation. This means that our numbers may be marginally off for the absolute best players, but the chances of that are incredibly low, due to the very small increases we'll see over our calculated values (typically < 5% increases).

Link to comment
Share on other sites

Well, I decided that any remaining discrepancies between my numbers and those of my calculations are due to me being somewhat better than the time-averaged robot playing the class, and have posted my final results. Most up to date version of my code is what follows (24/12/2014, 20:22 GMT):

 

 

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
   int MGearLvl = 5;
   int GL = 1;//Gear Level: 0 = 192, 1 = 198, 2 = 204, 3 = 210, 4 = 216
   int Spec = 1; //0 = Deception, 1 = Hatred
   int WPTable [MGearLvl];
   WPTable[0] = 221;
   for (int i = 1; i < MGearLvl; i++)
   {
           int j = i - 1;
           WPTable[i] = WPTable[j] + int (i * 39/2);
   }

   int SeconValues [MGearLvl][2];
   SeconValues[0][0] = 82;
   SeconValues[0][1] = 74;
   for (int i = 1; i < MGearLvl; i++)
   {
           int j = i - 1;
           SeconValues[i][0] = SeconValues[j][0] + int (i * 8);
           SeconValues[i][1] = SeconValues[j][1] + int (i * 7);
   }

   int TerValues [MGearLvl];
   TerValues[0] = 111;
   for (int i = 1; i < MGearLvl; i++)
   {
           int j = i - 1;
           TerValues[i] = TerValues[j] + int (ceil(i * 19/2));
   }

   int WepDam [5][4];
   WepDam[0][0] = 656;
   WepDam[0][1] = 984;
   WepDam[0][2] = 1313*2;
   WepDam[0][3] = (WepDam[0][0]+WepDam[0][1])/2;
   for(int i = 1; i < MGearLvl; i++)
   {
           WepDam[i][0] = WepDam[i-1][0] + 40;
           WepDam[i][1] = WepDam[i-1][1] + int (121/2);
           WepDam[i][2] = WepDam[i-1][2] + (int (161/2))*2;
           WepDam[i][3] = (WepDam[i][0]+WepDam[i][1])/2;
   }

   int SeconOptiT [42];
   int TerPieces = 4;
   int TerOptiT [TerPieces+1];//5 for 198? 204? And higher.
   int BWP = WPTable[GL]*12 + 198 + 600;
   int TotTert = 4 * TerValues[GL];
   int TotSecon = SeconValues[GL][0]*10 + SeconValues[GL][1]*12;

   int RelicProcVal [MGearLvl];
   int RelicStatVal [MGearLvl];
   RelicProcVal[0] = 855;
   RelicStatVal[0] = 48;
   for(int i = 1; i < MGearLvl; i++)
   {
           RelicProcVal[i] = RelicProcVal[i-1] + 45;
           RelicStatVal[i] = RelicStatVal[i-1] + 4;
   }

   SeconOptiT[0] = 0;
   for (int i = 1; i < 42; i++)
   {
           SeconOptiT[i] = SeconOptiT[i-1] + SeconValues[GL][1];
           if (i % 3 == 2)
                   SeconOptiT[i] = SeconOptiT[i] - SeconValues[GL][1]*2 + SeconValues[GL][0];
   }

   for (int i = 0; i < TerPieces+1; i++)
   {
       TerOptiT[i] = TerValues[GL]*i;
   }

   int AugVal = 52;
   double WP = BWP;
   double Power = TotSecon;
   int CritR = 0;
   int AlacR = 0;
   int SurgeR = TotTert;
   int GearPower = 0;
   int GearWP = 0;

   int MaxDPSVals [6] = {};
   double MaxDPS = 0;

   double RelicUptime [2];
   RelicUptime[0] = 6.0/23.0;
   RelicUptime[1] = 0.3;
   double TwoPcSetUptime [2];
   TwoPcSetUptime[0] = 0.5;
   TwoPcSetUptime[1] = 15.0/36.0;
   double TwoPcSetVal = 1.0 + TwoPcSetUptime[spec]*0.02;

   for(int i = 0; i < 42; i++) //Secondary stat loop
   {
           GearPower = TotSecon - SeconOptiT[i] + 2*RelicStatVal[GL] + 81;
           Power = GearPower + 750.0*15.0/180.0 + RelicUptime[spec]*RelicProcVal[GL];
           CritR = SeconOptiT[i];
           for(int j = 0; j < 12; j++) //Augment stat loop
           {
                   GearWP = BWP + (12 - j) * AugVal;
                   WP = (GearWP + RelicUptime[spec]*RelicProcVal[GL])*1.05;
                   Power = Power + j * AugVal;
                   GearPower = GearPower + j * AugVal;
                   for(int k = 0; k < TerPieces+1; k++) //Tertiary stat loop + calculations
                   {
                           SurgeR = TerOptiT[k];
                           AlacR = TotTert - TerOptiT[k];
                           double SMCB [2];
                           SMCB[0] = 0.0475; //spec melee crit boost
                           SMCB[1] = 0.05;

                           //Calculating Char Sheet Vals
                           double BonusDam = (Power*0.23 + WP *0.2)*1.05;
                           double FBonusDam = BonusDam + WepDam[GL][2]*0.23*1.05;
                           double MBonusDam = BonusDam + 166*1.05*0.2;
                           double CritPerc = 0.3*(1.0-pow((1.0-(0.01/0.3)),(((double)CritR)/60)/0.9))+0.2*(1.0-pow((1.0-(0.01/0.2)),(((double)WP)/60.0)/5.5))+0.11;
                           double ForceCrit = CritPerc;
                           double MeleeCrit = CritPerc + 20*(1-pow((1-(0.01/0.2)),(166.0/60.0)/5.5))/100.0 + SMCB[spec];
                           double AlacPerc = 30.0*(1-pow((29.0/30.0),(((double)AlacR)/75.0)))/100.0;
                           double SurgePerc = (30.0*(1-pow((29.0/30.0),(((double)SurgeR)/60.0)/0.22))+51)/100.0;
                           //cout << "\nAlacR, Perc: " << AlacR << " = " << AlacPerc << "\n";

                           //+25% boost to Ball Lightning (skip Twin Surge!)
                           //+20% damage to Maul
                           //+10% damage to Voltaic, Assassinate, Deception only
                           //+1.25% damage to all attacks, Deception only
                           //+30% Surge to Discharge, Ball Lightning, Deception only
                           //+20% damage to Discharge, Hatred only
                           //+10% damage to Creeping Terror
                           //Death Mark boost is complicated.
                           //+10% damage boost to all DoTs, Hatred only
                           //+30% Surge on Thrash, Assassinate, Leeching Strike, Hatred only
                           //+20% damage boost to all DoTs (and initial hits), hatred only
                           //+3.75% damage boost to Death Field, DoTs (and initial hits), Hatred only
                           //+5% damage boost to Thrash, Voltaic Slash, Leeching Strike
                           //+6.25% damage boost to Charge damage
                           //+5% melee crit chance (+4.75% in Deception)
                           //+50% Lightning Charge crit chance
                           //+10% Armor pen in Deception only
                           //-20% Boss armor rating
                           //+7% I/E damage
                           //+5% melee damage
                           //+10% damage to Death Field
                           //+5% damage to all Force Attacks
                           // All damage values will be averages, for both critical and overall values
                           // Still need to separate execute from non-execute damage (0.7x and 0.3x, backwards respectively)
                           double AssassinateDamD = ((1+0.77)*WepDam[GL][3]+2.657*MBonusDam+0.266*3185)*(1+(.074+MeleeCrit)*SurgePerc)*(1.05+0.1);
                           double AssassinateDamH = ((1+0.77)*WepDam[GL][3]+2.657*MBonusDam+0.266*3185)*(1+(0.11+MeleeCrit)*(0.3+SurgePerc))*(1.05);
                           double SaberStrikeDamH = ((1-0.66)*WepDam[GL][3] + MBonusDam*0.33)*(1+MeleeCrit*(SurgePerc))*(1.05);
                           double SaberStrikeDamD = ((1-0.66)*WepDam[GL][3] + MBonusDam*0.33)*(1+MeleeCrit*(SurgePerc))*(1.05);
                           double ThrashDam = ((1-0.61)*WepDam[GL][3] + 0.875*MBonusDam + 0.0875*3185)*(1+MeleeCrit*(SurgePerc+.3))*(1.05+0.05);
                           double VoltaicDam = ((1-0.46)*WepDam[GL][3]+0.8*MBonusDam+0.081*3185)*(1+MeleeCrit*SurgePerc)*(1.05+0.1+0.05);
                           double MaulDam = ((1+0.54)*WepDam[GL][3]+2.31*MBonusDam+0.231*3185)*(1+(0.084+MeleeCrit)*(0.3+SurgePerc))*(1.05+0.2);
                           double DeathFieldDam = (1.81*FBonusDam+0.181*3185)*(1+(.25+ForceCrit)*(0.3+SurgePerc))*(1.05*1.07*1.1);
                           double DemolishInitDam = (1.234*FBonusDam+0.1234*3185)*(1+(0.125+ForceCrit)*SurgePerc)*(1.05+0.2)*(1.07);
                           double DemolishTickDam = (0.3284*FBonusDam+0.03284*3185)*(1+ForceCrit*SurgePerc)*(1.05+0.1+0.2)*(1.00686);
                           double CreepingTerrorDam = (0.309*FBonusDam+0.0309*3185)*(1+ForceCrit*SurgePerc)*(1.05+0.1+0.1+0.2)*(1.0686);
                           double DischargeDamD = (0.73*FBonusDam + 0.073*3185)*(1 + (0.1366+ForceCrit)*(SurgePerc+0.3))*(1.05*1.07);
                           double DischargeDamH = (0.362*FBonusDam + 0.0362*3185)*(1 + ForceCrit*SurgePerc)*(1.05+0.2+0.1+0.2)*(1.0686);
                           double LeechingDam = ((1+0.4)*WepDam[GL][3]+2.008*MBonusDam+0.02008*3185)*(1+MeleeCrit*(0.3+SurgePerc))*(1.05*1.05);
                           double BallLightningDam = (2.06*FBonusDam+0.206*3185)*(1+(0.151+ForceCrit)*(0.3+SurgePerc))*(1.05*1.25);
                           double SurgingChargeDam = (0.45*FBonusDam+0.045*3185)*(1+ForceCrit*SurgePerc)*(1.05*1.07*1.0625);
                           double LightningChargeDam = (0.234*FBonusDam+0.0234*3185)*(1+(0.5+ForceCrit)*SurgePerc)*(1.05*1.0625);

                           double BossArmH = 8829*.8/(8829*.8+240*60+800);
                           double BossArmD = (8829*.9*.8)/((8829*.9*.8)+240*60+800);

                           if(Spec==0)
                           {
                                   double bld = BallLightningDam/6.3;
                                   double md = MaulDam/10.5;
                                   double add = AssassinateDamD/6.3;
                                   double ssd1 = SaberStrikeDamD/9.2;
                                   double ssd2 = ssd1*3/4;
                                   double vsd1 = VoltaicDam/6.3;
                                   double vsd2 = vsd1*3/4;
                                   double dd = DischargeDamD*3/7.9;
                                   double scd = SurgingChargeDam/(3.35);
                                   double DeceptionArmorDam1 = bld+md+ssd1+vsd1;
                                   double DeceptionArmorDam2 = bld+md+add+ssd2+vsd2;
                                   double DeceptionOtherDam = dd+scd;
                                   double DeceptionDam1 = DeceptionArmorDam1*(1-BossArmD)+DeceptionOtherDam;
                                   double DeceptionDam2 = DeceptionArmorDam2*(1-BossArmD)+DeceptionOtherDam;
                                   double DeceptionDPS = ((DeceptionDam1*.7)+(DeceptionDam2*.3*1.05))*(1+AlacPerc)*TwoPcSetVal;
                                   if(DeceptionDPS > MaxDPS)
                                   {
                                           MaxDPS = DeceptionDPS;
                                           MaxDPSVals[0] = GearWP;
                                           MaxDPSVals[1] = GearPower;
                                           MaxDPSVals[2] = CritR;
                                           MaxDPSVals[3] = AlacR;
                                           MaxDPSVals[4] = SurgeR;
                                           MaxDPSVals[5] = j;

                                           /*cout << "\nbld: " << bld << "\nmd: " << md << "\nadd: " << add << "\nssd: " << ssd;
                                           cout << "\nvsd: " << vsd << "\ndd: " << dd << "\nscd: " << scd;
                                           cout << "\nBallLightningDam: " << BallLightningDam*(1-BossArmD) << "\n";*/
                                           //cout << "\nMeleeCrit: " << MeleeCrit << " FCrit: " << ForceCrit << "\n";
                                           //cout << "\nSurgeR, Perc: " << SurgeR << " = " << SurgePerc;
                                           //cout << "\nAlacR, Perc: " << AlacR << " = " << AlacPerc << "\n";
                                           //cout << "\nMBonusDam: " << MBonusDam << " FBonusDam: " <<FBonusDam << "\n";
                                   }
                           }
                           else
                           {
                                   double adh1 = AssassinateDamH/15;
                                   double adh2 = AssassinateDamH/5.4;
                                   double ssh1 = SaberStrikeDamH/6.3;
                                   double ssh2 = SaberStrikeDamH/10.5;
                                   double td1 = ThrashDam/7.81;
                                   double td2 = ThrashDam/23;
                                   double ded = (DemolishTickDam*6 + DemolishInitDam)/9;
                                   double did = DischargeDamH*7/18;
                                   double lcd = LightningChargeDam/2.13;
                                   double lsd = LeechingDam/13.5;
                                   double dfd = DeathFieldDam/15;
                                   double ctd = CreepingTerrorDam*7/18;
                                   double HatredArmorDam1 = adh1+ssh1+td1+ded+did+lcd+lsd;
                                   double HatredArmorDam2 = adh2+ssh2+td2+(ded+did)*1.15+lcd+lsd;
                                   double HatredOtherDam = dfd+ctd;
                                   double HatredDam1 = HatredArmorDam1*(1-BossArmH)+HatredOtherDam;
                                   double HatredDam2 = HatredArmorDam2*(1-BossArmH)+HatredOtherDam*1.15;
                                   double HatredDPS = (HatredDam1*.7+HatredDam2*.3)*(1+AlacPerc)*TwoPcSetVal;
                                   if(HatredDPS > MaxDPS)
                                   {
                                           MaxDPS = HatredDPS;
                                           MaxDPSVals[0] = GearWP;
                                           MaxDPSVals[1] = GearPower;
                                           MaxDPSVals[2] = CritR;
                                           MaxDPSVals[3] = AlacR;
                                           MaxDPSVals[4] = SurgeR;
                                           MaxDPSVals[5] = j;
                                           //cout << "\nMeleeCrit: " << MeleeCrit << " FCrit: " << ForceCrit << "\n";
                                           //cout << "\nSurgeR, Perc: " << SurgeR << " = " << SurgePerc;
                                           //cout << "\nAlacR, Perc: " << AlacR << " = " << AlacPerc << "\n";
                                   }
                           }
                   }
                   Power = 0;
           }
   }

   cout << "Willpower: " << MaxDPSVals[0] << "\nPower: " << MaxDPSVals[1]<< "\nCritical Rating: ";
   cout << MaxDPSVals[2] << "\nAlacrity Rating: "<< MaxDPSVals[3] << "\nSurge Rating: "<<MaxDPSVals[4];
   cout << "\nStr Augs: " << MaxDPSVals[5] << "\nMax DPS: " << (int)(MaxDPS) << "\n";
}

 

Link to comment
Share on other sites

So it seems as if the Melee boost buff is additive, the Force boost buff is additive, the Internal boost is multiplicative and the AoE boost is also multiplicative. If anyone would like to confirm or deny these, let me know, as it would be nice to be doing this correctly and provide good data.

 

I know this isn't the sniperforum but these buffs should work the same in all cases. Else it would be weird. Anyways I did some testing on my sniper with dots.

 

Plasma probe

- no buffs active = 492 per hit (4918 tooltip)

- overwhelmed active = 541 per hit (10% increase from tooltip damage)

- module with all buffs on the dummy = 600 per hit (22% increase from tooltip)

This 22% consists of 10% AoE + 7% elemental + 5% tech. If the tech (or its force mirror) and elemental/internal.

 

This means either tech/force, internal/elemental and AoE are all multiplicative or all additive. Unless I am mistaken force/tech was assumed to be additive right?

Else it would be 492*1.05*(1+0.10+0.07)= 604.

Sry if i'm messing up stuff. Just want to be sure about it.

Edited by fire-breath
Link to comment
Share on other sites

I know this isn't the sniperforum but these buffs should work the same in all cases. Else it would be weird. Anyways I did some testing on my sniper with dots.

 

Plasma probe

- no buffs active = 492 per hit (4918 tooltip)

- overwhelmed active = 541 per hit (10% increase from tooltip damage)

- module with all buffs on the dummy = 600 per hit (22% increase from tooltip)

This 22% consists of 10% AoE + 7% elemental + 5% tech. If the tech (or its force mirror) and elemental/internal.

 

This means either tech/force, internal/elemental and AoE are all multiplicative or all additive. Unless I am mistaken force/tech was assumed to be additive right?

Else it would be 492*1.05*(1+0.10+0.07)= 604.

Sry if i'm messing up stuff. Just want to be sure about it.

 

If only one of those was additive and the others were all multiplicative, they'd all multiply anyway. Regardless, I'm not sure how they intend for these buffs to work, since it's terribly confusing trying to keep it sorted, especially if the buffs work differently on different abilities. I guess I didn't test the AoE one carefully, but the I/E one was multiplicative when I did it.

Link to comment
Share on other sites

I know this isn't the sniperforum but these buffs should work the same in all cases. Else it would be weird. Anyways I did some testing on my sniper with dots.

 

Plasma probe

- no buffs active = 492 per hit (4918 tooltip)

- overwhelmed active = 541 per hit (10% increase from tooltip damage)

- module with all buffs on the dummy = 600 per hit (22% increase from tooltip)

This 22% consists of 10% AoE + 7% elemental + 5% tech. If the tech (or its force mirror) and elemental/internal.

 

This means either tech/force, internal/elemental and AoE are all multiplicative or all additive. Unless I am mistaken force/tech was assumed to be additive right?

Else it would be 492*1.05*(1+0.10+0.07)= 604.

Sry if i'm messing up stuff. Just want to be sure about it.

 

Very interesting findings. Frankly, this has left me baffled.

Here's how I originally concluded that Overwhelmed (10% AoE) was multiplicative while Vulnerable (5% Force) was additive:

- basic Force Storm tick: 879

- with Vulnerable: 923 (879*1.05)

- with Overwhelmed: 967 (879*1.1)

- with Vulnerable + Overwhelmed: 1015 (879*1.05*1.1)

- with Tempest Mastery: 1099 (879*1.25)

- with Tempest Mastery + Vulnerable: 1143 (879*(1+0.25+0.05))

- with Tempest Mastery + Overwhelmed: 1209 (879*1.25*1.1)

- with Tempest Mastery + Vulnerable + Overwhelmed: 1257 (879*(1+0.25+0.5)*1.1)

 

For reference: these numbers are on an Ops dummy with bonus damage of 1440.9.

The last example very clearly shows that in this case the 25% of Tempest Mastery and the 5% of Vulnerable were combined additively.

 

Considering this is Bioware we're talking about :p, I wouldn't be shocked to learn that the mechanics of certain buffs differed from class to class, or even from ability to ability.

Link to comment
Share on other sites

Considering this is Bioware we're talking about :p, I wouldn't be shocked to learn that the mechanics of certain buffs differed from class to class, or even from ability to ability.

 

It's not making much sense so far, I find buffs stack for forcequake the way you describe, including set bonus it's

 

(2% Force Master + Force 5% + 25% utility) * 10% Overwhelemed

 

but for TK Wave it's

 

(Overwhelmed 10% + Force 5%) * 2% Force Master set bonus.

 

Both abilities are aoe, both are energy damage (probably a bug, both should be kinetic, but that shouldn't make any difference anywhere). The only difference is that one is a channel while the other isn't

 

I'm planning to open a thread on this topic in class forums once I'm done with sage abilities.

Edited by ceazare
Link to comment
Share on other sites

It's not making much sense so far, I find buffs stack for forcequake the way you describe, including set bonus it's

 

(2% Force Master + Force 5% + 25% utility) * 10% Overwhelemed

 

but for TK Wave it's

 

(Overwhelmed 10% + Force 5%) * 2% Force Master set bonus.

 

Both abilities are aoe, both are energy damage (probably a bug, both should be kinetic, but that shouldn't make any difference anywhere). The only difference is that one is a channel while the other isn't

 

I'm planning to open a thread on this topic in class forums once I'm done with sage abilities.

 

Oh wow. That's amazing (in an ironic way). Thanks for doing the Sage testing.

This is surely going to make spreadsheets more complicated :(

 

BTW the Sorc equivalents (Force Storm and Chain Lightning) also both deal energy damage, but their tooltips do say energy. So the bug is most likely in the Sage tooltips I guess.

 

EDIT: though thematically, I could see kinetic damage making more sense. In which case the damage type could be fixed. Doesn't really matter anyway because both damage types are mitigated by the same damage reduction values.

Edited by deaday
Link to comment
Share on other sites

×
×
  • Create New...