Jump to content

Search the Community

Showing results for tags 'troubleshooting'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General Discussion
    • G3 News and Announcements
    • Infinity Engine Modding News
    • General Mod Discussion
    • Fan Fiction
    • Noobermeet
  • Tools & Resources
    • DLTCEP
    • GemRB
    • The Gibberlings Three Debugging Suite for BG2
    • IESDP Updates and Info
    • Modding How-Tos and Tutorials
    • Modding Q&A
    • Multi-Install Tool
    • Widescreen Mod
  • Released Projects
    • Miscellaneous Released Mods
    • Ajantis
    • Alternatives
    • Amber
    • Angelo
    • Ascension
    • Auren Aseph
    • BG1 NPC Project
    • Baldur's Gate Mini Quests and Encounters
    • The Beaurin Legacy
    • BG2 Fixpack - General Discussion
    • Calin
    • The Calling
    • Cirerrek's AI Scripts
    • Coran's Friendship Mod
    • Crossmod Banter Pack
    • Divine Remix
    • Enhanced Edition Trilogy
    • Evandra
    • Full Plate & Packing Steel
    • Garrick's Infatuation
    • Gavin
    • The Gibberlings Three Anniversary Mod
    • Glam's NPC Pack
    • Icewind Dale Mod Roundup
    • Icewind Dale in Baldur's Gate II
    • Imoen 4 Ever
    • Item Randomiser
    • Item Revisions
    • IWD2 NPC Project
    • IWDification
    • Keeping Yoshimo
    • Kivan and Deheriana Companions for BG2
    • Level One NPCs
    • Mur'Neth
    • NPC Kitpack
    • NPC Strongholds
    • NPC Tweak for BG2
    • Oversight
    • Romantic Encounters (BG)
    • Romantic Encounters (BG2)
    • Sarah
    • Song and Silence
    • Spell Revisions
    • Sword and Fist
    • Sword Coast Stratagems
    • Tweaks Anthology Forum
    • Tyris Flare
    • Wheels of Prophecy
    • Yoshimo's Remorse
  • Unreleased Projects
    • Aklon
    • Baldur's Gate: Shadow Hand TC
    • Aran Whitehand
    • Delainy
    • IWD Tutu
    • Kit Revisions
    • Inactive Projects
  • NWN2 Modding
  • Mod Workrooms

Categories

  • NPCs
  • Quests and Others
  • Tweaks & Fixes
  • Items/Kits/Spells
  • Portrait Packs
  • Mini Mods
  • Tools
  • In Progress

Categories

  • Fixes
  • Items
  • Kits
  • NPCs
  • Quests
  • Spells
  • Tweaks
  • Other
  • Tools

Product Groups

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Discord


Website URL


Skype


AIM


MSN


ICQ


Yahoo


Jabber


Location


Interests


Mods Worked On

