Jump to content

Question to EET_NPC_TRANSITION


Recommended Posts

 

11 hours ago, K4thos said:

none of these are set for Skie for some reason.

Yes, it was me, not the function. I realize only now that you considered way more possibilities for the ToB spawning and the deactivation of original DV at the fate spirit summoning than I was aware of. Once again I bow to the degree of organisation and consider-it-all you show in EET! :worship:

Thank you for looking into this!

Link to comment
On 2/12/2018 at 12:23 PM, jastey said:

[4] Setting the "NPCPartyBG2" variable needs to be added to the mod NPC's SoA script as well as [EDIT: to the NPC's script seems to be the case for RC11] to AR4000.bcs or AR4500.bcs for a new ToB game, or a mod NPC can't be called via the fate spirit.

I have RC11.3 currently but it seems not to add the "SetGlobal("NEPHELEPartyBG2","GLOBAL",1)" setting to the NPC's script, only to AR4000.bcs. Did I do something wrong again or would you see a reason why it is not patched to the NPC's SoA script file?

Here's what I use:

  LAF ~EET_NPC_TRANSITION~
    INT_VAR
      type = 2
      default_ToB = 1
    STR_VAR
      dv = "NEPHELE"
      override_SoA = "LK#NEPH"
      override_ToB = "LK#NE25"
      dialog_ToB = "LK#NE25"
      SummonedVar = "LK#NepheleSummoned"
      SpawnPlaneVar = "LK#NepheleSummoned"
      cre_ToB = "LK#NE25"
      traFile = "nephele/tra/%LANGUAGE%/fatesp.tra"
      string = "@0"
      stringPosDV = "Quayle"
  END
END ELSE BEGIN
  COMPILE ~nephele/dialogue/fatesp.d~ // only compile this for non-EET installations
END

 

Link to comment

can't reproduce it:

https://i.imgur.com/tDQXfVl.png

Maybe you're adding it in the wrong place? This code should be somewhere at the end of main component (after scripts are compiled, otherwise referenced scripts don't exist in game yet). There is also a chance that your program somehow broke the formatting (more likely it's the forum that broke it, but when I try to copy code from your post to Notepad++ somehow override_SoA is recognized as different word then the same text typed by hand)

btw. I've noticed that you forgot to add EVAL in traFile declaration even though you're using %LANGUAGE% variable there.

Edited by K4thos
Link to comment

Erm, well... doh...

Thanks, I needed a second pair of eyes, although this is embarassing. The compilation of the script was indeed after the EET_NPC_TRANSITION  syntax. (I should stop modding after 11 pm.)

 

6 hours ago, K4thos said:

btw. I've noticed that you forgot to add EVAL in traFile declaration even though you're using %LANGUAGE% variable there.

Thanks! It worked, though, maybe because it's only one langauge up to now. Added.

Link to comment

I'm using this thread for another question. I am using @CamDawg's genius code to add two fate spirit entries for EET, one romance case and one none-romance case.

 

If I do the normal one, i.e. this:

Spoiler

ACTION_IF GAME_IS ~eet~ BEGIN
INCLUDE ~EET/other/EET_functions.tph~

  LAF ~EET_NPC_TRANSITION~
    INT_VAR
      type = 2
      default_ToB = 1
      clean_ToB = 1
    STR_VAR
      dv = "E3Fade"
      override_SoA = "E3Fade"
      override_ToB = "E3Fade25"
      dialog_ToB = "BE3Fad25"
      cre_ToB = "e3fade25"
      traFile = EVAL "fade\tra\autotra/%s\fade.tra"
      string = "@4804"
      stringPosDV = "Eldoth"
      SummonedVar = "E3FadeSummonedToB"
  END

END ELSE BEGIN
COMPILE ~Fade/Dialogues/Fade_Fatesp_bg2.d~ EVALUATE_BUFFER
USING ~fade\tra\autotra/%s\fade.tra~
END

I get the correct entries including the summoning for a new ToB game:

Spoiler

IF
    InPartyAllowDead("E3Fade")  // No such index
    Global("E3FadeSummonedToB","GLOBAL",0)
THEN
    RESPONSE #100
        ActionOverride("E3Fade",ChangeAIScript("E3Fade25",OVERRIDE))
        SetGlobal("E3FadeSummonedToB","GLOBAL",2)
END

IF
    Global("NEWGAME_TOB","GLOBAL",0)
    Global("E3FadeSummonedToB","GLOBAL",1)
    Global("E3FadeSpawnPlane","GLOBAL",0)
THEN
    RESPONSE #100
        CreateVisualEffect("SPPORTAL",[1999.1218])
        Wait(2)
        ActionOverride("E3Fade",SetDialog("BE3Fad25"))
        ActionOverride("E3Fade",ChangeAIScript("E3Fade25",OVERRIDE))
        MoveGlobal("AR4500","E3Fade",[1999.1218])  // No such index
        ActionOverride("E3Fade",Face(S))
        ActionOverride("E3Fade",SetGlobal("BD_JOINXP","LOCALS",0))
        ActionOverride("E3Fade",SetGlobal("KickedOut","LOCALS",0))
        ActionOverride("E3Fade",SetNumTimesTalkedTo(0))
        SetGlobal("E3FadeSpawnPlane","GLOBAL",1)
END

IF
    Global("NEWGAME_TOB","GLOBAL",1)
    Global("E3FadeSummonedToB","GLOBAL",1)
    Global("E3FadeSpawnPlane","GLOBAL",0)
THEN
    RESPONSE #100
        CreateVisualEffect("SPPORTAL",[1999.1218])
        Wait(2)
        CreateCreature("e3fade25",[1999.1218],S)  // No such index
        SetGlobal("E3FadeSpawnPlane","GLOBAL",1)
END

 

But, if I do the following: generating two entries, one for a fake DV and one for the real, then patching the fake DV to the real one (plus disapling the doubled script blocks):

Spoiler

ACTION_IF GAME_IS ~eet~ BEGIN
INCLUDE ~EET/other/EET_functions.tph~
/* summon romanced Fade */

  LAF ~EET_NPC_TRANSITION~
    INT_VAR
      type = 2
      default_ToB = 1
      clean_ToB = 1
    STR_VAR
      dv = "E3Fade_c#temp"
      override_SoA = "E3Fade"
      override_ToB = "E3Fade25"
      dialog_ToB = "BE3Fad25"
      cre_ToB = "e3fade25"
      traFile = EVAL "fade\tra\autotra/%s\fade.tra"
      string = "@4805"
      stringPosDV = "Eldoth"
      SummonedVar = "E3FadeSummonedToB_c#temp"
  END


  LAF ~EET_NPC_TRANSITION~
    INT_VAR
      type = 2
      default_ToB = 1
      clean_ToB = 1
    STR_VAR
      dv = "E3Fade"
      override_SoA = "E3Fade"
      override_ToB = "E3Fade25"
      dialog_ToB = "BE3Fad25"
      cre_ToB = "e3fade25"
      traFile = EVAL "fade\tra\autotra/%s\fade.tra"
      string = "@4804"
      stringPosDV = "Eldoth"
      SummonedVar = "E3FadeSummonedToB"
  END

/* adjust and clean up romance case */
    COPY_EXISTING ~fatesp.dlg~ ~override~
      DECOMPILE_AND_PATCH BEGIN
        REPLACE_TEXTUALLY ~Dead("E3Fade_c#temp")~ ~Dead("E3Fade")
   Global("E3FADEROMANCEACTIVE","GLOBAL",0)
   Gender(Player1,MALE)~
        REPLACE_TEXTUALLY ~SetGlobal("E3FadeSummonedToB_c#temp","GLOBAL",1)~ ~SetGlobal

("E3FadeSummonedToB","GLOBAL",1) SetGlobal("E3FADEMATCH","GLOBAL",1)
SetGlobal("E3FADEROMANCEACTIVE","GLOBAL",2)~
        REPLACE_TEXTUALLY ~E3Fade_c#temp~ ~E3Fade~
      END
      BUT_ONLY
      
    COPY_EXISTING ~ar4000.bcs~ ~override~
                  ~ar4500.bcs~ ~override~
      DECOMPILE_AND_PATCH BEGIN
        REPLACE_TEXTUALLY ~[ %TAB%]Global("E3FadeSummonedToB_c#temp","GLOBAL",[01])~

~False()~
        REPLACE_TEXTUALLY ~E3Fade_c#temp~ ~E3Fade~
      END
      BUT_ONLY

    COPY_EXISTING ~E3FADE.bcs~ ~override~
      DECOMPILE_AND_PATCH BEGIN
        REPLACE_TEXTUALLY ~E3Fade_c#temp~ ~E3Fade~
      END
      BUT_ONLY


END ELSE BEGIN
COMPILE ~Fade/Dialogues/Fade_Fatesp_bg2.d~ EVALUATE_BUFFER
USING ~fade\tra\autotra/%s\fade.tra~
END

Then in the resulting ar4500.bcs, for some reason the block for summoning for a new game is missing:

Spoiler

IF
    InPartyAllowDead("E3Fade")  // No such index
    False()
THEN
    RESPONSE #100
        ActionOverride("E3Fade",ChangeAIScript("E3Fade25",OVERRIDE))
        SetGlobal("E3FadeSummonedToB_c#temp","GLOBAL",2)
END

IF
    Global("NEWGAME_TOB","GLOBAL",0)
    False()
    Global("E3FadeSpawnPlane","GLOBAL",0)
THEN
    RESPONSE #100
        CreateVisualEffect("SPPORTAL",[1999.1218])
        Wait(2)
        ActionOverride("E3Fade",SetDialog("BE3Fad25"))
        ActionOverride("E3Fade",ChangeAIScript("E3Fade25",OVERRIDE))
        MoveGlobal("AR4500","E3Fade",[1999.1218])  // No such index
        ActionOverride("E3Fade",Face(S))
        ActionOverride("E3Fade",SetGlobal("BD_JOINXP","LOCALS",0))
        ActionOverride("E3Fade",SetGlobal("KickedOut","LOCALS",0))
        ActionOverride("E3Fade",SetNumTimesTalkedTo(0))
        SetGlobal("E3FadeSpawnPlane","GLOBAL",1)
END

IF
    Global("NEWGAME_TOB","GLOBAL",1)
    False()
    Global("E3FadeSpawnPlane","GLOBAL",0)
THEN
    RESPONSE #100
        CreateVisualEffect("SPPORTAL",[1999.1218])
        Wait(2)
        CreateCreature("e3fade25",[1999.1218],S)  // No such index
        SetGlobal("E3FadeSpawnPlane","GLOBAL",1)
END

IF
    InPartyAllowDead("E3Fade")  // No such index
    Global("E3FadeSummonedToB","GLOBAL",0)
THEN
    RESPONSE #100
        ActionOverride("E3Fade",ChangeAIScript("E3Fade25",OVERRIDE))
        SetGlobal("E3FadeSummonedToB","GLOBAL",2)
END

IF
    Global("NEWGAME_TOB","GLOBAL",0)
    Global("E3FadeSummonedToB","GLOBAL",1)
    Global("E3FadeSpawnPlane","GLOBAL",0)
THEN
    RESPONSE #100
        CreateVisualEffect("SPPORTAL",[1999.1218])
        Wait(2)
        ActionOverride("E3Fade",SetDialog("BE3Fad25"))
        ActionOverride("E3Fade",ChangeAIScript("E3Fade25",OVERRIDE))
        MoveGlobal("AR4500","E3Fade",[1999.1218])  // No such index
        ActionOverride("E3Fade",Face(S))
        ActionOverride("E3Fade",SetGlobal("BD_JOINXP","LOCALS",0))
        ActionOverride("E3Fade",SetGlobal("KickedOut","LOCALS",0))
        ActionOverride("E3Fade",SetNumTimesTalkedTo(0))
        SetGlobal("E3FadeSpawnPlane","GLOBAL",1)
END

 

Considering my luck with using the function properly, did I miss something obvious?

It's not a real problem since I'll just remove the False() patching, leaving the doubled script blocks in since only one will run, but still?

Link to comment
Quote

I'm using this thread for another question. I am using @CamDawg's genius code to add two fate spirit entries for EET, one romance case and one none-romance case.

While it can be done, I think this convention doesn't make sense in EET. Reasons:

- none of the vanilla NPCs with romances have 2 fate spirit responses (and especially none of them use string remotely similar to "bring me my lover"), so lines like these screams "mod added content" (which is bad, imo)

- unlike vanilla game, in EET your old BG2 party members summoned by Fate Spirit are moved from areas, even if you didn't have them in your final SoA party, instead of being created from scratch, so those NPCs will already have all the romance variables set and don't require additional fate spirit line to set them,

- the only instance that EET creates a new NPC in ToB is if NPC has never been in your BG2 party (and you decide in function code that the NPC should be considered as always summonable, no matter what - normally such NPC wouldn't even be present on the FATESP list) - but in such case why there should be an option for pretending that romance has been active in SoA, when it wasn't? Additional lover line doesn't make sense in such situation,

- while I can understand that modder would like to allow player to start the romance when a new game is started in ToB campaign, such situation seems extremely unlikely (who plays just ToB, and wants to experience just a small part of the mod added romance?) and it wasn’t an option in vanilla game (none of the vanilla NPC romances trigger when the game is started in ToB)

 That's why I didn't add option for "bring me my lover" line to EET_NPC_TRANSITION by default. All the NPCs that I've created patches for use a single fatesp line.

 What do you think about this reasoning? Should I adjust the function to allow 2 responses per NPC?

Quote

But, if I do the following: generating two entries, one for a fake DV and one for the real, then patching the fake DV to the real one (plus disapling the doubled script blocks):

I haven't checked it yet but the problem likely lies here - the function is not expecting that you will use it twice with the same DV (unless you use an option for cleaning old NPC entries or change the transition type).

Edited by K4thos
Link to comment

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