Manual Death Quote Event Troubleshooting

I keep getting "Didn’t reach end, current at Comma(,) error messages no matter how I format it. I’m guessing I have the format wrong but I have no clue how to get the correct one. I tried:

DeathQuoteTable(0x00, 0x87, 0x832, BattaDies, 0x2) // spaces after comma

DeathQuoteTable(0x00 0x87 0x832 BattaDies 0x2) // no comma

DeathQuoteTable(0x00,0x87,0x832,BattaDies,0x2) // no spaces after comma

I even tried deleting a few of the parameters or replacing 0x87 with Batta, still get the same comma error.

https://gyazo.com/57a9ae3c906e0655908376812998acc6

Can anyone tell me why my chapter events is being written to the deathquote table offsets?

I got my death quotes events to work properly but the message I get from inserting events of where the ending offset is tells me it ends at 0xC9F310, which is shortly after the vanilla death quote offsets. But my ORG is at 0xD148A0. Is this normal? How did my events get written upwards?

https://gyazo.com/df10e8ec33c4fabbec20f00725c37e70

https://gyazo.com/1ea4893ec20e32a5f7f9480f26db48c8

Edit:
this is what it looks like in my hack

https://gyazo.com/37afc74a242147a0829764ca6f8b8a67

this is what it looks like in a vanilla ROM

https://gyazo.com/f3ea187dc5bca33f6b1d8457b4634300

is this going to cause problems down the road? @Agro plis halp

can you please post the entire event text

Okay so basically it’s because you have the death quote stuff at the end, and the event assembler is overwriting some stuff back at 0xC9F310, which is where the death quote table would be. It’s still writing your events to 0xD148A0 as well, it’s just jumping back and forth because of the way you placed the events in the file. It shouldn’t affect anything, but if you want to stop the confusion, place the MESSAGE command before your DeathQuoteTable macro and place your death quote stuff at the very bottom.

By doing the death quotes this way, is the stuff thats being overwritten at 0xC9F310 suppose to happen? I don’t know how big death quotes are suppose to be so I can’t tell whether or not that one death quote is overwriting other death quotes. Or am I suppose to use freespace instead of the vanilla deathquote table offsets? I’m asking because I tried putting free space where I define DQTableOffset and the death quotes didn’t work. It only worked when I used the vanilla offset of 0xC9F2EC. I thought events from an event file all stick together in like a paragraph of data when inserted into the ROM.

Heres the full events:
[spoiler=Events]
#define DISABLE_TUTORIALS
#include EAstdlib.event

EventPointerTable(0x06,Pointers)

ORG 0xD148A0

Pointers:
POIN Turn_events
POIN Character_events
POIN Location_events
POIN Misc_events
POIN TrapData TrapData
POIN Bad Bad Bad Bad
POIN Good Good Good Good
POIN Opening_event Ending_event

Good:
UNIT Lyn_t Mercenary Lyn_t Level(1, Ally, 0) [0,7] [3,7] [IronSword, Vulnerary] NoAI
UNIT

Villagers:
UNIT 0xD6 0x47 0x00 Level(1, NPC, 0) [4,0] [5,4] [0x00] NoAI
UNIT 0xD5 0x48 0x00 Level(1, NPC, 0) [5,0] [4,5] [0x00] NoAI
UNIT 0xD3 0x48 0x00 Level(1, NPC, 0) [7,0] [6,5] [0x00] NoAI
UNIT

Bad:
UNIT 0x69 Brigand Batta Level(3, Enemy, 0) [3,0] [5,3] [IronAxe] PursueWithoutHeed
UNIT 0x67 Brigand 0x00 Level(1, Enemy, 0) [6,0] [3,5] [IronAxe, Vulnerary] PursueWithoutHeed
UNIT 0x68 Fighter 0x00 Level(1, Enemy, 0) [8,0] [7,5] [IronAxe] AttackInRange
UNIT

Boss:
UNIT Batta Brigand Batta Level(1, Enemy, 0) [5,3] [5,3] [IronAxe] PursueWithoutHeed
UNIT

Turn_events:
TurnEventPlayer(0x0,Opening_event,1)
End_MAIN

Character_events:
End_MAIN

Location_events:
End_MAIN

Misc_events:
CauseGameOverIfLordDies
DefeatAll(Ending_event)
End_MAIN

TrapData:
End_MAIN

Opening_event:
//MoveToChapter(0x17)
OOBB
STAL 0x64
MUS1 0x0041
LOU1 Good
ENUN
STAL 0x1E
CURF [3,7]
FADI 10
BACG 0x1C
TEX1 0x830
REMA
STAL 0x1E
MUS1 0x000C
LOU1 Villagers
LOU1 Bad
ENUN
CURF [5,4]
STAL 0x1E
TEX1 0x833
REMA
STAL 0x1E
FIGH 0x69 0xD6 Fight $00000000
KILL [5,4]
UNCR 0x69 0x02
ENUN
DISA [5,3]
LOU1 Boss
ENUN
STAL 0x1E
FIGH 0x67 0xD5 Fighting $00000000
KILL [4,5]
UNCR 0x67 0x02
ENUN
MOVE 0xD3 [5,7]
MOVE 0x68 [6,7]
ENUN
STAL 0x1E
TEX1 0x834
REMA
STAL 0x1E
FIGH 0x68 0xD3 Fightingyea $00000000
KILL [5,7]
UNCR 0x68 0x02
ENUN
STAL 0x1E
CURF [3,7]
TEX1 0x835
REMA
STAL 0x1E
MOVE [3,7] [9,8]
MOVE Batta [11,8]
MOVE 0x67 [8,6]
MOVE 0x68 [7,10]
UNCR Batta 0x02
UNCR 0x67 0x02
UNCR 0x68 0x02
UNCR Lyn_t 0x02
ENUN
CURF [9,8]
STAL 0x1E
FADI 10
BACG 0x1C
TEX1 0x836
REMA
MOVE 0x68 [6,0]
ENUN
DISA [6,0]
ENDA

Fight:
AttackerHit(30,2)
EndOfBattle

Fighting:
AttackerHit(30,2)
EndOfBattle

Fightingyea:
AttackerHit(30,2)
EndOfBattle

Ending_event:
STAL 0x64
FADI 10
BACG 0x1C
MUS1 0x0038
STAL 0x1E
TEX1 0x837
MUEN 0x05
MORETEXT 0x838
SOUN 0x02D9
MORETEXT 0x839
STAL 0x1E
REMA
MUEN 0x08
STAL 0x1E
MNCH 0x01
UnitClear
ENDA

// Events

// Manual Movement

// Scripted Fights

// Units

// Shop Data

MESSAGE Events end at offset currentOffset

#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”

DeathQuoteTable(0x00,Batta,0x832,BattaDies,0x02)

BattaDies:
TEX1 0x832
ENUT 0x02
ENDA
[/spoiler]

Is this what you meant?

When I insert the events, I see that EA is writing the deathquote to the free offsets I put but is it because the game still reads death quotes from the vanilla deathquote table that it doesn’t work? Is it possible to point the game to use both the vanilla deathquote table and free space death quote table offsets?

No, events get written to wherever you tell them to write to. If you put an org command halfway through the events the EA will begin writing to that address instead. I have no idea what your second post is saying, to be honest. What is a “free offset”? What is a “free space death quote table offset”?

When you do death quotes as events, you need to do 3 things:

  1. Make the EA aware of where the death quote table is. This is why you have to define “DQTableOffset”.
  2. Tell the EA what data to write to the death quote table. This is what the macro is for.
  3. Actually make the event. The EA goes back and writes a pointer to this event wherever it is that you placed the macro, which is why the MESSAGE command says that the events end at the current offset, because the last place the EA wrote to when it parsed your text file was in the death quote table.

