Jump to content

Power/Proc chart creator


carroto
 Share

Recommended Posts

I made a simple tool for creating charts.  Currently you can graph proc chances with varying recharge and also regen.  You can view raw proc chances or proc damage as a percentage of the base damage of a power.  For regen you can graph character regen by varying either regen or max HP.  Sorry if those descriptions aren't clear.  I think if you play with it, it will be clear enough.

 

I'm pulling powers data from @RubyRed's powers API.  Those data are pretty raw and I'm sure I haven't massaged all of them properly, so you might want to double-check the damage against Mids' now and then.  The only powers I'm currently aware are not correct are Assassin's Strikes and chain powers.  Just haven't gotten to them yet. (Edit: also apparently any powers that use pseudo pets).

 

It's a simple tool but hopefully some people will find it useful or entertaining.

 

If anyone has any suggestions for improvements or other charts that might be useful, please offer them.

 

 

Edited by carroto
  • Like 2
  • Thanks 1
  • Thumbs Up 1
Link to comment
Share on other sites

Since your Proc chance graph and your Proc Damage % graph are basically the same curve, why not combine it into one graph with 2 y-axis? Make the left side show proc chance and the right side show damage %?


PPM Information Guide                Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Movement Speed: Guide              Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas           RubyRed's API Tool              Mids' Reborn                       

Link to comment
Share on other sites

While you're looking into updates to the tool, I notice you do not have the auto/toggle/pseudopets proc calculation. It looks like you're still using recharge when in fact they don't (and they don't use slotted recharge in its calculation either). 

 

21 minutes ago, carroto said:

Good idea.  I'll have to see if the chart library I'm using supports that.

I was thinking about it and it might not be a good idea. There are some powers that don't do damage but can take procs. So those will show up as infinite gains to proc damage and would wash everything else out. And since you have it set up to show multiple powers on one graph, the recharge to damage translation for one power will not match that of another power. So disregard this suggestion, i see it breaking things.


PPM Information Guide                Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Movement Speed: Guide              Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas           RubyRed's API Tool              Mids' Reborn                       

Link to comment
Share on other sites

3 minutes ago, Bopper said:

