Jump to content

Questions to Gavin BGII scripting [split from BG2: Problems and bug reports]


Machiavélique

Recommended Posts

btalk.d :

 

In t3.3x1 There is a problem with B!GavBhaal variable. At certain choices this variable changes to 1 whereas the player has not explicitly admitted that he/she is the child of bhaal.

Capture.png

 

The dialogue itself is not easy to understand for a player who is new to BG2 and has not played BG1. So I checked in all the scripts how this variable is used and I don't see any point in forcing the variable to "1" on the choices here. 

BGav-Bhaal1.png

 

BGav-Bhaal2.png

 

 

On the contrary, forcing BgavBhaal to 1 when the player has not admitted to being Bhaal's child or tried to dodge the question can be problematic for the others dialogues with Gavin or the dialogue with Firkraag.

 

According on the answers offered to the player in t3.3x1 and how Gavin reacts to them. I think it would be better to set the B!GavBhaal variable to 1 only for choice @454

Capture2.png

(As I said in a previous post,  in my opinion, the choice @456 need sames conditions than @453)

Link to comment

b!talk.d :

 

There is an anomaly around be1.35, be1.36, be1.37 and be1.38

Capture.png

 

 

In my opinion problem is :

- be1.38 should Exit dialog instead of to go to be1.33 -> be1.lastchance -> be1.34

- be1.37 should go to be1.33 -> be1.lastchance -> be1.34 instead of Exit dialog

 

But here I don't have a solution without proposing some fairly significant code changes.

 

The only way to go to be1.38 is from be1.35

Below is what happen in be1.35 if PC select @2707 "I can't make any promises, but I'll try." or @2708 "I only wish it was that easy."

 

be1.35 : If PC says "I can't make any promises, but I'll try."
 

Spoiler

Gavin : "I'll try to bear it, but you have to promise you'll try to fight the evil of the blood you bear."

PC : "I can't make any promises, but I'll try."

Gavin : "I could ask no more."

Gavin : "You might be the child of Bhaal, but you are also a <PRO_MANWOMAN>. I want to help you. I only hope I can."

Gavin : " I think you finding me in that temple happened for a reason. Maybe..."

Gavin : "Maybe your soul is reaching out, striving for freedom from the taint of the blood you bear. Maybe I can help you."

 

Here PC said he/she will try to fight the evil of his/her blood. And then, PC seems to have to confirm once again he/she wants to fight the evil in his/her blood with gavin's help or to change his/her mind and don't fight his/her evil blood.

Ok It's a little bit strange but would not really be a problem if choice @2708 didn't exit.

 

be1.35 : If PC says "I only wish it was that easy."
 

Spoiler

Gavin : "I'll try to bear it, but you have to promise you'll try to fight the evil of the blood you bear."

PC : "I only wish it was that easy."

Gavin : "There is always hope, <CHARNAME>, remember that. I want to help you. I only hope you'll let me."

EXIT

 

Here PC seems to want to change but it's too difficult. So Gavin says he wants help PC and he only hope PC will let him help him/she

And then... Nothing. EXIT Dialog...

Strange !?

 

Conclusion :

It would be very more logical than be1.38 would EXIT dialog and be1.37 would go to be1.33.

Below is what would happen if we replace EXIT in be1.37 by IF ~~ THEN + be1.33

 

be1.35 : If PC says "I only wish it was that easy." and we replace EXIT by IF ~~ THEN + be1.33
 

Spoiler

Gavin : "I'll try to bear it, but you have to promise you'll try to fight the evil of the blood you bear."

PC : "I only wish it was that easy."

Gavin : "There is always hope, <CHARNAME>, remember that. I want to help you. I only hope you'll let me."

Gavin : "You might be the child of Bhaal, but you are also a <PRO_MANWOMAN>. I want to help you. I only hope I can."

Gavin : " I think you finding me in that temple happened for a reason. Maybe..."

Gavin : "Maybe your soul is reaching out, striving for freedom from the taint of the blood you bear. Maybe I can help you."

 

As we can see the dialog is more logical if be1.38 EXIT dialog and be1.37 go to be1.33.

But it's not possible to do this cause it will cause a bigger problem if be1.37 can go to be 1.33 :

be1.37 -> be1.33 -> be1.lastchance -> be1.34 -> be1.37 -> be1.33 -> be1.lastchance -> be1.34 -> be1.37 -> be1.33 -> etc (with B!GavChange that could easily be increased).

 

 

There are different ways to solve this with more or less important code modifications but an easy way (not the best) to solve it is maybe to just EXIT dialog in be1.38

The problem is that it will remove a way for BGavChange to reach the value of 5 before the talk8 whereas there was only 2 ways for BGavChange to reach the value 5 before talk8.

But the local variable BGavChange is another problem I'll report it later.

 

Link to comment

b!talk.d

 

What I report here will need to be examined with my previous post

 

There are many problems with the global variable B!GavChange

In talk8 this variable is checked greater than 4

 

Capture2.png

 

For begining, it's very very difficult to get a 5 value before the talk8. Here are every "talks" before talk8 where this variable can be increased :

