Please note: In xxbd0101.baf, the trigger of the second script block was changed to close an oversight that prevented Biff to spawn in case the player met him in the city before but did not take him into the group.
Also, there were copy&paste errors where Minsc's death variable was still present, but of course it needs to be Biff's.
And: The tutorial has two new components!
- "Add Biff to Corwin's list about companions in BG city" - before going into BG city, Corwin can be asked about former companions who are now to be found inside the city. Biff will be mentioned here, too, in case he was in the party before (which is in principle not possible but it's an example in case your NPC will be).
- "Make the Mod EET compatible" This paragraph deals with EET compatibility for an SoD only NPC mod - which is the kind of mod with the least work, at least compared with BG:EE or BGII mods.
Changes:
corrected copy&paste errors where Minsc's death variable was inside scripts instead of Biff's
fixed oversight in xxbd0101.baf: in case Biff was taken into the group in BG city but then left standing before the last night before the coalition marches against the crusade, he wouldn't spawn in front of the Ducal Palace
added new paragraph: "Add Biff to Corwin's list about companions in BG city"
added new paragraph: "Make the Mod EET compatible"
And of course the Tutorial NPC Mod "Biff the Understudy" was updated in accordance with the tutorials.
Version 2 comes with bugfixes and new content.
Changes:
-added EET compatibility
-corrected copy&paste errors where Minsc's death variable was inside scripts instead of Biff's
-corrected trigger of second script block in xxbd0101.baf to close the oversight that Biff wouldn't (re)spawn here in case he was already spawned in bd0010.are but not taken into the group
-added "Biff visits PC in prison"
-added "Corwin will mention Biff's whereabouts in BG city if asked about the former companions"
-the mod now uses a tra file (albeit only for the line needed for EET fate spirit) and HANDLE_CHARSETS for text conversion
I used the SmallWait() because BeamDog used them, but I made experiences with script commands not being executed in cutscenes unless there is a short waiting, so I just left them in, trusting on the devs experiences. I don't know how many times I fought with cutscenes not working properly although all commands where ok in principle, and then finally a "Wait(1)" did the miracle, so if I have a template that uses a (Small)Wait() somewhere, I'm not going to try whether it will work without.
Yep. Also note you can stack several ActionOverride() for an actor in cutscene mode to make an action queue - in this case inserting waits will instead disrupt the queue.
Couple other non-obvious things to not accidentally change, lest they destroy your weekend:
1) SaveLocation("LOCALS","variable",[x.y]) must be in uppercase, otherwise it won't work. Coordinate variables are about the only place I know where case matters.
2) Trigger overrides for objects that may not exist in the area need to be the last in condition block:
OR(2)
!Range("ff_camp",999) //"Name" of a trigger which detects the camps
!TriggerOverride("ff_camp",IsOverMe("xxBiff"))
Even merely switching positions of TO() and Range() here will break it if you're not in any camp area (1000, 7100 or 3000). Happens with dialog triggers as well. I think a temporary solution was to place a dummy ff_camp dot in all SoD areas so that it wouldn't bug out, but as the new locations kept getting added I opted for a combo like this.
Ha! Yeah, I went for option one, instead. EDIT: Just so this doesn't make the wrong impression: I complained to @Raduziel via PM that I can't get one of the cutscenes to work and will either leave it or throw my comp out of the window.
If you still have the script, I can take a look at it.
@Ardanis Thank you very much for the insight!
Thank you very much for your generous offer. I don't have the cutscene any more (it was the attempt to let a non-party member walk along in the very last SoD area, but it's such a short moment and I don't even need it for any of my own private NPC projects.) I might come back to your offer if I have similar difficulties in one of the other cutscenes where all characters in SoD are supposed to move / gather / do something else, though!
Also note you can stack several ActionOverride() for an actor in cutscene mode to make an action queue - in this case inserting waits will instead disrupt the queue.
If someone would give me a quick explanation what an action queue and also disrupting it actually means (and whether there are instances where one would want one or the other), maybe with an example, that would be great.
@Raduziel That might be because the highlighter was probably created before SoD used small letters for locals and global. I didn't know that is actually possible before that. (It probably wasn't, in the old engine.)
If someone would give me a quick explanation what an action queue and also disrupting it actually means (and whether there are instances where one would want one or the other), maybe with an example, that would be great.
This will make the shadow thief execute all the overrides given to him (first move, then wait, then face etc.), and the cutscene id won't need to bother with directing him any further. On the other hand, if those AOs had waits between them:
Then the thief would start moving to designated point, only to be overridden a second later with SmallWait(8), making him stop walking and do that instead.
This is particularly useful if you have multiple non-unique actors (i.e. sharing DV aka scripting name) spawned and need them to follow complex instructions simultaneously. Best example that springs to mind is the looping BDCUT11A.BCS from SoD (initiated in BDCUT11.BCS), which spawns few random crusaders every second and makes them march across the screen.
On the other hand, you may have a character ordered to walk away and then have them stop and turn back. While it's possible to time it perfectly, it's usually easier to just send them farther than they need to be and stop them in the middle with override action.
For the first part of the tutorial, regarding this section:
/* xxBiffsP.dlg Biff's kickout dialogue for SoD */
BEGIN ~xxBiffsP~
/* If kicked out in Avernus (so Caelar can join) in bd4700.are
This sets Global("xxBiff_kicked_bd4700","global",1) which is used in xxbdcut59b.baf */
/* Biff can't go home from here - so he will stay and say something brave. */
IF ~AreaCheck("bd4700")
GlobalLT("bd_plot","global",570)~ THEN BEGIN kickout_1
SAY ~Sure, er, I'll stay around... and fight.~
IF ~~ THEN DO ~SetGlobal("xxBiff_kicked_bd4700","global",1)
SetGlobal("bd_joined","locals",0)~ EXIT
END
The dialogue is scripted (Perhaps patched or adjusted from its original version where it wasn't the case) so that Caelar will never join a party of six. Thus I'm not sure if it's necessary beyond mimickry. Even if you reform your party during the battle, Caelar will never get added, and most likely the people you removed will die anyway.
Thus you could potentially cut it from the tutorial, or leave it in there for legacy purposes.
The tutorials 1 and 4 were updated, tutorial 3 is now available, but not finished, the "Biff the Understudy Tutorial mod" was updated with in accordance to the updates for tutorial 1 and 4.
Tutorial 2 updates to v5 with adaptions to the last scenes.
Changelog:
- added SetGlobal("bd_meet_canon_party","bd6200",1)to creation at the sewer exit (after PC escapes prison) so Imoen will be aware there is someone waiting at the clearing.
- changed handling of NPC in the last SoD area (abduction area): NPC will not appear for EET abduction scene. I couldn't make the transition to BGII work properly if the effects are on the NPC while they are not in party.
All tutorials plus the tutorial mod package were updated and heavily revised! The tutorials are finished now from what I can determine by browsing the SoD game files. There might be changes once I finished my own NPC mods for SoD.
Changelog Tutorial 1 v8:
- Tutorial was revised and updated with new content. This includes unification of used naming schemes, correction of typos and oversights. Proposed examples might have changed in details.
- Rewritten first section for compatibility with EndlessBG1 mod. New title: General throughts to transition into SoD's "Korlasz' Crypt".
- Chapter 2 "Add Biff to Corwin's list about companions in BG city" now uses I_C_T directly.
- Content list order corrected.
Changelog Tutorial 2 v7:
- Tutorial was revised and updated with new content. This includes unification of used naming schemes, correction of typos and oversights. Proposed examples might have changed in details.
- Chapter 3 "Biff visits the PC in Prison" expanded in case the NPC should visit as a love interest after Corwin.
- Added Continue() to script additions via EXTEND_TOP except cutscenes.
- Revised the order of actions in some script blocks.
- Corrected typos and oversights.
Changelog Tutorial 3 v3:
- Tutorial was revised and updated with new content. This includes unification of used naming schemes, correction of typos and oversights. Proposed examples might have changed in details.
- New chapter: Training the Recruits in the Coalition Camp
- New chapter: The Chicken, the Well, and the Dog Easter Egg
- New chapter: Providing the "Skipit" Functionality for Cutscenes
- New chapter: Promotion of the Road to Discovery Mod and its Possibilities for your NPC Mod
- Unified Biff's joined.dlg to "xxBiffJ".
- Chapter paragraphs are numbered now.
- Chapters about commenting in final scene deprecated ("Last area bd6100.are: comment in abduction scene (EET)").
Changelog Tutorial 4 v3:
- Tutorial was revised and updated with new content. This includes unification of used naming schemes, correction of typos and oversights. Proposed examples might have changed in details.
- Added new chapter: Include Optional Component for Banters in "Dialog Style". Examples in chapters 1-3 adjusted for compatibility with new chapter 4. (i.e. used variables changed; comments on how to put all banters into one single baf file removed.)
- Examples in chapters 1 and 3 expanded: Biff and Corwin banter two times now.
Changelog Tutorial Mod Package "Biff the Understudy":
-Updated the mod to the Tutorial updates: Tutorial 1 v8, Tutorial 2 v7, Tutorial 3 v3, Tutorial 4 v3. Please note: The mod was revised and updated according to the changes in the tutorials. Details and specifics have changed at various places!
-Added example of German language choice (not active) and traify-ed all lines in the tp2 (not many).
-Changed handling of texts: setup-xxbiff.tra contains lines needed for setup, all ingame text from tp2 moved into game-xxbiff.tra.
-Added dynamic order syntax and globally unique labels to xxbiff.ini and tp2 to include support for Project Infinity, with explanations.
-Updated Readme.
Tutorial 1 "Automatic Transition of NPCs into SoD and between Camps in SoD" updates to v9!
Changelog:
-Added note to paragraph "Biff's SoD kickout dialogue with the needed local variables" regarding the importance of trigger order for NextTriggerObject(!IsOverMe()) if the object might not be in the area, by Ardanis.
All Tutorials plus the Template Mod package were updated.
Optimized naming scheme of d and baf files for search and replace of names (if tutorial NPC mod template is used for other NPCs): This includes unification of used naming schemes, correction of typos and oversights. Proposed examples might have changed in details.
Greetings dialogue file name changed to "xxBiffsG" to distinguish it from the OVERRDE script.
All variables should start with the prefix "xxBiff_".
Updated link for "Providing the "Skipit" Functionality for Cutscenes".
Fixed syntax for interjection into "The Chicken, the Well, and the Dog Easter Egg" (I_C_T3 instead of I_C_T).
The Biff the Understudy NPC Tutorial mod package was updated to v6. Please note that the contents with scripted reactions to game events and crossmod to Road to Discovery is still a work in progress.
Changelog:
-Integrated script and dialogue templates for using Road to Discovery's trigger variable system for reactions to the main story elements.
I really appreciate how much time and effort you have put into SoD. I really enjoy that part of the game, and I really like the extra love you are pouring into it.
I am about to finish the contents for SoD for all my NPC mods (including two yet unpublished) so I am playing the campaign with my mods currently and am enjoying it very much.
Biff is in my party, too!
Biff? SoD is short of figthers, but still…
What are his stats and saves, still 9 for all stats and 20 for saves?
Hi saves should normalize at level up I’d reckon.. But what about proficiencies?
I just took the existing cre file (yes! there is a cre file for Biff the Understudy in the original game: DIALOGMO.cre) and put it in there. All I patched was death variable, scripts, and dialogue. I didn't change any other stats.
I just took the existing cre file (yes! there is a cre file for Biff the Understudy in the original game: DIALOGMO.cre) and put it in there. All I patched was death variable, scripts, and dialogue. I didn't change any other stats.
Considering the things he could do in the first installment, it makes sense that he had some coding to back up his awesomeness. Best og luck with him - at last he will have his moment to shine.
Biff NPC Tutorial mod package updates to 7 and is now alphatested on SoD. This is the last version I was planning, any updates will be bugfixes only.
Changelog:
-Optimized script and dialogue templates for using Road to Discovery's trigger variable system for reactions to the main story elements.
-The mod tempate is now alphatested with regard to general bugs, triggers, and appropriate timers.
Modding Tutorial Part 2: "Make Your NPC Comment and Move Along at the End of SoD" updates to v9.
Changelog: -Changed CutSceneID() in bdcut61_patch.baf to Player1.
Modding Tutorial Part 3: "Add Other General SoD Behavior to Your NPC: XP Adjustment, Actions in Story Cutscenes, Commenting of Main Story Events" updates to v6.
Changelog:
- Fixed variable setting at open portal comment.
- Fixed variable setting in arriving in Avernus comment.
- Fixed comment timing in Avernus elevator.
Sounds like a busy easter…
7 updates to some of the many mods you manage. Hope you had time to enjoy a part of the holiday at least
Ps. Thanks for the updates
@StummvonBordwehr thanks for the kind words! It was 17 mods in total - all I took along on my own SoD run and some more. This was the biggest update run for me so far.
@StummvonBordwehr thanks for the kind words! It was 17 mods in total - all I took along on my own SoD run and some more. This was the biggest update run for me so far.
Thats impressive. Thanks for the updates and work in general - it is much appreciated
Comments
Please note: In xxbd0101.baf, the trigger of the second script block was changed to close an oversight that prevented Biff to spawn in case the player met him in the city before but did not take him into the group.
Also, there were copy&paste errors where Minsc's death variable was still present, but of course it needs to be Biff's.
And: The tutorial has two new components!
- "Add Biff to Corwin's list about companions in BG city" - before going into BG city, Corwin can be asked about former companions who are now to be found inside the city. Biff will be mentioned here, too, in case he was in the party before (which is in principle not possible but it's an example in case your NPC will be).
- "Make the Mod EET compatible" This paragraph deals with EET compatibility for an SoD only NPC mod - which is the kind of mod with the least work, at least compared with BG:EE or BGII mods.
Changes:
Version 2 comes with the changes:
-added paragraph: "Biff visits the PC in Prison"
Version 2 comes with bugfixes and new content.
Changes:
-added EET compatibility
-corrected copy&paste errors where Minsc's death variable was inside scripts instead of Biff's
-corrected trigger of second script block in xxbd0101.baf to close the oversight that Biff wouldn't (re)spawn here in case he was already spawned in bd0010.are but not taken into the group
-added "Biff visits PC in prison"
-added "Corwin will mention Biff's whereabouts in BG city if asked about the former companions"
-the mod now uses a tra file (albeit only for the line needed for EET fate spirit) and HANDLE_CHARSETS for text conversion
Couple other non-obvious things to not accidentally change, lest they destroy your weekend:
1) SaveLocation("LOCALS","variable",[x.y]) must be in uppercase, otherwise it won't work. Coordinate variables are about the only place I know where case matters.
2) Trigger overrides for objects that may not exist in the area need to be the last in condition block: Even merely switching positions of TO() and Range() here will break it if you're not in any camp area (1000, 7100 or 3000). Happens with dialog triggers as well. I think a temporary solution was to place a dummy ff_camp dot in all SoD areas so that it wouldn't bug out, but as the new locations kept getting added I opted for a combo like this.
If you still have the script, I can take a look at it.
Safety measure, really, in case something unpredictable happens.
As for case-sensitive stuff, Weidu-highlighter in Notepad++ wasn't recognizing "locals" but did recognize "LOCALS". Ditto for globals/GLOBALS.
I don't know if it is relevant, though.
Thank you very much for your generous offer. I don't have the cutscene any more (it was the attempt to let a non-party member walk along in the very last SoD area, but it's such a short moment and I don't even need it for any of my own private NPC projects.) I might come back to your offer if I have similar difficulties in one of the other cutscenes where all characters in SoD are supposed to move / gather / do something else, though! If someone would give me a quick explanation what an action queue and also disrupting it actually means (and whether there are instances where one would want one or the other), maybe with an example, that would be great.
@Raduziel That might be because the highlighter was probably created before SoD used small letters for locals and global. I didn't know that is actually possible before that. (It probably wasn't, in the old engine.)
This is particularly useful if you have multiple non-unique actors (i.e. sharing DV aka scripting name) spawned and need them to follow complex instructions simultaneously. Best example that springs to mind is the looping BDCUT11A.BCS from SoD (initiated in BDCUT11.BCS), which spawns few random crusaders every second and makes them march across the screen.
On the other hand, you may have a character ordered to walk away and then have them stop and turn back. While it's possible to time it perfectly, it's usually easier to just send them farther than they need to be and stop them in the middle with override action.
The dialogue is scripted (Perhaps patched or adjusted from its original version where it wasn't the case) so that Caelar will never join a party of six. Thus I'm not sure if it's necessary beyond mimickry. Even if you reform your party during the battle, Caelar will never get added, and most likely the people you removed will die anyway.
Thus you could potentially cut it from the tutorial, or leave it in there for legacy purposes.
Changelog:
- added SetGlobal("bd_meet_canon_party","bd6200",1)to creation at the sewer exit (after PC escapes prison) so Imoen will be aware there is someone waiting at the clearing.
- changed handling of NPC in the last SoD area (abduction area): NPC will not appear for EET abduction scene. I couldn't make the transition to BGII work properly if the effects are on the NPC while they are not in party.
Changelog Tutorial 1 v8:
- Tutorial was revised and updated with new content. This includes unification of used naming schemes, correction of typos and oversights. Proposed examples might have changed in details.
- Rewritten first section for compatibility with EndlessBG1 mod. New title: General throughts to transition into SoD's "Korlasz' Crypt".
- Chapter 2 "Add Biff to Corwin's list about companions in BG city" now uses I_C_T directly.
- Content list order corrected.
Changelog Tutorial 2 v7:
- Tutorial was revised and updated with new content. This includes unification of used naming schemes, correction of typos and oversights. Proposed examples might have changed in details.
- Chapter 3 "Biff visits the PC in Prison" expanded in case the NPC should visit as a love interest after Corwin.
- Added Continue() to script additions via EXTEND_TOP except cutscenes.
- Revised the order of actions in some script blocks.
- Corrected typos and oversights.
Changelog Tutorial 3 v3:
- Tutorial was revised and updated with new content. This includes unification of used naming schemes, correction of typos and oversights. Proposed examples might have changed in details.
- New chapter: Training the Recruits in the Coalition Camp
- New chapter: The Chicken, the Well, and the Dog Easter Egg
- New chapter: Providing the "Skipit" Functionality for Cutscenes
- New chapter: Promotion of the Road to Discovery Mod and its Possibilities for your NPC Mod
- Unified Biff's joined.dlg to "xxBiffJ".
- Chapter paragraphs are numbered now.
- Chapters about commenting in final scene deprecated ("Last area bd6100.are: comment in abduction scene (EET)").
Changelog Tutorial 4 v3:
- Tutorial was revised and updated with new content. This includes unification of used naming schemes, correction of typos and oversights. Proposed examples might have changed in details.
- Added new chapter: Include Optional Component for Banters in "Dialog Style". Examples in chapters 1-3 adjusted for compatibility with new chapter 4. (i.e. used variables changed; comments on how to put all banters into one single baf file removed.)
- Examples in chapters 1 and 3 expanded: Biff and Corwin banter two times now.
Changelog Tutorial Mod Package "Biff the Understudy":
-Updated the mod to the Tutorial updates: Tutorial 1 v8, Tutorial 2 v7, Tutorial 3 v3, Tutorial 4 v3. Please note: The mod was revised and updated according to the changes in the tutorials. Details and specifics have changed at various places!
-Added example of German language choice (not active) and traify-ed all lines in the tp2 (not many).
-Changed handling of texts: setup-xxbiff.tra contains lines needed for setup, all ingame text from tp2 moved into game-xxbiff.tra.
-Added dynamic order syntax and globally unique labels to xxbiff.ini and tp2 to include support for Project Infinity, with explanations.
-Updated Readme.
Changelog:
-Added note to paragraph "Biff's SoD kickout dialogue with the needed local variables" regarding the importance of trigger order for NextTriggerObject(!IsOverMe()) if the object might not be in the area, by Ardanis.
Changelog:
Updated link for "Providing the "Skipit" Functionality for Cutscenes".
Fixed syntax for interjection into "The Chicken, the Well, and the Dog Easter Egg" (I_C_T3 instead of I_C_T).
The Biff the Understudy NPC Tutorial mod package was updated to v6. Please note that the contents with scripted reactions to game events and crossmod to Road to Discovery is still a work in progress.
Changelog:
-Integrated script and dialogue templates for using Road to Discovery's trigger variable system for reactions to the main story elements.
I really appreciate how much time and effort you have put into SoD. I really enjoy that part of the game, and I really like the extra love you are pouring into it.
I am about to finish the contents for SoD for all my NPC mods (including two yet unpublished) so I am playing the campaign with my mods currently and am enjoying it very much.
Biff is in my party, too!
What are his stats and saves, still 9 for all stats and 20 for saves?
Hi saves should normalize at level up I’d reckon.. But what about proficiencies?
Considering the things he could do in the first installment, it makes sense that he had some coding to back up his awesomeness. Best og luck with him - at last he will have his moment to shine.
Changelog:
-Optimized script and dialogue templates for using Road to Discovery's trigger variable system for reactions to the main story elements.
-The mod tempate is now alphatested with regard to general bugs, triggers, and appropriate timers.
Modding Tutorial Part 2: "Make Your NPC Comment and Move Along at the End of SoD" updates to v9.
Changelog: -Changed CutSceneID() in bdcut61_patch.baf to Player1.
Modding Tutorial Part 3: "Add Other General SoD Behavior to Your NPC: XP Adjustment, Actions in Story Cutscenes, Commenting of Main Story Events" updates to v6.
Changelog:
- Fixed variable setting at open portal comment.
- Fixed variable setting in arriving in Avernus comment.
- Fixed comment timing in Avernus elevator.
7 updates to some of the many mods you manage. Hope you had time to enjoy a part of the holiday at least
Ps. Thanks for the updates
Thats impressive. Thanks for the updates and work in general - it is much appreciated