jastey Posted January 26, 2019 Author Share Posted January 26, 2019 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! Thank you for looking into this! Quote Link to comment
jastey Posted March 11, 2019 Author Share Posted March 11, 2019 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 Quote Link to comment
K4thos Posted March 11, 2019 Share Posted March 11, 2019 (edited) 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 March 11, 2019 by K4thos Quote Link to comment
jastey Posted March 12, 2019 Author Share Posted March 12, 2019 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. Quote Link to comment
K4thos Posted March 12, 2019 Share Posted March 12, 2019 no worries. In the next version I will add additional warnings to the code to make catching such problems easier. Quote Link to comment
jastey Posted June 22, 2019 Author Share Posted June 22, 2019 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? Quote Link to comment
K4thos Posted June 22, 2019 Share Posted June 22, 2019 (edited) 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 June 22, 2019 by K4thos Quote Link to comment
jastey Posted June 22, 2019 Author Share Posted June 22, 2019 Quote the function is not expecting that you will use it twice with the same DV The function is called with two different DVs. Quote Link to comment
Recommended Posts
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.