gachahell_mods: (Default)
Gacha Hell Mod Team / NPCs ([personal profile] gachahell_mods) wrote2017-06-05 10:51 am

Pull Math

Pull Math!
PULL MATH

Don't worry - you don't need to know ANY of the below info in order to play the game! It's just here for those who are curious and to hold us accountable to a fair algorithm. All of this math is handled by the gachahell Discord bot.

REGAIN PROPERTIES

  • ID: A number identifying the Regain. No two Regains share the same ID number.
  • Name: The Regain's name, as assigned by the player.
  • Description A short description of the Regain, as assigned by the player.
  • Rarity: A rating from 1 to 5, as assigned by the mods. The higher the rating, the less likely the Regain is to appear in pulls.
  • Owner: The name of the character to whom the Regain belongs.
  • Canon: The canon to which that character belongs.
  • Tags: A list of informational tags associated with the Regain. Tags currently in use: Dropped, Painful, Fragment.

Rarity Distribution

  • ★: 33%
  • ★★: 27%
  • ★★★: 20%
  • ★★★★: 13%
  • ★★★★★: 7%

These values, however, are not immutable - based on events and other circumstances, different rarities can have their Weight increased, making them more likely to occur. The formula for total drop probability looks something like this (in the above values, 'rating' for 5 stars would be 7):

(rating for rarity * weight for rarity) / (sum of (rating * weight) for all rarities)

For example, under normal circumstances, 5-star Regains have a drop rate of 7/100, or 7%. However, if 5-star Regains were being distributed at Weight 3, then their drop rate would increase to 21/114, or 18.4%.

The Pull Algorithm

  1. Check how many consecutive pulls this character has had since their last 5-star pull, call that Rollover.
  2. Increase Weight of 5-star Regains by 0.1 * Rollover.
  3. Determine Rarity randomly according to above Distribution.
  4. If this is the third Regain of the Pull and no Regains have been above rarity ★★, set Rarity to ★★★.
  5. If Rarity is ★★★★★ and there has already been a ★★★★★ Regain in this Pull, set Rarity to ★★★★.
  6. Set Regain pool to all Regains of the determined Rarity.
  7. Remove all Regains with the same ID as a previous Regain in this Pull.
  8. If this character has any personal Regains of the determined Rarity, 10% chance to remove all Regains from the pool that don't belong to this character. If so, ignore all subsequent removal rules.
  9. Remove all Regains with the Dropped tag from the pool.
  10. Remove all Regains for other characters played by the same player as the pulling character from the pool.
  11. If the player has chosen to opt out of Painful Regains, remove all Painful Regains from the pool.
  12. Remove all Regains with tags that previous Regains in this Pull already have - no Pull can have multiple Regains with the same tag. The 'Fragment' tag doesn't count for this rule.
  13. Apply special rules for events.
  14. Pick a random Regain from the remaining pool of Regains. If the pool somehow became empty, pull 3 Orbs.