I think you’re finding this way too confusing, to be honest, and my advice would be to just leave the death quote stuff in a separate text to your chapter events until you can grasp the concepts you’re dealing with a little better.

Sorry for being confusing. I’ll do my best to explain my train of thoughts better lol.

So while trying to get the death quotes to work, I realized that the ROM reads for death quotes at C9F2EC, the vanilla offset location. During my trial and errors, I noticed that when I accidentally overwrote stuff at C9F2EC that the death quotes work. But when I used free space when I was defining the “DQTableOffset”, the death quotes don’t work. I’m assuming this is because the ROM is still reading for death quotes from the vanilla offset location, C9F2EC. Seeing as if I repoint to another location to expand and get more space, it will effectively make the nightmare modules obselete in terms of the formatting. When I accidentally overwrote the original death quote table while insert one “event”, the one I posted, 3 death quote slots were overwritten in nightmare.

Because at this point, the only thing not working is the bosses death quotes, but everything else works such as player unit death quotes. I have certain chapters where the victory conditions are the death of the bosses.

If I repoint it, I’m guessing I would have to re-do manually all the death quotes for the player units as well(?). I find nightmare to be easier to work with in this case. So I was asking if it is possible to have the ROM read from two or more seperate locations for death quotes since despite my efforts so far, nothing is working and I’m guessing I somehow don’t understand the concept yet.

Just to clarify,

-Defining “DQTableOffset” is this right?

#define DQTableOffset 0xD11EA0
and
" #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” "

-Telling EA the data to write is this?

DeathQuoteTable(0x00,Batta,0x832,BattaDies,0x02)

  • Making the event is this?

BattaDies:
TEX1 0x832
ENUT 0x02
ENDA

The only time I had success is when I overwrote data in C9F2EC, which I assumed is because the ROM was still reading data from that location. Which is weird if I think about it because the nightmare module already has all the information of what and where to retrieve in that location but it didn’t work until I overwrote. I just thought that I would be able to tell the ROM where to go for death quotes without repointing. So if I continued down this way, I would of eventually run out of space in the vanilla location, seeing as how one “event” would take the space of 3 death quote slots in nightmare.

no, that’s not how it works. when you define DQTableOffset you’re defining where the TABLE is, NOT where the events are written to. the events are written to wherever it is your chapter events are. so you can make the event as long as possible, it’s not going to take up “3 event slots”. that’s why your death quotes don’t work when you define it as free space, because that doesn’t do anything. DQTableOffset is exactly that, a pointer table. a pointer table to a whole bunch of events. not the events themselves. The vanilla death quote table already has 255 entries so that is the largest amount of death quotes possible, there is no point in repointing that table

offset and location are the exact same thing

just put the death quotes in a separate event file, it’s fucking up because you’re trying to do too much at once. you’re missing an ORG after the death quote macro. The EA’s last ORG command was to DQTableOffset, which is why you need to either place it in a separate event file so that you can use a separate area for your death quote events, or just move BattaDies, above the macro in the file and make sure NOTHING ELSE comes after DeathQuoteTable

I just noticed that the first post’s version of defining the DeathQuoteTable is different than the one Arch mentioned a few posts down. Using Arch’s version of the defining works while the one in the first post doesn’t and spits out a “Didn’t reach end, currently at comma” error message in EA.

So if I decide to go the route of just moving the “BattaDies” above the macro in the file and making sure nothing else comes after ‘DeathQuoteTable’, is this what things should look like?

[spoiler=Event]
#define DISABLE_TUTORIALS
#include EAstdlib.event

EventPointerTable(0x06,Pointers)

ORG 0xD148A0

Pointers:
POIN Turn_events
POIN Character_events
POIN Location_events
POIN Misc_events
POIN TrapData TrapData
POIN Bad Bad Bad Bad
POIN Good Good Good Good
POIN Opening_event Ending_event

Good:
UNIT Lyn_t Mercenary Lyn_t Level(1, Ally, 0) [0,7] [3,7] [IronSword, Vulnerary] NoAI
UNIT

