Official Pawn forums Forum Index
  
Math behind the PvE-Values (outdated...)

 
Post new topic   Reply to topic    Official Pawn forums Forum Index -> Mage Scales
View previous topic :: View next topic  
Author Message
bando



Joined: 09 Jul 2007
Posts: 76
Location: Garona-US

PostPosted: Mon Jul 09, 2007 3:47 pm    Post subject: Math behind the PvE-Values (outdated...) Reply with quote

all right. after playing arround with PAWN, include created his own LUA-files. here he could write some basic formulas to calculate the values automatically.
this LUA-file is NOT part of the official PAWN-release. but it helps creating some BALANCED scales.

everything should be open source! so here you've got all calculations behind the stats! maybe you'll see some wrong things.



Code:

local function Pawn_GET(class)
   --*********************** C O N S T A N T s  ********************--
   local Pawn_POWER    = 1.5;      -- IMPORTANT!!! most of the damage-stats are scaled by this factor!
   local Pawn_STATS   = 0.02;      -- how important are stats like int, sta, spi, agi etc..    ...eg: 20 sta worth as much as 5 spelldam.
   local Pawn_RESI    = 0.05;      -- the weight of resistances...   
   local Pawn_SOCKETS   = 1;      -- multiply the points for EMPTY slots by this value...  (if filled socked: add the bonus you get from the gem in it)


   --*********************** V A L U E S  ********************--
   local tmp = { };
      tmp.Mana             = Pawn_STATS;       
      tmp.Health             = Pawn_STATS;         

      tmp.Stamina          = tmp.Health*10;   -- one sta = 10 health
      tmp.Intellect         = tmp.Mana*13;
      tmp.Spirit             = Pawn_STATS*3;   -- ... only usefull, if you cast "magic armor"
      tmp.Mp5             = Pawn_POWER*0.55;     -- average add-DPS to a 10-min-fight
      tmp.Hp5             = Pawn_STATS;    
      --tmp.int    is different for fire/frost-mages.. so its calculated below
      
   --*********************** M E L E E - S T A T S  ********************--
      tmp.Dps             = 0;       -- does not really count for mage-weapons
      tmp.Armor             = 0;      -- well.. armor......  mage = onehit... +2k armor could  not help...   
      
      tmp.Ap                = 0;            
      tmp.FeralAp          = 0;   
      tmp.Rap             = 0;   -- hunter (ranged attack power)
      tmp.Strength          = 0;
      tmp.Agility          = 0;      
      tmp.Resilience          = 0;    -- 40 resilience = -1% chance to resist a melee-crit-damage... not usefull for mages..
      tmp.CritRating          = 0;      
      tmp.DodgeRating       = 0;   
      tmp.ParryRating       = 0;
      tmp.HitRating          = 0;            
      tmp.DefenseRating       = 0;      
      tmp.BlockValue          = 0;      
      tmp.BlockRating       = 0;
      tmp.GunRating         = 0;
      tmp.BowRating          = 0;
      tmp.CrossbowRating      = 0;
      
      tmp.SwordRating       = 0;
      tmp.AxeRating          = 0;
      tmp.UnarmedRating       = 0;
      tmp.DaggerRating       = 0;
      tmp.MaceRating          = 0;
      tmp["2HMaceRating"]      = 0;
      tmp["2HSwordRating"]    = 0;
      tmp["2HAxeRating"]       = 0;
      
      --*********************** O T H E R S  ********************--
      tmp.Healing = 0;                  -- we don't have any healing spells
      
      tmp.ShadowSpellDamage    = 0;
      tmp.NatureSpellDamage    = 0;
      tmp.HolySpellDamage    = 0;      
      
      --*********************** R E S I S  ********************--   
      tmp.FrostResist       = Pawn_RESI*2;
      tmp.ArcaneResist       = Pawn_RESI*2;
      tmp.NatureResist       = Pawn_RESI*2;
      tmp.ShadowResist       = Pawn_RESI*3;
      tmp.FireResist          = Pawn_RESI*3;
      tmp.AllResist          = Pawn_RESI*5;   -- all resis are always nice to have.  but still not very usefull  ^^   +4 all resi worth like about one spelldam.
            
   -- ##################################################################################--
   -- ##    following values are based on many tests, comparing a LOT of items, bringing the values into a balanced weight...    ## --
   -- ##################################################################################--
      tmp.ArcaneSpellDamage    = Pawn_POWER*0.1;   -- may give some small points for arcane blast   

   if (class and strlower(class)=="fire") then
      --************************** F I R E M A G E **********************--
      tmp.SpellCritRating    = Pawn_POWER*0.465;         -- +21crit = +1% ... crit gives a LOT of additional proccs.
      tmp.SpellPower          = Pawn_POWER*0.603;         -- compared to frostspells, you'll get 100% of the itembonus.  you dont need as much spelldam as a frostmage needs!
      tmp.SpellHasteRating    = Pawn_POWER*0.582*0.85;   -- based on 950 spelldam and 90hit. visit www.maxdps.com  but malus because you need much more mana!   
      tmp.SpellHitRating       = Pawn_POWER*0.563;         -- if you're lvl 70, and fight against bosses, you need at least 164 SpellHit
      tmp.SpellPenetration    = Pawn_POWER*0.05;         -- this value is usefull in pvp and 5-men-instances. but not for raids.   
      tmp.FrostSpellDamage    = tmp.SpellPower*0.05;
      tmp.FireSpellDamage    = tmp.SpellPower*0.95;      -- general-school-addspell should be better than fire-only!      
   else
      --************************** F R O S T M A G E **********************--   
      tmp.SpellCritRating    = Pawn_POWER*0.400;         -- +21crit = +1% ... crit gives a LOT of additional proccs.
      tmp.SpellPower          = Pawn_POWER*0.693;         -- compared to frostspells, you'll get 100% of the itembonus.  you dont need as much spelldam as a frostmage needs!
      tmp.SpellHasteRating    = Pawn_POWER*0.550*0.90;   
      tmp.SpellHitRating       = Pawn_POWER*0.563;         -- if you're lvl 70, and fight against bosses, you need at least 164 SpellHit
      tmp.SpellPenetration    = Pawn_POWER*0.05;         -- this value is usefull in pvp and 5-men-instances. but not for raids.   
      tmp.FrostSpellDamage    = tmp.SpellPower*0.95;
      tmp.FireSpellDamage    = tmp.SpellPower*0.05;      -- general-school-addspell should be better than fire-only!   
   end
   
   -- fixing int: stack with crit...   81int = 1%crit = 21critrating @ 70)
   tmp.Intellect          = tmp.Intellect+tmp.SpellCritRating/5;
      
   --*********************** S O C K E T S  ********************--   
   -- HOW do i calculate the values: check for some CHEAP gems.
   -- whats "cheap"? --> easy to get gems, less than 10g @ AH
   -- more details about gems:   http://www.wowwiki.com/Jewel
   -- btw: the empty slot should not get the same points as a filled slot.
   
   -- META: calculated: [Swift Starfire Diamond] (+12dam) but [Chaotic Skyfire Diamond] is MUCH better
   tmp.MetaSocket          = Pawn_SOCKETS*Pawn_POWER*7.91;      
   
   -- YELLOW: +4 spelldam and 3 crit  OR another with +6 crit OR another with +6 HIT
   tmp.YellowSocket       = Pawn_SOCKETS*( ( (tmp.SpellPower*4 + tmp.SpellCritRating*3) + (tmp.SpellCritRating*6) + (tmp.SpellHitRating*6) )/3 );   

   -- RED: +7 spelldam OR another with   +4 Spell Damage and +3 Spell Critical Rating
   tmp.RedSocket          = Pawn_SOCKETS*( ((tmp.SpellPower*4 + tmp.SpellCritRating*3) + (tmp.SpellPower*7))/2 );         
   
   --BLUE:  there's only one:  [Glowing Shadow Draenite] (+4 Spell Damage  +4 Stamina)
   tmp.BlueSocket          = Pawn_SOCKETS*((tmp.SpellPower*4 + tmp.Stamina*4));   -- blue suxx!
   return tmp;
