Author Topic: Hall of Wonders crash  (Read 7221 times)

Offline +3 Pen

  • Planewalker
  • *****
  • Posts: 51
Hall of Wonders crash
« on: March 12, 2007, 10:50:34 PM »
I'm running EasyTutu.  Up until now, the only crashes were upon leaving Beregost, but as the readme file mentioned these, I was prepared.  Has anyone else had difficulties with the HofW, however?  Any help would be appreciated.  Thanks.

Offline Kulyok

  • Global Moderator
  • Planewalker
  • *****
  • Posts: 6253
  • Gender: Female
  • The perfect moment is now.
Re: Hall of Wonders crash
« Reply #1 on: March 13, 2007, 03:06:13 AM »
I had it, too, once or twice. (Maybe it has something to do with Alora the Swashbuckler from EasyTutuKits? Though it was a while ago, and I'm afraid my logfile is long gone). What happens if you install "Move Alora to Gullykin" from BG1 NPC Project? Maybe it'll help?

Offline Macready

  • Moderator
  • Planewalker
  • *****
  • Posts: 1801
    • EasyTutu
Re: Hall of Wonders crash
« Reply #2 on: March 13, 2007, 05:20:32 AM »
Hello -

This is the first time anyone has reported such trouble.  Can you reproduce the crash?  If so, please post the steps.  Is it a your-savegame-is-trashed-too sort of crash (a la Beregost), or just a reload and continue situation?
EasyTutu: Tutu installation made simple.

Offline +3 Pen

  • Planewalker
  • *****
  • Posts: 51
Re: Hall of Wonders crash
« Reply #3 on: March 13, 2007, 07:36:22 AM »
Hello -

This is the first time anyone has reported such trouble.  Can you reproduce the crash?  If so, please post the steps.  Is it a your-savegame-is-trashed-too sort of crash (a la Beregost), or just a reload and continue situation?

It's an I-can-continue-playing-with-any-savegame kind of crash.  Thus far, the HoW is the only place that crashes upon entry.  The load screen starts, and then I crash to the desktop.  It happens without fail, if I try to enter the HoW.

Quote
I had it, too, once or twice. (Maybe it has something to do with Alora the Swashbuckler from EasyTutuKits? Though it was a while ago, and I'm afraid my logfile is long gone). What happens if you install "Move Alora to Gullykin" from BG1 NPC Project? Maybe it'll help?

I'm not running EasyTutuKits, but am running BG1 NPC Project.  I'd already had the Move Alora to Gullykin option installed.
« Last Edit: March 13, 2007, 12:21:49 PM by +3 Pen »

Offline +3 Pen

  • Planewalker
  • *****
  • Posts: 51
Re: Hall of Wonders crash
« Reply #4 on: March 13, 2007, 02:23:12 PM »
I found a solution.  I mention it up here, just in case somebody else runs into the same problem, or finds a similar problem.

I've installed the full game to use through EasyTutu, so I've been playing with only the ToB disc in my R: drive.  (R: for read, W: for write.)  I had to remove discs from both drives earlier today, however, since I was doing a one-on-one comparison of a single work of music performed by different pianists.  Then I decided to load the game--and got the error message about putting my disc in the W: drive.

This got me thinking: the game loaded perfectly each time I played from the R: drive.  But what if, for some reason, it required the W: drive to play when I loaded the HoW?  Makes no sense at all, so worth trying. ;) I did that--and the HoW loaded perfectly.

Moved the disc back to the R: drive, tried again--and was dropped unceremoniously back to the desktop.

Very strange, but at least it's resolved.
« Last Edit: March 13, 2007, 03:00:32 PM by +3 Pen »

Offline Macready

  • Moderator
  • Planewalker
  • *****
  • Posts: 1801
    • EasyTutu
Re: Hall of Wonders crash
« Reply #5 on: March 13, 2007, 06:24:27 PM »
Hello -

I found a solution.  I mention it up here, just in case somebody else runs into the same problem, or finds a similar problem.

I've installed the full game to use through EasyTutu, so I've been playing with only the ToB disc in my R: drive.  (R: for read, W: for write.)  I had to remove discs from both drives earlier today, however, since I was doing a one-on-one comparison of a single work of music performed by different pianists.  Then I decided to load the game--and got the error message about putting my disc in the W: drive.

This got me thinking: the game loaded perfectly each time I played from the R: drive.  But what if, for some reason, it required the W: drive to play when I loaded the HoW?  Makes no sense at all, so worth trying. ;) I did that--and the HoW loaded perfectly.

Moved the disc back to the R: drive, tried again--and was dropped unceremoniously back to the desktop.

Very strange, but at least it's resolved.

Huh.  May I ask which drive was used to install BG2 / ToB originally?
EasyTutu: Tutu installation made simple.

Offline +3 Pen

  • Planewalker
  • *****
  • Posts: 51
Re: Hall of Wonders crash
« Reply #6 on: March 13, 2007, 08:27:38 PM »
Hello -

I found a solution.  I mention it up here, just in case somebody else runs into the same problem, or finds a similar problem.

I've installed the full game to use through EasyTutu, so I've been playing with only the ToB disc in my R: drive.  (R: for read, W: for write.)  I had to remove discs from both drives earlier today, however, since I was doing a one-on-one comparison of a single work of music performed by different pianists.  Then I decided to load the game--and got the error message about putting my disc in the W: drive.

This got me thinking: the game loaded perfectly each time I played from the R: drive.  But what if, for some reason, it required the W: drive to play when I loaded the HoW?  Makes no sense at all, so worth trying. ;) I did that--and the HoW loaded perfectly.

Moved the disc back to the R: drive, tried again--and was dropped unceremoniously back to the desktop.

Very strange, but at least it's resolved.

Huh.  May I ask which drive was used to install BG2 / ToB originally?

R: drive.

But in any case, I wrote too soon.  The condition has returned.  After allowing me access repeatedly to the HoW, I'm crashing again to the desktop.  At the moment, I'm trying to find some point that separates the two.  Either it's random, which is no good at all, since there's little possibility of tracking anything, or some condition has changed.  Possibly the defining factor is day vs nighttime.  (I'm currently crashing at night, and a couple of saves made earlier the same day still load fine, and allow me to exit and reenter the building.)  Of course, it could be any number of things.  Sheesh. :(

EDIT: The error is listed as occurring in bgmain.exe.  It also states Offset: 004d7d6a, for whatever that's worth.
« Last Edit: March 13, 2007, 09:17:42 PM by +3 Pen »

Offline +3 Pen

  • Planewalker
  • *****
  • Posts: 51
Re: Hall of Wonders crash
« Reply #7 on: March 15, 2007, 01:36:02 PM »
The error appears to be tied to time of entry.  If I attempt to enter the HoW during daytime, there's no problem.  If I attempt to enter at night, I crash.  The only variable I've used is sleeping at the tavern in the NW section of town.

Any ideas?

Offline Macready

  • Moderator
  • Planewalker
  • *****
  • Posts: 1801
    • EasyTutu
Re: Hall of Wonders crash
« Reply #8 on: March 15, 2007, 04:19:43 PM »
Hello -

I'd be interested in hearing if you could duplicate this error on a clean EasyTutu installation.

I'll take a look at the area.  Perhaps some sort of ambient sound issue?  I'll let you know if I find anything, or if I am able to replicate the crash behavior.
EasyTutu: Tutu installation made simple.

Offline Macready

  • Moderator
  • Planewalker
  • *****
  • Posts: 1801
    • EasyTutu
Re: Hall of Wonders crash
« Reply #9 on: March 15, 2007, 08:24:18 PM »
Hello -

The Hall of Wonders has script code for Alora which is keyed to run at night.  I'm beginning to suspect the "move Alora" component of BG1NPC.

If you have the time, disk space, and inclination, I'd very much like to see if you're able to replicate the error on a clean (sans BG1NPC) install.  If you try, simply activate debug mode on the clean installation, and CLUA your way to FW0130.
EasyTutu: Tutu installation made simple.

Offline +3 Pen

  • Planewalker
  • *****
  • Posts: 51
Re: Hall of Wonders crash
« Reply #10 on: March 18, 2007, 04:53:48 PM »
I would have replied sooner, but was out of town with no Internet connection. :(

Unfortunately, I don't have the space for another install.  If the move Alora component is the problem, would simply running BG1NPC again and reversing the current Alora placement solve the problem?  That I can certainly do.

Offline cmorgan

  • Planewalker
  • *****
  • Posts: 1424
  • Gender: Male
  • Searcher of Bugs
Re: Hall of Wonders crash
« Reply #11 on: March 18, 2007, 05:12:16 PM »
It might, but then I'd miss out on the data necessary to make sure it never happens again to anyone!

But sure - go ahead and pull that out, and see if it still happens.

Offline Macready

  • Moderator
  • Planewalker
  • *****
  • Posts: 1801
    • EasyTutu
Re: Hall of Wonders crash
« Reply #12 on: March 18, 2007, 07:36:34 PM »
Hello -

Isn't relocating NPCs done by altering the .GAM file?  I believe that file is cached in the savegame, so the horse is already out of the barn.
EasyTutu: Tutu installation made simple.

Offline cmorgan

  • Planewalker
  • *****
  • Posts: 1424
  • Gender: Male
  • Searcher of Bugs
Re: Hall of Wonders crash
« Reply #13 on: March 18, 2007, 08:39:12 PM »
You may be right, at that. I can't see anything that could go wrong, though, with that code... I am stumped as to what we could have done to cause this. It just seems suspicious that it is Hall of Wonders, and we move Alora from there and pathc her .BCS.

Offline Da_venom

  • Planewalker
  • *****
  • Posts: 617
  • Gender: Male
  • No one escapes death
Re: Hall of Wonders crash
« Reply #14 on: March 19, 2007, 05:03:37 AM »
isn't it a bit sloppy too? Because if it was the code that keyed her to move at night, wasn't been removed is kinda  :-X

;-) but anyone can make mistakes;-) I diidn't prefer that part of the bg1npc project anyway leave all npc's at their normal location no problems at all;-)

I do have some random crashes though, and not to mention the ruins in the firewins bridge but that's posted into another thread.

I don't know if this is tutu related or not but when i do alt+tab (switch from program) and return to too the inferface bar keeps flickering until i go to options and return to the game(sometimes i also see my desktop in there lol)

Offline +3 Pen

  • Planewalker
  • *****
  • Posts: 51
Re: Hall of Wonders crash
« Reply #15 on: March 19, 2007, 12:13:58 PM »
Didn't work, unfortunately.  If you want a copy of the saved game, just let me know where to send it.

Grand_dracolich

  • Guest
Re: Hall of Wonders crash
« Reply #16 on: March 19, 2007, 03:09:17 PM »
I don't know if this is tutu related or not but when i do alt+tab (switch from program) and return to too the inferface bar keeps flickering until i go to options and return to the game(sometimes i also see my desktop in there lol)

That's a BG2 3D Accelleration quirk, I get that all the time in Tutu and BG2. You can still alt+tab by hitting the button that brings up the start menu on your keyboard.

Offline cmorgan

  • Planewalker
  • *****
  • Posts: 1424
  • Gender: Male
  • Searcher of Bugs
Re: Hall of Wonders crash
« Reply #17 on: March 19, 2007, 04:48:52 PM »
cmorgan email: please change the appropriate english words to the appropriate signs, but leave the following email address anone so random spambots can't lift it:

svowles  at   comcast    dot    net :)

Offline Da_venom

  • Planewalker
  • *****
  • Posts: 617
  • Gender: Male
  • No one escapes death
Re: Hall of Wonders crash
« Reply #18 on: March 19, 2007, 07:04:29 PM »
I don't know if this is tutu related or not but when i do alt+tab (switch from program) and return to too the inferface bar keeps flickering until i go to options and return to the game(sometimes i also see my desktop in there lol)

That's a BG2 3D Accelleration quirk, I get that all the time in Tutu and BG2. You can still alt+tab by hitting the button that brings up the start menu on your keyboard.

can't recall i had it in bg2 though...
;-)

Offline +3 Pen

  • Planewalker
  • *****
  • Posts: 51
Re: Hall of Wonders crash
« Reply #19 on: March 19, 2007, 07:30:10 PM »
cmorgan email: please change the appropriate english words to the appropriate signs, but leave the following email address anone so random spambots can't lift it:

svowles  at   comcast    dot    net :)


Your check is in the mail.  I mean, the save game is on its way. ;) Whether it can be fixed or not, I hope this helps remove a bug for other players that have yet to discover EasyTutu.  Damn fine product.
« Last Edit: March 19, 2007, 09:57:58 PM by +3 Pen »