Villagers:
UNIT 0xD6 0x47 0x00 Level(1, NPC, 0) [4,0] [5,4] [0x00] NoAI
UNIT 0xD5 0x48 0x00 Level(1, NPC, 0) [5,0] [4,5] [0x00] NoAI
UNIT 0xD3 0x48 0x00 Level(1, NPC, 0) [7,0] [6,5] [0x00] NoAI
UNIT

Bad:
UNIT 0x69 Brigand Batta Level(3, Enemy, 0) [3,0] [5,3] [IronAxe] PursueWithoutHeed
UNIT 0x67 Brigand 0x00 Level(1, Enemy, 0) [6,0] [3,5] [IronAxe, Vulnerary] PursueWithoutHeed
UNIT 0x68 Fighter 0x00 Level(1, Enemy, 0) [8,0] [7,5] [IronAxe] AttackInRange
UNIT

Boss:
UNIT Batta Brigand Batta Level(1, Enemy, 0) [5,3] [5,3] [IronAxe] PursueWithoutHeed
UNIT

Turn_events:
TurnEventPlayer(0x0,Opening_event,1)
End_MAIN

Character_events:
End_MAIN

Location_events:
End_MAIN

Misc_events:
CauseGameOverIfLordDies
DefeatAll(Ending_event)
End_MAIN

TrapData:
End_MAIN

Opening_event:
//MoveToChapter(0x02)
OOBB
STAL 0x64
MUS1 0x0041
LOU1 Good
ENUN
STAL 0x1E
CURF [3,7]
FADI 10
BACG 0x1C
TEX1 0x830
REMA
STAL 0x1E
MUS1 0x000C
LOU1 Villagers
LOU1 Bad
ENUN
CURF [5,4]
STAL 0x1E
TEX1 0x833
REMA
STAL 0x1E
FIGH 0x69 0xD6 Fight $00000000
KILL [5,4]
UNCR 0x69 0x02
ENUN
DISA [5,3]
LOU1 Boss
ENUN
STAL 0x1E
FIGH 0x67 0xD5 Fighting $00000000
KILL [4,5]
UNCR 0x67 0x02
ENUN
MOVE 0xD3 [5,7]
MOVE 0x68 [6,7]
ENUN
STAL 0x1E
TEX1 0x834
REMA
STAL 0x1E
FIGH 0x68 0xD3 Fightingyea $00000000
KILL [5,7]
UNCR 0x68 0x02
ENUN
STAL 0x1E
CURF [3,7]
TEX1 0x835
REMA
STAL 0x1E
MOVE [3,7] [9,8]
MOVE Batta [11,8]
MOVE 0x67 [8,6]
MOVE 0x68 [7,10]
UNCR Batta 0x02
UNCR 0x67 0x02
UNCR 0x68 0x02
UNCR Lyn_t 0x02
ENUN
CURF [9,8]
STAL 0x1E
FADI 10
BACG 0x1C
TEX1 0x836
REMA
MOVE 0x68 [6,0]
ENUN
DISA [6,0]
ENDA

Fight:
AttackerHit(30,2)
EndOfBattle

Fighting:
AttackerHit(30,2)
EndOfBattle

Fightingyea:
AttackerHit(30,2)
EndOfBattle

BattaDies:
TEX1 0x832
ENUT 0x02
ENDA

Ending_event:
STAL 0x64
FADI 10
BACG 0x1C
MUS1 0x0038
STAL 0x1E
TEX1 0x837
MUEN 0x05
MORETEXT 0x838
SOUN 0x02D9
MORETEXT 0x839
STAL 0x1E
REMA
MUEN 0x08
STAL 0x1E
MNCH 0x01
UnitClear
ENDA

// Events

// Manual Movement

// Scripted Fights

// Units

// Shop Data

MESSAGE Events end at offset currentOffset

#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”

DeathQuoteTable(0x00,Batta,0x832,BattaDies,0x02)

