Jump to content

Crash


Guest Guest

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...

Link to comment

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).

Link to comment

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

Link to comment

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?

Link to comment

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

Link to comment

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

Link to comment

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.

Link to comment

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.

Link to comment

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.

Link to comment

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).

Link to comment

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.

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

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...