Jump to content

minor bug with xan's banter when you enter ice island


lac

Recommended Posts

As soon as you meet the first 3 wizards, there is this dialogue

 

Andris says 'sensed the ripples ... who are you and how did you get here ...'

 

you say something (what doesn't matter)

 

Andris says something back about being the latest fool to be teleported here

 

Xan mentions something to the effect that we are safer here than we were

while hunted across the sword coast.

 

Then Andris says something else

 

Xan repeats his talk about being safer here than we were .

Link to comment

Duplicate tra lines,

 

bg1npc\tra\english\x#totsc.tra(119): @116  = ~So, here we are, stranded on an iced speck in the middle of the ocean, with no food or proper shelter. Do you find it amusing, <CHARNAME>, that we are actually safer now than ever before? Or are you too busy planning how we should fight our way out of this safety, to our imminent doom?~
bg1npc\tra\english\x#totsc.tra(149): @116  = ~So, here we are, stranded on an iced speck in the middle of the ocean, with no food or proper shelter. Do you find it amusing, <CHARNAME>, that we are actually safer now than ever before? Or are you too busy planning how we should fight our way out of this safety, to our imminent doom?~

repaired 11/22/08 prerelease v17.

 

No duplicate references in any other files; Xan's interjections with Andris =

/*  Xan */
I_C_T ~%tutu_var%ANDRIS~ 1 X#XANANDRIS1a
== ~%XAN_JOINED%~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID)~ THEN @116
END

//I_C_T ~%tutu_var%ANDRIS~ 2 X#X#XANANDRIS1b
//== ~%XAN_JOINED%~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID)~ THEN @116
//END

I_C_T ~%tutu_var%ANDRIS~ 3 X#XANANDRIS1c
== ~%XAN_JOINED%~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID)~ THEN @116
END

I_C_T ~%tutu_var%ANDRIS~ 4 X#XANANDRIS1d
== ~%XAN_JOINED%~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID)~ THEN @116
END

OK, so duplicate lines on each of these states.

 

Looking at the files, I think this is to make sure that the content plays, but in the pathway you took it must hit twice. Back with decompiled dialog in a sec...

 

// creator  : DLTCEP_enhanced_WeiDU (version 20800)
// argument : _ANDRIS.DLG
// game		 : .
// source	 : ./override/_ANDRIS.DLG
// dialog	 : ./DIALOG.TLK
// dialogF  : (none)

BEGIN ~_ANDRIS~

IF ~NumberOfTimesTalkedTo(0)
~ THEN BEGIN 0 // from:
 SAY #84321 /* ~Well, well, well. I sensed the ripples and there you are but... you are something new. Tell me, friend, how come you to this place?~ */
 IF ~~ THEN REPLY #84322 /* ~Against my will and none too pleased about it! Who in blazes are you?~ */ GOTO 1
 IF ~~ THEN REPLY #84323 /* ~I was asked to come. I'm here to retrieve an item for a friend. Who are you?~ */ GOTO 3
 IF ~~ THEN REPLY #84324 /* ~I was sent by Shandalar. Seems there is something of his on this island that he wants returned.~ */ GOTO 4
 IF ~~ THEN REPLY #84325 /* ~Probably the same way you did. Why don't you tell me your story and see if it's the same as mine?~ */ GOTO 2
 IF ~~ THEN REPLY #84326 /* ~Sensed the ripples? Speak some sense, man! And speak your name!~ */ GOTO 1
END

IF ~~ THEN BEGIN 1 // from: 0.4 0.0
 SAY #84327 /* ~I am Andris, and you will lower your voice or find yourself swimming. Hmm... perhaps you have come in the normal way after all. Most are not too happy about arriving here. No doubt you are confused, but I will explain. Here is the island. It has no other name than this, and is too small to appear on any map. By the stars I would place us deep in the Trackless Sea, perhaps even further afield than far-southern Chult, though I cannot really say.~ */
 IF ~~ THEN GOTO 2
 IF ~Global("X#XANANDRIS1a","GLOBAL",0)
