Jump to content

Jaheira and Zeke


Bearwere

Recommended Posts

If Branwen is in the party (and you are using v16) then she should comment on the fact. I will take a look at the worklogs, but I am pretty sure berelinde did what we can do on this without destroying the state for other folks' use. Logging it for reinvestigation - thank you!

Link to comment
I'm assuming you mean he still offers to sell the scroll.

oh crap, yes of course

 

If Branwen is in the party (and you are using v16) then she should comment on the fact. I will take a look at the worklogs, but I am pretty sure berelinde did what we can do on this without destroying the state for other folks' use. Logging it for reinvestigation - thank you!

no, she isn't.

Link to comment
// creator  : DLTCEP_enhanced_WeiDU (version 20800)
// argument : _ZEKE.DLG
// game		 : .
// source	 : ./override/_ZEKE.DLG
// dialog	 : ./DIALOG.TLK
// dialogF  : (none)

BEGIN ~_ZEKE~
//////////////////////////////////////////////////
// WARNING: this file contains non-trivial WEIGHTs
//////////////////////////////////////////////////

IF WEIGHT #1 /* Triggers after states #: 4 even though they appear after this state */
~True()
~ THEN BEGIN 0 // from:
 SAY #77080 /* ~Come one, come all!  Take a look at the stone warrior maiden.  How long has she been trapped in this petrified form, no one knows!  Be the first to learn, for the mere price of 500 gold.  For that small amount of money, I shall give you a magic scroll, and with this scroll you can release the maiden from her stone prison.  Think of the gratitude she would feel to her saviors.  Perhaps she's a princess from some far off land, or maybe a powerful sorceress in search of a concubine.  You can't afford not to know!  Buy the scroll!~ */
 IF ~~ THEN REPLY #77081 /* ~Sorry, we're not interested.~ */ GOTO 1
 IF ~PartyGoldGT(499)
~ THEN REPLY #77082 /* ~Sure, give us the scroll.~ */ GOTO 2
 IF ~~ THEN REPLY #77083 /* ~We don't have the money right now.~ */ GOTO 3
 IF ~!InParty("branwen")
!StateCheck("branwen",CD_STATE_NOTVALID)
~ THEN REPLY #101526 /* ~You're too late. She is stone no longer.~ */ GOTO 5
 IF ~Global("X#JaheiraZeke","GLOBAL",0)