Talk4 +1 (It doesn't matter what topic is here: B!GavReligion , B!GavRealist or B!GavHumanNature, if B!GavChange increases the dialog will end with an EXIT)

Talk6 +1

Talk7 +1

Talkbe.1 +1 or +2 depending player choices

 

There is also the possibility before talk8 that this variable is decreased by 1 or more. That's why it's very difficult to get a 5 value.

Question is "Are talk8 choices really important to justify a such difficulty ?"

Well... it seems not

 

Capture3.png

 

If B!GavBhaal = 1 (and we choose @1111) we will go to 8.14 anyway.

If B!GavBhaal = 0 (and we choose @1111) we will go to 8.15 anyway.

 

Now if we're looking to the dialogue :

@1108 = ~How are you holding up, <CHARNAME>?~ [bgav111]

@1111 = ~Never better, why?~

@1115 = ~You do seem to be holding it all together, somehow.~

@1116 = ~I don't know if I can agree with that. There are times when you seem to have trouble~

 

We can't really say it's something decisive... but there is something even stranger

How is this variable controlled after talk8?

Well... after talk8 this variable is never checked greater than 2. (whereas it's possible to increase it again after talk8)

 

So... Why checking this variable > 4 in talk8 for a no-signifiant dialogue and after that only checking this variable greater than 2 in the rest of dialogues ?

Is the problem in the talk8 or is the problem in every dialogues after talk8?

Is there a typo here ? Type "4" instead of "1" with numpad and then copy paste ? (This is the best guess I have)

 

Here are every actions on B!GavChange :
 

Spoiler

lCapture.png

 

 

Here are every controls on B!GavChange :

Spoiler

Capture4.png

 

 

If we're looking again this picture, there are some inaccuracies showing again a problem with B!GavChange

Capture5.png

 

In the current version, it's absolutly impossible to go at t8.7

In the mod, B!GavBhaal is just used as a boolean so we can read here :

If (B!GavBhaal = 0 AND AlignmentPlayer is EVIL AND B!GavChange > 4) THEN go to t8.7

 

Problem is if B!GavBhaal = 0 then B!GavET = 0 too and the redemption talk (be1.1) can never start.

So the maximum value B!GavChange can reach here is 3, and testing greater than 4 for going to t8.7 is a no-sense.

 

 

As I said in my previous post, there is a problem in talkbe1 too

 

In be1 B!GavChange can be increased by 1 twice in the same dialogue. I checked every dialogues and be1 is really the only one.

Let's look the talk4. In this talk,we have the possibility to loop the dialogue (with t4.9) to go through all the topics (B!GavReligion , B!GavRealist or B!GavHumanNature) EXCEPT if player is EVIL and shows a willingness to change (therefore if B!GavChange increase). It seems that Berelinde had a particular desire that B!Gavchange should not be increased several times in the same dialogue.

 

Here is an example with B!GavReligion topic (but B!GavRealist and B!GavHumanNature have the same built.)

Capture6.png

 

In addition to the problem I reported earlier in talk be1, I don't think BGavChange is supposed to be able to increase twice in be1 talk.

 

 

 

 

In consideration of this and my previous post, I therefore recommend these changes :

Spoiler

 

Capture7.png

 

 

Capture8.png

 

Capture3.png

 

 

Or theses changes (And I think the 2nd suggestion is better) :

Spoiler

 

Capture7.png

 

 

Capture8.png

Capture2.png

 

Capture3.png

 

Edited by Machiavélique
Added another suggestion to fix the problem
Link to comment

btalk.d

 

In t8.22 :

The global variable GaalJob seems to be used to check if Gaal has already been encountered, but that's not what GaalJob is for.

GaalJob just indicates if the player has decided to work for Gaal or not

 

Capture.png

 

Ideally, we would need a global variable "metGaal" in the Gaal script using NumTimesTalkedTo() to know whether the player has met Gaal or not.

But I'm not in favour of this idea cause It requires to modify a script that is outside Gavin mod

 

 

In t16.12 :

Here GaalJob seems to be used to know if the cult is destroyed

 

Capture.png

 

Capture2.png

 

 

The way GaalJob variable is used is not right and I would like to have your opinion on this.

Edited by Machiavélique
Other problem with GaalJob variable
Link to comment

b!abduction.d :

 

capture.png

 

Here we can see that a transition is added for Gavin but there is no negation added for the previous transitions.

So we can have 2 transitions set on "true." (GOTO 6 & GOTO 39)

 

Here is the decompiled BODHIAMB.DLG file :

Spoiler

Capture4.png

 

 

I wondered what would happen if 2 transitions are set on "true", so at first I checked Weidu documentation :

Capture3.png

So if state WEIGHTS is not used, the first transition will be execute.

 

If it's right, it would be a problem in BODHIAMB.DLG so I just did a single test with several transitions set on "true" and the last one was executed (not first one as I expected).

But I can't test what would happen in BODHIAMB.DLG, I have no BG2 saves to test that. If the last true transition is executed (as in my test), everything will be OK.

 

 

 

To prevent a potential problem, I think we need to add an ADD_TRANS_TRIGGER :

Capture2.png

 

It's not so delicate solution cause it will add this at every transitions but it will prevent any problems.

 

I think it would better to get this final code but I don't know how to get this with Weidu commands :

Spoiler

Capture5.png

 

 

________________________________________________________________________________________________________________________________________________________

Edit :

We can see the same problem elsewhere (If B!GavVampire = 2, does it go to 22 or does it go to 23 ? We need to be sure.)

Capture6.png

 

That's why, in b!abduction.d  it would be better to add an ADD_TRANS_TRIGGER also here :

Capture.png

Edited by Machiavélique
Other problem
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...