Jump to content

Event Assembler Questions Thread


CT075
 Share

Recommended Posts

Well, progress was made. Instead of going to a black screen, the game simply erases Eliwood, escapes into Enemy Phase, Harken comes and it's the Player Phase. But no black screen is a nice change. Here's what I did, and I changed the Prologue chapter to include the Preparations Screen, if programmed.

EDIT2: Finally! I did it! I decided to give Chapter 1 a try, and it worked perfectly! Here's the map and Script, just for reference and in case someone near the future has similar problems.
The Village is supposed to be open, but I didn't turn off that layer because I got lazy :<
Script:

EventPointerTable(0x09,Pointers)
ORG 0x01000540
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 Eliwood EliwoodLord 0x00 Level(1, Ally, 0) [17,21] [17,20] [ironSword, Vulnerary] NoAI
UNIT Harken Hero Eliwood Level(1, Ally, 0) [14,21] [16,20] [braveAxe, BraveSword, Elixir] NoAI
UNIT
Bad:
UNIT Glass Mercenary 0x00 Level(2, Enemy, 0) [5,3] [8,3] [ironSword, LockPick] Guard
UNIT Bern Soldier 0x00 Level(1, Enemy, 0) [8,3] [7,6] [ironSpear] PursueWithoutHeed
UNIT Bern Soldier 0x00 Level(1, Enemy, 0) [8,3] [8,6] [Javelin] PursueWithoutHeed
UNIT Bern Soldier 0x00 Level(1, Enemy, 0) [8,3] [9,6] [ironSpear] PursueWithoutHeed
UNIT Bern Cavalier 0x00 Level(3, Enemy, 1) [8,3] [8,5] [Javelin] AttackInRange
UNIT Bern Nomad 0x00 Level(2, Enemy, 1) [0,6] [2,6] [ironBow] PursueWithoutHeed
UNIT
Turn_events:
TurnEventPlayer(0x0,EventAfterExitingPrepScreen,1)
TurnEventPlayer(0x0,GoodGuysR,2)
TurnEventEnemy(0x0,BadGuysR,3)
End_MAIN
Opening_event:
OOBB
LOU1 Good
ENUN
CAM1 [11,16]
CURF [17,20]
FADI 10
BACG 0x02
FADU 10
TEX1 0x820
REMA
LOU1 Bad
ENUN
ENDB
EventAfterExitingPrepScreen:
OOBB
ENDA

Thanks to everyone who helped me. I hope my experience helps anyone having troubles inserting the PrepScreen, and remember, you have to turn them on on Nightmare too! (is saying on on gramatically correct?).
EDIT3: Ermh...does using two spoilers in the same post is impossible to do? Ah well, gonna erase the first one. Why aren't my spoilers working? If this doesn't work, forgive me for having this big wall of events :<
EDIT4: I can't believe I can't make a spoiler tag work. Pardon me, I just can't make this thing work. I'm gonna cut it to the necessary parts, I left the "Good" and "Bad" as they're the ones that appear on the PrepScreen.
Edited by Lagfile
Link to comment
Share on other sites

  • Replies 3.3k
  • Created
  • Last Reply

Top Posters In This Topic

Strange. The first condition works perfectly, but the second condition, which is essentially a copy of the first, is going in some infinite loop in which my character gets like a million lockpicks. Anyone know why the second loop is going crazy?

//First Condition
IFUF 0x00 0x01 Serra
CUMO [12,08]
STAL 60
CURE
Text(0x09,0x826)
ELSE 0x01
CUMO [13,08]
STAL 60
CURE
Text(0x09,0x828)
ENIF 0x01
ENUF 0x01
ENIF 0x01
//Second Condition
IFUF 0x00 0x02 Matthew
MOVE Matthew [12,10]
CUMO [12,10]
STAL 60
CURE
Text(0x09,0x827)
ITGC Matthew LockPick
ELSE 0x01
ENIF 0x01
ENUF 0x01
ENIF 0x01
Link to comment
Share on other sites

Ah, that was what it was. Thanks Agro. ConditionIDs are still something I'm rather iffy on, unfortunately.

Also, would anyone happen to know why when I run the code below, the units literally appear on the map for a split second before disappearing? Longer stalls haven't seemed to help. I tried to see if ENUN would have the same effect as it does on unit loading, but that didn't work.

REMA
FADI 0x10
STAL 100
UnitClear
STAL 100
MUS1 0x0038
FADU 0x10
LOU1 GoodCutscene
Edited by Squeegee
Link to comment
Share on other sites

[spoiler=EA File]#define DISABLE_TUTORIALS
#include EAstdlib.event

EventPointerTable(0x09,Pointers)

ORG 0xDD1DB0
Pointers:
POIN Turn_events
POIN Character_events
POIN Location_events
POIN Misc_events
POIN BallistaData BallistaData
POIN Bad Bad Bad Bad
POIN Good Good Good Good
POIN Opening_event Ending_event


