Jump to content
Guest Guest

Crash

Recommended Posts

At least IESDP (http://iesdp.gibberlings3.net/scripting/variables.htm) tells me that the maximum length of death variables (or scripting names) is 18 characters. If it is indeed only 8, I think the info in IESDP should be emended. I cannot check what's the longest DV used in the original game, but I would not be surprised to find ones longer than 8 characters. If Lorraine's DV were indeed invalid, the game should invariably crash every time Lorraine's DV is invoked, and I don't *think* it does. Or does it? It may just be that we have never checked...

Edited by Darios

Share this post


Link to post

I browsed random .cre files with NI and all had DVs with 8 or less characters. I think we should change Lorraine's just to be sure.

Edited by Meira

Share this post


Link to post

i could easily be on the wrong track; however the crash that's being reported - area loads fully, then crashes - is indicating that there's an invalid/broken .cre being called by a script.

 

usually this is an invalid animation, but there're no invalid animations on any of the goons called by M#AR02.bcs; the only thing wrong that i can see is the lorraine script block (and when she's created, by the way; she's called by her .cre name, not her DV).

Share this post


Link to post

I asked the player whose game crashes to send his savegame to me. When I loaded it (in my Amber only install) and entered the building the game crashed to desktop (during load screen or immediately after it). When I load my own save the game does not crash. I'm not sure what kind of conclusion I should make of this. All previous times when I have received a savegame from a player whose game is crashing, the save works just fine in my install (figures when it's about missing tilesets, though.) This is something new. :p

Edited by Meira

Share this post


Link to post

Check that there are no corrupt CRE entries in that area in the SAV file. If the save game crashes in the same area as another save game that doesn't crash, it looks like the source of the crash is stored within the save game itself. Also, check the area entry itself.

Share this post


Link to post

Well, when I opened the savegame's .gam file in DLTCEP and clicked Check Game, I was informed that there's an 'Invalid area () in 38. npc block'. The npc on that block is Lorriane, which seemed really suspicious. Then I checked the non-crashing save and I got the same warning, so it does not look like the cause of the crash. Weird that Lorraine's area is not showing right though, at that point she should be in m#ar04. :p (If I continue playing the non-crashing save I can find her right where she should be.)

 

However, I'm not sure how to 'check' sav file in DLTCEP. I can see the options to 'skim sav' and 'uncompress sav' options, but what those options do exactly?

Share this post


Link to post
Guest Guest

The deathvars are certainly not limited to only 8 characters. In fact, I think they're not even limited to 18, only the game truncates them to 18 if they're longer. :p

Share this post


Link to post

Sorry, forgot to login.

 

As example of longer scriptname, look at BHEYE.CRE from unmodded game.

Share this post


Link to post

IF
 AreaCheck("M#AR02")
 InActiveArea("m#lorraine")
 !Dead("m#lorraine")
THEN
 RESPONSE #100
MoveGlobal("M#AR01","m#lorraine",[580.370])
END

 

