๐Ÿ“ŠXP & Token Rewards

๐ŸŽ“ Experience Points (XP)


Experience Points (XP) represent your PettBro's growth and accomplishments that can be earned by engaging in a wide range of activities, such as buying and using consumables, playing mini-games, or simply maintaining your PettBro's health. As your PettBro accumulates XP, it levels up and gains access to new features and bonuses!

๐Ÿ“Š Level Up

Each level requires a certain amount of XP where the higher your level is, the more XP you need. The function that expresses the player's level goes as follows,

l(XP)=XP100\text{l}(XP) = \sqrt{\frac{XP}{100}}

As your PettBro levels up, it unlocks new features, customisation options and even earns some token rewards. Below you can find the function that governs the token rewards per level,

tokenslevelย up(l)=โŒŠ22ร—lโŒ‹=โŒŠ22ร—(XP100)14โŒ‹\text{tokens}_{\text{level up}}(l) = \lfloor{22 \times \sqrt{l}}\rfloor =\lfloor{22 \times \left(\frac{XP}{100}\right)^{\frac{1}{4}}}\rfloor

๐Ÿ’ต Token Deposits

Every 72h, you get experienceย points by depositing $PAI tokens inside the game. To find out more about this mechanism, revert to Deposit Rewards.

XPย ($PAI)=15.59ร—$PAIdeposited\text{XP } (\text{\$PAI})= \sqrt{15.59\times\text{\$PAI}_{deposited}}

Pett.ai team has employed some safety measures to avoid looped deposits. Any attempts to exploit loopholes or manipulate this mechanism will result in a loss of XP.

๐Ÿ•น๏ธ In-app Interactions

XP rewards are governed by a gaussian random function just like the one used in the ๐ŸŽฒ Random Source of Value section but now with variable ranges.

function gaussianRandom(minimum: number, maximum: number): number

๐Ÿ” Consumables

  • Buy a Consumable: Purchasing consumables not only helps your PettBro but also awards you with XP. The amount gained depends on the price of the consumable and the quantity purchased.

const xpGained = gaussianRandom(0.1, 0.9) * consumable.price * quantity;
// Average XP: 0.5 * consumable.price * quantity
  • Use a Consumable: Using consumables grants XP based on the difference in hunger, health, and energy before and after consumption. Here's the formula

const xpGained += gaussianRandom(0.3, 0.7) * hungerDiff * 2;
// Average XP: 0.5 * hungerDiff * 2
const xpGained += gaussianRandom(0.4, 0.6) * healthDiff;
// Average XP: 0.5 * healthDiff
const xpGained += gaussianRandom(0.8, 1) * energyDiff;
// Average XP: 0.9 * energyDiff

๐Ÿšฟ Bathing & Rubbing

Cleaning your PettBro up to 75% cleanliness, especially using a shower (which makes it quicker but earns less token rewards), awards you with experience points. The average XP earned is approximately 20, determined by the following formula:

const xpGained = gaussianRandom(10, 30);

๐ŸŽฎ Mini-Games

  • โšฝ๏ธ Throw Ball: Playing the Throw Ball Game is not just fun; it also grants you XP. On average, you can earn about 10 XP per game session, determined by:

const xpGained = gaussianRandom(5, 15);
  • ๐ŸŽฒ Dice & Slots: Your performance in the Dice Game directly affects your XP rewards. If you win, you'll receive XP equivalent to the square root of 1.5 times the tokens bet. If you lose, you still get XP equal to the square root of tokens bet:

Did Win?
๐ŸŸข xpGained = sqrt(tokensBet * 1.5) // When you win
๐Ÿ”ด xpGained = sqrt(tokensBet) // When you lose
  • ๐Ÿšช Door Game: In the Door Game, if you managed to land of the 1/4th chance of XP being your reward, the amount is determined based on the difference between your current XP and the XP needed to reach the next level. The average XP gained in this game is approximately 37.5% of this difference.

let differenceXP = nextLevelXp - previousLevelXp;
let xpGained = gaussianRandom(Math.round(differenceXP/ 4), 
                                Math.round(differenceXP/ 2));
  • ๐Ÿงฉ Wordle: Your performance in the Wordle Game determines the XP reward. If you successfully guess the Wordle in six attempts or fewer, you will receive XP equal to the calculated reward for your current level. If not, your XP reward will be reduced, in this case, you will receive one-third (1/3) of the XP you would have earned for guessing the word within the given limit:

You won the Wordle Game?
const rewardLevel = getRewardLevelUp(user.level)
const rewardGameXP = gaussianRandom(rewardLevel / 10, rewardLevel / 5)
๐ŸŸข xpGained = rewardGameXP // Did guess the word in 6 attemps
๐Ÿ”ด xpGained = rewardGameXP / 3 // Did NOT guess the word in 6 attemps

๐Ÿ’ฐ Token Rewards


Tokens can be earned along your Pett.ai journey to help you level up faster and progress in your adventure.

All token rewards are subject to the Real Time Inflation Module (RTIM) from the central bank. They will vary along time based on the $PAI on-chain price.

For more information, revert ๐Ÿงฎ RTIM Module.

๐Ÿงผ Bath Clean

Cleaning your PettBro up to 75% cleanliness will reward you with some tokens, determined by a random number generator.

Is Clean above 75 points?
๐ŸŸข tokensRewarded = genRandomNumber(5, 10) // When you clean 75 or above
๐Ÿ”ด tokensRewarded = genRandomNumber(1, 3) // Cleaniless level < 75

๐ŸŽฒ Dice

The amount of your winnings depend on the bet amount and the outcome of your bet. The payout is calculated based either on your chosen bet number or whether its an even or odd number.

The payout function goes as follows,

function calcPayout(betAmount: number, isLess: boolean, numberBet: number) {
  const payout = isLess ? 1 - (numberBet - 1) / 6 : 6;
  return payout * betAmount;}

๐Ÿšช Door Game

There is a 1/4th chance of winning tokens in the "Door Game". If you are fortunate enough, you will receive a random amount of tokens. You can try the Door Game once every 24h.

The payout function goes as follows,

const rewardLevel = getRewardLevelUp(user.level);
const tokenReward = gaussianRandom(rewardLevel / 10, rewardLevel / 5);
// Average tokens: 0.15 * tokenReward for the current level

๐Ÿงฉ Wordle Game

Everyday a new word comes up in Wordle! Guessing the correct word grants you a token bonus and some additional XP.

You won the Wordle Game?
๐ŸŸข tokensRewarded = gaussianRandom(10, 30); // Guessed the word in 6 attemps
// Average tokens: 20 tokens
๐Ÿ”ด tokensRewarded = gaussianRandom(2, 10); // Did NOT guess the word in 6 attemps
// Average tokens: 6 tokens

Last updated