Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Fire Emblem Ultimate Tutorial.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
7.86 Mб
Скачать

Chapter 51: Events – The Event Codes

This part is going to be a drag—it’s where I explain all the codes in the Event Assembler so that you have no excuse to not know how any of them work unless it’s A) a code not listed here, B) something I can’t work, C) glitch due to the program, or D) a CODE or ASMC thing that you can’t figure out because it’s not a supported code but rather some special code.

Open up the EALF. The EAL text file contains a list of all the codes, as said. It doesn’t include some macros though. I’m going to skip any codes that can be easier done with macros, and I’m skipping any codes I don’t know. I’m also only going to give the important details that aren’t obvious, so if I don’t mention an aspect of something, that means it is obvious.

Here are some generic principles to know:

  • Event ID/event identifier is covered with its own chapter, and thus I will not cover how it works again, and will just expect that you know it.

  • $ and 0x both denote hex, otherwise it is decimal. Binary has a ‘b’ at the end of it.

  • a pointer is a name, not an offset. When it asks for a pointer, you give a name, and later on you use “NameofLabel:” and give the appropriate info for that event (i.e. you use codes to tell what happens during said event).

  • [X,Y] asks for co-ordinates. Co-ordinates are from the top-left of the map, which is considered (0,0). You can use Mappy to figure out co-ordinates easily by just highlighting a tile in Mappy (it tells you at the top left what the co-ordinates are).

With that, let’s get started! XP

Turn based events.

TURN 0xPP $pointer [XX,YY] 0xZ 0xMM

PP = event identifier

XX = starting turn

YY = ending turn+1

Z = 0 beginning of player phase

Z = 8 beginning of enemy phase

MM=mode 01=ENM 02=HNM 03=EHM 04=HHM, FE7 only

This is like, the only code you’ll used in the Turn_events area. If you want an event to happen on any mode, just set ‘0xMM’ to ‘0x00’. A turn-based event might look like this:

TURN 0x00 Opening_scene [01,00] 0x0 0x00

Character based events.

CHAR 0xPP $pointer 0xAA 0xÄÄ 0xMM

PP = event identifier

AA = character1

ÄÄ = character2

MM = 1, eliwood

MM = 2, hector

MM = 00XX0003, if event XX has happened, for FE7 and FE8 only

These go in the character events area, of course. This code is for a talk between two characters. To make a talk go both ways you need two events, with the characters switched in them. However make sure that they have the same event ID so that if the conversation goes one way, it can’t go the other way as well.

Example:

CHAR 0x07 RecruitmentConvo 0x03 0x0D 0x00

CHAR 0x07 RecruitmentConvo 0x0D 0x03 0x00

CODE 0x00 // - nullifier

Shop list.

SHLI 0xI1 0xI2 0xI3

0xI1,2,3... = item.

This is an easy code. In a shop/armory/secret label use this to specify what items/weapons are available. Note that there IS a limit to how many there can be, so I would not add too many. Idk what the specific limit is though. 0xI1, 0xI2, etc. are just the hex values of the items. You can also use names ‘IronSword,IronSpear’, but they have to be defined (I covered definitions earlier—this is how you use them).

Area events.

AREA 0xPP $pointer [X1,Y1] [X2,Y2]

[X1,Y1] = upper left corner of trigger area

[X2,Y2] = lower right corner of trigger area

Honestly, I’ve sort of forgotten where this goes, but I think it actually goes in the Misc_events section, NOT the location events. It sounds ironic, but this is what I remember (and I’ve been doing events for years, guys). This is pretty self-explanatory—it sets a rectangular area to have an event such that when you wait on a tile there, the event activates. Note that certain codes won’t work with an area event because the character is still considered moving when this activates (thus the DISA code, which removes a character from the map, does not function properly).

Event after another event.

AFEV 0xPP *pointer* 0xRR

0xRR = The event ID of previous event.

This goes in the Miscellaneous section as well. It activates an event after another event has been activated. This is actually how the game over event works—when event 0x65 is activated/triggered, it uses an after event to go to the game over screen. *this is one of the event codes I told NL about, tee hee*

Event if ASM condition is fulfilled

ASME 0xPP *pointer* *ASM pointer*

ASM pointer = pointer to ASM code

Unless you are familiar with specific ASM conditions, I don’t suggest using this codevery often. Despite this I think the ‘Defeat All Enemies’ goal uses this kind of event (but there should be a macro for it…).

Unit data FE7 and FE6:

UNIT 0xZZ 0xCC 0xLC 0xLL [X1,Y1] [X2,Y2] I1 I2 I3 I4 A1 A2 A3 A4

UNIT 0xZZ 0xCC 0xLC 0xLL [X1,Y1] [X2,Y2] *Items* *AI*

UNIT 0xZZ 0xCC 0xLC 0xLL [X1,Y1] [X2,Y2] [I1,I2,I3,I4] [A1,A2,A3,A4]

ZZ = Character

CC = Class

LC = Leader character

LL = Starting level

[X1,Y1] = Loading coordinate

[X2,Y2] = Starting coordinate

I1 I2 I3 I4 or *Items* = Starting inventory

A1 A2 A3 A4 or *AI* = Units artificial intelligence

Character and class are obvious. Leader character is described in the “Chapter Unit Editing with Nightmare” chapter (it’s not very important, so you can just set it to 0x00 if you want). Starting level is a byte that determines the allegiance, starting level, and whether a unit is autoleveled or not. There is a list of values in the Nightmare modules; however, there is also another (MUCH better) way to do starting levels. Use the macro:

Level(Level,Allegiance,T/F) where “Level” is a number that determines the level, “Allegiance” is either “Ally”, “NPC”, or “Enemy”, and T/F is either “True” or “False”.

The first co-ordinates are the loading position. Units will then move to the starting positions. If battle preparations are on, these co-ordinates might as well be the same.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]