Okay, removing that block from the area's script solved the issue in the player's system. In my game his save still crashes (I don't have BGT installed, though), even without this block in the script. My own save still works as normal and entering the area does not crash the game, just like it didn't before. :p

Share this post


Link to post

FWIW, i CLUA'd to M#AR02.are and encountered this crash: we appear; have a conversation with Ymmyrt's (sp?) Captain of the Guard; as soon as the dialogue finishes the game crashes back to the desktop.

 

putting a dummy script file into the override folder removes this crash, and the game proceeds normally. i'll try with a version of M#AR02.bcs with the m#lorraine block edited out and report back on what happens.

Share this post


Link to post

so, my test: i removed one script block at a time from M#AR02.bcs, loaded a save and CLUA'd myself to M#AR02.are. i didn't try all possible combinations, as the gabrielle/food blocks obviously don't alter the area or add creatures.

 

the results: only by removing all references to the goons; ie all the blocks of the form

IF
 AreaCheck("M#AR02")
 !InActiveArea("m#yclbm1")  // ~Ymmyrt's Lieutenant~
 !Dead("m#yclbm1")  // ~Ymmyrt's Lieutenant~
THEN
 RESPONSE #100
MoveGlobal("M#AR02","m#yclbm1",[200.750])
END

did the crashing stop. i dont know why this is - i checked the cre files in DLTCEP, and there's nothing obviously wrong with them - but it certainly works. if there's so much as one goon reference (i tested a representative sample of goon combinations) it crashes; if they're all commented out, then the area loads, we argue with Ymmyrt's Guard Captain, and the fun kicks off.

 

if someone can explain why this would cause a crash, i'd be pretty pleased - i can repeat it, but i don't pretend to understand it.

Share this post


Link to post

And this is a BGT game, right?

 

Those blocks used to be:

 

IF
AreaCheckObject("M#AR02",Player1)
!AreaCheckObject("M#AR02","m#yclbm1")
!Dead("m#yclbm1")
THEN
RESPONSE #100
MoveGlobal("M#AR02","m#yclbm1",[200.750])
END

 

Up until the mac version came out and AreaCheckObject() crashed mac if it was returned untrue.

Share this post


Link to post

yes, it's a BP+BGT install.

 

my first thought when this was reported was that it was an animation issue; but i CLUA-ed all the .cre's listed in the blocks that crash into the game; none of them caused any crashing (which they should have, if it was due to animation).

 

so are we looking at a trigger that doesn't work? doesn't work only in BP+BGT games (ie, in BP games, as BGT doesn't to my knowledge, make trigger alterations). BP makes any alterations that aren't also in the Fixpack (although i'll check this to be sure) - so is this crash only occurring in BP games? and if it's trigger related - should we be comparing respective TRIGGER.IDS files to work out which one is broken?

 

[edit] a quick test using this block:

 

IF
AreaCheckObject("M#AR02",Player1)
!AreaCheckObject("M#AR02","m#yclbm1")
!Dead("m#yclbm1")
THEN
RESPONSE #100
MoveGlobal("M#AR02","m#yclbm1",[200.750])
END

 

in M#AR02.bcs (but no other goon blocks) returned no crash.

 

so at least we have a culprit - the triggers; and a solution - alternate script for BP or BGT users (or just a manual patch: my favourite option).

Edited by seanas

Share this post


Link to post

This is a postulation only, but MoveGlobal might crash if the NPC is not already in the save game (stored in the GAM file). Do you add Amber to BALDUR.GAM? If not, Amber only enters BALDUR.GAM when she joins the party (or you use a script action like MakeGlobal()). If Amber hasn't joined the party in this case, and MoveGlobal() is invoked, this may cause a crash. Check this out, since I'm not sure whether it really crashes, but it definitely is illegal.

 

EDIT: Forgot to say that: whatever m#yclbm1.cre is, if it is not a joinable NPC, you can NEVER use MoveGlobal() on it. It is absolutely illegal. Use MoveBetweenAreas() instead. You can only use MoveGlobal() if the joinable NPC is already stored in the savegame (such as in the NPC script itself, but not a general area script or such). In all other cases, MoveBetweenAreas() is best for moving an NPC from a non-active area to a different area, while EscapeAreaMove() and such are best for moving an NPC from the current area to a different area.

Edited by Ascension64

Share this post


Link to post
EDIT: Forgot to say that: whatever m#yclbm1.cre is, if it is not a joinable NPC, you can NEVER use MoveGlobal() on it. It is absolutely illegal. Use MoveBetweenAreas() instead. You can only use MoveGlobal() if the joinable NPC is already stored in the savegame (such as in the NPC script itself, but not a general area script or such). In all other cases, MoveBetweenAreas() is best for moving an NPC from a non-active area to a different area, while EscapeAreaMove() and such are best for moving an NPC from the current area to a different area.

I think MoveGlobal() can be used if NPC was previously added to savegame using MakeGlobal(), which is what's been done here. If MakeGlobal() failed somehow or was interrupted, then possibly it might be the cause for crashing (although it has never happened in my experience).

 

I've been using MoveGlobal() to move NPCs in a mod I'm currently working on, and it doesn't cause any trouble. But on the other hand I'm only moving 2 NPCs, and both in one script block - and Amber mod tries to move a dozen NPCs in dozen script blocks immediately after entering new area.

Edited by pro5

Share this post


Link to post
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.


×
×
  • Create New...