Jump to content

MGNMTTRN

Members
  • Posts

    291
  • Joined

Posts posted by MGNMTTRN

  1. Powertechs and Assassins can always do good DPS in the hands of a good player. Whether a Powertech DPS does well will also depend somewhat upon the fight. And Powertechs have a history of being constantly nerfed, so I'd expect their DPS to go down in the future rather than up.

     

    Juggernaut DPS is very strong right now due to the recent buff giving reliable Ravages. If you want to pick the class with the highest DPS from among the tank ACs, I'd say Juggernaut is the highest.

  2. Hatred doesn't. Severity doesn't. We (DnT) don't. Provectus doesn't.

     

    I actually can only think of a couple of tanks that HP stack, and their healers usually hate them.

    I believe Thiol (of Hatred's A group/world first group) runs B mods. It would be nice to get a Hatred member to confirm this.

     

    In the end, it's a role-playing game. If stacking endurance helps people to role-play as a big bad dude, then they're enjoying the game and no amount of math will correct them, because their enjoyment of the game and the development of their in-game persona derives from perception rather than truth.

  3. Here's a quick reference table:

    http://i.imgur.com/1MSauDP.png

     

    Two principles guide armor penetration calculation

     

    1) boss base armor rating is approximately 7538, and Damage Reduction = ArmorRating / ( ArmorRating + 240 * 55 + 800 ) * 100 (note that this equation for DR applies to both PCs and NPCs)

     

    2) incoming effects are calculated multiplicatively with outgoing effects. But within each class {incoming, outgoing} effects are summed. The only consistent incoming effect is armor reduction; consistent outgoing effects include both penetration and ignorance

     

    Here's a full walkthrough:

    • calculate total outgoing effects; 1 - sum armor penetration/ignorance effects of your character. For example if your character has 0.1 armor penetration from spec and an extra 0.2 armor penetration on one specific attack that you want to look at, your character has 1 - 0.1 - 0.2 = 0.7 penetration/ignorance effects total on that attack, and 1 - 0.1 = 0.9 on most kinetic/energy damage
       
    • calculate total outgoing effects on rating; the effect of that reduction/penetration coefficient on base armor rating, 7538. So if we're working with a coefficient of 0.7, 7538*0.7 = 5276. If we're working with a coefficient of 1-0.1 = 0.9, 7538*0.9 = 6784.2
       
    • calculate total incoming effects on rating; we'll almost always just have to worry about whether there's an armor debuff (-20% armor rating) or not (-0% armor rating) on the target. Building off our previous example, if we have 0.3 armor penetration/ignorance and a 20% rating debuff, now the target effectively has 7538*(1-0.3)*(1-0.2) = 5276*(1-0.2) = 4221.28 armor rating. If we have 0.1 armor penetration/ignorance and no 20% reduction debuff, the target still has 7538*(1-0.1)*(1-0) = 6784.2 armor rating
       
    • calculate target final damage reduction as function of effective armor rating; whether 4221 armor rating or 6784, we feed it into the damage reduction formula Damage Reduction = ArmorRating / ( ArmorRating + 240 * 55 + 800 ) * 100. In the case of 4221 rating we'd see 23.16 DR, and in the case of 6784 rating we'd see 32.64 DR
       
    • optional calculation: take 1 - DR to find tooltip coefficient. In the case of 4221 rating, we'd see 1 - 0.2316 = 0.768, and in the case of 6784 rating we'd see 1 - 0.3264 = 0.676. Now you can take coefficient*(attack min + attack max)/2 to estimate the noncrit average damage you'd see from that attack.

     

    In PVP, where targets have a variety of armor ratings, the general effect is that picking on a lightly armored target is still almost always going to allow you to do more damage than picking on a heavily armored target when you have high armor penetration. Really the only two exceptions to this are

    1) the Assault Vanguard; since almost all their damage is either elemental (ignores DR) or HIB (has a 0.903 coefficient) you're doing basically the same damage to a heavily armored target as you would do to a lightly armored target. The light target will still take harder hits from HIB, but the difference is quite small

    2) the Combat Sentinel; during your burst window, you could probably hurt a heavily armored target much more than anyone else nearby

     

    I'll just do one example, that in no way applies to all enemies...

     

    Suppose you have 0.3 outgoing armor penetration/ignorance from spec, your target doesn't have a 0.2 damage reduction effect, your attack has 7500 damage before crits and damage reduction, and your target is wearing light armor from full 78s (3212). You'd see (1-0.3)*3212 = 2248 effective rating, or 2248/ ( 2248+ 240 * 55 + 800 ) * 100 = 13.83 damage reduction, so we'd expect a non-crit hit to hit for 7500*(1-0.1383) = 6462 damage.

     

    Another fun note, the Sharpshooter Gunslinger's Aimed Shot with Illegal Mods is the only attack in the game that enjoys 4 sources of armor penetration/ignorance/reduction: 0.1 from spec for kinetic damage, 0.2 from spec on aimed shot, 0.3 from Illegal Mods, and 0.2 from the incoming reduction, giving its targets 2412 effective rating or a coefficient of 0.853. Unfortunately that's not enough to beat Assault Vanguard HIB, at 1507 rating or a coefficient 0.903.

  4.  

    Calphyus transitions between phases - when a phase end and you are teleported back, he chooses random target - the question is how tanks can taunt in time when both have loading screen yet ?

     

    Brontes - laser "hearts" and Corruptor gravity field - your computer draws you several meters away ... but you are teleported back and killed (or stunned) by server lag.

     

    General late appearance of objects (Operator spheres, tentacle at Brontes, etc. etc.)

    1a) Calphias will attack whoever has aggro on him after you return to the present. Tanks can only generate aggro on him during the present phase; healers generate aggro on him during both the present and past/future phases. That's it. If he's going after 'random' raid members you have a threat problem.

    1b) have your tanks disable their loading splash screen

    http://www.swtor.com/community/showthread.php?p=6959209

     

    2) I just haven't heard anyone else assert that they died to server lag. Corruptor gravity field comes at 1 minute, 1 minute 30, 3 minutes, and 3 minutes 30 after the boss hits the ground.

     

    I've definitely had problems seeing some graphical effects and add spawns; it's been a problem since Soa's lightning pools and has included Op IX spheres and Corrupted Clone spawns. But in the case of Op IX spheres I know where to AOE. In the case of Corrupted Clone spawns I know who to Target of Target.

     

    So while some of these things are real issues that could be addressed, there are presently workarounds for every single real problem. By all means accuse me of flaming. By refusing to acknowledge that I am providing you with solutions to these problems, you will simply be hindering yourself further.

  5. I discovered a bug. abs% should be 1 - mean(shield dam)/mean(raw dam), not shield dam/ raw dam. I am going to fix the bug and extend the script to calculate premitigation DTPS. Maybe. This post should be updated in 2 hours.

     

    Edit:

     

    Made that change to absorb calculation. I now get a mean effective abs of 0.5020 for my Vanguard tank, or 0.5020 - 0.405 = 0.0970 absorb bonus from Energy Blast and Power Screen. For that Shadow log I linked, I get a mean effective abs of 0.49 and a bonus from Kinetic Bulwark of 0.49 - 0.4754 = 0.0146 from that Shadow log that I posted.

     

    Not sure why that bulwark value is so low. If premitigation_damage*(1-abs) = shield_damage and mean(premitigation_damage) and mean(shield_damage) are known, then

    premitigation_damage*(1-abs) = shield_damage

    1-abs = shield_damage/premitigation_damage

    abs-1 = -shield_damage/premitigation_damage

    abs = 1 - shield_damage/premitigation_damage

     

    Edit #4 or so: manually confirmed for the attack Sporeling->Alara:Rake that the values picked up by the parser were the values being reported by torparse. Also manually confirmed for several attacks that mean(unmitigated)*(1-effective absorb reduction) = ~mean(shielded). So the values I'm reporting seem to be accurate and unbuggy now.

     

    Also now producing output of this style:

    Attack PalaceInterrogator->Alara:Shocked had 3 total samples: 1 unmitigated, 1 shielded, 1 othermitigated.
    Effective shield chance: 0.33
    Effective othermit chance: 0.33
    Effective absorb reduction: 0.49
    Average damage per hit: 601.67
    Effective postarmor mitigation coefficient: 0.50
    Attack PalaceWatchman->Alara:Double Strike had 20 total samples: 11 unmitigated, 7 shielded, 2 othermitigated.
    Effective shield chance: 0.35
    Effective othermit chance: 0.10
    Effective absorb reduction: 0.53
    Average damage per hit: 3070.40
    Effective postarmor mitigation coefficient: 0.72
    

     

    Cut and cleaned some of the code

     

     

    function [attack_dict, final_abs] = parser(infile)

     

    filetext = strread(fileread(infile), '%s', 'delimiter', sprintf('\n'));

    attack_dict = containers.Map;

     

    outcome = {};

    final_abs = [];

    for i = 1:size(filetext, 1)

    untrimmed = filetext{i}; trimmed = untrimmed;

     

    % delete all {\d*} content from lines which we're working with

    for j = regexp(filetext{i}, '\{\d*\}')

    trimmed = strrep(trimmed, strtok(untrimmed(j:end)), '');

    end

     

    % skip all non-damage effects

    if isempty(strfind(trimmed, 'ApplyEffect Damage')), continue; end

     

    % split string into 5 components: time, origin, target, nomination, values

    r = strread(trimmed, '%s', 'delimiter', sprintf('['));

    r = r(~cellfun('isempty',r));

     

    for k = 2:3

    r{k} = r{k}((r{k} >= 65 & r{k} <= 90) | (97 <= r{k} & r{k} <= 122));

    % change all '[]' origins like howling sandstorm to '[unknown]'

    if strcmp(r{k}, '] '), r{k} = '[unknown]'; end

    % excise all characters not between 'A' and 'Z' OR 'a' and 'z'

    end

     

    if size® < 5

    %fprintf('Ejected line %d. Unable to parse.\n', i);

    %r

    continue;

    end

     

    key = strcat([r{2},'->',r{3},':',r{4}]);

    value = r{5};

     

    if ~attack_dict.isKey(key), attack_dict(key) = {}; end

    valuelist = attack_dict(key);

    valuelist{end+1} = value;

    attack_dict(key) = valuelist;

    % written like this because im bad

     

    outcome{end+1} = trimmed;

     

    end % end iteration through filetext

     

    keylist = attack_dict.keys();

    for i = 1:size(keylist, 2)

    key = keylist(i); key = key{1};

    values = attack_dict(key);

    values = strrep(values, 'ApplyEffect Damage (', '');

    %fprintf('Attack %s, %d samples\n', key, size(values, 2));

     

    unmitigated = []; othermitigated = []; shielded = [];

    for j = 1:size(values,2)

    as_value = sscanf(strrep(values{j}, '-shield ', ''), '%d %s <%d>');

    dam = as_value(1); threat = as_value(end);

    textlabel = char(as_value(2:end-1))'; if isempty(textlabel), textlabel = 'unknown'; end

     

    if strfind(values{j}, '-shield')

    shielded(end+1) = dam;

    elseif strfind(values{j}, '-')

    othermitigated(end+1) = dam;

    else

    unmitigated(end+1) = dam;

    end

    %fprintf('\t%s: parsed as damage %d\n', values{j}, dam);

    end

     

    samplecount = numel([shielded, othermitigated, unmitigated]);

    totaldamage = sum([shielded, unmitigated, othermitigated]);

    fprintf('Attack %s had %d total samples: %d unmitigated, %d shielded, %d othermitigated.\n', ...

    key, samplecount, numel(unmitigated), numel(shielded), numel(othermitigated));

    fprintf('\tEffective shield chance: %0.2f\n', numel(shielded)/samplecount);

    fprintf('\tEffective othermit chance: %0.2f\n', numel(othermitigated)/samplecount);

    fprintf('\tEffective absorb reduction: %0.2f\n', 1 - mean(shielded)/mean(unmitigated)); % !!!

    fprintf('\tAverage damage per hit: %0.2f\n', totaldamage/samplecount);

    final_abs(end+1) = 1 - mean(shielded)/mean(unmitigated);

    fprintf('\tEffective postarmor mitigation coefficient: %0.2f\n', totaldamage/(mean(unmitigated)*samplecount));

     

    end % end iteration through keys

     

    end % end function parser

     

     

     

    Can KBN modify his Perl script to compute 1 - mean(shielded)/mean(unmitigated)? It would be good to corroborate.

  6. If you're still seeking an absorb estimation from a non-simulation, I rewrote my MATLAB parser. I'm like 90% sure that both of you have MATLAB, but if you want me to process a combat log but don't have access to a MATLAB computer, get the file to me somehow.

     

    Example of how to run for a combatlog.txt file in the same folder as the .m file:

    EDU>> cd C:\Users\John\Desktop\Storage\SWTOR\matlab
    EDU>> filelist = dir(pwd)
    
    filelist = 
    
    12x1 struct array with fields:
       name
       date
       bytes
       isdir
       datenum
    
    EDU>> filelist(3).name
    
    ans =
    
    combat_2013-11-21_21_54_00_574819.txt
    
    EDU>> tic; [dict, final_abs] = parser(filelist(3).name); toc; % run with this line
    

     

    I define {shielded attacks} as anything that has the phrases 'ApplyEffect Damage' AND '-shield' in the line, and define {unmitigated attacks} as anything that has phrase ''ApplyEffect Damage' AND (no '-' character in the line); that removes events like dodges and misses. I then define ith effective absorb as mean(shielded attack i)/mean(unmitigated attack i).

     

    Then I can naively take the mean of all absorbs by taking the average of i attack types

    EDU>> final_abs(isnan(final_abs)) = [];
    EDU>> size(final_abs)
    
    ans =
    
        1    83
    
    EDU>> mean(final_abs)
    
    ans =
    
       0.4980
    

    And find that 5 months ago, I was getting ~0.4980-0.405 (from character sheet) = 0.093 absorb bonus over time. Note that this bonus includes click relic effects, Reflexive Shield, and absorb adrenal.

     

    I think given enough samples, it must do a decent job of marginalizing out your effects that change DTPS like Reflexive Shield (Smoke Grenade is already not counted because it's not a part of the shielded or unmitigated sets), absorb adrenal, click relics, and damage reduction debuffs on the boss. It's both convenient and sensible to leave these things unregressed in the calculation, since it gives me a value that already incorporates all those effects.

     

    Edit: this part was written really badly. What I mean is that if I want to estimate DTPS, I could either regress out all effects like Reflexive Shield, absorb adrenal, and click relics, to find my premitigation DTPS. Then I could calculate new DTPS for different stat values. But since I'm likely going to have similar Reflexive Shield/adrenal/relic usage in the future, I'd have no way of incorporating those effects into my new projected DTPS. If I leave those effects unregressed, I don't need to account for them when projecting new DTPS.

     

    In your case since it's going to **** things up since you guys do relic calculations, 5% damage reduction, and adrenals separately.

     

    Instead of taking a naive average you could edit the code to give you a mean of absorbs weighted by samples. That would approximate your absorb bonus over time easily enough. You could also rewrite a parser to instead track just absorb bonuses over time.

     

    Full MATLAB code:

     

     

    function [attack_dict, final_abs] = parser(infile)

     

    filetext = strread(fileread(infile), '%s', 'delimiter', sprintf('\n'));

    attack_dict = containers.Map;

     

    outcome = {};

    final_abs = [];

    for i = 1:size(filetext, 1)

    untrimmed = filetext{i}; trimmed = untrimmed;

     

    % delete all {\d*} content from lines which we're working with

    for j = regexp(filetext{i}, '\{\d*\}')

    trimmed = strrep(trimmed, strtok(untrimmed(j:end)), '');

    end

     

    % skip all non-damage effects

    if isempty(strfind(trimmed, 'ApplyEffect Damage')), continue; end

     

    % split string into 5 components: time, origin, target, nomination, values

    r = strread(trimmed, '%s', 'delimiter', sprintf('['));

    r = r(~cellfun('isempty',r));

     

    for k = 2:3

    r{k} = r{k}((r{k} >= 65 & r{k} <= 90) | (97 <= r{k} & r{k} <= 122));

    % change all '[]' origins like howling sandstorm to '[unknown]'

    if strcmp(r{k}, '] '), r{k} = '[unknown]'; end

    % excise all characters not between 'A' and 'Z' OR 'a' and 'z'

    end

     

    if size® < 5

    %fprintf('Ejected line %d. Unable to parse.\n', i);

    %r

    continue;

    end

     

    key = strcat([r{2},'->',r{3},':',r{4}]);

    value = r{5};

     

    if ~attack_dict.isKey(key), attack_dict(key) = {}; end

    valuelist = attack_dict(key);

    valuelist{end+1} = value;

    attack_dict(key) = valuelist;

    % written like this because im bad

     

    outcome{end+1} = trimmed;

     

    end % end iteration through filetext

     

    keylist = attack_dict.keys();

    for i = 1:size(keylist, 2)

    key = keylist(i); key = key{1};

    values = attack_dict(key);

    values = strrep(values, 'ApplyEffect Damage (', '');

    fprintf('Attack %s, %d samples\n', key, size(values, 2));

     

    unmitigated = {}; othermitigated = {}; shielded = {};

    for j = 1:size(values,2)

    if strfind(values{j}, '-shield')

    shielded{end+1} = values{j};

    elseif strfind(values{j}, '-')

    othermitigated{end+1} = values{j};

    else

    unmitigated{end+1} = values{j};

    end

    %fprintf('\t%s\n', values{j});

    end

     

    outcomes = {shielded; othermitigated; unmitigated};

    outcome_labels = {'Shielded'; 'Other mitigated'; 'Unmitigated'};

    %shieldvals = {}; othervals = {}; unmitigatedvals = {};

    %vals = {shieldvals; othervals; unmitigatedvals};

     

    shieldvals = []; unmitigatedvals = [];

    for j = 1:size(outcomes, 1)

    %fprintf('\t%s:\n', outcome_labels{j});

    toprint = outcomes{j};

    if j == 1

    toprint = strrep(toprint, '-shield ', '');

    end

     

    for k = 1:size(toprint,2)

    %fprintf('\t\t%s\n', toprint{k});

    scanned_string = sscanf(toprint{k}, '%d %s <%d>');

    if j == 1

    shieldvals(end+1) = scanned_string(1);

    elseif j == 3

    unmitigatedvals(end+1) = scanned_string(1);

    end

    end % end iteration through specific values of one attack key

    end % end iteration over potential outcomes for attack keys

    eabs = mean(shieldvals)/mean(unmitigatedvals);

    fprintf('\tEffective absorb: %0.2f\n', eabs);

     

    final_abs(end+1) = eabs;

    end % end iteration through keys

     

    end % end function parser

     

     

    (quote my post to get a copy of the code that has better indentation)

     

    Sample output (after cutting out the sections which contain attacks that originate from myself; since no boss can absorb, those were just a ton of NaN values. Also hit the SWTOR forum character limit of 50,000 characters)

     

     

    Attack ->Metallic:Howling Sandstorm, 25 samples

    Effective absorb: NaN

    Attack BlueTeamPackHunter->Metallic:Bleeding (Physical), 15 samples

    Effective absorb: NaN

    Attack BlueTeamPackHunter->Metallic:Charged Weapon, 3 samples

    Effective absorb: 0.59

    Attack BlueTeamPackHunter->Metallic:Gut, 3 samples

    Effective absorb: NaN

    Attack BlueTeamPackHunter->Metallic:Melee Attack, 11 samples

    Effective absorb: NaN

    Attack Bodyguard->Metallic:Flame Sweep, 2 samples

    Effective absorb: NaN

    Attack Bodyguard->Metallic:Lunge, 21 samples

    Effective absorb: 0.54

    Attack Bodyguard->Metallic:Melee Attack, 24 samples

    Effective absorb: 0.44

    Attack Bodyguard->Metallic:Rocket Punch, 2 samples

    Effective absorb: NaN

    Attack Bodyguard->Metallic:Vicious Slash, 3 samples

    Effective absorb: 0.58

    Attack Bodyguard->Metallic:Wrist Laser Burst, 12 samples

    Effective absorb: 0.45

    Attack CaptainHoric->Metallic:Ranged Attack, 6 samples

    Effective absorb: NaN

    Attack CaptainHoric->Metallic:Spray and Pray, 8 samples

    Effective absorb: NaN

    Attack CartelCombatEngineer->Metallic:Ranged Attack, 6 samples

    Effective absorb: 0.47

    Attack CartelLieutenant->Metallic:Axe Toss, 9 samples

    Effective absorb: 0.61

    Attack CartelLieutenant->Metallic:Melee Attack, 3 samples

    Effective absorb: 0.38

    Attack CrazedMercenary->Metallic:Melee Attack, 28 samples

    Effective absorb: 0.30

    Attack DashRoode->Metallic:Groundshatter, 5 samples

    Effective absorb: 0.64

    Attack DashRoode->Metallic:Gutwrenching Kick, 8 samples

    Effective absorb: 0.33

    Attack DashRoode->Metallic:Melee Attack, 222 samples

    Effective absorb: 0.43

    Attack DreadGuard->Metallic:Melee Attack, 83 samples

    Effective absorb: 0.50

    Attack DreadLarva->Metallic:Burrow, 2 samples

    Effective absorb: NaN

    Attack DreadLarva->Metallic:Swat, 20 samples

    Effective absorb: 0.49

    Attack DreadMasterBestia->Metallic:Assault, 28 samples

    Effective absorb: 0.45

    Attack DreadMasterBestia->Metallic:Combusting Seed, 1 samples

    Effective absorb: NaN

    Attack DreadMasterBestia->Metallic:Dread Charge, 2 samples

    Effective absorb: NaN

    Attack DreadMasterBestia->Metallic:Dread Pool, 3 samples

    Effective absorb: NaN

    Attack DreadMasterBestia->Metallic:Dread Scream, 15 samples

    Effective absorb: 0.35

    Attack DreadMasterBestia->Metallic:Dread Strike, 18 samples

    Effective absorb: 0.45

    Attack DreadMasterBestia->Metallic:Swelling Despair, 6 samples

    Effective absorb: 0.52

    Attack DreadMasterStyrak->Metallic:Force Charge, 4 samples

    Effective absorb: NaN

    Attack DreadMasterStyrak->Metallic:Mass Force Storm, 8 samples

    Effective absorb: 0.51

    Attack DreadMasterStyrak->Metallic:Melee Attack, 45 samples

    Effective absorb: 0.51

    Attack DreadMasterStyrak->Metallic:Power of the Master, 17 samples

    Effective absorb: NaN

    Attack DreadMasterStyrak->Metallic:Saber Throw, 8 samples

    Effective absorb: 0.36

    Attack DreadMasterStyrak->Metallic:Shocked, 3 samples

    Effective absorb: 0.57

    Attack DreadMasterStyrak->Metallic:Thundering Blast, 3 samples

    Effective absorb: 0.30

    Attack DreadMonster->Metallic:Pulverize, 31 samples

    Effective absorb: 0.45

    Attack DreadMonster->Metallic:Squash, 54 samples

    Effective absorb: 0.53

    Attack DreadMonster->Metallic:Swipe, 129 samples

    Effective absorb: 0.45

    Attack DreadTentacle->Metallic:Whip, 11 samples

    Effective absorb: 0.45

    Attack DustclawAlpha->Metallic:Deepening Wounds, 127 samples

    Effective absorb: NaN

    Attack DustclawAlpha->Metallic:Melee Attack, 110 samples

    Effective absorb: 0.47

    Attack DustclawPackling->Metallic:Melee Attack, 69 samples

    Effective absorb: 0.53

    Attack DustclawRavager->Metallic:Ravaging Frenzy, 95 samples

    Effective absorb: 0.44

    Attack ElaraDorne->Metallic:Nightmare, 1 samples

    Effective absorb: NaN

    Attack ElaraDorne->Metallic:Ranged Attack, 11 samples

    Effective absorb: 0.37

    Attack FrenziedMercenary->Metallic:Melee Attack, 14 samples

    Effective absorb: 0.46

    Attack HardenedMedtechDroid->Metallic:Ranged Attack, 1 samples

    Effective absorb: NaN

    Attack IAArtilleryDroid->Metallic:Ion Field, 14 samples

    Effective absorb: NaN

    Attack IAArtilleryDroid->Metallic:Ranged Attack, 168 samples

    Effective absorb: 0.51

    Attack InsaneMercenary->Metallic:Fuel Tank Detonation, 1 samples

    Effective absorb: NaN

    Attack InsaneMercenary->Metallic:Full Burn, 25 samples

    Effective absorb: NaN

    Attack InsaneMercenary->Metallic:Melee Attack, 12 samples

    Effective absorb: 0.70

    Attack KellDragon->Metallic:Head Swipe, 8 samples

    Effective absorb: 0.32

    Attack KellDragon->Metallic:Leap Slam, 5 samples

    Effective absorb: 0.56

    Attack KellDragon->Metallic:Melee Attack, 24 samples

    Effective absorb: 0.44

    Attack KellDragon->Metallic:Overcharge, 2 samples

    Effective absorb: NaN

    Attack KellDragon->Metallic:Shredding Claws, 42 samples

    Effective absorb: 0.64

    Attack KellDragon->Metallic:Spines, 99 samples

    Effective absorb: 0.50

    Attack KellDragon->Metallic:Vomit Pool, 10 samples

    Effective absorb: NaN

    Attack MAFrontlineDroid->Metallic:Retractable Blade, 6 samples

    Effective absorb: 0.39

    Attack MaddenedMercenary->Metallic:Melee Attack, 46 samples

    Effective absorb: 0.53

    Attack MercenaryCarver->Metallic:Bleeding (Physical), 8 samples

    Effective absorb: NaN

    Attack MercenaryCarver->Metallic:Charged Weapon, 18 samples

    Effective absorb: 0.46

    Attack MercenaryCarver->Metallic:Gut, 17 samples

    Effective absorb: 0.74

    Attack MercenaryCarver->Metallic:Melee Attack, 56 samples

    Effective absorb: 0.38

    Attack MercenaryCarver->Metallic:Shockwave Strike, 2 samples

    Effective absorb: NaN

    Attack MercenaryHeavyGunner->Metallic:Charged Rounds, 57 samples

    Effective absorb: 0.55

    Attack MercenaryHeavyGunner->Metallic:Full Auto, 26 samples

    Effective absorb: 0.65

    Attack MercenaryHeavyGunner->Metallic:Grav Round, 20 samples

    Effective absorb: 0.73

    Attack MercenaryHeavyGunner->Metallic:Ranged Attack, 4 samples

    Effective absorb: 0.17

    Attack MercenarySniper->Metallic:Aimed Shot, 3 samples

    Effective absorb: NaN

    Attack MercenarySniper->Metallic:Ranged Attack, 98 samples

    Effective absorb: 0.48

    Attack OloktheShadow->Metallic:Lacerate, 56 samples

    Effective absorb: 0.47

    Attack OloktheShadow->Metallic:Missile Blast, 16 samples

    Effective absorb: 0.58

    Attack OloktheShadow->Metallic:Ranged Attack, 2 samples

    Effective absorb: NaN

    Attack OloktheShadow->Metallic:Snipe, 3 samples

    Effective absorb: 0.45

    Attack OperationsChief->Metallic:Explosive Probe (Tech), 1 samples

    Effective absorb: NaN

    Attack OperationsChief->Metallic:Headshot, 1 samples

    Effective absorb: NaN

    Attack OperationsChief->Metallic:Rifle Shot, 40 samples

    Effective absorb: 0.47

    Attack OperationsChief->Metallic:Terminate, 14 samples

    Effective absorb: 0.62

    Attack PBAssaultDroid->Metallic:Ranged Attack, 99 samples

    Effective absorb: 0.44

    Attack PXReconDroid->Metallic:Targeted Laser, 15 samples

    Effective absorb: 0.44

    Attack PirateStimfiend->Metallic:Nylite Toxin (Physical), 5 samples

    Effective absorb: NaN

    Attack RailTurret->Metallic:Rail Shot, 23 samples

    Effective absorb: 0.72

    Attack ScavengingWompRat->Metallic:Gnawing Bite, 4 samples

    Effective absorb: 0.33

    Attack ScavengingWompRat->Metallic:Maul, 3 samples

    Effective absorb: 0.35

    Attack ScavengingWompRat->Metallic:Melee Attack, 1 samples

    Effective absorb: NaN

    Attack ShadyCustomer->Metallic:Ranged Attack, 18 samples

    Effective absorb: 0.38

    Attack ShadyCustomer->Metallic:Scattergun Ambush, 3 samples

    Effective absorb: NaN

    Attack ShadyCustomer->Metallic:Scattergun Blast, 23 samples

    Effective absorb: 0.61

    Attack Thrasher->Metallic:Melee Attack, 93 samples

    Effective absorb: 0.50

    Attack Thrasher->Metallic:Roar, 20 samples

    Effective absorb: NaN

    Attack Thrasher->Metallic:Stomp, 20 samples

    Effective absorb: 0.51

    Attack Thrasher->Metallic:Swipe, 12 samples

    Effective absorb: 0.52

    Attack Titan->Metallic:Explosive Charge, 9 samples

    Effective absorb: 0.56

    Attack Titan->Metallic:Flame Burst, 2 samples

    Effective absorb: NaN

    Attack Titan->Metallic:Huge Grenade, 1 samples

    Effective absorb: NaN

    Attack Titan->Metallic:Kick, 2 samples

    Effective absorb: NaN

    Attack Titan->Metallic:Lots of Missiles, 43 samples

    Effective absorb: 0.53

    Attack Titan->Metallic:Missile Burst, 10 samples

    Effective absorb: 0.47

    Attack Titan->Metallic:Ranged Attack, 114 samples

    Effective absorb: 0.49

    Attack TitanProbe->Metallic:Targeted Laser, 142 samples

    Effective absorb: 0.47

    Attack Tuchuk->Metallic:Brutal Blow, 45 samples

    Effective absorb: 0.49

    Attack Tuchuk->Metallic:Frenzied Swings, 865 samples

    Effective absorb: 0.43

    Attack Tuchuk->Metallic:Leap, 11 samples

    Effective absorb: 0.58

    Attack UnderworldArmsTrader->Metallic:Final Offer, 1 samples

    Effective absorb: NaN

    Attack UnderworldArmsTrader->Metallic:Free Samples, 30 samples

    Effective absorb: 0.54

    Attack UnderworldArmsTrader->Metallic:Limited Time Offer, 3 samples

    Effective absorb: 0.57

    Attack UnderworldArmsTrader->Metallic:Ranged Attack, 78 samples

    Effective absorb: 0.57

    Attack UnderworldArmsTrader->Metallic:Return Policy, 20 samples

    Effective absorb: 0.51

    Attack UnderworldArmsTrader->Metallic:Stockstrike Knockback, 10 samples

    Effective absorb: 0.63

    Attack VilusGarr->Metallic:Explosive Surge, 14 samples

    Effective absorb: NaN

    Attack VilusGarr->Metallic:Pistol Shot, 12 samples

    Effective absorb: 0.58

    Attack VoraciousXuvva->Metallic:Melee Attack, 22 samples

    Effective absorb: 0.63

    Attack WealthyBuyer->Metallic:Flurry of Bolts, 20 samples

    Effective absorb: 0.57

    Attack WealthyBuyer->Metallic:Ranged Attack, 3 samples

    Effective absorb: 0.38

    Elapsed time is 8.510743 seconds.

     

     

     

    Edit: parsed a recent Shadow's log for some DF/DP content. His torparse is here: http://www.torparse.com/a/598192

    I found that he had 0.51 effective absorb, and his character sheet absorb is 47.54% / 1126 Absorb rating. That gives 0.51-0.4754 = 0.0346 effective absorb bonus by weight. Note, again, that's not absorb averaged over time; it's slightly different from that computation. It's the average over all attacks of {shielded damage} / {unmitigated damage} when both shielded damage and unmitigated damage occurred.

  7. queue lots of lames making lots of comments without talking about up close and personal putting the powertech's passive mitigation MUCH MUCH higher than any of the other tanks on most fights.

     

    I'm a pretty big proponent of Powertechs/Vanguards, I read these forums pretty regularly, and I've never thought to myself "This person ignored Vanguard self-healing". Can you link any discussions where it was left out?

     

    So the question is: How big is the difference between the tanks, not seen from a theory crafting point of few but merely from your experience. Please enligten me.

    In my experience Assassins and Powertechs have pretty similar toolboxes for dealing with enemies; Powertechs have a few more options from 30m range and their defensive cooldowns, while analogous to those of Assasins, are usually double the duration and half the strength. Assassins have stronger threat.

     

    Powertechs need to manage their heat, and balance between high threat/DPS (Flame Sweep, Flame burst, Flamethrower) and high mitigation (spamming rapid shots/Rocket punch/Rail shot) attacks; it's impossible to do both optimally.

     

    Assassins have an optimal rotation that involves using their backstab with proc and not refreshing Dark Ward before necessary. The increased number of procs, coupled with their naturally lower armor rating, provides more opportunities for the mitigation machine to break down.

     

    The Juggernaut, similar to the Assassin, has a cooldown to respond to every problem. That is where the similarities end. The Juggernaut has the worst AOE threat, worst single target threat, worst mobility, and their mitigation isn't spectacular.

     

    I'd recommend not going Jugg. In my personal opinion, having a Powertech with steady DTPS beats having an Assassin with higher mean mitigation and/or more specific cooldowns.

  8. Definitely one of the heroics, as stated. IIRC it's from the heroic 2man on Corellia where you have to rescue hotel workers in the second to final zone of Corellia. Unfortunately it's been 2 years since I ran that content so I can't be sure.
  9. Well, adding +10% DR to both classes isn't how it works in game... it's 10% armor rating. The topic of this thread is how armor rating differs from damage reduction. So I worked through a full example to prove to myself that Thok was correct and I'm gonna post it in case anyone wants to see how it works in game.

     

    The armor rating -> DR% formula is given here:

    Damage Reduction = ArmorRating / ( ArmorRating + 240 * 55 + 800 ) * 100

     

    And for measuring changes in damage taken, you want to look at (damage taken after) / (damage taken before). In our case we take (1-buffed DR)/(1-unbuffed DR) to get the % change in damage taken.

     

    For Vanguards:

    Base 6065 for full 78 heavy armor

    6065*(1+0.6+0.16 +0) = 10674 armor rating -> 43.206 + 9 DR -> 52.206% DR

    6065*(1+0.6+0.16+0.1) = 11280.9 armor rating -> 44.62 + 9 DR -> 53.62% DR

     

    (1-0.5362)/(1-0.5221) = 0.9704; adding a +10% armor rating buff causes you to take 97% of the damage you would have taken without the +10% armor rating buff

     

    For Shadows:

    Base 3212 for full 78 light armor

    3212*(1+1.3+0.2+0) = 8030 armor rating -> 36.45 + 8 = 44.45% DR

    3212*(1+1.3+0.2+0.1) = 8315 armor rating -> 37.36 + 8 = 45.36% DR

     

    (1-0.4536)/(1-0.4445) = 0.9836; adding a +10% armor rating buff causes you to take 98% of the damage you would have taken without the +10% armor rating buff

     

    So light armor tanks take a larger proportion of the original damage after getting a 10% armor bonus.

  10. I feel like we could definitely have a discussion about whether or not that armor buff should be the same for every tank, rather than gimping our already low armor levels.

    Since cloth armor is necessarily going to be at a lower diminishing return point than heavy armor, armor bonuses from healers will give bigger bonuses to damage reduction and will reduce DTPS by a larger proportion.

     

    If you want heavy armor roll a heavy armor tank; apart from heavy armor, the only present difference between Shadows and Vanguards is that Shadows have Resilience.

  11. Transitioning from a 72 strength hilt to a 78 willpower hilt you

    - increase your Force power significantly, which increases all Force damage

    - increase your mainhand rating, which increases all melee damage

    - gain crit from increased Willpower offstat on Force attacks

    - lose strength

     

    Overall I'm not surprised that your parses were inconclusive. There are merits to each. My gut says if you parsed more rigorously, though, you'd see the 72 str hilt come out on top. Try doing 20+ minute parses for each hilt and obviously use the exact same rotation during that time.

  12. I meant that you don't want to reapply Force Breach's accuracy debuff more than once every 30 seconds. It does strictly less damage than Double Strike. Val is correct that you can substitute all Double Strikes with Breach and you'll do barely different DPS, but it's still suboptimal.

     

    Values from my Shadow tank in 69 gear:

    Combat technique Force Breach: 897-1021 internal = 959 internal average, 0.94 hit chance, 0.1687 crit rate, 0.51 surge. Expected damage per hit is 959*0.94*(1+0.1687*0.51) = 979.01 damage / cast, at 20 force / cast.

     

    Double strike: 890- 1030 = 960 kinetic average per tick, 2 ticks, each has a 0.94 hit chance, assume 0.7 multiplier from damage reduction, 0.1725+0.09 = 0.2625 crit rate, 0.51 surge. Expected damage per tick is 960*0.7*(1+0.2625*0.51) = 761. 0.94^2 = 88.36% chance of both hitting, 0.06^2 = 0.36% chance of none hitting, and 11.28% chance of one attack hitting. 761*(2*0.8836+1*0.1128 + 0*0.0036) = 1430 damage / cast, at 25 force / cast.

     

    If you use Breach on cooldown (6 seconds) over 60 seconds that's 10 uses, consumes 200 force, and gives 10*979 = 9790 damage over 60 seconds. If you replace all non-maintenance Breaches with Double Strikes and/or consume at most 200 force, you still use Breach at 0 seconds and 30 seconds, leaving you with 160 force. You can spend 150 = 25*6 force on Double Strikes and still have 10 force left over. 2*979 + 6*1430 = 10538 damage over 60 seconds, 10 force left over, and better maintenance of your rotation. You gain (10538-9790) / 60 = 12 DPS by replacing non-essential Breaches with Double Strikes.

     

    Double Strike also indirectly contributes more to your survivability and damage by giving Particle Acceleration procs at a high rate. Since each tick has a 0.94 chance to hit and each hit has a 0.3 chance to give Particle Acceleration, we have P(both ticks hit and at least one doesn't fail to give Particle accelerator) P(exactly one tick hits and that tick gives Particle Accelerator) = 0.94^2*(1-0.3)^2 + 0.1128*0.3 + 0= 0.467. This used to be the big $$ for Shadows. It's still important to get Particle Accelerator procs for increasing your DPs, but it doesn't contribute much to DTPS anymore. Presently you can expect 0.467*6 = 2.802 accelerated Projects due to replacing those Force Breaches with Double Strikes.

     

    I was trying to do an estimate for Project's damage but I discovered that the increase in Project's base damage from Shadow's Training isn't even factored into the Project tooltip. I just about flipped over my desk at that point.

  13. I don't think anyone's mentioned this yet: in addition to the other things that Shadow tanks need to track (Kinetic Ward cooldown, Kinetic Bulwark stacks, Project procs + Harnessed Shadows stacks, Shadow Strike proc), they also need to not use Force Breach on cooldown in single target situations.

     

    Trying to play my Shadow tank well drives me crazy. The game's user interface is just not conducive to good Shadow play.

     

    But to answer your question about how to know when to refresh Kinetic Ward: since its cooldown is 15 seconds and it's duration is 20 seconds, you can note when Kinetic Ward comes off cooldown, use 3 GCDs after (because each GCD takes 1.5 seconds) and then you'll know it's been 15 + 3*15 = 19.5 seconds since your last Kinetic Ward use. This presumes your KW stacks have not all been consumed.

  14. It's just harder to see you. Abilities that 'increase your effective stealth level by x' make it harder to see you.

     

    Some large packs of enemies and many bosses in this game have passive stealth detection; if you stealth within x meters of that pack, they'll detect you and that'll start the fight. Even if you could have been standing near them out of stealth without any trouble.

     

    Some enemies in this game, especially droids, cast stealth scans.

  15. Definitely helped me figure out some form of rotation, and what procs what etc. Thanks, i've literally just levelled my PT to 55 as of yesterday and was trying to figure things out.

     

    Also, is the stat allocation guide table accurate - http://swtorboard.org/2014/01/02/swtor-tank-gear-guide/, seems to swap priority mid table about 1800 from defence to shield?

    Yep. The gist of what happens there is: before you accrue 1800 mitigation points, it's more effective to get a lot of defense and hope that you dodge a lot of attacks. By the time you get 1900 mitigation points, you have so many mitigation points and so many of them are in defense that you're not getting much return from putting more points into defense; at that point you can afford to divert points from defense into absorb and shield.

  16. http://www.swtor.com/community/showpost.php?p=6273527&postcount=19

     

    Mainstat augments are superior to Overkill augments in all PVE and PVP content for every healer and DPS spec in this game as of 2.6. It doesn't matter what your surge rating is, what your crit rating is, or what your mainstat multiplier is. The only potential exception would be attacking tanks in PVP. I never bothered looking at that. Yes, even for Focus Knights you want mainstat augments.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.