-
Posts
940 -
Joined
-
Last visited
Content Type
Forums
Events
Downloads
Gallery
Mods
News
Store
Posts posted by Lauriel
-
-
2 hours ago, RelentlessImp said:
ERROR: [#LPCROOM.BCS] -> [override/#LPCROOM.BCS] Patching Failed (COPY) (Not_found)
Looks like you're missing a file. Please download the zip file again.
-
A new version (v2.3) has been released. v2.3 stops all scripts except Baldur from running during the delay prior to the game pause so mobs don't get free shots at the party before they can react. The pausing script needed to be moved out of the player's script and placed into the world script.
I think this works much better than my initial attempt.
-
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.
-
Just now, Xazarlar said:
This is true if they are in the party, but if they are outside the party attempting to speak to them causes them to leave forever with no alternative response
You're so right. That's true in v1. I've already removed it for v2. I realized it was troublesome.
-
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.
-
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
-
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...
SpoilerOUTER_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.
-
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
-
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.
-
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:
SpoilerQuote// 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.
-
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.
-
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.
-
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:
- 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.
- 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.
- 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
- 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?
-
6 minutes ago, Bubb said:
it's impossible to change how triggers will evaluate during the current pass
Thank you. I figured as much but thought it worth an ask...
-
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
-
4 minutes ago, lynx said:
Are you starting this as a cutscene?
Yes
4 minutes ago, lynx said:Then all blocks get evaluated by default.
I realize that - which is why I set the variable so that the triggers in the blocks would return false...but they don't. Hence the question in the original post.
-
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.
-
1 minute ago, lynx said:
but then also waits, so triggers get reprocessed
- meaning the last block runs setting it to 0
- ad nauseam
The script only gets called once. Why would resetting the variable at the end cause it to run all blocks again?
-
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.
-
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.
-
1 minute ago, Cahir said:
there is a true name of Scar mentioned there. He's real name is Hurbold Duethkatha,
I had no idea what his real name was. This is awesome! Thank you!
-
Just now, mickabouille said:
Maybe he just doesn't have one.Surnames are kind of a cultural thing.
I know, that's why I'm asking. Other dukes have both, like Entar Silvershield and Liia Jannath and he's from Baldur's Gate I believe, so...just curious.
-
Just now, Magus said:
Uhm, Eltan Silvershield?
No, you're thinking of Entar Silvershield. Duke Eltan is the leader of the Flaming Fist.
-
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?
EET_End Error
in Enhanced Edition Trilogy
Posted
Oh, I'm sorry. Transitions.