Formulae of Fate

by Octagon

Part I

Introduction

This tutorial will describe the formulas for calculating the various stats you see on your character and pet information screens. I find them useful for deciding what enchantments to seek next, or what gems to try to add to my artifacts, etc.

Scope

I will try to give formulas for all the important numbers on the screen. Where available, I will give formulas for numbers which do not show up directly on the screen, but I will only include formulas which are known to be correct ( because they come directly from Wild Tangent or indirectly influence numbers on the screen in a verifiable way ). I will not give formulas for things that are simple enough that the name of the enhancement completely describes the formula ( for example, boosts to weapons skills fall into this category ).

Prior Work

When I first started playing Fate, I tried to find these equations on the User’s forum, but had limited success. I suspect many of them are out there, but my efforts to find them were inadequate. Where I know of a previous publication of a formula, I will give a link to it. Anything not referenced or described as “common knowledge” I worked out myself. However, if you are aware of a previous publication of the same formula, please add a note to this topic, and I will gladly add the reference to this posting in order to give the original author credit for presenting it first.

Another thing that motivated me to do this was the fact that the few formulas I did find were scattered in different postings; I will attempt to get everything in one easy-to-locate place. Most of what I did find was done by Brokenfixer ( who stopped posting last fall, before I joined the group ), and there were a few other contributions by Siao, TechnoCat, and IUBigler. Brokenfixer seems to have worked out most or all of the formulas that affect the character directly, but as far as I can tell, nobody has put up anything related to the pet or summoned monsters.

Variable Names

There are dozens of variables and attributes, so many that it would be a pain to type them all in, along with the variable name for each, and the reader would not remember them all anyway. Therefore, I will give each variable a name which is long and descriptive enough that you should be able to figure it out. This will make the equations long and cluttered, but, hopefully, easier to understand. Most variable names will just be the first few letters or first syllable of the attribute they refer to. Some will have letters or symbols in front of them:

Except where otherwise noted, I assume that you add up all the bonuses on all your equipment to get the numbers to go into an equation. Thus, if your amulet has “+17% to damage dealt” and your gloves have “+10% to damage dealt”, you would substitute 27 into formulas containing %Dam_dealt, since 17+10=27.

Rounding and Accuracy

Most of these equations give exactly the same result as you see on the screen. In some cases, my formulas may be off by a few points in one direction or another. In my testing, these differences have always been small enough that one can safely ignore them. I think most of them result from my having a poor idea of when and in which direction the computer is rounding off its results.

I use three rounding functions:

How one rounds may seem nit picky, and in some cases it is. In other cases, however, it is very important, especially in heirlooming. Having the rounding function in the formulas tends to clutter them up and make them harder to understand. My recommendation is that if you want to understand the more involved equations, copy them over without the rounding functions in them, and with fractions written out more normally ( instead of everything all in one big long line ). This will make them clearer and easier to understand.

The Character

At last, we get to an equation! Here are the formulas for the important character stats note 27:

Strength Formula:

Bitstream Vera Sans Mono, 10pt

%Str Str = Ceiling((1+       ) * B_Str) + +Str 100
Damage Formula:

The damage formula is the same for both minimum and maximum damage. You just use the minimum base damage for the weapon for B_Dam to get the minimum damage, and the maximum base damage for the weapon for B_Dam to get the maximum damage.

Weap_type_bonus is the weapons skill bonus corresponding to the weapon you are using. So if you’re wielding a sword, Weap_type_bonus is the sword skill bonus, if you are wielding a staff, it’s the staff skill bonus, etc.

Str %Dam_dealt Dam = Floor(((1 +      ) * B_dam + Weap_type_bonus) * (1+           )) + +Dam_dealt + +Fire_dam + +Ice_dam + +Elec_dam + +Undead_dam 100 100
Dexterity Formula:
%Dex Dex = Ceiling((1 +      ) * B_Dex) + +Dex 100
Attack Formula:

Yes, the weapon type bonus affects attack, too. In fact, in my mind, the most important argument favoring increasing your weapons skills is for the boost in attack, not damage:

Att = Floor(70 + Dex/2 + Level + Weap_type_bonus)*(1+%Att/100) + +Att)

Defense Formula:

In the next formula, B_armor is the sum of the armor ratings of all your pieces of armor.