end


function Pawn_GET2(class)
   temp = Pawn_GET(class);
      temp.FrostResist       = 0;
      temp.ArcaneResist       = 0;
      temp.NatureResist       = 0;
      temp.ShadowResist       = 0;
      temp.FireResist       = 0;
      temp.AllResist          = 0;
      temp.Mana             = 0;       
      temp.Health          = 0;         
      temp.Stamina          = 0;
      temp.Spirit            = 0;
      temp.Mp5             = 0;
      temp.Hp5             = 0;    
      temp.SpellHasteRating   = temp.SpellHasteRating/0.85;
      temp.Intellect          = temp.SpellCritRating/5;
   return temp;
   --[[
   --tmp.SpellHitRating=0.7875;
   
   if (class and strlower(class)=="fire") then
      tmp.Intellect=0.287;
      tmp.FireSpellDamage=1;
      tmp.SpellPower=1;
      tmp.SpellCritRating=1.3;
      tmp.SpellPenetration=0.15;
   else
      tmp.Intellect=0.19;
      tmp.SpellPower=1;
      tmp.SpellCritRating=0.7619;
      tmp.SpellPenetration=0.1;
      tmp.FrostSpellDamage=1;
   end
   
   tmp.MetaSocket=10;
   tmp.YellowSocket=4.5;
   tmp.RedSocket=5;
   tmp.BlueSocket=2.5;
   return tmp;]]--
end



function Pawn_GetMyOwnScale()
   return {
      ["Fire-PvE"]    = { ["Values"]= Pawn_GET("fire") },
      ["Frost-PvE"]    = { ["Values"]= Pawn_GET("frost") },
      ["Frost-DAM"]   = { ["Values"]= Pawn_GET2("frost") },
      ["Fire-DAM"]   = { ["Values"]= Pawn_GET2("fire") },
   }
end;



and here you'll get the result scales:
- Frost-PvE
- Fire-PvE



well, may you see something unusual, something strange in it? do i have to fix something?
any may you compare some items, and think the given points are wrong? (like: this item gets 200 points and the other 180... but i think the other should be better than the first)
Back to top
View user's profileSend private message
bando



Joined: 09 Jul 2007
Posts: 76
Location: Garona-US

PostPosted: Mon Jul 09, 2007 4:05 pm    Post subject: Reply with quote

Quote:
local Pawn_SOCKETS = 0; -- multiply the points for EMPTY slots by this value... why should an empty slot give ANY points?



Maybee because you always can insert a socket?

If you have 2 items A and B,

Item A has +20dmg and +10int,
Item B has +20dmg and +10int and 1 red socket.

Item B should be valued higher since you can insert a socket and therefore the item is better, so even empty sockets represent a value.

Also i think 1int = 15mana not 20, but might be wrong.

And if you initially value int = PAWN_STATS * 20 = 0.03 * 20 = 0.6

But value SpellCrit = Pawn_POWER * 1.15 = 2*1.15 = 2.3,

and say that 80int = 21crit = 1%, then you should add:
crit/int = 21/80, value to the original int value, as thats the value the crit represents in intellect.

So int should finally be 0.8625

You then say you need to divide by 3 or int gets to heavy? if int is to heavy after you add crit, then your original int of 0.6 / int was too heavy.

As 0.2625 is the value 1 int has compared to what you value crit.

So instead of dividing by 3 here, (Which in turn makes mana more worth than it should since mana was int/20, and now you lower int.) then lower the *20 factor in the original int line.

Some Examples form your script:

Your int value before crit is added:
0.6

After crit is added (Before /3)
1.175

After /3
0.392

Value of mana:
original_int/20 = 0.6/20 = 0.03

Value of 1 crit:
2.3

Crit part of int:
2.3/4 = 0.575

So now int is worth 0.392, but the crit value of 1 int alone is 0.575

See where im going?

so remove the /3, and lower the *20 factor in your original int line instead.

Sorry for the long post

/Nelan
Back to top
View user's profileSend private message
bando



Joined: 09 Jul 2007
Posts: 76
Location: Garona-US

PostPosted: Mon Jul 09, 2007 4:05 pm    Post subject: Reply with quote

no problem.
i see what you try to say!
indeed, 1 int gives 15mana... rofl, i didnt recognize that REALLY important failure... damn!


and about the slots...
well, you get that item here: 180 points, enchanted and with inserted gems.
and another item here: 140points, 2 empty (but existing) slots and no enchant.

how many points should the second item get from empty slots? visit your inventory, maybe you'll find a red gem: "+5 spelldamage". fine, PAWN gives that item 10 points. (e.g)
another gem gives us maybe 8 points. and epic gems could give us up to 20 points...


maybe empty slots should worth 4 points? what do you think about?




[edit] playing arround with int and crit...
still got no balanced scale here


1 int = 15 mana, thats true. now: take the FIRE-pattern!
int = 15*0.03 = 0.45 (at start)
crit-value = (2*1.15) = 2.3
int = 0.45 + 2.3/4 = 1.025

thats still MUCH tooo heavy for int. so 2 int worth like 1 crit. thats ridiulous.
maybe its better to "fake" it a little bit, e.g.

int = 0.45 + 2.3/6 = 0.833. (... about 3 int worth like 1 crit)

i know, its not the right way. but i prefer faking some values instead of get an imbalanced scale...
Back to top
View user's profileSend private message
bando



Joined: 09 Jul 2007
Posts: 76
Location: Garona-US

PostPosted: Mon Jul 09, 2007 4:06 pm    Post subject: Reply with quote

include wrote:
Quote:
maybe empty slots should worth 4 points? what do you think about?



The way i valued empty slots in my heal and hunter scale is i look at gems thats very easy to optain, but still give a pretty decent value, and then evaluate the slots with that value.

include wrote:
Quote:
int = 0.45 + 2.3/6 = 0.833. (... about 3 int worth like 1 crit)

i know, its not the right way. but i prefer faking some values instead of get an imbalanced scale...



Yeah i know but again your giving the crit part of int less value than the crit from crit rating, which dosent make sense.

1crit rating = 2.3 value
4int = 1crit rating = 2.3 value.

so 4int is at least as good as 1 crit rating, since int gives mana too.

Atm 4int would get 3.332 value, which is > 2.3 so thats fine.

So by having the 0.45 you manage to keep int more value, but its just a bit unlogical the way you add them up

If you want int to be 3.332 value then do:

int = 0.258 + crit/4 = 0.258 + 2.3/4 = 0.833

and then mana should be:
mana = 0.258/15 = 0.0172

Then the values are tied together correct (At least in my mind

And remember im only trying to help, if you disagree by all means keep it your original way

/Nelan
Back to top
View user's profileSend private message
bando



Joined: 09 Jul 2007
Posts: 76
Location: Garona-US

PostPosted: Mon Jul 09, 2007 4:07 pm    Post subject: Reply with quote

Gof wrote:
Quote:
And remember im only trying to help, if you disagree by all means keep it your original way
/Nelan


thats why i made the scale-calculation "open source".


i've got another idea:
why dont we multiply the values like all other stacking effects in WoW (e.g. same formula like aggro-reduce)
so
int = 1-[(1-0.45)*(1-crit/4)] = 1-[0.55 * 0.425] = 0.766


this theory sounds very interesting for me...


(edit)
all right, fixed and updatet the source and the scales! have fun!

(edit2)
i dont know... do you think, the SPELLDAM weights too much, compared to sta, int etc... may i should change PAWN_stats to 0.05 instead of 0.03? (so 20sta ~ 5 spelldam instead of 3)
and may i should fix SpellHit:
SpellHit = PAWN_Power * 12.6 / 16

because 1% hit worth like 16 spelldam... or do i miss something?

(edit3)
updated ... fixed spellHit and weight of INT,STA,SPI etc
Back to top
View user's profileSend private message
bando



Joined: 09 Jul 2007
Posts: 76
Location: Garona-US

PostPosted: Mon Jul 09, 2007 4:08 pm    Post subject: Reply with quote

hmmm... after fixing the PvE-values, i'm thinking about creating the PVP-Scales for frost and firemages...

could someone help me? i think, these things should be done:



  • SPI --- (so does MP5) ---> maybe goes to zero.
  • STA +++ --> need up to 9k life
  • SpellCrit ++ --> btw: int gets improved too!
  • SpellPenetration + --> chars often got up to 80 res on all schools
  • SpellHit -- --> just need 4% to get a hitrate of 99% vs 70!
  • Armor + --> well, may be usefull
  • Resiliance + --> well...



SpellHit: absolutely crap. just get 3% to hit, and thats fine!
Resiliance: may you should get at least 300 res. that would help in pvp
Back to top
View user's profileSend private message
Debuff



Joined: 20 Jul 2007
Posts: 4

PostPosted: Fri Jul 20, 2007 3:45 pm    Post subject: Reply with quote

Keep in mind that the weights for those stats will be drastically different for a pvp or pve spec. spell penetration is a useless stat in pve but is moderately useful in pvp. Similarly, up to 16% spell hit is ideal in pve but anything past 3% is useless in pvp. Resilience and stamina are also good examples.
Back to top
View user's profileSend private message
Display posts from previous:   
Post new topic   Reply to topic    Official Pawn forums Forum Index -> Mage Scales All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum