How do I make a rarity system?

Lots of games that have lets say pets have a rarity.

And then lets say someone tries to buy one, it has a higher chance to pick a common one then a rare for instance.

Ik that there are a bunch of posts like this but I looked at them and I cant understand them at all.
I made a post like this before but for the life of me cant find it,

So if anyone knows please tell me!

6 Likes

I’d probably do something like this:

--[[
   Rarities in order of occurence:
   Common, Uncommon, Rare, Epic, Legendary
]]
local DropChances = { --these dont have to equal to 1, since we are rolling multiple times (once for each rarity)
   Common = .75;
   Uncommon = .35;
   Rare = .12;
   Epic = .05;
   Legendary = .005;
}

local Rand = Random.new(os.clock()*1000) --only using this bc its really easy to get a number 1 > x >= 0

function Roll()
    local CurrentBestRarity = "Common" --your base rarity incase all the rolls fail

      for RarityTier, Chance in DropChances do
          local NewRoll = Rand:NextNumber()
          if NewRoll < Chance then -- remember that it goes from [0-1), so we want #s that are less than the "chance" in the chance table
             if DropChances[CurrentBestRarity] > Chance then --if we just rolled a better rarity (lower chance), then use that one.
                 CurrentBestRarity = RarityTier
             end
          end
      end

    return CurrentBestRarity
end
5 Likes

What I usually do (which probably isn’t the most efficient way) is something like this:

local Chance = math.random(1, 10)

if Chance == 1 or Chance == 2 or Chance == 3 then
print("123")
elseif Chance == 4 or Chance == 5 or Chance == 6 or Chance == 7 or Chance == 8 or Chance == 9 then
print("common")
elseif Chance == 10 then
print("rare")
end

This method is probably not the best way to do it, but it’s simple and I use it to make things with 3-4 possible outcomes.

Ok but how can I use this to pick an item inside of a folder?(This item has a value inside called Rarity which is a number ranging from 0 to 100)

You’re probably looking for loot tables. How do loot tables work?