Also, remember that hint about “if your getting hit too much, try increasing your dexterity”? Forget it - look how little each dexterity point actually helps you, compared to an armor point. Then think about how hard it is to make a big change in your dexterity, compared to increasing your armor rating or defense bonuses.

Finally, I have found that this formula is sometimes off by a few points compared to what I see on the screen, and I’m not sure why. For now, I’m writing it off as rounding error.

Dex %Def Def = Ceiling(Floor(10 +       + B_Armor) * (1 +       )) + +Def 10 100
To Hit Formula:

Now that we know how attack and defense are calculated, here is the formula for the probability that an attack will actually hit; note 1:

attackers_attack Hit_probability =                                      (attackers_attack + defenders_defense)
Vitality Formula:
%Vit Vit = Ceiling((1 +       ) * B_Vit) + +Vit 100
Stamina Formula:
%Stam Stam = Ceiling((Vit * 2 + Level) * (1 +        )) + +Stam 100
Life Formula:
%Life Life = Floor((18 + 4 * (Vit + Level)) * (1 +       )) + +Life 100
Magic Formula:
%Mag Mag = Ceiling((1 +       ) * B_Mag) + +Mag 100
Mana Formula:
1 + %Mag Mana = Floor((Mag * 2 + Level) * (           )) + +Mana 100

Dual Wielding

When dual wielding, the amount of damage done by each hand is penalized by a factor which depends on the dual wielding skill ( Dual ). Use the formula for damage (above) to get the damage ( Dam ) for each weapon. When you apply the damage equation, keep the following things in mind:

Therefore, Dam is a different value in each of the equations below, and then the actual damage dealt is reduced by the penalty. The formula for the penalty function was posted by brokenfixer, ( as were the formulas below for critical strike, shield blocking, and spell casting skill, all in the same thread; note 2 ):

Dual Wielding Damage Formula:
5 R_Dam = Dam * (1 -            ) 20 + Dual
10 L_Dam = Dam * (1 -            ) 20 + Dual

The two formulas above give the actual damage caused when dual wielding. But the damage range shown on the screen is, in my opinion, rather odd. It does not actually reflect the damage given in the formulas above in any meaningful way.

The best I can tell is that the program calculates the two minimum damages using formulas different from the one above.

Instead, it calculates the damages using basically the same formulas, but ignoring the contribution from + to damage, fire, ice, electric, and undead, but including the terms for weapons skills, and including the penalties for dual wielding.

Then it takes all the damage bonuses it left out ( + to damage, fire, ice, electric and undead ), adds those damage bonuses for BOTH weapons, does NOT reduce them by the dual wielding penalty, and adds that number to the smallest of the two minimum damages it got by ignoring those terms.

This is the number it displays as the minimum damage.

Similarly, it uses the same screwed up method to calculate the two maximum damages, and then takes the larger of the two to display as the maximum damage.

Also, the attack rating displayed is a bit misleading. It is just the attack rating, calculated as for single weapons, of the right hand weapon.

There also may to be an attack speed penalty for each hand when dual wielding, but I don’t have that formula. I believe it is similar to the damage penalty formulas, and depends only on the dual wield skill, but it may have different constants.

Note that the more you increase your dual wielding skill points, the less each point helps you. This is referred to as “diminishing returns”, and it means that while it is certainly worthwhile putting 15-25 points into the dual wielding skill if you wish to run a dual wielder, putting significantly more than that is probably not a good use of your precious skill points. The equations cause a natural cap to the penalty of 100% ( at which point it really isn’t a penalty at all anymore! )

Critical Strike

The percent chance of a critical strike (which does twice as much damage as a normal hit) is:

50 %Crit =                                   100 (1 +                            ) 3 * Critical_Strike_Skill

Critical strike also has diminishing returns, and again 15-25 is probably all you need. Keep in mind that some of this can come from bonuses on items, so while you may want to put about 10 into this early on, that may be all you ever need. The formula causes a natural cap at 50% chance of getting a critical strike.

Shield Blocking

The percent chance of blocking an attack with your shield is:

50 %Block =                           100 (1 +                   ) 3 * Shield_Skill

I’m not positive how the “% increased chance of blocking” affects this, but I think it is just additive, and capped at 50%.

So if you have a shield skill of 10, giving you an 11% chance of a block, and a “% increased chance of blocking” bonus of 14%, you have a 25% chance of blocking an attack. But if you have a bonus of 45%, you have a 50% chance of blocking an attack because of the cap ( Note 5, Note 6 & Note 7 ).

