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

Chapter 52: Event Construction

I’m going to make this chapter easy on myself. You look at a bunch of events and recognize all the codes used (because I explained most of them). Then you are like “oh, this makes sense” and you get a feel of how actually using the codes to build your events work. Right, I’ve explained enough about events, so you’ll have to work it out on your own by looking at this chapter of mine from Tactics Universe. If you still need more help constructing your events, please look at Arch’s tutorial, found here-- http://serenesforest.net/forums/index.php?showtopic=21165

#include EAstdlib.event

//#include NewMacros.event – this would load my custom macros. You can add a line like this

//to load your own macro file, which can contain your own macros and macros by others.

//I suggest you download Arch’s and my macros from the FEShrine as they are very useful.

org 0xC9C9C8+(4*0x5A) // - tells the game where the pointer to this chapter’s events is

POIN Pointers // - makes the pointer

org 0xCB2000 // - tells where to insert data

Pointers: // label name

POIN Turn_events // makes a pointer to turn events, same for others but different events

POIN CharacterTalk

POIN Location_events

POIN Misc_events

POIN Ballista_events Ballista_events

POIN BadEN BadEH BadEN BadEH

POIN GoodEN GoodEH GoodEN GoodEH

POIN Opening_event Ending_event

Turn_events: // name of turn events. Look how it matches with the POIN to the top.

TURN 0x00 PreBattle [01,01] 0x00 0x00 // - creates a turn scene on turn 1 on the ally phase

CODE 0x00 // ends structure events

PreBattle: // the actual turn scene that is referenced in the turn event. be careful with //capitalization and spelling always!

BlackOff // custom macro used to fade out of a black screen at the beginning of a chapter or // after battle preps

ENDA // ends the scenic event

CharacterTalk: // for character talks, most commonly recruitment conversations

CODE 0x00 // ends structure events

Location_events:

Village(0x07,Village1,3,2) // creates a village with event ID 0x07

Village(0x08,Village2,3,8) // creates a village whose scene is “Village2”

Village(0x09,Village3,2,11) // creates a village with co-ordinates (2,11)

Village(0x00,Village4,1,14) // village that can be visited repetitively due to 0x00 as event ID

Door(9,14) // allows a door to be opened at 9,14

Door(10,14)

Armory(WeaponShop,6,16) // creates an armory at (6,16)

Vendor(ItemShop,9,17) // creates a shop with a list of weapons called ItemShop

CODE 0x00 // ends location events/structural events

Village1:

Text(0x0D,0x970) // text macro that loads background 0x0D and text 0x970

ITGV KnightsCrest // gives a KnightsCrest to the active unit visiting the village

REMA // removes graphics/returns to map

ENDA // end scenic event

Village2:

Text(0x01,0x971)

MONE 0x00 5000 // gives 5,000 gold to player, for villages (cutscene would be 0x01, not 0x00)

REMA

ENDA

Village3:

Text(0x0D,0x972)

ITGV 0xA5 // gives item/weapon 0xA5 to current unit

ENDA

Village4:

Text(0x01,0x973)

REMA

ENDA

WeaponShop:

SHLI IronSword SteelSword IronSpear SteelSpear Javelin IronAxe SteelAxe HandAxe IronBow SteelBow // list of weapons available at weapon shop

CODE 0x00 // data separator

ItemShop: // same structure as weaponshop

SHLI Heal Mend Fire Thunder Lightning Shine Vulnerary Antitoxin

CODE 0x00

Misc_events: // miscellaneous events, triggered events

ALIGN 4 // prevents misalignment from shops

CauseGameOverIfLordDies // when event 0x65 is triggered, game over screen will occur

DefeatAll(Ending_event) // when all enemies are defeated, the game goes to “Ending_event”

AREA 0x14 ItemFind [9,13] [12,14] // area event with event ID 0x14 called “ItemFind”.

//Item can be found by waiting anywhere between [9,13] or [12,14]

CODE 0x00

ItemFind:

ITGV DoorKey // gives a doorkey

REMA

ENDA

Ballista_events:

CODE 0x00

Opening_event:

ALIGN 4 // prevents misalignment from ballista data

CameraOff // custom macro that turns the camera off so it doesn’t follow unit movement

CAM1 [0,0] // moves camera to position [0,0]

UnitClear // custom macro that clears all units from the field (redundant, no units loaded yet)

BlackOff // custom macro that removes black screen

CAM1 [0,0]

ENUN // waits for event to finish/camera to move

LOU1 Allies // loads unit group “Allies”

ENUN // waits for units to move

CAM1 [3,10]

STAL 40 // stalls the game for time of ‘40’, a short pause that helps the flow of events

CAM1 [6,14]

STAL 40

CAM1 [14,14]

LOU1 Kelik // loads unit group “Kelik” (NOT necessarily the character “Kelik”)

ENUN

STAL 40

CURF [14,15] // flashes the cursor on (14,15)

FADI 0x10 // fades in with speed of 0x10

BACG 0x0A // loads background 0x0A

FADU 0x10 // fades out with speed of 0x10

TEX1 0x967 // loads text

REMA // clears text and returns to map

STAL 0x10 // stall, but with hex input

ENDB // goes to battlepreps, one can alternatively use a macro

Allies: // name of unit group/event label

UNIT Sain 0x00 0x00 Level(1,Ally,False) [6,16] [6,16] [0x00] [00000000] // loads character “Sain”

UNIT Lyn 0x00 0x00 Level(1,Ally,False) [3,12] [3,12] [0x00] [00000000] // class “0x00”

// the game knows to load Lyn’s class as Lyn is already an allied unit in the save data

UNIT 0x49 Myrmidon 0x00 Level(15,NPC,False) [14,15] [14,15] [0x00] [00000000]

// loads level 15 NPC without autoleveling (automatically adding stats)

UNIT Empty // unit separator to prevent glitches

Kelik:

UNIT 0x02 0x00 0x00 Level(1,Ally,False) [16,14] [16,15] [0x00] [00000000]

UNIT Empty

Ending_event:

MUEN 0x05 // fades out of music at speed 0x05

FADI 0x10

BACG 0x0A

MUS1 0x0038 // loads music 0x0038

FADU 0x10

TEX1 0x968

MNCH 0x17 // goes to chapter 0x17 (not exactly chapter 17, but the 0x17th chapter in the data)

ENDA

GoodEN: // allied units, controls positioning and # allowed in battle preps

UNIT 0x02 0x00 0x00 Level(1,Ally,False) [16,10] [16,10] [0x00] [00000000]

UNIT Sain 0x00 0x00 Level(1,Ally,False) [8,12] [8,12] [0x00] [00000000]

UNIT Lyn 0x00 0x00 Level(1,Ally,False) [16,4] [16,4] [0x00] [00000000]

UNIT Empty

GoodEH: // allied units in hard mode (you can limit the # allowed in battle preps)

UNIT 0x02 0x00 0x00 Level(1,Ally,False) [16,10] [16,10] [0x00] [00000000]

UNIT Sain 0x00 0x00 Level(1,Ally,False) [8,12] [8,12] [0x00] [00000000]

UNIT Lyn 0x00 0x00 Level(1,Ally,False) [3,4] [3,4] [0x00] [00000000]

UNIT Empty

BadEN: // normal mode enemy units

UNIT 0x49 Myrmidon 0x00 Level(15,Enemy,False) [16,2] [16,2] [0x9C] [0x00, 0x03, 0x09, 0x00]

UNIT 0xB3 Archer 0x00 Level(10,Enemy,True) [14,15] [14,15] [ShortBow,IronBow,Vulnerary] [0x00, 0x03, 0x09, 0x00] // loads inventory of ShortBow etc.

UNIT 0xB3 Pirate 0x00 Level(10,Enemy,True) [18,13] [18,13] [SteelAxe,HandAxe] [0x00, 0x03, 0x09, 0x00] // unit has AI of “attack in range” (00030900)

UNIT 0xB3 Pirate 0x00 Level(10,Enemy,True) [2,12] [2,12] [PoisonAxe,Vulnerary] [0x00, 0x03, 0x09, 0x00] // unit DOES autolevel (set to true)

UNIT 0xB3 Pirate 0x00 Level(10,Enemy,True) [10,6] [10,6] [IronAxe,HandAxe] [0x00, 0x03, 0x09, 0x00]

UNIT 0xB3 Pirate 0x00 Level(10,Enemy,True) [6,7] [6,7] [HandAxe,Vulnerary] [0x00, 0x03, 0x09, 0x00]

UNIT 0xB3 Fighter 0x00 Level(10,Enemy,True) [15,6] [15,6] [SteelAxe,HandAxe] [0x00, 0x03, 0x09, 0x00]

UNIT 0xB3 Mercenary 0x00 Level(10,Enemy,True) [7,3] [7,3] [SteelSword] [0x00, 0x03, 0x09, 0x00]

UNIT 0xB3 Mercenary 0x00 Level(10,Enemy,True) [12,10] [12,10] [PoisonSword,Antitoxin] [0x00, 0x03, 0x09, 0x00]

UNIT Empty

BadEH: // for hard mode units

UNIT 0x49 Myrmidon 0x00 Level(15,Enemy,False) [16,2] [16,2] [0x9C] [00000000]

UNIT 0xB3 Archer 0x00 Level(12,Enemy,True) [14,15] [14,15] [ShortBow,Longbow,Vulnerary] [00000000]

UNIT 0xB3 Pirate 0x00 Level(12,Enemy,True) [18,13] [18,13] [SteelAxe,HandAxe] [00000000]

UNIT 0xB3 Pirate 0x00 Level(12,Enemy,True) [2,12] [2,12] [PoisonAxe,Vulnerary] [00000000]

UNIT 0xB3 Pirate 0x00 Level(12,Enemy,True) [10,6] [10,6] [IronAxe,HandAxe] [00000000]

UNIT 0xB3 Pirate 0x00 Level(12,Enemy,True) [6,7] [6,7] [HandAxe,Vulnerary] [00000000]

UNIT 0xB3 Fighter 0x00 Level(12,Enemy,True) [15,6] [15,6] [SteelAxe,HandAxe] [00000000]

UNIT 0xB3 Mercenary 0x00 Level(12,Enemy,True) [7,3] [7,3] [SteelBlade,Vulnerary] [00000000]

UNIT 0xB3 Mercenary 0x00 Level(12,Enemy,True) [12,10] [12,10] [PoisonSword,Antitoxin] [00000000]

UNIT Empty

org 0xC9C9C8+(4*0x59) // - Pointer to tile map changes

POIN TileChanges // repoints tile changes

org 0xCB1F00 // puts data at offset 0xCB1F00

TileChanges: // list of tile changes

TileMap(0x00,0x03,0x02,0x01,0x01,VillageGate) // tile change #0 (0x00)

TileMap(0x01,0x03,0x08,0x01,0x01,VillageGate) // top-left tile of change is [0x03,0x08] or [3,8]

TileMap(0x02,0x02,0x0B,0x01,0x01,VillageGate) // [0x02,0x0B] = [2,11] – convert to hex

TileMap(0x03,0x01,0x0E,0x01,0x01,VillageGate) // w/ your head or a calculator

TileMap(0x04,0x09,0x0E,0x02,0x01,TownGate) // tile area is 2 tiles horizontal, 1 tile vertical

CODE $FF // terminates tile changes

CODE $00 // above

CODE $00 // above

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