Files
bryanthaboi 803f86d5b3 api upgrades, windows dev tools, and android fixes (#299)
* pop up a fake save

* add CI to dev branch

* Make ROM-free test tiers actually run on Windows (#267)

Suite discovery, the extension-point catalog scan, mod test-dir pickup,
and the meta-coverage corpus all shelled out to ls/find/test -d, which do
not exist in cmd.exe. Every listing came back empty on Windows, so tiers
ran 0 suites and still reported ALL TESTS PASSED.

Add portable probes to tests/fs_io.lua (same Unix commands on
Linux/macOS; dir /b and a shell-free rename-self existence check on
Windows) and rewire the four call sites to them. 15/15 engine suites and
2/2 modkit suites now genuinely run and pass on Windows.

Fixes #266

Co-authored-by: johnjohto <johnjohto@users.noreply.github.com>

* intro api upgrade (#294)

* intro api upgrade

* api updates

* fix tests

* updated templates

* android fixes for mods and saves (#297)

* Android SCALING fixes (#298)

* android fixes for mods and saves

* perhaps this is the true scaling android issue fix

---------

Co-authored-by: johnjohto <johtoboy@atomicmail.io>
Co-authored-by: johnjohto <johnjohto@users.noreply.github.com>
2026-07-27 09:29:24 -04:00

1.3 KiB

Silly Oak Intro Example

Hooks Oak's NEW GAME speech: extra questions, sprite swaps (Oak, rival, player, MEW, and a custom Toast Kid pic), and answers stored in mod.save.

Try it (play through yourself)

rm -rf mods/example_silly_oak
cp -r mods/examples/example_silly_oak mods/
love .

Then NEW GAME and mash A / pick the menus. Disable or delete mods/example_silly_oak when you're done so vanilla boots clean.

Headless check

luajit mods/examples/example_silly_oak/tests/example_silly_oak_test.lua

Auto driver (screenshots + save asserts)

rm -rf mods/example_silly_oak
cp -r mods/examples/example_silly_oak mods/
SHOT_DIR=/tmp/silly_oak POKEPORT_IDENTITY=silly_oak_driver_test \
  POKEPORT_DRIVER=tests/drivers/silly_oak_intro_test.lua POKEPORT_SPEED=8 love .

POKEPORT_IDENTITY keeps this run's save out of your normal slot.

What it demonstrates

Seam Where
hooks:wrap("intro.oak_speech.build") main.lua — reshape the step list
mod.ui.insertStepAfter / insertStepBefore main.lua — anchored on vanilla step ids
step kinds say / yesno / choice main.lua
pics: "oak", "rival", "player", pokemon, custom image main.lua
events:on("intro.oak_speech.answered") main.luamod.save
events:on("intro.oak_speech.finished") main.lua