Manipulating mostly-randomly-selected values of things

For anonymising purposes, I am making NEXT TOP BADGER, a game in which aspiring young badgers compete in a reality show for the opportunity to become celebrities.

Badgers have RPG-like stats:

A badger has a number called style.
A badger has a number called cattiness.
A badger has a number called fanservice.
A badger has a number called drama.
A badger has a number called hotness.

In order to focus their branding, badgers can alter their stats by hiring time with consultants, coaches and personal trainers. The coaches available at any one time will be mostly random; moreover, individual coaches will not always have the same effects. The rules for this are kind of fiddly: here’s the kind of restriction needed.

  • A coach always changes either 1 or 2 stats, each by 1 point, either up or down.
  • Some coaches always change a certain stat, either up or down. Spending time with the Outrageous Marmot will always affect your style, either for good or ill.
  • Some coaches never change a particular stat. The Arch Weasel will never affect your style.
  • Some coaches always drag a particular stat towards a particular number. The Conventional Hyrax will always drag your hotness towards 3.
  • Stats cannot go above 5 or below 1; coaches whose effects would exceed this range get silently rejected and replaced.
  • Any remaining effects of a coach (again, each coach can always have 1-2 effects) are randomly determined; finding clues about what they do is an important game element. Doubling up is not possible (if the Outrageous Marmot has two effects, the second can’t also be style.

The difficult thing here is the random part, which needs to come after a number of manipulations of the possibilities. Kinds of values can’t be manipulated as lists, so… is the thing to do to translate each stat into a dummy object and then carry out the sorting process on them?

Kinds of value can be manipulated in lists. So maybe

A stat is a kind of value.
The stats are style-stat, cat-stat, fan-stat, drama-stat, hot-stat.

Then you can define a “list of stats”.

You’d also want to define some phrases like “set (T - stat) of (B - badger) to (N - number)”.

Okay, that makes my life substantially easier. Merci!