mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-16 18:30:50 +12:00

It was a long shot, but I did it! I added the Mystery Box from Pokemon GO! Very happy with the results here. So here's how it works: When used, the game will replace Pokemon encountered with Meltan until the player leaves the map. This is sort of how it works in GO, with the player unable to close it and naturally petering out as they play. Now multiple Meltan can be obtained, and in abundance, just like GO. Technically, someone could use this as a pseudo-Repel to replace hard encounters with easy ones. Oh, and I'm pretty sure this happens vs static encounters as well, but it's awkward to account for I think that's hilarious, so...
228 lines
6.1 KiB
NASM
228 lines
6.1 KiB
NASM
; item ids
|
|
; indexes for:
|
|
; - ItemNames (see data/items/names.asm)
|
|
; - ItemPrices (see data/items/prices.asm)
|
|
; - TechnicalMachinePrices (see data/items/tm_prices.asm)
|
|
; - KeyItemFlags (see data/items/key_items.asm)
|
|
; - ItemUsePtrTable (see engine/items/item_effects.asm)
|
|
const_def
|
|
const NO_ITEM ; $00
|
|
const MASTER_BALL ; $01
|
|
const ULTRA_BALL ; $02
|
|
const GREAT_BALL ; $03
|
|
const POKE_BALL ; $04
|
|
const TOWN_MAP ; $05
|
|
const BICYCLE ; $06
|
|
const SURFBOARD ; $07 buggy?
|
|
const SAFARI_BALL ; $08
|
|
const POKEDEX ; $09
|
|
const MOON_STONE ; $0A
|
|
const ANTIDOTE ; $0B
|
|
const BURN_HEAL ; $0C
|
|
const ICE_HEAL ; $0D
|
|
const AWAKENING ; $0E
|
|
const PARLYZ_HEAL ; $0F
|
|
const FULL_RESTORE ; $10
|
|
const MAX_POTION ; $11
|
|
const HYPER_POTION ; $12
|
|
const SUPER_POTION ; $13
|
|
const POTION ; $14
|
|
const BOULDERBADGE ; $15
|
|
const CASCADEBADGE ; $16
|
|
DEF SAFARI_BAIT EQU $15 ; overload
|
|
DEF SAFARI_ROCK EQU $16 ; overload
|
|
const THUNDERBADGE ; $17
|
|
const RAINBOWBADGE ; $18
|
|
const SOULBADGE ; $19
|
|
const MARSHBADGE ; $1A
|
|
const VOLCANOBADGE ; $1B
|
|
const EARTHBADGE ; $1C
|
|
const ESCAPE_ROPE ; $1D
|
|
const REPEL ; $1E
|
|
const OLD_AMBER ; $1F
|
|
const FIRE_STONE ; $20
|
|
const THUNDER_STONE ; $21
|
|
const WATER_STONE ; $22
|
|
const HP_UP ; $23
|
|
const PROTEIN ; $24
|
|
const IRON ; $25
|
|
const CARBOS ; $26
|
|
const CALCIUM ; $27
|
|
const RARE_CANDY ; $28
|
|
const DOME_FOSSIL ; $29
|
|
const HELIX_FOSSIL ; $2A
|
|
const SECRET_KEY ; $2B
|
|
const HEART_STONE ; $2C ; was unused
|
|
const BIKE_VOUCHER ; $2D
|
|
const X_ACCURACY ; $2E
|
|
const LEAF_STONE ; $2F
|
|
const CARD_KEY ; $30
|
|
const NUGGET ; $31
|
|
const WING_FOSSIL ; $32 ; was unused
|
|
const POKE_DOLL ; $33
|
|
const FULL_HEAL ; $34
|
|
const REVIVE ; $35
|
|
const MAX_REVIVE ; $36
|
|
const GUARD_SPEC ; $37
|
|
const SUPER_REPEL ; $38
|
|
const MAX_REPEL ; $39
|
|
const DIRE_HIT ; $3A
|
|
const COIN ; $3B
|
|
const FRESH_WATER ; $3C
|
|
const SODA_POP ; $3D
|
|
const LEMONADE ; $3E
|
|
const S_S_TICKET ; $3F
|
|
const GOLD_TEETH ; $40
|
|
const X_ATTACK ; $41
|
|
const X_DEFEND ; $42
|
|
const X_SPEED ; $43
|
|
const X_SPECIAL ; $44
|
|
const COIN_CASE ; $45
|
|
const OAKS_PARCEL ; $46
|
|
const ITEMFINDER ; $47
|
|
const SILPH_SCOPE ; $48
|
|
const POKE_FLUTE ; $49
|
|
const LIFT_KEY ; $4A
|
|
const EXP_ALL ; $4B
|
|
const CANDY_JAR ; $4C - was old rod
|
|
const BOTTLE_CAP ; $4D - was good rod
|
|
const SUPER_ROD ; $4E
|
|
const PP_UP ; $4F
|
|
const ETHER ; $50
|
|
const MAX_ETHER ; $51
|
|
const ELIXER ; $52
|
|
const MAX_ELIXER ; $53
|
|
const ICE_STONE ; $54
|
|
const PROTECTOR ; $55
|
|
const POISON_STONE ; $56
|
|
const BLK_AUGURITE ; $57
|
|
const DUBIOUS_DISC ; $58
|
|
const CITRINE_PASS ; $59
|
|
const OLD_SEA_MAP ; $5A
|
|
const UP_GRADE ; $5B
|
|
const METAL_COAT ; $5C
|
|
const MYSTERY_BOX ; $5D
|
|
DEF NUM_ITEMS EQU const_value - 1
|
|
|
|
; elevator floors use item IDs
|
|
const FLOOR_B2F ; $62
|
|
const FLOOR_B1F ; $63
|
|
const FLOOR_1F ; $64
|
|
const FLOOR_2F ; $65
|
|
const FLOOR_3F ; $66
|
|
const FLOOR_4F ; $67
|
|
const FLOOR_5F ; $68
|
|
const FLOOR_6F ; $69
|
|
const FLOOR_7F ; $70
|
|
const FLOOR_8F ; $71
|
|
const FLOOR_9F ; $72
|
|
const FLOOR_10F ; $73
|
|
const FLOOR_11F ; $74
|
|
const FLOOR_B4F ; $75
|
|
DEF NUM_FLOORS EQU const_value - 1 - NUM_ITEMS
|
|
|
|
const_next $C4
|
|
|
|
; HMs are defined before TMs, so the actual number of TM definitions
|
|
; is not yet available. The TM quantity is hard-coded here and must
|
|
; match the actual number below.
|
|
DEF NUM_TMS EQU 50
|
|
|
|
DEF __tmhm_value__ = NUM_TMS + 1
|
|
|
|
MACRO add_tmnum
|
|
DEF \1_TMNUM EQU __tmhm_value__
|
|
DEF __tmhm_value__ += 1
|
|
ENDM
|
|
|
|
MACRO add_hm
|
|
; Defines three constants:
|
|
; - HM_\1: the item id, starting at $C4
|
|
; - \1_TMNUM: the learnable TM/HM flag, starting at 51
|
|
; - HM##_MOVE: alias for the move id, equal to the value of \1
|
|
const HM_\1
|
|
DEF HM_VALUE = __tmhm_value__ - NUM_TMS
|
|
DEF HM{02d:HM_VALUE}_MOVE EQU \1
|
|
add_tmnum \1
|
|
ENDM
|
|
|
|
DEF HM01 EQU const_value
|
|
add_hm CUT ; $C4
|
|
add_hm FLY ; $C5
|
|
add_hm SURF ; $C6
|
|
add_hm STRENGTH ; $C7
|
|
add_hm FLASH ; $C8
|
|
DEF NUM_HMS EQU const_value - HM01
|
|
|
|
DEF __tmhm_value__ = 1
|
|
|
|
MACRO add_tm
|
|
; Defines three constants:
|
|
; - TM_\1: the item id, starting at $C9
|
|
; - \1_TMNUM: the learnable TM/HM flag, starting at 1
|
|
; - TM##_MOVE: alias for the move id, equal to the value of \1
|
|
const TM_\1
|
|
DEF TM{02d:__tmhm_value__}_MOVE EQU \1
|
|
add_tmnum \1
|
|
ENDM
|
|
|
|
DEF TM01 EQU const_value
|
|
add_tm MEGA_PUNCH ; $C9
|
|
add_tm RAZOR_WIND ; $CA
|
|
add_tm SWORDS_DANCE ; $CB
|
|
add_tm WHIRLWIND ; $CC
|
|
add_tm MEGA_KICK ; $CD
|
|
add_tm TOXIC ; $CE
|
|
add_tm HORN_DRILL ; $CF
|
|
add_tm BODY_SLAM ; $D0
|
|
add_tm TAKE_DOWN ; $D1
|
|
add_tm DOUBLE_EDGE ; $D2
|
|
add_tm BUBBLEBEAM ; $D3
|
|
add_tm WATER_GUN ; $D4
|
|
add_tm ICE_BEAM ; $D5
|
|
add_tm BLIZZARD ; $D6
|
|
add_tm HYPER_BEAM ; $D7
|
|
add_tm PAY_DAY ; $D8
|
|
add_tm SUBMISSION ; $D9
|
|
add_tm COUNTER ; $DA
|
|
add_tm SEISMIC_TOSS ; $DB
|
|
add_tm RAGE ; $DC
|
|
add_tm MEGA_DRAIN ; $DD
|
|
add_tm SOLARBEAM ; $DE
|
|
add_tm DRAGON_RAGE ; $DF
|
|
add_tm THUNDERBOLT ; $E0
|
|
add_tm THUNDER ; $E1
|
|
add_tm EARTHQUAKE ; $E2
|
|
add_tm FISSURE ; $E3
|
|
add_tm DIG ; $E4
|
|
add_tm PSYCHIC_M ; $E5
|
|
add_tm TELEPORT ; $E6
|
|
add_tm MIMIC ; $E7
|
|
add_tm DOUBLE_TEAM ; $E8
|
|
add_tm REFLECT ; $E9
|
|
add_tm BIDE ; $EA
|
|
add_tm METRONOME ; $EB
|
|
add_tm SELFDESTRUCT ; $EC
|
|
add_tm EGG_BOMB ; $ED
|
|
add_tm FIRE_BLAST ; $EE
|
|
add_tm SWIFT ; $EF
|
|
add_tm SKULL_BASH ; $F0
|
|
add_tm SOFTBOILED ; $F1
|
|
add_tm DREAM_EATER ; $F2
|
|
add_tm SKY_ATTACK ; $F3
|
|
add_tm REST ; $F4
|
|
add_tm THUNDER_WAVE ; $F5
|
|
add_tm PSYWAVE ; $F6
|
|
add_tm EXPLOSION ; $F7
|
|
add_tm ROCK_SLIDE ; $F8
|
|
add_tm TRI_ATTACK ; $F9
|
|
add_tm SUBSTITUTE ; $FA
|
|
ASSERT NUM_TMS == const_value - TM01, "NUM_TMS ({d:NUM_TMS}) does not match the number of add_tm definitions"
|
|
|
|
DEF NUM_TM_HM EQU NUM_TMS + NUM_HMS
|
|
|
|
; 50 TMs + 5 HMs = 55 learnable TM/HM flags per Pokémon.
|
|
; These fit in 7 bytes, with one unused bit left over.
|
|
DEF __tmhm_value__ = NUM_TM_HM + 1
|
|
DEF UNUSED_TMNUM EQU __tmhm_value__
|