CLOSES #1181, CLOSES #1212, CLOSES #1214, CLOSES #1224, CLOSES #1230, CLOSES #1249, CLOSES #1271, CLOSES #1272, CLOSES #1273, CLOSES #1298, CLOSES #1305, CLOSES #1307, CLOSES #1318, CLOSES #1328, CLOSES #1330, CLOSES #1331, CLOSES #1333, CLOSES #1334, CLOSES #1335, CLOSES #1340, CLOSES #1345, CLOSES #1346, CLOSES #1360, CLOSES #1362 (#1395)

* CLOSES #1181, CLOSES #1212, CLOSES #1214, CLOSES #1224, CLOSES #1230, CLOSES #1249, CLOSES #1271, CLOSES #1272, CLOSES #1273, CLOSES #1298, CLOSES #1305, CLOSES #1307, CLOSES #1318, CLOSES #1328, CLOSES #1330, CLOSES #1331, CLOSES #1333, CLOSES #1334, CLOSES #1335, CLOSES #1340, CLOSES #1345, CLOSES #1346, CLOSES #1360, CLOSES #1362

* conv
This commit is contained in:
bryanthaboi
2026-08-16 06:55:09 -04:00
committed by GitHub
parent a34d8611bf
commit 5f2b2c616e
143 changed files with 2556 additions and 44967 deletions
@@ -0,0 +1,13 @@
# Mew Starter Example
This example changes only the Oak's Lab Charmander gift into a level 20 Mew
nicknamed `HOGHEAD`. It also replaces Mew's front and back battle sprites with
inverted copies.
Generate the bundled images from an imported cache with:
```sh
python3 tools/generate_example_mod_sprite.py \
"$HOME/Library/Application Support/LOVE/pokemon-love2d/assets/generated" \
mods/example_mew_starter
```
Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 B

@@ -0,0 +1,26 @@
-- Example native mod. It demonstrates both a runtime event and a content
-- override without requiring any private engine module.
return function(mod)
local mew = mod.content.pokemon:get("MEW")
assert(mew, "Mew is missing from the imported base data")
-- Keep every vanilla Mew field, changing only the two battle sprite paths.
local invertedMew = {}
for key, value in pairs(mew) do invertedMew[key] = value end
invertedMew.spriteFront = mod.path .. "/assets/mew_front_inverted.png"
invertedMew.spriteBack = mod.path .. "/assets/mew_back_inverted.png"
mod.content.pokemon:override("MEW", invertedMew)
mod.events:on("pokemon.before_give", function(gift)
-- Only change the Oak's Lab Charmander gift; wild encounters and other
-- story gifts remain vanilla.
local map = gift.ctx.overworld and gift.ctx.overworld.map
if gift.species == "CHARMANDER" and map and map.id == "OAKS_LAB"
and not gift.ctx.save.flags.EVENT_GOT_STARTER then
gift.species = "MEW"
gift.level = 20
gift.nickname = "HOGHEAD"
mod.log:info("replaced Oak's Lab Charmander starter with level 20 Mew")
end
end)
end
@@ -0,0 +1,12 @@
{
"id": "example_mew_starter",
"name": "Mew Starter Example",
"version": "1.0.0",
"entry": "main.lua",
"category": "GAMEPLAY",
"priority": 100,
"dependencies": [],
"optional_dependencies": [],
"conflicts": [],
"description": "Turns the Oak's Lab Charmander gift into a level 20 Mew with inverted battle sprites."
}
@@ -0,0 +1,29 @@
-- Sharing metadata (25-community-and-ecosystem.md 3.2). Read by tooling
-- and the manager detail pane; never by the loader's merge.
--
-- Gallery entry #0, the legacy example. Its manifest stays api 1 with
-- category GAMEPLAY on purpose: it is the compatibility proof that a mod
-- written before manifest v2 keeps loading unchanged. The v2 examples
-- live in mods/examples/.
return {
summary = "Oak's Charmander gift becomes a level 20 Mew with inverted sprites.",
author = "Pokemon Gen 1 Recompilation Project",
contact = "https://github.com/bryanthaboi/gen1recomp",
tags = { "beginner", "cosmetic", "data-only", "legacy" },
differences = {
changed = {
"the Oak's Lab starter gift becomes a level 20 Mew nicknamed HOGHEAD",
"MEW's front and back battle sprites point at inverted copies",
},
added = {},
known = {
"assets/ is empty until tools/generate_example_mod_sprite.py runs "
.. "against an imported cache",
"api 1: uses override where a v2 mod would use patch",
},
},
credits = {
{ who = "pret/pokered", for_ = "the Mew sprites the local generator inverts" },
},
compat = { engine = ">=1.0.0 <2.0.0", modApi = 1 },
}