Bad:
UNIT 0x3E Brigand 0x00 Level(1,Enemy,False) [14,00] [13,01] [Halberd,IronAxe,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT 0x42 Fighter 0x00 Level(1,Enemy,False) [15,00] [15,01] [Halberd,IronAxe,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT 0x3E Brigand 0x00 Level(1,Enemy,False) [19,09] [18,08] [Halberd,IronAxe,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT 0x42 Fighter 0x00 Level(1,Enemy,False) [19,10] [18,11] [Halberd,IronAxe,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT 0x3E Brigand 0x00 Level(1,Enemy,False) [12,19] [11,18] [Halberd,IronAxe,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT 0x42 Fighter 0x00 Level(1,Enemy,False) [13,19] [14,18] [Halberd,IronAxe,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT

Good:
UNIT Lyn_t LynLord 0x00 Level(1,Ally,False) [15,00] [12,10] [steelSword,Vulnerary,Vulnerary,0x00] [0x00,0x00,0x00,0x00]
UNIT Lowen Cavalier 0x00 Level(1,Ally,False) [16,00] [13,09] [ironSword,IronSpear,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT

Neutral:
UNIT 0xD3 0x1F 0x00 Level(1,NPC,False) [08,12] [12,09] [0x00,0x00,0x00,0x00] [0x00,0x00,0x00,0x00]
UNIT Serra Cleric 0x00 Level(1,NPC,False) [08,12] [11,10] [Heal,Vulnerary,0x00,0x00] [0x00,0x00,0x00,0x00]
UNIT

DeezNuts:
UNIT Matthew Thief 0x00 Level(1,NPC,False) [19,19] [12,11] [ironSword,0x00,0x00,0x00] [0x00,0x00,0x00,0x00]
UNIT

BadReinforcements1:
UNIT 0x3E Brigand 0x00 Level(1,Enemy,False) [14,00] [13,01] [steelAxe,Halberd,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT 0x42 Fighter 0x00 Level(1,Enemy,False) [15,00] [15,01] [steelAxe,Halberd,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT 0x3E Brigand 0x00 Level(1,Enemy,False) [19,09] [18,08] [steelAxe,Halberd,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT 0x42 Fighter 0x00 Level(1,Enemy,False) [19,10] [18,11] [steelAxe,Halberd,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT 0x3E Brigand 0x00 Level(1,Enemy,False) [12,19] [11,18] [steelAxe,Halberd,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT 0x42 Fighter 0x00 Level(1,Enemy,False) [13,19] [14,18] [steelAxe,Halberd,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT

BadReinforcements2:
UNIT 0x3E Brigand 0x00 Level(1,Enemy,False) [00,09] [05,10] [steelAxe,0x00,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT 0x42 Fighter 0x00 Level(1,Enemy,False) [00,10] [05,11] [HandAxe,0x00,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT

PeePants:
UNIT 0x42 Fighter 0x00 Level(1,Enemy,False) [19,09] [15,08] [steelAxe,Halberd,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT

GoodCutscene:
UNIT Lyn_t LynLord 0x00 Level(1,Ally,False) [08,12] [13,09] [steelSword,Vulnerary,Vulnerary,0x00] [0x00,0x00,0x00,0x00]
UNIT Lowen Cavalier 0x00 Level(1,Ally,False) [08,12] [14,09] [ironSword,IronSpear,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT Serra Cleric 0x00 Level(1,Ally,False) [08,12] [12,08] [steelSword,Vulnerary,Vulnerary,0x00] [0x00,0x00,0x00,0x00]
UNIT Matthew Thief 0x00 Level(1,Ally,False) [08,12] [13,10] [ironSword,IronSpear,0x00,0x00] [0x00,0x02,0x09,0x00]
UNIT MorphLloyd Swordmaster 0x00 Level(20,NPC,False) [08,12] [12,09] [LightBrand,0x00,0x00,0x00] [0x00,0x00,0x00,0x00]
UNIT 0xD3 0x1F 0x00 Level(1,NPC,False) [08,12] [13,08] [0x00,0x00,0x00,0x00] [0x00,0x00,0x00,0x00]
UNIT

Turn_events:
TurnEventPlayer(0x05,Opening_event,1)
TURN 0x00 Reinforcements1 [3,3] 0x00 0x00
TURN 0x00 Reinforcements2 [4,4] 0x00 0x00
TURN 0x00 Ending_event [5,5] 0x00 0x00
TURN

Character_events:
CHAR

Location_events:
LOCA

Misc_events:
CauseGameOverIfLordDies
AFEV

Opening_event:
MUS1 0x0026
Text(0x09,0x81D)
LOU1 Good
ENUN
LOU1 Neutral
ENUN
CUMO [12,09]
STAL 60
CURE
MUS1 0x0032
Text(0x09,0x81E)
MOVE 0xD3 [08,12]
ENUN
DISA 0xD3
CUMO [11,10]
STAL 60
CURE
Text(0x09,0x820)
CUSI Serra Ally
LOU1 DeezNuts
ENUN
CUMO [12,11]
STAL 60
CURE
Text(0x09,0x821)
CUSI Matthew Ally
MOVE Lowen [08,12]
ENUN
DISA Lowen
MOVE Lyn_t [08,12]
MOVE Matthew [07,11]
MOVE Serra [09,11]
ENUN
LOU1 Bad
MUEN 2
ENDA

Ending_event:
LOU1 PeePants
ENUN
CUMO [15,08]
STAL 60
CURE
TEX1 0x822
REMA
FADI 0x10
STAL 100
UnitClear
STAL 100
MUS1 0x0038
FADU 0x10
LOU1 GoodCutscene
CUMO [13,09]
STAL 60
CURE
Text(0x09,0x824)
ITGC Lyn_t WhiteGem
WarpOut(MorphLloyd)
WarpOut(0xD3)
MOVE Lyn_t [12,09]
MOVE Lowen [13,08]
ENUN
CUMO [12,09]
STAL 60
CURE
TEX1 0x825
REMA
IFUF 0x00 0x01 Serra
CUMO [12,08]
STAL 60
CURE
Text(0x09,0x826)
ELSE 0x03
ENIF 0x01
ENUF 0x03
CUMO [13,08]
STAL 60
CURE
Text(0x09,0x828)
ENIF 0x03
IFUF 0x00 0x02 Matthew
MOVE Matthew [12,10]
CUMO [12,10]
STAL 60
CURE
Text(0x09,0x827)
ITGC Matthew LockPick
ELSE 0x02
ENIF 0x02
ENUF 0x02
ENIF 0x02
MNCH 0x02
ENDA

BallistaData:
BLST
ALIGN 4

VillageBreak:
IFCA 0x0 0x01 0x3E
GameOver
ELSE 0x01
ENIF 0x01
ENUF 0x01
ENIF 0x01
IFCA 0x0 0x01 0x42
GameOver
ELSE 0x01
ENIF 0x01
ENUF 0x01
ENIF 0x01
ENDA

Reinforcements1:
LOU1 BadReinforcements1
ENUN

Reinforcements2:
LOU1 BadReinforcements2
ENUN

MESSAGE Events end at offset currentOffset

Link to comment
Share on other sites

Ah, that was what it was. Thanks Agro. ConditionIDs are still something I'm rather iffy on, unfortunately.

think of it this way:

When you attach a conditional ID to an IF statement, the game first checks the condition. If the condition is true, it just ignores the command and keeps going. If the condition is false, it will search all the way down to the first ENIF it finds with the same ID. ELSE works basically the same way; it's just the same thing as a JUMP to an ENIF with the same ID.

Link to comment
Share on other sites

Question, how do I make a unit be able to be the "Merlinus" or convoy character in FE7, without that character being Merlinus? (Because he is a bother for me, personally.)

I read this, but I couldn't figure out the "how to".

http://feuniverse.us/t/item-storage-without-merlinus/520

I assume it's with a Hex Editor, right? The one I'm using is GoldFinger, but I couldn't figure out how to change the values. Is this convoy business do-able in Nightmare only? Or do you have to use a combination of a Hex Editor + Nightmare? For example, can I go to Nightmare, choose Eliwood (The character) give him the 0x02 value in one of his character slot skills (Like the Lord "skill" or the "UnlockRapier/Durandal") and it'll be done? For the other changes (the ones below the images), I could only locate them in the Hex Editor, but again, I didn't know how to change them.

So, what am I missing? Pardon me if the question is already answered/off-topic.

Link to comment
Share on other sites

Oh my gee, it was so easy, and I couldn't even figure that one...that's what I get for not trying things on my own...

Thanks.

EDIT1: Worked perfectly! Now, Eliwood is my convoy master.

However, something totally cosmetic, but where do I find how to change the title of the chapter? For example, I want to change "Another Journey" to, say, "Castle Ambush". How do I do that? I don't know how to search that specific bit in this forums. Anyone got a link and/or knows a way to do it?

Edited by Lagfile
Link to comment
Share on other sites

  • 2 weeks later...

Hi there,

I have a bit of a problem making conditional events work, despite reading/watching Arch's tutorials. Having coded my chapter 2, I want to give player access to a gaiden chapter under the two following conditions.

- Visit village A

- Keep specified character alive (in this case, Matthew).

Now I have not tested whether the condition killing Matthew or not is triggered, but just for the other condition, my code just won't work. Additionally, when I choose to refuse to go to chapter 2x, the game will redirect me to this chapter, regardless of my choice. Maybe I have missed something regarding IFXX conditions, but so far, I'm stuck. Is this code viable (EA does compile and everything) to achieve what I have mentioned ?

Thanks.

Ending_event:

MUS1 0x0038
FADI 10
BACG 0x22
FADU 10
TEX1 0x084B
REMA
ITGC Eliwood Rapier
IFET 0x01 0x10 // If Village A visited
IFCD 0x02 Matthew // If Matthew died -> Go to Ch3
MoveToChapter(0x03)
ELSE 0x03 // Else ask if Ch2x
ENIF 0x02
FADI 10
BACG 0x22
FADU 10
TEX1 0x084C
REMA
TEX6 0x7 [0,0] 0x09A5
_ASM0x42 0x83181
IFYN 0x04 // Choose to go to Ch2x
FADI 10
BACG 0x22
FADU 05
TEX1 0x084D
REMA
MoveToChapter(0x08) // Ch2x
ELSE 0x05 // Choose not to go to Ch2x
ENIF 0x04
FADI 10
BACG 0x22
FADU 05
TEX1 0x084E
REMA
ENIF 0x05
ENIF 0x03
ENIF 0x01
MoveToChapter(0x03)

Link to comment
Share on other sites

I've always had rotten luck trying to use IFCD. I would give Matthew a death quote unique to the chapter, and check that it hasn't been triggered.
Something like this:

IFET 0x01 0x10 // If Village A visited
    IFEF 0x02 MatthewDeathQuoteID // If Matthew didn't die
        CALL GaidenCode 
    ENIF 0x02
ELSE 0x03
ENIF 0x01
    CALL Chapter3Code
ENIF 0x03
ENDA

GaidenCode:
FADI 10
BACG 0x22
FADU 10
TEX1 0x084C
REMA
TEX6 0x7 [0,0] 0x09A5
_ASM0x42 0x83181
IFYN 0x04 // Choose to go to Ch2x
    FADI 10
    BACG 0x22
    FADU 05
    TEX1 0x084D
    REMA
    MoveToChapter(0x08) // Ch2x
ENIF 0x04
// If they didn't choose yes,
// the code will just return
// to where the CALL GaidenCode was, and
// continue on to the next thing (i.e. moving to chapter 3)
ENDA

Chapter3Code:
// Stuff prior to going to 3 here
MoveToChapter(0x03)
ENDA
Link to comment
Share on other sites

@Primefusion: Thanks for the help. However, I still have some issues...

I tested the first (village) condition and it does work. I also ignored the IFET and linked ENIF for now (I'll see later, I just put slashes for the moment), but my problem comes from the IFYN.

Whether I put yes or no, the game indistinctively runs the code as if I chose yes (or rather, should I say, I think the game totally ignores the IFYN condition) and I end up at chapter 2x. Is there something I missed with IFYN conditions ?

(Note: I simply copied/pasted your code and removed blank spaces).

Link to comment
Share on other sites

Hello!

I'm currently working on a mod where I would like to take the chapter data from Fire Emblem 8 and add more units. To do so, I had disassembled the chapter data using the Event Assembler. I thought that I might be able to simply find where the units were loaded and add new lines where I might want to add new units. The disassembled code looks like this:

ORG $8B40A0
Units1:
UNIT 0x1 0x2 0x1 0x8 [14,9] 0b 0x0 0x1 0x8B4008 [0x9,0x6C,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x2 0x7 0x1 0x8 [14,9] 0b 0x0 0x1 0x8B4010 [0x3,0x17,0x6C,0x0] [0x0,0x0,0x0,0x0]
UNIT

label30:
UNIT 0x46 0x9 0x46 0x24 [2,9] 0b 0x0 0x1 0x8B4018 [0x14,0x0,0x0,0x0] [0x3,0x3,0x9,0x20]
UNIT 0x80 0x4E 0x46 0x15 [1,9] 0b 0x0 0x1 0x8B4020 [0x14,0x0,0x0,0x0] [0x0,0x3,0x9,0x0]
UNIT 0x80 0x4E 0x46 0x15 [2,9] 0b 0x0 0x2 0x8B4028 [0x14,0x0,0x0,0x0] [0x0,0x3,0x9,0x0]
UNIT 0x80 0x4E 0x46 0x1D [2,9] 0b 0x0 0x1 0x8B4038 [0x14,0x0,0x0,0x0] [0x3,0x12,0x1,0x0]
UNIT 0x80 0x3F 0x46 0x15 [1,9] 0b 0x0 0x1 0x8B4040 [0x1F,0x0,0x0,0x0] [0x0,0x0,0x1,0x0]
UNIT 0x80 0x3F 0x46 0x15 [2,9] 0b 0x0 0x1 0x8B4048 [0x1F,0x0,0x0,0x0] [0x0,0x0,0x1,0x0]
UNIT 0x80 0x3F 0x46 0x15 [2,9] 0b 0x0 0x1 0x8B4050 [0x1F,0x0,0x0,0x0] [0x0,0x12,0x1,0x0]
UNIT

label35:
UNIT 0x4 0x5 0x1 0x8 [5,0] 0b 0x0 0x1 0x8B4058 [0x1,0x14,0x6C,0x6C] [0x0,0x0,0x0,0x0]
UNIT 0x3 0x9 0x0 0x20 [6,0] 0b 0x0 0x1 0x8B4060 [0x14,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT

//The next line is for re-assembling purposes. Do not delete!
MESSAGE Original ending offset is $8B41B8 and the new ending offset is CURRENTOFFSET

The issue I'm having is that I can't just re-insert the code after i've added lines under label30 (or anywhere, for that matter). I'm pretty sure the issue has something to do with the layout of the disassembled code, because it reassembles with no errors, and it will start but freezes eventually. I think this method overwrites some other portion of the event data. Unfortunately, removing the ORG and MESSAGE lines throughout the code and placing the event data within free space generates the same issue.

Is there a way that I can change chapter data without having to rewrite the chapter entirely?

Link to comment
Share on other sites

You need to stick your modified data into free space. By adding more units, but inserting into the spot the original events are at, you're overwriting other game data.

Edit: Haven't forgotten about you, Homasa. I did a little testing and it seems the game doesn't like having a MoveToChapter code in a label that get's CALL'd.

Try something like this instead:

SomeLabel:
// stuff
TEX6 0x7 [0,0] 0x09A5
_ASM0x42 0x83181
IFYN 0x04    
    CALL GaidenScene
    MoveToChapter(0x08) // Ch2x
ENIF 0x04
CALL NotGaidenScene
MoveToChapter(0x01) // Continue as normal
ENDA

GaidenScene:
// stuff
ENDA

NotGaidenScene:
// stuff
ENDA

Note: You don't have to use CALL at all. I just feel like it makes it easier to focus on the conditional if you move the other scene code elsewhere and, as a bonus, makes it easier to read.

Edited by Primefusion
Link to comment
Share on other sites

The problem doesn't seem to come from CALL for me. I proceeded as you said (BTW, I agree, using CALL makes the code easier to read), but still, regardless of my choice when the Y/N panel appears (TEX6 0x09A5), the code will just run the events linearly - thus calling GaidenScene and MoveToChapter(0x08).

Maybe I messed something while copying/pasting your code. I'll just join my EA script.

Ending_event:
MUS1 0x0038
FADI 10
BACG 0x22
FADU 10
TEX1 0x084B
REMA
ITGC Eliwood Rapier
IFET 0x01 0x10 // If Village A visited
//    IFCD 0x02 Matthew // If Matthew didn't die
CALL GaidenCode // If conditions fulfilled, trigger GaidenCode
//    ENIF 0x02
ELSE 0x03
ENIF 0x01
MoveToChapter(0x03) // If not go to chapter 3
ENIF 0x03
ENDA
 
GaidenCode:
FADI 10
BACG 0x22
FADU 10
TEX1 0x084C
REMA
TEX6 0x7 [0,0] 0x09A5
_ASM0x42 0x83181
IFYN 0x04 // Choose to go to Ch2x
CALL GaidenScene
MoveToChapter(0x08) // Ch2x
ENIF 0x04
CALL NotGaidenScene // Choose not to got to Ch2x
MoveToChapter(0x03)
ENDA
 
GaidenScene:
FADI 10
BACG 0x22
FADU 05
TEX1 0x084D
REMA
ENDA
 
NotGaidenScene:
FADI 10
BACG 0x22
FADU 05
TEX1 0x084E
REMA
ENDA
Link to comment
Share on other sites

You need to stick your modified data into free space. By adding more units, but inserting into the spot the original events are at, you're overwriting other game data.

Thank you for responding.

I figured that much and had been trying that method, but still had no success. Leaving the ORG and MESSAGE lines throughout the events .txt file and placing it in the free space means it doesn't run at all when the chapter starts (even after making sure that the event data table has the correct pointer). I get a better result when I remove said lines and place it in free space but it still eventually freezes on me, and I have no idea why that might be. Is there a specific order the events have to be in that the ORG and MESSAGE lines took care of?

Link to comment
Share on other sites

The problem doesn't seem to come from CALL for me. I proceeded as you said (BTW, I agree, using CALL makes the code easier to read), but still, regardless of my choice when the Y/N panel appears (TEX6 0x09A5), the code will just run the events linearly - thus calling GaidenScene and MoveToChapter(0x08).

I don't know what to tell you, bud. I copy/pasted your events into my test code and it worked perfectly.

If I didn't trigger event id 0x10, I would go to chapter 0x03.

If I did trigger event id 0x10, but chose No, I would go to chapter 0x03.

If I did trigger event id 0x10, but chose Yes, I would go to chapter 0x08.

Maybe you're not properly triggering 0x10 somewhere?

For reference, here's the test code I used:

#define DISABLE_TUTORIALS
#include EAstdlib.event

EventPointerTable(0x06,Pointers)

ORG 0xD00000
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

Bad:
    UNIT 0xA0 General 0x00 Level(5,Enemy,0) [04,04] [04,04] [IronSpear] Guard
    UNIT Batta Druid Glass Level(10,Enemy,0) [08,07] [08,07] [Flux] Guard
UNIT

Good:
    UNIT Eliwood EliwoodLord 0x00 Level(10,Ally,True) [3,3] [3,3] [Rapier, KillingEdge, BodyRing, Elixir] NoAI
    UNIT Lyn_t LynLord Eliwood Level(10,Ally,True) [12,06] [12,06] [ManiKatti,EmblemSword,Elixir] NoAI
    UNIT Canas Shaman Eliwood Level(18,Ally,True) [12,08] [12,08] [Flux,Vulnerary] NoAI
UNIT

Turn_events:
    OpeningTurnEvent(Opening_event)
END_MAIN

Character_events:
CharacterEventBothWays(0x10, SomeTalk, Lyn_t, Canas)
END_MAIN

Location_events:
    Seize(03,02)
END_MAIN

Misc_events:
    CauseGameOverIfLordDies
END_MAIN


Opening_event:
OOBB
LOU1 Good
ENUN
STAL 16
LOU1 Bad
ENUN
ENDA

SomeTalk:
CURF Canas
CURF Lyn_t
ENDA

Ending_event:
MUS1 0x0038
FADI 10
BACG 0x22
FADU 10
TEX1 0x084B
REMA
ITGC Eliwood Rapier
IFET 0x01 0x10 // If Village A visited
//    IFCD 0x02 Matthew // If Matthew didn't die
CALL GaidenCode // If conditions fulfilled, trigger GaidenCode
//    ENIF 0x02
ELSE 0x03
ENIF 0x01
MoveToChapter(0x03) // If not go to chapter 3
ENIF 0x03
ENDA


GaidenCode:
FADI 10
BACG 0x22
FADU 10
TEX1 0x084C
REMA
TEX6 0x7 [0,0] 0x09A5
_ASM0x42 0x83181
IFYN 0x04 // Choose to go to Ch2x
    CALL GaidenScene
    MoveToChapter(0x08) // Ch2x
ENIF 0x04
CALL NotGaidenScene // Choose not to got to Ch2x
MoveToChapter(0x03)
ENDA

GaidenScene:
FADI 10
BACG 0x22
FADU 05
TEX1 0x084D
REMA
ENDA

NotGaidenScene:
FADI 10
BACG 0x22
FADU 05
TEX1 0x084E
REMA
ENDA

TrapData:
ENDTRAP

MESSAGE Events end at offset currentOffset

//The map for this chapter is at offset: ????????

Thank you for responding.

I figured that much and had been trying that method, but still had no success. Leaving the ORG and MESSAGE lines throughout the events .txt file and placing it in the free space means it doesn't run at all when the chapter starts (even after making sure that the event data table has the correct pointer). I get a better result when I remove said lines and place it in free space but it still eventually freezes on me, and I have no idea why that might be. Is there a specific order the events have to be in that the ORG and MESSAGE lines took care of?

A more sure fire way is to:

1) Find enough free space to house a whole new set of events.

2) Remove all 'ORG $offset' lines in the event file you want to edit.

3) Move the PointerList to the top of the file.

4) Put a 'ORG $yourFreeSpaceOffset' before the PointerList

5) Put an ALIGN 4 after the trap data, or move the trap data to the end of the file (your choice).

6) Edit to your heart's content.

Example file of the prologue where I added Gilliam in, plus an extra fighter:

#include EAstdlib.event // this let's me use things like 'Eirika' and 'IronAxe', instead of '0x01' or '0x1F'

ORG 0xB2E800 // A free space offset I found, choose whatever is appropriate for you.
PointerList:
POIN TurnBasedEvents
POIN CharacterBasedEvents
POIN LocationBasedEvents
POIN MiscBasedEvents
POIN Dunno1 Dunno2 Dunno3 Tutorial
POIN Traps1 Traps2
POIN Units1 Units1
POIN $0 $0 $0
POIN $0 $0 $0
POIN BeginningScene EndingScene

label35:
_0x1020 0x1
_0x0220 0x2
_0x0320 0x8
_SETCONDITION 0x0 0xC 0x0
FADU 16
ENIF 0x0
_0x1020 0x0
ENDA

//The next line is for re-assembling purposes. Do not delete!
MESSAGE Original ending offset is $591F64 and the new ending offset is CURRENTOFFSET

label20:
_0x1020 0x4
ASMC 0x85375
ENDA

//The next line is for re-assembling purposes. Do not delete!
MESSAGE Original ending offset is $592114 and the new ending offset is CURRENTOFFSET

Units1:
UNIT 0x2 0x7 0x0 0x8 [13,9] 0b 0x0 0x6 0x8B3BC4 [0x3,0x17,0x6C,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x1 0x2 0x0 0x8 [8,5] 0b 0x0 0x1 0x8B3BF4 [0x6C,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT Gilliam Knight 0 0x8 [1,1] 0b 0x0 0x0 0x0000000 [IronLance,Vulnerary] NoAI
UNIT

label36:
UNIT 0x68 0x3F 0x0 0x24 [14,8] 0b 0x0 0x1 0x8B3BFC [0x1F,0x0,0x0,0x0] [0x6,0x3,0x0,0x0]
UNIT 0x82 0x3F 0x0 0xC [14,7] 0b 0x0 0x1 0x8B3C04 [0x1F,0x0,0x0,0x0] [0x0,0xA,0x0,0x0]
UNIT 0x80 0x3F 0x0 0x14 [14,7] 0b 0x0 0x1 0x8B3C0C [0x1F,0x0,0x0,0x0] [0x0,0x12,0x2,0x0]
UNIT 0x80 0x3F 0x0 0x14 [14,7] 0b 0x0 0x0 0x8B3C0C [0x1F,0x0,0x0,0x0] [0x0,0x12,0x2,0x0]
UNIT

//The next line is for re-assembling purposes. Do not delete!
MESSAGE Original ending offset is $8B3CA0 and the new ending offset is CURRENTOFFSET

label28:
UNIT 0xC5 0x73 0x0 0x8 [13,3] 0b 0x0 0x0 0x0 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x1 0x2 0x0 0x8 [14,4] 0b 0x0 0x0 0x0 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x2 0x7 0x0 0x8 [15,4] 0b 0x0 0x0 0x0 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x5 0xB 0x0 0x8 [11,7] 0b 0x0 0x0 0x0 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x6 0xB 0x0 0x8 [15,7] 0b 0x0 0x0 0x0 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x3 0x9 0x0 0x8 [7,14] 0b 0x0 0x0 0x0 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0xC0 0x9 0x0 0x8 [10,14] 0b 0x0 0x0 0x0 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x4 0x5 0x0 0x8 [11,4] 0b 0x0 0x0 0x0 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT

label29:
UNIT 0xF 0x4E 0x0 0x8 [9,15] 0b 0x0 0x3 0x8B3CA0 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT

label32:
UNIT 0x6B 0xB 0x0 0xC [13,10] 0b 0x0 0x1 0x8B3CB8 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x40 0x4F 0x0 0xC [12,11] 0b 0x0 0x1 0x8B3CC0 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT

label30:
UNIT 0x80 0x2D 0x0 0xC [5,1] 0b 0x0 0x1 0x8B3CC8 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x80 0x2D 0x0 0xC [5,2] 0b 0x0 0x1 0x8B3CD0 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x80 0x2F 0x0 0xD [19,10] 0b 0x0 0x1 0x8B3CD8 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x80 0x2F 0x0 0xD [20,10] 0b 0x0 0x1 0x8B3CE0 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT

label31:
UNIT 0x83 0x35 0x0 0xC [10,10] 0b 0x0 0x1 0x8B3CE8 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x83 0x35 0x0 0xC [16,10] 0b 0x0 0x1 0x8B3CF0 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x84 0x7 0x0 0xC [10,10] 0b 0x0 0x1 0x8B3CF8 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x84 0x7 0x0 0xC [16,10] 0b 0x0 0x1 0x8B3D00 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x85 0x29 0x0 0xC [10,10] 0b 0x0 0x1 0x8B3D08 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x85 0x29 0x0 0xC [16,10] 0b 0x0 0x1 0x8B3D10 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT

//The next line is for re-assembling purposes. Do not delete!
MESSAGE Original ending offset is $8B3F20 and the new ending offset is CURRENTOFFSET

label33:
UNIT 0x2 0x7 0x0 0x8 [9,3] 0b 0x0 0x2 0x8B3F20 [0x3,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x4 0x5 0x0 0x8 [9,3] 0b 0x0 0x2 0x8B3F30 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x1 0x2 0x0 0x8 [6,5] 0b 0x0 0x1 0x8B3F40 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT

label34:
UNIT 0x45 0x23 0x0 0x2C [14,5] 0b 0x0 0x2 0x8B3F48 [0x17,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x80 0x1F 0x0 0xD [14,4] 0b 0x0 0x1 0x8B3F58 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x80 0x1F 0x0 0xD [14,6] 0b 0x0 0x1 0x8B3F60 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x80 0x1F 0x0 0xD [14,6] 0b 0x0 0x0 0x8B3F60 [0x0,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT

//The next line is for re-assembling purposes. Do not delete!
MESSAGE Original ending offset is $8B4008 and the new ending offset is CURRENTOFFSET

TurnBasedEvents:
TURN 0x0 label15 [1,0] 0x8
TURN 0x0 label16 [2,0] 0x0
TURN 0x0 label17 [3,0] 0x0
TURN 0x8 label18 [1,255] 0x8
END_MAIN

CharacterBasedEvents:
END_MAIN

LocationBasedEvents:
END_MAIN

MiscBasedEvents:
AFEV 0x3 EndingScene 0x2
AFEV 0x7 label19 0x0
AFEV 0x0 label20 0x65
END_MAIN

Dunno1:
END_MAIN

Dunno2:
END_MAIN

Dunno3:
END_MAIN

Tutorial:
WORD 0x89EF2B0 0x89EF328 0x89EF388 0x89EF398
WORD 0x89EF46C 0x89EF4EC 0x89EF50C 0x89EF53C
WORD 0x89EF56C 0x89EF5A8 0x89EF6E0 0x89EF758
WORD 0x89EF7B8 0x89EF7C8 0x89EF7FC
END_MAIN



label24:
_0x1927
_SETCONDITION 0x0 0xC 0x0
_CALL_HELL
ENIF 0x0
ENDA

//The next line is for re-assembling purposes. Do not delete!
MESSAGE Original ending offset is $9EE0DC and the new ending offset is CURRENTOFFSET

label22:
_0x0320 0x8
_SETCONDITION2 0x80BD 0xC 0x0
FADI 16
ENIF 0x80BD
TEXTSTART
_0x2220
FADU 16
ENDA

label21:
_0x0320 0x8
_SETCONDITION2 0x80D2 0xC 0x0
FADI 16
ENIF 0x80D2
_0x1A21
_0x2140 0xFFFF 0x0 0x0
FADU 16
ENDA

label25:
CALL label21
_0x0620 0x32
TEXTSHOW 0xFFFF
TEXTEND
CALL label22
ENDA

//The next line is for re-assembling purposes. Do not delete!
MESSAGE Original ending offset is $9EE330 and the new ending offset is CURRENTOFFSET

BeginningScene:
CALL label23
_SETVAL 0x2 0x89EF1BC
CALL label24
_0x1927
_SETCONDITION2 0x0 0xC 0x0
ASMC 0xCF461
ENIF 0x0
_0x0229 0x8
_LOAD1 0x1 Units1
ENUN
_SETVAL 0x1 0xD
_0x3425 0x2
CUMO 0x1
STAL 60
CURE
MUNO
_SETVAL 0x2 0x1D
_SETVAL 0x3 0x90D
CALL label25
MUSI
_MOVE 0x18 0x2 [4,4]
ENUN
CUMO 0x2
STAL 60
CURE
TEXTSTART
TEXTSHOW 0x90E
TEXTEND
REMA
_SETVAL 0x2 0x89EF27C
CALL label24
_WARP 0x0 0x1 [4,5]
ENUN
CALL label26
CALL label27
_0x0228 0x7
ENDA

label23:
_SETVAL 0xB 0xA000E
LOMA 0x10
_LOAD2 0x1 label28
ENUN
FADU 16
MUS1 0x26
TEX8 0x664 [8,8]
_LOAD1 0x1 label29
ENUN
_0x2620 0xE
CUMO 0xF
STAL 60
CURE
TEXTSTART
TEXTSHOW 0x903
TEXTEND
REMA
MOVE 0xF [13,11]
ENUN
DISA 0xF
_MOVE2 0x0 0x1 0x0
ENUN
CUMO 0x1
STAL 60
CURE
TEXTSTART
TEXTSHOW 0x904
TEXTEND
REMA
_MOVE1 0x0 0x2 0x1
ENUN
DISA 0x1
CUMO 0x2
STAL 60
CURE
TEXTSTART
TEXTSHOW 0x905
TEXTEND
REMA
MOVE 0x2 [13,11]
_SETVAL 0xD 0x0
_SETVAL 0x1 0x10C
_SAVEFORBATTLE
_SETVAL 0x1 0x0
_SAVEFORBATTLE
_SETVAL 0x1 0x2CC
_SAVEFORBATTLE
_SETVAL 0x1 0x0
_SAVEFORBATTLE
_MOVE3 0x0 0x4 0x0
ENUN
DISA 0x2
DISA 0x4
MOVE 0x5 [11,4]
MOVE 0x6 [15,4]
ENUN
_MOVE2 0x0 0x5 0x1
_MOVE2 0x0 0x6 0x0
ENUN
_LOAD1 0x1 label30
ENUN
_LOAD1 0x1 label31
ENUN
_LOAD1 0x1 label32
ENUN
CUMO 0xC5
STAL 60
CURE
TEXTSTART
TEXTSHOW 0x906
TEXTEND
FADI 2
REMA
_0x0220 0x2
_0x342A 0x0
_0x342C 0x0
_0x342B 0x0
_SETVAL 0xB 0x0
LOMA 0x40
FADU 16
_LOAD2 0x1 label33
ENUN
CUMO 0x2
STAL 60
CURE
_SETVAL 0x2 0x1D
_SETVAL 0x3 0x907
CALL label25
_SETVAL 0xD 0x0
_SETVAL 0x1 0x104
_SAVEFORBATTLE
_SETVAL 0x1 0x0
_SAVEFORBATTLE
_SETVAL 0x1 0x84
_SAVEFORBATTLE
_SETVAL 0x1 0x0
_SAVEFORBATTLE
_SETVAL 0x1 0x80
_SAVEFORBATTLE
_SETVAL 0x1 0x0
_SAVEFORBATTLE
_MOVE3 0x0 0x4 0x0
ENUN
DISA 0x4
CUMO 0x2
STAL 60
CURE
_SETVAL 0x2 0x1D
_SETVAL 0x3 0x908
CALL label25
_LOAD1 0x1 label34
ENUN
_MOVE2 0x0 0x2 0x1
ENUN
_MOVE2 0x0 0x1 0x0
ENUN
CUMO 0x45
STAL 60
CURE
_SETVAL 0x2 0x1D
_SETVAL 0x3 0x909
CALL label25
_MOVE2 0x0 0x45 0x0
ENUN
_SETVAL 0xD 0x0
_SETVAL 0x1 0x20000
_SAVEFORBATTLE
_SETVAL 0x1 0x1
_SAVEFORBATTLE
_SETVAL 0x1 0xFFFFFFFF
_SAVEFORBATTLE
FIG1 0x2 0x45 0x0
CUMO 0x2
STAL 60
CURE
TEXTSTART
TEXTSHOW 0x90B
TEXTEND
REMA
_MOVE2 0x8 0x2 0x0
ENUN
DISA 0x1
_SETVAL 0xD 0x0
_SETVAL 0x1 0x18104
_SAVEFORBATTLE
_SETVAL 0x1 0x0
_SAVEFORBATTLE
_SETVAL 0x1 0x18084
_SAVEFORBATTLE
_SETVAL 0x1 0x0
_SAVEFORBATTLE
_SETVAL 0x1 0x18080
_SAVEFORBATTLE
_SETVAL 0x1 0x0
_SAVEFORBATTLE
_MOVE3 0x0 0x2 0x0
ENUN
DISA 0x2
CUMO 0x45
STAL 60
CURE
TEXTSTART
TEXTSHOW 0x90C
TEXTEND
REMA
FADI 16
_0x0220 0x2
_0x342A 0x0
_0x342C 0x0
_0x342B 0x0
_SETVAL 0xB 0x0
LOMA 0x0
FADU 16
ENDA

label26:
CUMO 0x2
STAL 60
CURE
TEXTSTART
TEXTSHOW 0x90F
TEXTEND
REMA
CALL label35
_SETVAL 0x3 0x9
_GIVEITEMTO 0x1
_SETVAL 0x2 0x89EF828
CALL label24
ENDA

label27:
_LOAD1 0x1 label36
ENUN
CUMO 0x68
STAL 60
CURE
MUS1 0x13
TEXTSTART
TEXTSHOW 0x910
TEXTEND
REMA
_0x0221 0x4
ENDA

label19:
_0x1924
_SETVAL 0x7 0x1
_SETCONDITION2 0x0 0xC 0x7
CUMO 0x2
STAL 60
CURE
TEXTSTART
TEXTSHOW 0x913
TEXTEND
REMA
_0x0221 0x8
ELSE 0x1
ENIF 0x0
_0x1929
_0x0620 0xC2
_0x0221 0xFFFF
ENIF 0x1
_0x0228 0x7
ENDA

label18:
MUS1 0x13
TEXTSTART
TEXTSHOW 0x914
TEXTEND
REMA
_0x1927
_SETCONDITION2 0x0 0xC 0x0
_SETVAL 0x1 0x0
_0x3920 0x68
ENIF 0x0
_0x0228 0x7
ENDA

EndingScene:
MUS1 0x31
_SETVAL 0x2 0x1D
CALL label21
TEXTSHOW 0x918
TEXTEND
FADI 16
REMA
_0x0229 0xE0
_0x0229 0xE1
_0x0229 0xB7
_0x0229 0xB4
_0x0229 0xB5
_0x0229 0xDC
_0x0229 0xB9
_0x0229 0xC2
_0x0229 0xC3
_0x0229 0xE7
_0x0229 0xC9
MNC2 0x1
ENDA

//The next line is for re-assembling purposes. Do not delete!
MESSAGE Original ending offset is $9EF1BC and the new ending offset is CURRENTOFFSET

label15:
_SETVAL 0x2 0x89EF0A4
CALL label24
_SETVAL 0x2 0x89EF3B4
CALL label24
_0x0228 0x7
ENDA

label16:
_SETVAL 0x2 0x89EF3D8
CALL label24
_0x0228 0x7
ENDA

label17:
_SETVAL 0x2 0x89EF610
CALL label24
_SETVAL 0x2 0x89EF670
CALL label24
_0x0228 0x7
ENDA

Traps1:
ENDTRAP

Traps2:
ENDTRAP

//The next line is for re-assembling purposes. Do not delete!
MESSAGE Original ending offset is $9EF27C and the new ending offset is CURRENTOFFSET
 

Oh, and you can take out those comments about not deleting certain lines. I was too lazy to delete them all.

Edited by Primefusion
Link to comment
Share on other sites

Well I finally managed to fix the problem in a lesser elegant way. I can't tell why your Ending_event worked and not mine despite having the same code. Anyway, I just replaced CALL by JUMP and modified slightly the code to be sure there weren't two MNCH in the same offset, and that seemed to work.

Thanks a lot anyway !

FYI here's the piece of code that finally got to work with me. I still have to check the condition over Matthew's death, though.

Ending_event:
MUS1 0x0038
FADI 10
BACG 0x22
FADU 10
TEX1 0x084B
REMA
ITGC Eliwood Rapier
IFET 0x01 0x10 // If Village A visited
//    IFCD 0x02 Matthew // If Matthew didn't die
JUMP GaidenCode // If conditions fulfilled, trigger GaidenCode
// ENIF 0x02
ELSE 0x03
ENIF 0x01
MoveToChapter(0x03) // If not go to chapter 3
ENIF 0x03
ENDA
 
 
GaidenCode:
FADI 10
BACG 0x22
FADU 10
TEX1 0x084C
REMA
TEX6 0x7 [0,0] 0x09A5
_ASM0x42 0x83181
IFYN 0x04 // Choose to go to Ch2x
    JUMP GaidenScene
ENIF 0x04
JUMP NotGaidenScene // Choose not to got to Ch2x
ENDA
 
GaidenScene:
FADI 10
BACG 0x22
FADU 05
TEX1 0x084D
REMA
MoveToChapter(0x08) // Ch2x
ENDA
 
NotGaidenScene:
FADI 10
BACG 0x22
FADU 05
TEX1 0x084E
REMA
MoveToChapter(0x03)
ENDA

Edited by Homasa
Link to comment
Share on other sites

Edit: SOLVED. Ignore this message

I have a problem making EA work.

Opening "Event Assembler.exe" causes this error:

You need to install .NET Framework v4.0.30319

Going to the properties of Mscoree.dll

it says that MicrosoftTM.NET Framework is version 4.0.40305.0

How can I fix that? Does it have to be the specific v4.0.30319?

Because there's nowhere to be found on the net.

Edited by BrightVega
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...