Found 14 results

  1. Version v5512

    5,056 downloads

    There are four files available: bg114315.exe - Patch for English players without the Tales of the Sword Coast expansion bgintl114315.exe - Patch for non-English players without the Tales of the Sword Coast expansion BGTalesUS5512.exe - Patch for English players with the Tales of the Sword Coast expansion BGTalesIntl5512.exe - Patch for non-English players with the Tales of the Sword Coast expansion Patches for the Enhanced Editions will be available through the service where you bought it (Beamdog, Steam, GOG).
  2. Version v26498

    3,671 downloads

    Depending on your installation, there are four files available: BaldursGateII-ShadowsofAmnPatchENGLISH.exe - For English players without the Throne of Bhaal expansion BaldursGateII-ShadowsofAmnPatchEUROPE.exe - For non-English players without the Throne of Bhaal expansion BGII-ThroneofBhaal_Patch_26498_ENGLISH.exe - For English players with the Throne of Bhaal expansion BGII-ThroneofBhaal_Patch_26498_EUROPEAN.exe - For non-English players with the Throne of Bhaal expansion Patches for the Enhanced Editions will be available through the service where you bought it (Beamdog, Steam, GOG).
  3. CURRENT ISSUES VOICED LINES (non-fatal flaw). - there are no current recorded voiceovers for lines; the component options are there to hold the WeiDU Component Number order, but no voicings are present BG2:EE/EET - FRIENDSHIP: (non-fatal flaw). - Revisit interjection points in both SoA and ToB. - Few BG2:EE introduced interjections are are covered. - No newly introduced areas have commentary. PID will not react to new areas. ARAN_AWARE (non-fatal flaw). - Component is coded and uses Aran's .tra, but most of the content ends up fitting regular Crossmod content. Pro = easy addition, unloads some .tra work, will probably become a regularly installed mod on EE and BiG World, etc. Con = A_A is already traified, Crossmod is not. Folks might not want to grab Crossmod when doing targeted installs. Component dissolved and all content except detecting kits moved to Crossmod Banter Pack. (non-fatal flaw). We have issues with Aran in the The Broken Sword right after picking him up. Force talking him, (before leaving The Broken Sword), and choosing the bath option - no variables set. Tried this with him and the PC doing everything and just taking a 'friendly' bath with not even a kiss being exchanged. Either way, no variables set and the PC flirting with Aran afterwards, (after bath but before leaving The Broken Sword), the flirts do not register - no variables set. The right variables do set if the PC doesn't take a bath with him though. Not able to replicate on Beta_Luridel (non-fatal flaw) But definitely unwanted behavior. Unable to replicate - procedures and tests logged here:http://gibberlings3.net/forums/index.php?showtopic=27403&p=236635 We can say "Doesn't look like us or a mod interaction on our end." we have some specific answers as to whom else thought this was a good place to interject. The only things left are glitches in evaluating SDNS(Player1) or Wait(3) or smallwait; all those things are engine things and script things that we can't control, as it is not our dialog that is processing that, it is Aerie's/Quayle's/Kalah's. And we can go back to modding. To be safe, because these things do pop up, I am marking this "Unable To Replicate) and we'll see what comes up. in the meantime, i will pop over and make sure Kivan has his code done up right. Wouldn't want the lad to accidentally leave anything dangling in the wind, y'know. FOR EXPANSION - Investigate idea of the "single playthrough encounter", where a different encounter might be available based on .bcs evaluation of party composition, class, etc. So a bard PC might get something related to FR lore about bards, a cleric might get an 'opposte alignment' encounter... remembering the biggs comments on this, because creating one-off encounters like this may be prohibitively costly in terms of development and testing time versus the amout of time players get to see the content. - Finish Teldra's first and second quest materials and retest vs. current mini-quests. - Look at how gender checks and wild surges interact, and determine feasibility of adding comedic/pathos with friend or romantic partner suddenly switching teams. - Journal entries for big decisionmaking points in the friendship/stuff talkked about/stories told. Add BG2EE materials for these. Ties in with the scribe vibe. cm - Test and integrate fix for this Repaired 7/2/2015 ALWAY ACTIVE FOR FURTHER DEVELOPMENT SoA and ToB FRIENDSHIP: Look for ways of having Aran realistically engage in a discussion that avoids all the materials other mods have covered well, and in detail , avoiding the following: - How did you get here? - What are your feelings about being (potentially) a god? - What was candlekeep like when you were a kid? - Why are you doing this? - Is Aerie sleeping with you now, or just leading you on? - So, that Noober guy... does he have a sister, becuse she might be just my cup of tea... - Gorion - daddy figure or kind uncle? - Hey, those Shadow Thief outfits for the ladies... wow. Cool tattoos, and lots of skin. I wonder how they stay warm in winter... ...looking for fun, interesting, "friends chatting" stuff, open to any PC. SoA and ToB Talks Updates - Adding more options or pathways for dialog to reflect race, class, kit, gender, alignment, and in-game actions. DIALOGUE ALL AREAS: Look for any remaining reply states that force players into 1, 2, or 3 choices and expand them into the Aran-Usual 5 to 7. Hint: If there are less than 4, the option missing is probably "shy or reticent". I seem to have assumed most female PCs will not really be that shy. Or reticent. Sample schematics for inspiration: 1 interested 2 not interested 3 vamping, or teasing 4 aggressive 5 cruel/shutdown (may need one additional, of STFU) 1 interested/aggressive 2 teasing/seductive with or without any intention of following through 3 tender/shy 4 not interested 5 cruel Berelinde's "Benett Rubric" PC reply 1 (Lydia/Kitty): narcissistic, attempt to turn the conversation toward the PC PC reply 2 (Jane): all compassion PC reply 3 (Elisabeth): practical, full of advice PC reply 4 (Mary): inappropriate, sometimes wildly so PC reply 5: exit the dialogue
  4. Avenger

    DLTCEP

    Version v7.8.0.2

    12,594 downloads

    The DragonLance Total Conversion Editor Pro (DLTCEP) is an unofficial game file editor/checker/browser for Infinity Engine games. Support forum
  5. Now, with the Granddaddy of All Mods, Solaufein, there is an added difficulty. We can (and I have) create two fun banters, and install them. file: aranw_aware\aranaware_solaufein_SoAbanters.d /* SoA Banters: Aran<>Solaufein : cmorgan */ CHAIN IF ~Global("c-aran1solaufein","GLOBAL",0) InParty(Myself) !StateCheck(Myself,CD_STATE_NOTVALID) InParty("SOLA") InMyArea("SOLA") !StateCheck("SOLA",CD_STATE_NOTVALID) CombatCounter(0) !See([ENEMY])~ THEN C-ARANB c-aran1solaufeintalk ~[ARAN] So I hear you be a "good" Drow.~ DO ~SetGlobal("c-aran1solaufein","GLOBAL",1)~ == SOLA ~[sOLAUFEIN] Yes, it would appear so.~ == C-ARANB ~[ARAN] Didn't know there were any such thing.~ == SOLA ~[sOLAUFEIN] I assure you, I am. I exist, and I am not alone.~ == C-ARANB ~[ARAN] Well, I suppose you might find a rose on a dungheap, but I'd be thinkin' it would be a right easier thing to find a "good" demon servin' tea at Hareshom's o' Waterdeep.~ == SOLA ~[sOLAUFEIN] Perhaps you are correct. But the followers of Eilistraee, Lady Silverhair, must be discreet if we are to guide our brothers and sisters to a lighter path.~ == C-ARANB ~[ARAN] This Ellyartrie...~ == SOLA ~[sOLAUFEIN] Eilistraee.~ == C-ARANB ~[ARAN] Look, do there be many followers o' Her particular brand o' Drowdom?~ == SOLA ~[sOLAUFEIN] Very few, I am afraid.~ == C-ARANB ~[ARAN] Actually, that makes me a mite bit happier. I'd rather not be rethinkin' every single Drow bastard I personally put down. Chances are, none o' them be ones where I should o' hesitated.~ == SOLA ~[sOLAUFEIN] Ah, my friend, for a brief moment I thought that you would see past your prejudice rather that rationalize your past actions. I will sing a prayer to Lady of the Dance.~ EXIT /* SoA Banters: Solaufein<>Aran : cmorgan */ CHAIN IF ~Global("c-solaufein1aran","GLOBAL",0) InParty(Myself) !StateCheck(Myself,CD_STATE_NOTVALID) InParty("'c-aran") InMyArea("'c-aran") !StateCheck("'c-aran",CD_STATE_NOTVALID) CombatCounter(0) !See([ENEMY])~ THEN SOLA c-solaufein1arantalk ~[sOLAUFEIN] Ah, my prejudiced fellow traveller - speech is a mirror of the soul. As a man speaks, so is he. I ask you now: who is Aran?~ DO ~SetGlobal("c-solaufein1aran","GLOBAL",1)~ == C-ARANB ~[ARAN] I don't rightly understand th' question. Wait... mayhap I do. Do you be sayin' th' way a man speaks be a good indication o' his personality, his habits, an' so forth?~ == SOLA ~[sOLAUFEIN] Why, yes. I think that is a fair assessment.~ == C-ARANB ~[ARAN] That be a right interestin' idea. But I don't think it applies to me. You want to know me, you look at how I write, an' ignore th' language.~ == SOLA ~[sOLAUFEIN] I do not think that will be a fair picture. With your scribing, you have time to think, to craft your ideas. In your speech, there is an immediacy that shows a raw truth.~ == C-ARANB ~[ARAN] Mayhap. Or mayhap we have to agree to disagree, eh?~ == SOLA ~[sOLAUFEIN] I can convince you with a simple example, if you would like.~ == C-ARANB ~[ARAN] Aye, then, go ahead an' try.~ == SOLA ~[sOLAUFEIN] Have you ever known a Drow to communicate through poetry and song?~ == C-ARANB ~[ARAN] Point taken. An' I have to admit; mayhap I be wrong about th' only good Drow bein' a dead Drow. Mayhap there be one or two what be reasonable bein's.~ EXIT Now comes the interesting part. As written above, Aran's initiated banter will play, but on the vast majority of installs, Solaufein's will not. Why? Well... for one thing, Solaufein does not have a banter file. Oh, he does - but he doesn't. Because Back In The Day™, in the very first mods, the same file was used for both banter and for joined file, and the NPC script switched things around. And for a second thing, the RPG Solaufein Flirt pack adds a PID-style flirt to SOLA, so even if we call it, it will never play, as he flirts will superceed it in evaluation order. Actually, they might - the flirts are set on Player1 being the gabber, but if the folks there add the !Gabber(Player1) blocks I use, then they will have a wall - and someone, sometime, is going to build a proper PID for the lad. In a regular install, players will use the "obvious", and install Solaufein, then the RPG Flirt pack. Two traditional ways to fix this - play around with weighting, moving the banter higher up in the order. Tricky, risks Weimer's work being blocked, and subject to install order problems. Yuck. (actually, an additional one - start messing about with Solaufein's .bcs. Double-triple-yuck). Or take the cheap way out - and don't have Solaufein actually start the banter - have it triggered from Aran's file. Since I have control of Aran's stuff, and not Solaufein's, I'm going "cheap, cheap, cheap", to quote Meilcamp! Changed file entry - /* SoA Banters: Solaufein<>Aran : cmorgan */ CHAIN IF ~Global("c-solaufein1aran","GLOBAL",0) InParty(Myself) !StateCheck(Myself,CD_STATE_NOTVALID) InParty("SOLA") InMyArea("SOLA") !StateCheck("SOLA",CD_STATE_NOTVALID) CombatCounter(0) !See([ENEMY])~ THEN C-ARANB c-solaufein1arantalk == C-ARANB ~[ARAN] Blighted stone. Got one in my boot, I do.~ DO ~SetGlobal("c-solaufein1aran","GLOBAL",1)~ == SOLA ~[sOLAUFEIN] Ah, my prejudiced fellow traveller - speech is a mirror of the soul. As a man speaks, so is he. I ask you now: who is Aran?~ == C-ARANB ~[ARAN] I don't rightly understand th' question. Wait... mayhap I do. Do you be sayin' th' way a man speaks be a good indication o' his personality, his habits, an' so forth?~ == SOLA ~[sOLAUFEIN] Why, yes. I think that is a fair assessment.~ == C-ARANB ~[ARAN] That be a right interestin' idea. But I don't think it applies to me. You want to know me, you look at how I write, an' ignore th' language.~ == SOLA ~[sOLAUFEIN] I do not think that will be a fair picture. With your scribing, you have time to think, to craft your ideas. In your speech, there is an immediacy that shows a raw truth.~ == C-ARANB ~[ARAN] Mayhap. Or mayhap we have to agree to disagree, eh?~ == SOLA ~[sOLAUFEIN] I can convince you with a simple example, if you would like.~ == C-ARANB ~[ARAN] Aye, then, go ahead an' try.~ == SOLA ~[sOLAUFEIN] Have you ever known a Drow to communicate through poetry and song?~ == C-ARANB ~[ARAN] Point taken. An' I have to admit; mayhap I be wrong about th' only good Drow bein' a dead Drow. Mayhap there be one or two what be reasonable bein's.~ EXIT And that, as they say, is that
  6. User report: The scene with Kalah2 is not ending correctly with Aran in the party. Similar problem when Kivan is in the party. Eventually, every modder that sticks around long enough will have bug reports like this. And I have one. So let's blog away at it, and see what happens. We might find out I *gasp* made a MISTAKE! Or not. More importantly, let's see what it takes to drag out these kinds of reports, beat them into shape, and send them packing. So let's look at what is going one. We start with the code, by installing the mod, then decompiling the related dialog files to .d with WeiDU or DLTCEP. OK, we have the following interjections in SoA dealing with Kalah and what he is promised. Now, it is probable that Unfinished Business or another quest mod has changed stuff here, but in vanilla, what should happen is the conversation should finish, and Aerie should react if she can. So let's make sure it all works as intended first, then deal with mod additions. Code to try to add and Aran response, using I_C_T with passback, so things will flow. We use INTERJECT_COPY_TRANSITIVE (I_C_T) here because there are actions that Kalah's dialog state does that we really don't want to accidental;ly be applied to Aran, or left out of the link - I_C_T with a comment from Kalah at the end of it plays Hot Potato with the state actions, tossing them back to the original speaker (Kalah). /* SoA Interjections : Kalah And What He Was Promised Comments - remember to add cross-mod for the UB restoration of Kalah's Quest */ I_C_T KALAH2 7 c-arankalah27 /* ~Indifference killed those fools from the circus. I treat them in death as they were to me in life. A gnome gets no respect...I just wanted people to look up...to me. All that I have done...~ */ == C-ARANJ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Global("c-silencearan","GLOBAL",0)~ THEN @202 == KALAH2 IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Global("c-silencearan","GLOBAL",0)~ THEN @203 END I_C_T KALAH2 8 c-arankalah28 /* ~You don't understand, do you? You take my life, but worse, you take my dignity. I just wanted...I wanted to be the king instead of...instead of...~ */ == C-ARANJ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Global("c-silencearan","GLOBAL",0)~ THEN @202 == KALAH2 IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Global("c-silencearan","GLOBAL",0)~ THEN @203 END I_C_T KALAH2 9 c-arankalah29 /* ~You don't know...denied respect my entire life. A clown, a fool...it does not matter...I die as I...as I...~ */ == C-ARANJ IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Global("c-silencearan","GLOBAL",0)~ THEN @202 == KALAH2 IF ~InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Global("c-silencearan","GLOBAL",0)~ THEN @203 END patched states as installed after running that code, cut down to the evaluation of what happens if Aran is present: and the related states in Aran's file IF ~~ THEN BEGIN 9 // from: SAY #103057 /* ~[ARAN] Blighted hells. All this because you don't know th' difference between bein' small on th' outside, versus bein' small in th' inside.~ */ <-- snip IF ~ InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Global("c-silencearan","GLOBAL",0) ~ THEN EXTERN ~KALAH2~ 14 END IF ~~ THEN BEGIN 10 // from: SAY #103057 /* ~[ARAN] Blighted hells. All this because you don't know th' difference between bein' small on th' outside, versus bein' small in th' inside.~ */ <-- snip IF ~ InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Global("c-silencearan","GLOBAL",0) ~ THEN EXTERN ~KALAH2~ 15 END IF ~~ THEN BEGIN 11 // from: SAY #103057 /* ~[ARAN] Blighted hells. All this because you don't know th' difference between bein' small on th' outside, versus bein' small in th' inside.~ */ <-- snip IF ~ InParty("c-aran") InMyArea("c-aran") !StateCheck("c-aran",CD_STATE_NOTVALID) Global("c-silencearan","GLOBAL",0) ~ THEN EXTERN ~KALAH2~ 16 END which leads us back to : IF ~~ THEN BEGIN 14 // from: SAY #103058 /* ~[KALAH] You have no right to judge me.~ */ IF ~Dead("Aerie") !Dead("Quaylem") ~ THEN DO ~StartCutSceneMode() EraseJournalEntry(34110) EraseJournalEntry(34111) SetGlobalTimer("CircusEnded","GLOBAL",ONE_DAY) AddexperienceParty(25000) ActionOverride("Quayle",Wait(3)) ActionOverride("Quayle",StartDialogueNoSet([PC])) Kill(Myself)~ EXIT IF ~Dead("Aerie") Dead("Quaylem") ~ THEN DO ~EraseJournalEntry(34110) EraseJournalEntry(34111) SetGlobalTimer("CircusEnded","GLOBAL",ONE_DAY) AddexperienceParty(25000) Kill(Myself) ~ EXIT IF ~!Dead("Aerie") !InParty("Aerie")~ THEN DO ~StartCutSceneMode() EraseJournalEntry(34110) EraseJournalEntry(34111) SetGlobalTimer("CircusEnded","GLOBAL",ONE_DAY) AddexperienceParty(25000) ActionOverride("Aerie",Wait(3)) ActionOverride("Aerie",StartDialogueNoSet([PC])) Kill(Myself)~ SOLVED_JOURNAL #47528 /* ~Investigate the circus tent The gnome illusionist who converted the circus into his own personal domain has been killed, and the tent has reverted back to normal.~ */ EXIT IF ~IsValidForPartyDialog("Aerie")~ THEN SOLVED_JOURNAL #47528 /* ~Investigate the circus tent The gnome illusionist who converted the circus into his own personal domain has been killed, and the tent has reverted back to normal.~ */ EXTERN ~AERIEJ~ 36 IF ~!IsValidForPartyDialog("Aerie") IsValidForPartyDialog("Jaheira")~ THEN SOLVED_JOURNAL #47528 /* ~Investigate the circus tent The gnome illusionist who converted the circus into his own personal domain has been killed, and the tent has reverted back to normal.~ */ EXTERN ~JAHEIRAJ~ 315 END IF ~~ THEN BEGIN 15 // from: SAY #103058 /* ~[KALAH] You have no right to judge me.~ */ IF ~Dead("Aerie") !Dead("Quaylem") ~ THEN DO ~StartCutSceneMode() EraseJournalEntry(34110) EraseJournalEntry(34111) SetGlobalTimer("CircusEnded","GLOBAL",ONE_DAY) AddexperienceParty(25000) ActionOverride("Quayle",Wait(3)) ActionOverride("Quayle",StartDialogueNoSet([PC])) Kill(Myself)~ EXIT IF ~Dead("Aerie") Dead("Quaylem") ~ THEN DO ~EraseJournalEntry(34110) EraseJournalEntry(34111) SetGlobalTimer("CircusEnded","GLOBAL",ONE_DAY) AddexperienceParty(25000) Kill(Myself) ~ EXIT IF ~!Dead("Aerie") !InParty("Aerie")~ THEN DO ~StartCutSceneMode() EraseJournalEntry(34110) EraseJournalEntry(34111) SetGlobalTimer("CircusEnded","GLOBAL",ONE_DAY) AddexperienceParty(25000) ActionOverride("Aerie",Wait(3)) ActionOverride("Aerie",StartDialogueNoSet([PC])) Kill(Myself)~ EXIT IF ~IsValidForPartyDialog("Aerie")~ THEN EXTERN ~AERIEJ~ 36 IF ~!IsValidForPartyDialog("Aerie") IsValidForPartyDialog("Jaheira")~ THEN DO ~SetGlobalTimer("CircusEnded","GLOBAL",ONE_DAY) AddexperienceParty(25000) ActionOverride("Aerie",Wait(3)) ActionOverride("Aerie",StartDialogueNoSet([PC])) Kill(Myself)~ EXTERN ~JAHEIRAJ~ 315 END IF ~~ THEN BEGIN 16 // from: SAY #103058 /* ~[KALAH] You have no right to judge me.~ */ IF ~Dead("Aerie") !Dead("Quaylem") ~ THEN DO ~StartCutSceneMode() EraseJournalEntry(34110) EraseJournalEntry(34111) SetGlobalTimer("CircusEnded","GLOBAL",ONE_DAY) AddexperienceParty(25000) ActionOverride("Quayle",Wait(3)) ActionOverride("Quayle",StartDialogueNoSet([PC])) Kill(Myself)~ EXIT IF ~Dead("Aerie") Dead("Quaylem") ~ THEN DO ~EraseJournalEntry(34110) EraseJournalEntry(34111) SetGlobalTimer("CircusEnded","GLOBAL",ONE_DAY) AddexperienceParty(25000) Kill(Myself) ~ EXIT IF ~!Dead("Aerie") !InParty("Aerie") ~ THEN DO ~StartCutSceneMode() EraseJournalEntry(34110) EraseJournalEntry(34111) SetGlobalTimer("CircusEnded","GLOBAL",ONE_DAY) AddexperienceParty(25000) ActionOverride("Aerie",Wait(3)) ActionOverride("Aerie",StartDialogueNoSet([PC])) Kill(Myself)~ EXIT IF ~IsValidForPartyDialog("Aerie")~ THEN EXTERN ~AERIEJ~ 36 IF ~!IsValidForPartyDialog("Aerie") IsValidForPartyDialog("Jaheira")~ THEN EXTERN ~JAHEIRAJ~ 315 END So, what did we learn.... well... err... we learned that the I_C_T with passback is working as intended. The actions for the state are transferred back to Kalah in this sequence. In evaluation order (bottom to top for dialog, so it evaluates to this order): IF aerie_can't_talk AND jaheira_can_talk THEN GOTO Jaheira to make a comment. ELSE IF aerie_can_talk THEN GOTO Aerie's comments ELSE IF aerie_not_dead AND aerie_not_in_party THEN make aerie wait and talk to PC and then clobber self ELSE IF aerie_is_dead AND quayle_is_dead THEN set a timer and clobber self ELSE IF aerie_is_dead AND quayle_is_not_dead THEN set a timer and make Quayle talk to PC and then clobber myself. So, on a plain install, Aran's code should work just fine. We could simply say "Nope - the user is crazy. Or she has a messed up install." But when an experienced tester and user reports, it is far better to weigh in the benefit of the doubt and follow through farther - who knows what you will find. So now, to the testing install. First, we load up the game at a save point in C-AR01, The Broken Sword, with everything in a simple (unplayed) state. Then we have Aran join, and head over to the circus, to start the quest. This makes sure the least number of variables are set for quick troubleshooting. Then, we play the quest. Ctr-Y is our friend - we want the opponents to die quickly, so we can stop testing and enjoy ourselves with the content. Pass 1, Aerie Alive - works as intended; Aran does his interjection. It sends us to the correct evaluative state, too - Aerie is in the party, so she tosses her state 36 on as well: and since we don't have Jaheira here, we expect the first valid dialog in AERIEJ to fire, and yep, it does... Well we know our stuff works on a clean install, now, but let's be sure and see what happens if quayle is dead, or aerie is dead, just to make sure. Pass 2 - aerie left behind - works. Pass 3 - killing aerie... works. Pass 4 - Ctr-Y for you, Ctr-Y for you.... heck, Kill everyone except Aran and PC!! KILL MAIM DEEESTROOY - LEEERRROOOOOOYUYYY JEEENKIIIIIINS! *ahem*. Nope. It all works. Checks against the dialogue files. OK, so we have not gotten the "hanging" behavior described. So now we REALLY are done with this we know the code as installed works. EXCEPT - we don't know why that was happening on her game. So let's take a stick and poke in some dark corners, shall we? Other Mod Research First step, look for other mods tthat deal with Kalah and see what they do. Lots of utilities to do this, but since I was a weidu tester back in the day, I prefer the oldest trick in the book - text search of a whole ton of mods. Time to fire up NotePad++ and look in the Archive Of Unpacked Mods... not all the mods out there but a bunch. We are looking for things that are messing with KALAH2. We come up with 97 hits. Of those some are screened out because they are patching the .cre or manipulating items or just checking the .cre for validity - OK: D:\iecheckfiles\arath_v2.2\arath\dialogue\lk#aratj.d (1 hit) Line 4665: I_C_T KALAH2 11 LK#Arath_kalah (uses no passback) OK : D:\iecheckfiles\BDash168\Setup-BDToBv168.tp2 (1 hit) Line 5198: COPY_EXISTING ~KALAH2.DLG~ ~override~ (does REPLACE_TEXTUALLY ~ActionOverride("Aerie",StartDialogueNoSet())~ ~ActionOverride("Aerie",StartDialogueNoSet([PC]))~ ) OK: D:\iecheckfiles\bg2_fixpack-v9\bg2fixpack\compile\soa-dlg.d (1 hit) (does REPLACE_ACTION_TEXT_REGEXP ~\(^aerie$\)\|\(^kalah2$\)~ ~StartDialogueNoSet()~ ~StartDialogueNoSet([PC])~ ) 9and does WRITE_BYTE 0x27b 51 // alignment: chaotic evil ) OK: D:\iecheckfiles\Breagar-5.13\ACBre\D\ACBREB.D (6 hits) Breagar uses the same basic code we do: INTERJECT_COPY_TRANS KALAH 1 ACKALAH1 ==ACBREB IF ~InParty("ACBRE")InMyArea("ACBRE")!StateCheck("ACBRE",CD_STATE_NOTVALID)~ THEN @294 ==KALAH IF ~InParty("ACBRE")InMyArea("ACBRE")!StateCheck("ACBRE",CD_STATE_NOTVALID)~ THEN @295 END INTERJECT_COPY_TRANS KALAH2 1 ACKALAH21 ==ACBREB IF ~InParty("ACBRE")InMyArea("ACBRE")!StateCheck("ACBRE",CD_STATE_NOTVALID)~ THEN @294 ==KALAH2 IF ~InParty("ACBRE")InMyArea("ACBRE")!StateCheck("ACBRE",CD_STATE_NOTVALID)~ THEN @295 END INTERJECT_COPY_TRANS KALAH2 13 ACKALAH213 ==ACBREB IF ~InParty("ACBRE")InMyArea("ACBRE")!StateCheck("ACBRE",CD_STATE_NOTVALID)~ THEN @296 ==KALAH2 IF ~InParty("ACBRE")InMyArea("ACBRE")!StateCheck("ACBRE",CD_STATE_NOTVALID)~ THEN @297 END D:\iecheckfiles\BTL\aD&L\Interj.d (7 hits) -- well, if this is the newest version, there may be troubles here. Let's look at Line 4837: INTERJECT_COPY_TRANS2 Kalah2 4 Kalah2-4 Line 4837: INTERJECT_COPY_TRANS2 Kalah2 4 Kalah2-4 Line 4842: EXTEND_BOTTOM ~Kalah2~ 7 Line 4843: IF ~InParty("Kova") InMyArea("Kova")~ THEN EXTERN Z#KOVAJ Kalah2 Line 4847: IF ~~ THEN Z#KOVAJ Kalah2 Line 4850: == KALAH2 Line 4852: EXTERN KALAH2 9 Nope. While this uses some darned old code, the end result of all of it is to drop us back into state 9 in KALAH2. Aran will happily play his dialog from state 9. So no worries here. OK: D:\iecheckfiles\Chloev1.5\Chloe\D\BanterCR.d (1 hit) Line 1436: I_C_T KALAH2 5 azucarCR29 OK: D:\iecheckfiles\gavin_bg2-v20\gavin_bg2\dialogue\b!gavin_interjections.d (1 hit) Line 919: I_C_T KALAH2 6 BGavKALAH /* ~In Amn... a mage is a criminal and a gnome is a spectacle. In this tent... in my world... Kalah was the master, where none would dare to laugh...~ */ OK: D:\iecheckfiles\ImprovedAnvil_v5\Setup-ImprovedAnvil.tp2 (2 hits) just patches .cres Cliffettes Iron modder 9 steals Kalah for a new encounter, but desosn't mess with dialog in the game, and skip a ton of mods that poke about re-fixing what Fixpack and Baldurdash do, and some more off-topic stufff... and... OK: D:\iecheckfiles\KimNPC\KimInterject.d (1 hit) Line 838: INTERJECT_COPY_TRANS KALAH2 13 Kimkalah OK: D:\iecheckfiles\Kindrek\Dialogues\KINDREKJ.d (2 hits) Line 785: INTERJECT_COPY_TRANS KALAH2 13 KindrekKalah Line 788: == KALAH2 NOT OK - may need to go back and check latest versions, but I am sure this is fixed now as the player creating the reoprt on Aran specifically mentioned reporting it on Kivan: D:\iecheckfiles\Kivan\d\P#KIVJ.d (2 hits) Line 1560: I_C_T2 KALAH 4 P#KivanKalah2 Line 1564: I_C_T2 KALAH2 6 P#KivanKalah3 OK: D:\iecheckfiles\Severian\Dialogues\#SeverJ.d (1 hit) Line 812: INTERJECT_COPY_TRANS KALAH2 13 SeverKalah OK: D:\iecheckfiles\SeverianV.01REM\Severian\Dialogues\#SeverJ.d (1 hit) Line 2941: INTERJECT_COPY_TRANS KALAH2 13 SeverKalah OK: D:\iecheckfiles\tb_tweaks_windows_2.20\tb#tweaks\lib\romances.tpa (1 hit) Line 2: REPLACE_ACTION_TEXT_REGEXP ~\(^aerie$\)\|\(^kalah2$\)~ ~StartDialogueNoSet()~ ~StartDialogueNoSet([PC])~ heh. No worries on the Valen front after all. A quick check shows it is an accidental packaging of a /backup/ in the distro. The code is fine; D:\iecheckfiles\Valen5Min\ValenNPC\KEVALENJ.d (3 hits) Line 39: INTERJECT_COPY_TRANS KALAH2 9 KEValenKalahDead1 Line 44: INTERJECT_COPY_TRANS KALAH2 7 KEValenKalahDead2 Line 49: INTERJECT_COPY_TRANS KALAH2 8 KEValenKalahDead3 ALERT. Ok, we have a potential "old code might hijack this dialog" ... D:\iecheckfiles\zymisc2\Z#Misc\Dialogue\Interj.d (7 hits) Line 4825: INTERJECT_COPY_TRANS2 Kalah2 4 Kalah2-4 Line 4825: INTERJECT_COPY_TRANS2 Kalah2 4 Kalah2-4 Line 4830: EXTEND_BOTTOM ~Kalah2~ 7 Line 4831: IF ~InParty("Kova") InMyArea("Kova")~ THEN EXTERN Z#KOVAJ Kalah2 Line 4835: IF ~~ THEN Z#KOVAJ Kalah2 Line 4838: == KALAH2 Line 4840: EXTERN KALAH2 9 But nope. It eventually winds itself back to KALAH2 9, and a check of the code shows that while it will re-path from 4 to 9 dropping any I_C_T[234] on the chopping block, Aran hits 9 so we are all good. Plus, the actions are maintained. SOOOOOO... several hours later, a bunch of messing about, and what do we know? We can say "Doesn't look like us or a mod interaction on our end." We have some specific answers as to whom else thought this was a good place to interject. The only things left are glitches in evaluating SDNS(Player1) or Wait(3) or smallwait; all those things are engine things and script things that we can't control, as it is not our dialog that is processing that, it is Aerie's/Quayle's/Kalah's. And we can go back to modding. To be safe, because these things do pop up, I am marking this "Unable To Replicate" and we'll see what comes up. In the meantime, I will pop over and make sure Kivan has his code done up right. Wouldn't want the lad to accidentally leave anything dangling in the wind, y'know.
  7. As of 10/30/2010 Idea followups Ideas from PM from folks reading the forums, plus stuff I need to remember to recheck on throughout the mod to make sure that they are not single instances of "concept demo code', but actually integrated as part of the content in a way that makes sense and furthers the characterization. This could also be the "hey, make sure to check this list against current content and be organized about settling in and finishing the writing, so that the mod doesn not take another 5 years to actually get into player hands". FRIENDSHIP: Revisit interjection points in both SoA and ToB. Almost all are covered - double-check to see what is purposefully skipped, and log it. FRIENDSHIP: Current SoA 10 talks are fun, but probably need extension of at least 2 more to cover SoA. Canonical Bioware have far less - modern mods have as many as double that amount. No need to pad - but look for a topic/friendship discussion that makes sense to be having that might be fun to play around with. The current timing at 1 hour has 11 hours of playing before the friendtalk sequence is finished, and from then on, it is interjections, PID, quest/area related, and chapter-driven talks. Look for ways of having Aramn realistically engage in a discussion that avoids all the materials other mods have covered well, and in deatail - avoid the following: how did you get here? What are your feelings about being (potentially) a god? What was candlekeep like when you were a kid? why are you doing this? is Aerie sleeping with you now, or just leading you on? So, that Noober guy... does he have a sister, becuse she might be just my cup of tea... Gorion - daddy figure or kind uncle? Hey, those Shadow Thief outfits for the ladies... wow. Cool tattoos, and lots of skin. I wonder how they stay warm in winter... ...looking for fun, interesting, "friends chatting" stuff. May have to relook at StarGate:SG1, Buffy, SportsNight, Firefly, et. al, for inspiration. Need to avoid angsty pathos, as there will be some of hat at the end of the romance. And if I am playing with an NPC dude who is supposed to be watching my back as a friend, and he goes all gushy emo goth dark unhappy, well... I have no complaints about it. But when it comes time for combat, I'm like "hey, get a frackin' life. We have enough troubles - let's show this biatch how we do things downtown, and then we can go get you laid and improve your mood." FRIENDSHIP: Check timers and look for ways of making a bigger opportunity to save after a boattle if a talk has become active. This mod relies ofn replayability, but some folks play and experiment from saves. It won't help them if they can't save before a dialog, so they can try the different options. ALL AREAS; CODING SUGGESTION: Look for ways of accomplishing independent replies that are more writer-efficient. Sample schematics for inspiration: 1 interested 2 not interested 3 vamping, or teasing 4 aggressive 5 cruel/shutdown (may need one additional, of STFU) 1 interested/aggressive 2 teasing/seductive with or without any intention of following through 3 tender/shy 4 not interested 5 cruel Berelinde's "Benett Rubric" PC reply 1 (Lydia/Kitty): narcissistic, attempt to turn the conversation toward the PC PC reply 2 (Jane): all compassion PC reply 3 (Elisabeth): practical, full of advice PC reply 4 (Mary): inappropriate, sometimes wildly so PC reply 5: exit the dialogue FREINDSHIP AND ROMANCE: Recheck of action dialog sequences. Multiple sources, but Jastey put it best - ..(watch out for)...the amount of "tell PC what she is doing / feeling", as it is at the side of too much for my taste. ...not too fond of description texts that descripbe the whole action to the end without the PC having the chance to interact again. Check for places where I am not describing the setting/surroundings/physicality, but am trying to script a player's response to that description (unfortunately most of these are in adult land). Ideas from Berelinde to curb this on rewrites: limit Aran's lines to Aran's words or actions. If it has [ARAN] in front of it, you can only say what Aran is saying or doing. ...second way is to include a sense of delay... Preference is for the first, but in some instances I am going to have to follow the principle of "pc response is actually Aran acting, but player chooses his response. I need to go back and reread what went into Renal Bloodscalp and Sheri in RE to regain thsi - getting too much like a short story, and this is an interactive computer game. FRIENDSHIP AND ROMANCE: recheck for purple prose that turmns out to be more of a dirty yellow or green. KathStoneDog has the best examples to watch for similar "logic disjuncts" - IF ~~ a1111 I do not think I can do this. In fact, I know I can't. I should leave.~ + unfulfilledexitstate Again, it's her room! IF ~~ a1113 (Roll quickly on top of him, your hips questing to bring you both as close together as the cloth barrier allows.) OK! I'll admit ignorance. How do hips quest? Before this hits playtesting, center in on states and make sure that things like "eyes grab", "legs swallow", "nose searches". It is going to be hard enough for translators to deal with colloquialism (both FR and english) - no need to make them fight through purply oxymoronic descriptors that confuse and mix metaphor, too! FRIENDSHIP: Check for consitent application of the opportunities templated in dealing with events. Samples to follow up on - story pool IF ~~ a1671 SAY ~[ARAN] I can do that. Just remember, my bardic days be relatively new, so I don't have them all embellished an' prettified, wi' proper pronunciation an' projection. Sorry about that spittle, there. Somethin' about 'p' words, eh?~ = ~[ARAN] Let me see...~ IF ~Global("c-arancarbonara","LOCALS",0)~ GOTO a1433 IF ~Global("c-arancalimport","LOCALS",0)~ GOTO a1432 IF ~Global("c-arangerris","LOCALS",0)~ GOTO a1674 IF ~Global("c-arandadtrade","LOCALS",0)~ GOTO a1675 IF ~Global("c-aranfistfight","LOCALS",0)~ GOTO a1676 IF ~Global("c-aranmoonfight","LOCALS",0)~ GOTO a1678 IF ~Global("c-arankravitchstory","LOCALS",0)~ GOTO a1677 IF ~Global("c-arankravitchstory","LOCALS",1) Global("c-arancarbonara","LOCALS",1) Global("c-arancalimport","LOCALS",1) Global("c-arangerris","LOCALS",1) Global("c-arandadtrade","LOCALS",1) Global("c-aranfistfight","LOCALS",1) Global("c-aranmoonfight","LOCALS",3)~ GOTO a1685 END + ~Gender(Player2,MALE) !Name("c-aran",Player2)~ + ~[PC] A joker, eh? Two can play that game. I have always wanted <PLAYER2> instead, but you will have to do...~ + a1844 + ~Gender(Player3,MALE) !Name("c-aran",Player2)~ + ~[PC] A joker, eh? Two can play that game. I have always wanted <PLAYER3> instead, but you will have to do...~ + a1844 + ~Gender(Player4,MALE) !Name("c-aran",Player2)~ + ~[PC] A joker, eh? Two can play that game. I have always wanted <PLAYER4> instead, but you will have to do...~ + a1844 + ~Gender(Player5,MALE) !Name("c-aran",Player2)~ + ~[PC] A joker, eh? Two can play that game. I have always wanted <PLAYER5> instead, but you will have to do...~ + a1844 + ~Gender(Player6,MALE) !Name("c-aran",Player2)~ + ~[PC] A joker, eh? Two can play that game. I have always wanted <PLAYER6> instead, but you will have to do...~ + a1844 Global("c-arangift","GLOBAL",1) -> 5 followup /* LEAT21 // Human Flesh +5 evil armor equipped complaints */ IF ~HasItemEquiped("LEAT21",Player1) Global("c-arskinarm","LOCALS",0)~ THEN GOTO a1799 IF ~HasItemEquiped("LEAT21",Player1) Global("c-arskinarm","LOCALS",1) GlobalTimerExpired("c-aranskin","GLOBAL")~ THEN GOTO a1798 IF ~HasItemEquiped("LEAT21",Player1) Global("c-arskinarm","LOCALS",2) GlobalTimerExpired("c-aranskin","GLOBAL")~ THEN GOTO a1797 Global("c-pcstalker","LOCALS",0) -> 5 SetGlobal("c-aranREinn","GLOBAL",1), moon, stars, etc. /* big not-followed-through thing: */ ++ ~[PC] I am not beautiful.~ DO ~IncrementGlobal("c-aranpc_nsc","LOCALS",1)~ + a289 OTHER MODS: Several sources, several suggestions made about holding off on adding more of the 'awareness of other mods" and materials, from a time and energy standoint - the suggestion I need to hold myself to is creation of as many of the vanilla NPC materials as i can manage with a single pass, with the understanding that I will be able to go back and add more to those CHAINs and such later. Sidecheck - RE responses. Most written and integrated; make sure all are appropriate to both non-romance and romance folks, and perhaps add one or two that are romance-specific (if teh romance or the pghysical side of hthings has progressed far enough). c.f. commentary built into "Stone heads and Stone Hearts" materials for folks who get the Fighter Stronghold, and side commentary to Chanelles materials if RE variables for her are set. ROMANCE: ...an attempt to play a character who was raised in a cloister and kept from the world who is now out-and-about within it, with all the terrors and overwhelming busyness, who has had no romance whatsoever in the vanilla BG to then have it suddenly, err, thrust upon her and to not have that acknowledged, seems a bit rough of a transition. Revisit and recheck "innocent" options. Some given, but not consistently - need to make sure Berelinde's Bennet Rubric gets a workout. I have found a bunch of states which *look* like they give tons of options, but they favor bold brassy and not shy introverted. Some people play Emma, some people play Buffy, some people play Guenevire, and some people play the ingenue (the lyric soprano part; cosette, etc.). I may be leaving out options to play the latter. ROMANCE: That thought leads me into my next suggestion of making it clear to the player where Aran's and the PC's relationship stands... ...I don't know if you are planning on Aran and the PC having one of the many "the talk" talks, but as a player it might be a useful dialogue to have. And considering the relationship may be more 'open' for the first while, another "the talk" about "we seem to be getting more serious" may be necessary for the player to know for certain what is going on. Recheck the progress of "check-in" talks, and make sure that I have not relied solely on PID and romance conflict talks to bring this up. Some of this is covered in regular talks and recations, but mame sure that while players can be as waffly and chaotic as they want, if they want to committ they can actually have that discussion, and set up the issue. Right now, the way I read it, the player who wants an on-again off-again romance can have it, but someone who wants him to settle down only has physical options. There is a lack of "the big C talk". That is a mistake that needs to be corrected. I suspect it was left on the cutting room floor early on, and no replacement was craeted - this is a serious loophole. FRIENDSHIP AND ROMANCE: recheck timing and stretching psychological imntimacy to cover most of the game - choice of crisis to be in SoA or ToB needs finalization and writing. Crosschek with other materials for coverage of BWP long, slow, completionist play vs. Speedrun play. Crosscheck for glaring inconsitencies between Friendtalk progression and lovetalk progression. FRIENDSHIP AND ROMANCE: timing and allowing more "silly/gentle/supportive" options. The checkpoint here is that players have plenty of options to tease, chide, or be mean to Aran. Need to check to amke sure that I don't consitently "gentle teasing" as a "good' option, therefore not allowing players who want to be supportive/loving to have options. ROMANCE: little people vs big people, and differing racial options for roleplaying, in a non-specific way. [ADULT REFERENT] ROMANCE: Adult Materials - roleplay options that allow/account for choice of chastity - roleplay options that reflect in other dialogs rather than ignoring them - concept of "action progression" that reflects in other materials, so that there is not a fierce disconnect. Idea to play with: c-aranfirstsex = 1 : self-identified no experience (no need to look for whether or not RE content, etc. is in play - leaves the option for play as a manipulative PC "Oh, I have never done this before" is something that could be said many many ways, including being the truth) c-aransex = 0 : no intimacy c-aransex = 1 : kissing c-aransex = 2 : touching c-aransex = 3 : heavy innuendo touching ("petting") c-aransex = 4 : full physical intimacy ToDo list for standard materials: revisit/rewrite ToB Banters. Write ToB friendtalks and lovetalks. determine crisis point for "big C" and place those final lovetalks (4 I think) in either SoA or ToB content. Tackle and finish/simplify adult materials in romance, and clone similar states into ToB. Finish Teldra's first and second quest materials and retest vs. current mini-quests. Look at how gender checks and wild surges interact, and determine feasibility of adding comedic/pathos with friend or romantic partner suddenly switching teams. investigate idea of the "single playthrough encounter", where a different encounter might be available based on .bcs evaluation of party composition, class, etc. So a bard PC might get something related to FR lore about bards, a cleric might get an 'opposte alignment' encounter... remembering the biggs comments on this, because creating one-off encounters like this may be prohibitively costly in terms of development and testing time versus the amout of time players get to see the content. Search all files for "capped off" states, where an idea that was more efficiently tied in to other content being developed in other files got forgotten/sidelined. Example: c-fidpcbath; c-arantalkstomuch, etc. Repair these states (hopefully) with links to existing content, or (if no option) into relevant templated states, so that players get more of the content on a single playthrough (and it doesn't take another year of tinkering closing off states like ~[PC] Hey! You never said you had visited Windspeare Hills before!~ + c-where_the_hell_was_i_going_with_this_idea). Build valid "tinker, tailor, spy" variants of the .cre file, and decide if the distribution will be one blank .cre copied and patched to match install cjoice, or four .cres valid for the chosen stat distribution. Decision already made on the "build your own at install" option - I am leaving full rebuilds to Level1 NPCs. 4 base stats configurations are fine - and the player already gets the choice left up to them as to when to dual-class. He will start with 7 levels of fighter, and then folks can dual-class him into whatever they like. The references to Class('c-aran",PALADIN_ALL) should cover the Level1 NPC-ing him into strange and wonderful new lifestyles... check with SHS big-world folks on the area insertion (currently replacing an info-trigger with an area travel trigger on the Promenade) for any possible conflicts. Journal entries. Journal entries. Damn it, Journal entries. Recheck and add. So far, there are very few. Recheck Petals&Thorns suggestions on romance to see how current materials measure up to their suggestions. Ad as necessary. Recheck 'bromance' materials for dudes who want a good friend, paying attention to potential opportunities like the Swordfight routine. Same encounter, but the boyz shoot hoops, while the girlz can move from shooting hoops to flirting a bit (or more). Integrate and recheck MoveToArea(), LeaveAreaLua(), and Wait at An Inn materials; finalize whether or not there will be any place besides Aran's custom inn where he can spawn.... or if I have to actually follow up on the thread about where to put him and allow him to spawn in a few different areas, as player choice.
  8. Learning from Players Still working on the release of Beta 1, but some intrepid souls are using GitHub to create their own Beta based on the materials posted there (and I am very grateful for it, because it means I have focused cleanup. I like that!!) So, a late-afternoon-when-I-get-home-fix-this-first list; Real World Glitches, from PM (adult stuff temporarily removed, but paid attention to!!) piperb's list Pending After the talk about fallin' in love. The PID kept coming up every few seconds. I had to cut off the game, so that's as far as I got. TO INVESTIGATE FURTHER: Heh. Yup. The not-but-should-be-enabled ones. Bleh. IF ~Global("c-aranfriendbg2","GLOBAL",23)~ THEN BEGIN a396 SAY ~[ARAN] Hey, I been thinkin'.~ [c-aws096] DO ~SetGlobal("c-aranfriendbg2","GLOBAL",24) RealSetGlobalTimer("c-aranfriendtimer","GLOBAL",ARAN_FTT)~ + a1918 IF ~Global("c-aranfriendbg2","GLOBAL",25)~ THEN BEGIN a426 Var is closing - not sure why it would be looping instead of playing. Need to recheck. Chances are the trigger to fire is not set up correctly because I commented out too many lines in the .tp2 Still looking. It could be that flirt weighting issue. REPEATED AFTER UPDATE -After the talk about fallin in love. The PID kept coming up every few seconds - same as before. TO DO: Hmmm. Not sure. Time for the Secret Weapon, Berelinde's use of The Bigg's stutter check mod. I'll attach the Aran version here, but first I want to try it in my game and see if we can get a comparison going. -If Aran is so opposed to slavery, shouldn't he have some comments during the Slaver Quest? If he does, then they didn't appear in game. And maybe the pleasure slave in the circus tent as well. TO DO: Revisit Slaver Quest, pleasure slave - check all slaver interjections are firing. Installed the 15 min timers, same PC as before and the party was Minsc, Yoshimo, Aran and Anomen. Banters didn't show up in this game either. But, interjections did. TO DO: Need to test under Ctr-I to see if it is bad luck, or if something odd is happening. Rechecking triggers again - perhaps CombatCounter(0) is failing, and I need !ActuallyinCombat(), though that is not standard at all? - the files appear to be correct in syntax, and CLUA'ing in party members on my install seems to work. This one needs some careful re-inspection to see what I have set up that might be blocking them from firing. Recheck banter triggers; Aran only talked with PC. Taken off the shelf beacuse it is repeated behavior: banter triggers on a clean install seem to be working on my copy. Recheck project files, and look for bug reports in other mod's forums for ideas on what might be happening. -Aran: I am goin' to ask H. C. for assistance, an' hope She influences you a mite, eh? (I abbreviated, but I don't think the S in she should be capitalized.) TO DO: Choose and stick to a single interpretation of god's names - Sune's a goddess. I think She || Sune's a goddess. I think she || Sune's a Goddess. I think She -Aran: I have no problems wi' tellin' you. I be scribin'... (If you don't want an out here in the PC responses, maybe go to the main point of the talk. As it stands, you have the player answering his question more than once and the talk seems a bit repetitious.) Example later in the same talk - Aran: Well, you might not know this, but all that scroll prep...So, about that purchase. (Choosing the afirmative PC response when this talk first starts and a few clicks later, you're still answering his question.) TO DO: Recheck, rewrite - possibly two talks here slammed into one, and thus clickfest. -The talk about cooking dinner sounds like it should show up outdoors. Again, odd when it appears in the sewers or somewhere like that. TO DO: Recheck - probably time to break my unwritten rule of "straight talk sequence, no fancy stuf, and make the ones with special conditions not pat of the sequence". Or, simply remove this talk and make it a fire-under-special-circumstances one. A couple of his battle cries has a scratching sound at the start of them. TO DO: Recheck sound files and readjust fade-in with Audacity. Recheck song files for audio volume. Aran's line: I know there be some disadvantages to bein' the offspring o' a dead god... How did he know this if the PC has not told him. Did he hear it from others or what? TO DO: 15 min. timer means some of the talks are going to fire before regular game pace - need to add chapter check, modify, or rework in sequence. partially addressed -Flirt where PC can go thru Aran's belongings. Does writing no secrets on the parchment ever lead to anything or change the flirt in any way? If not, would you consider adding to this flirt? TO DO: Recheck, follow-up Done: There is a PID line that is supposed to run, and later on a talk that triggers from this action where Aran confronts PC about it. I need to check to make sure that it made it in to the Beta, and that it triggers... Also adding a response like; "Sure, why do you ask?" Or response without the insulting meat-shield comment for good PCs would be nice. TO DO: Begin list of blocks where there are no real "neutral" responses, or where percieved neutral responses end up sending PC on pathways that are unintended. Add pathways. done: Repaired this instance with CODE ++ ~[PC] You might be right.~ + a70 PID adult content is available from the get go - doesn't match talk progression. Example: Aran's line: Riddle me this, you ever think about sparkin? Courtin? Seems odd if they were already getting VERY touchy-feely thru the PID and no response acknowledges that in the talks. TO DO: Institute c-aransex and c-aranintimate dependency on lines like this, so + ~GlobalLT("c-aransex","GLOBAL",2)~ + ~Riddle me this, you ever think about sparkin? Courtin?~ + ~GlobalGT("c-aransex","GLOBAL",1)~ + ~Riddle me this. We been sparkin' a mite bit already. But you ever think o' doin' some more serious courtin'?~ or perhaps use the flirt counter in several sections. [done: partial fix. PID Adult content is temporarily restricted to c-aranrom=2, while replacement pathways are written for the players who want to try for a one-night stand right out of the gate.] [done: partial fix for this particular talk, all instances of entry to the two relevant states, sample code here: + ~GlobalLT("c-aranflirt","GLOBAL",12)~ + ~[PC] A quiet, warm, calm place, a good book, and something nice to drink.~ DO ~SetGlobal("c-aranbg2rom","GLOBAL",8) RealSetGlobalTimer("c-aranromtimer","GLOBAL",ARAN_LTT)~ + a579 + ~GlobalGT("c-aranflirt","GLOBAL",11)~ + ~[PC] A quiet, warm, calm place, a good book, and something nice to drink.~ DO ~SetGlobal("c-aranbg2rom","GLOBAL",8) RealSetGlobalTimer("c-aranromtimer","GLOBAL",ARAN_LTT)~ + a579_flirt + ~GlobalLT("c-aranflirt","GLOBAL",12)~ + ~[PC] Oh, you know, the usual. Wine, song, feasts, a little more wine...~ DO ~SetGlobal("c-aranbg2rom","GLOBAL",8) RealSetGlobalTimer("c-aranromtimer","GLOBAL",ARAN_LTT)~ + a580 + ~GlobalGT("c-aranflirt","GLOBAL",11)~ + ~[PC] Oh, you know, the usual. Wine, song, feasts, a little more wine...~ DO ~SetGlobal("c-aranbg2rom","GLOBAL",8) RealSetGlobalTimer("c-aranromtimer","GLOBAL",ARAN_LTT)~ + a580_flirt addressed Talk about hiring more swords with the PC response questioning if he wants the competition seemed odd at this point. If you leave the 15min timer option in and no flirting or anything close to it occurs. Why would that be an issue? done: built a more standard response and var'd the original to show up only if PC and Aran have gotten to holding hands (c-aransex=1) Talk: So what was it like growin up in a place where books ruled all? This talk showed up for a second time, right after it completed the first time. Done: two pathways were not given closure. Added! In the PID, the option is available to stop the flirts, which will be a good thing for some players. But, it has the PC asking him to stop flirting with her when no flirts have appeared yet. Done:added GlobalGT("c-aranpcflirtstart","GLOBAL",0) as an enabling trigger, so that option to stop things does not appear beforehand (c.f. Anomen Conflict, etc.) Aran's line: I be man enough. Just not sure where the rules an' regulations...you bein' you an' all... What's the you bein' you stuff supposed to mean anyway? PC response: But you are treading dangerous ground here. (...treading on dangerous ground... might sound better) Done: Agreed both counts - "you bein' you an' all" is too ambiguous, and unneeded. Treading on dangerous ground. Erika, Orrin, etc. dlgs have been appearing continuously in the text window on every map since I left that area. Done: Add to scripts in C-AR01.BCS so that the dialog doesn't magically follow the PC across all of Toril. Tested in-game with "Duplicate Floating Text=1" enabled in baldur.ini Also, once Anomen is added, the option appears in the PID telling Aran to stop fighting with Anomen. They haven't spoken to one another and Ano's first LT hasn't fired yet. Maybe reword this until their conflict actually starts or variable this option out until it starts. Done: block response until there is an active Anomen conflict CODE /* PID Anomen Romance Conflict Toggle */ + ~InParty("Anomen") OR(10) GlobalGT("c-aanocon120","GLOBAL",0) GlobalGT("c-aanocon121","GLOBAL",0) GlobalGT("c-aanocon158","GLOBAL",0) GlobalGT("c-aanocon194","GLOBAL",0) GlobalGT("c-aanocon212","GLOBAL",0) GlobalGT("c-aanocon224","GLOBAL",0) GlobalGT("c-aanocon232","GLOBAL",0) GlobalGT("c-aanocon287","GLOBAL",0) GlobalGT("c-anomenaran","GLOBAL",0) GlobalGT("c-arananomen","GLOBAL",0) Global("c-aanoconflict","GLOBAL",0)~ + ~[PC] I like Anomen well enough, Aran. But you keep fighting with him. I want you to stop doing that.~ + a3029 /* c-aranvsanom1s */ -Aran: Were kisses enough for you?... PC: I don't...look, I think this lots of fun... (Seems to be a word missing, maybe "think this is lots of fun." or "think this was lots of fun.") Done: Agreed - Repaired 16 instances to "I think this is lots of fun" -Aran: You haven't thought there might be somethin' to havin' someone take care o' you? (You might want to look at the PC responses here. Some of them elude to *Ahem* happening already. But what if that has not happened between them yet?) Done: Repaired and extended pathways; CODE IF ~~ a667 SAY ~[ARAN] You haven't thought there might be somethin' to havin' someone take care o' you?~ ++ ~[PC] I take what I want from whom I want, when I want, Aran. Why would I need one special person dedicated to what everyone can provide?~ + a677 + ~GlobalGT("c-aransex","GLOBAL",2)~ + ~[PC] I like you, Aran. And your friendship comes with certain... benefits. But I am in love with another person. Does that mean you will stop being my special friend?~ + a677 + ~OR(2) Global("c-aransex","GLOBAL",2) Global("c-aransex","GLOBAL",1)~ + ~[PC] I like you, Aran. And your friendship is special to me. I know you want more than a few kisses and flirtations, but I am in love with another person. Does that mean you will stop being my special friend?~ + a677 + ~Global("c-aransex","GLOBAL",0)~ + ~[PC] I like you, Aran. And your friendship is special to me. I know you want more than... I know you want a physical relationship that I am not ready to provide. Does that mean you will stop pursuing me?~ + a677 ++ ~[PC] I like you, Aran. But I am confused. I am not sure I know what I really want. Perhaps we should not be having this discussion.~ + a677 ++ ~[PC] I... I think about it. But I am not really worth all that attention.~ DO ~IncrementGlobal("c-arpclowimage","LOCALS",1)~ + a672 ++ ~[PC] I can usually look out for myself. Besides, there is something to be said for being able to look out for someone else, you know. Perhaps I want to protect and defend a certain person, instead of them protecting me.~ DO ~SetGlobal("c-aranrom","GLOBAL",2)~ + a668 ++ ~[PC] I can take care of myself. I just allow you to make yourself feel useful. Did you have anything else you wanted to discuss?~ + a668 ++ ~[PC] Of course I think about it.~ + a668 END -Aran: (flushes burgundy) Aye, then. Didn't mean to... (Shouldn't the F in flushes be capitalized here?) Done: Capitalize, capitolize, corporealize, etc -Aran: (There are no words, no gestures...old dance. Hopefully that is enough so you know which line I am referring to. It's missing a parenthesis at the end. If not, I'll send this to you with the other M stuff by PM later. Done: closure of Closure in mature content. Apparently, I like that line, because I found 6 different variants of the same phraseology. Perhaps I need a more active imagination! -Orrin: I do have a lad... (A PC response like "Yes, thank you." or something along those lines to cover NG or LG.) Done: Repaired and expanded two instances (only one reachable right now as Teldra is not activated yet): sample code CODE IF ~~ a2480 SAY ~[C-AW01TK] I do have a lad who needs some work, if you are hiring. He is a bit rough around the edges, but he means well. Here, take one of his advertisements.~ ++ ~[PC] Thank you.~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2482 ++ ~[PC] I'll take a look at it later. Why are you helping him out?~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2482 ++ ~[PC] Actually, I am not interested right now. I wish to see your selection of services.~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2472 + ~OR(2) PartyGoldGT(3000) Global("c-awtavkquest","C-AR01",2)~ + ~[PC] Sure, sure... but I am more interested in what you can do for me. Rumor has it that a wealthy, well connected person might peruse some of the more... interesting wares?~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2473 + ~GlobalLT("c-awtavkquest","C-AR01",2) PartyGoldLT(3001)~ + ~[PC] Sure, sure... but I am more interested in what you can do for me. Rumor has it that a wealthy, well connected person might peruse some of the more... interesting wares?~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2443 + ~Global("c-pctavern","C-AR01",0)~ + ~[PC] You seem a little stiff. Do you say the same thing to every customer?~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2456 + ~Global("c-pctavern","C-AR01",1)~ + ~[PC] You seem to have a wide variety of people here. Is that man over there really a Mindulgulph?~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2457 + ~Global("c-pctavern","C-AR01",2)~ + ~[PC] Perhaps you can lighten up a little, and give out a few complimentary drinks.~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2458 + ~Global("c-pctavern","C-AR01",3)~ + ~[PC] So, what is the deal with you and Teldra? Are you two... you know?~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2459 + ~Global("c-pctavern","C-AR01",4)~ + ~[PC] I have heard a rumor that you used to be an adventurer yourself.~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2460 + ~Global("c-pctavern","C-AR01",5)~ + ~[PC] Is Erika attached? She seems to be unreceptive to flirting.~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2461 + ~Global("c-pctavern","C-AR01",6)~ + ~[PC] How are things going around here?~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2462 + ~GlobalGT("c-pctavern","C-AR01",6)~ + ~[PC] How is life?~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2463 + ~RandomNum(5,1)~ + ~[PC] I think I am done here.~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2474 + ~RandomNum(5,2)~ + ~[PC] I think I am done here.~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2475 + ~RandomNum(5,3)~ + ~[PC] I think I am done here.~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2476 + ~RandomNum(5,4)~ + ~[PC] I think I am done here.~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2477 + ~RandomNum(5,5)~ + ~[PC] I think I am done here.~ DO ~GiveItemCreate("c-alttr1",Player1,0,0,0) SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2478 ++ ~[PC] No need for the broadside. I do not want the thing weighing down my pack. But you could tell me where to find him.~ DO ~SetGlobal("c-orrinbroadside","C-AR01",1)~ + a2483 END -Aran: Aye, well, I do like th' game...lady in question prefers ladies. (For those who fall under this preference, they might like having the option of telling him so here.) Done: additional lines mapped in, with downstream states expanded to accomodate a more timid, shy, or unsure PC. I think there will be more of these... -One of the talks starts out with Aran looking "along the horizon". A bit odd when it pops up in the sewers, as it did in this game. Done: a665, line rewrite: SAY ~[ARAN] (Aran looks carefully at his hands, then glances at you.)~ Typos: This is not exactly an ordinary company, is it. , > ? repaired to ~[ARAN] Now, this don't rightly be an ordinary Company, eh?~ Sune's Rambunctious Rump,, I... (Only needs one comma) CODE F:\TEST1\aranw\dialog\c-arandialog.d (3 hits) Line 9247: SAY ~[ARAN] Sune's Rambunctious Rump, <PRO_BOYGIRL>, I wish I did. I should have been studyin' strategy instead o' tactics. Next time we see a LoreKeeper, I think I will have a mite o' a word on what tomes to study. Tactics you can learn piecemeal, but strategy, that be a tougher game.~ Search ",," (0 hits in 0 files) Malformed token. Should be <PRO_GIRLBOY>. 24 occurrences across project repaired! Adult content specific suggestions withheld but logged; some additions, an abrupt cutoff. More global commentary to keep in mind: "even a lady that is a little rough around the edges likes a bit of tenderness from time to time from her would-be significant other." (And thank you to the bug-reporter - I'll post usernames if you don't mind, but you have to tell me it is ok to! )
  9. This is a placeholder, but for my own investigation, a searchable/sortable list of current vars. Needs to be rebuilt after recheck, but already there are some mistakes in matching scope of variables and scope of timers cross-project. Creating docs like this is a serious PITA, but it can save you hours of troubleshooting when you are piecing things together in bits an pieces - very few people can afford to take the time to run large projects out without resorting to 5 minutes here, 20 minutes there, and testing (or searching for places where you think you are looking for other folk's variables but have misspelled them) requires good documentation. www.gibberlings3.net/aranw/docs/aranw_var_4_2_2011.htm
  10. Troubleshooting a Stutter or Constant PID (Player-Initiated-Dialog, or "Force Click") (If you are a player who just wants the troubleshooter and how to use it, skip to post #2!) The problem It happens. Your NPC looks nice, and installs fine. But suddenly, out of nowhere, he starts constantly coming up to the PC and trying to initiate conversation. Or he keeps bugging another NPC, over and over again, without actually saying anything, bogging down your game. Or he stops every few seconds, fidgets as if about to say something, and then moves on. Games slow down. Bleh. This is usually caused by a script block being triggered, but not being able to close. The ultimate "get the annoying stutter" would be to have a block that looks like this in your mod: IF InParty(Myself) THEN RESPONSE #100 StartDialogNoSet(Player1) END This block always fires if the dude running the script is in the party. And with no conditions, it runs every script cycle. So you get the ultimate Noober/Neeber character, and lots of hate mail. Your NPC starts initiating conversations with PC non-stop, for as long as his script is active, everywhere... the ultimate kid sister following you around, tugging on your sleeve every second or so. Common reasons that this might happen in your mod: Typos in timer or var. The block might be triggering on "my_variable" but then closing on "my_vraiable" Differences in variable scope. The block might be triggering on "myvar","LOCALS" and trying to close on "myvar","GLOBAL" Another mod interfering. Mod B may have come along and put something that changes either script or dialog or DV or something that results in your code not working as tested. Which can lead us to... Weighting. The block may be evaluating true, but can't resolve because the dialog or action that it is trying to launch is being blocked by another. A simple example in a dialog file, setting up for a script stutter: IF ~InParty("cmorgan")~ THEN BEGIN heya SAY ~[CMORGAN] I am conditioned broadly, so I will always evaluate true when the script tries to look for what it wants. I take priority each and every time, no matter how hard you try to clear me. Nothing that weights below me will ever be called by the script - I run instead.~ IF ~~ THEN EXIT END IF ~Global("myvar","GLOBAL",1)~ THEN BEGIN what_the_script_is_looking_for SAY ~[CMORGAN] I am conditioned narrowly, so I will only evaluate true when a very specific global is set. The script looking for me starts at the top of the dialog and works downwards until it finds me... unless it finds something else that is true, and fires it instead.~ IF ~~ THEN DO ~SetGlobal("myvar","GLOBAL",2)~ EXIT END In this configuration, if you wanted to turn the narrowly-conditioned block into a showstopper, just leave off the DO, and voila - that line, even though narrowly conditioned, just became an "always true" when the variable is set to 1. And anything downstream of it will never play. reminder - - scripts evaluate top to bottom, stopping when something evaluates true, and jumping back to the top again (unless you add Continue() ) - dialog files are called by scripts or the "hidden" scripts inside the engine, and evaluate top down... except when you set up WEIGHT that changes the evaluation order, making a talk rise to the top of the evaluation order (or lowering it, whichever you set - you can manipulate the thing to top or bottom of the stack of everything that has been installed before it. After that, other mods can do the same, but the newcomer can change things; you can't). - dialog TRANSITIONS are evaluated BOTTOM UP. So, while the state is evaluated from the top of the file down, once a state is called, the transitions are checked from the bottom card in the deck to the top one, and the first one is taken - or in the case of REPLY, every statement that returns true is displayed. The Challenge On your own install, this is a PITA to troubleshoot, but it is eminently do-able. You have full access to your own unique install, you have NI, DLTCEP, WeiDU, text editors, ways of searching all of your project at once for matching variables, and the knowledge of your own code. But. When it hits the field, all of this changes. Because every modded install is slightly different, you can't just grab a .bcs or .dlg file from a player experiencing a problem and decompile it yourself on your own install and have it help. You can do some of the investigation with tools like Vlasák's Variable Checker from The Black Wyrm's Lair, which features savegame compares, or manual comparisons with WeiDu and NI and DLTCEP - in this case, tools like CamDawg's Debugger is not as useful because we are not dealing with possible file corruption or problem areas/assignments, we are dealing strictly with script evaluation. In this day and age of BWP and BiG World installs, troubleshooting stutters and weighting issues and such becomes an impossible task, because it is 99% likely that even if you replicated the install as closely as possible, it would never get troubleshot, for a very simple reason - limited modding time, and huge amounts of time installing and uninstalling to replicate. Even more importantly, all of these tools have the disadvantage of working from a snapshot instead of real-time, on the actual install having the problem. So, either have a player .zip up between 2 and 5 GB of their entire game folder so you have their entire install and pay for the upload/download, troubleshooting on their actual game, or ... The Solution The Bigg came up with a reasonable way of checking to see what script block is firing but failing to resolve itself mod to find the problem. Berelinde adapted it and used it to troubleshoot Gavin. And now I have shamelessly copied and pasted and modified it to work with Aran. Basically, all it does is take whatever in-game .bcs files you point it to, and look for the RESPONSE section, number each one, and set up a DisplayStringHead() on PC. in the old days, we did this manulaly, which was horrible. It was even more horrible when it was just manually. Nothing like numbering and identifying each and every block and dialog, then having to go back and remove all that before giving it out... Now, through WeiDU-foo, you can have a user experiencing the problem go back to an earlier save, install a mod, run through to the problem, and report the number. Eventually, someone will whip up a good way of decompiling the resulting file and sending you the info in text, but for now, the safest thing to do is have the player read off which block of which .bcs is firing in the dialog window, and have them decompile and send you the problem file. Then have them uninstall the mod. Good news - it can go on the very end of the install with no problems! Here is the base code: BACKUP ~aran_troubleshoot/backup~ AUTHOR ~berelinde~ BEGIN ~Troubleshooting Aran's stutter with Shamelessly Re-Appropriated Code from Gavin~ COPY_EXISTING ~c-aran.bcs~ ~override~ // be sure to change the file names to point to the relevant ones ~c-arand.bcs~ ~override~ ~c-ar01.bcs~ ~override~ ~baldur.bcs~ ~override~ // use either baldur.bcs or baldur25.bcs whether you're in SoA or in ToB. ~player1d.bcs~ ~override~ ~c-arn25.bcs~ ~override~ ~c-arn25d.bcs~ ~override~ SET x = 0 - 1 DECOMPILE_BCS_TO_BAF REPLACE_EVALUATE ~\(RESPONSE #[0-9]+\)~ BEGIN x += 1 END "\1 ActionOverride(Player1,DisplayString(Myself,~Running block %x% of %SOURCE_RES%.BCS~))" COMPILE_BAF_TO_BCS So, to copy it and use it yourself, you just need to identify what scripts you touch and swap them in the .tp2.
  11. Useful Variables to Troubleshoot Not all of them, just a select few that are good places to start if something goes hinkey. General Interaction Variables To Watch Way too many and too specialized, but here are some that are possible hiccups (show up in more than a few places). "c-aranfriendbg2","GLOBAL" tracks Friend Talks outside of UnderDark "c-aranfriendud","GLOBAL" tracks Friend Talks inside Underdark "c-aranfriendtob","GLOBAL" tracks Friend Talks in ToB These two are set up for the many small "scenery" one-liners or short dialogs. !GlobalTimerNotExpired("c-aransmalltalk","GLOBAL") // Timer (game-time) has never been set or has expired Global("c-silencearan","GLOBAL",0) // a PID - set "silencer" for folks who hate unsolicited comments "c-arandrunk","GLOBAL" // in a vanilla inn or The Broken Sword, intoxication greater than 50. 3 talks. Blocking timers so that they can't go off too soon, so spread them out. Mature Content Variables "c-aranpcbedding","LOCALS" cycles from 0 through 7, advancing through 8 static sex scenes. It seems pretty hard to break. Heh. I had to tempt fate, didn't I. A small subset of replies where the PC gives up control and basically says "do what you want with me however you want to" cycles through these - there is no interactivity, only text painting. "c-arankisses","LOCALS" is designed to get a semi-random sequence to work out so that each time PC initiates a PID romantic encounter the approach is slightly different and the potential outcomes are more randomized. This one is the most likely to break down due to multiple IncrementGlobal() calls - chances are, I have pathways with multiple incrementation. "c-aranintimate","GLOBAL" is the incrementing tracking var set by activity ( updates "c-aransex" ). This means whenever a meaningful(/less) physical action occurs through dialog, it should list it out. This is set up so that if a player starts down a path but finds it is too heavy, the SetGlobal() will relect the final action. It also means that in randomized sequences, the activity is registered without resetting "reality" - otherwise, one talk could be wild sex, the next just kissing, and the game would think that PC and Aran just kissed. It should only be found in DO ~action~ "c-aransex","GLOBAL" is the regulating var to tell talks what physical status the relationship has taken. It matches the values 0-4 found in c-aranintimate: c-aransex = 0 : no intimacy c-aransex = 1 : kissing c-aransex = 2 : touching + kissing c-aransex = 3 : heavy innuendo touching ("petting") c-aransex = 4 : full physical intimacy It should never be found in DO ~action~, only in triggers, and is set via .bcs incrementation based on c-aranintimate. Like in real life, you can't take back an action, so short of console use or the specific troubleshooting "what do you think about our relationship" dialogs you can't take back that action... it does not de-increment. Flirting Variables to Watch "c-aranflirtstop","GLOBAL" should be toggled to halt unwanted flirts or re-enable them if the player changes their mind. "c-aranfight","GLOBAL" is toggled by Aran on sequences where he takes offense at something (chance is usually 20% if the encounter is messing with him badly). "c-aranearlyflirt","LOCALS" Flirt SubMenu: Lightweight, Early Flirts for Impatient Players found in PID. Using this 12 times moves you immediately forward, jump-starting regular lightweight flirts, where instead of being friendly he is a little more hands-on. Basically, if a female is showing herself very interested, what red-blooded dude would wait patiently to develop things more? If PC waits rather than throws herself in his direction, then after 3 Friend Talks, "c-aranpcflirtstart","GLOBAL" sets up flirting, as long as PC has not shut down any romance (and isn't showing either Gender=Male or Gender=Female while wearing belt05). After 24 flirts on this level by either PC- or NPC-initiation, this cycles to 2 and opens up the heavy flirts. GlobalGT("c-aranflirt","GLOBAL",40) If you pass the 40 flirt mark total, whether early, lightweight, or heavy, Aran will come calling and automatically advance to "c-aranrom","GLOBAL",2. Whether or not you sleep with him, delay him, etc., you have shown serious interest. Luckily, he isn't afraid of a little running around behind other folk's back, at least at first... Romance variables To Watch "c-aranrom","GLOBAL",1 = PC is female and has not told him via PID that she doesn't want romance or flirting. PID-initiated flirting with him should turn this back on. "c-aranrom","GLOBAL",2 = PC is female and has indicated interest, currently set by one of these: PID (after some conditions are met) - Simply tell him you are interested in having a relationship that is more than friendly. Lots of flirting with him via PID or NPC-initiated. Controllable by not flirting with him and telling him you don't want to have him come up to you and flirt. A rejoining option that indicates you want to be more than friends. Several branches in SoA LT 7, SoA LT8 NPC Management: relationship check chains in most dialog files, there for testing - perhaps to be left in place. ToB Summons from Fate Spirit, and all joining-rejoining dialogs in ToB (hard to tell ToB interactions with other NPCs as less attention is paid there for most NPCs). "c-aranrom","GLOBAL",3 = PC is not in a relationship with Aran. This is set by PID, and a very very few places in dialog. "c-aranbg2rom","GLOBAL" tracks LoveTalk progress in SoA "c-arantobrom","GLOBAL" tracks LoveTalk progress in ToB (when there are some; right now, there are none.
  12. AreaCheck resources, formatted and commented: /* SoA Area Checks */ AreaCheck("AR0011") // Candlekeep Dream 1 (Do you remember Candlekeep?) AreaCheck("AR0012") // Candlekeep Library (Main Door Trigger) AreaCheck("AR0013") // Candlekeep Library (Stairway Triggers Up and Down) AreaCheck("AR0014") // Candlekeep Library (Stairway Trigger Down) AreaCheck("AR0015") // Baldur's Gate Estate (Tutorial starts here) AreaCheck("AR0016") // Baldur's Gate Estate (Tutorial area) AreaCheck("AR0017") // Baldur's Gate Estate (Tutorial area) AreaCheck("AR0018") // Baldur's Gate Estate Cellar (Tutorial area) AreaCheck("AR0020") // City Gates AreaCheck("AR0021") // Crooked Crane 1st Floor AreaCheck("AR0022") // Crooked Crane 2nd Floor AreaCheck("AR0028") // Candlekeep Dream (After PC Soultheft) AreaCheck("AR0041") // Random Encounter City AreaCheck("AR0042") // Random Encounter Outdoor AreaCheck("AR0043") // Random Encounter Outdoor (With rocks) AreaCheck("AR0044") // Random Encounter Outdoor (sand) AreaCheck("AR0045") // Random Encounter City AreaCheck("AR0046") // Random Encounter City (bridge) AreaCheck("AR0069") // Government Building (Cowled Cutscene -- "Why is this man not gagged?") AreaCheck("AR0070") // Spellhold (Irenicus Cutscene -- "I cannot be caged...") AreaCheck("AR0071") // Spellhold (Imoen Soultheft Cutscene -- "Silence do, you have no purpose...") AreaCheck("AR0072") // Ust Natha Temple (Irenicus/Bodhi, Ardula/Phaere Cutscene) AreaCheck("AR0082") // Lich Grave in Bridge District Inn AreaCheck("AR0083") // Candlekeep Library (Dream: PC learns to control the Slayer) AreaCheck("AR0084") // Candlekeep Library (Stairway trigger down) AreaCheck("AR0085") // Tree of Life AreaCheck("AR0086") // Wooded Area AreaCheck("AR0087") // Elven Dining Room AreaCheck("AR0201") // Ghouls village under Temple District AreaCheck("AR0202") // The Unseeing Eye Cult Hideout AreaCheck("AR0203") // Temple of the Forgotten God -- Amaunator (Unseeing Eye Plot) AreaCheck("AR0204") // The Forgotten Believers -- Temple City (Unseeing Eye Plot) AreaCheck("AR0205") // The Beholder Hideout (Unseeing Eye Plot) AreaCheck("AR0206") // The Halfling Village in the Sphere AreaCheck("AR0300") // The Docks AreaCheck("AR0301") // Mae'Var's Hide Out AreaCheck("AR0302") // Mae'Var's Inn 1st Floor -- Entrance AreaCheck("AR0303") // Mae'Var's Inn 2nd Floor -- Training Area AreaCheck("AR0304") // Mae'Var's Inn 3rd Floor -- Edwin AreaCheck("AR0305") // Shadow Thieves Guild Entrance AreaCheck("AR0306") // Renal Bloodscalp's Hideout AreaCheck("AR0307") // Aran Linvail's Hideout AreaCheck("AR0308") // Harper's 1st Floor AreaCheck("AR0309") // Harper's 2nd Floor AreaCheck("AR0310") // Pirates' Hideout in Sea Bouny Tavern AreaCheck("AR0311") // Living Room (Entry points outside and up) -- Gaelan? AreaCheck("AR0312") // Sleeping Room (Entry poin down) -- Arledrian AreaCheck("AR0313") // Sea Bounty Tavern 1st Floor AreaCheck("AR0314") // Sea Bounty Tavern 2nd Floor AreaCheck("AR0315") // Living Room (Favour for Edwin -- Mae'Var Plot) AreaCheck("AR0316") // Sleeping Room (Favour for Edwin -- Mae'Var Plot) AreaCheck("AR0317") // Sleeping Room (Favour for Edwin -- Mae'Var Plot) AreaCheck("AR0318") // Storage Room AreaCheck("AR0319") // Temple of Oghma AreaCheck("AR0321") // Thief Stronghold (Hideout) AreaCheck("AR0322") // Thief Stronghold (1st Floor) AreaCheck("AR0323") // Thief Stronghold (2nd Floor) AreaCheck("AR0324") // Thief Stronghold (3rd Floor) AreaCheck("AR0325") // Corthala House 1st Floor AreaCheck("AR0326") // Corthala House 2nd Floor AreaCheck("AR0327") // Shadow Thief Entrance (sided with Bodhi) AreaCheck("AR0328") // Shadow Thief 1st Floor (sided with Bodhi) AreaCheck("AR0329") // Aran's Hideout (sided with Bodhi) AreaCheck("AR0330") // House 1st Floor (Kangaxx) AreaCheck("AR0331") // House Cellar (Kangaxx) AreaCheck("AR0332") // Barracks in the Docks AreaCheck("AR0333") // Barracks in the Docks AreaCheck("AR0334") // Cromwell's Shop AreaCheck("AR0335") // Sleeping Room AreaCheck("AR0400") // Slums AreaCheck("AR0401") // Jansen Cellar AreaCheck("AR0402") // Jansen 1st Floor AreaCheck("AR0403") // Jansen 2nd Floor AreaCheck("AR0404") // Sewers beneath Coronet -- Lilarcor AreaCheck("AR0405") // Slaver's Ship Building AreaCheck("AR0406") // Copper Coronet AreaCheck("AR0407") // Prebek's House AreaCheck("AR0408") // Temple of Ilmater AreaCheck("AR0409") // Living Room (Ployer's home) AreaCheck("AR0410") // Sphere: Navigator's room -- Lavok's Hideout AreaCheck("AR0411") // Sphere: Entrance floor AreaCheck("AR0412") // Sphere: Ice and Fire Room AreaCheck("AR0413") // Sphere: Enginge Room AreaCheck("AR0414") // Sphere: Demon Plane AreaCheck("AR0415") // Living Room 1st Floor AreaCheck("AR0416") // Living Room 2nd Floor AreaCheck("AR0417") // Living Room AreaCheck("AR0418") // Myconids AreaCheck("AR0419") // Myconid AreaCheck("AR0420") // Sphere: Lizardmen Hideout AreaCheck("AR0500") // Bridge District AreaCheck("AR0501") // Tanner's Hideout 1st Floor AreaCheck("AR0502") // Tanner's Hideout Cellar AreaCheck("AR0503") // Tanner's Hideout Dock AreaCheck("AR0504") // Saerk's House 1st Floor AreaCheck("AR0505") // Saerk's House 2nd Floor AreaCheck("AR0506") // Noble House 1st Floor AreaCheck("AR0507") // Kidnappers' Hideout 1st Floor AreaCheck("AR0508") // Kidnappers' Hideout 2nd Floor AreaCheck("AR0509") // Five Flagons Inn 1st Floor AreaCheck("AR0510") // Five Flagons Inn Theater AreaCheck("AR0511") // Five Flagons Inn 2nd Floor AreaCheck("AR0512") // Temple of Helm AreaCheck("AR0513") // Calbor's Inn at Bridge District 1st Floor AreaCheck("AR0514") // Inn at Bridge District 2nd Floor AreaCheck("AR0515") // Inn at Bridge District 3rd Floor AreaCheck("AR0516") // Planar Prison AreaCheck("AR0517") // Planar Prison Cell AreaCheck("AR0518") // Planar Prison Cell AreaCheck("AR0519") // Planar Prison Cell AreaCheck("AR0520") // Planar Prison Cell AreaCheck("AR0521") // Planar Prison Cell AreaCheck("AR0522") // Five Flagons Inn (Stronghold) AreaCheck("AR0523") // Five Flagons Theater (Stronghold) AreaCheck("AR0525") // House 1st Floor AreaCheck("AR0526") // Sarcophagus Cellar AreaCheck("AR0527") // House 1st Floor AreaCheck("AR0528") // House 2nd Floor AreaCheck("AR0529") // Neb's Hideout AreaCheck("AR0530") // Storehouse AreaCheck("AR0531") // Commoner House AreaCheck("AR0600") // Circus Tent (phased) AreaCheck("AR0601") // Air Plane in Irenicus's Dungeon AreaCheck("AR0602") // Irenicus's Dungeon 1st Floor AreaCheck("AR0603") // Irenicus's Dungeon 2nd Floor AreaCheck("AR0604") // Circus Tent 1st Floor AreaCheck("AR0605") // Circus Tent 2nd Floor AreaCheck("AR0606") // Circus Tent 3rd Floor AreaCheck("AR0607") // Circus Tent restored AreaCheck("AR0700") // Waukeen's Promenade AreaCheck("AR0701") // The Sewers AreaCheck("AR0702") // Adventurer's Mart AreaCheck("AR0703") // Temple of Ilmater AreaCheck("AR0704") // Mithrest Inn AreaCheck("AR0705") // Mekrath's Hideout in the Sewers (Haer'Dalis Plot) AreaCheck("AR0706") // Armourer/Fletcher AreaCheck("AR0707") // Enge's Shop AreaCheck("AR0708") // Cernd's former home AreaCheck("AR0709") // Den of the Seven Vales 1st Floor AreaCheck("AR0710") // Fennecia's Home AreaCheck("AR0711") // Illithid Hideout in the Sewers (The Hidden Plot) AreaCheck("AR0712") // Den of the Seven Vales 2nd Floor AreaCheck("AR0713") // Store or Inn at Promenade AreaCheck("AR0714") // Debris at Waukeen's Promenade (Irenicus Cutscene in the beginning) AreaCheck("AR0800") // Graveyard AreaCheck("AR0801") // Bodhi's Hideout (sided with Aran) AreaCheck("AR0802") // Netherscroll, Korgan's Book, Edwin AreaCheck("AR0803") // Bodhi's Lair (sided with Aran) AreaCheck("AR0804") // Pai'Na's Hideout AreaCheck("AR0805") // Crypt AreaCheck("AR0806") // Crypt AreaCheck("AR0807") // Crypt AreaCheck("AR0808") // Bodhi's Hideout (Abduction Plot, getting Imoen's soul) AreaCheck("AR0809") // Bodhi's Lair (Abduction Plot, getting Imoen's soul) AreaCheck("AR0810") // Crypt AreaCheck("AR0811") // Crypt AreaCheck("AR0812") // Crypt AreaCheck("AR0813") // Crypt AreaCheck("AR0900") // Temple District AreaCheck("AR0901") // Temple of Helm AreaCheck("AR0902") // Temple of Lathander AreaCheck("AR0903") // Order of the Radiant Heart AreaCheck("AR0904") // Temple of Talos AreaCheck("AR0905") // Pimlico's Estate AreaCheck("AR0906") // Guarded Compound 1st Floor AreaCheck("AR0907") // Guarded Compound 2nd Floor AreaCheck("AR1000") // Government District AreaCheck("AR1001") // Delryn's Estate AreaCheck("AR1002") // Councel Building AreaCheck("AR1003") // Firecam's Estate AreaCheck("AR1004") // Deril's Estate (Cernd Plot) AreaCheck("AR1005") // Prison AreaCheck("AR1006") // Jysstev's Estate (Oisig Plot) AreaCheck("AR1007") // Noble House AreaCheck("AR1008") // Twisted Rune AreaCheck("AR1009") // Noble House (Isaea Roenall's) AreaCheck("AR1010") // Temple of Waukeen AreaCheck("AR1100") // Umar Hills AreaCheck("AR1101") // Valygar's Cabin AreaCheck("AR1102") // Merella's Cabin AreaCheck("AR1103") // Jermien's Cabin AreaCheck("AR1104") // Mayor Lloyd's Cabin AreaCheck("AR1105") // Imnesvale Inn AreaCheck("AR1106") // Umar's Cave AreaCheck("AR1107") // Ranger-Protector's Cabin (Stronghold) AreaCheck("AR1200") // Windspear Hills AreaCheck("AR1201") // Firkraarg's Entrance AreaCheck("AR1202") // Firkaarg's Maze AreaCheck("AR1203") // Firkraag's Hideout AreaCheck("AR1204") // Garren Windspear's Cabin AreaCheck("AR1300") // De'Arnise Keep Destroyed AreaCheck("AR1301") // De'Arnise Cellar AreaCheck("AR1302") // De'Arnise Keep 1st Floor AreaCheck("AR1303") // De'Arnise Keep 2nd Floor (Destroyed) AreaCheck("AR1304") // De'Arnise Keep (Restored, Stronghold) AreaCheck("AR1305") // De'Arnise Keep (Stronghold) AreaCheck("AR1306") // De'Arnise Keep (Stronghold) AreaCheck("AR1307") // De'Arnise Keep (Stronghold) AreaCheck("AR1400") // Shadow Temple Land (restored, Ranger) AreaCheck("AR1401") // Shadow Temple AreaCheck("AR1402") // Shadow Dragon Hideout AreaCheck("AR1403") // Wolfwere Hideout AreaCheck("AR1404") // Shadow Temple Land shadowed AreaCheck("AR1500") // Spellhold AreaCheck("AR1501") // Cave (Spellhold Test) AreaCheck("AR1502") // Fire Room (Spellhold Test) AreaCheck("AR1503") // Spore Room (Spellhold Test) AreaCheck("AR1504") // Crushing Trap Room (Spellhold Test) AreaCheck("AR1505") // Lever Room (Spellhold Test) AreaCheck("AR1506") // Troll Cave (Spellhold Test) AreaCheck("AR1507") // Kobold Room (Spellhold Test) AreaCheck("AR1508") // Final Judgement Spellhold Test AreaCheck("AR1509") // Myconid Room (Spellhold Test) AreaCheck("AR1510") // Sahuagin Room (Spellhold Test) AreaCheck("AR1511") // Elven Table while Spellhold Test AreaCheck("AR1512") // Bodhi's Hunt Level 1 AreaCheck("AR1513") // Bodhi's Hunt Level 2 AreaCheck("AR1514") // Bodhi's Hunt Level 3 (1st Slayer Change Happens here) AreaCheck("AR1515") // Spellhold (Irenicus' Living Room) AreaCheck("AR1516") // Spellhold (Soultheft Level) AreaCheck("AR1600") // Brynnlaw AreaCheck("AR1601") // Desharik's Estate AreaCheck("AR1602") // Brynnlaw's Inn AreaCheck("AR1603") // Brynnlaw's Shop AreaCheck("AR1604") // Temple of Umberlee AreaCheck("AR1605") // CW's House AreaCheck("AR1606") // House of Desharik's Lover AreaCheck("AR1607") // Githyanki Assault AreaCheck("AR1608") // Cellar of Brothel AreaCheck("AR1609") // Courtesan Room AreaCheck("AR1610") // Brothel Prison AreaCheck("AR1611") // Brothel AreaCheck("AR1612") // Brothel Kitchen AreaCheck("AR1613") // Brothel HQ AreaCheck("AR1700") // Small Teeth Pass AreaCheck("AR1800") // North Forest AreaCheck("AR1900") // Druid Grove Area AreaCheck("AR1901") // Druid Grove AreaCheck("AR1902") // Storehouse (Ihtafeer's Storehouse) AreaCheck("AR1904") // Troll Hill AreaCheck("AR1905") // Store Tower AreaCheck("AR2000") // Trademeet AreaCheck("AR2001") // The Smithy AreaCheck("AR2002") // Fentan's House AreaCheck("AR2006") // Tiri's Home AreaCheck("AR2007") // High Merchant's Estate AreaCheck("AR2008") // Temple of Waukeen AreaCheck("AR2009") // High Merchant Prison AreaCheck("AR2010") // Trademeet's Inn AreaCheck("AR2011") // Alibakkar's Estate AreaCheck("AR2012") // Lurraxol's Estate AreaCheck("AR2013") // Trademeet Crypt AreaCheck("AR2014") // Djinni's Tent AreaCheck("AR2015") // Merchant Tent AreaCheck("AR2016") // Raffee's Tent AreaCheck("AR2017") // Courtesan Tent AreaCheck("AR2018") // Tent (no exit) AreaCheck("AR2100") // Underdark AreaCheck("AR2101") // Beholder Cave in Underdark AreaCheck("AR2102") // Adalon's Cave AreaCheck("AR2200") // Ust Natha AreaCheck("AR2201") // Temple in Ust Natha AreaCheck("AR2202") // Inn in Ust Natha 1st Floor AreaCheck("AR2203") // Inn in Ust Natha; 2nd Floor AreaCheck("AR2204") // House in Ust Natha AreaCheck("AR2205") // House in Ust Natha AreaCheck("AR2206") // Qilue's House in Ust Natha AreaCheck("AR2207") // Deirex's Tower in Ust Natha AreaCheck("AR2208") // Jarlaxle's House wherever AreaCheck("AR2209") // Jae'llat's House AreaCheck("AR2210") // Deirex's Cave AreaCheck("AR2300") // Sahuagin City AreaCheck("AR2400") // Mind Flayers in Underdark AreaCheck("AR2401") // Cave Between Underdark and Exit from Underdark AreaCheck("AR2402") // Kuo Toa in Underdark AreaCheck("AR2500") // Elven Temple at Underdark Exit AreaCheck("AR2600") // Thetyr Wood AreaCheck("AR2601") // Meet Drizzt Do'Urden AreaCheck("AR2602") // Cave in Woods to Suldanesselar AreaCheck("AR2603") // Coran's Cabin AreaCheck("AR2700") // Ancient Spirits? AreaCheck("AR2800") // Suldanesselar AreaCheck("AR2801") // House of High Priestess of Suldanesselar AreaCheck("AR2802") // House in Suldanesselar AreaCheck("AR2803") // Rillifane Temple AreaCheck("AR2804") // To the Tree of Life (Entrance Hidden) AreaCheck("AR2805") // To the Tree of Life (Entrance Revealed) AreaCheck("AR2806") // Tree of Life AreaCheck("AR2807") // Black Dragon's Hideout AreaCheck("AR2808") // House in Suldanesselar AreaCheck("AR2810") // House in Suldanesselar AreaCheck("AR2811") // House in Suldanesselar AreaCheck("AR2812") // Temple of Rillifane after the Battle AreaCheck("AR2900") // The Abyss AreaCheck("AR2901") // Fear (Abyss) AreaCheck("AR2902") // Pride (Abyss) AreaCheck("AR2903") // Greed (Abyss) AreaCheck("AR2904") // Selfish (Abyss) AreaCheck("AR2905") // Sarevok (Abyss) AreaCheck("AR2906") // Jon Battle ? /* ToB Area List */ AreaCheck("AR3000") // Watcher's Keep AreaCheck("AR3001") // Watcher's Keep -- Altar level AreaCheck("AR3003") // Watcher's Keep -- Compass level AreaCheck("AR3004") // Watcher's Keep AreaCheck("AR3005") // Watcher's Keep -- tieflings AreaCheck("AR3006") // Watcher's Keep -- Succubus AreaCheck("AR3007") // Watcher's Keep --Cambion AreaCheck("AR3008") // Watcher's Keep -- Baalor (Paladin Sword) AreaCheck("AR3009") // Watcher's Keep -- Wild Magic ? AreaCheck("AR3010") // Watcher's Keep -- Tanar'ri -- Obelisk AreaCheck("AR3011") // Watcher's Keep -- Bard's Gloves, Manman's Journal AreaCheck("AR3012") // Watcher's Keep -- Tahazzar AreaCheck("AR3013") // Watcher's Keep -- Ka'rashur AreaCheck("AR3014") // Watcher's Keep -- White Dragon Scales AreaCheck("AR3015") // Watcher's Keep -- Aesgareth AreaCheck("AR3016") // Watcher's Keep -- Chromatic Demon; Elementalist Level AreaCheck("AR3017") // Watcher's Keep -- Carston and the machine AreaCheck("AR3018") // Watcher's Keep -- Saladrex (Dragon) AreaCheck("AR3019") // Watcher's Keep -- Helmite Level -- Last Seals AreaCheck("AR3020") // Watcher's Keep -- Imprisoned One AreaCheck("AR3021") // Watcher's Keep -- Ilithids AreaCheck("AR3022") // Watcher's Keep -- Anti-Paladins AreaCheck("AR3023") // Watcher's Keep -- "Adventure Level" (Mini Map!!!) AreaCheck("AR3024") // Watcher's Keep -- Dragon -- Fear Challenge AreaCheck("AR3025") // Watcher's Keep -- Orcs -- Ixil's Nail AreaCheck("AR3026") // Watcher's Keep -- Imp -- Game AreaCheck("AR3027") // Watcher's Keep -- Crypt -- Demi-Lich AreaCheck("AR4000") // Spirit Heads AreaCheck("AR4500") // Pocket Plane AreaCheck("AR5000") // Saradush AreaCheck("AR5001") // Gromnir 1st Level AreaCheck("AR5002") // Gromnir's Hideout AreaCheck("AR5003") // Saradush Tavern (Tankard Tree) AreaCheck("AR5004") // Temple of Waukeen AreaCheck("AR5005") // Gromnir's Barracks AreaCheck("AR5006") // Saradush Prison AreaCheck("AR5007") // Basement Entrance to Gromnir's Hideout AreaCheck("AR5008") // Kiser's Home AreaCheck("AR5009") // House (no exit?) AreaCheck("AR5010") // Countess Santele's Home AreaCheck("AR5011") // Arcana Archives AreaCheck("AR5012") // House AreaCheck("AR5013") // Sewers beneath Saradush AreaCheck("AR5014") // Kiser's Home -- Cellar AreaCheck("AR5015") // Saradush Militia Entrance AreaCheck("AR5016") // Saradush Castle Jail (Kiser Plot) AreaCheck("AR5200") // Fire Giant Entrance Area AreaCheck("AR5201") // Fire Giant Keep AreaCheck("AR5202") // Nyalee's Hideout; Gorion Wraith AreaCheck("AR5203") // Yaga-Shura's Camp AreaCheck("AR5204") // Yaga-Shura's Keep AreaCheck("AR5500") // Amkethran AreaCheck("AR5501") // Amkethran Inn AreaCheck("AR5502") // Kerrick the Smith's House AreaCheck("AR5503") // Chyil's House AreaCheck("AR5504") // Smuggler Cave AreaCheck("AR5505") // Balthazar's Home AreaCheck("AR5506") // Commoner's Home AreaCheck("AR5507") // Empty Home AreaCheck("AR5508") // Faheed's Home AreaCheck("AR5509") // Amkethran Crypt AreaCheck("AR6000") // Abazigal's Entrance AreaCheck("AR6001") // Abazigal's Lair Entrance Hall AreaCheck("AR6002") // Abazigal's Lair -- Cells AreaCheck("AR6003") // Abazigal's Lair -- Iycanth the Mad, Bondari AreaCheck("AR6004") // Abazigal's Lair -- Fll'Yissetat AreaCheck("AR6005") // Abazigal's Hideout AreaCheck("AR6008") // Frost Salamander Cave AreaCheck("AR6011") // Orbs and Gauth AreaCheck("AR6012") // Pool Home -- breath under water AreaCheck("AR6100") // Area outside Sendai's Hideout AreaCheck("AR6101") // Main Entrance Sendai's Lair AreaCheck("AR6102") // Sendai's Lair -- Slavemaster AreaCheck("AR6103") // Sendai's Lair -- Spiders AreaCheck("AR6104") // Sendai's Lair -- Crossway AreaCheck("AR6105") // Sendai's Lair -- Diaytha, Abishai AreaCheck("AR6106") // Sendai's Lair -- Captain Egeissag AreaCheck("AR6107") // Sendai's Lair -- Mithykyl AreaCheck("AR6108") // Sendai's Lair -- Sendai AreaCheck("AR6109") // Sendai's Lair -- Drow AreaCheck("AR6110") // Sendai's Lair -- Odamaron AreaCheck("AR6111") // Woodcutter's House -- Sendai's Area AreaCheck("AR6200") // The Throne of Bhaal AreaCheck("AR6300") // Oasis in Tethyr AreaCheck("AR6400") // River Area
  13. So, the idea was to get detailed, and see what happened in WeiDU with two ideas that have been coded into Aran. 1. - is it really really true that WeiDU does not care if you code things like this: IF ~~ a101 SAY ~[ARAN] Well, I have seen precious little o' th' Tel' Quessirim, truth be told. Those ears be a right interestin' sight on a lad. No harm meant, eh?~ IF ~~ THEN EXIT END or this, run all into a single line: IF ~~ a101 SAY ~[ARAN] Well, I have seen precious little o' th' Tel' Quessirim, truth be told. Those ears be a right interestin' sight on a lad. No harm meant, eh?~ IF ~~ THEN EXIT END (We know the answer to this - WeiDU does not care, but the human does. Nothing harder to troubleshoot than unindented stuff. If there is not a decent pattern, then you can't catch the silly things, like a missing tilde, or an IF ~~ THEN EXIT with no END. We are just having some fun with this as a control). So, first off, we create a folder called test1 in the BG2 directory. NOT THAT ONE!!!!! Nope, not the clean, nice, pristine, untouched one you have on your main hard drive. Trust me. Bad idea. Copy the whole BG2 clean version onto another drive, remap the baldur.ini in your copied one to your new one in the nice folder X:\TESTING\BG2, because you might want to get fancy someday and do things like edit creatures, or build macros that are supposed to manipulate values, or something fancier than what we are doing today. And when you do that, you will need to compare the original game structures to the modded ones, so that even before you test in-game, you can see if it is doing basically what you want, or have you accidentally done something like edit every single item in the game to have an extra couple of bytes, thus corrupting everything... believe, or suffer the consequences. I certainly hope you believe, because if you think it is tough to troubleshoot your installation now, just wait until you have been playing around trying to learn modding, and forget to uninstall a test - or worse. OK, on the testing install, I have that folder, and now I grab a copy of another mod's setup-mymod.exe (or just a regular old weidu.exe from its package), and name it setup-test1.exe. I whip up a quick .tp2 (unless I have a test one already created and are just editing it, like I do): setup-test1.tp2 BACKUP ~test1/BACKUP~ AUTHOR ~Me.~ VERSION ~v1~ BEGIN ~Check Dialog format~ COMPILE ~test1/test1.d~ And I grab the dialog thought I want to play with, and toss it in the folder with the .tp2: test1.d BEGIN ~test1~ APPEND ~test1~ IF ~Global("test1","GLOBAL",1)~ THEN BEGIN a100 SAY ~[ARAN] What a blighted great place to be fightin' for our lives at every turn. So do you come here often? How's the food? Know any available converts o' Sune? You thinkin' o' convertin'?~ IF ~!Kit(Player1,NMSUNE)~ THEN DO ~IncrementGlobal("c-aranflirt","GLOBAL",1) SetGlobal("c-aranlightflirt","GLOBAL",0) RealSetGlobalTimer("c-aranflirttimer","GLOBAL",ARAN_FLIRT)~ EXIT IF ~Kit(Player1,NMSUNE)~ THEN GOTO a101 END IF ~NumTimesTalkedTo(0)~ THEN BEGIN a105 SAY ~[ARAN] Yup, a stupid test~ ++ ~[PC] heya, 101~ + a101 ++ ~[PC] heya, 102~ + a102 ++ ~[PC] heya, 103~ + a103 ++ ~[PC] heya, 104~ + a104 END IF ~~ a101 SAY ~[ARAN] Well, I have seen precious little o' th' Tel' Quessirim, truth be told. Those ears be a right interestin' sight on a lad. No harm meant, eh?~ IF ~~ THEN EXIT END /* c-aranpidhum */ IF ~~ a102 SAY ~[ARAN] No, naught but tryin' to figure out if you be a native Chondathan, Luskan, or mayhap Rashemi speaker. Must be all that book learnin'. I just can't bloody well place your accent, is all.~ IF ~~ THEN EXIT END /* c-aranpiddwarf */ IF ~~ a103 SAY ~[ARAN] Nothin' wrong. Just tryin' not to trip over your short little sorry arse, eh?~ IF ~~ THEN EXIT END /* c-aranpidorc */ IF ~~ a104 SAY ~[ARAN] Just tryin' to figure out how to avoid tellin' you that you be the ugliest son o' a bitch I ever did lay eyes on. No harm meant, o' course.~ IF ~~ THEN EXIT END END and double-click the file setup-test1.exe. Now, I have weidu showing me a command box, and before I go further, I want to make sure I get all the data I can. In Windows (I am using Win7 pro x64, but it is all variations on a theme), I right click on the top bar of the command prompt (command box, terminal, whatever you want to call it), and I change the properties. First, I set the screen buffer size to something appropriate for my screen resolution. Since I work at 1280 x 1024, it ends up being something huge, like width = 150, height = 300. I make the window size width = 150 and height = 60. And most of all, I toggle options, and put a buffer size of 500, 4 buffers, QuickEdit mode, and Insert mode. Now, the command box will save lots of cool information - and I can cut and paste out of it. It looks pretty silly right now, but on troubleshooting a big install, I have a big wide net cast to discover troubles, and I can either screenshot or copy/paste the errors for forum posting, to bug and annoy share with friendly fellow modders. OK, now I go ahead and press i, installing the mod. Success! If there wasn't, I could do that snipping tool, giving you a cute picture of a black box with text, or just copy the contents and post here, like this: OK, now we have our answers to both questions. It installs, allowing single-line code, and if Divine Remix is not installed before Aran is installed, there will be some parse warnings that show up in the black box and will lead to people checking in and reporting this as an error. Useful information. Side Note: what we just found out was that weidu will allow an install to happen, and will show a successful install in the DEBUG. It will not throw a "Installed with Warnings", or fail outright. In other words, it found the correct structures, and did not choke/scream bloody murder/spit up on us. WE HAVE NOT FOUND OUT IF IT WORKS. WeiDU was designed by trial and error, and is rebuilt and maintained by serious moddarz, not folks who have 14 safety nets for every conceivable situation and way in which the average idiot like me will throw weidu's way. If you tell it politely to do something that sounds reasonable, using the correct language, and in the correct form, it will do it. But, as we are about to find out, what a modder *thinks* they want and what the game engine *actually* wants is not always... err... make that almost never... the same thing. SO, Now we check the files. Lots of ways of doing this, but since many folks starting out do not actually use weidu to look at dialog, let's use DLTCEP and go through the process. (Heh. That is a little joke, because when you are using DLTCEP, you are using a cool, powerful, hardworking tool that acts as a front-end GUI for weidu. It does other stuff, but in this instance, we are just letting DLTCEP form the weidu commands). First off, we point DLTCEP to our new test install, because if you leave it where it is, you will keep going back to the same original installation over and over, scratching your head, trying to figure out why the mod *says* it is installed, but DLTCEP just can't seem to find TEST1.DLG... That's always fun. Now, I choose the EDIT > DLG > Load Dialog, and find TEST1. Yup, it is there, and looks good. But I want to see it all laid out nicely like when I wrote it, instead of hunting down triggers and actions and text strings, all jumbled up - so I do FILE > Export WeiDU. Now I toddle over to my testing directory> script compiler > decompiled, and voila - a TEST1.D is all ready for me. Let's see what it looks like, opened up in Notepad++: OK. Now, there is something interesting to investigate next, another day, by either asking on the forums or trying it out in game. If we look at the decompiled dialog reply states, we has set up the logic "If the player has the kit NMSUNE, then go in this direction. If the player does not have the kit NMSUNE, then go in another direction." But with no entry for NMSUNE, because DR is not installed, the script now says "If the player has the kit 0, then go in this direction. If the player does not have the kit 0, then go in another direction." Before we experiment, of course, we can research. What is Kit=0? IESDP, http://iesdp.gibberl...ids/bg2/kit.htm, and we find... nothing. Nothing matching 0 in the old, incorrect .ids, nothiing in the new one... are we safe? Maybe. But logic tells us we might just have a problem. Because what that lovely piece of code is saying is IF NOT no_kit IF no_kit and there is no entry no_kit (and even un-kitted folks have 0x4000 TRUECLASS as their "kit") - I think we will have a dreaded NVROL "No Valid Replies Or Links" popping up. Lots of ways to solve this, by the way - everything from requiring Divine Remix to be installed before Aran [bad idea to create unneeded dependencies, so not my idea of a good solution] to rejiggering the dialog code to allow a valid link that allows folks who want to play without DR installed, by simply making that ~!Kit(Player1,0)~ into a very simple default condition always available, by using IF ~~ THEN REPLY or its shortcut ++.
  14. The issue here, budding modders and modstresses out there, is that if you use any sort of WEIGHTing for creating new entries in Biobanter DLGs, you have to be sure that you weight beneath all of the states in that DLG which are called by script: such as LOVETALKs, somebody died/somebody was raised talks, etc. Those values are reasonably easy to find using InfExp/NI/DLTCEP's editor (actually, NI's Edit mode in the state trigger list is probably the best way to locate it quickly.) You can also glance at the Banter Packs for "safe" zones for weighting.
×
×
  • Create New...