ORG 0xD11EA0
[/spoiler]

The second ‘ORG’ that you mention, what is that suppose to point to? Since if I were to stick to the deathquotes being in the same event file as my main chapter events, I’m not too sure. I have the second ORG pointing to free space within my ROM.

Currently I put 0xC9F2EC for DQTableOffset, and it writes to the first death quote slot in the nightmare module which is normally used for another character, but when I changed it to 0xC9F5CC, which is the default offset for Batta’s death quotes, it doesn’t work. I can’t get the death quotes to work with anything other than putting 0xC9F2EC when defining the DQTableOffset.

just do what I told you to, I’ll explain it later

why is there another org at the end of the file?

You said I’m missing an ORG after the death quote macro. I take it you you meant something else and not adding a second ORG after the death quote macro?

Could you show me a sample from your own events with manual death quotes? I feel that might explain things better in relation to where all the factors in an event file go. I’ve been staring at my event file and all the documentations I could find but I’m clearly missing something. Like if I were to put only the death quotes in a new .txt file, does that mean all the death quotes from each chapter and if so how would that look like?

this is what I do:

//obviously set this to include your own definitions files, too
#include EAstdlib.event
#include owndefinitions.txt
#define EveryChapter 0x43

//Death quote events
#define DQTableOffset 0xC9F2EC
#define DeathQuoteTable(index,CharacterID,ChapterID,TextPointer,EventPointer,ID) "ORG DQTableOffset+(16*index); BYTE CharacterID; BYTE ChapterID; ALIGN 4; SHORT TextPointer; ALIGN 4; POIN EventPointer; BYTE ID; ALIGN 4"

//The List
DeathQuoteTable(0x00,Henrick,0x43,0x00,HenrickDies,0x65)//TextPointer MUST be 0x00 if you want to use events
DeathQuoteTable(0x0E,Violet,0x43,0x00,VioletDies,0x00)//TextPointer MUST be 0x00 if you want to use events
DeathQuoteTable(0x11,Ethan,0x01,0x00,ETHAN_DIE_SPECIAL,0x00)
DeathQuoteTable(0x12,Wakeley,0x01,0x00,WAKELEY_DIE_SPECIAL,0x00)
DeathQuoteTable(0x13,Connor,0x43,0x00,ConnorDies,0x00)
DeathQuoteTable(0x14,Lisbeth,0x43,0x00,LISBETH_DIE,0x70)
DeathQuoteTable(0x15,Harriette,0x02,0x00,HARRIETTE_DIE_CH2,0x30)
DeathQuoteTable(0x16,Leylan,0x04,0x00,LeylanRetreats,0x00)
DeathQuoteTable(0x17,Leylan,0x43,0x00,LeylanDies,0x00)
DeathQuoteTable(0x18,Iris,0x04,0x00,IrisRetreats,0x00)
//1A nadine
DeathQuoteTable(0x1B,Rori,0x01,0x00,RORI_DIE_SPECIAL,0x00)
//1C farnell
DeathQuoteTable(0x1D,Leylan,0x05,0x00,LeylanRetreats,0x00)
//1E unused
DeathQuoteTable(0x1F,Ethan,0x43,0x00,ETHAN_DIE,0x00)
DeathQuoteTable(0x20,Wakeley,0x43,0x00,WAKELEY_DIE,0x00)
DeathQuoteTable(0x21,Rori,0x43,0x00,RORI_DIE,0x00)
DeathQuoteTable(0x22,Harriette,0x43,0x00,HARRIETTE_DIE_NORMAL,0x00)
DeathQuoteTable(0x23,Iris,0x05,0x00,IrisRetreats,0x00)
DeathQuoteTable(0x24,Iris,0x07,0x00,IrisDiesGameOver,0x00)//7e1 OR 7fa
DeathQuoteTable(0x25,Iris,0x43,0x00,IrisDiesNormal,0x00)//7fa

//0x03 unused 0x7AD
//0x0F unused 0x8D2
//0x10 unused
//0x17 unused

/*7CD, 7CE, 7D0, 7D1, 7D7, 7DC, */

//DeathQuoteEvents
ORG 0x71ED5C//you should only need to do this once
HenrickDies:
MUS1 HeroHasFallen
TEX1 0x7A8
ENDA

LunaDies:
MUS1 PainfulFarewell
TEX1 0x7B0//text not inserted
ENDA

VioletDies:
MUS1 PainfulFarewell
TEX1 0x84D
ENDA

ETHAN_DIE_SPECIAL:
ENUT 0x30
MUS1 PainfulFarewell
TEX1 0x8AB
ENDA

WAKELEY_DIE_SPECIAL:
ENUT 0x31
MUS1 PainfulFarewell
TEX1 0x8AC
ENDA

ETHAN_DIE:
MUS1 PainfulFarewell
TEX1 0x8AB
ENDA

WAKELEY_DIE:
MUS1 PainfulFarewell
TEX1 0x8AC
ENDA

RORI_DIE_SPECIAL:
ENUT 0x32
MUS1 PainfulFarewell
TEX1 0x7E3
ENDA

RORI_DIE:
MUS1 PainfulFarewell
TEX1 0x7E3
ENDA

LISBETH_DIE:
MUS1 PainfulFarewell
TEX1 0x7C6
ENDA

LeylanDies:
IFET 0x01 0x73
MUS1 PainfulFarewell
TEX1 0x7D4
ELSE 0x02
ENIF 0x01
MUS1 HeroHasFallen
TEX1 0x7D4
ENIF 0x02
ENDA

ConnorDies:
MUS1 PainfulFarewell
TEX1 0x7D6
ENDA


HARRIETTE_DIE_CH2:
MUS1 PainfulFarewell
TEX1 0x7C7
ENDA

HARRIETTE_DIE_NORMAL:
MUS1 PainfulFarewell
TEX1 0x7C7
ENDA


MESSAGE Death quote events end at offset currentOffset

I told you, you don’t have to change this. You SHOULDN’T change this. This offset is where the table of pointers to events is. There is no need to change this. Do not change this. DO NOT CHANGE THIS.

Let’s break down exactly what the macro says to do:

ORG DQTableOffset+(16*index)
BYTE CharacterID
BYTE 0x43
ALIGN 4
SHORT TextPointer
ALIGN 4
POIN EventPointer
BYTE TriggerID
ALIGN 4
  • Write the following data to offset 0xC9F2EC + index * 16
  • Write the character’s character ID
  • (Can’t remember what this byte does)
  • Skip the next few bytes to align everything properly
  • Write the pointer to the text of the death quote
  • Align again
  • Write a pointer to the EventPointer, which in your case is BattaDies
  • Write the trigger ID
  • Align again

Now if, after this, you are placing your BattaDies event, you’re overwriting the next entry in the table with actual events, which is NOT what you are supposed to do. The last ORG command was to 0xC9F2EC, which is why the next entry is getting overwritten, because not only is the EA replacing the table data, it’s going further and replacing the table data with actual event data.

The event either goes together with your chapter events, or simply is a separate text file, like what I showed you. This is why BattaDies CANNOT BE WRITTEN AFTER THE DEATH QUOTE MACRO unless you have used another ORG command to instruct the EA to write it elsewhere. Since you will otherwise be having to manually search for free space, it’s easier to place BattaDies within your other chapter events so that the EA will automatically sort all that data out itself.

An event is literally a command that says “play this text, play this music, etc.” There’s nothing tying it to any specific chapter.

I specifically placed all my death quotes in another text file together so that they’d be easier to search up and edit in the one place but you can have each death quote in a separate text if you really want to (why you’d do this I don’t know).

So after doing a ton of tests, I found out that the death quotes only work in certain offset slots, no idea why this is. For example, I got Batta’s death quote to work at 0x2F but if I use any number like 0x20, 0x3F, 0x40, etc, the death quote event doesn’t run at all. The same goes for the other bosses and the number is seemingly random. Is there a reason for this agro?