InParty("xan")
InMyArea("xan")
!StateCheck("xan",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#XANANDRIS1a","GLOBAL",1)~ EXTERN ~_XANJ~ 102
END

IF ~~ THEN BEGIN 2 // from: 3.0 1.0 0.3
 SAY #84328 /* ~You are just the latest teleporting fool to be captured. This place seems a magnet of sorts. If you are powerful enough to transport without error across an ocean, you are apparently of sufficient power to be caught and dragged here. It is the very place that does it... seems to ensnare the energy. Needless to say, leaving the island by magical means seems entirely impossible. You will get used to seabird eggs if you wish to survive.~ */
 IF ~~ THEN REPLY #84329 /* ~Who constructed such a place? What is its purpose?~ */ GOTO 6
 IF ~~ THEN REPLY #84330 /* ~Is there no means to escape? It must be possible.~ */ GOTO 7
 IF ~~ THEN REPLY #84331 /* ~And you've taken the role of island greeter? I think not. What do you want?~ */ GOTO 8
 IF ~Global("X#ANDRIS2","GLOBAL",0)
InParty("xan")
InMyArea("xan")
!StateCheck("xan",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#ANDRIS2","GLOBAL",1)~ EXTERN ~_XANJ~ 112
 IF ~Global("X#ANDRIS2","GLOBAL",0)
InParty("alora")
InMyArea("alora")
!StateCheck("alora",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#ANDRIS2","GLOBAL",1)~ EXTERN ~_ALORAJ~ 26
END

IF ~~ THEN BEGIN 3 // from: 0.1
 SAY #84332 /* ~I am Andris, and that is some strange kind of friend you have. This isle is as uncharted as they get and may as well be a prison. The stars say we are deep in the Trackless Sea, perhaps even more south than Chult, if that is possible.~ */
 IF ~~ THEN GOTO 2
 IF ~Global("X#XANANDRIS1c","GLOBAL",0)
InParty("xan")
InMyArea("xan")
!StateCheck("xan",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#XANANDRIS1c","GLOBAL",1)~ EXTERN ~_XANJ~ 103
END

IF ~~ THEN BEGIN 4 // from: 0.2
 SAY #84333 /* ~Shandalar! Well, there is a name I have not heard in awhile. Aye, he was here. The bastard managed to escape, though I know not how. This isle is much like a prison, and is uncharted on any map I have seen. The stars indicate we are far to the south, but I cannot seem to get more precise than this.~ */
 IF ~~ THEN GOTO 5
 IF ~Global("X#XANANDRIS1d","GLOBAL",0)
InParty("xan")
InMyArea("xan")
!StateCheck("xan",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#XANANDRIS1d","GLOBAL",1)~ EXTERN ~_XANJ~ 104
END

IF ~~ THEN BEGIN 5 // from: 4.0
 SAY #84334 /* ~This place seems to ensnare magical energy, pulling it from the air. If you are a mage in transport, it pulls you as well. Plucks you from the ether and deposits you here. Leaving the island by magical means seems entirely impossible.~ */
 IF ~~ THEN REPLY #84335 /* ~Shandalar gave me the means. I have to find a cloak of his and then I can leave.~ */ GOTO 10
 IF ~~ THEN REPLY #84336 /* ~Perhaps I have a way off. Perhaps it is of value to you?~ */ GOTO 9
 IF ~~ THEN REPLY #84337 /* ~What is the purpose of this place? Who constructed it?~ */ GOTO 6
 IF ~~ THEN REPLY #84338 /* ~You seem quite at home here... deceptively so. What is it you want from me?~ */ GOTO 8
END

IF ~~ THEN BEGIN 6 // from: 5.2 2.0
 SAY #84339 /* ~I don't know an answer to either question. It could be a joke of the gods, or a test... or both. It is hard to tell with gods. It could be a natural phenomenon, though the tunnels below certainly are not. Trapped mages may have fashioned them for shelter however. There is little else to do here except plot, study, or go mad. I prefer to plot. On that note, if you would be so kind as to strip down and give me what you are carrying I would be ever so grateful.~ */
 IF ~~ THEN REPLY #84340 /* ~What? But why? Certainly we can come to some agreement?~ */ GOTO 12
 IF ~~ THEN REPLY #84341 /* ~If you want my equipment, you are going to have to take it!~ */ GOTO 11
 IF ~~ THEN REPLY #84342 /* ~Wait... I have a means to leave! Perhaps we can work out a deal.~ */ GOTO 10
 IF ~Global("X#VicAndr1","GLOBAL",0)
InParty("viconia")
InMyArea("viconia")
!StateCheck("viconia",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#VicAndr1","GLOBAL",1)~ EXTERN ~_VICONJ~ 43
END

IF ~~ THEN BEGIN 7 // from: 2.1
 SAY #84343 /* ~Oh, certainly it must. Whether this place is a joke, test or simply phenomena, it is just a matter of finding the proper method of exit. I favor the pure power theory, wherein you merely need an excess of magical resources to overpower the pull. I am gathering all the power I can, to whit I must ask that you strip down. Nothing personal, but I really need whatever you are carrying.~ */
 IF ~~ THEN REPLY #84340 /* ~What? But why? Certainly we can come to some agreement?~ */ GOTO 12
 IF ~~ THEN REPLY #84344 /* ~If you want my equipment you are going to have to take it!~ */ GOTO 11
 IF ~~ THEN REPLY #84345 /* ~Wait, I have a means to leave! Perhaps we can work out a deal.~ */ GOTO 10
 IF ~Global("X#VicAndr2","GLOBAL",0)
InParty("viconia")
InMyArea("viconia")
!StateCheck("viconia",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#VicAndr2","GLOBAL",1)~ EXTERN ~_VICONJ~ 44
END

IF ~~ THEN BEGIN 8 // from: 5.3 2.2
 SAY #84346 /* ~What do I want? What do I want!? To be free of this place! It does not matter whether this place is a joke, test or phenomena, I need more power to escape! If you would kindly strip of your belongings I would be ever so grateful.~ */
 IF ~~ THEN REPLY #84340 /* ~What? But why? Certainly we can come to some agreement?~ */ GOTO 12
 IF ~~ THEN REPLY #84344 /* ~If you want my equipment you are going to have to take it!~ */ GOTO 11
 IF ~~ THEN REPLY #84345 /* ~Wait, I have a means to leave! Perhaps we can work out a deal.~ */ GOTO 10
END

IF ~~ THEN BEGIN 9 // from: 5.1
 SAY #84347 /* ~PERHAPS it is of value? PERHAPS!? You are a fool to tempt me if you lie, and a fool to have mentioned it at all! I will not barter, and I will not bargain! I will take everything on your corpse and find the means myself! Be this place a test, joke or phenomena, I will be free of it!~ */
 IF ~~ THEN DO ~SetGlobal("DMWWAndrisHostile", "GLOBAL", 1)
Enemy()
~ EXIT
END

IF ~~ THEN BEGIN 10 // from: 8.2 7.2 6.2 5.0
 SAY #84348 /* ~You have the means to leave? You are a fool to tempt me if you are lying, and even more a fool if you tell the truth! I care not a whit for your task, nor for your lives! If you possess the means to leave I must have it and have it now! I shall take it from you! You should not wave food in front of those who starve!~ */
 IF ~~ THEN DO ~SetGlobal("DMWWAndrisHostile", "GLOBAL", 1)
Enemy()
~ EXIT
END

IF ~~ THEN BEGIN 11 // from: 8.1 7.1 6.1
 SAY #84349 /* ~Certainly. First you, then the others here. I need all the power I can get, and I don't mind taking it by force!~ */
 IF ~~ THEN DO ~SetGlobal("DMWWAndrisHostile", "GLOBAL", 1)
Enemy()
~ EXIT
END

IF ~~ THEN BEGIN 12 // from: 8.0 7.0 6.0
 SAY #84350 /* ~But why? I think I can overpower the pull of this place if I have enough magical energy. You may have items, or your very being may yield fuel. I care not which, and I am through talking!~ */
 IF ~~ THEN DO ~SetGlobal("DMWWAndrisHostile", "GLOBAL", 1)
Enemy()
~ EXIT
END

 

Ahah. Got it. I_C_T creates a state label and uses it to make it run only once. While a global can't be referenced immediately within a dialog, filtering it through another state (and a half - 1.5 states - tutorial 90% done on this but not posted yet) will work, but here we end up with four distinct I_C_T labels, thus four separate attempts to get the word in - and since thay are all different names, they can each be played.

 

Plus, there si one state with an I_C_T3:

/* Andris */
/* passback not required - no trans actions */
I_C_T3 ~%tutu_var%ANDRIS~ 2 X#ANDRIS2
== ~%ALORA_JOINED%~ IF ~InParty("alora") InMyArea("alora") !StateCheck("alora",CD_STATE_NOTVALID)~ THEN @11
== ~%XAN_JOINED%~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID)~ THEN @116
END

 

Unfortunately, you need all four of these to cover the possible pathways, so we can't drop any of them. Naming things the same will not work here; I think our only option is to add the globals created and see if it works:

 

/*  Xan */
I_C_T ~%tutu_var%ANDRIS~ 1 X#XANANDRIS1a
== ~%XAN_JOINED%~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID) Global("X#ANDRIS2","GLOBAL",0) Global("X#XANANDRIS1c","GLOBAL",0) Global("X#XANANDRIS1d","GLOBAL",0)~ THEN @116
END

//I_C_T ~%tutu_var%ANDRIS~ 2 X#X#XANANDRIS1b
//== ~%XAN_JOINED%~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID)~ THEN @116
//END

I_C_T ~%tutu_var%ANDRIS~ 3 X#XANANDRIS1c
== ~%XAN_JOINED%~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID) Global("X#ANDRIS2","GLOBAL",0) Global("X#XANANDRIS1a","GLOBAL",0) Global("X#XANANDRIS1d","GLOBAL",0)~ THEN @116
END

I_C_T ~%tutu_var%ANDRIS~ 4 X#XANANDRIS1d
== ~%XAN_JOINED%~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID) Global("X#ANDRIS2","GLOBAL",0) Global("X#XANANDRIS1a","GLOBAL",0) Global("X#XANANDRIS1c","GLOBAL",0) ~ THEN @116
END

 

and in the I_C_T3,

 

/* Andris */
/* passback not required - no trans actions */
I_C_T3 ~%tutu_var%ANDRIS~ 2 X#ANDRIS2
== ~%ALORA_JOINED%~ IF ~InParty("alora") InMyArea("alora") !StateCheck("alora",CD_STATE_NOTVALID)~ THEN @11
== ~%XAN_JOINED%~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID) Global("X#XANANDRIS1a","GLOBAL",0) Global("X#XANANDRIS1c","GLOBAL",0) Global("X#XANANDRIS1d","GLOBAL",0)~ THEN @116
END

 

This looks like it will block the second interjection on recycled pathways - if the state is filtered enough for the global to set. If someone has a savegame and can edit in the above code, please check to see if this solves the problem and post here.

 

EXIT: since checking for global=0 is pretty foolproof and should not damage anything, this is integrated into current prereleasev17 pending test results. Worst case scenario is that the code does nothing because there is not enough of a filter through replies to set any of the globals to 1.

Link to comment

I_C_T ~something~ ~somewhere~ c-thesamestatename

 

I_C_T ~something~ ~somewhere~ c-thesamestatename

 

I am pretty sure this results in a parse error. So I think

 

I_C_T ~%tutu_var%ANDRIS~ 1 X#XANANDRIS1

 

I_C_T ~%tutu_var%ANDRIS~ 3 X#XANANDRIS1

 

I_C_T ~%tutu_var%ANDRIS~ 4 X#XANANDRIS1

 

which will result in only having to check for the I_C_T3 content.

 

The I_C_T is creating the variable off of the statename, but I am pretty sure WeiDU wants unique statenames for each state. I think it will produce errors. If not, then the fix is just to rename the states identically - if someone runs a test, that would be cool. I would love it if I am wrong :)

Link to comment

I am using the same variable name in I_C_T in Ajantis without problems:

 

I_C_T PEONY 10 C#AjantisPeony

== PEONY IF ~InParty("C#Ajantis") InMyArea("C#Ajantis") !StateCheck("C#Ajantis",STATE_SLEEPING)~ THEN @683

== C#AjanJ IF ~InParty("C#Ajantis") InMyArea("C#Ajantis") !StateCheck("C#Ajantis",STATE_SLEEPING)~ THEN @681

END

 

I_C_T PEONY 11 C#AjantisPeony

== PEONY IF ~InParty("C#Ajantis") InMyArea("C#Ajantis") !StateCheck("C#Ajantis",STATE_SLEEPING)~ THEN @683

== C#AjanJ IF ~InParty("C#Ajantis") InMyArea("C#Ajantis") !StateCheck("C#Ajantis",STATE_SLEEPING)~ THEN @681

END

 

I_C_T PEONY 12 C#AjantisPeony

== PEONY IF ~InParty("C#Ajantis") InMyArea("C#Ajantis") !StateCheck("C#Ajantis",STATE_SLEEPING)~ THEN @683

== C#AjanJ IF ~InParty("C#Ajantis") InMyArea("C#Ajantis") !StateCheck("C#Ajantis",STATE_SLEEPING)~ THEN @681

END

Link to comment

Thank you - I will revise, then:

 

re-repair, 11/22/2008 prerelease v17

/*  Xan */
I_C_T ~%tutu_var%ANDRIS~ 1 X#XANANDRIS1
== ~%XAN_JOINED%~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID) Global("X#ANDRIS2","GLOBAL",0)~ THEN @116
END

//I_C_T ~%tutu_var%ANDRIS~ 2 X#XANANDRIS1
//== ~%XAN_JOINED%~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID)~ THEN @116
//END

I_C_T ~%tutu_var%ANDRIS~ 3 X#XANANDRIS1
== ~%XAN_JOINED%~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID) Global("X#ANDRIS2","GLOBAL",0)~ THEN @116
END

I_C_T ~%tutu_var%ANDRIS~ 4 X#XANANDRIS1
== ~%XAN_JOINED%~ IF ~InParty("xan") InMyArea("xan") !StateCheck("xan",CD_STATE_NOTVALID) Global("X#ANDRIS2","GLOBAL",0) ~ THEN @116
END

 

and leave the Alora/Xan I_C_T3 as above.

Link to comment

Archived

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

×
×
  • Create New...