Jump to content

Issues with GemRB 0.8.4


Caillean

Recommended Posts

All oberservations below I've made on several BG2 and BGT installations, so just making a new install won't fix them. Using the English version of BG2, OS is Linux. Mods installed in the order suggested by the BigWorld installation manual, weidu.log attached.

Script related

- Cutscenes triggering on rest like dreams can cause you to get stuck in cutscene mod. So mods adding dreams could be troublesome. I also found that some modders use cutscenes to prevent multiple dreams / rest banters from firing, a method Berelinde came up with, according to comments in some scripts. Examples:

 

/* stolen from berelinde's b!rest4.baf - POCKET PLANE - cutscene "rest" that runs after a night talk, 
preventing dreams or other rest banters from kicking in when the usual RestParty() events aren't wanted - 
be careful with this one! Look at her work before using */

IF
  True()
THEN
  RESPONSE #100
    CutSceneId(Player1)
    Rest()
    ActionOverride(Player2,Rest())
    ActionOverride(Player3,Rest())
    ActionOverride(Player4,Rest())
    ActionOverride(Player5,Rest())
    ActionOverride(Player6,Rest())
    StartMovie("POCKETZZ")
    MoveViewObject(Player1,INSTANT)
    Wait(1)
    EndCutSceneMode()
END
IF
	InParty(Myself) 
	See(Player1)
	Global("ACBREFRIENDACTIVE","GLOBAL",1)
	Global("ACBREBANTER1","LOCALS",3)
	CombatCounter(0)
	!See([ENEMY])
	!StateCheck("ACBRE",CD_STATE_NOTVALID)
	!StateCheck(PLAYER1,CD_STATE_NOTVALID)
THEN
	RESPONSE #100
		SetGlobal("ACBREFRIENDACTIVE","GLOBAL",2)
		StartCutScenemode()
		FadeToColor([20.0],0)
		Wait(2)
		PlaySong(999990)
		MoveViewObject("ACBRE",INSTANT)
		FadeFromColor([20.0],0)
		Wait(3)
		StartDialogNoSet(Player1)
END

Again, I'm getting stuck in cutscene mode for good here.



- Noticed on several occaisons that NPCs stay in the area while they're supposed to leave and move elsewhere. Mostly mod added ones, but a good example is also Nalia in the Copper Coronet: When she approaches you about helping her to free her keep, and you send her ahead and agree to meet her there, she won't leave, but immediately start with her next dialogue: 'There you are! I have waited positively ages for you...'


GUI related

- Learning new spells from scrolls often requires several attempts. The 'added new spell to your mage book' dialogue pops up, but the scroll is still there and the spell is not in the book. It also hardly ever works while the game is paused (combined with the above mentioned issue learning a whole bunch of new spells can be pretty annoying). The weirdest thing is one Vocalize scroll found in the Irenicus dungeon on the start of BG2. It won't get destroyed in the learning process at all. Again, observed on every one of the various installations I had. This allows for an exploit to get xp when unlearning / learning it again and again.

Sound related

- As already mentioned in the previous thread, animation soundsets don't work in BG2 for creatures like monsters, animals and shapeshifted characters. More testing showed that the problem is there on a fresh and unmodded installation, but strangely on my BGT installation only for the BG2 portion of the game. In the BG1 part all is fine.

- Recently I noticed another thing that fits here on BGT: The lightning ambient sound also seems only to fire when changing areas, also when entering an interior. Furthermore, it's sometimes extremely loud (I read about louder sound effects on GemRBs website, so this is nothing new). This was so annoying that I removed them from defsound.2da for the time being.


Fixed:
- Scripts running on rest using the actions Rest() or RestParty() cause two rest cycles on GemRB, unlike IE

- The IsGabber() trigger doesn't seem to work - at least not with mod added stuff. Affects mostly PIDs from mod NPCs - to make them work, I replaced 'IsGabber(Player1)' with 'True()' in the d files prior to installing the mods.

