-
Posts
13,717 -
Joined
-
Last visited
Content Type
Forums
Events
Downloads
Gallery
Mods
News
Store
Posts posted by jastey
-
-
Auren Aseph is a is a NPC mod for BG2, featuring a young and eager fighter from Beregost. She was born to a middle class merchant and his wife, and grew up a headstrong girl. Her father would tell her stories of adventurers he'd run into while on his caravan routes, and Auren became more and more interested at the thought of adventuring as she got older. She'd spend hours every week at the famous blacksmith Thunderhammer's shop, staring at all of the many types of weapons and armor, both magical and non-magical. Auren also features an original soundtrack, which is also available separately on the downloads page.
Version 11 fixes an EET install error and provides an .ini file with mod metadata to support Project Inifnity.
-
Added the following mods for SoD compatibility:
-
Gibberlings Three / Kerzenburgforum
Imoen 4 Ever
Imoen 4 Ever aims at making Imoen a steady companion throughout the whole BG-Saga. Imoen-related story content is being considered, therefore Imoen will be out of party temporarily to reflect the most crucial original game events. This mod makes her rejoin the party after such incidents, so that she can be seen as an actual travel companion in SoD and BGII.
Version 5 comes with SoD content: Imoen will rejoin the group at the first camp after marching out against the crusade. Just leave the camp via the road in northeast direction and Imoen will appear and ask to be taken back into the group. After that, she will be available as a normal joinable NPC until after the PC's fall at the end of teh game where the original game content will kick in again.
The changes to her dialogue after the poison attack was moved into an optional component, as well.
New content is also the possibility to chose Imoen's BG1 or SoD portraits in SoD, make her a continuous NPC in all of SoD (including the end), and seeing the "Imoen trains with Duke Jannath" scene from the scrying pool as a separate cutscene when the PC sets out against the crusade.
Version 5 also comes with non-destructive disabling of Imoen-related reply options. Thank you very much to argent77 for the coding help!
The mod has now 12 components, 5 for BGII and 7 for SoD. For detailed descriptions, please refer to the readme directly.
Changes:
-Added SoD content
-Changed mod organization to more optional components
-More dialogues in BGII added (optional).
-Content compatibility with Imoen Friendship mod added.
-more reply options referring to Imoen missing disabled
-patching of reply options will be done for the relevant strings only (no destructive patching). Thank you to Argent77 for the coding help! -
Imoen4Ever updates to v5! Because of the new content and the changed components structure with more optional choices the mod package will have a beta tag until I get more feedback and bug reports.
Version 5 comes with SoD content: Imoen will rejoin the group at the first camp after marching out against the crusade. Just leave the camp via the road in northeast direction and Imoen will appear and ask to be taken back into the group. After that, she will be available as a normal joinable NPC until after the PC's fall at the end of teh game where the original game content will kick in again.
The changes to her dialogue after the poison attack was moved into an optional component, as well.
New content is also the possibility to chose Imoen's BG1 or SoD portraits in SoD, make her a continuous NPC in all of SoD (including the end), and seeing the "Imoen trains with Duke Jannath" scene from the scrying pool as a separate cutscene when the PC sets out against the crusade.
Version 5 also comes with non-destructive disabling of Imoen-related reply options. Thank you very much to @argent77 for the coding help!
The mod has now 12 components, 5 for BGII and 7 for SoD. For detailed descriptions, please refer to the readme directly:
- I4E in BGII: Imoen Returns after Talking to Gaelan in Chapter 2 (required for BGII content)
- I4E in BGII: Give Imoen Dialogue Content in SoA
- I4E in BGII: Yoshimo Comes to Brynnlaw
- I4E in BGII: Give Imoen Protection Spell in Chapters 2 & 3
- I4E in BGII: Compatibility with Alternatives and Saerileth (note: this component should be installed after the Alternatives and/or Saerileth mods.)
- I4E in SoD: Imoen Remains in Group in Korlasz' Dungeon (this or component 7 is required for other SoD content)
- I4E in SoD: Imoen Returns to PC in First Coalition Camp (bd1000) (this or component 6 is required for other SoD content)
- I4E in SoD: Imoen Gives Better Reason to Stay Behind in Palace
- I4E in SoD: Play Cutscene With Imoen and Duke Jannath
- I4E in SoD: Give Imoen Dialogue Content in SoD Chapters 8-12
- I4E in SoD: Imoen at the End of the Game Should be the One that Was in Party (SoD Only)
-
I4E in SoD: Unify Imoen's Portrait:
- Use Imoen's SoD Portrait after Korlasz' Crypt
- Use Imoen's BG1 Portrait in all of SoD
-
Added Imoen Friendship (v3.6) to the list of compatible mods.
-
First post updated with new description of the changed mod structure for v5.
-
Transitions will also overwrite EBG1's Imoen-Duke Jannath component with own content from it's main component.
-
4 hours ago, Lauriel said:
You can have a home with a chest whose contents will transfer to SoD camp chests
EBG1 transfers the contents from the "PC's chest" and "Imoen's chest" (3rd floor Palace) to the SoD equivalents and did so from v1.
-
-
On 9/7/2020 at 9:28 AM, AL|EN said:
the only workaround would be to to this 'sync' thing which might fail.
What would that be? Is giving this weidu support an option? As much as I would like to support this, I have several mods where global install orders for the whole mod really doesn't make sense.
-
51 minutes ago, Guest ArcNKD said:
I would like to use ARC-X as my prefix, if anyone is still around to register them?
In addition to what Jarno said, also keep in mind that the max letter count of IE files is 8, and for areas it's 6 (because of the light map, search map, and height map which have LM/SR/HT in their names by default).
-
2 hours ago, Endarire said:
I wrote what I saw in the documentation. I've not yet played with these mods enough to fairly state otherwise.
Ah, yes it gives a warning in the readme indeed. I wasn't aware of that.
@Clockwerkthank you, I just wanted to make sure it's not a bug report that needs to addressing.
-
@Endarire why do you write that Region of Terror's kits do not work for BGII:EE?
-
4 hours ago, DavidW said:
My main concern about reliability is that I don't really trust people to reliably work out the preferred install order for mods, including their own mods, so I'm unconvinced this will converge on truth rather than ending up messy or self-contradictory. But I'll be happy to be proved wrong.
I see this more for the things where the modders *know* about dependencies. I am thinking about included crossmod content (which only works if the mod is installed after the one it has crossmod for), known dependencies, known incompatibilities depending on install order etc. Almost all of my mods have some such and I would appreciate a possibility to be able to specify the ones I know about. The reason for the idea of putting this into the mods themselves was the knowledge that an overall mod order list will not work because noone will contribute to it (in the long run).
But yes, of course there could be cases where modders tagg their mod wrongly and PI might take the blame. But would this be a reason not to integrate something like this? It's a good question.
-
Aah, that makes a lot of sense! This is one of the things where I see it clearly afterwards but needed a second pair of eyes to realize.
Thank you - again! - for your insight and patience.
-
I hit one problem I am sure is on my side. If I use an OUTER_SPRINT for the stringref numbers, e.g. %63960% => 1. Is there anything obvious why it would work for SoD, but not for EET?
This is what I use for both games inside a tpa:
Spoiler/* ADD_TRANS_TRIGGER for specific reply options for Imoen_in_group_KD.d */
<<<<<<<< .../inlined/i4e_BDIMOEN.d
/* #63960 ~I'm more concerned about you. How have you been doing these last few weeks?~ */
ADD_TRANS_TRIGGER BDIMOEN 9 ~!InParty("%IMOEN_DV_SOD%")~ DO %responses_9% //9/* #65051 ~How have you been doing these last few weeks?~ */
ADD_TRANS_TRIGGER BDIMOEN 12 ~!InParty("%IMOEN_DV_SOD%")~ DO %responses_12% //9/* #70436 ~Duke Jannath sent you here seeking magical papers or books, did she not? I found these in Korlasz's room.~ */
ADD_TRANS_TRIGGER BDIMOEN 33 ~!InParty("%IMOEN_DV_SOD%")~ DO %responses_33% //1
>>>>>>>>// List of all potential response strrefs to check
ACTION_DEFINE_ASSOCIATIVE_ARRAY response_strrefs BEGIN
%63960% => 1
%65051% => 1
%70436% => 1
END
COPY_EXISTING ~BDIMOEN.dlg~ ~override~
// scanning listed dialog states
PATCH_FOR_EACH state IN 9 12 33 BEGIN
LPF GET_RESPONSE_STRREFS INT_VAR state RET strrefs RET_ARRAY strrefs END
TEXT_SPRINT indices ~~ // a temporary variable for building the index list
FOR (i = 0; i < strrefs; ++i) BEGIN
SET value = $strrefs(~%i%~)
// Include index only if strref is listed in the response_strrefs array
PATCH_IF (VARIABLE_IS_SET $response_strrefs(~%value%~)) BEGIN
TEXT_SPRINT indices ~%indices% %i%~ // building list of indices
END
END
// prevent adding a trigger if index list is empty
PATCH_IF (~%indices%~ STR_EQ ~~) BEGIN
TEXT_SPRINT indices "IF ~False()~"
END
// initialize variables responses_39, responses_40, ...
// EVAL is used to create the variable name dynamically
TEXT_SPRINT EVAL ~responses_%state%~ ~%indices%~
PATCH_PRINT ~Variable %state%: %indices%~
END
BUT_ONLY// Variables response_39, response_70
// are now initialized and can be used in the .d file
COMPILE EVAL ~.../inlined/i4e_BDIMOEN.d~
/* if Imoen is not in party, the final dialogue should not be triggered by one of the FF soldiers unless Imoen and the PC are at the exit. */
<<<<<<<< .../inlined/i4e_BDFF1000.d
/* #69736 ~Thank you. I'm ready to return to the Ducal Palace now.~ */
ADD_TRANS_TRIGGER BDFF1000 0 ~Range("%IMOEN_DV_SOD%",20) !StateCheck("%IMOEN_DV_SOD%",CD_STATE_NOTVALID) !Dead("%IMOEN_DV_SOD%")~ DO%responses_0% //2
>>>>>>>>// List of all potential response strrefs to check
ACTION_DEFINE_ASSOCIATIVE_ARRAY response_strrefs BEGIN
%69736% => 1
END
COPY_EXISTING ~BDFF1000.dlg~ ~override~
// scanning listed dialog states
PATCH_FOR_EACH state IN 0 BEGIN
LPF GET_RESPONSE_STRREFS INT_VAR state RET strrefs RET_ARRAY strrefs END
TEXT_SPRINT indices ~~ // a temporary variable for building the index list
FOR (i = 0; i < strrefs; ++i) BEGIN
SET value = $strrefs(~%i%~)
// Include index only if strref is listed in the response_strrefs array
PATCH_IF (VARIABLE_IS_SET $response_strrefs(~%value%~)) BEGIN
TEXT_SPRINT indices ~%indices% %i%~ // building list of indices
END
END
// prevent adding a trigger if index list is empty
PATCH_IF (~%indices%~ STR_EQ ~~) BEGIN
TEXT_SPRINT indices "IF ~False()~"
END
// initialize variables responses_39, responses_40, ...
// EVAL is used to create the variable name dynamically
TEXT_SPRINT EVAL ~responses_%state%~ ~%indices%~
PATCH_PRINT ~Variable %state%: %indices%~
END
BUT_ONLY// Variables response_39, response_70
// are now initialized and can be used in the .d file
COMPILE EVAL ~.../inlined/i4e_BDFF1000.d~This is from my tp2:
SpoilerALWAYS
(snip)
ACTION_IF GAME_IS ~bgee~ THEN BEGIN
OUTER_SPRINT ~63960~ ~63960~ //
OUTER_SPRINT ~65051~ ~65051~ //
OUTER_SPRINT ~69736~ ~69736~ //
OUTER_SPRINT ~70436~ ~70436~ //
ENDACTION_IF GAME_IS ~eet~ THEN BEGIN
OUTER_SPRINT ~63960~ ~263960~
OUTER_SPRINT ~65051~ ~265051~
OUTER_SPRINT ~69736~ ~269736~
OUTER_SPRINT ~70436~ ~270436~
ENDEND //ALWAYS
For SoD, it installs and patches fine.
For EET, it does not patch anything in BDIMOEN, and gives error messages for the other dialogue files:
SpoilerInstalling [Imoen 4 Ever in SoD: Imoen Remains in Group in Korlasz' Dungeon] [v5 pre]
[*.IDS] forgotten
Appending to files ...
Not appending [0x80101FEF CD_STATE_NOTVALID...] to [STATE.IDS] because it DOES contains [CD_STATE_NOTVALID]
Extending game scripts ...
[./override/BG0123.BCS] loaded, 991 bytes
override/BG0123.bcs copied to imoen_forever/backup/10/BG0123.bcs, 991 bytes
Extended script [BG0123.bcs] with [.../i4e_sod_detection.baf]
Extending game scripts ...
[./override/BD0103.BCS] loaded, 75430 bytes
override/bd0103.bcs copied to imoen_forever/backup/10/bd0103.bcs, 75430 bytes
Extended script [bd0103.bcs] with [.../i4e_sod_detection.baf]
Copying and patching 1 file ...
[./override/BDIMOEN.dlg] loaded, 28436 bytesVariable 9: IF ~False()~
Variable 12: IF ~False()~
Variable 33: IF ~False()~
Compiling 1 dialogue file ...
Processing 1 dialogues/scripts ...
[./override/BDIMOEN.DLG] loaded, 28436 bytes
[BDIMOEN.DLG] loaded
[BDIMOEN.DLG] saved 142 states, 336 trans, 18 strig, 146 ttrig, 73 actions
override/BDIMOEN.dlg copied to imoen_forever/backup/10/BDIMOEN.dlg, 28436 bytes
Copying and patching 1 file ...
[./override/BDFF1000.dlg] loaded, 4795 bytesVariable 0: IF ~False()~
Compiling 1 dialogue file ...
Processing 1 dialogues/scripts ...
[./override/BDFF1000.DLG] loaded, 4795 bytes
[BDFF1000.DLG] loaded
ERROR: Cannot resolve internal symbolic label [DOIF] for DLG [BDFF1000]
Known labels: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
ERROR: processing .D actions [tb#_compile_eval_buffer/.../inlined/i4e_BDFF1000.d]: Failure("cannot resolve label")
Stopping installation because of error.
Stopping installation because of error.Since the definitions of the OUTER_SETs are set and the structure is completely the same for both games, I am at a loss what the problem for EET would be.
-
Oooooh. Nice. I didn't understand that's how this works. Awesome! Thanks for your patience.
-
Thanks for the list @Endarire!
This is not my field of expertise. If anything should be done to DSotSC and/or NTotSC how the spells are added / compatibility checks / better coding standard etc. let me know and I will integrate it. That also goes for Region of Terror, I suppose..
What do you mean by this?
9 hours ago, Endarire said:Region of Terror
Adds new spells that, according to the readme, are "mostly kit-specific." These kits also don't work with Baldur's Gate II: Enhanced Edition. -
Sorry for being daft. I don't see how I would call several reply option indeces in the same state. Currently, I get one idex per state. E.g. for state 39, the reply option index with the matching string is stored in %responses_39%. I call it inside the d with:
ADD_TRANS_TRIGGER ARAN 39 ~Global("C#IM_ImoenStays","GLOBAL",0)~ DO %responses_39%
For calling more than one I would need several variables for the different reply option indeces of one state which I do not see in the current version of the code.
-
I see. That's a very powerful feature you are planning there for mod install order, awesome.
Would you consider writing a best practice tutorial how to make a mod compatible and ready for PI? For example I had no idea the LABELs would be so important (and also not in this global range). I am absolutely willing to make my mods PI compatible but I need good instructions so I know what to add where without the feeling that I do extra rounds because I didn't know everything on time or - even worse - didn't know how to implement it so it would be useful.
-
And: if I name my LABELs tp2name_componentname (without my prefix) it would still be unique, no? Because there are no two mods with the same tp2 name due to compatibility reasons. So, including the prefix to me is less of making the label unique, it's more of being able to spot quicker which other mod(der) the referenced LABEL belongs to (?).
-
I still don't understand. What does PI do with LABELs, i.e. use them for? I thought they are for mods to be able to detect/forbid other components, either from its own or from different mods. But that's code that is coded into mods. Why would get PI confused if a mod component moves and gets a new LABEL if all mods using it would be updated, too?
-
I would need help to adjust this structure so it also can store several reply option indexes for one dialogue state, and would be very happy for help.
// List of all potential response strrefs to check ACTION_DEFINE_ASSOCIATIVE_ARRAY response_strrefs BEGIN 43058 => 1 49175 => 1 END COPY_EXISTING ~aran.dlg~ ~override~ // scanning listed dialog states PATCH_FOR_EACH state IN 39 70 BEGIN LPF GET_RESPONSE_STRREFS INT_VAR state RET strrefs RET_ARRAY strrefs END TEXT_SPRINT indices ~~ // a temporary variable for building the index list FOR (i = 0; i < strrefs; ++i) BEGIN SET value = $strrefs(~%i%~) // Include index only if strref is listed in the response_strrefs array PATCH_IF (VARIABLE_IS_SET $response_strrefs(~%value%~)) BEGIN TEXT_SPRINT indices ~%indices% %i%~ // building list of indices END END // prevent adding a trigger if index list is empty PATCH_IF (~%indices%~ STR_EQ ~~) BEGIN TEXT_SPRINT indices "IF ~a_nonexisting_trigger()~" END // initialize variables responses_39, responses_40, ... // EVAL is used to create the variable name dynamically TEXT_SPRINT EVAL ~responses_%state%~ ~%indices%~ PATCH_PRINT ~Variable %state%: %indices%~ END BUT_ONLY
-
Is this already ready for implementation? I thought we got stuck in discussion about features. Is the problem about tagging mod components differently solved? Because I'd definitely need that.
Sarah v6 released with Russian Translation and EET Install Fix!
in Sarah
Posted
Sarah is a female human ranger of chaotic good alignment for BGII. The mod offers romance possibilities for a female protagonist.
Version 6 fixes an EET install error, some minor fixes, and adds a Russian Translation by tipun.