I understand your point, but I feel as though you've already committed to this style of RNG-based gameplay. There are many situations where not having the necessary items in your arsenal actually makes vanilla encounters somewhat dangerous:
- Brawlers with Poison are bad, but Triliums are almost the exact same situation. You're guaranteed to encounter at least one Trilium in every battle on the final stretch to Vargas, and each Trilium has a 33% chance to poison a character on their first turn.
- On the Floating Continent, Ninjas are substantially more dangerous because Thunder Rods are no longer breakable, and repeated castings of Ramuh or Bolt 2 will drain your resources fairly quickly... assuming you can defeat them quickly enough to begin with. It's possible to encounter Ninjas in every single encounter on the Floating Continent, if you're unlucky.
- If I'm not mistaken, it's possible to roll a South Figaro without any healing items, right? In that case, a person with a surplus of Softs might actually prefer a 66% chance of petrify to sustained, slow death by physical attacks.
- It's possible to roll a berserker Celes who has access to neither Jewel Ring nor Ribbon. In this situation, she is especially vulnerable to enemies using Petrify attacks at the start of the World of Ruin.
And so on. I also don't necessarily agree with the sentiment that RNG shouldn't determine success to at least some degree. RNG gives an incentive to gamble and helps craft colorful situations. A player who is suddenly carrying a statue up Mt. Koltz has to make a difficult decision about whether it is worth attempting to reach Vargas, or if they should just reset and start from the base of the mountain.
That said, I do understand the desire to try to make the game as skill-based as possible. I just think that there are some fundamental inconsistencies with this design philosophy, and the design of both FF6 and the randomizer in their current states.Gear shift. Monster palettes.
The nice thing about enemy palettes is that nearly every enemy has their own unique palette. Characters are limited to only about 6 main palettes, mostly due to display limitations, but no more than 3 enemy palettes are used at any given time, so enemies are free to have whatever palette you want.
The monster graphics specifications are stored at 0x127000
(unheadered); among other things, this includes the pointer to the graphic data and the palette index. The palettes themselves begin at 0x127820
. As far as the "palette index" is concerned, each palette is only 16 bytes long. However, some enemies use more than 8 colors, and require a 32 byte palette... in this situation, they use the palette at the palette index and the following palette as well. I don't know if there's a better way of identifying whether a palette is used for 8-colors or 16-colors, but as far as I can tell, enemy palettes almost never overlap, so if a palette at index X is being used for a 16-color enemy, then palette X+1 won't be used by any enemy. I can't say whether this approach is bulletproof... in Beyond Chaos, Guardian never has a decent palette, but that might be because I botched the handling of Esper palettes (which are stored as monster graphics as well).
You're probably familiar with the palette format, but I'll explain it anyway. Each color is two bytes, so a palette of 16 bytes has 8 colors. The highest bit is used for some kind of transparency. The next 15 bits are red, green, and blue components (5 bits each), though I don't remember what order they're in.
In Beyond Chaos, the way colors are mutated is very simple. Each palette is partitioned into groups based on which color components are dominant... for example, a red group, a blue group, etc... except I use 6 groups. Then, all of the colors in a given group have their color components swapped the same way. In addition to that, I might fudge the "middle" component closer or further from the high and low components, but I fudge this component by the same ratio for each color. This technique results in coloring that looks very consistent with the original artwork because the shading and general composition stays the same. But it also varies the results in more interesting ways than a simple hue change.
I hope that was helpful. If you'd like to see the algorithms themselves, the relevant code is in