StateCheck("branwen",CD_STATE_NOTVALID)
InParty("jaheira")
InMyArea("jaheira")
!StateCheck("jaheira",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#JaheiraZeke","GLOBAL",1)~ EXTERN ~_JAHEIJ~ 124
 IF ~Global("X#ZEKE0","GLOBAL",0)
InParty("viconia")
InMyArea("viconia")
!StateCheck("viconia",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#ZEKE0","GLOBAL",1)~ GOTO 10
 IF ~Global("X#ZEKE0","GLOBAL",0)
InParty("viconia")
InMyArea("viconia")
!StateCheck("viconia",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#ZEKE0","GLOBAL",1)~ EXTERN ~_VICONJ~ 257
 IF ~Global("X#ZEKE0","GLOBAL",0)
InParty("garrick")
InMyArea("garrick")
!StateCheck("garrick",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#ZEKE0","GLOBAL",1)~ GOTO 12
 IF ~Global("X#ZEKE0","GLOBAL",0)
InParty("garrick")
InMyArea("garrick")
!StateCheck("garrick",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#ZEKE0","GLOBAL",1)~ EXTERN ~_GARRIJ~ 267
END

IF ~~ THEN BEGIN 1 // from: 15.0 14.0 13.0 12.0 11.0 10.0 0.0
 SAY #77084 /* ~Your loss.~ */
 IF ~~ THEN EXIT
END

IF ~~ THEN BEGIN 2 // from: 15.1 14.1 13.1 12.1 11.1 10.1 0.1
 SAY #77085 /* ~You won't regret this!  Here's the scroll, and I wish you well.  Bye now.~ */
 IF ~~ THEN DO ~GiveItem("_SCRLPET",LastTalkedToBy)
TakePartyGold(500)
EscapeArea()
~ EXIT
END

IF ~~ THEN BEGIN 3 // from: 15.2 14.2 13.2 12.2 11.2 10.2 0.2
 SAY #77086 /* ~Well, if you ever get the money, I'll be here waiting.~ */
 IF ~~ THEN EXIT
END

IF WEIGHT #0 ~InParty("branwen")
~ THEN BEGIN 4 // from:
 SAY #77087 /* ~The statue has come to life!!~ */
 IF ~~ THEN DO ~EscapeArea()
~ EXIT
 IF ~Global("X#BranwenAlive","GLOBAL",0)
InParty("branwen")
InMyArea("branwen")
!StateCheck("branwen",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#BranwenAlive","GLOBAL",1)~ EXTERN ~_BRANWJ~ 33
END

IF ~~ THEN BEGIN 5 // from: 15.3 14.3 13.3 12.3 11.3 10.3 0.3
 SAY #101527 /* ~The statue has come to life?! Gotta go!~ */
 IF ~~ THEN DO ~EscapeArea()
~ EXIT
END

IF ~~ THEN BEGIN 6 // from:
 SAY #101529 /* ~Er... Gotta go!~ */
 IF ~~ THEN DO ~EscapeArea()
~ EXIT
END

IF ~~ THEN BEGIN 7 // from:
 SAY #101647 /* ~Why yes I do! As I said, for mere 500 gold...~ */
 IF ~~ THEN DO ~GiveItemCreate("_SCRLPET","jaheira",1,0,0)
~ EXIT
 IF ~InParty("jaheira")
InMyArea("jaheira")
!StateCheck("jaheira",CD_STATE_NOTVALID)
~ THEN GOTO 9
 IF ~InParty("jaheira")
InMyArea("jaheira")
!StateCheck("jaheira",CD_STATE_NOTVALID)
~ THEN EXTERN ~_JAHEIJ~ 126
 IF ~InParty("jaheira")
InMyArea("jaheira")
!StateCheck("jaheira",CD_STATE_NOTVALID)
~ THEN GOTO 8
 IF ~InParty("jaheira")
InMyArea("jaheira")
!StateCheck("jaheira",CD_STATE_NOTVALID)
~ THEN EXTERN ~_JAHEIJ~ 125
END

IF ~~ THEN BEGIN 8 // from: 7.3
 SAY #101649 /* ~OW! You... you hit me! ~ */
 IF ~~ THEN DO ~GiveItemCreate("_SCRLPET","jaheira",1,0,0)
~ EXIT
 IF ~InParty("jaheira")
InMyArea("jaheira")
!StateCheck("jaheira",CD_STATE_NOTVALID)
~ THEN GOTO 9
 IF ~InParty("jaheira")
InMyArea("jaheira")
!StateCheck("jaheira",CD_STATE_NOTVALID)
~ THEN EXTERN ~_JAHEIJ~ 126
END

IF ~~ THEN BEGIN 9 // from: 8.1 7.1
 SAY #101651 /* ~Well... Oookay. I wanted to see myself if that scroll would work...~ */
 IF ~~ THEN DO ~GiveItemCreate("_SCRLPET","jaheira",1,0,0)
~ EXIT
END

IF ~~ THEN BEGIN 10 // from: 0.5
 SAY #106817 /* ~A bargain at 500 gold!~ */
 IF ~~ THEN REPLY #77081 /* ~Sorry, we're not interested.~ */ GOTO 1
 IF ~PartyGoldGT(499)
~ THEN REPLY #77082 /* ~Sure, give us the scroll.~ */ GOTO 2
 IF ~~ THEN REPLY #77083 /* ~We don't have the money right now.~ */ GOTO 3
 IF ~!InParty("branwen")
!StateCheck("branwen",CD_STATE_NOTVALID)
~ THEN REPLY #101526 /* ~You're too late. She is stone no longer.~ */ GOTO 5
 IF ~Global("X#JaheiraZeke","GLOBAL",0)
StateCheck("branwen",CD_STATE_NOTVALID)
InParty("jaheira")
InMyArea("jaheira")
!StateCheck("jaheira",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#JaheiraZeke","GLOBAL",1)~ EXTERN ~_JAHEIJ~ 124
END

IF ~~ THEN BEGIN 11 // from:
 SAY #106817 /* ~A bargain at 500 gold!~ */
 IF ~~ THEN REPLY #77081 /* ~Sorry, we're not interested.~ */ GOTO 1
 IF ~PartyGoldGT(499)
~ THEN REPLY #77082 /* ~Sure, give us the scroll.~ */ GOTO 2
 IF ~~ THEN REPLY #77083 /* ~We don't have the money right now.~ */ GOTO 3
 IF ~!InParty("branwen")
!StateCheck("branwen",CD_STATE_NOTVALID)
~ THEN REPLY #101526 /* ~You're too late. She is stone no longer.~ */ GOTO 5
 IF ~Global("X#JaheiraZeke","GLOBAL",0)
StateCheck("branwen",CD_STATE_NOTVALID)
InParty("jaheira")
InMyArea("jaheira")
!StateCheck("jaheira",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#JaheiraZeke","GLOBAL",1)~ EXTERN ~_JAHEIJ~ 124
END

IF ~~ THEN BEGIN 12 // from: 0.7
 SAY #106815 /* ~Exactly, my friend. What say ye~ */
 IF ~~ THEN REPLY #77081 /* ~Sorry, we're not interested.~ */ GOTO 1
 IF ~PartyGoldGT(499)
~ THEN REPLY #77082 /* ~Sure, give us the scroll.~ */ GOTO 2
 IF ~~ THEN REPLY #77083 /* ~We don't have the money right now.~ */ GOTO 3
 IF ~!InParty("branwen")
!StateCheck("branwen",CD_STATE_NOTVALID)
~ THEN REPLY #101526 /* ~You're too late. She is stone no longer.~ */ GOTO 5
 IF ~Global("X#JaheiraZeke","GLOBAL",0)
StateCheck("branwen",CD_STATE_NOTVALID)
InParty("jaheira")
InMyArea("jaheira")
!StateCheck("jaheira",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#JaheiraZeke","GLOBAL",1)~ EXTERN ~_JAHEIJ~ 124
 IF ~InParty("viconia")
InMyArea("viconia")
!StateCheck("viconia",CD_STATE_NOTVALID)
~ THEN GOTO 13
 IF ~InParty("viconia")
InMyArea("viconia")
!StateCheck("viconia",CD_STATE_NOTVALID)
~ THEN EXTERN ~_VICONJ~ 258
END

IF ~~ THEN BEGIN 13 // from: 12.5
 SAY #106817 /* ~A bargain at 500 gold!~ */
 IF ~~ THEN REPLY #77081 /* ~Sorry, we're not interested.~ */ GOTO 1
 IF ~PartyGoldGT(499)
~ THEN REPLY #77082 /* ~Sure, give us the scroll.~ */ GOTO 2
 IF ~~ THEN REPLY #77083 /* ~We don't have the money right now.~ */ GOTO 3
 IF ~!InParty("branwen")
!StateCheck("branwen",CD_STATE_NOTVALID)
~ THEN REPLY #101526 /* ~You're too late. She is stone no longer.~ */ GOTO 5
 IF ~Global("X#JaheiraZeke","GLOBAL",0)
StateCheck("branwen",CD_STATE_NOTVALID)
InParty("jaheira")
InMyArea("jaheira")
!StateCheck("jaheira",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#JaheiraZeke","GLOBAL",1)~ EXTERN ~_JAHEIJ~ 124
END

IF ~~ THEN BEGIN 14 // from:
 SAY #106815 /* ~Exactly, my friend. What say ye~ */
 IF ~~ THEN REPLY #77081 /* ~Sorry, we're not interested.~ */ GOTO 1
 IF ~PartyGoldGT(499)
~ THEN REPLY #77082 /* ~Sure, give us the scroll.~ */ GOTO 2
 IF ~~ THEN REPLY #77083 /* ~We don't have the money right now.~ */ GOTO 3
 IF ~!InParty("branwen")
!StateCheck("branwen",CD_STATE_NOTVALID)
~ THEN REPLY #101526 /* ~You're too late. She is stone no longer.~ */ GOTO 5
 IF ~Global("X#JaheiraZeke","GLOBAL",0)
StateCheck("branwen",CD_STATE_NOTVALID)
InParty("jaheira")
InMyArea("jaheira")
!StateCheck("jaheira",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#JaheiraZeke","GLOBAL",1)~ EXTERN ~_JAHEIJ~ 124
 IF ~InParty("viconia")
InMyArea("viconia")
!StateCheck("viconia",CD_STATE_NOTVALID)
~ THEN GOTO 15
 IF ~InParty("viconia")
InMyArea("viconia")
!StateCheck("viconia",CD_STATE_NOTVALID)
~ THEN EXTERN ~_VICONJ~ 259
END

IF ~~ THEN BEGIN 15 // from: 14.5
 SAY #106817 /* ~A bargain at 500 gold!~ */
 IF ~~ THEN REPLY #77081 /* ~Sorry, we're not interested.~ */ GOTO 1
 IF ~PartyGoldGT(499)
~ THEN REPLY #77082 /* ~Sure, give us the scroll.~ */ GOTO 2
 IF ~~ THEN REPLY #77083 /* ~We don't have the money right now.~ */ GOTO 3
 IF ~!InParty("branwen")
!StateCheck("branwen",CD_STATE_NOTVALID)
~ THEN REPLY #101526 /* ~You're too late. She is stone no longer.~ */ GOTO 5
 IF ~Global("X#JaheiraZeke","GLOBAL",0)
StateCheck("branwen",CD_STATE_NOTVALID)
InParty("jaheira")
InMyArea("jaheira")
!StateCheck("jaheira",CD_STATE_NOTVALID)
~ THEN DO ~SetGlobal("X#JaheiraZeke","GLOBAL",1)~ EXTERN ~_JAHEIJ~ 124
END

 

I think I get how you can trigger the second scroll...

 

if Branwen is not in the party, and has not been brought back to life, and the party has talked to Zeke the first time with Jaheira in the party, then

 

!InParty + CD_S_NV + Jaheira interjection looks like it might be a loophole.

 

in the first code added, x#brint.d

EXTEND_BOTTOM ~%tutu_var%ZEKE~ 0 
+ ~!InParty("branwen") !StateCheck("branwen",CD_STATE_NOTVALID)~ + @1001 + X#UnpetrifiedBranwen
END

APPEND ~%tutu_var%ZEKE~
IF ~~ X#UnpetrifiedBranwen
SAY @1002
IF ~~ THEN DO ~EscapeArea()~ EXIT
END
END

 

and then we add in the rest of the interjections through other files.

 

So it looks like we need an added

 

IF ~Global("X#JaheiraZeke","GLOBAL",1) !InParty("branwen") StateCheck("branwen",CD_STATE_NOTVALID)~ THEN REPLY @12  DO ~EscapeArea()~ EXIT	 /* = ~Er... Gotta go!~  */

 

 

(someone recheck this logic, please.)

Link to comment

OK, testing out the vanilla Branwen/Zeke etc. stuff.

 

Arkanis alone, not enough cash, not interested: correct responses from Zeke. He stays.

Arkanis alone, 8000 cash, not interested or not right now: correct responses from Zeke. He stays. Yes, we want the scroll: correct response. Zeke takes off.

 

Add Jaheira to the mix.

 

A+J, correct responses from Zeke, Zeke stays - but as reported, party can revisit immediately and get another scroll.

a>> After Branwen is unpetrified and joins party, talking to him results in correct behavior - he spouts his line takes off.

b>> After Branwen is unpetrified and does not join/is not asked to join, talking to him results in correct behavior - he spouts his original quest dialog, shilling for cash,

b-1>>> but the player has the choice to gently remind him that she is no longer petrified - he realizes that the game is up, spouts his line, and takes off. OR

b-2>>> but if the player has the cash on hand, the player has the choice to purchase a scroll and Zeke takes off.

 

 

Testing with the following addition:

x#brint.d

EXTEND_BOTTOM ~%tutu_var%ZEKE~ 0 
+ ~!InParty("branwen") !StateCheck("branwen",CD_STATE_NOTVALID)~ + @1001 + X#UnpetrifiedBranwen
END

APPEND ~%tutu_var%ZEKE~
IF ~~ X#UnpetrifiedBranwen
SAY @1002
IF ~~ THEN DO ~EscapeArea()~ EXIT
END

END

changed to

EXTEND_BOTTOM ~%tutu_var%ZEKE~ 0 
+ ~!InParty("branwen") !StateCheck("branwen",CD_STATE_NOTVALID)~ + @1001 + X#UnpetrifiedBranwen
IF ~Global("X#JaheiraZeke","GLOBAL",1)~ THEN GOTO X#JaheiraHitZeke
END

APPEND ~%tutu_var%ZEKE~
IF ~~ X#UnpetrifiedBranwen
SAY @1002
IF ~~ THEN DO ~EscapeArea()~ EXIT
END

IF ~~ X#JaheiraHitZeke
SAY @12
IF ~~ THEN DO ~EscapeArea()~ EXIT
END

END

 

Testing...

 

ok.

If the party comes along and speaks to Zeke and accepts the scroll, Zeke takes off as expected.

 

If the party comes along and unpetrifies Branwen before speaking to Zeke, or after speaking to Zeke and refusing the scroll they use another means of unpetrifying her, but do not accept Branwen into the party, the party can now

a>> tell Zeke that Branwen is unpetrified and he takes off.

b>> purchase that scroll from him anyways.

 

If the party comes along with any combination of folks including Jaheira, and uses some other means of unpetrifying Branwen before speaking to him, and Branwen is not in the party when Zeke is spoken to,

a>> tell Zeke that Branwen is unpetrified and he takes off.

b>> purchase that scroll from him anyways.

 

If the party adds Branwen then the Branwen interjection happens and all is fine: Zeke flees from the statue come to life and Branwen does her comment.

 

If the party comes along and talks to Zeke first about the scroll, with Jaheira in the party, her interjection plays (and any others do too).

>> Talking to Zeke again without unpetrification of Branwen results in him starting his schilling for cash, but then he realizes it is Jaheira coming back, and since she told him to "get out of here" he takes off.

>> Talking to Zeke again after unpetrification of Branwen results in him starting his schilling for cash, but then he realizes it is Jaheira coming back, and since she told him to "get out of here" he takes off.

 

 

repaired 11/29/2008 prerelease v17

Link to comment

Archived

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

×
×
  • Create New...