Jump to content

Ascension mod compatibility


Recommended Posts

9 minutes ago, DavidW said:

I’m not moving existing dialog states. Iylos interjects into dialog states that are added by Ascension.

Ah, gotcha.

I would just use STATE_WHICH_SAYS to identify the state numbers in case that suffices.

Link to post

Just another thought: It would also be possible to move Iylos' crossmod content into the Crossmod Banter Pack. This way, you wouldn't have to deal with it in Ascension at all.

Link to post
1 hour ago, jastey said:

Ah, gotcha.

I would just use STATE_WHICH_SAYS to identify the state numbers in case that suffices.

Does STATE_WHICH_SAYS work here? The dialog lines are Ascension-added, after all: Iylos won't know which they are.

I guess you could parse Ascension's tra files, but that's getting messy, particularly when non-English installs are allowed for.

I may be missing something here; STATE_WHICH_SAYS isn't something I use much.

In a moment I'll do a separate thread on how I'm currently managing interjections into Ascension; if it turns out there's a better method, I'd be happy to hear about it.

As for Crossmod - it's of course up to you as Iylos's maintainer, but my inclination is not to - I don't think people think of Ascension as an NPC mod (and it isn't, really: it's just that Balthazar functions a bit like an NPC for the purposes of the final Solar conversation). As and when Iylos handles Ascension correctly, I'd be inclined to enforce the Ascension->Iylos install order, by telling Ascension not to install if Iylos is there already.

Link to post
9 hours ago, jastey said:

Unless Imoen Romance gets installed before any NPC mods you will never be able to catch all of them. Would be recoding so that Imoen says her first original line and then romance added content would play an option for you?

This is what I did for Edwin Romance (and also Keldorn): For the Finsol01 intrjections, he says his first original line. Then, in romance case, I do INTERJECT with the romance stuff and at the end COPY_TRANS edwin25J xx (xx being his original interjection state so the other interjections can go on as they would originally).

This way, I do not have to worry about other NPC mods installed before the romance mods and having wrong transitions in their dialogues I will never be able to catch and change. The finsol01 dialogue branch gets very simple because it doesn't interest me at all, I add Edwin's Romance content to Edwin25J and am done with it!

And also, it ensures that all other NPCs get to say their piece, as well, because not using COPY_TRANS would lead to new added NPCs being skipped.

 

Unfortunately i am not the dialogue writer for the mod, and he is 'retired' now and doing this would require significant rewrite of that portion.

I am not too bothered by this problem for new NPC'S, as its been a long-standing tradition to install new npc mods last and if they do inerject_tran_copy it will work.

Link to post

On Imoen romance compatibility:

The problem is that as currently coded, Imoen romance needs to redirect Imoen redirections to new blocks: block 15 gets redirected to 'FD', blocks 18 and 19 get redirected to 'finalbreak'.

I would be inclined to repurpose those hardcoded numbers for the new blocks instead: that is, in FinalConversation.d, I'd do

Quote

REPLACE imoen25j

IF ~~ THEN 15
    SAY ~<CHARNAME>...~ [IRDusk]
    IF ~!Global("ImoenRomanceActive","GLOBAL",2) OR(2) Global("ImoenRomanceActive","GLOBAL",3) !Global("IRTBhaalImoen","GLOBAL",1)~ THEN GOTO imoen_15_old
    IF ~Global("ImoenRomanceActive","GLOBAL",2) Global("IRTImoenWarnedAboutLeaving","GLOBAL",1) !GlobalLT("IRTLoveMeter","GLOBAL",7)~ THEN GOTO FDWarned // Imoen was warned about the player probably leaving
    IF ~Global("ImoenRomanceActive","GLOBAL",2) !Global("IRTImoenWarnedAboutLeaving","GLOBAL",1) !GlobalLT("IRTLoveMeter","GLOBAL",7)~ THEN GOTO FDUnwarned // Imoen wasn't warned
    IF ~Global("ImoenRomanceActive","GLOBAL",2) !Global("IRTBhaalImoen","GLOBAL",1) GlobalLT("IRTLoveMeter","GLOBAL",7)~ THEN DO ~SetGlobal("IRTEpBreakup","GLOBAL",1) SetGlobal("ImoenRomanceActive","GLOBAL",5)~ GOTO FDBreakup // Love meter is too low, Imoen breaks up with the player
    IF ~!Global("ImoenRomanceActive","GLOBAL",2) !Global("ImoenRomanceActive","GLOBAL",3) Global("IRTBhaalImoen","GLOBAL",1)~ THEN DO ~SetGlobal("IRTCorruptProposal","GLOBAL",1)~ GOTO FDCorrupt // Imoen isn't romanced but the player corrupted her
