# ------------------------------------------------------------------ generated

# Bytecode from the authoring tools in tools/ and
# assets/docs/buidling_to_voxel/ -- generated on whatever machine ran them.
__pycache__/
*.py[cod]

# agent worktrees and local scratch
.claude/

# Downloaded VFX packs used to cut wind strips (Pimen, ELR, JuiceBox, …).
# The cut strips in assets/vfx/ are what ships; the packs stay on disk.
tools/_vfx_dl/

# One-off battle-bag splice scratch. Not source.
tools/bagxy_fix/
tools/bagxy_fix.tar.gz

# Private working notes: briefs written to an assistant, task prompts, local
# to-do. These carry absolute paths from the authoring machine (and with them
# a username), and they are notes to one person rather than documentation for
# anybody else. Kept on disk, kept out of the repository.
PROMPT_*.md
NOTES.md
TODO.local.md

# graphify's own output: a derived knowledge graph of this repo, rebuilt with
# `graphify . --code-only` whenever it is wanted. Nothing in it is source.
graphify-out/


# ------------------------------------------------ GAME DATA -- NEVER COMMIT
#
# This mod contains no Pokemon game data and must never start containing any.
# Gen1Recomp reads a ROM the player dumps from their own cartridge; this
# repository is Lua, generated art and documentation, and nothing else.
#
# A ROM PATCH IS NOT SAFE EITHER. A .bps / .ips / .ups file is a derivative of
# the copyrighted ROM it patches -- it is the diff of someone else's game --
# and publishing one is the most reliable way there is to get a fan project
# taken down. Patches used while working stay on the working machine.
#
# If you ever need to hand one to somebody, hand them a link to where its
# author published it, never the file.
*.gb
*.gbc
*.gba
*.nes
*.sfc
*.smc
*.nds
*.rom
*.bin
# Shipped mesh bakes (tools/optimize_*_glb.py). ROM dumps stay ignored.
#
# EVERY BAKE NEEDS ITS OWN LINE HERE, and forgetting one does not fail
# loudly: the tree bake was matched by *.bin above and quietly left out of
# the first commit that carried it. A clone would have got the texture and
# the metadata but no mesh, Trees3D.available() would have returned false,
# and the forest would have fallen back to hull balls with nothing logged.
!assets/ground/grass/grass.mesh.bin
!assets/ground/lamppost/lamppost.mesh.bin
!assets/ground/tree/tree_willow.mesh.bin
*.bps
*.ips
*.ups
*.xdelta
assets/ground/source/*.zip
# Authoring-only GLBs (~20 MB); the bake is what ships.
assets/ground/grass/*.glb
assets/ground/lamppost/*.glb
# tree_willow.glb is 23 MB of source model. Nothing loads a GLB at runtime.
assets/ground/tree/*.glb
# Same rule, and it had been missed: assets/mc/Mc.glb is 26 MB of source
# model. Nothing loads a GLB at runtime -- the bakes do -- so a clone that
# carried this would carry it forever for no one.
assets/mc/*.glb
publish-zip/
probe_out_atm/

# Save data: a player's own progress, and on some platforms their name.
*.sav
*.srm
*.sgm
*.rtc
*.state
*.state[0-9]
saves/
save/


# --------------------------------------------------------------- probe output
#
# The probes write to whatever DS_PROBE_DIR points at. When that is pointed
# inside the tree by accident, this keeps the screenshots and logs out of the
# history -- they are evidence for one run, not source.
#
# Common local conventions that previously leaked into git: a root folder
# named _probe_<run> (screenshots + console.txt + stdout/stderr) or DS_PROBE*.
# *.log alone is not enough -- PNGs and console captures were committed.
*.log
_probe_*/
DS_PROBE*/
probe-out/
probe_out/
# ...and the per-run dirs the newer probes name probe_out_<what>. One
# pattern instead of one line per probe (probe_out_atm/ above predates it).
probe_out_*/
tests/out/

# Captures written next to a driver when DS_PROBE_DIR is unset or mistyped.
# tests/*.lua drivers stay tracked; only runtime dumps under tests/ are blocked.
tests/**/console.txt
tests/**/stdout.txt
tests/**/stderr.txt
tests/**/*.png

