Z-Power: Ultra Burst

Section 7.D.2

Ultra Burst is a unique form-changing mechanic similar to Mega Evolution which only Necrozma has access to when in its Dusk Mane or Dawn Wings form. This mechanic is interwoven with the Z-Power phenomenon, as the item that Necrozma requires to enter Ultra Burst form is also a Z-Crystal which allows it to use its exclusive Z-Move, Light That Burns the Sky.

The Ultra Burst mechanic has been replicated by this plugin. However, the mechanic has been generalized so that it's possible for it to be utilized by other species besides Necrozma. Below, I'll explain how Ultra Burst forms can be set up.


Ultra Item

For a Pokemon to enter Ultra Burst form, it needs to be holding a compatible item that allows for it to Ultra Burst. Let's make a custom item to allow Charizard to enter an Ultra Burst form, because Charizard can always use more forms, right?

[ULTRAZARDIUM]
Name = Ultrazardium
NamePlural = Ultrazardiums
Pocket = 1
Price = 0
Description = When held by Charizard, it can enter Ultra Burst form!

Here, we've created a new item called Ultrazardium. This is a normal held item that appears in the primary bag slot. Nothing special needs to be set for this item. It just needs to be capable of being held by a Pokemon.


Ultra Form

Once you have your item set, next you need to create the actual form that you want your Pokemon to Ultra Burst into. For the sake of example, let's make Charizard's Ultra form use form 4.

So in pokemon_forms.txt, we would enter our new Ultra form for Charizard. This form can have whatever properties you want, like any other form would. Different stats, different typing, etc. However, to allow Charizard to actually enter this form via Ultra Burst, we'll need to code our own Multiple Forms handler.

To do so, you can open your Essentials script and place this at the bottom of the FormHandlers section.

MultipleForms.register(:CHARIZARD, {
  "getUltraForm" => proc { |pkmn|
    next 4
  },
  "getUnUltraForm" => proc { |pkmn|
    next 0
  },
  "getUltraItem" => proc { |pkmn|
    next :ULTRAZARDIUM if pkmn.form == 0
  }
})
  • The "getUltraForm" key determines which form Charizard will transform into when it uses Ultra Burst. The line next 4 makes it so in this scenario, Charizard will change into form 4 when it Ultra Bursts, which is the form that we entered in pokemon_forms.txt.

  • The "getUnUltraForm" key determines which form Charizard should revert to once Ultra Burst ends. The line next 0 makes it so in this scenario, Charizard will revert to its base form when it leaves Ultra Burst form.

  • The "getUltraItem" key determines which held item should be checked for in order for Charizard to be eligible to Ultra Burst. The line next :ULTRAZARDIUM makes it so in this scenario, Charizard will only be capable of using Ultra Burst while it holds the new item we made earlier, Ultrazardium. The if form == 0 on this line ensures that this is only checked for when Charizard is in its base form, to prevent other forms of Charizard from using Ultra Burst.

Now, whenever Charizard enters battle in its base form while holding an Ultrazardium, it'll be able to use Ultra Burst to enter its Ultra Burst form. This is a very simplistic example, but it gets the idea across. You can expand upon this from here and make something far more complex with multiple different forms that are capable of using Ultra Burst if you wish, like how Necrozma works.

Important! If the species you want to make an Ultra form for already has an existing multiple forms handler elsewhere, the two handlers may overwrite one another. You can't have more than one handler for a single species at a time. Use CTRL + F to search the FormHandlers script for the species you want to make a form for first, to make sure an existing handler isn't already present.

If a handler does already exist, you'll have to add your Ultra form keys to the existing handler, instead of making a new one.


Pokedex Data Page Compatibility

The Pokedex Data Page plugin allows for Ultra Burst Forms to have unique displays in the data page of the Pokedex. If you'd like your custom Ultra form to be displayed in this way too, you can add an additional key to the form handler. Let's build off of the example above to demonstrate this.

MultipleForms.register(:CHARIZARD, {
  "getUltraForm" => proc { |pkmn|
    next 4
  },
  "getUnUltraForm" => proc { |pkmn|
    next 0
  },
  "getUltraItem" => proc { |pkmn|
    next :ULTRAZARDIUM if pkmn.form == 0
  },
  "getDataPageInfo" => proc { |pkmn|
    next [pkmn.form, 0, :ULTRAZARDIUM] if pkmn.form == 4
  }
})

Here, we've added a third key called "getDataPageInfo". This is what is needed for compatibility with the data page. The array in next [pkmn.form, 0, :ULTRAZARDIUM] needs to contain three elements:

  • The Pokemon's current form. This can always just be set as pkmn.form to accomplish this.

  • The form that the Pokemon reverts to once Ultra Burst ends. In our example, this is form 0.

  • The ID of the Ultra item required for this Pokemon to Ultra Burst.

Finally, the if pkmn.form == 4 part of the line makes it so that this information is only returned when Charizard is in form 4, which is its Ultra Burst form. This is what prevents this data from displaying when viewing any one of Charizard's other forms. This might be far more complex depending on the specific form handler you set up, but this is a general example of how this may be done.

Last updated