Shield blocking also has diminishing returns, and again 15-25 is probably all you need - maybe much less if you have a % bonus. The formula causes a natural cap at 50% chance of blocking an attack.

Spell Casting Speed

The spell casting skill boosts your spell casting speed:

80 %Spell_speedup =                                  100 (1 +                          ) 3 * Spell_casting_skill

Spell casting skill also has diminishing returns, and 25-35 is probably all you need if your character is primarily a magician. Again, bonuses, gems, etc. will help, and you may not have to actually assign that many points out of your skill points.

The formula causes a natural cap at 80% speed-up. It is not clear how this interacts with “% Faster Casting Speed” bonus, but I suspect they are additive, like critical strike. I’m not sure what the overall cap is, but bonuses appear to be able to get you well past the 80% cap built into the formula above.

Caps

I have mentioned a few caps in the above sections, but there are others. They are reasonably well known and have been laid out in several other places. Since I have nothing to add to this topic, I’ll suggest you look here ( note 5 ) instead.

Spell Damage

For most spells, calculating spell damage is very similar to calculating weapons damage, except that the strength boost is replaced by a magic boost. A formula very similar to the one below was first posted ( note 1 ), to the best of my knowledge, by brokenfixer.

Again, find the minimum and maximum damage by using the formula twice, once with the minimum base damage for the spell and once with the maximum base damage. The base damages are given by a formula for each spell, and usually depend on attack magic skill ( except for ringing blast, which depends on defense magic skill ).

Note also that any “%Damage dealt” and “+ to damage dealt” bonuses help here, just as they do for weapons damage.

Spell Damage Formula:
Mag %Dam_Dealt Spell_Dam = Round(B_Spell_Dam * (1 +      ) * (1 +             ) + +Dam_Dealt 100 100

The one exception to the above formula is poison cloud. My understanding is that it works like this: the monster takes damage for 20+2 * Att_Mag_Skill seconds.

The formula for the amount of damage it takes each second is:

Mag %Dam_Dealt Poison_Cloud_Dam_Per_Sec = Floor(2 * (1 +      ) * (1 +             )) 100 100

Part II

The Pet

The formulas for the pet are similar to, but not identical to, those for characters. An ‘F’ at the beginning of a variable name indicates a boost base amount associated with the fish it has been fed. 5 of these boosts ( Strength, Dexterity, Vitality, Magic, and Armor ) are shown as part of the fish description when you put your cursor over the fish, but the others ( minimum level, minimum damage, maximum damage, and attack adjustment for the monster type of the pet after it eats the fish ) are not. You have to find them in the monsters.dat file, or here!

You’ll need to use monsters.dat if you have any mods, because the nice chart at the other web site doesn’t include any monsters from mods. Note also, the numbers in monsters.dat do not match the numbers on the fish, except for magic.

You’ll need to adjust them as follows:

Finally, remember that the bonuses that apply here are, of course, the accumulated bonuses from your pet’s jewelry, not your own items, and the level is your pet’s level.

Pet Strength:
B_Pet_Str = 20 + 2 * Level + F_Str
%Str Pet_Str = Ceiling(B_Pet_Str * (1 +       )) + +Str 100
Pet Dexterity:
B_Pet_Dex = 43 + 2 * Level + F_Dex
%Dex Pet_Dex = Ceiling(B_Pet_Dex * (1 +       )) + +Dex 100
Pet Attack:
Pet_Dex %Att Pet_Att = Ceiling(Floor(50 +           + Level + F_Att) * (1 +       )) + +Att 2 100
Pet Defense:
%Def Pet_Dex Pet_Def = Ceiling(Floor(15 + 3 * Level + F_Armor) * (1 +       )) +          ) + +Def 100 5
Pet Vitality:
B_Pet_Vit = 28 + 2 * Level + F_Vit
%Vit Pet_Vit = Ceiling(B_Pet_Vit * (1 +       )) + +Vit 100
Pet Stamina:
%Stam Pet_Stam = Ceiling((Vit * 2 + Level) * ( 1 +        )) + +Stam 100
Pet Life:
%Life Pet_Life = Ceiling((18 + 4 * Level + 4 * Pet_Vit) * (1 +        )) + +Life 100
Pet Magic:
%Mag Pet_Mag = Ceiling(B_Pet_Mag * (1 +       )) + +Mag 100
Pet Mana:
%Mana Pet_Mana = Ceiling((2 * Pet_Mag + Level) * (1 +        )) + +Mana 100