# The legacy probe harness twenty-one dead probes used to load. It does not
# exist in this tree or in the build; listed so a stray copy is never
# committed as though it were the real one.
tests/drivers/


# ---------------------------------------------------------- heavy working art
#
# The generator's contact sheets the ground strips are recut from -- about
# nine megabytes of paper (see assets/ground/README.md). Already kept out of
# the packaged mod by .modkitignore, so this only matches that policy.
#
# DELETE THE LINE BELOW if you would rather a fresh clone be able to recut the
# ground art without asking you for the sheets.
assets/ground/source/*.png


# ------------------------------------------------------------------- OS junk
Thumbs.db
ehthumbs.db
desktop.ini
.DS_Store
*~
*.bak
# Whole-folder backups taken before a risky edit (.bak_lamppost was 20 MB of
# them). Same rule as *.bak, which only ever matched the single files.
.bak_*/
*.orig
*.tmp
*.swp


# ------------------------------------------------------------------ SECRETS
#
# Nothing in this project needs a credential, which is exactly why a leaked
# one would go unnoticed: there is no CI to fail and no reviewer expecting to
# see it. These patterns are here so an accident cannot become a commit.
#
# If one does get committed, rotating the secret is the fix -- deleting the
# file is not, because the history keeps it.
.env
.env.*
!.env.example
*.pem
*.key
!assets/**/*.key
*.p12
*.pfx
*.keystore
id_rsa
id_ed25519
*.ppk
.netrc
_netrc
.npmrc
.pypirc
credentials
credentials.json
secrets.json
*.secret
*_token
*.token
gh_token*
.gh_token


# ------------------------------------------------- THIRD-PARTY INTERFACE ART
#
# The X/Y interface textures this mod draws its HUD, menu and battle buttons
# from are somebody else's work, redistributed through GameBanana:
#
#   Pokemon X/Y 5X GUI -- https://gamebanana.com/mods/578206
#
# They are NOT in this repository, and the reason is the same one written at
# the top of the GAME DATA block: crediting an author is not the same as
# holding a licence from them, and the underlying art is Nintendo's and Game
# Freak's either way. A clone gets the loader and the measurements; the
# player downloads the pack themselves.
#
# tools/extract_xy_assets.py cuts and names everything from that download.
# The measurements it uses -- glyph grids, trough boxes, button bounds -- are
# in this repository, because those are ours: they were measured off the
# pixels, and they are the part that took the work.
assets/battlexy/
assets/hudxy/
assets/menuxy/


# ------------------------------------------------ OVERWORLD ROAMER SPRITES
#
# Gen 5 (Black/White) battle sprites from PokeAPI. Nintendo / Game Freak
# art, same rule as the X/Y HUD and the roamer sheets: LICENSE.md and the
# install scripts stay; the PNGs do not. tools/install_mon_pack.py and
# tools/install_mon_anim.py put them in place. Without them MonPack falls
# back to the engine's own pics.
assets/mons/**/*.png

# Gen-2-style 16x96 walker sheets for the WILD / TOWN rows. Same rule as the
# X/Y GUI block above: crediting ShockSlayer / Crystal Clear / PokePC
# Followers is not the same as holding a licence from them, and the
# underlying art is Nintendo's and Game Freak's whichever way it travels.
#
# assets/roamers/CREDITS.md stays versioned (it says how to install).
# tools/install_roamer_sprites.py fetches and renames the pack into place.
# Without the PNGs the mod falls back to a greyscale front-pic bake.
assets/roamers/*.png


# ----------------------------------------------- BULK SPRITE RIPS (never)
#
# Downloaded sprite archives -- overworld sheets, generation dumps. Five
# megabytes of Nintendo's art with a tarball around it is still Nintendo's
# art, and the GAME DATA rule above does not stop applying because the file
# extension changed.
assets/**/*.tar.gz
assets/**/*.tgz
assets/**/*.7z
assets/**/*.rar
assets/ground/piso vermelho/


# ------------------------------------------------------- local player state
#
# options.lua carries the player's own settings and, through the trainer
# name, their name. It belongs to whoever is playing, not to the project.
options.lua
LastPlayed.txt
