Jump to content

modifying IWDEE dialogue


subtledoctor

Recommended Posts

Posted (edited)

Anyone know why this is throwing a syntax error?

ACTION_IF GAME_IS ~iwdee~ BEGIN
	<<<<<<<< d5/delisia+.d
EXTEND_BOTTOM DELISIA 0
  IF ~Global("Bard_Greeting","GLOBAL",0)
          OR(9)
        Kit(LastTalkedToBy,D5_BARD)
        Kit(LastTalkedToBy,D5_BLADE)
        Kit(LastTalkedToBy,D5_JESTER)
        Kit(LastTalkedToBy,D5_SKALD)
        Kit(LastTalkedToBy,D5_GALLANT)
        Kit(LastTalkedToBy,D5_HERALD)
        Kit(LastTalkedToBy,D5_MEISTER)
        Kit(LastTalkedToBy,D5_JINXER)
        Kit(LastTalkedToBy,D5_AGENT)~
    THEN REPLY #5153
    DO ~SetGlobal("Bard_Greeting","GLOBAL",1)
        AddXP2DA("Level_1_Easy")
        DisplayStringNoNameDlg(Myself,30979)
        SetGlobal("Know_Elisia","GLOBAL",1)
        AddJournalEntry(23507,QUEST)~
    GOTO 3
  IF ~Global("Bard_Greeting","GLOBAL",1)
          OR(9)
        Kit(LastTalkedToBy,D5_BARD)
        Kit(LastTalkedToBy,D5_BLADE)
        Kit(LastTalkedToBy,D5_JESTER)
        Kit(LastTalkedToBy,D5_SKALD)
        Kit(LastTalkedToBy,D5_GALLANT)
        Kit(LastTalkedToBy,D5_HERALD)
        Kit(LastTalkedToBy,D5_MEISTER)
        Kit(LastTalkedToBy,D5_JINXER)
        Kit(LastTalkedToBy,D5_AGENT)~
    THEN REPLY #5157
    EXIT
END

EXTEND_BOTTOM DELISIA 1
  IF ~Global("Bard_Greeting","GLOBAL",0)
          OR(9)
        Kit(LastTalkedToBy,D5_BARD)
        Kit(LastTalkedToBy,D5_BLADE)
        Kit(LastTalkedToBy,D5_JESTER)
        Kit(LastTalkedToBy,D5_SKALD)
        Kit(LastTalkedToBy,D5_GALLANT)
        Kit(LastTalkedToBy,D5_HERALD)
        Kit(LastTalkedToBy,D5_MEISTER)
        Kit(LastTalkedToBy,D5_JINXER)
        Kit(LastTalkedToBy,D5_AGENT)~
    THEN REPLY #5153
    DO ~SetGlobal("Bard_Greeting","GLOBAL",1)
        AddXP2DA("Level_1_Easy")
        DisplayStringNoNameDlg(Myself,30979)~
    GOTO 3
  IF ~Global("Bard_Greeting","GLOBAL",1)
          OR(9)
        Kit(LastTalkedToBy,D5_BARD)
        Kit(LastTalkedToBy,D5_BLADE)
        Kit(LastTalkedToBy,D5_JESTER)
        Kit(LastTalkedToBy,D5_SKALD)
        Kit(LastTalkedToBy,D5_GALLANT)
        Kit(LastTalkedToBy,D5_HERALD)
        Kit(LastTalkedToBy,D5_MEISTER)
        Kit(LastTalkedToBy,D5_JINXER)
        Kit(LastTalkedToBy,D5_AGENT)~
    THEN REPLY #5157
    EXIT
END

EXTEND_BOTTOM DELISIA 10
  IF ~!Class(LastTalkedToBy,BARD_ALL)
    OR(9)
        Kit(LastTalkedToBy,D5_BARD)
        Kit(LastTalkedToBy,D5_BLADE)
        Kit(LastTalkedToBy,D5_JESTER)
        Kit(LastTalkedToBy,D5_SKALD)
        Kit(LastTalkedToBy,D5_GALLANT)
        Kit(LastTalkedToBy,D5_HERALD)
        Kit(LastTalkedToBy,D5_MEISTER)
        Kit(LastTalkedToBy,D5_JINXER)
        Kit(LastTalkedToBy,D5_AGENT)~
    THEN REPLY #34554
    GOTO 13
>>>>>>>>
	COMPILE ~d5/delisia+.d~
	END
Edited by subtledoctor
Posted

I'm not sure. My inlined .d-files start like this:

<<<<<<<< ...inlined/ja#gervis_bg1npc.d

(...)

>>>>>>>>

 COMPILE EVALUATE_BUFFER
   ~...inlined/ja#gervis_bg1npc.d~ 

In case your syntax is also valid, is there any more info with regard to the error, and / or a line number etc.?

Posted

It's a syntax error, in the virtual .d file, at the last line of the file.

I've found that the imaginary directory you claim the inlined file is in is completely arbitrary; some use "inlined," while others use things like their moder prefix.  I like using my modder prefix for some reason.  It works just the same.

Anyway I got around this with a fudge: instead of EXTENDING the responses in the .dlg file, I just replace the IF conditionals:

  COPY_EXISTING ~delisia.dlg~ ~OVERRIDE~
    DECOMPILE_AND_PATCH BEGIN
      REPLACE_TEXTUALLY ~Class(LastTalkedToBy,BARD_ALL)~
	~OR(10)
        Class(LastTalkedToBy,BARD_ALL)
        Kit(LastTalkedToBy,D5_BARD)
        Kit(LastTalkedToBy,D5_BLADE)
        Kit(LastTalkedToBy,D5_JESTER)
        Kit(LastTalkedToBy,D5_SKALD)
        Kit(LastTalkedToBy,D5_GALLANT)
        Kit(LastTalkedToBy,D5_HERALD)
        Kit(LastTalkedToBy,D5_MEISTER)
        Kit(LastTalkedToBy,D5_JINXER)
        Kit(LastTalkedToBy,D5_AGENT)~
    END
  BUT_ONLY

Not ideal, but it works - the mermaid or whatever sees my mage/thief as a bard, and I get my extra XP.  It's the only bard-specific interaction in IWD and the dialogue is pretty simple, so I might just leave it like this.

I already have BG2 stronghold stuff working with the safer EXTEND_BOTTOM method... because CamDawg spoonfed us the necessary code in a thread around here.  😆  Now on to SoD, where there are about 30 dialogues in need of patching.  :( Then I can finally release what might be the coolest mod I've ever made...

Posted

Inlined files share a common namespace, so there are edge-case bug possibilities if you don’t use a unique inline name and some other mod in your install stack uses that same name.

Posted

Actually I figured it out: the .d file includes not just the dialogue stuff, but the Weidu EXTEND_BOTTOM command to insert its content into the in-game dialogue. It's not terribly clear ftom the error message, but the inlined code was lacking and END to close out that command. 

Posted

Oh, you are right! Now I see that he last EXTEND_BOTTOM was missing an END, indeed. Man, and I looked at that really carefully. Oh well.

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