Disregarding modifiers and criticals, with breen 2 piece, full torpedo spec, 4 mk12 purple consoles
For just one torpedo:
Rapid = 4545.3 damage, 8.5s cooldown
Mk 12 Regular = 4669.5 damage, 10.5s cooldown
For three torpedoes (eg. full kinetic science ship)
With 0 projectile doffs, rapids do 20.24% more DPS:
Rapid transphasic DPS = 1604.22
Nonrapid DPS = 1334.14
With 1 doff rapids do 22.44% more DPS:
Rapid transphasic DPS = 2075.23
Nonrapid DPS = 1694.83
With 2 doffs rapid fire does 22.56% more DPS:
Rapid transphasic DPS = 2594.16
Nonrapid DPS = 2116.61
With 3 doffs rapids do 20.30% more DPS:
Rapid transphasic DPS = 3104.81
Nonrapid DPS = 2580.98
Either the rapids need to be toned down, or the regular transphasics need a buff... or some combination of the two. The ever so slightly higher burst damage of the regular transphasic is not worth the huge decrease in DPS.
If you want to verify my findings, here is the code I used to calculate my values, sorry in advance that the quote function killed the formatting a bit:
Quote:
#include <iostream>
using namespace std;
struct TorpedoType{
float Damage;
float Cooldown;
}Rapid, Regular;
double dps (float Damage, float Cooldown, int Doffs)
{
float TorpedoOneCd = 0; float TorpedoTwoCd = 0; float TorpedoThreeCd = 0;
float Gcd = 0;
double TotalDam = 0;
srand(1);
int Random = 0;
for (double n=0; n<13000000 // each n being half a second
{
if (TorpedoOneCd == 0 && Gcd == 0)
{
TotalDam += Damage;
TorpedoOneCd = Cooldown;
Gcd = 1;
for (int i=Doffs; i>0; i)
{
Random = (int)(rand() % 100);
if (Random <= 19)
{
if (TorpedoOneCd > 5) TorpedoOneCd = 5;
else TorpedoOneCd = 0;
if (TorpedoTwoCd > 5) TorpedoTwoCd = 5;
else TorpedoTwoCd = 0;
if (TorpedoThreeCd > 5) TorpedoThreeCd = 5;
else TorpedoThreeCd = 0;
}
}
}
if (TorpedoTwoCd == 0 && Gcd == 0)
{
TotalDam += Damage;
TorpedoTwoCd = Cooldown;
Gcd = 1;
for (int i=Doffs; i>0; i)
{
Random = (int)(rand() % 100);
if (Random <= 19)
{
if (TorpedoOneCd > 5) TorpedoOneCd = 5;
else TorpedoOneCd = 0;
if (TorpedoTwoCd > 5) TorpedoTwoCd = 5;
else TorpedoTwoCd = 0;
if (TorpedoThreeCd > 5) TorpedoThreeCd = 5;
else TorpedoThreeCd = 0;
}
}
}
if (TorpedoThreeCd == 0 && Gcd == 0)
{
TotalDam += Damage;
TorpedoThreeCd = Cooldown;
Gcd = 1;
for (int i=Doffs; i>0; i)
{
Random = (int)(rand() % 100);
if (Random <= 19)
{
if (TorpedoOneCd > 5) TorpedoOneCd = 5;
else TorpedoOneCd = 0;
if (TorpedoTwoCd > 5) TorpedoTwoCd = 5;
else TorpedoTwoCd = 0;
if (TorpedoThreeCd > 5) TorpedoThreeCd = 5;
else TorpedoThreeCd = 0;
}
}
}
if (TorpedoOneCd > 0) TorpedoOneCd =0.5;
if (TorpedoTwoCd > 0) TorpedoTwoCd =0.5;
if (TorpedoThreeCd > 0) TorpedoThreeCd = 0.5;
if (Gcd > 0) Gcd =0.5;
n += 0.5;
}
return TotalDam / 13000000;
}
main(int)
{
Rapid.Damage = 4545.3;
Rapid.Cooldown = 8.5;
Regular.Damage = 4669.5;
Regular.Cooldown = 10.5;
cout << "With 0 doffs, Rapid Torpedo DPS is: "
<< dps(Rapid.Damage, Rapid.Cooldown, 0) << endl;
cout << "With 0 doffs, Regular Torpedo DPS is: "
<< dps(Regular.Damage, Regular.Cooldown, 0) << endl; endl;
cout << "With 1 doff, Rapid Torpedo DPS is: "
<< dps(Rapid.Damage, Rapid.Cooldown, 1) << endl;
cout << "With 1 doff, Regular Torpedo DPS is: "
<< dps(Regular.Damage, Regular.Cooldown, 1) << endl; endl;
cout << "With 2 doffs, Rapid Torpedo DPS is: "
<< dps(Rapid.Damage, Rapid.Cooldown, 2) << endl;
cout << "With 2 doffs, Regular Torpedo DPS is: "
<< dps(Regular.Damage, Regular.Cooldown, 2) << endl; endl;
cout << "With 3 doffs, Rapid Torpedo DPS is: "
<< dps(Rapid.Damage, Rapid.Cooldown, 3) << endl;
cout << "With 3 doffs, Regular Torpedo DPS is: "
<< dps(Regular.Damage, Regular.Cooldown, 3) << endl; endl;
system("pause");
return 0;
}
