Releases: campavao/kanto-battle-royale
Release list
v0.36.0 — the download loses its test suite
Everyone in a match needs this build to fight. The room protocol is
unchanged, so a 0.36.0 game and a 0.35.0 one still find each other and share
a lobby — but the door compares mod versions, so a battle between them is
refused, with a message naming both. Worth grabbing together.
You could be knocked out for touching the grass
With another overworld mod installed, walking into a wild encounter during
the SAFARI could eliminate you on the spot. The guard meant to excuse that
was listening on the wrong event and checking for the wrong phase, so it had
never once run — the refusal actually arrives a beat earlier than where it
was waiting, and it was watching the match rather than the hunt.
It runs now, and only during the SAFARI and the drop, where "no usable
POKéMON" honestly means "hasn't caught anything yet". Everywhere else that
still means a whiteout, and a whiteout still puts you out. Catching nothing
before the buzzer still ends your match.
The download is a third smaller
The zip was shipping the mod's own test suite — 27 files, 39% of what you
downloaded, and nothing in the game ever read one of them. It's 303KB down
to 191KB.
Files now sit at the top of the archive rather than inside a
battle_royale/ folder. The game reads either layout and installs to the
same place, so this changes nothing you can see.
The mod manager will ask for one more thing
The manifest now declares engine_internals, so enabling the mod shows an
extra line about reaching into engine code. Nothing behaves differently and
nothing new is happening — the mod has always needed those parts of the
game, and the manifest simply never said so.
Also in this build: a failed new-game left the save-event guard switched off
for the rest of the session, the career and stats files stopped carrying two
copies of the same parser, and a handful of log lines that claimed success
when nothing had happened now tell the truth.
v0.35.0 — the room says who you can fight
Everyone in a match needs this build. The room protocol changed, so a
0.35.0 game and a 0.34.0 one can't see each other. Worth grabbing together
if you play with friends.
The room tells you who you can fight
If you and someone else were on different versions, everything worked
except the one thing that matters. You'd join, walk around together, drop
into Kanto — and then find out you couldn't battle, minutes later, from a
message that didn't say what was wrong or whose fault it was.
Now the room checks at the door. Someone on a different build is turned
away before they're stuck in a match they can't play, and told exactly
what to update — with both version numbers on screen, theirs and yours.
There are two numbers, and they're fixed in different places: the game
wherever you installed it, and Royale from the launcher's update
check. The screen says which one is wrong.
If you're hosting and someone bounces off, your lobby keeps a note of who
tried and what they were on.
Bots act like players now
They used to wander. It's fine at a glance and obvious the moment you're
knocked out and watching one with the spectator camera — which is when
most people actually look at a bot closely.
Now they go somewhere for a reason. Into the grass, and they stay a while
— you'll see the same battle mark over their head that a real player gets.
Over to a fallen trainer's Pokemon on the ground. Out of the fog when it
reaches them. And they walk around ledges and fences to get there instead
of giving up and drifting.
They also come in three grades. Some are a speed bump. Some have been
building a team all match and will end your run. You can tell which before
you reach them — the dangerous ones look like Cooltrainers.
Every bot still starts with one Pokemon, same as you. What changed is the
other end of the match: a bot used to still have one when you had six.
Fixes
- The fog now closes the Pokemon Center it's actually reached. Every
Center in Kanto used to shut the moment the first ring started, even in
towns the fog wouldn't touch for another ten minutes. - No EXP during a match at all. Your level comes from the ring, so the EXP
never bought anything — it just spent text boxes after every fight. - Gym leaders fight at the current level instead of ten above it. The
first gym was close to unwinnable and the last one was free. - The Elite Four rooms stop marching you in and shoving you back.
- Cerulean stays whole when the Rocket thief stands down. This one was a
softlock in 0.33.0 and 0.34.0.
New: COMPATIBILITY.md
explains why two people sometimes can't play together, in one place.
v0.34.0 — sharing the overworld
Compatible with 0.33.0 — the room protocol is unchanged and the relay is
untouched, so you can update without everyone else having to, and updating
can't interrupt a match anyone is playing.
Playing nicely with other mods
If you run Wilds of Kanto — the mod that puts wild Pokémon out in the
overworld — Battle Royale was unplayable. Every encounter in the Safari
opened a battle, told you that you had no usable Pokémon, and knocked you
out of the match before you'd caught anything.
Neither mod was doing anything wrong. Both of them take over the overworld,
and a match takes it over harder: you start with an empty party, in the
Safari, with the fog on a clock. The two were competing rather than
composing.
So now, mods that act on the overworld stand down for the length of a
match and get switched back on the moment it ends — using the switches
they publish themselves, not by fighting them.
Your other mods are yours. If a match ends badly, if you leave in a hurry,
or if you close the game outright, they come back. There are two separate
paths that restore them and a third safety net in the fact that those mods
set themselves up fresh every time you launch.
And if it happens again
A battle the game refuses to start no longer counts as a loss. That's not
about any particular mod — it means the next thing that trips over this is
a curiosity instead of the end of your match.
Thanks to Feel Devine for reporting it, and for the patience of testing it
with mods on and off to pin down which one it was.
v0.33.0 — the only thing that moves you is the fog
Compatible with 0.32.0 — the room protocol is unchanged and the relay is
untouched, so you can update without everyone else having to, and updating
can't interrupt a match anyone is playing.
Nobody marches you anywhere
Kanto is full of scripted moments that grab you and walk you somewhere. In
a normal playthrough they're the game. In a battle royale they're a
movement lock while the fog is closing and other trainers are hunting you,
and you can't answer them.
0.31.0 stood down Pewter's gym escort. It turns out that wasn't the only
one.
Cerulean's Rocket thief — the east exit toward Route 9. He'd turn you
round, fight you, hand over TM28 and fade the screen out. He was there on
every version of the game, and he could be triggered by walking past or
by talking to him, so both are closed now. He still has something to say if
you talk to him; he just doesn't get to run a cutscene at you.
Jessie and James, if you play on Yellow — four ambushes, and three of
them needed nothing but standing on the wrong tile: Rocket Hideout B4F,
Pokémon Tower 7F, Silph Co 11F. Each one stopped the music, walked you a
step, and dropped a level 42 Rocket on whatever team you'd managed to
build. If you've been playing on Yellow, this is the one you'll notice.
What didn't change
Trainers still jump you. Gyms are still contested bosses, Mt. Moon's Super
Nerd and the Fighting Dojo master are still exactly where they always were,
and Nugget Bridge's recruiter still says his piece. Being fought is the
game — being marched isn't. Only the walks are gone.
v0.32.0 — how much play there has been
Compatible with 0.31.0 — the room protocol is unchanged, so you can update
without everyone else having to.
How much play there has been
The relay hosts the rooms, so multiplayer has always counted itself. SOLO VS BOTS never opened a socket, so the mode most likely to be somebody's whole
experience of this mod was the one nothing could see — and there was no way to
tell one person playing ten matches from ten people playing one.
A solo match now bumps a counter on your machine, and that number goes out the
next time the game connects for a reason of its own — hosting, joining, Quick
Play.
It never dials out just to report a solo game. Opening a connection blocks
for up to five seconds, and somebody who picked the offline mode should not be
waiting on it before their bot match starts. The trade-off is that if you only
ever play solo, nothing is counted until the first time you go online — and
then it all arrives at once.
What rides along: a random ID made up on your machine, the mod version, how
many solo matches since last time, and the date you first played.
What doesn't: your trainer name — you picked it, it's yours — anything about
your save or your team, and your IP.
SEND STATS: OFF in the lobby turns it off, and off stops the counting as
well as the sending, so there's no pile of numbers waiting to go out if you
switch it back on. There's a plain-language "What gets sent" section in the
README.
v0.31.0 — a career that outlives the playthrough
Compatible with 0.30.0 — the room protocol is unchanged, so you can update
without everyone else having to.
Your name, your skin and your wins stick
They were being reset every time you closed the game: you had to set your
name again, pick your skin again, and your career wins — the thing that
unlocks the wardrobe — went back to zero.
They were being kept in per-playthrough storage, which sounds right and is
not. A match is played in a throwaway world that starts a fresh playthrough
every time, so every launch wrote its career somewhere the next launch could
not find it. They live beside the mod now, which is where something that
belongs to you rather than to a save file should have been all along.
If you already had wins on the save you normally play, they are carried over
the first time you load it.
One message when the fog spreads
A ring shrink used to fire three boxes in a row: where the fog was closing,
what level your team had reached, and which rod had replaced which. That is
three announcements of one event — the ring, the level and the rod all move
on the same beat by design.
Now it says it once: The fog spreads!, then Your POKeMON and items
grew stronger!. Where it closed is on the TOWN MAP, which is where you were
going to look anyway. An evolution still gets its own line.
Pewter's gym guide stays home
The youngster who stops you leaving Pewter and walks you to BROCK is a
scripted march you cannot interrupt. Fine in a story; a movement lock in a
battle royale with the ring closing and other trainers hunting. He keeps his
line and loses the escort for the length of a match.
Something to look at while they choose
A link turn is lockstep, so once you have picked a move the screen sits still
until your opponent has picked theirs. Over a relay that can be a few
seconds, and it looks exactly like a client that has hung. The battle's own
message box now says WAITING... while it waits.
v0.30.0 — a TM that says what it teaches
Compatible with 0.29.0 — the room protocol is unchanged, so you can update
without everyone else having to.
A TM says what it teaches
TM01 through TM50 and HM01 through HM05 are a lookup table you are expected
to have memorised or to own a guide for. In a twenty-minute match nobody is
looking anything up: a TM on the ground is loot you either grab or walk
past, and "TM19" tells you nothing about whether it is worth the detour.
So for the length of a match, every machine is named after the move it
teaches. TM19 reads SEISMIC TOSS. HM01 reads CUT.
It is the item's name that changes, not the bag screen, so it reads that way
everywhere the name appears — your PACK, a loot ball on the ground, a
fallen trainer's bag, the shop, and the MOVES row on the party screen.
Just the move, with no number in front. The number is the part you cannot
read anything off, and dropping it buys back five characters in a box that
also has to fit the quantity.
The item table is shared with your real save, so the numbers come back the
moment the match ends — nothing follows you out into an ordinary game.
v0.29.0 — the counter shuts when the fog rolls in
Everyone in a room needs this version. The room protocol moved to 8, so
an 0.29.0 client and an 0.28.x client cannot play together. Update before
your next match — the launcher's Check for updates will offer it.
The Pokemon Center closes when the fog rolls in
Free unlimited healing undid the thing the fog exists to create. The fog
takes a tenth of every Pokemon's health every four seconds precisely so
damage adds up over a match, and a round trip to the counter erased all of
it for nothing.
So the nurse now shuts at the same moment the ring starts closing. She is
open for the whole grace period before that, so heal up early — once the
first ring lands, what you have is what you have. The PC beside her was
already out of order.
Pokemon handed to you in a ball follow the party rules
The Fighting Dojo prize, the Silph LAPRAS, the Celadon EEVEE and the
revived fossils all used to drop straight into a PC — which a match keeps
locked. The prize vanished the instant you won it and nobody could ever
reach it.
Now a gift on a full party opens the same picker a catch does: choose who
to release, and whoever you drop lands as a ball at your feet for someone
else to find. Keep your six instead and the gift lands there too, rather
than disappearing.
You can see who is busy
A trainer sitting in a menu wears a ? and one already in a fight wears a
!, in the game's own emote art, visible to everyone in the room. It is
the difference between walking up to someone about to walk into you and
walking up to someone three menus deep in their PACK — and a ! means they
cannot answer you at all until their fight is over.
Yours is showing too.
Under the hood
A solo room no longer broadcasts to nobody. A Quick Play session that never
found company was pushing about four messages a second at the relay for its
whole length, every one of them forwarded to no one.
v0.28.0 — the room outlives its host
The room outlives its host
A host who quit, crashed or blinked used to take the match down with everyone in it. Now the relay hands the room to the longest-standing member who can take it, and the match carries on.
Almost nothing has to move, because every guest was already mirroring the world the host was authoritative over — where each trainer stands, what has spilled, which of Kanto's own the fog took, where the ring is. The one thing nobody could work out for themselves was the fog clock, so it now rides every shrink; the round's phase length rides the start message, so an heir carries the ring on at the pace the match began with rather than its own.
Promotion is opt-in, so the relay and the mod can be updated in either order.
Everything else
- A closed room actually leaves the match world. Losing the room used to strand you in a throwaway Kanto with SAVE re-enabled over your real save slot. It returns you to the title now. (POK-115)
- The whole room watches the ending. The champion sends their parade, so everyone still in the room sees the same Hall of Fame instead of a one-line banner. (POK-107)
- The Safari zone rotates. Each match draws twelve species from the match seed, so the draft that decides your run is different every time — and identical for everyone in the room. (POK-118)
- Everyone drops with a fishing rod, and the fog upgrades it. Old, Good, Super, on the same clock as the levels: the sea gets better to fish exactly as the land gets smaller. Not in the Safari, where a cast would beat the step budget. (POK-119)
- A trainer standing in a doorway no longer plugs it. A peer idling in a one-exit house used to seal whoever was inside. (POK-108)
Relay
The flood ceiling is a token bucket rather than a fixed one-second window, so a fog sweep passes and a real flood still dies. The first ring shrink retires every stranded map's trainers on one beat — a few hundred messages in a single frame from a client averaging four — and that was disconnecting hosts and ending matches. Already live.
BR_LINES_PER_SEC and BR_BURST_LINES make both limits tunable without a deploy. (POK-114)
Updating
PROTOCOL 7 — everyone in a room needs this version. A v6 client cannot read the match clock and would restart the fog at phase 1 if it inherited a room.
v0.27.3 — the lobby list scrolls
The ROYALE screen fits the screen again
Hosting a room with a few trainers in it ran the lobby list off the bottom
of the canvas — FILL TO, TRAINERS, START MATCH and LEAVE were all
below the visible area with no way to scroll to them. The screen that
starts matches could not start one.
The box was sized to hold every row, unconditionally. That is fine for a
list of fixed length and wrong for this one: the hosted lobby is the room
code, then one row per trainer in it, then the host's settings — so it
grows without bound as a room fills. Three trainers is thirteen rows on a
canvas that holds eight.
The list scrolls now, with the game's own "more below" arrow, exactly the
way the START menu already handled its own variable row count.
The first ROYALE face is deliberately still short enough to need no
scrolling at all, and the test suite now holds it to that — it is the one
screen nobody should have to scroll, and it picked up a version row in
v0.27.2.
Everything from v0.27.2, v0.27.1 and
v0.27.0 is included.
Needs gen1recomp v0.2.26 or newer.