It looks like you're still using recharge when in fact they don't (and they don't use slotted recharge in its calculation either). 

Well considering that's the whole point of the chart I'm not sure how to handle those, aside from maybe excluding them altogether.

 

I also just noticed that the damage calculation for quick snipes is not as simple as adding up the different damage types.  There seems to be an additional modifier that is not the same for every AT.  Good times.

Link to comment
Share on other sites

19 minutes ago, carroto said:

Well considering that's the whole point of the chart I'm not sure how to handle those, aside from maybe excluding them altogether.

 

I also just noticed that the damage calculation for quick snipes is not as simple as adding up the different damage types.  There seems to be an additional modifier that is not the same for every AT.  Good times.

Yes, there is a magnitude expression that makes things difficult. Same for things like savage melee. I just use the base scale, personally.

 

As for including autos/pseudopets/toggles, it would be a straight line (so no dependence on varying recharge). It still is useful, as people can see the probability of procing every 10s

 

Edit: if you do damage % on A/P/Ts though, you should do what i did in one of my tools. Convert it to DPA. So if a toggle or auto does X damage every activation period, it gets a DPA of X_A. And the proc will have a DPA of Prob x ProcDamage / 10s. Then you can do the % calc from there

Edited by Bopper

PPM Information Guide                Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Movement Speed: Guide              Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas           RubyRed's API Tool              Mids' Reborn                       

Link to comment
Share on other sites

4 minutes ago, carroto said:

Unless my math is way off the final damage is significantly reduced relative to the base scale for most ATs.  However Dominators seem to get special treatment.  It's not obvious to me why that is.

Got an example? I don't think I'm on the same page with you.


PPM Information Guide                Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Movement Speed: Guide              Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas           RubyRed's API Tool              Mids' Reborn                       

Link to comment
Share on other sites

1 minute ago, Bopper said:

Got an example? I don't think I'm on the same page with you.

If you look at the Blaster quick snipe you see it does a total of 4.56 damage scale with a magnitude expression of

(((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.210526316) + 1) * @StdResult) * 0.7

The last number in that formula is 0.3 for the smashing component (2.28 DS), and 0.7 for the energy component (2.28 DS).  If we're just looking at maxed out +tohit, we can simplify it to 1.210526316 * damage * 0.7 for the energy portion.  Applying this to both components I get a final total of 0.83 DS smashing + 1.93 DS energy for a total of 2.76 effective DS for the power.  It's the same for the Corruptor version.

 

However for Doms the magnitude expression is

((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.25) + .75) * @StdResult

Which simplifies under enough +tohit to just equal 1 for both the smashing and energy portions, so it's just whatever the base DS of the power is.  In this case it's 3.56.  So the Dom quick snipe has a lower base DS (3.56 versus 4.56 for Blaster), but due to having a different magnitude expression, ends up with an effective higher DS (3.56 vs. 2.76).  This is appropriate given the higher recharge on the Dom snipe, but it seems like a wonky way of getting there.

 

I'm guessing this was done during the relatively recent Dom revamp in which Dom snipes were boosted in recharge and damage.  However it seems really odd to break the standard damage formulas where DS is based on the recharge of the power.  The Dom slow snipe has a 4.5 DS, same as on other ATs, but it gets a much longer recharge (20s vs. 12s).  Then it gets a higher effective DS on the quick snipe compared to other ATs.  Like I said, seems really wonky.  If the devs wanted to boost the quick snipe on Doms I'd think it would have been better to stick to the standard damage formula and tweak the magnitude expression.

 

But I guess this might have been seen as the best way if they wanted to just boost the quick snipe.  I dunno, seems really kludgey, because this way you get an effective boost to the quick snipe damage, but the slow snipe kind of sucks given the higher recharge but same DS as other ATs get.  Seems like there had to be a better way to do whatever they were getting at.

 

 

Link to comment
Share on other sites

I'm not on a computer at the moment to look at all this, but the 0.3 and 0.7 is done just to split the sniper damage to be 30% of one damage type and 70% of the other. It's very messy, i know. Take a look at Proton Volley and you'll see its quick snipe does 4 ticks of damage. But instead of setting the scale to be 1/4th of what it normally would be, they baked in the 1/4th into the magnitude expression.


PPM Information Guide                Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Movement Speed: Guide              Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas           RubyRed's API Tool              Mids' Reborn                       

Link to comment
Share on other sites

for snipe info, checkout these patch notes

 

 


PPM Information Guide                Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Movement Speed: Guide              Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas           RubyRed's API Tool              Mids' Reborn                       

Link to comment
Share on other sites

10 minutes ago, Bopper said:

checkout these patch notes

Thanks for that.  Could have saved myself a bunch of calculations.  Still seems kind of crappy to me that Doms get a much higher recharge on their slow snipes for the same damage as other ATs.  Oh well it is what it is.

 

Anyway, I'm not sure how to handle that sort of thing for this chart tool.  I've been trying to avoid having to code a full magnitude expression evaluator but it's kind of looking like any other solution may be even worse.  Until I can get it sorted it looks like quick snipe damage is way off for all ATs except Doms.

Link to comment
Share on other sites

5 minutes ago, carroto said:

Thanks for that.  Could have saved myself a bunch of calculations.  Still seems kind of crappy to me that Doms get a much higher recharge on their slow snipes for the same damage as other ATs.  Oh well it is what it is.

 

Anyway, I'm not sure how to handle that sort of thing for this chart tool.  I've been trying to avoid having to code a full magnitude expression evaluator but it's kind of looking like any other solution may be even worse.  Until I can get it sorted it looks like quick snipe damage is way off for all ATs except Doms.

Keep in mind, the higher recharge is what gives Doms the higher quick snipe damage. Even factoring in AT modifiers it does more damage than the blaster version.

 

And I am in full agreement, I have completely ignored magnitude expressions, it's a ton of work to get it to handle everything correctly. I might revisit it, though. If I can just strip out the multiplier it uses (the *0.3, or /4, for example), it would go a long ways. So I might mess with that tonight.


PPM Information Guide                Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Movement Speed: Guide              Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas           RubyRed's API Tool              Mids' Reborn                       

Link to comment
Share on other sites

 


PPM Information Guide                Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Movement Speed: Guide              Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas           RubyRed's API Tool              Mids' Reborn                       

Link to comment
Share on other sites

I haven't released a tool, just the spreadsheets from the tool.


PPM Information Guide                Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Movement Speed: Guide              Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas           RubyRed's API Tool              Mids' Reborn                       

Link to comment
Share on other sites

1 minute ago, Bopper said:

I haven't released a tool, just the spreadsheets from the tool.

I see.  You haven't added that to your sig yet.  I was just thinking that a number of people keep having to solve the same set of problems related to getting meaningful data from the raw data, and it would be nice if we had one central source so we don't keep having to reinvent the same solutions.

 

What language are you using?  I was thinking that any language that has some version of "eval" could perhaps provide a shortcut for dealing with magnitude expressions.  Do a simple string replace to put values in for variables, then eval the whole thing.

Link to comment
Share on other sites

I am using MATLAB. The challenge I have with mag expressions are the various parameters it could use. Snipes use ToHit from the character, SavageMelee uses the count from Blood Frenzy. These require user inputs to plug in for those expressions. I could maybe try to parse every mag expression in the game to see what needs to be handled, but for my spreadsheets it does no good. I'm not gonna display every permutation of damage values a power can do. But it might help you out where you have the user input parameters of their build already.

Edited by Bopper

PPM Information Guide                Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Movement Speed: Guide              Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas           RubyRed's API Tool              Mids' Reborn                       

Link to comment
Share on other sites

Well I figure most people would be interested in either the worst or best case.  So you could just do those.  I'll probably just do max +tohit for quick snipes.

 

Anyway if you want a list of all unique mag expressions I could probably get that pretty easily.  I already coded a script to get me all the unique power effect area designators (['Cone', 'Chain', 'Map', 'SingleTarget', 'AoE', 'Location']).

Link to comment
Share on other sites

Yeah, i'll take it. If you can populate a list of unique mag expressions, that would be helpful.


PPM Information Guide                Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Movement Speed: Guide              Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas           RubyRed's API Tool              Mids' Reborn                       

Link to comment
Share on other sites

Here is the list:

Spoiler

((((.8 * minmax(power.base>rechargetime, 1, 30)) + 1.8) * .2) * @StdResult) / power.base>areafactor
((((15 - source>level) * .07) + .3) * .13) * @StdResult
((((15 - source>level) * .07) + .3) * .33) * @StdResult
((((15 - source>level) * .07) + .3) * .67) * @StdResult
((((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.210526316) + 1) * @StdResult) / 3) * 0.33
((((power.base>activatetime * 0.70) + (power.base>rechargetime * 0.04)) + 0.40) * @StdResult) / 3
(((1.2 * source>kHitPoints%) / 100) * .3) * @StdResult
(((100 - source>kHitPoints%) + source>kEndurance%) / 200) * @StdResult
(((100 - source>kHitPoints%) / 100) + 1) * @StdResult
(((100 - source>kHitPoints%) / 1000) + .1) * @StdResult
(((100 - target>kHitPoints%) / 100) * @StdResult) * .45
(((15 - source>level) * .07) + .3) * @StdResult
(((75 - source>kHitPoints%) + 30) / 100) * @StdResult
(((@Scale + (0.01 * source.ownPowerNum?(Temporary_Powers.Temporary_Powers.Wind_Control_Pressure))) * @Value) * @Effectiveness) * @Strength
(((@Scale + (0.02 * source.ownPowerNum?(Temporary_Powers.Temporary_Powers.Wind_Control_Pressure))) * @Value) * @Effectiveness) * @Strength
(((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.210526316) + 1) * @StdResult) * 0.3
(((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.210526316) + 1) * @StdResult) * 0.7
(((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.210526316) + 1) * @StdResult) / 4
(((power.base>activatetime * 0.70) + (minmax(power.base>rechargetime, 0, 20) * 0.04)) + 0.40) * @StdResult
(((source.ownPowerNum?(Temporary_Powers.Temporary_Powers.Savage_Melee_Blood_Frenzy_Stalker) * .04) + 1) * @StdResult) + .72
(((source.ownPowerNum?(Temporary_Powers.Temporary_Powers.Savage_Melee_Blood_Frenzy_Stalker) * .04) + 1) * @StdResult) + .76
((.11 * minmax(power.base>activateperiod, 0, 2)) * @StdResult) / power.base>areafactor
((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.210526316) + 1) * @StdResult
((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.25) + .75) * @StdResult
((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.314285714) + 1) * @StdResult
((minmax((distance - 25), 0, 40) / 40) + 1) * @StdResult
((negate(((source.TeamSize>30 * 0.03) + 0.07)) + 1.0) >= rand()) * @StdResult
((source.ownPowerNum?(Temporary_Powers.Temporary_Powers.Savage_Melee_Blood_Frenzy_Stalker) * .014) + 1) * @StdResult
((source.ownPowerNum?(Temporary_Powers.Temporary_Powers.Savage_Melee_Blood_Frenzy_Stalker) * .04) + 1) * @StdResult
((source>cur.kMeter * .1) + .05) * @Strength
((source>cur.kMeter * 2) + 1) * @Strength
(.066 * power.base>activatetime) / power.base>areafactor
(minmax((100 - target>kHitPoints%), 0, 100) / 100) * 0.75
(minmax((60 - source>kHitPoints%), 0, 100) / 60) * 0.2
(minmax((60 - source>kHitPoints%), 0, 100) / 60) * 0.25
(minmax((75 - source>kHitPoints%), 0, 100) / 60) * 0.25
(source>Max.kHitPoints * 0.03) * @Strength
(source>Max.kHitPoints * 0.033) * @Strength
(source>Max.kHitPoints * 0.09) * @Strength
(source>Max.kHitPoints * 0.1) * @Strength
(source>Max.kHitPoints * 0.25) * @Strength
(source>Max.kHitPoints * 0.3) * @Strength
(target.EventCount>ActivateAttackClick * 3) * source>Str.kRage
(target>Max.kHitPoints * 0.1) * @Strength
(target>Max.kHitPoints * 0.9) - target>Cur.kHitPoints
-1
@StdResult * (((source.ownPowerNum?(Pool.Fighting.Boxing) * .15) + (source.ownPowerNum?(Pool.Fighting.Cross_Punch) * .15)) + 1)
@StdResult * (((source.ownPowerNum?(Pool.Fighting.Kick) * .15) + (source.ownPowerNum?(Pool.Fighting.Boxing) * .15)) + 1)
@StdResult * (((source.ownPowerNum?(Pool.Fighting.Kick) * .15) + (source.ownPowerNum?(Pool.Fighting.Cross_Punch) * .15)) + 1)
@StdResult * (source.ownPowerNum?(Pool.Fighting.Kick) + source.ownPowerNum?(Pool.Fighting.Boxing))
minmax(((pow * 0.25) / 4), 0.0, 1.0)
minmax((target.EventCount>ActivateAttackClick * 0.5), 0.0, 10.0) * minmax((((100.0 - (source>kMeter * 100)) / 20.0) * dup()), 0.0, 10.0)
minmax((target.EventCount>ActivateAttackClick * @StdResult), 0.0, 10.0) * minmax((((100.0 - (source>kMeter * 100)) / 20.0) * dup()), 0.0, 10.0)
minmax((target.EventCount>AttackedByOtherClick * 0.25), 0.0, 5.0) * minmax((((100.0 - (source>kMeter * 100)) / 20.0) * dup()), 0.0, 10.0)
negate(minmax((source>mod.kConfused + 1), 2, 30))
negate(minmax((source>mod.kHeld + 1), 2, 30))
negate(minmax((source>mod.kImmobilize + 1), 2, 30))
negate(minmax((source>mod.kSleep + 1), 2, 30))
negate(minmax((source>mod.kStun + 1), 2, 30))
negate(minmax((source>mod.kTerrorized + 1), 2, 30))
pow * 0.0125
pow * 0.25
source.TeamSize>30 * @StdResult
source>Max.kHitPoints * @StdResult
source>kRage * .01
source>kRage * .02
target.EventCount>ActivateAttackClick * 5

 

Edit: Next step will be to pull out a list of unique variable / function names in all of those.  That will have to wait though.  I have to step out for the evening.

 

Edit: Here's the list of unique "words" in those magnitude expressions.  I used a simple algorithm to extract them.  Hopefully none got missed.

Spoiler

@Effectiveness
@Scale
@StdResult
@Strength
@Value
Pool.Fighting.Boxing
Pool.Fighting.Cross_Punch
Pool.Fighting.Kick
Temporary_Powers.Temporary_Powers.Savage_Melee_Blood_Frenzy_Stalker
Temporary_Powers.Temporary_Powers.Wind_Control_Pressure
distance
dup
minmax
negate
pow
power.base>activateperiod,
power.base>activatetime
power.base>areafactor
power.base>rechargetime
power.base>rechargetime,
rand
source.TeamSize>30
source.ownPowerNum?
source>Max.kHitPoints
source>Str.kRage
source>cur.kMeter
source>cur.kToHit
source>kEndurance%
source>kHitPoints%
source>kMeter
source>kRage
source>level
source>mod.kConfused
source>mod.kHeld
source>mod.kImmobilize
source>mod.kSleep
source>mod.kStun
source>mod.kTerrorized
target.EventCount>ActivateAttackClick
target.EventCount>AttackedByOtherClick
target>Cur.kHitPoints
target>Max.kHitPoints
target>kHitPoints%

 

Edited by carroto
  • Thanks 1
Link to comment
Share on other sites

@carroto thanks for all the hard work on this. I'm just now getting to look at it, but one thing stood out to me. Can you find for me the power that has this magnitude expression? I couldn't find it when I tried.

 

((((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.210526316) + 1) * @StdResult) / 3) * 0.33

 

Edit: Disregard, I found it to be a contamination effect from beam rifle. So it won't impact my stuff, luckily.

Edited by Bopper

PPM Information Guide                Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Movement Speed: Guide              Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas           RubyRed's API Tool              Mids' Reborn                       

Link to comment
Share on other sites

I had the same question about a number of mag expressions so I made a list that includes the power names.  Hopefully not too hard to read:

 

Spoiler

((((.8 * minmax(power.base>rechargetime, 1, 30)) + 1.8) * .2) * @StdResult) / power.base>areafactor -> (Doublehit)
((((15 - source>level) * .07) + .3) * .13) * @StdResult -> (Throwing Knives)
((((15 - source>level) * .07) + .3) * .33) * @StdResult -> (Tranq Dart)
((((15 - source>level) * .07) + .3) * .67) * @StdResult -> (Tranq Dart)
((((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.210526316) + 1) * @StdResult) / 3) * 0.33 -> (Penetrating Ray)
((((power.base>activatetime * 0.70) + (power.base>rechargetime * 0.04)) + 0.40) * @StdResult) / 3 -> (Penetrating Ray)
(((1.2 * source>kHitPoints%) / 100) * .3) * @StdResult -> (Gamma Boost)
(((100 - source>kHitPoints%) + source>kEndurance%) / 200) * @StdResult -> (Master Brawler)
(((100 - source>kHitPoints%) / 100) + 1) * @StdResult -> (Life Support System)
(((100 - source>kHitPoints%) / 1000) + .1) * @StdResult -> (Life Support System)
(((100 - target>kHitPoints%) / 100) * @StdResult) * .45 -> (Second Wind)
(((15 - source>level) * .07) + .3) * @StdResult -> (Apprentice Charm, Mutagen, Taser Dart, Throwing Knives)
(((75 - source>kHitPoints%) + 30) / 100) * @StdResult -> (Gamma Boost)
(((@Scale + (0.01 * source.ownPowerNum?(Temporary_Powers.Temporary_Powers.Wind_Control_Pressure))) * @Value) * @Effectiveness) * @Strength -> (Microburst)
(((@Scale + (0.02 * source.ownPowerNum?(Temporary_Powers.Temporary_Powers.Wind_Control_Pressure))) * @Value) * @Effectiveness) * @Strength -> (Microburst, Breathless)
(((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.210526316) + 1) * @StdResult) * 0.3 -> (Sniper Blast)
(((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.210526316) + 1) * @StdResult) * 0.7 -> (Sniper Blast)
(((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.210526316) + 1) * @StdResult) / 4 -> (Proton Volley)
(((power.base>activatetime * 0.70) + (minmax(power.base>rechargetime, 0, 20) * 0.04)) + 0.40) * @StdResult -> (Doublehit)
(((source.ownPowerNum?(Temporary_Powers.Temporary_Powers.Savage_Melee_Blood_Frenzy_Stalker) * .04) + 1) * @StdResult) + .72 -> (Hemorrhage)
(((source.ownPowerNum?(Temporary_Powers.Temporary_Powers.Savage_Melee_Blood_Frenzy_Stalker) * .04) + 1) * @StdResult) + .76 -> (Hemorrhage)
((.11 * minmax(power.base>activateperiod, 0, 2)) * @StdResult) / power.base>areafactor -> (Doublehit)
((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.210526316) + 1) * @StdResult -> (Moonbeam, Zapp, Blazing Bolt, Psionic Lance, Sniper Rifle, Penetrating Ray, Sniper Blast, Ranged Shot)
((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.25) + .75) * @StdResult -> (Masterful Throw, Proton Volley, Zapp, Blazing Bolt, Moon Beam, Psionic Lance, Sniper Blast)
((minmax(((source>cur.kToHit - 0.75) / 0.22), -1.0, 1.0) * 0.314285714) + 1) * @StdResult -> (Zapp, Mace Beam, Moonbeam)
((minmax((distance - 25), 0, 40) / 40) + 1) * @StdResult -> (Feral Charge, Savage Leap AoE)
((negate(((source.TeamSize>30 * 0.03) + 0.07)) + 1.0) >= rand()) * @StdResult -> (Energy Transfer)
((source.ownPowerNum?(Temporary_Powers.Temporary_Powers.Savage_Melee_Blood_Frenzy_Stalker) * .014) + 1) * @StdResult -> (Unkindness)
((source.ownPowerNum?(Temporary_Powers.Temporary_Powers.Savage_Melee_Blood_Frenzy_Stalker) * .04) + 1) * @StdResult -> (Hemorrhage, Call Hawk, Rending Flurry Normal, Rending Flurry Large)
((source>cur.kMeter * .1) + .05) * @Strength -> (Fortify Pack)
((source>cur.kMeter * 2) + 1) * @Strength -> (Fortify Pack)
(.066 * power.base>activatetime) / power.base>areafactor -> (Dual Wield, Piercing Rounds, Time Bomb, Taser, Smoke Grenade, Rain of Arrows, Trip Mine, Toxic Web Grenade, Empty Clips, Suppressive Fire, Bullet Rain, Caltrops, Executioner's Shot, Hail of Bullets, Pistols, Proton Volley, Moonbeam, Zapp, Blazing Bolt, Psionic Lance, Sniper Blast, Sniper Rifle, Penetrating Ray, Ranged Shot, Gun Drone)
(minmax((100 - target>kHitPoints%), 0, 100) / 100) * 0.75 -> (Vigilance)
(minmax((60 - source>kHitPoints%), 0, 100) / 60) * 0.2 -> (Agile, Dodge, Lucky)
(minmax((60 - source>kHitPoints%), 0, 100) / 60) * 0.25 -> (Agile, Dodge, Enduring)
(minmax((75 - source>kHitPoints%), 0, 100) / 60) * 0.25 -> (Combat Training: Defensive, Foresight)
(source>Max.kHitPoints * 0.03) * @Strength -> (Parasitic Aura)
(source>Max.kHitPoints * 0.033) * @Strength -> (Parasitic Aura)
(source>Max.kHitPoints * 0.09) * @Strength -> (Ablative Carapace)
(source>Max.kHitPoints * 0.1) * @Strength -> (Parasitic Aura)
(source>Max.kHitPoints * 0.25) * @Strength -> (Wild Bastion, Force Barrier)
(source>Max.kHitPoints * 0.3) * @Strength -> (Ablative Carapace)
(target.EventCount>ActivateAttackClick * 3) * source>Str.kRage -> (Domination)
(target>Max.kHitPoints * 0.1) * @Strength -> (Spirit Ward)
(target>Max.kHitPoints * 0.9) - target>Cur.kHitPoints -> (Enforced Morale)
-1 -> (Burst of Speed)
@StdResult * (((source.ownPowerNum?(Pool.Fighting.Boxing) * .15) + (source.ownPowerNum?(Pool.Fighting.Cross_Punch) * .15)) + 1) -> (Kick)
@StdResult * (((source.ownPowerNum?(Pool.Fighting.Kick) * .15) + (source.ownPowerNum?(Pool.Fighting.Boxing) * .15)) + 1) -> (Cross Punch)
@StdResult * (((source.ownPowerNum?(Pool.Fighting.Kick) * .15) + (source.ownPowerNum?(Pool.Fighting.Cross_Punch) * .15)) + 1) -> (Boxing)
@StdResult * (source.ownPowerNum?(Pool.Fighting.Kick) + source.ownPowerNum?(Pool.Fighting.Boxing)) -> (Brawl, Cross Punch)
minmax(((pow * 0.25) / 4), 0.0, 1.0) -> (Defiance old)
minmax((target.EventCount>ActivateAttackClick * 0.5), 0.0, 10.0) * minmax((((100.0 - (source>kMeter * 100)) / 20.0) * dup()), 0.0, 10.0) -> (Battle Euphoria)
minmax((target.EventCount>ActivateAttackClick * @StdResult), 0.0, 10.0) * minmax((((100.0 - (source>kMeter * 100)) / 20.0) * dup()), 0.0, 10.0) -> (Fury)
minmax((target.EventCount>AttackedByOtherClick * 0.25), 0.0, 5.0) * minmax((((100.0 - (source>kMeter * 100)) / 20.0) * dup()), 0.0, 10.0) -> (Fury, Battle Euphoria)
negate(minmax((source>mod.kConfused + 1), 2, 30)) -> (Inner Will)
negate(minmax((source>mod.kHeld + 1), 2, 30)) -> (Inner Will)
negate(minmax((source>mod.kImmobilize + 1), 2, 30)) -> (Inner Will)
negate(minmax((source>mod.kSleep + 1), 2, 30)) -> (Inner Will)
negate(minmax((source>mod.kStun + 1), 2, 30)) -> (Inner Will)
negate(minmax((source>mod.kTerrorized + 1), 2, 30)) -> (Inner Will)
pow * 0.0125 -> (Defiance old)
pow * 0.25 -> (Defiance old)
source.TeamSize>30 * @StdResult -> (Assassination)
source>Max.kHitPoints * @StdResult -> (Ablative Carapace, Parasitic Leech)
source>kRage * .01 -> (Domination, Defiance, Battle Euphoria Buff, Opportunity, Primal Energy, Fury)
source>kRage * .02 -> (Fury)
target.EventCount>ActivateAttackClick * 5 -> (Defiance)

 

  • Like 1
Link to comment
Share on other sites

  • 1 year later
 Share

×
×
  • Create New...