Skip to content

Instantly share code, notes, and snippets.

@silverwind
Created March 1, 2012 23:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save silverwind/1953924 to your computer and use it in GitHub Desktop.
Save silverwind/1953924 to your computer and use it in GitHub Desktop.
float GetPvESpellHitRate(byte playerLevel, byte targetLevel, byte spellLevel)
{
float hitrate;
if ( playerlevel > targetLevel) // Player > Mob, no base miss rate, 0.5% miss per spelllevel lower than moblevel
hitrate = 1 + (spellLevel - targetLevel)/200);
else if ( targetLevel == playerlevel) // Player == Mob, 15% base miss rate, 0.5% miss per spelllevel lower than moblevel
hitrate = 0.85 + (spellLevel - targetlevel)/200);
else // Player < Mob, guessed formula
hitrate = 0.85 - Math.Sqrt(targetlevel - spellLevel) * 9;
hitrate > 1 && hitrate = 1; // cap at 100% just to be sure
hitrate < 0.55 && hitrate = 0; // any hitrate < 55% results in 0% hitrate
return hitrate;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment