Hey guys! Just some quick macros I put together for doing your death quotes and specified battle quotes by events. The idea is to completely abandon the Nightmare modules but you can use both if you like.
Doing these by events have several particular advantages over using Nightmare, including being able to set specific battle music for character 1 fighting character 2 (e.g. songs with an introduction, like Tearing Shadows from FE12), the ability to set special death music for certain characters, bigger control over event IDs when characters die e.g. setting their death quote to trigger both 0x23 and 0x02, which changes the map music and allows you to use 0x23 for something else. Sometimes NPC characters won’t have their death quote IDs properly register or won’t have the “death” theme play when they die, which can be easily rectified by instead using events.
Simply put, if you know how to do events, there’s no reason to not use them in these instances.
Anyway, without further ado, here they are:
Death quotes:
#include EAstdlib.event
#define DQTableOffset 0xC9F2EC
#define DeathQuoteTable(index,CharacterID,TextPointer,EventPointer,TriggerID) "ORG DQTableOffset+(16*index); BYTE CharacterID; BYTE 0x43; ALIGN 4; SHORT TextPointer; ALIGN 4; POIN EventPointer; BYTE TriggerID; ALIGN 4"
A sample:
//obviously set this to include your own definitions files, too
#include EAstdlib.event
//Death quote events
#define DQTableOffset 0xC9F2EC
#define DeathQuoteTable(index,CharacterID,ChapterID,TextPointer,EventPointer,TriggerID) "ORG DQTableOffset+(16*index); BYTE CharacterID; BYTE ChapterID; ALIGN 4; SHORT TextPointer; ALIGN 4; POIN EventPointer; BYTE TriggerID; ALIGN 4"
//The List
DeathQuoteTable(0x00,Henrick,0x43,0x00,HenrickDies,0x65)//TextPointer MUST be 0x00 if you want to use events
//Death Quote Events
ORG 0x71ED5C//you should only need to do this once
HenrickDies:
MUS1 HeroHasFallen
TEX1 0x7A8
ENUT 0x45
ENUT 0x02
ENDA
Specified Battle Quotes (note that Unspecified Battle Quotes do not seem to support event-hackery)
#define BQListOffset 0xC9EDA0
#define BattleQuoteTable(index,Character1,Character2,Chapter,TextPointer,EventPointer,ID) "ORG BQListOffset+(16*index); BYTE Character1; BYTE Character2; BYTE Chapter; ALIGN 4; SHORT TextPointer; ALIGN 4; POIN EventPointer; BYTE ID; ALIGN 4"
These of course assume that each table is in its default address–obviously you can adjust that as needed.