Last, but not least, is damage dealt by the pet.

This is difficult for several reasons: Some monsters have more than one attack type ( I’m not sure which one shows up on the screen, or if it is some kind of average ). Of course, you would have to choose which attack to model. Also, the final formula is a bit subtle, but it works.

It actually is in two parts. For monster levels less than the minimum at which the monster normally can be found as an enemy in the dungeon, it is simple:

Pet Damage I:
Pet_Str %Dam_Dealt Pet_Dam = Floor(F_Dam * (1 +          ) * (1 +             )) + Level + +Dam_Dealt 100 100

At levels deeper than the minimum depth, it is messier:

Pet Damage II:
F_Dam Pet_Str %Dam_Dealt Pet_Dam = Floor((F_Dam + Floor((Level - F_Min_Level) *        ) * (1 +          )) * (1 +             )) + Level + +Dam_Dealt 100 100 100

Pet Experience

There is a lot of confusion in the discussion groups on this point. I hope this will put that to rest.

When the pet is with you ( not going to town ), and not fleeing, you get full experience for all enemy monsters that die, and your pet gets half as much experience as you do. It does not matter whether the fatal blow was struck by you, your pet, or a summoned or charmed monster - you always get full experience and the pet always gets half. There is no way you will ever be denied experience when an enemy monster dies, no matter who kills it.

By the way, a charmed monster is not an enemy. If a charmed monster dies, you get no experience for it.

Summons and Other Monsters

I initially went under the assumption that all monsters ( including summoned ones ) use the same formulas as pets. Some testing quickly convinced me that I was wrong about this.

See: Note 18 and Note 35

I will ignore the stats that don’t actually impact game play and only present the important ones here. Many of these equations rely on the modified level ( mod_lev ) which is just the level of the monster minus the lowest level it can have ( Min_lev) in the game. Min_lev is also in monsters.dat. Be sure you get the minimum level of the monster, and not the minimum level on which it can appear in the dungeon when you look it up.

Other numbers which are in the monsters.dat file are:

IRand( x, y ) means pick a random number between ( and including ) x and y.
So IRand( 3, 5 ) means pick either 3, 4, or 5 randomly.

Summons and Other Monster Formulae:

Modified Level:

Mod_lev = Level – Min_lev

Monster Strength:

M_Str = B_Str + 3 * Mod_Lev

Monster Damage:

Mod_Lev M_Str M_Dam = B_Dam * (1 +          ) * Ceiling(1 +       ) 100 100

Monster Dexterity:

M_Dex = B_Dex + 3 * Mod_Lev

Monster Attack:

M_Dex M_Att = Floor(B_Att + IRand(3, 5) * Mod_Lev) + Level + 50 + Floor(       ) 2

Monster Defense:

M_Dex M_Def = B_Def + 2 * Mod_Lev + Floor(       ) 5

Monster Vitality:

M_Vit = B_Vit + 3 * Mod_Lev

Monster Life:

Mod_Lev M_Life = IRand(M_Min_Life, M_Max_Life) + Ceiling(M_Min_Life *          ) 2

Monster Experience:

Experience = B_Experience + Floor(B_Experience * Mod_Lev * 0.08)

Obviously, Elite and Legendary monsters are stronger than their normal counterparts, but the details of exactly how much stronger are not clear. By comparison to the use of the terms “elite” and “legendary” with items, one would speculate that elite monsters are about 2 times and legendary monsters are about 4 times as strong ( note 6 ) as normal monsters of the same type.

Item Price

Rikko

Alexander gives odds ( note 1 ) on enchantment outcomes. I have not done the statistics to estimate them myself.

The cost of each enchantment attempt is twice what you can sell it to a merchant for, or ¼ of what it costs to buy the same item. Brokenfixer gives the following formula for the value of an item ( note 5 ):

Item’s Value Formula:
Price = Base_Price * Rank * Quality * Sockets * #_of_Enchantments * Strength_of_Enchantments

It is common knowledge that once you attain a certain character level ( it’s possible at about 15th level to come out a little ahead, but it isn’t really worth spending time on until about 25-30th level, in my experience ) you can make money by buying or finding “good” ( meaning legendary, elite, superior, exceptional, flawless, or some combination of these ), nonmagical weapons and armor, enchanting them with Rikko until they turn purple or green ( but no longer ), and then selling them back to a merchant.

