Skip to content
Daniel Harding edited this page Jun 29, 2022 · 11 revisions

How To Add A New Item

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

Contents

  1. Define a ITEM Constant
  2. Give the ITEM a Name
  3. Give the ITEM a Price
  4. Give the ITEM a effect

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 PEARL         ; $62

2. Give the ITEM a Name

Edit data/items/names.asm:

       ItemNames::
       li "MASTER BALL@"
       li "ULTRA BALL@"
       ...
       li "B4F@"
       ...
+      li "PEARL@"

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 1400  ; PEARL

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 UnusableItem      ; PEARL

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