- The characters may have pink shadows in the inventory screen on a BGT installation after biffing - this also came up already in another thread, but I just had it again. Extracted the bams from a BG2 game and dropped them in the override to get rid of the pinkness.

- Starting a new BG2 game in BGT causes charname to start at ToB like level (already mentioned elsewhere). But the NPCs also seem to use ToB dialogues, at least when it comes to the Player initiated dialogue, and the saves end up with the ToB saves. Copying them manually from the mpsave to the save folder won't work either, gemrb.log speaks of no 'fitting worldmap'.

- Can't seem to get a character intoxicated when drinking alcohol in a tavern. Lots of mod NPCs have extra content that shows up only when being drunk, and I can't seem to get anyone drunk. Did I not have them drink enough or is it maybe not implemented yet?

- Also already mentioned: The characters' random comments about fatigue, day / night, area type (dungeon / city / wilderness) don't fire immediately, but seem to be carried over to another area and then fire all at once upon entering a new area.


Deferred:
- Containers in the inventory are not accessible in stores (again, I read somewhere that it isn't implemented yet?)

- When opening a container (also looting bodies) the lower part of the screen can somehow 'freeze up' and displace against the upper part (I think I read about this in another post, just can't seem to find it again).

- When in the inventory or the mage book / priest scroll screen and looking at an item or spell description, a dialogue firing will cause the whole game to freeze up completely. On Linux all that's left is killing X. Just having the inventory / mage book / priest scroll open is okay, though. I think in the original IE opening those screens should pause the game, and that would be a good thing for GemRB, too, imho.

- Cernd's shapeshifting doesn't seem to work properly. The attack item that has the actual polymorph effect on it ends up in the inventory without getting equipped. It can be equipped manually to change him into were form. Changing back to natural form does nothing, and the item remains in the inventory. It can be kept in a weapon slot and be used to shapechange him. Using the 'Change into werewolf' ability multiple times will create multiple of the attack items. The shapechanging works flawlessly in the Bear Walker ranger kit though, that allows the character to change into a were bear.


Other:
- (CTD fixed, needs a deeper inspection why the npc didn't get moved) Another matter from a cutscene script from Ascalons' Breagar mod (a German BGT-only NPC):
CreateVisualEffectObject("spcrtwpn","ACBRESMI") and CreateVisualEffectObject("SPWHIRL","ACBRESMI") cause a CTD with a Segmentation fault. While I don't have played this one on IE, I think it's safe to assume this stuff works on the IE. The last thing gemrb.log says is that the vvc's have been found in chitin.key, that's it. Commenting those out lets the cutscene run. I'm using the proprietary NVidia driver, if that's important. Here's the whole script (accut_01.bcs):

IF
True()
THEN
RESPONSE #100
CutSceneId(PLAYER1)
Wait(1)
FadeToColor([20.0],0)
Wait(2)
ActionOverride(Player2,LeaveAreaLUA("AC6701","",[651.547],10))
ActionOverride(Player3,LeaveAreaLUA("AC6701","",[762.666],10))
ActionOverride(Player4,LeaveAreaLUA("AC6701","",[682.617],10))
ActionOverride(Player5,LeaveAreaLUA("AC6701","",[633.582],10))
ActionOverride(Player6,LeaveAreaLUA("AC6701","",[602.523],10))
ActionOverride("ACBRESMI",LeaveAreaLUA("AC6701","",[851.508],10))
LeaveAreaLUAPanic("AC6701","",[758.620],10)
LeaveAreaLUA("AC6701","",[758.620],10)
Wait(1)
FadeFromColor([20.0],0)
Wait(2)
CreateVisualEffectObject("spcrtwpn","ACBRESMI")
Wait(2)
ActionOverride("ACBRESMI",Swing())
Wait(2)
DisplayStringHead("ACBRESMI",@5000)
Wait(1)
CreateVisualEffectObject("spcrtwpn","ACBRESMI")
Wait(2)
ActionOverride("ACBRESMI",Swing())
Wait(3)
DisplayStringHead("ACBRESMI",@5001)
Wait(1)
ClearAllActions()
CreateVisualEffectObject("SPWHIRL","ACBRESMI")
PlaySound("EFF_P69")
Wait(1)
FadeToColor([20.0],0)
ActionOverride("ACBRESMI",DestroySelf())
Wait(1)
CreateCreature("ACBreRed",[851.508],10)
Wait(1)
FadeFromColor([20.0],0)
Wait(2)
CreateCreature("ACTAEROM",[410.547],10)
Wait(1)
ActionOverride("ACTAEROM",StartDialogNoSet(PLAYER1))
END





 

weidu.log

Edited by lynx
Link to comment

Intoxication was there, but disabled since 2005. :) I've also added the portrait icon, so it's more obvious it works. The constitution mod (unclear), penalties and curing without resting (per hour? The table values are high) will wait for some other time.

 

BGT starting xp is already refixed and the mode (affecting dialog use) probably too.

 

BG1 and BG2 use a different verbal constants system, so there could be something wrong with the translation.

 

I don't think we draw ambiental lightnings at all — couldn't you even get hit by it?

 

Pink inventory paperdolls — already fixed.

 

Nested containers: yes.

 

Freezing containers: not enough data.

 

Learning spells from scrolls. It can be done during pause, but it will happen in the next tick after unpausing. I think I fixed a few problems there, but I also think it's also still buggy.

 

Subwindows vs dialog: known problem, but hard to hit, since the rest is handled. The windowing rewrite would make this more pleasant. I doubt you need to kill X though, why not just gemrb? Maybe you can even pop open the gemrb console and stop the cutscene or just quit. Only BG1 forced unpause during inventory checking, the rest have it arbitrary.

 

Rest: are you sure (gametime)?

 

IsGabber is different between games, but checks the speaker. Can you give a concrete simple test case, as I don't see any vanilla uses?

 

Nalia: old problem, mostly due to data, hit and miss. If she manages to exit in time, the whole thing is avoided. As for people staying, global actors can be present for tick or two on load sometimes or if scheduling changes or some more obscure stuff.

 

Cernd: never tried it, sounds like he's using a clutch instead of innates. Definitely needs fixing.

 

Can you run/install gdb and check where it crashes? From the code, I see clear potential only in a corner case where it managed to execute before the target is properly placed in an area.

 

cutscenes and dreams: I think this is the same thing that can happen with Viconia. In that case I thought it was related to our Fade*Color mechanics (original not understood perfectly yet), which would fit your second example. If it turns out it's the same problem as the first, that'd be great, as it's much simpler.

Link to comment

 

I don't think we draw ambiental lightnings at all — couldn't you even get hit by it?

 

Right, now that you mention it, I remember you really could get struck by lightning in BG1 - has been years since I played on the original IE. My guess is that the lightning sounds are supposed to be played once in a while when it's raining, they are ambient sounds, and that the same happens like with that random character comments. They just go off only on entering a new area.

 

 

 

Freezing containers: not enough data.

 

I included a screenshot because it's kinda hard to explain. You can see the graphics issue as well what's happening in the terminal in that moment. The GemRB.log is also attached.

 

post-2064-0-26410200-1489168305_thumb.jpg

 

 

 

Subwindows vs dialog: known problem, but hard to hit, since the rest is handled. The windowing rewrite would make this more pleasant. I doubt you need to kill X though, why not just gemrb? Maybe you can even pop open the gemrb console and stop the cutscene or just quit. Only BG1 forced unpause during inventory checking, the rest have it arbitrary.

 

When it freezes due to this issue, nothing will work anymore, can't open the GemRB console. All I can do then is Ctrl + Alt + Backspace.

 

 

 

Rest: are you sure (gametime)?

 

It goes like this: Klick the rest button, the Rest movie is played, THEN the dialogue shows up, then the Rest movie plays again. In the console below its says twice that I've rested for 8 hours. I didn't, however, pay attention to the game time, I'll be sure to check it from now on and report back if I know for sure.

 

 

 

IsGabber is different between games, but checks the speaker. Can you give a concrete simple test case, as I don't see any vanilla uses

 

I guess most NPC mods nowadays include Player Initiated Dialogue - so whatever you have installed, does it work if you try to talk to the NPCs? Examples are Kivan and Sarah, both are hosted here. But I had that problem literally with every NPC mod, so I replace the IsGabber before I even install anything now.

 

 

 

Nalia: old problem, mostly due to data, hit and miss. If she manages to exit in time, the whole thing is avoided. As for people staying, global actors can be present for tick or two on load sometimes or if scheduling changes or some more obscure stuff.

 

I have had one case where it won't work at all, it's Kivan. After he approaches you at Waukeen's Promenade, he's supposed to go away if you don't recruit him. But he just keeps standing around there forever. This is from p#kivan.d:

IF ~NumTimesTalkedTo(0)~ THEN BEGIN P#MeetKivan
SAY @2
IF ~~ THEN DO ~SetGlobal("X#TalkedToKivan","GLOBAL",1)~ EXTERN P#KIVAN KivanStartChain
END

IF ~~ THEN BEGIN Refuse
SAY @3
IF ~~ THEN REPLY @4 GOTO ComeAlong
IF ~~ THEN REPLY @5 GOTO PoliteRefuse
IF ~~ THEN REPLY @6 GOTO GetLost
END

...

IF ~~ THEN BEGIN PoliteRefuse
SAY @12
IF ~~ THEN DO ~EscapeArea()~ EXIT
END

 

Can you run/install gdb and check where it crashes? From the code, I see clear potential only in a corner case where it managed to execute before the target is properly placed in an area.

 

I let the G3 debugging suite run for this modders' prefix (ac). Unfortunately I also have his quest pack installed. The spell checker wouldn't install:

Installing [Spell Checker] [3]
Copying 1 file ...
Appending to files ...
Copying and patching 1 file ...

ERROR locating resource for 'COPY'
Resource [^ac.+/.spl$] not found in KEY file:
	[./chitin.key]
Stopping installation because of error.

ERROR Installing [Spell Checker], rolling back to previous state
Will uninstall   1 files for [g3_debugging_suite/setup-g3_debugging_suite.tp2] component 4.
Uninstalled      1 files for [g3_debugging_suite/setup-g3_debugging_suite.tp2] component 4.
ERROR: Failure("resource [^ac.+/.spl$] not found for 'COPY'")
PLEASE email the file setup-g3_debugging_suite.debug to webmaster@camagna.net

Here are the other logs. I hope that's what you were after.

 

debugger_area_checker.log

debugger_creature_checker.log

debugger_creature_inventory_checker.log

debugger_item_checker.log

 

 

cutscenes and dreams: I think this is the same thing that can happen with Viconia. In that case I thought it was related to our Fade*Color mechanics (original not understood perfectly yet), which would fit your second example. If it turns out it's the same problem as the first, that'd be great, as it's much simpler

 

The first example, that has no FadeToColor stuff included, unfortunately causes the same getting stuck in cutscene mode. Just saying... It is from cmorgans' Aran Whitehand btw., which is in the making here at G3.

 

 

GemRB.log

Link to comment

Something else about intoxication — how do mods detect it? I don't see any triggers or a separate state.

 

Containers: I think this is a general issue with higher resolutions/widescreen.

 

Subwindows: even if you're playing fullscreen and don't have magic sysrq keys enabled, you could ctrl+alt to a terminal and end it from there.

 

Rest: ok. The timing is something I'm interested in from the original, since it will show how things were done.

 

gabber: fixed, was a simple error.

 

kivan is something I have to try afresh and recheck. In a previous game there was a problem with his spawning, so he was almost impossible to recruit.

 

gdb as in the gnu debugger. :) Weidu logs are useless here.

Link to comment

About the rest thingy: I made screenshots for you to document it - it seems the game time is actually advanced 16 hours due to 2 rest cycles:

 

post-2064-0-87296300-1489311730_thumb.jpg post-2064-0-71103400-1489311745_thumb.jpg

 

 

This was a banter triggering on rest between Yeslick and Imoen from the BG1 NPC Project on BGT:

/* AT REST */
/* Imoen's bedtime story */
CHAIN IF WEIGHT #-2 ~%BGT_VAR% Global("X#YEIM1","LOCALS",1)~ THEN ~%YESLICK_JOINED%~ YEIM1
@102
DO ~SetGlobal("X#YEIM1","LOCALS",2)~
== ~%IMOEN_BANTER%~ @103
== ~%YESLICK_BANTER%~ @104
== ~%IMOEN_BANTER%~ @105
== ~%YESLICK_BANTER%~ @106
== ~%IMOEN_BANTER%~ @107
== ~%YESLICK_BANTER%~ @108
== ~%IMOEN_BANTER%~ @109
== ~%YESLICK_BANTER%~ @110
= @111
= @112
= @113
= @114
== ~%IMOEN_BANTER%~ @115
DO ~RestParty()~
EXIT

What I got wrong is the order how things happen: The dialogue occured first, then 2 rests, along with the rest movies, as you can see in the GemRB.log.

gemrb.log

Link to comment

 

Something else about intoxication — how do mods detect it? I don't see any triggers or a separate state.

 

Two examples from cmorgans' Aran Whitehand and Kulyoks' Xan:

 

CheckStatGT("c-aran",40,INTOXICATION)

CheckStatGT(Player1,50,INTOXICATION)

 

 

 

kivan is something I have to try afresh and recheck. In a previous game there was a problem with his spawning, so he was almost impossible to recruit.

 

I think this is what you're referring to: http://gibberlings3.net/forums/index.php?showtopic=17367 But I had removed this particular part of his script before already due tue the problems it causes. Didn't plan on attacking him anyway.

 

 

 

gdb as in the gnu debugger. :) Weidu logs are useless here.

 

Oi, sorry. Not a programmer here. I downloaded it and am figuring out how this works, since I never had to debug anything before :D And of course, the idea to keep savegames from the crash didn't occur to me before, so I'll have to start a new game. Meaning - it might take a while.

Link to comment

rest: now I'm completely confused. If the original also did two rests, where is the problem?

 

kivan: needs testing if escapearea even runs or perhaps it gets overriden by something else (noisy area and scripts).

 

gdb: you just run gemrb from the console as before, but prefix gdb. Then type "run" ® and once it crashes "backtrace" (bt). That's the info I'm looking for. You can use ctrl-j and ctrl-y to get to the relevant game part faster. You could also set the relevant game vars and just teleport to the area, all through our own console.

 

I'll edit the posts a bit, so the remaining issues will stand out.

Edited by lynx
Link to comment

 

rest: now I'm completely confused. If the original also did two rests, where is the problem?

 

Misunderstanding here: There are no two rests with the original IE, nor are there supposed to be. To me, this is an GemRB-only problem.

 

 

 

gdb: you just run gemrb from the console as before, but prefix gdb. Then type "run" ® and once it crashes "backtrace" (bt). That's the info I'm looking for. You can use ctrl-j and ctrl-y to get to the relevant game part faster. You could also set the relevant game vars and just teleport to the area, all through our own console.

 

'kay, I made my way to the right point in the quest and tried with gdb, here's what it said:

Program received signal SIGSEGV, Segmentation fault.
0xb7ebd086 in GemRB::Map::AddVVCell (this=0x0, vvc=0xa4f1e70)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/Map.cpp:2252
2252	{
(gdb) backtrace
#0  0xb7ebd086 in GemRB::Map::AddVVCell (this=0x0, vvc=0xa4f1e70)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/Map.cpp:2252
#1  0xb7ef9d42 in GemRB::CreateVisualEffectCore (Sender=0xaf8c578, 
    position=..., effect=0xa8d48cc "spcrtwpn", iterations=0)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/GameScript/GSUtils.cpp:817
#2  0xb7eed33d in GemRB::GameScript::CreateVisualEffectObject (
    Sender=0x8536480, parameters=0xa8d48a8)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/GameScript/Actions.cpp:1910
#3  0xb7f041ff in GemRB::GameScript::ExecuteAction (Sender=0x8536480, 
    aC=0xa8d48a8)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/GameScript/GameScript.cpp:2428
#4  0xb7f53265 in GemRB::Scriptable::ProcessActions (this=0x8536480)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/Scriptable/Scriptable.cpp:575
#5  0xb7f5337b in GemRB::Scriptable::Update (this=0x8536480)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/Scriptable/Scriptable.cpp:325
#6  0xb7ec5a6c in GemRB::Map::UpdateScripts (this=0xa62dd88)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/Map.cpp:755
#7  0xb7e964ce in GemRB::Game::UpdateScripts (this=0x841fc70)
---Type <return> to continue, or q <return> to quit---return
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/Game.cpp:1495
#8  0xb7ea5ef2 in GemRB::Interface::GameLoop (this=0x804a038)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/Interface.cpp:2944
#9  0xb7eac257 in GemRB::Interface::Main (this=0x804a038)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/Interface.cpp:991
#10 0x08048a94 in ?? ()
#11 0xb7b00a63 in __libc_start_main (main=0x3, argc=134515505, argv=0x0, 
    init=0x8048b52, fini=0x80489f0, rtld_fini=0x3, stack_end=0xbffff504)
    at libc-start.c:287
#12 0xb7fff000 in ?? () from /lib/ld-linux.so.2
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

I hope this is what you are looking for?

Link to comment

Yep, thanks, it confirms my suspicion. It won't crash any more, but it won't show either (a warning will be printed). What really needs inspection is how his LeaveAreaLUA call goes, however that's a harder task than finding the crash. Do you know what makes the mod bgt-only? I don't have any such installs.

 

re rest: so how much time does then pass in the original? No screenshots needed.

Link to comment

 

Do you know what makes the mod bgt-only?

 

Being no modder or anything, I don't understand enough of this stuff to really answer that. According to the readme, the mod requires the BP-BGT-Worldmap, seems it adds areas there. That's one thing. The readme also states that it won't work with BG2 only or Tutu and might ruin the whole installation if tried to install on those. There's content for both BG1 and BG2 + ToB. The appending to area scripts is probably BGT specific (unless Tutu uses the same area codes). Beyond that, I'm at a loss here, sorry.

 

 

 

re rest: so how much time does then pass in the original? No screenshots needed.

 

One rest happens. Usually I have the 'rest until healed' option activated, so it's either 8 hours or more if there's no healer available. With GemRB on the other hand, checking this options doesn't seem to do anything at all, rest is always 8 hours, while it neatly lists who did cast healing spells on whom during rest (something I don't remember from the original). This particular dialogue was just an example, however, it always does two rests when there's dialogue occuring on rest.

