# Randomized Death Quotes

I’m trying to make a system that says random text when the player dies, I have 5 quotes and I have different percentages for them!
R.I.P 30/100
WASTED 20/100
GG’s 20/100
You died try again! 20/10
HOLEE 10/100

I want to know how to make the 5 text strings have a certain percent chance to print the text string (not a number) I am pretty bad at scripting…

For anyone that helps thank you in advance!

1 Like

Unfortunately making it percentage is super hard, because you have to manage every thing’s percent.

The approach i have in this is add something to a list a certain number of times (so it gets that chance of being picked)… This is how many big games do it (like Islands drop systems) (i think?).

``````local Quotes = {
{
Text = "something";
Chance = "10"
};
}

local IGQuotes = {}
local Randomizer = Random.new()

for i,v in pairs(Quotes) do
table.insert(IGQuotes, v.Text)
end

function ChooseQuote()
return IGQuotes[Randomizer:NextInteger(1, #IGQuotes)]
end

``````

I will test it out! Thank you for helping :>

Wait, I accedently did a typo, the chance needs to be a number not a string, remove the quotes.

Mk! Thank you for helping me, I hope it works. :>

Question, how do I make it print what it chooses? Do I do

``````print(IGQuotes)
``````

You could do percentages too but at the end of the day its random selection…

Hope it helps:

``````local quotes =
{
"Something",
"Something",
"Something"
}

function selectrandom()
local highest
for i,v in pairs(quotes) do
highest = i
end

local random = math.random(1, highest)

for i,v in pairs(quotes) do
if i == Random then
return v
end
end
end

local randomDeathMessage = selectrandom() -- This will referecnce the random quote selected as a string``````

This works for a pure random selection (though, you could just use `quotes[math.random(#quotes)]`, however, OP wants weighted randomness.

Here’s the method I typically fall back on for weighted chance - it’s very easy to add new messages in the future, and to adjust weights if need-be.

``````local deathMessages = {
["R.I.P"] = 3;
["WASTED"] = 2;
["GG's"] = 2;
["You died try again!"] = 2;
["HOLEE"] = 1;
}

function GetRandomDeathMessage()
local pool = {}
for message,weight in pairs(deathMessages) do
for i = 1,weight do
table.insert(pool,message)
end
end

return pool[math.random(#pool)]
end

print(GetRandomDeathMessage())
``````
3 Likes

you do print(ChooseQuote()). But AskForHeaven’s way is better so do that

Thank you everyone for the help! I’m making a game live so the quick responses are great!