Some other results are, Migal death quote only runs on 0x00, while Sealen only works at 0x45. Of course I didn’t get to test every boss at every number to find who works in what slot yet. Only tested about 4 or so boss starting on their default number and jumping randomly until I hit one that works.

I’d prefer not to do this as then I have to re-do all the death quotes for the player characters once I sort out the bosses. This can’t be how things are suppose to be, are they?

On a side note I recently found out that the color of the save slots corresponds to the different modes, lyn, eliwood, hector, would this have any effect on the death quotes? I’ve been on lyn’s mode this whole time.

It’s because death quotes are actually 12 bytes long, not 16. @Agro pls fix
Wait now I don’t know there’s another table that’s 16 bytes? Damn it FE7

that might be fucking why it’s for Eliwood mode

did you put it in a separate text file like I told you to?

Yeah I did put the death quotes in a seperate text file like you said. I also fiddled around with the mode settings, it made no difference whether it was in lyn eliwood or hector mode. I’m convinced that numbers above 0x2F don’t work for the majority of the boss characters with a few exceptions. And for some player characters, their death quotes don’t run after 0x2F as well.

[spoiler=Event]

#include EAstdlib.event
#define EveryChapter 0x43

#define DQTableOffset 0xC9F2EC
#define DeathQuoteTable(index,CharacterID,ChapterID,TextPointer,EventPointer,TriggerID)

"ORG DQTableOffset+(16*index); BYTE CharacterID; BYTE 0x43; ALIGN 4; SHORT TextPointer;

ALIGN 4; POIN EventPointer;BYTE TriggerID; ALIGN 4"

DeathQuoteTable(0x2F,Batta,0x00,0x00,BattaDies,0x02)
DeathQuoteTable(0x01,Zugu,0x01,0x00,ZuguDies,0x02)
DeathQuoteTable(0x00,Migal,0x02,0x00,MigalDies,0x02)
//DeathQuoteTable(0x03,Bug,0x03,0x00,MigalDies,0x02)
//DeathQuoteTable(0x04,Glass,0x03,0x00,MigalDies,0x02)
DeathQuoteTable(0x30,Bauker,0x13,0x00,BaukerDies,0x02)
DeathQuoteTable(0x40,Uther,0x13,0x00,BaukerDies1,0x00)

ORG 0xD19100

BattaDies:
TEX1 0x832
ENUT 0x02
ENDA

ZuguDies:
TEX1 0x873
ENUT 0x02
ENDA

MigalDies:
TEX1 0x8D5
ENUT 0x02
ENDA

BugDies:
TEX1 0x921
ENUT 0x02
ENDA

GlassDies:
TEX1 0x8A2
ENUT 0x02
ENDA

BaukerDies:
TEX1 0xACB
ENUT 0x02
ENDA

SealenDies:
TEX1 0xA9E
ENUT 0x02
ENDA

BaukerDies1:
TEX1 0xACB
ENUT 0x02
ENDA

MESSAGE Events end at offset currentOffset
[/spoiler]

I don’t know why this is happening then

EXCUSE ME! i need help. (this example is according to agro’s death quote table)

DeathQuoteTable(0x17,Leylan,0x43,0x00,LeylanDies,0x00)

QUESTION: what do these number stands for? 0x17, 0x43, 0x00, and the 0x00 at the end)

Dear god. Death quotes can be frustrating especially in FE7.

0x17 is what slot in which you want it to go. Put another death quote in 0x18, and so on.
The next slot is the chapter ID you want this event to happen in. 0x43 means it can happen in all chapters.
The next 0x00 is the text offset to play along with this event. Use this if you don’t have special things to do with this event.
The last 0x00 is the event ID associated with this. Bosses should use 0x02, and characters that you want to trigger a game over should have 0x65. If you haven’t gotten into eventing and you’re not sure, just leave it at 0x00.