END

    IF ~~ THEN 18
       SAY ~Wow.~

    // Imoen not romanced, not corrupt (Vanilla responses - since priority is given from bottom to top, these will only be followed if none of the stuff below is met)
        IF ~Global("PlayerChoseEssence","GLOBAL",1) Global("ImoenRomanceActive","GLOBAL",0)~ GOTO imoen_18_old
        IF ~Global("PlayerChoseEssence","GLOBAL",0) Global("ImoenRomanceActive","GLOBAL",0)~ GOTO imoen_19_old
<everything else in the current 'finalbreak' script block>

END

IF ~~ THEN 19

<exact copy of the '18' block>

END

Then, in the APPEND bit, you also include

Quote

IF ~~ THEN imoen_15_old

  SAY #67917

  IF ~~ THEN GOTO 16
END

IF ~~ THEN imoen_18_old

  SAY #68088 
  IF ~True()~ THEN EXTERN ~FINSOL01~ 33
  IF ~IsValidForPartyDialog("Valygar")
Global("ValygarRomanceActive","GLOBAL",2)~ THEN EXTERN ~VALYG25J~ 11
  IF ~IsValidForPartyDialog("Anomen")
Global("AnomenRomanceActive","GLOBAL",2)~ THEN EXTERN ~ANOME25J~ 20
  IF ~IsValidForPartyDialog("Viconia")
Global("ViconiaRomanceActive","GLOBAL",2)~ THEN EXTERN ~VICON25J~ 18
  IF ~IsValidForPartyDialog("Aerie")
Global("AerieRomanceActive","GLOBAL",2)~ THEN EXTERN ~AERIE25J~ 20
  IF ~IsValidForPartyDialog("Jaheira")
Global("JaheiraRomanceActive","GLOBAL",2)~ THEN EXTERN ~JAHEI25J~ 18
END

IF ~~ THEN imoen_19_old

  SAY #68091 
  IF ~~ THEN GOTO 20
END

 

(These are just renamed copies of imoen25j's blocks 15, 18, 19.)

That lets you avoid any modifications to the solar's script and any problems with Ascension or extra NPCs, without needing to allow explicitly for Ascension and without having to restructure Imoen's dialog.

The downside is that if some other mod wants to interject into Imoen's comment to the solar, it'll interject at slightly the wrong place. But that strikes me as an edge case, and less serious than the alternative (which risks Imoen's dramatically critical final lines being skipped entirely).

Comments welcome from people who spend more time with NPCs than me. (@Jastey ?)

 

Link to post
Posted (edited)

Actually i like where your suggestion is going, i think its similar to Jastey's.

I will test it out to see if there's any issues unforeseen.

Edited by vanatos
Link to post
Posted (edited)

Thanks @DavidW and @jastey

I have implemented basically the suggestion above, i think this greatly improves the stability of the final conversation with Imoen.

One important question, is referencing the TLK line like #68091 for instance, guaranteed to be the same both for EE and Vanilla?

Edited by vanatos
Link to post

Yes, that's basically what I suggested. (I would've tried to prevent a REPLACE but in the end, using Imoen's first line and leading on from there or replacing it and then leading on from there isn't such a difference, as DavidW said other mods will interject into the wrong state anyhow.)

One thing for the romance additons, if you haven't already:

Make sure they end with a COPY_TRANS imoen25j 16 / COPY_TRANS imoen25j 18 / COPY_TRANS imoen25j 20 (depending on the dialogue path) for compatibility with other NPC mods.

 

2 hours ago, vanatos said:

is referencing the TLK line like #68091 for instance, guaranteed to be the same both for EE and Vanilla?

Yes, it's in all BGII games the same string.

 

Link to post

@vanatos: is this something you're likely to release in the next few days? If so I'll disable my current Ascension-side workaround for this issue.

Link to post

Is there anything special regarding Turnabout in light of the recent updates?  The current version (1.3) of Turnabout has the following in the Readme

Quote

Q: Does Turnabout alter core Ascension code?
A: Only slightly, and not in a way that affects gameplay. Specifically, we edit certain scripts so that your restored Turnabout allies are placed in formation at the end of the final battle. We also change the animation associated with PPGUY02.CRE (the part of the pool that "talks" to the PC) so that it works correctly with NPC interjections. We do not alter the behavior of Melissan, the Five, Irenicus, Bodhi, or the pool guardians in any way.

Q: Is Turnabout compatible with other Ascension add-ons?
A: We have not tested Turnabout with other mods which alter the TOB endgame, except for Wheels of Prophecy, which is fully compatible.

 

Link to post
16 hours ago, Hoverdawg said:

Is the Ascension-Wheels of Prophecy compability fixed now, or should I refrain from using WoP for now?

I'm sad to say this, but I wouldn't recommend WoP right now. There are a lot of serious bugs being reported (there have been since EE, really). It needs some sustained love; it'll get it when I have a chance.

Link to post
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...