Link to comment

bgt: meh. Let's try another gdb session before I start reading things blindly:

run gemrb in gdb

press r

load the game and do everything short of starting the cutscene

change back to the console and ctrl-c, so the gdb prompt reappears

b GemRB::GameScript::LeaveAreaLUA

c

that will hopefully make the game run (continue) again indefinitely

start the cutscene

once it halts again, you'll see gdb hit the breakpoint at LeaveAreaLUA

n 3

p actor->GetScriptName()

c

this will repeat for the whole party, as per the script. After you get the script name of ACBRESMI, you'll know you're close. Instead of pressing c, type:

p actor->Persistent()

b GemRB::MoveBetweenAreasCore

c

and tell me if a new breakpoint of MoveBetweenAreasCore gets hit or not and what the Persistent check printed.

 

 

rest: interesting. It seems either the talks interrupt the rest completely (and all suck talks must call it manually then) or the engine folds the two together. Please try changing that RestParty to NoAction and recompiling the dialog — does no time pass, no resting happen in the original?

 

rest until healed isn't implemented yet. Spellcasting on rest is new, yes, and externalised, so you could edit the 2da and for example add stoneskin refreshing to it.

Link to comment

 

tell me if a new breakpoint of MoveBetweenAreasCore gets hit or not and what the Persistent check printed.

 

It found a second breaking point:

(gdb) p actor->GetScriptName()
$2 = 0x8b245a8 "acbresmi"
(gdb) c
Continuing.

Breakpoint 1, GemRB::GameScript::LeaveAreaLUA (Sender=0x887bc18, 
    parameters=0xb09cac0)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/GameScript/Actions.cpp:3098
3098	{
(gdb) p actor->Persistent()
No symbol "actor" in current context.
(gdb) b GemRB::MoveBetweenAreasCore
Breakpoint 2 at 0xb6a965a0 (3 locations)
(gdb) c
Continuing.

Breakpoint 2, 0xb7e7cea0 in GemRB::MoveBetweenAreasCore(GemRB::Actor*, char const*, GemRB::Point const&, int, bool)@plt ()
   from /usr/local/lib/gemrb/libgemrb_core.so.0.8.4

Edit:

 

Please try changing that RestParty to NoAction and recompiling the dialog — does no time pass, no resting happen in the original?

 

Having a little problem here, since I can't get this installation to run either with wine (tried with multiple versions) anymore nor on a windows VM. I guess I'll set up another BGT installation on the VM for testing purposes... I tried already on GemRB with the edited dialgogue file: at least here removing the RestParty() also removes the second rest cycle.

 

Nevermind, found another Windows installation along with a fitting save game for testing. So the original dialogues with the RestParty action cause 1 rest on IE, 2 rests on GemRB. Replacing RestParty with NoAction cause no rest on the IE, 1 rest on GemRB (I tested this on both BGT and BG2-only installations). So it seems IE does indeed handle rests differently than GemRB. Btw, I tried to find a case to test with GemRB on an unmodded game, but I can't think of a vanilla rest dialogue, only talks that happen after rest, like Imoens' right after first resting in the Irenicus dungeon).

 

 

Spellcasting on rest is new, yes, and externalised, so you could edit the 2da and for example add stoneskin refreshing to it.

 

Awesome, so you can automatize long duration buffing?! Which 2da do I edit?

Edited by Caillean
Link to comment

gdb: uff, quite good for the long instructions, but not yet there. Let's change it a bit:

when you hit: p actor->GetScriptName() == "acbresmi"

p actor->Persistent()

b GemRB::MoveBetweenAreasCore

c

if you hit the MoveBetweenAreasCore breakpoint: n; p actor->GetScriptName()

 

resting: ok, so all the dialogs should be sleep terminal, thanks. It's up to content creators not to screw it up.

 

table: copy gemrb/unhardcoded/bg2/splspec.2da into your game override and append any spells you want as new rows. The first column value should be 8, the rest 0 (only used for healing estimation, since we're extra smart on who to heal first).

Link to comment

kk, new debugging run:

Breakpoint 2, 0xb7e7cea0 in GemRB::MoveBetweenAreasCore(GemRB::Actor*, char const*, GemRB::Point const&, int, bool)@plt ()
   from /usr/local/lib/gemrb/libgemrb_core.so.0.8.4
(gdb) n
Single stepping until exit from function _ZN5GemRB20MoveBetweenAreasCoreEPNS_5ActorEPKcRKNS_5PointEib@plt,
which has no line number information.

Breakpoint 2, GemRB::MoveBetweenAreasCore (actor=0xa69a1d8, 
    area=0x86f32f0 "H", <incomplete sequence \375\267>, position=..., face=10, 
    adjust=true)
    at /home/nadia/Software/Games/gemrb-0.8.4/gemrb/core/GameScript/GSUtils.cpp:1179
1179	{
(gdb) p actor->GetScriptName()
$3 = 0xa69a208 ""

Link to comment

eh, nevermind, I'm asking too much.

 

resting vs pdialog is an interesting case of the halting problem — there's no way of knowing if the dream script caused a rest without actually running it. I'll fix it tomorrow, it's not hard, just ugly.

Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

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