Devlog – ABI_ShinySpawn v2.0 Making Shinies Feel… Shiny (Randomization + Better Integration)
In this update, ABI_ShinySpawn grew up from “works great, but a bit predictable” into a proper, production-ready shiny system that feels fair, exciting, and flexible.
🎲 1. Randomized Shiny Selection (No More “Always the First One”)
Old behavior:
-
When multiple enemies in a troop had
<Shiny: x, y>, the plugin checked them in a fixed order (left-to-right in the troop). -
With 100% odds, the same slot would always become shiny (e.g., Slime A was always the shiny, Slime B never was).
New behavior in v2.0:
-
On battle setup, the plugin now:
-
Takes the troop member list.
-
Makes a copy.
-
Shuffles that list using a proper Fisher–Yates shuffle.
-
Decides shinies based on this randomized order.
-
Result:
-
With two Green Slimes and
<Shiny: 511, 100%>, only one will be shiny per battle (same as before)…
but which one it is changes from battle to battle. -
Even at lower odds, shiny choices feel more natural and less “scripted.”
🎯 2. One Shiny Per Battle… Unless You Say Otherwise
The original design intention was “one shiny per battle” to keep encounters special. That’s still the default:
-
The plugin picks the first eligible enemy (in the shuffled order) whose roll succeeds.
-
Once one shiny is chosen, later rolls are skipped, so you don’t end up with a full field of shinies by accident.
But for testing or special events, there’s now:
-
Force Shiny Switch ID (plugin parameter)
If that switch is ON:
-
The one-shiny limit is ignored.
-
Every enemy with
<Shiny: x, y>is evaluated normally. -
You can do “all-shiny” showcase battles or test graphics without editing the database.
🧠 3. Smarter Odds Parsing (Multiple Styles Supported)
The plugin’s odds system was cleaned up and clarified. It now supports:
✅ Integer odds (1 in y)
<Shiny: 511, 128> <!-- 1 in 128 chance --> <Shiny: 511, 1> <!-- 1 in 1, always shiny -->
✅ Fraction odds (a in b)
<Shiny: 511, 1:4096>
✅ Percentage odds
<Shiny: 511, 3%> <!-- 3% chance --> <Shiny: 511, 0.5%> <!-- 0.5% chance --> <Shiny: 511, 100%> <!-- Always shiny -->
Clarification:
-
<Shiny: 511, 100>= 1 in 100 chance (1%), not 100%.
Use:-
1 -
1:1 -
100%
for guaranteed shinies.
-
If odds parse to 0 or an invalid format, the tag is quietly ignored and logged in Debug Mode.
🪧 4. ShinyFound Switch for Battle Events & Animations
To make the plugin play nicely with battle events and other systems, there’s a new parameter:
-
Shiny Found Switch ID
Behavior:
-
At the start of each battle, that switch is set to OFF.
-
If at least one enemy becomes shiny, the switch is set to ON.
-
You can now:
-
Use Turn 0 / Span: Battle battle events
-
Condition:
Switch [ShinyFound] == ON -
Show animations, messages, or do anything else you want.
-
This switch is also what makes the new companion plugin ABI_EnemySpawnAnimation feel so powerful when combined with shinies.
💬 5. Cleaner Message Behavior
Shiny messages have been polished:
-
The message string is configurable:
A shiny %1 has appeared!
(%1= enemy name) -
If multiple shinies share the same name (e.g., two Shiny Green Slimes), the message is only shown once per unique name, not spammed.
-
Messages are injected after battle starts, once sprites and UI are ready.
You can toggle the message system on/off in the plugin parameters.
🧪 6. Debug Mode for Tuning & Testing
Debug Mode has been kept and enhanced to help you tune odds and confirm behavior.
When DebugMode = ON, the console will show:
-
Which enemy’s
<Shiny: x, y>tag was parsed -
How odds were interpreted (
rawOdds→chance) -
The randomized troop order used for shiny selection
-
Each roll, compared against the calculated chance
-
Which enemy actually became shiny
-
When the ShinyFound switch is flipped
Perfect for balancing rare encounter rates or making sure your tags are set up correctly.
✅ 7. Compatibility & Intended Use
This version is built to be:
-
Friendly with VisuStella Battle Core
-
Friendly with event battles and random encounters
-
Friendly with spawn animation plugins and battle events
Recommended workflow:
-
Base enemy (e.g., Green Slime) gets:
<Shiny: 511, 1:512>
-
Shiny enemy (e.g., Shiny Green Slime) is a separate database entry with:
-
Its own graphic
-
Its own stats/drops
-
Optional
<SpawnAnimation: x>(via companion plugin)
-
-
Optional:
-
Use
ShinyFoundSwitchIdto trigger special events or visuals.
-
🧾 Summary of Changes in v2.0
-
✅ Randomized shiny target selection (no more fixed order)
-
✅ Stronger, clearer odds parsing (integer, fraction, percentage)
-
✅ ShinyFound switch integration with clean ON/OFF behavior
-
✅ One-shiny-per-battle logic preserved, with an override switch for “force all shiny”
-
✅ Debug logs expanded and clarified
-
✅ Help text and parameters updated and fully documented
If you’re updating from an older version:
-
Replace your old
ABI_ShinySpawn.jswith v2.0. -
Double-check your plugin parameters in Plugin Manager (especially
ShinyFoundSwitchIdandForceShinySwitchId). -
Confirm your notetags—no syntax changes, just more flexibility and less predictability in who becomes shiny.
Files
Get ABI_ShinySpawn v1.3 — Shiny Monster System for RPG Maker MZ
ABI_ShinySpawn v1.3 — Shiny Monster System for RPG Maker MZ
| Status | Released |
| Category | Tool |
| Author | Ash Born Interactive LLC |
| Tags | battle-system, encounter-system, JRPG, Monsters, plugin, rare-monsters, RPG Maker, RPG Maker MZ, shiny, variants |
Leave a comment
Log in with itch.io to leave a comment.