Skip to content

A New Evolution Item

Daniel Harding edited this page Jun 29, 2022 · 14 revisions

How To Add A New Evolution Item

This tutorial will go over how to add a new normal item. As an example, we'll be adding the metal_coat.

Contents

  1. Define a ITEM Constant
  2. Give the ITEM a Name
  3. Give the ITEM a Price
  4. Give the ITEM a effect
  5. Lets give the ITEM the effect to use in Menu

1. Define a ITEM Constant

Edit constants/item_constants.asm:

     const_value = 1

	const MASTER_BALL   ; $01
	const ULTRA_BALL    ; $02
	const GREAT_BALL    ; $03
        ...
        const FLOOR_B4F     ; $61
+       const METAL_COAT    ; $62

2. Give The ITEM a Name

Edit data/items/names.asm:

       ItemNames:
       li "MASTER BALL@"
       li "ULTRA BALL@"
       ...
       li "B4F@"
+      li "METAL COAT@"

3. Give the ITEM a Price

Edit data/items/prices.asm:

       ItemPrices:
       bcd3 0     ; MASTER_BALL
       bcd3 1200  ; ULTRA_BALL
       ...
       bcd3 0     ; FLOOR_B4F
+      bcd3 2100  ; METAL_COAT

4. Give the ITEM a effect

Edit engine/items/item_effects.asm:

       UseItem_:
	       ld a, 1
	       ld [wActionResultOrTookBattleTurn], a ; initialise to success value
               ...
       ItemUsePtrTable:
	       dw ItemUseBall       ; MASTER_BALL
	       dw ItemUseBall       ; ULTRA_BALL
               ...
               dw ItemUsePPRestore  ; MAX_ELIXER
+              dw UnusableItem      ; FLOOR_B2F
+              dw UnusableItem      ; FLOOR_B1F
+              dw UnusableItem      ; FLOOR_1F
+              dw UnusableItem      ; FLOOR_2F
+              dw UnusableItem      ; FLOOR_3F
+              dw UnusableItem      ; FLOOR_4F
+              dw UnusableItem      ; FLOOR_5F
+              dw UnusableItem      ; FLOOR_6F
+              dw UnusableItem      ; FLOOR_7F
+              dw UnusableItem      ; FLOOR_8F
+              dw UnusableItem      ; FLOOR_9F
+              dw UnusableItem      ; FLOOR_10F
+              dw UnusableItem      ; FLOOR_11F
+              dw UnusableItem      ; FLOOR_B4F
+              dw ItemUseEvoStone   ; METAL_COAT

5. Lets give the ITEM the effect to use in Menu

Edit data/items/use_party.asm:

       ; items which bring up the party menu when used
       UsableItems_PartyMenu:
	      db MOON_STONE
	      db ANTIDOTE
              ...
              db MAX_ELIXER
+             db METAL_COAT
	      db $ff

And that's it! You've added a new evolution ITEM into the game.