In addition to only using “good” items, I usually don’t start with anything that costs me less than about 10,000 at the merchants, because even after enchanting such items typically can’t be sold back to the merchant for much.

The typical enchantment given by Rikko is less than or equal to your level, until you reach level 50. After that, it doesn’t improve anymore. There are also some exceptions to this, including “% increase to gold found”, which can go to twice your level ( or maybe even a little more ), and some of the very powerful enchantments, like “% damage absorbed” and + to attack, defense, or charm magic skills, which only seem to be half your level or less.

Heirlooming

The basics of heirlooming are well known and discussed often in the forum: When you pass on an heirloom, all of its stats increase by 25%, rounding up.

If it is a weapon or armor, it increases in grade ( normal to superior to exceptional to flawless ), unless it is already flawless.

If the heirloom has sockets with gems in them, the bonuses from them will increase, too. But if the gem is removed, only its original power is subtracted from the artifact, meaning that the 25% difference remains in the artifact and will continue to increase ( but there is an exception to this, described below! ).

By exploiting this, it is possible to add new bonuses to your artifacts as you go through the generations. Note that these bonuses will always lag those which are in the artifact before it is first heirloomed, since those original bonuses will typically start out between 1 and 50, while ones added through gems will be one fourth of a gem’s strength, typically only a few points. But for bonuses which don’t need to get very large ( like critical strike skill or % damage stolen ) to be useful, this can be an excellent addition.

It is generally advised not to heirloom items which have movement speed bonuses (because after several generations, your movement speed becomes so fast that the character is impossible to control) or knockback on them ( when the knockback gets too large, enemies get blown through walls, taking their treasure with them if they died, or making them difficult to find to finish the job if they didn’t ).

It is commonly advised to heirloom rings or amulets, since these can be used right away by even a low level character. Powerful weapons and armor require high stats or fame levels to use, meaning your descendant won’t be able to use them until they have gone up a few ( perhaps quite a few! ) levels.

Some people ( including me, note 5 ) have been happy with the results of heirlooming relatively weak armor or weapons, since such items have lower requirements, yet have more sockets, allowing you to improve them more rapidly than jewelry. Also, be aware that the requirements for using elite or legendary items get worse as they go from normal to superior to exceptional to flawless, so it may be more desirable to heirloom a non-elite, non-legendary item if you want to keep its requirements small.

As a rule of thumb, you can estimate that an artifact will approximately double in power every three generations (1.25 * 1.25 * 1.25 = 1.95, and the rounding up helps, too), and increase in power by a factor of 10 in 10 generations.

A recent discovery ( note 1 ) is that small (-1, -2, or -3), negative stats do not get worse over the generations, but larger negative ones do. This is because the rounding is always in the positive direction, so that -2 * 1.25 = -2.5 gets rounded to -2, whereas 2 * 1.25 = 2.5 gets rounded to 3. This also applies to one beneficial stat, % Damage taken reduced, because it is stored as negative number. It may also apply to “+ points to damage taken reduced”; I have not checked this.

Another recent discovery ( note 9 ) is that there are exceptions to the “removing the gem removes only the original value of the gem” rule ( although the thread I linked goes back and forth, jraymo comes to a clear conclusion in the ninth post of the thread. I have repeated his experiment and got the same results ). If the artifact is a weapon, and the gem is a ruby, opal, turquoise, or sunstone, removing the gem removes ALL the damage bonuses ( fire, ice, electrical, or undead ) it gave, not just the gem’s original value. Thus you may want to consider adding everything else in the first few generations, then socketing + to elemental damage gems and leaving them in permanently.

Excel Spreadsheet

Download it here: formulas_of_fate_v1.1.zip

I have created an Excel spreadsheet which includes all this and more in a reasonable layout. I am adding it to the mod archive for anybody who is interested.

Details for using it are in the first tab of the spreadsheet. In general, you type in the stats from your character (or the character you are thinking about creating!) in the highlighted areas, and the resulting stats show up in the other labeled areas of the sheet.

Other tabs project the power of heirlooms after a certain number of generations (allowing you to try different combinations of gems) and the strength of pets and summoned monsters (at least for those in the original, unmodded game), and a few other items.

The pets and summons pages contain a summary of all the relevant statistics so you won’t need to look them up in the monsters.dat file, unless the one you are interested in is not in the original game.