Skip to content

fix: trigger Ultra Necrozma with held Ultranecrozium Z - #1616

Draft
MiquelRForgeFlow wants to merge 1 commit into
PokeAPI:masterfrom
MiquelRForgeFlow:master-fix-ultra-necrozma
Draft

fix: trigger Ultra Necrozma with held Ultranecrozium Z#1616
MiquelRForgeFlow wants to merge 1 commit into
PokeAPI:masterfrom
MiquelRForgeFlow:master-fix-ultra-necrozma

Conversation

@MiquelRForgeFlow

Copy link
Copy Markdown
Contributor

Change description

Introduce a new ultra-burst-item form trigger and mark Ultra Necrozma as battle-only, triggered by holding Ultranecrozium Z (like Mega/Primal held-item transformations).

Is distinct from held-item trigger to make it easy to customize, like making it trigger from Dusk and Dawn forms instead of default form.

AI coding assistance disclosure

I only asked AI to add the new ultra-burst-item. I defined it manually in the command line, and AI added it in the code.

Contributor check list

  • I have written a description of the contribution and explained its motivation.
  • I have written tests for my code changes (if applicable).
  • I have read and understood the AI Assisted Contribution guidelines.
  • I will own this change in production, and I am prepared to fix any bugs caused by my code change.

@MiquelRForgeFlow

Copy link
Copy Markdown
Contributor Author

@Naramsim

@MiquelRForgeFlow
MiquelRForgeFlow force-pushed the master-fix-ultra-necrozma branch from c74520c to 6641ec2 Compare July 22, 2026 11:59
@MiquelRForgeFlow

MiquelRForgeFlow commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

By the way, the battle-only thing is the only assured fact. I can make that fix a part. And leave the ultra-burst-item vs held-item for discussion.

@jemarq04

Copy link
Copy Markdown
Member

It should probably just be held-item specifying the Ultranecrozium Z I think. Though finding a way to specify the required base form to specify Dawn/Dusk form is something we can consider going forward

@MiquelRForgeFlow
MiquelRForgeFlow marked this pull request as draft July 23, 2026 20:30
@MiquelRForgeFlow

Copy link
Copy Markdown
Contributor Author

I can make that fix a part

Done in #1619.

Though finding a way to specify the required base form to specify Dawn/Dusk form is something we can consider going forward

Fine by me, let's think how to do it. Probably a new column in some place. Any suggestion?

Use the existing held-item trigger + ultranecrozium-z--held (like Mega/Primal held-item transformations).
@MiquelRForgeFlow
MiquelRForgeFlow force-pushed the master-fix-ultra-necrozma branch from 6641ec2 to 1b79fac Compare July 27, 2026 18:30
@MiquelRForgeFlow MiquelRForgeFlow changed the title Add Ultra Burst trigger and make Ultra Necrozma battle-only fix: trigger Ultra Necrozma with held Ultranecrozium Z Jul 27, 2026
@MiquelRForgeFlow

Copy link
Copy Markdown
Contributor Author

Following up on the base-form question

Though finding a way to specify the required base form to specify Dawn/Dusk form is something we can consider going forward.

I'd like to propose a minimal way to cover this now, since it's the missing piece for Ultra Necrozma (and several other in-battle form changes).

The problem. pokemon_form_conditions already records how a battle-only form is triggered (here: held ultranecrozium-z), but not which sibling form it transforms from. Ultra Necrozma is special because it can only be reached from Dusk Mane or Dawn Wings (not from base Necrozma) so a single implicit "base = default form" assumption doesn't hold, and there can be more than one base.

Proposal. Add a nullable base_form_id column to pokemon_form_conditions (FK to Pokemon, mirroring how pokemon_evolution already stores base_form_id/evolved_form_id inline). It stays NULL for the common case where the base is the default/implicit form (Mega, Gmax, Primal…), so the change is fully additive and every existing row is untouched.

For Ultra Necrozma this becomes two rows (same held-item trigger, one per base form):

pokemon_form_id,form_trigger_id,trigger_item_id,trigger_ability_id,trigger_move_id,base_form_id
10316,1,969,,,10155   # necrozma-ultra ← necrozma-dusk-mane
10316,1,969,,,10156   # necrozma-ultra ← necrozma-dawn-wings

The API would surface it under the existing trigger_conditions on the form (as a base_form summary object, like base_form on evolution details), so no new endpoint is needed.

Why a column rather than a new table. It's the same pattern pokemon_evolution already uses for base_form_id, and the surface area is small: one nullable FK, a migration, one field in the PokemonFormCondition build loader, and one field in PokemonFormConditionSerializer.

Broader value. This isn't just Necrozma; it lets consumers stop heuristically guessing the base form for other in-battle changes, e.g.:

  • Zygarde Complete ← 10%/50% Power Construct
  • Greninja Ash ← Battle Bond
  • Darmanitan Zen ← Standard, Galarian Zen ← Galarian Standard

One open question: base_form_id → Pokemon keeps it consistent with pokemon_evolution.base_form (that's why the example uses pokémon IDs 10155/10156), but it does mean this row mixes a pokemon_form id with a pokemon id. Happy to point it at PokemonForm instead if you'd prefer intra-table consistency.

If this direction sounds good, I'll add the column, migration, loader, serializer field, and the Necrozma rows in this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants