[FE8U] Item Error Message Table

When the player attempts to select “Use” on an item that can’t be used in a particular situation (e.g. vulnerary at full health), some text will pop up to explain why the item’s usage was denied. Some items only have one error message, while others have conditions for displaying a certain message (a guiding ring for a lv 5 mage is different than a lv 12 cavalier, or a lockpick with a fighter is different than a thief not by a door or chest).

Similar to other item tables, such as item conditions and effects, there is a table for these error messages in vanilla FE8. In FE8U at least, it can be found at 0x28C2C; its pointer at 0x28C28. The process for “guiding” the routine along to a particular message is also very similar:

  • Subtract from itemID (itemID-0x56, in this case)
  • Compare it to a certain value for the table to have a specific range of item ids
  • If in this range, go to its entry on the table

For expanding this table, you’ll want to repoint the table and edit the subtraction and comparison done to increase the range of accepted item IDs (Normally, its from 0x56 to 0xC1).

  • 0x28C16: Change this byte to the FirstItemIDinRange.
  • 0x28C18: Change this byte to the LastItemIDinRange - FirstItemIDinRange.

How I did this with buildfiles:

Definitions and Repointing
#define FirstItemWithErrorMessage TorchStaff
#define ItemErrorMessage(itemID,messageConditionOffset) "ORG 4*(itemID-0x56)+ItemErrorMessageTable; POIN messageConditionOffset"
#define Default_Error 0x28E54
#define Stat_Booster_Healing_Error 0x28DDC
#define Promotion_Item_Error 0x28E20
#define Chest_Key_Error 0x28DE4
#define Door_Key_Error 0x28DEC
#define Lockpick_Error 0x28DF4
#define Juna_Fruit_Error 0x28E4C

PUSH

ORG 0x28C16
BYTE FirstItemWithErrorMessage

ORG 0x28C18
BYTE 0xC1-FirstItemWithErrorMessage //range of items

ORG 0x28C28
POIN ItemErrorMessageTable


POP

//somewhere in freespace
ItemErrorMessageTable:
#include "ItemErrorMessageTable.event"
ItemErrorMessageTable.event
ItemErrorMessageTable:
ItemErrorMessage(TorchStaff,Stat_Booster_Healing_Error)
ItemErrorMessage(Hammerne,Default_Error)
ItemErrorMessage(Unlock,Default_Error)
ItemErrorMessage(Barrier,Default_Error)
ItemErrorMessage(DragonAxe,Default_Error)
ItemErrorMessage(AngelicRobe,Stat_Booster_Healing_Error)
ItemErrorMessage(EnergyRing,Stat_Booster_Healing_Error)
ItemErrorMessage(SecretBook,Stat_Booster_Healing_Error)
ItemErrorMessage(Speedwings,Stat_Booster_Healing_Error)
ItemErrorMessage(GoddessIcon,Stat_Booster_Healing_Error)
ItemErrorMessage(Dragonshield,Stat_Booster_Healing_Error)
ItemErrorMessage(Talisman,Stat_Booster_Healing_Error)
ItemErrorMessage(Boots,Stat_Booster_Healing_Error)
ItemErrorMessage(BodyRing,Stat_Booster_Healing_Error)
ItemErrorMessage(HeroCrest,Promotion_Item_Error)
ItemErrorMessage(KnightCrest,Promotion_Item_Error)
ItemErrorMessage(OrionBolt,Promotion_Item_Error)
ItemErrorMessage(ElysianWhip,Promotion_Item_Error)
ItemErrorMessage(GuidingRing,Promotion_Item_Error)
ItemErrorMessage(ChestKey,Chest_Key_Error)
ItemErrorMessage(DoorKey,Door_Key_Error)
ItemErrorMessage(Lockpick,Lockpick_Error)
ItemErrorMessage(Vulnerary,Stat_Booster_Healing_Error)
ItemErrorMessage(Elixir,Stat_Booster_Healing_Error)
ItemErrorMessage(PureWater,Stat_Booster_Healing_Error)
ItemErrorMessage(Antitoxin,Stat_Booster_Healing_Error)
ItemErrorMessage(TorchItem,Stat_Booster_Healing_Error)
ItemErrorMessage(DelphiShield,Default_Error)
ItemErrorMessage(MemberCard,Default_Error)
ItemErrorMessage(SilverCard,Default_Error)
ItemErrorMessage(WhiteGem,Default_Error)
ItemErrorMessage(BlueGem,Default_Error)
ItemErrorMessage(RedGem,Default_Error)
ItemErrorMessage(Gold,Default_Error)
ItemErrorMessage(Reginleif,Default_Error)
ItemErrorMessage(ChestKey_5,Chest_Key_Error)
ItemErrorMessage(Mine,Default_Error)
ItemErrorMessage(LightRune,Default_Error)
ItemErrorMessage(HoplonShield,Default_Error)
ItemErrorMessage(FillasMight,Default_Error)
ItemErrorMessage(NinissGrace,Default_Error)
ItemErrorMessage(ThorsIre,Default_Error)
ItemErrorMessage(SetsLitany,Default_Error)
ItemErrorMessage(ShadowKiller,Default_Error)
ItemErrorMessage(BrightLance,Default_Error)
ItemErrorMessage(FiendCleaver,Default_Error)
ItemErrorMessage(BeaconBow,Default_Error)
ItemErrorMessage(Sieglinde,Default_Error)
ItemErrorMessage(BattleAxe,Default_Error)
ItemErrorMessage(Ivaldi,Default_Error)
ItemErrorMessage(MasterSeal,Promotion_Item_Error)
ItemErrorMessage(MetissTome,Default_Error)
ItemErrorMessage(HeavenSeal,Promotion_Item_Error)
ItemErrorMessage(SharpClaw,Default_Error)
ItemErrorMessage(Latona,Default_Error)
ItemErrorMessage(DragonSpear,Default_Error)
ItemErrorMessage(Vidofnir,Default_Error)
ItemErrorMessage(Naglfar,Default_Error)
ItemErrorMessage(WretchedAir,Default_Error)
ItemErrorMessage(Audhulma,Default_Error)
ItemErrorMessage(Siegmund,Default_Error)
ItemErrorMessage(Garm,Default_Error)
ItemErrorMessage(Nidhogg,Default_Error)
ItemErrorMessage(HeavySpear,Default_Error)
ItemErrorMessage(ShortSpear,Default_Error)
ItemErrorMessage(OceanSeal,Promotion_Item_Error)
ItemErrorMessage(LunarBracelet,Promotion_Item_Error)
ItemErrorMessage(SolarBracelet,Promotion_Item_Error)
ItemErrorMessage(_1G,Default_Error)
ItemErrorMessage(_5G,Default_Error)
ItemErrorMessage(_10G,Default_Error)
ItemErrorMessage(_50G,Default_Error)
ItemErrorMessage(_100G,Default_Error)
ItemErrorMessage(_3000G,Default_Error)
ItemErrorMessage(_5000G,Default_Error)
ItemErrorMessage(WindSword,Default_Error)
ItemErrorMessage(Vulnerary_2,Stat_Booster_Healing_Error)
ItemErrorMessage(Greennote,Default_Error)
ItemErrorMessage(Rednote,Default_Error)
ItemErrorMessage(Dance,Default_Error)
ItemErrorMessage(Nightmare,Default_Error)
ItemErrorMessage(DemonStone,Default_Error)
ItemErrorMessage(DemonLight,Default_Error)
ItemErrorMessage(Ravager,Default_Error)
ItemErrorMessage(DragonStone,Default_Error)
ItemErrorMessage(DemonSurge,Default_Error)
ItemErrorMessage(Shadowshot,Default_Error)
ItemErrorMessage(RottenClaw,Default_Error)
ItemErrorMessage(FetidClaw,Default_Error)
ItemErrorMessage(PoisonClaw,Default_Error)
ItemErrorMessage(LethalTalon,Default_Error)
ItemErrorMessage(FireFang,Default_Error)
ItemErrorMessage(HellFang,Default_Error)
ItemErrorMessage(EvilEye,Default_Error)
ItemErrorMessage(BloodyEye,Default_Error)
ItemErrorMessage(Stone,Default_Error)
ItemErrorMessage(Aircalibur,Default_Error)
ItemErrorMessage(JunaFruit,Juna_Fruit_Error)
ItemErrorMessage(_150G,Default_Error)
ItemErrorMessage(_200G,Default_Error)
ItemErrorMessage(BlackGem,Default_Error)
ItemErrorMessage(GoldGem,Default_Error)
ItemErrorMessage(0xBC,Default_Error)
ItemErrorMessage(0xBD,Default_Error)
ItemErrorMessage(0xBE,Default_Error)
ItemErrorMessage(0xBF,Default_Error)
ItemErrorMessage(0xC0,Default_Error)
ItemErrorMessage(0xC1,Promotion_Item_Error)
9 Likes