Machiavélique Posted November 27, 2021 Author Share Posted November 27, 2021 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. 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. 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 (As I said in a previous post, in my opinion, the choice @456 need sames conditions than @453) Quote Link to comment
Machiavélique Posted November 28, 2021 Author Share Posted November 28, 2021 b!talk.d : There is an anomaly around be1.35, be1.36, be1.37 and be1.38 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. Quote Link to comment
Machiavélique Posted December 1, 2021 Author Share Posted December 1, 2021 (edited) 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 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 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 l Here are every controls on B!GavChange : Spoiler If we're looking again this picture, there are some inaccuracies showing again a problem with B!GavChange 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.) 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 Or theses changes (And I think the 2nd suggestion is better) : Spoiler Edited December 3, 2021 by Machiavélique Added another suggestion to fix the problem Quote Link to comment
Machiavélique Posted December 2, 2021 Author Share Posted December 2, 2021 (edited) 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 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 The way GaalJob variable is used is not right and I would like to have your opinion on this. Edited December 3, 2021 by Machiavélique Other problem with GaalJob variable Quote Link to comment
Machiavélique Posted December 10, 2021 Author Share Posted December 10, 2021 (edited) b!abduction.d : 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 I wondered what would happen if 2 transitions are set on "true", so at first I checked Weidu documentation : 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 : 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 ________________________________________________________________________________________________________________________________________________________ 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.) That's why, in b!abduction.d it would be better to add an ADD_TRANS_TRIGGER also here : Edited December 11, 2021 by Machiavélique Other problem Quote Link to comment
Recommended Posts
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.