U235

  • Guest
Re: Hall of Wonders crash
« Reply #20 on: April 08, 2007, 08:18:09 PM »
Interesting. My problem is the exact opposite. I can go in at night, but not during the day.

Offline cmorgan

  • Planewalker
  • *****
  • Posts: 1424
  • Gender: Male
  • Searcher of Bugs
Re: Hall of Wonders crash
« Reply #21 on: April 08, 2007, 10:15:17 PM »
No luck here, I'm afraid... we seem to do everything fine, and close everything that could crash off. It might not be us after all, but I can't see what would do this at all :(.

Offline Macready

  • Moderator
  • Planewalker
  • *****
  • Posts: 1801
    • EasyTutu
Re: Hall of Wonders crash
« Reply #22 on: April 09, 2007, 05:15:38 AM »
Hello -

Interesting. My problem is the exact opposite. I can go in at night, but not during the day.

Is your installation modded?  If so, please copy/paste the contents of the weidu.log file from your EasyTutu folder into your next reply.

I'm still interested in hearing if anyone can duplicate this error on a clean EasyTutu installation.
EasyTutu: Tutu installation made simple.

samk

  • Guest
Re: Hall of Wonders crash
« Reply #23 on: April 09, 2007, 05:29:45 PM »
I had this problem every time alora, after I refused to let her join my party, attempted to walk away and disappear. I eventually just accepted her in my party and then dropped her again right away and it didn't crash.

Offline cmorgan

  • Planewalker
  • *****
  • Posts: 1424
  • Gender: Male
  • Searcher of Bugs
Re: Hall of Wonders crash
« Reply #24 on: April 09, 2007, 06:07:56 PM »
Folks, I can promise you that both Macready and I will be *very* interested in helping track this down, if you can come up with a WeiDU.LOG and hopefully a savegame, or at least an indication if this is on unmodded or unmodded installs. Withour these minimum, you are asking us to troubleshoot a custom-built offroad ATV by the sound of it racing past us in the middle of a meet. Not much we can do...

good info on the "join her up" to fix her, though, as it points to something besides moving her. That means that something is probably wrong with her initial script. That still could be us. I will return with a decompiled BCS.

Unmodded EasyTutu -- ain't no problem here,
Code: [Select]
IF
  See([PC])
  NumberOfTimesTalkedTo(0)
THEN
  RESPONSE #100
    Dialog([PC])
END

IF
  False()
THEN
  RESPONSE #100
    Activate(Myself)
END

IF
  False()
THEN
  RESPONSE #100
    Deactivate(Myself)
END
_ALORA.BCS EasyTutu after UB, BG1NPC, and SCS (0 level NPC only)...
Code: [Select]
IF
  RealGlobalTimerExpired("CRoReactionTime","GLOBAL") //BG1NPC, no problem
  InParty(Myself)
  Global("CoRomReaction","GLOBAL",1)
  !Global("CoranRomanceInactive","GLOBAL",1)
  Global("CoranMatch","GLOBAL",1)
  Global("CoranFriend","GLOBAL",1)
  !StateCheck(Myself,CD_STATE_NOTVALID)
  !StateCheck(Player1,CD_STATE_NOTVALID)
  See(Player1)
  CombatCounter(0)
  !See([ENEMY])
  Global("CRAL1","GLOBAL",0)
THEN
  RESPONSE #100
    SetGlobal("CRAL1","GLOBAL",1)
    Interact(Player1)
END

IF
  Global("CRAL1","GLOBAL",1)   //ditto
  InParty(Myself)
  !StateCheck(Myself,CD_STATE_NOTVALID)
  !StateCheck(Player1,CD_STATE_NOTVALID)
THEN
  RESPONSE #100
    Interact(Player1)
END

IF
  InParty(Myself)
  Global("DreamTimerStarted","GLOBAL",0)  //Ditto
THEN
  RESPONSE #100
    RealSetGlobalTimer("DreamTalk","GLOBAL",THREE_TURNS)
    SetGlobal("DreamTimerStarted","GLOBAL",1)
END

IF
  InParty(Myself)
  Global("AlPCTimerStarted","GLOBAL",0)
THEN
  RESPONSE #100
    RealSetGlobalTimer("AlFriendTalkTime","GLOBAL",AJROM_TIMER) //Ditto (don't worry, custom .ids entry
    SetGlobal("AlPCTimerStarted","GLOBAL",1)
END

IF
  InParty(Myself)
  CombatCounter(0)
  !See([ENEMY])
  RealGlobalTimerExpired("AlFriendTalkTime","GLOBAL") //ditto
  Global("AlFriendTalk","GLOBAL",0)
  AreaType(CITY)
THEN
  RESPONSE #100
    PlaySong(0)
    PlaySound("alora99")
    IncrementGlobal("AlFriendTalk","GLOBAL",1)
    RealSetGlobalTimer("AlFriendlyTalkTime","GLOBAL",ONE_MINUTE)
    StartDialogNoSet(Player1)
END

IF
  InParty(Myself)
  RealGlobalTimerExpired("AlFriendlyTalkTime","GLOBAL")
  Global("AlFriendTalk","GLOBAL",1)
THEN
  RESPONSE #100
    IncrementGlobal("AlFriendTalk","GLOBAL",1)
    RealSetGlobalTimer("AlFriendTalkTime","GLOBAL",TWELVE_HOURS) //ditto
END

IF
  RealGlobalTimerExpired("AlFriendTalkTime","GLOBAL") //ditto
  InParty(Myself)
  CombatCounter(0)
  !See([ENEMY])
  InParty("imoen")  // ~Imoen~
  Global("AlFriendTalk","GLOBAL",2)
  AreaType(CITY)
THEN
  RESPONSE #100
    PlaySong(0)
    PlaySound("alora99")
    IncrementGlobal("AlFriendTalk","GLOBAL",1)
    RealSetGlobalTimer("AlFriendlyTalkTime","GLOBAL",ONE_MINUTE)
    StartDialogNoSet(Player1)
END

IF
  InParty(Myself)
  RealGlobalTimerExpired("AlFriendlyTalkTime","GLOBAL") //ditto
  Global("AlFriendTalk","GLOBAL",3)
THEN
  RESPONSE #100
    IncrementGlobal("AlFriendTalk","GLOBAL",1)
    RealSetGlobalTimer("AlFriendTalkTime","GLOBAL",18000)
END

IF
  See([PC])   //Original Block
  NumberOfTimesTalkedTo(0)
THEN
  RESPONSE #100
    Dialog([PC])
END

IF
  False()
THEN
  RESPONSE #100
    Activate(Myself)
END

IF
  False()
THEN
  RESPONSE #100
    Deactivate(Myself)
END

IF
  !Global("DMWWLevelUpWarning","LOCALS",1)  //level up SCS
  InParty(Myself)
  CheckStatGT(Myself,0,LEVEL)
THEN
  RESPONSE #100
    SetGlobal("DMWWLevelUpWarning","LOCALS",1)
    SetGlobal("DMWWLevelUp","LOCALS",1)
END

IF
  !Global("DMWWLevelUpWarning","LOCALS",1) //level up SCS
  Class(Myself,RANGER_ALL)
  InParty(Myself)
  CheckStat(Myself,0,LEVEL)
THEN
  RESPONSE #100
    DisplayStringHead(Myself,118363)  // ~This character is now level 0. Level them up to choose their initial proficiencies and skills. (Until you do this, their hit points and equipment may be a little odd; don't worry about this. Once you level them up, they may gain more levels (depending on your own experience).~
    SetGlobal("DMWWLevelUpWarning","LOCALS",1)
    ApplySpellRES("dw#rang",Myself)  // <Invalid Strref -1>
END

IF
  !Global("DMWWLevelUpWarning","LOCALS",1) //level up SCS
  !Class(Myself,RANGER_ALL)
  InParty(Myself)
  CheckStat(Myself,0,LEVEL)
THEN
  RESPONSE #100
    DisplayStringHead(Myself,118363)  // ~This character is now level 0. Level them up to choose their initial proficiencies and skills. (Until you do this, their hit points and equipment may be a little odd; don't worry about this. Once you level them up, they may gain more levels (depending on your own experience).~
    SetGlobal("DMWWLevelUpWarning","LOCALS",1)
END

IF
  !Global("DMWWLevelUp","LOCALS",1) //level up SCS
  CheckStat(Myself,1,LEVEL)
  InParty(Myself)
  XPGT(Player1,32000)
THEN
  RESPONSE #100
    SetGlobal("DMWWLevelUp","LOCALS",1)
    ApplySpell(Myself,RESTORE_FULL_HEALTH)
    ApplySpellRES("dw#hp",Myself)  // <Invalid Strref -1>
    DestroyItem("dw#npcl0")  // ~Long Sword~
    AddXPObject(Myself,32000)
END

IF
  !Global("DMWWLevelUp","LOCALS",1) //level up SCS
  CheckStat(Myself,1,LEVEL)
  InParty(Myself)
  XPGT(Player1,16000)
THEN
  RESPONSE #100
    SetGlobal("DMWWLevelUp","LOCALS",1)
    ApplySpell(Myself,RESTORE_FULL_HEALTH)
    ApplySpellRES("dw#hp",Myself)  // <Invalid Strref -1>
    DestroyItem("dw#npcl0")  // ~Long Sword~
    AddXPObject(Myself,16000)
END

IF
  !Global("DMWWLevelUp","LOCALS",1) //level up SCS
  CheckStat(Myself,1,LEVEL)
  InParty(Myself)
  XPGT(Player1,8000)
THEN
  RESPONSE #100
    SetGlobal("DMWWLevelUp","LOCALS",1)
    ApplySpell(Myself,RESTORE_FULL_HEALTH)
    ApplySpellRES("dw#hp",Myself)  // <Invalid Strref -1>
    DestroyItem("dw#npcl0")  // ~Long Sword~
    AddXPObject(Myself,8000)
END

IF
  !Global("DMWWLevelUp","LOCALS",1) //level up SCS
  CheckStat(Myself,1,LEVEL)
  InParty(Myself)
  XPGT(Player1,4000)
THEN
  RESPONSE #100
    SetGlobal("DMWWLevelUp","LOCALS",1)
    ApplySpell(Myself,RESTORE_FULL_HEALTH)
    ApplySpellRES("dw#hp",Myself)  // <Invalid Strref -1>
    DestroyItem("dw#npcl0")  // ~Long Sword~
    AddXPObject(Myself,4000)
END

IF
  !Global("DMWWLevelUp","LOCALS",1) //level up SCS
  CheckStat(Myself,1,LEVEL)
  InParty(Myself)
  XPGT(Player1,2000)
THEN
  RESPONSE #100
    SetGlobal("DMWWLevelUp","LOCALS",1)
    ApplySpell(Myself,RESTORE_FULL_HEALTH)
    ApplySpellRES("dw#hp",Myself)  // <Invalid Strref -1>
    DestroyItem("dw#npcl0")  // ~Long Sword~
    AddXPObject(Myself,2000)
END

IF
  !Global("DMWWLevelUp","LOCALS",1) //level up SCS
  CheckStat(Myself,1,LEVEL)
  InParty(Myself)
THEN
  RESPONSE #100
    SetGlobal("DMWWLevelUp","LOCALS",1)
    ApplySpell(Myself,RESTORE_FULL_HEALTH)
    ApplySpellRES("dw#hp",Myself)  // <Invalid Strref -1>
    DestroyItem("dw#npcl0")  // ~Long Sword~
    AddXPObject(Myself,1)
END
Hall of Wonders Area Script: Identical on both Modded and Unmodded EasyTutu
Code: [Select]
IF
  OR(2)
    TimeGT(20)
    TimeLT(4)
  Exists("Alora")  // Alora
  Global("J#AloraInactive","GLOBAL",1)
THEN
  RESPONSE #100
    SetGlobal("J#AloraInactive","GLOBAL",0)
    Activate("Alora")
END

IF
  TimeGT(4)
  TimeLT(20)
  Exists("Alora")  // Alora
  Global("J#AloraInactive","GLOBAL",0)
THEN
  RESPONSE #100
    SetGlobal("J#AloraInactive","GLOBAL",1)
    Deactivate("Alora")
END

IF
  TimeGT(20)
  False()
THEN
  RESPONSE #100
    Activate("alora")
END

IF
  TimeLT(4)
  False()
THEN
  RESPONSE #100
    Activate("alora")
END

IF
  TimeGT(4)
  TimeLT(20)
  False()
THEN
  RESPONSE #100
    Deactivate("alora")
END

It does look like our code to address issues is not happening on EasyTutu, because it is not needed...
we do
Code: [Select]
    /* Trying to prevent Alora from Stuttering. */
    COPY_EXISTING ~_ALORA.bcs~ ~override~
      DECOMPILE_BCS_TO_BAF
      REPLACE_TEXTUALLY
        ~TimeOfDay(DAY)~ ~AreaCheck("FW0130") NumberOfTimesTalkedTo(0) TimeOfDay(DAY) !InParty(Myself)~
      COMPILE_BAF_TO_BCS
    BUT_ONLY_IF_IT_CHANGES
But since EasyTutu already removes the problem blocks, this will not patch anything - it is left in for Tutu v4.
We have a legacy code block that also pushes at the same issue, identified as a problem in Tutu v4,
Code: [Select]
    /* Trying to prevent Alora's CTD */
  COPY_EXISTING ~_AR0130.bcs~ ~override~
    DECOMPILE_BCS_TO_BAF
    REPLACE_TEXTUALLY
      ~!InParty("alora")~
      ~!InParty("alora") Global("X#AloraDontBeDificult","GLOBAL",1)~
    COMPILE_BAF_TO_BCS
    BUT_ONLY_IF_IT_CHANGES
(This is just another way of creating False(), buy setting an unnatainable condtiton, with the difference that we can "undo" the change via CLUAConsole if it proves to be a problem in testing)... this is going away in the next internal, as obviously EasyTutu does not need it (there is no such entry to patch) and the problem is showing up on both EasyTutu and Tutu v4, which means that it is not the !InParty call that is the problem.

Dialogue should not be able to cause a crash unless there is no actual physically present dialogue file available when a state tries to EXTERN to it, but just in case, here is Alora's unmodified EasyTutu .DLG
Code: [Select]
// creator  : DLTCEP_enhanced_WeiDU (version 199)
// argument : _ALORA.DLG
// game     : .
// source   : ./override/_ALORA.DLG
// dialog   : ./DIALOG.TLK
// dialogF  : (none)

BEGIN ~_ALORA~
//////////////////////////////////////////////////
// WARNING: this file contains non-trivial WEIGHTs
//////////////////////////////////////////////////

IF WEIGHT #1 /* Triggers after states #: 10 even though they appear after this state */
~NumberOfTimesTalkedTo(0)
ReactionGT(LastTalkedToBy,NEUTRAL_UPPER)
~ THEN BEGIN 0 // from:
  SAY #87948 /* ~Oh!  Scared me you did!  I suppose I'm caught then?  Peacefully I'll go, I'm not much for fighting... Wait a minute... Holy Leapin' Lavender Lizards!  You're not the guard!  You're... you're burglaring just like me!  Now this IS exciting!  We should... we should work together!  Yeah!  I could use the help... uh... I mean, we could just help each other a little bit.  Just for this one heist, you keep watch while I point out the good stuff.  You can even keep most of it!  I got a good tip on where to be looking!  Whatcha say?~ */
  IF ~~ THEN REPLY #87949 /* ~That is a good idea.  I'll keep watch and help you.~ */ GOTO 6
  IF ~~ THEN REPLY #87950 /* ~I have no interest in a thief so easily caught.  Off with you!~ */ GOTO 5
  IF ~~ THEN REPLY #87951 /* ~You've seen me!  I'm sorry, but I have to kill you now!~ */ GOTO 11
END

IF WEIGHT #2 /* Triggers after states #: 10 even though they appear after this state */
~NumberOfTimesTalkedTo(0)
ReactionLT(LastTalkedToBy,FRIENDLY_LOWER)
ReactionGT(LastTalkedToBy,HOSTILE_UPPER)
~ THEN BEGIN 1 // from:
  SAY #87952 /* ~Holy Kitty Cacophony, you scared the bejeebers outta me!  Sure it's yer job to catch us thievers, but ye need not give me a heart attack too!  Hey... you're not the guard!  Yeesh!  Getting me all in a tizzy when you're here for the same thing as me.  Well, since you're here, howz about we work together?  Just for this one heist, I mean. You keep watch while I show the stash. I know a secret here and there, but we get equal shares, okay?~ */
  IF ~~ THEN REPLY #87953 /* ~A good plan.  Do what you must and I'll keep watch.~ */ GOTO 6
  IF ~~ THEN REPLY #87950 /* ~I have no interest in a thief so easily caught.  Off with you!~ */ GOTO 5
  IF ~~ THEN REPLY #87951 /* ~You've seen me!  I'm sorry, but I have to kill you now!~ */ GOTO 11
END

IF WEIGHT #3 /* Triggers after states #: 10 even though they appear after this state */
~NumberOfTimesTalkedTo(0)
ReactionLT(LastTalkedToBy,NEUTRAL_LOWER)
~ THEN BEGIN 2 // from:
  SAY #87954 /* ~Wha... !  Aww nutbunnies, caught again!  Hey wait... there's no polish on yer boots; no snap in yer suspenders.  You're... you're not the guard.  They're always so much more... presentable.  Well... be on your way then.  I just wanna grab a few things and... be off.  There's lots for both of us so leave me be.  Hmph... not so much fun if just anyone can bust in here.~ */
  IF ~~ THEN DO ~EscapeArea()
~ EXIT
END

IF WEIGHT #4 /* Triggers after states #: 10 even though they appear after this state */
~NumberOfTimesTalkedTo(1)
ReactionLT(LastTalkedToBy,NEUTRAL_LOWER)
~ THEN BEGIN 3 // from:
  SAY #87955 /* ~Just you leave me to my sneakin'.  I'm not gonna take the big stuff.~ */
  IF ~~ THEN EXIT
END

IF WEIGHT #5 /* Triggers after states #: 10 even though they appear after this state */
~NumberOfTimesTalkedTo(1)
ReactionGT(LastTalkedToBy,NEUTRAL_UPPER)
~ THEN BEGIN 4 // from:
  SAY #87956 /* ~Well if your gonna be puppy-doggin' after me all night, maybe we should work together.  I know this place pretty good; know a few secrets.  Could be fun.  What say you? Wanna keep watch while I scout for pretties?~ */
  IF ~~ THEN REPLY #87957 /* ~Certainly. Do what you must while I will keep watch.~ */ GOTO 6
  IF ~~ THEN REPLY #87950 /* ~I have no interest in a thief so easily caught.  Off with you!~ */ GOTO 5
  IF ~~ THEN REPLY #87951 /* ~You've seen me!  I'm sorry, but I have to kill you now!~ */ GOTO 11
END

IF ~~ THEN BEGIN 5 // from: 7.2 4.1 1.1 0.1
  SAY #87958 /* ~Well!  There's no need to be rude about it!  Hmph!  Never meet nice people in this line of work!  No wonder people hate thieves!  Well, we steal stuff too, BUT BEING JERKS DOESN'T HELP!  Not one bit!  Goodbye!~ */
  IF ~~ THEN DO ~EscapeArea()
~ EXIT
END

IF ~~ THEN BEGIN 6 // from: 4.0 1.0 0.0
  SAY #87959 /* ~Double good and done!  Oh, it'll be great fun having someone around to talk to!  I don't meet many nice people in this trade.  Just because we steal doesn't mean we have to be bad.  Mostly I'm just curious what people have.  Here, I'll point out a few things and then we can get to sneakin.'  He he, such fun!~ */
  IF ~~ THEN DO ~DialogueInterrupt(FALSE)
SetGlobal("AloraLoots","Global",1)
MoveToPoint([769.849])
DialogueInterrupt(TRUE)
~ EXIT
END

IF WEIGHT #6 /* Triggers after states #: 10 even though they appear after this state */
~Global("AloraLoots","Global",1)
~ THEN BEGIN 7 // from:
  SAY #87960 /* ~Pretty good takin's with none too many bruises.  We do pretty good for just meeting!  How about we do this again, like all the time?  Wanna join up permanent?~ */
  IF ~~ THEN REPLY #87961 /* ~A splendid idea!  Welcome aboard.~ */ GOTO 9
  IF ~~ THEN REPLY #87962 /* ~I really am sorry but we've all we need.~ */ GOTO 8
  IF ~~ THEN REPLY #87963 /* ~Laughable!  What do I need you for?  Our job is done, now get lost!~ */ GOTO 5
END

IF ~~ THEN BEGIN 8 // from: 7.1
  SAY #87964 /* ~Ah well, easy go I guess.  Never get to keep my friends in this biz.  Specially the nice ones.  Bye, I guess.~ */
  IF ~~ THEN DO ~EscapeArea()
~ EXIT
END

IF ~~ THEN BEGIN 9 // from: 7.0
  SAY #87965 /* ~Friends we are, and nice ones too!  One for all and things like that!  Fun for all of us, I just KNOW it!~ */
  IF ~~ THEN DO ~JoinParty()
~ EXIT
END

IF WEIGHT #0 ~StateCheck(Myself,STATE_CHARMED)
~ THEN BEGIN 10 // from:
  SAY #87147 /* ~I'm just a thief.  Sorry, but I don't have much to tell.~ */
  IF ~~ THEN EXIT
END

IF ~~ THEN BEGIN 11 // from: 4.2 1.2 0.2
  SAY #87966 /* ~Ahh!  I can't fight ya, but I'll call the guard I will!  Rather be in jail than dead from you!  Help!  Nasty mean and evil!!~ */
  IF ~~ THEN DO ~CreateCreature("_FLAM",[802.905],0)
CreateCreature("_FLAM",[850.886],0)
EscapeArea()
~ EXIT
END

IF WEIGHT #7 ~False()
~ THEN BEGIN 12 // from:
  SAY #87967 /* ~Ahh!  I can't fight ya, but I'll call the guard I will!  Rather be in jail than dead from you!  Help!  Nasty mean and evil!~ */
  IF ~~ THEN DO ~CreateCreature("_FLAM",[802.905],0)
CreateCreature("_FLAM",[850.886],0)
EscapeArea()
~ EXIT
END

IF ~~ THEN BEGIN 13 // from:
  SAY #87146 /* ~If that's the way you want it, then fine, I'll leave!  Sniff...~ */
  IF ~~ THEN DO ~LeaveParty()
EscapeArea()
~ EXIT
END

IF ~~ THEN BEGIN 14 // from:
  SAY #87145 /* ~I don't wanna go, but if yer gonna force me, then I guess I'll just mope around here 'till you come back to your senses and come back for me.~ */
  IF ~~ THEN DO ~LeaveParty()
SetDialogue("_ALORAP")
~ EXIT
END

As a side note, moving Alora does not involve any major changes to this area. It changes her dialogue, by replacing her state triggers for  0, 4, and 5, but that should not have any way to cause a crash.
A "moved, modded Alora gets this...
Code: [Select]
// creator  : DLTCEP_enhanced_WeiDU (version 199)
// argument : _ALORA.DLG
// game     : .
// source   : ./override/_ALORA.DLG
// dialog   : ./DIALOG.TLK
// dialogF  : (none)

BEGIN ~_ALORA~
//////////////////////////////////////////////////
// WARNING: this file contains non-trivial WEIGHTs
//////////////////////////////////////////////////

IF WEIGHT #2 /* Triggers after states #: 16 24 even though they appear after this state */
~NumberOfTimesTalkedTo(0)
!AreaCheck("FW4000")
~ THEN BEGIN 0 // from:
  SAY #91252 /* ~Hey!~ */
  IF ~ReactionGT(LastTalkedToBy,NEUTRAL_UPPER)
~ THEN GOTO 1
  IF ~ReactionLT(LastTalkedToBy,FRIENDLY_LOWER)
ReactionGT(LastTalkedToBy,HOSTILE_UPPER)
~ THEN GOTO 2
  IF ~ReactionLT(LastTalkedToBy,NEUTRAL_LOWER)
~ THEN GOTO 3
END

IF ~~ THEN BEGIN 1 // from: 0.0
  SAY #91253 /* ~Oh! Scared me, you did! I suppose I'm caught, then? I'll go peacefully, I'm not much for fighting... Wait a minute... Holy Leapin' Lavender Lizards! You're not the guard! You're... you're burglaring, just like me! Now this *is* exciting! We should... we should work together! Yeah! I could use the help... uh... I mean, we could just help each other a little bit. Just for this one heist, you keep watch while I point out the good stuff. You can even keep most of it! I got a good tip on where to be looking! Whatcha say?~ */
  IF ~~ THEN REPLY #91254 /* ~That is a good idea. I'll keep watch and help you.~ */ GOTO 7
  IF ~~ THEN REPLY #91255 /* ~I have no interest in a thief so easily caught. Off with you!~ */ GOTO 6
  IF ~~ THEN REPLY #91256 /* ~You've seen me! I'm sorry, but I have to kill you now!~ */ GOTO 12
END

IF ~~ THEN BEGIN 2 // from: 0.1
  SAY #91257 /* ~Holy Kitty Cacophony, you scared the bejeebbers outta me! Sure it's yer job to catch us thievers, but ye need not give me a heart attack too! Hey... you're not the guard! Yeesh! Getting me all in a tizzy when you're here for the same thing as me. Well, since you're here, howz about we work together? Just for this one heist, I mean. You keep watch while I show the stash. I know a secret here and there, but we get equal shares, OK?~ */
  IF ~~ THEN REPLY #91258 /* ~A good plan. Do what you must and I'll keep watch.~ */ GOTO 7
  IF ~~ THEN REPLY #91255 /* ~I have no interest in a thief so easily caught. Off with you!~ */ GOTO 6
  IF ~~ THEN REPLY #91256 /* ~You've seen me! I'm sorry, but I have to kill you now!~ */ GOTO 12
END

IF ~~ THEN BEGIN 3 // from: 0.2
  SAY #91259 /* ~Wha...! Aww, nutbunnies, caught again! Hey, wait... there's no polish on yer boots, no snap in yer suspenders. You're... you're not the guard. They're always so much more... presentable. Well... be on your way, then. I just wanna grab a few things and... be off. There's lots for both of us, so leave me be. Hmph... not so much fun if just anyone can bust in here.~ */
  IF ~~ THEN DO ~EscapeArea()
~ EXIT
END

IF WEIGHT #4 /* Triggers after states #: 11 16 24 even though they appear after this state */
~NumberOfTimesTalkedTo(1)
ReactionLT(LastTalkedToBy,NEUTRAL_LOWER)
!AreaCheck("FW4000")
~ THEN BEGIN 4 // from:
  SAY #91260 /* ~Just you leave me to my sneakin'. I'm not gonna take the big stuff.~ */
  IF ~~ THEN EXIT
END

IF WEIGHT #5 /* Triggers after states #: 11 16 24 even though they appear after this state */
~NumberOfTimesTalkedTo(1)
ReactionGT(LastTalkedToBy,NEUTRAL_UPPER)
!AreaCheck("FW4000")
~ THEN BEGIN 5 // from:
  SAY #91261 /* ~Well if your gonna be puppy-doggin after me all night, maybe we should work together. I know this place pretty good; know a few secrets. Could be fun. What say you? Wanna keep watch while I scout for pretties?~ */
  IF ~~ THEN REPLY #87957 /* ~Certainly. Do what you must while I will keep watch.~ */ GOTO 7
  IF ~~ THEN REPLY #91255 /* ~I have no interest in a thief so easily caught. Off with you!~ */ GOTO 6
  IF ~~ THEN REPLY #91256 /* ~You've seen me! I'm sorry, but I have to kill you now!~ */ GOTO 12
END

IF ~~ THEN BEGIN 6 // from: 8.2 5.1 2.1 1.1
  SAY #91262 /* ~Well! There's no need to be rude about it! Hmph! Never meet nice people in this line of work! No wonder people hate thieves! Well, we steal stuff too, *but being jerks doesn't help*! Not one bit! Goodbye!~ */
  IF ~~ THEN DO ~EscapeArea()
~ EXIT
END

IF ~~ THEN BEGIN 7 // from: 5.0 2.0 1.0
  SAY #91263 /* ~Double good and done! Oh, it'll be great fun having someone around to talk to! I don't meet many nice people in this trade. Just because we steal doesn't mean we have to be bad. Mostly I'm just curious what people have. Here, I'll point out a few things and then we can get to sneakin.' He he, such fun!~ */
  IF ~~ THEN DO ~DialogueInterrupt(FALSE)
SetGlobal("P#AloraLoots","GLOBAL",1)
MoveToPoint([769.849])
DialogueInterrupt(TRUE)
~ EXIT
END

IF WEIGHT #6 /* Triggers after states #: 11 16 24 even though they appear after this state */
~Global("P#AloraLoots","GLOBAL",1)
~ THEN BEGIN 8 // from:
  SAY #91264 /* ~Pretty good takin's with none too many bruises. We do pretty good for just meeting! How about we do this again, like all the time? Wanna join up permanent?~ */
  IF ~~ THEN REPLY #91265 /* ~A splendid idea! Welcome aboard.~ */ GOTO 10
  IF ~~ THEN REPLY #91266 /* ~I really am sorry, but we've all we need. ~ */ GOTO 9
  IF ~~ THEN REPLY #91267 /* ~Laughable! What do I need you for? Our job is done, now get lost!~ */ GOTO 6
END

IF ~~ THEN BEGIN 9 // from: 8.1
  SAY #91268 /* ~Ah well, easy go, I guess. Never get to keep my friends in this biz. Specially the nice ones. Bye, I guess.~ */
  IF ~~ THEN DO ~EscapeArea()
~ EXIT
END

IF ~~ THEN BEGIN 10 // from: 8.0
  SAY #91269 /* ~Friends we are, and nice ones too! One for all and things like that! Fun for all of us, I just *know* it!~ */
  IF ~~ THEN DO ~JoinParty()
~ EXIT
END

IF WEIGHT #3 /* Triggers after states #: 16 24 even though they appear after this state */
~StateCheck(Myself,STATE_CHARMED)
~ THEN BEGIN 11 // from:
  SAY #91270 /* ~I'm just a thief. Sorry, but I don't have much to tell.~ */
  IF ~~ THEN EXIT
END

IF ~~ THEN BEGIN 12 // from: 5.2 2.2 1.2
  SAY #91271 /* ~Ahh! I can't fight ya, but I'll call the guard, I will! Rather be in jail than dead from you! Help! Nasty, mean and evil!! ~ */
  IF ~~ THEN DO ~CreateCreature("FLAM",[802.905],3)
CreateCreature("FLAM",[850.886],3)
EscapeArea()
~ EXIT
END

IF WEIGHT #7 /* Triggers after states #: 16 24 even though they appear after this state */
~False()
~ THEN BEGIN 13 // from:
  SAY #91272 /* ~Ahh! I can't fight ya, but I'll call the guard, I will! Rather be in jail than dead from you! Help! Nasty, mean and evil!~ */
  IF ~~ THEN DO ~CreateCreature("FLAM",[802.905],3)
CreateCreature("FLAM",[850.886],3)
EscapeArea()
~ EXIT
END

IF ~~ THEN BEGIN 14 // from:
  SAY #91273 /* ~If that's the way you want it, then fine, I'll leave! *sniff*~ */
  IF ~~ THEN DO ~LeaveParty()
EscapeArea()
~ EXIT
END

IF ~~ THEN BEGIN 15 // from:
  SAY #87145 /* ~I don't wanna go, but if yer gonna force me, then I guess I'll just mope around here 'till you come back to your senses and come back for me.~ */
  IF ~~ THEN DO ~LeaveParty()
SetDialogue("ALORAP")
~ EXIT
END

IF WEIGHT #0 ~NumberOfTimesTalkedTo(0)
AreaCheck("FW4000")
~ THEN BEGIN 16 // from:
  SAY #114698 /* ~Hey, you're not from around here!  Yeesh! There's no polish on yer boots, no snap in yer suspenders. You're not merchants.  They're always so much more presentable. Aww nutbunnies, adventurers in Gullykin! Yer gonna loot them Firewine ruins?~ */
  IF ~~ THEN REPLY #114699 /* ~No, I have no interest in ruins.~ */ DO ~SetGlobal("P#TalkedToAlora","GLOBAL",1)
~ GOTO 17
  IF ~~ THEN REPLY #114700 /* ~Off with you, halfling, I have no patience for your chattering!~ */ DO ~SetGlobal("P#TalkedToAlora","GLOBAL",1)
~ GOTO 18
  IF ~~ THEN REPLY #114701 /* ~As a matter of fact, yes, I am. Why did you ask?~ */ DO ~SetGlobal("P#TalkedToAlora","GLOBAL",1)
~ GOTO 19
  IF ~~ THEN REPLY #114702 /* ~I've been to the ruins already, and I must say that they are overrated.~ */ DO ~SetGlobal("P#TalkedToAlora","GLOBAL",1)
~ GOTO 20
END

IF ~~ THEN BEGIN 17 // from: 16.0
  SAY #114703 /* ~Wait till you hear what I have to say. These ruins, they are ripe for the pickin' and will be pretty good takin's with none too many bruises.  Maybe we should work together. Stayin' with my aunt here and all, I know this place pretty good, know a few secrets and how to pick a lock or find a booby trap. Could be fun.  What say you?~ */
  IF ~~ THEN REPLY #87961 /* ~A splendid idea!  Welcome aboard.~ */ GOTO 21
  IF ~~ THEN REPLY #87962 /* ~I really am sorry but we've all we need.~ */ GOTO 22
  IF ~~ THEN REPLY #114704 /* ~Laughable!  What do I need you for? You took up enough of my time, now get lost!~ */ GOTO 18
END

IF ~~ THEN BEGIN 18 // from: 24.2 20.2 19.2 17.2 16.1
  SAY #114705 /* ~Well!  There's no need to be rude about it!  Hmph!  Never meet nice people in this line of work!  No wonder people hate adventurers!  Goodbye!~ */
  IF ~~ THEN DO ~EscapeArea()
DestroySelf()
~ EXIT
END

IF ~~ THEN BEGIN 19 // from: 16.2
  SAY #114706 /* ~Double good and done!  Oh, it's great fun having someone from the trade to talk to! I'm here stayin' with my aunt, to mend my ways and all, but I'm growin' just a little bit bored. Maybe we should work together. I know this place pretty good; know a few secrets, how to pick a lock or find a booby trap.  Could be fun.  What say you?~ */
  IF ~~ THEN REPLY #87961 /* ~A splendid idea!  Welcome aboard.~ */ GOTO 21
  IF ~~ THEN REPLY #87962 /* ~I really am sorry but we've all we need.~ */ GOTO 22
  IF ~~ THEN REPLY #114704 /* ~Laughable!  What do I need you for? You took up enough of my time, now get lost!~ */ GOTO 18
END

IF ~~ THEN BEGIN 20 // from: 16.3
  SAY #114707 /* ~Holy Kitty Cacophony, overrated?! Now this *is* exciting!  We should. . .we should work together!  Yeah!  I could use the help. . .uh.  .I mean, we could just help each other a little bit.  I can scout out the pretties for you. You can even keep most of it! Whatcha say?~ */
  IF ~~ THEN REPLY #87961 /* ~A splendid idea!  Welcome aboard.~ */ GOTO 21
  IF ~~ THEN REPLY #87962 /* ~I really am sorry but we've all we need.~ */ GOTO 22
  IF ~~ THEN REPLY #114704 /* ~Laughable!  What do I need you for? You took up enough of my time, now get lost!~ */ GOTO 18
END

IF ~~ THEN BEGIN 21 // from: 24.0 20.0 19.0 17.0
  SAY #114708 /* ~Friends we are, and nice ones too!  One for all and things like that!  Fun for all of us, I just *know* it!~ */
  IF ~~ THEN DO ~JoinParty()
SetGlobal("P#TalkedToAlora","GLOBAL",2)
~ EXIT
END

IF ~~ THEN BEGIN 22 // from: 20.1 19.1 17.1
  SAY #114709 /* ~Ah well, easy go I guess.  Never get to make any friends in this biz.  Specially the nice ones.  Bye, I guess.~ */
  IF ~~ THEN EXIT
END

IF ~~ THEN BEGIN 23 // from: 24.1
  SAY #114710 /* ~I guess I'll just mope around here 'till you come back to your senses and come back for me.~ */
  IF ~~ THEN EXIT
END

IF WEIGHT #1 ~NumTimesTalkedToGT(0)
AreaCheck("FW4000")
~ THEN BEGIN 24 // from:
  SAY #114711 /* ~Well if your gonna be puppy-doggin after me all <DAYNIGHT>, maybe we should work together.~ */
  IF ~~ THEN REPLY #87961 /* ~A splendid idea!  Welcome aboard.~ */ GOTO 21
  IF ~~ THEN REPLY #87962 /* ~I really am sorry but we've all we need.~ */ GOTO 23
  IF ~~ THEN REPLY #114704 /* ~Laughable!  What do I need you for? You took up enough of my time, now get lost!~ */ GOTO 18
END

Unless there is a problem with the first two blocks of the Area Script, which seems ok - certainly I don't think that having Alora join and then leave would change the Area Script actions.
« Last Edit: April 09, 2007, 06:51:45 PM by cmorgan »

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Name: Email:
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image
Type the letters shown in the picture:
What color is grass?:
What is the seventh word in this sentence?:
What is five minus two (use the full word)?: