Jump to content

Lauriel

Modders
  • Posts

    940
  • Joined

  • Last visited

Posts posted by Lauriel

  1. 36 minutes ago, Endarire said:

    What content/fixes does Eve of War need to be fully compatible with Transitions and Endless BG1?  What about Framed?

    This is the first I've heard of the mod.  Transitions is being redone for version 2, so even if you tested it with the current version, it wouldn't give a good comparison.  I'll do a test of it after I've released it.  Framed is stable though, so if you want to test it with that, I'd be up for any reports you can come up with.

  2. 7 hours ago, Xazarlar said:

    Would you consider allowing party members to stay after the Korlasz tomb? I wanted to finish the tomb then carry on and do Durlag etc. but now whenever I talk to a party member they say I'm safe now and they have places to be and leaving

    But they won't leave unless you say they can.

    EDIT: In v2 - the option for them to leave won't be there, though the dialogue (for in-character reasons) will still say they'd like to.  But the option to let them go will be gone.

  3. Your tools made it super easy to add the closed door tiles to the end of the TIS, too.

    Spoiler
    	// Add closed door tiles to end of TIS
    	LPF ps_tileset_add_tiles INT_VAR MaxCount = 1 PVRz_Page = "%strt_idx%" PVRz_X = 0 PVRz_Y = 448 STR_VAR Method = "Push" RET Count END
    	LPF ps_tileset_add_tiles INT_VAR MaxCount = 1 PVRz_Page = "%strt_idx%" PVRz_X = 64 PVRz_Y = 448 STR_VAR Method = "Push" RET Count END
    	LPF ps_tileset_add_tiles INT_VAR MaxCount = 1 PVRz_Page = "%strt_idx%" PVRz_X = 0 PVRz_Y = 512 STR_VAR Method = "Push" RET Count END
    	LPF ps_tileset_add_tiles INT_VAR MaxCount = 1 PVRz_Page = "%strt_idx%" PVRz_X = 64 PVRz_Y = 512 STR_VAR Method = "Push" RET Count END

     

     

  4. I've automated those parts that can be automated.  We still need to do our research on the where to snag the tiles and where to put them, but this little bit helps with the naming of the PVRz...

    Spoiler
    		OUTER_SPRINT source_pvrz "A020008"
    		OUTER_SPRINT page ~-1~
    		OUTER_SET strt_idx = 0
    		OUTER_SET ok_to_proceed = 0
    		ACTION_IF GAME_IS ~eet~ THEN BEGIN
    			OUTER_SPRINT source_pvrz "B020008"
    			OUTER_SET strt_idx = 50
    		END
    		OUTER_FOR (idx = strt_idx; idx < 99 && ok_to_proceed = 0; idx = idx + 1) BEGIN
    			ACTION_IF idx < 10 THEN BEGIN
    				OUTER_SPRINT page ~0%idx%~
    			END ELSE BEGIN
    				OUTER_SPRINT page ~%idx%~
    			END
    			ACTION_IF NOT FILE_EXISTS_IN_GAME ~B0010%page%.pvrz~ THEN BEGIN
    				OUTER_SET ok_to_proceed = 1
    			END
    		END
    		
    		ACTION_IF ok_to_proceed = 1 THEN BEGIN	// This is sort of overkill... but ya never know
    			COPY_EXISTING ~%source_pvrz%.PVRZ~ ~override\B0010%page%.pvrz~
    			COPY_EXISTING ~BD0010.tis~ ~override~
    				LPF ps_tileset_add_tiles INT_VAR Pos = 140 MaxCount = 1 PVRz_Page = %page% PVRz_X = 128 PVRz_Y = 704 STR_VAR Method = "Replace" RET Count END
    				LPF ps_tileset_add_tiles INT_VAR Pos = 141 MaxCount = 1 PVRz_Page = %page% PVRz_X = 192 PVRz_Y = 704 STR_VAR Method = "Replace" RET Count END
    				LPF ps_tileset_add_tiles INT_VAR Pos = 160 MaxCount = 1 PVRz_Page = %page% PVRz_X = 128 PVRz_Y = 768 STR_VAR Method = "Replace" RET Count END
    				LPF ps_tileset_add_tiles INT_VAR Pos = 161 MaxCount = 1 PVRz_Page = %page% PVRz_X = 192 PVRz_Y = 768 STR_VAR Method = "Replace" RET Count END
    			BUT_ONLY_IF_IT_CHANGES
    		END

     

    What would really be nice here is being able to determine if the source file is equivalent to one of the target pages already installed.

  5. 53 minutes ago, Sam. said:

    Let's start off simple

    It works!  And so so simple.  I had to make a few adjustments for EET, but nothing terrible.  Thank you so much.  I've learned a lot doing this process.

    53 minutes ago, Sam. said:

    Again, much of this could/should be automated further, but now we have an outline of what to do.

    Yeah, this is pretty much a hard-coded way of doing it.  It's progress, though, and it makes me very happy! Thank you :)

    The only thing you didn't explain was how you came up with the following:

    PVRz_X = 128 PVRz_Y = 704

    Never mind - I see it's in the log

  6. 1 hour ago, Sam. said:

    I'll try to come up with a working example of how I'd do it.

    Oh you're awesome!  Thank you.

    I was unable to sleep last night having this on my mind, thinking there had to be an easier way.  My thinking, before finally dozing off, was to convert both BG0200.TIS and BD0010.TIS to palette, swap tiles, then reconvert them both back to PVRz.  I don't even know this is possible but it was what I was going to try this morning.

  7. I've made a small tileset using DLTCEP of just the open door in question from BG0200 and exported as a TIS.  I then used tile2ee to make separate TIS and PVRz files from it.  Now, the export/import using your tool will be from a PVRZ that is not in the game, correct?

    10 hours ago, Sam. said:

    1. The PVRz file names referenced do NOT already exist in the game you want to add them to.  If this is the case, just dump the PVRz files into the override folder and proceed as I previously suggested.

    So I should be able to simply copy the new PVRz file to override and the modified TIF should show up correctly, right?

    Then I'm not understanding something because the result was a modified BG0010.TIF that has different tiles where they should be different, just not the correct ones.

    Exact steps I've taken:

    Spoiler
    • Started DLCT Editor Pro v7.7
    • Selected Edit->Area (ARE,WED)
    • Hit the "Load External Area" button
    • Selected BG0200.ARE
    • Hit "Edit wed" button
    • With overlay 1 of 5 selected, hit the 'Extract' button
    • Hit the 'Preview selection' Button
    • Checked the 'Show grid' box
    • Scrolled to the door I want to export and left clicked on the tile of it's upper left corner
    • Hit the 'Select top left' button
    • Back in the grid, left clicked on the tile of the door's lower right corner
    • Hit the 'Select bottom right' button (this left me with 4 tiles just of the open door)
    • Hit the 'Save as TIS' button and saved it off into a work folder I call 'Ignore' so it won't get uploaded to GitHub
    • Closed DLCTEP
    • Copied the exported TIS to a working folder and renamed it to #LLH0Open.tis (so the resulting PVRz would still have my prefix)
    • Copied tile2ee.exe into my working folder
    • Ran 'tile2ee -f 2 -o processed #LLH0Open.tis' which resulted in a new #LLH0Open.tis (in the processed folder) and #LH0Open00.pvrz
    • Ran the following code in WeiDU:
      COPY ~%mod_root%/objects/processed/#LH0Open00.pvrz~ ~override~
      
      		// Snag open door tiles from BG1 area
      		COPY_EXISTING ~%mod_root%/objects/processed/#LLH0Open.tis~ ~override~
      			LPF ps_tileset_export_tiles
      				INT_VAR
      					Pos = 0 
      					Count = 2
      				STR_VAR
      					OutTileDir = EVAL ~%mod_root%/objects/processed~
      					OutType = "tis"
      			END
      		
      			LPF ps_tileset_export_tiles
      				INT_VAR
      					Pos = 2 
      					Count = 2
      				STR_VAR
      					OutTileDir = EVAL ~%mod_root%/objects/processed~
      					OutType = "tis"
      			END
      		BUT_ONLY_IF_IT_CHANGES
      
      		COPY_EXISTING ~BD0010.TIS~ ~override~
      			// Add the door graphic to the area tile set
      			LPF ps_tileset_add_tiles
      				INT_VAR 
      					Pos = 140
      					MaxCount = 2
      				STR_VAR 
      					TileDir = EVAL "%mod_root%/objects/processed" 
      					TileRegExp = "#LLH0Open_0000-0002.tis"
      					Method = "Replace" 
      				RET Count
      			END
      			
      			LPF ps_tileset_add_tiles
      				INT_VAR 
      					Pos = 160
      					MaxCount = 2
      				STR_VAR 
      					TileDir = EVAL "%mod_root%/objects/processed" 
      					TileRegExp = "#LLH0Open_0002-0004.tis"
      					Method = "Replace" 
      				RET Count
      			END
      		BUT_ONLY_IF_IT_CHANGES	

       

     

    EDIT: Follow-up - I did an NI 'Find References' in TIS files on the new pvrz file, it found none.  So, I guess, the imported tiles have no idea that they're supposed to look in that file for directions.

    EDIT: Another follow-up - I ran ps_tileset_info against the new TIS file and it said it "is a PVRz-based tileset referencing #LH0Open**.pvrz files.", so it should qualify as a new pvrz file not in the game.  Is the name causing issues because it's longer than expected?  I'll try to shorten it... Tried that - made no difference.

    EDIT: Follow-up #3 - I ran ps_tileset_info against the results of the latest exports (exported from #LLOpn instead of #LLH0Open) :transitions/objects/processed/#LLOpn_0000-0002.tis" is a PVRz-based tileset referencing #LOpn_0000-0002**.pvrz files.  It doesn't use the 'mother' pvrz file.  It uses it's own and I don't know how to get a handle on that one.

    EDIT: Follow-up #4 - When I open #LLOpn_0000-0002.tis and #LLOpn_0002-0004.tis with NI - they show up as gray squares.  When I open #LLOpn.tis with NI, I see the tiles for the open door as expected.

    EDIT: Follow-up #5 - I exported 2 small tilesets using DLCTEP so I could skip the ps_tileset_export_tiles part and copied their pvrz files into override since I had them now.  The results were the same.  The tiles in BD0010.TIS are changed but to the wrong tiles.

    EDIT: Follow-up #6 - sick of me yet? LOL When I open DB0010.TIS in NI, the tiles that have been replaced are gray. They contain no image. I'm going to try option #2 (use this method to install the tileset into the target game and update the PVRz references). Tomorrow...it's getting late.  But I'll post another update.  Won't y'all be thrilled. 🙃

    EDIT: Follow-up #7 - ok, I lied.  I couldn't walk away without trying something.  I can 'one more thing' myself until dawn sometimes. I tried exporting the tiles directly from the BG1 TIS (in this case BG0200.tis) into two small tilesets, one containing the top two tiles, the other one containing the bottom two.  I was about to run Argent77s functions on them when I noticed..I can't.  Here's his example:

    Spoiler

      

    Quote
    // Installing all TIS files from the specified folder
    ACTION_BASH_FOR ~%MOD_FOLDER%/tis~ ~^.+\.tis$~ BEGIN
      COPY ~%BASH_FOR_FILESPEC%~ ~override~
        LPF UPDATE_PVRZ_INDICES RET original_base_index new_base_index END
    
      // Installing associated PVRZ files for each tileset individually
      ACTION_IF (new_base_index >= 0) BEGIN
        LAF TIS_RES_TO_PVRZ STR_VAR tis_res = EVAL ~%BASH_FOR_FILESPEC%~ RET prefix END
    
        ACTION_BASH_FOR ~%MOD_FOLDER%/tis~ ~^%prefix%.+\.pvrz$~ BEGIN
          LAF INSTALL_PVRZ
            INT_VAR original_base_index new_base_index
            STR_VAR source_file = EVAL ~%BASH_FOR_FILESPEC%~
            RET success DEST_FILESPEC
          END
    
          ACTION_IF (NOT success) BEGIN
            FAIL ~Could not install "%BASH_FOR_FILESPEC%"!~
          END
        END
      END ELSE BEGIN
        FAIL ~Could not install "%BASH_FOR_FILESPEC%"!~
      END
    END

     

     

    The problem is, he expects the pvrz files associated with the tis files to exist.  They don't.  There are no pvrz files produced when tiles are exported using ps_tileset_export_tiles.

    EDIT: Follow-up #8 - my last on this subject unless new information comes to light.  I attempted to run Argent77's pvrz install functions against the files produced by exporting tilesets from DLCTEP and modifying them with tile2ee to product separate TIS and PVRZ files, but the function produced the error "Invalid or corrupted BAM V2 or MOS V2 resource found. No changes have been made."  I've run out of ideas and things to try.

  8. 6 hours ago, Sam. said:

    If this is the case, just dump the PVRz files into the override folder

    You're dealing with a rank amateur.  I don't even know how to find those files.  They are invisible to me when I use NI and DLTCEP - at least I've not ever found them.  I'll dig in your tool to see if I can get a clue where they reside.  I've never looked inside a BIF file.  I imagine they're there somewhere.

     

    6 hours ago, Sam. said:

    You'll also need to extract the referenced PVRz files from the game, using NearInfinity

    I guess NI has hidden talents.  How would I do this?

    Nevermind, I'm blind as a bat.  I see the entire section called PVRZ now that I actually am awake.

  9. 7 hours ago, Sam. said:

    IF AND ONLY IF both BG0200.TIS and BD0010.TIS are both PVRz-based tilesets AND both are already in the same game (along with their associated PVRz files)

    Well, that means this would only work for EET and not for separate BG1/SoD games.  At least I know what I'm attempting isn't possible and that I should try another method.  Thank you. And thank you for explaining the different file types.  I knew they were different but not how they were different.

    Much appreciated. :)

  10. I don't see anyone questioning how to go from A to Z on this, so I must be missing a vital piece of the pie.

    I'm attempting to add a door to a house in the SoD version of the exterior ducal palace area.  This journey will encompass more than a few tasks, but the first that I'm attempting is taking tiles from one TIS (BG0200.TIS) and replace tiles in another (BD0010.TIS) with those from the first area.  Right now, I'd just like to see the open door graphic when I look at the BG0010.TIS.  I'll worry about the closed door graphic, WED changes, ARE changes later.

    Attempts I've made so far:

    1. Export top two tiles of the open BG0200 door to BMP using DLTCEP: Result of ps_tileset_add_tiles = H0OPNTOP.BMP is not an uncompressed 8-bit bitmap - check the file.
    2. Export top two tiles of the open BG0200 door to TIS using DLTCEP: Result of ps_tileset_add_tiles = Dimensions of H0OPNTOP.TIS are incorrect for this tileset.  The tile should be 12 bytes but is 5120 bytes.
    3. tile2ee -f 2 -o processed h0opntop.tis: Result of ps_tileset_add_tiles = a change to BD0010.TIS that looks NOTHING like tiles in BG0200.TIS
    4. Attempt to export the tiles from BG0200 with ps_tileset_export_tiles: Results in a RAW file (even though I specified BMP) that I can't seem to do anything with

    Am I supposed to take that raw file, convert it to a string, and write that to BG0010.TIS?

  11. 6 minutes ago, lynx said:

    I think conditions are ignored. You could use False in all of them and they should still run.

    No, I initiated the script using StartCutSceneEx("#LSayBye",TRUE) so script triggers get evaluated properly. And those that didn't rely upon #L_SaidBye to be false were skipped as would be expected.  And I've since modified the script so that only one of the blocks will evaluate to true and it works like it should.  But, I was hoping there was a way to stop the process just to make the code a bit less messy.  But there doesn't seem to be one.

    Here is what works - it's just so unwieldy ...

    Spoiler
    ///////////////////////////////////////////////////////////////
    // Allow NPCs to say goodbye before the group splits         //
    // Parsed via main_sod.tpa called via #LAdvGm1.d and #LShare //
    // Dialogue needs to go in a certain order in some cases     //
    ///////////////////////////////////////////////////////////////
    
    IF
    	IsValidForPartyDialogue("JAHEIRA")
    	TriggerOverride("JAHEIRA",Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride("JAHEIRA",See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		EndCutSceneMode()
    		ActionOverride("JAHEIRA",Dialogue(Myself))
    END
    
    IF
    	OR(4)
    		!IsValidForPartyDialogue("JAHEIRA")
    		!TriggerOverride("JAHEIRA",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("JAHEIRA",See(Player1))
    		TriggerOverride(Player1,False())
    	IsValidForPartyDialogue("MINSC")
    	OR(3)
    		Global("#L_StartCaelarAttack","GLOBAL",1)
    		Global("#L_StartCaelarAttack","GLOBAL",2)
    		Global("#L_StartCaelarAttack","GLOBAL",3)
    	TriggerOverride("MINSC",Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride("MINSC",See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		EndCutSceneMode()
    		ActionOverride("MINSC",Dialogue(Myself))
    		Wait(3)
    END
    
    IF
    	OR(4)
    		!IsValidForPartyDialogue("JAHEIRA")
    		!TriggerOverride("JAHEIRA",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("JAHEIRA",See(Player1))
    		TriggerOverride(Player1,False())
    	IsValidForPartyDialogue("DYNAHEIR")
    	Global("#L_StartBG2","GLOBAL",1)
    	TriggerOverride("DYNAHEIR",Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride("DYNAHEIR",See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		EndCutSceneMode()
    		ActionOverride("DYNAHEIR",Dialogue(Myself))
    		Wait(3)
    END
    
    IF
    	OR(4)
    		!IsValidForPartyDialogue("JAHEIRA")
    		!TriggerOverride("JAHEIRA",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("JAHEIRA",See(Player1))
    		TriggerOverride(Player1,False())
    	OR(5)
    		!IsValidForPartyDialogue("MINSC")
    		!TriggerOverride("MINSC",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("MINSC",See(Player1))
    		Global("#L_StartBG2","GLOBAL",1)
    		TriggerOverride(Player1,False())
    	OR(5)
    		!IsValidForPartyDialogue("DYNAHEIR")
    		!TriggerOverride("DYNAHEIR",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("DYNAHEIR",See(Player1))
    		Global("#L_StartBG2","GLOBAL",0)
    		TriggerOverride(Player1,False())
    	!Name("None",Player2)
    	IsValidForPartyDialogue(Player2)
    	TriggerOverride(Player2,Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride(Player2,See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		EndCutSceneMode()
    		ActionOverride(Player2,Dialogue(Myself))
    		Wait(3)
    END
    
    IF
    	OR(4)
    		!IsValidForPartyDialogue("JAHEIRA")
    		!TriggerOverride("JAHEIRA",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("JAHEIRA",See(Player1))
    		TriggerOverride(Player1,False())
    	OR(5)
    		!IsValidForPartyDialogue("MINSC")
    		!TriggerOverride("MINSC",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("MINSC",See(Player1))
    		Global("#L_StartBG2","GLOBAL",1)
    		TriggerOverride(Player1,False())
    	OR(5)
    		!IsValidForPartyDialogue("DYNAHEIR")
    		!TriggerOverride("DYNAHEIR",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("DYNAHEIR",See(Player1))
    		Global("#L_StartBG2","GLOBAL",0)
    		TriggerOverride(Player1,False())
    	OR(5)
    		Name("None",Player2)
    		!IsValidForPartyDialogue(Player2)
    		!TriggerOverride(Player2,Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride(Player2,See(Player1))
    		TriggerOverride(Player1,False())
    	NumInPartyGT(2)
    	!Name("None",Player3)
    	IsValidForPartyDialogue(Player3)
    	TriggerOverride(Player3,Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride(Player3,See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		EndCutSceneMode()
    		ActionOverride(Player3,Dialogue(Myself))
    		Wait(3)
    END
    
    IF
    	OR(4)
    		!IsValidForPartyDialogue("JAHEIRA")
    		!TriggerOverride("JAHEIRA",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("JAHEIRA",See(Player1))
    		TriggerOverride(Player1,False())
    	OR(5)
    		!IsValidForPartyDialogue("MINSC")
    		!TriggerOverride("MINSC",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("MINSC",See(Player1))
    		Global("#L_StartBG2","GLOBAL",1)
    		TriggerOverride(Player1,False())
    	OR(5)
    		!IsValidForPartyDialogue("DYNAHEIR")
    		!TriggerOverride("DYNAHEIR",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("DYNAHEIR",See(Player1))
    		Global("#L_StartBG2","GLOBAL",0)
    		TriggerOverride(Player1,False())
    	OR(5)
    		Name("None",Player2)
    		!IsValidForPartyDialogue(Player2)
    		!TriggerOverride(Player2,Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride(Player2,See(Player1))
    		TriggerOverride(Player1,False())
    	OR(5)
    		Name("None",Player3)
    		!IsValidForPartyDialogue(Player3)
    		!TriggerOverride(Player3,Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride(Player3,See(Player1))
    		TriggerOverride(Player1,False())
    	NumInPartyGT(3)
    	!Name("None",Player4)
    	IsValidForPartyDialogue(Player4)
    	TriggerOverride(Player4,Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride(Player4,See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		EndCutSceneMode()
    		ActionOverride(Player4,Dialogue(Myself))
    		Wait(3)
    END
    
    IF
    	OR(4)
    		!IsValidForPartyDialogue("JAHEIRA")
    		!TriggerOverride("JAHEIRA",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("JAHEIRA",See(Player1))
    		TriggerOverride(Player1,False())
    	OR(5)
    		!IsValidForPartyDialogue("MINSC")
    		!TriggerOverride("MINSC",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("MINSC",See(Player1))
    		Global("#L_StartBG2","GLOBAL",1)
    		TriggerOverride(Player1,False())
    	OR(5)
    		!IsValidForPartyDialogue("DYNAHEIR")
    		!TriggerOverride("DYNAHEIR",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("DYNAHEIR",See(Player1))
    		Global("#L_StartBG2","GLOBAL",0)
    		TriggerOverride(Player1,False())
    	OR(5)
    		Name("None",Player2)
    		!IsValidForPartyDialogue(Player2)
    		!TriggerOverride(Player2,Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride(Player2,See(Player1))
    		TriggerOverride(Player1,False())
    	OR(5)
    		Name("None",Player3)
    		!IsValidForPartyDialogue(Player3)
    		!TriggerOverride(Player3,Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride(Player3,See(Player1))
    		TriggerOverride(Player1,False())
    	OR(5)
    		Name("None",Player4)
    		!IsValidForPartyDialogue(Player4)
    		!TriggerOverride(Player4,Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride(Player4,See(Player1))
    		TriggerOverride(Player1,False())
    	NumInPartyGT(4)
    	!Name("None",Player5)
    	IsValidForPartyDialogue(Player5)
    	TriggerOverride(Player5,Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride(Player5,See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		EndCutSceneMode()
    		ActionOverride(Player5,Dialogue(Myself))
    		Wait(3)
    END
    
    IF
    	OR(4)
    		!IsValidForPartyDialogue("JAHEIRA")
    		!TriggerOverride("JAHEIRA",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("JAHEIRA",See(Player1))
    		TriggerOverride(Player1,False())
    	OR(5)
    		!IsValidForPartyDialogue("MINSC")
    		!TriggerOverride("MINSC",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("MINSC",See(Player1))
    		Global("#L_StartBG2","GLOBAL",1)
    		TriggerOverride(Player1,False())
    	OR(5)
    		!IsValidForPartyDialogue("DYNAHEIR")
    		!TriggerOverride("DYNAHEIR",Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride("DYNAHEIR",See(Player1))
    		Global("#L_StartBG2","GLOBAL",0)
    		TriggerOverride(Player1,False())
    	OR(5)
    		Name("None",Player2)
    		!IsValidForPartyDialogue(Player2)
    		!TriggerOverride(Player2,Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride(Player2,See(Player1))
    		TriggerOverride(Player1,False())
    	OR(5)
    		Name("None",Player3)
    		!IsValidForPartyDialogue(Player3)
    		!TriggerOverride(Player3,Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride(Player3,See(Player1))
    		TriggerOverride(Player1,False())
    	OR(5)
    		Name("None",Player4)
    		!IsValidForPartyDialogue(Player4)
    		!TriggerOverride(Player4,Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride(Player4,See(Player1))
    		TriggerOverride(Player1,False())
    	OR(5)
    		Name("None",Player5)
    		!IsValidForPartyDialogue(Player5)
    		!TriggerOverride(Player5,Global("#L_SayGoodbye","LOCALS",1))
    		!TriggerOverride(Player5,See(Player1))
    		TriggerOverride(Player5,False())
    	IsValidForPartyDialogue(Player6)
    	TriggerOverride(Player6,Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride(Player6,See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		EndCutSceneMode()
    		ActionOverride(Player6,Dialogue(Myself))
    		Wait(3)
    END
    
    IF
    	True()
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		EndCutSceneMode()
    END
    
    

     

     

  12. 15 minutes ago, lynx said:

    The way I see it:

    - it's 0, so the matching block runs

    - .. and sets it to 1

    - but then also waits, so triggers get reprocessed

    - meaning the last block runs setting it to 0

    - ad nauseam

    I took out the setting it to 0 in the last block and it made no difference.  I paused it after once of the dialogues and the global was set properly.  However, to the script, that change is invisible.  It does not work to set a variable inside a script and expect subsequent blocks to see the change.

  13. 43 minutes ago, jastey said:

    am highly surprised to hear this, unless you included Continue() into the script blocks. Would you post your test example?

    Spoiler
    ///////////////////////////////////////////////////////////////
    // Allow NPCs to say goodbye before the group splits         //
    // Parsed via main_sod.tpa called via #LAdvGm1.d and #LShare //
    // Dialogue needs to go in a certain order in some cases     //
    ///////////////////////////////////////////////////////////////
    
    IF
    	IsValidForPartyDialogue("JAHEIRA")
    	Global("#L_SaidBye","GLOBAL",0)
    	TriggerOverride("JAHEIRA",Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride("JAHEIRA",See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		SetGlobal("#L_SaidBye","GLOBAL",1)
    		EndCutSceneMode()
    		ActionOverride("JAHEIRA",Dialogue(Myself))
    		Wait(3)
    END
    
    IF
    	IsValidForPartyDialogue("DYNAHEIR")
    	Global("#L_SaidBye","GLOBAL",0)
    	TriggerOverride("DYNAHEIR",Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride("DYNAHEIR",See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		SetGlobal("#L_SaidBye","GLOBAL",1)
    		EndCutSceneMode()
    		ActionOverride("DYNAHEIR",Dialogue(Myself))
    		Wait(3)
    END
    
    IF
    	!Name("None",Player2)
    	IsValidForPartyDialogue(Player2)
    	Global("#L_SaidBye","GLOBAL",0)
    	TriggerOverride(Player2,Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride(Player2,See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		SetGlobal("#L_SaidBye","GLOBAL",1)
    		EndCutSceneMode()
    		ActionOverride(Player2,Dialogue(Myself))
    		Wait(3)
    END
    
    IF
    	NumInPartyGT(2)
    	!Name("None",Player3)
    	IsValidForPartyDialogue(Player3)
    	Global("#L_SaidBye","GLOBAL",0)
    	TriggerOverride(Player3,Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride(Player3,See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		SetGlobal("#L_SaidBye","GLOBAL",1)
    		EndCutSceneMode()
    		ActionOverride(Player3,Dialogue(Myself))
    		Wait(3)
    END
    
    IF
    	NumInPartyGT(3)
    	!Name("None",Player4)
    	IsValidForPartyDialogue(Player4)
    	Global("#L_SaidBye","GLOBAL",0)
    	TriggerOverride(Player4,Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride(Player4,See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		SetGlobal("#L_SaidBye","GLOBAL",1)
    		EndCutSceneMode()
    		ActionOverride(Player4,Dialogue(Myself))
    		Wait(3)
    END
    
    IF
    	NumInPartyGT(4)
    	!Name("None",Player5)
    	IsValidForPartyDialogue(Player5)
    	Global("#L_SaidBye","GLOBAL",0)
    	TriggerOverride(Player5,Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride(Player5,See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		SetGlobal("#L_SaidBye","GLOBAL",1)
    		EndCutSceneMode()
    		ActionOverride(Player5,Dialogue(Myself))
    		Wait(3)
    END
    
    IF
    	IsValidForPartyDialogue(Player6)
    	Global("#L_SaidBye","GLOBAL",0)
    	TriggerOverride(Player6,Global("#L_SayGoodbye","LOCALS",1))
    	TriggerOverride(Player6,See(Player1))
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		SetGlobal("#L_SaidBye","GLOBAL",1)
    		EndCutSceneMode()
    		ActionOverride(Player6,Dialogue(Myself))
    		Wait(3)
    END
    
    IF
    	True()
    THEN
    	RESPONSE #100
    		CutSceneId(Player1)
    		SetGlobal("#L_SaidBye","GLOBAL",0)
    		EndCutSceneMode()
    END

     

    The global being checked for is #L_SaidBye.  The waits at the end of the blocks seemed to fix the issue when I tested it during the transition to SoD, but that was only because the NPCs left the group during the dialogues.  When I tested it with the canon group that stays in the group when transitioning to BG2, I realized each block was being processed.

    I even tried setting #L_SaidBye in the dialogues, but it didn't change the outcome at all.  All blocks were still being processed.

  14. I'm pretty sure the answer to this is 'no', other than having all subsequent triggers return false. Which means if you have 10 blocks, only want 1 to run, you have to make sure their triggers all exclude all the other possibilities. There's no other to say 'just stop already!'?

    EDIT: BTW, I did try testing for 'DidIt = 0' and setting 'DidIt = 1' inside script blocks and the dialogues they call, but it just doesn't matter.  DidIt won't get set until after the entire script is finished running.

  15. I'm beginning a new mod that centers around Duke Eltan.  I realized while starting it that I always assumed Eltan was his first name, not his last.  Is Eltan his surname? If so, does anyone know his given name?  Or if it's his given name, does he have a surname?

×
×
  • Create New...