Search the Community
Showing results for tags 'pid'.
Found 4 results
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.
Ideas from Petals And Thorns Folks: /* The Bar Fight - Protect My Honor (whether I instigate it or not). */ // One version of this is hidden away in the PD initiated bar flirts - this one can run from an area script, and can be independent from the other. Will have to choose an inn that does not get as much action. // still needs names ad perhaps tightening up. [NPC1] Well now, here's a pretty sight. One <PRO_RACE> girl, not too bad looking, and here we have all three of us just looking a good time. Get out on the dance floor with NPC2 here, and if you are friendly enough, there might not be no trouble.~ >> [PC] Me? How dare you! Aran, are you going to let these people talk to me like this? [EXTERN A] >> [PC] I do not bother with trivialities and insignificant worms. Aran, go take care of these idiots. [GOTO K] >> [PC] (Hide behind Aran and grip his arm tightly, pushing him towards the group.) [EXTERN K] >> [PC] Aran, I think that you should take care of this situation... [EXTERN D] >> [PC] Out of my way, Aran. I would take their heads off, but it probably would do no harm. I will start with their feet, instead. [EXTERN E] [C-ARANJ] A [ARAN] Well, I thought it might be a bit more subtle-like if... >> [PC] ... you acted like a big coward? [goto K] >> [PC] They are treating me badly! Why won't you stand up for me? [goto K] > ROMANCEACTIVE > [PC] I thought you loved me. [goto K] >> [PC] Aran... they are scaring me a little... [goto B] >> [PC] You. Yes, you... the one with the troll face and the breath that smells like a sewer. Five gold says Aran can take all three of you without breaking a sweat. [EXTERN L] [NPC1] K [NPC1] Oh, come on, girl. You haven't had a good time until you have danced with the three of us. And this piss-ant sellsword couldn't handle me, let alone me and my friends. >> [PC] He can hold his own in a fight. But you should be more worried about me. I tend to get over-excited, and might end up removing that tongue. Or perhaps other parts of your body. [EXTERN G] >> [PC] Insignificant, insolent worm. You are beneath my notice. Aran, kill him slowly. I want to hear him scream for mercy. [EXTERN C] >> [PC] (Hide behind Aran and grip his arm tightly, pushing him towards the group.) [EXTERN C] >> [PC] Aran, I think that you should take care of this situation, quickly. [EXTERN D] >> [PC] Out of my way, Aran. I would take their heads off, but it probably would do no harm. I will start with their feet, instead. [EXTERN E] /* Shy/Wants Aran To Be Protector PC EXIT */ B [ARAN] Right, then. You heard the lady, lads. Do you be wantin' to settle this on arm wrestlin', brawlin', or should we just skip right to it an' see what th' insides o' your guts look like when they be spread over th' wall over there? [EXTERN I] I [NPC1] Look who's a big man, now. Are you looking for a fight? [EXTERN J] J [ARAN] Well, now, laddie... I don't rightly look for fights. But by Bane's Bloody Buttocks, so far there's naught that I have left unfinished. You care to step outside? DO ~SetGlobal("c-arbarfight",LOCALS",1) ActionOverride("npc1",Enemy()) ActionOverride("npc2",Enemy()) ActionOverride("npc3",Enemy())~ C [ARAN] Now then, lads, th' lady don't rightly take kindly to...[EXTERN N] /* PC Orders Aran to Handle Things EXIT */ D [ARAN] Who, me,? Aye, then, I guess I could do that. You go on about th' business, an' let me handle 'em. = [ARAN] (Pssst - here, then, lads - a round on me. You wouldn't want to cross her right now, eh? She's a mite more powerful than she looks.) >> [PC] Why didn't you fight for my honor? You acted like a big coward. [goto M] >> [PC] They are treating me badly! Why won't you stand up for me? [goto M] > ROMANCEACTIVE > [PC] I thought you loved me, and would protect me. But you just paid them coin and let them get away with it. [goto M] >> [PC] That was unpleasant. I am glad you found a way to make them go away without spilling their blood. [goto M] >> [PC] Oh, for heaven's sake... You. Yes, you... the one with the troll face and the breath that smells like a sewer. Five gold says Aran can take all three of you without breaking a sweat. [EXTERN L] /* No Bloodshed Exit */ M [ARAN] I was watchin' you close, I was. I figured you didn't want a couple o' drunk buggers to get blood all over your nice clean clothes, so it seemed like a good idea to let 'em down easy. Besides, we have real enemies what to fight. If we go killin' every set o' drunken bastards what act like idiots, we will depopulate Amn. EXIT /* Aggressive PC Exit */ E [ARAN] Now, <CHARNAME>, be easy... they be just little gnats. You might mess up a nail or somethin', an then where's you be? I'll tell you what. You go get a nice cup o' tea, an' sit right there, an' I'll give you a good show. You want one o' their eyes, or mayhap a nose, or do you just want an ear or two to hang next to your collection o' Drow ears an' Dragon's teeth? >> [NPC1] Drow ears? >> [NPC2] Dragon's teeth? >> [NPC3] Err... we were just leaving. Just a few high-spirited remarks, no harm meant. [goto F] F [ARAN] No problem, lads. Only don't be comin' round here much, eh? Me, you might be able to fight to a standstill. Her, she looks like a shrinkin' violet, right up until th' time you realize her hand's holdin' what's left o' your intestines. An' then she starts gettin' mean. EXIT /* Mediation Fails */ [NPC1] So, big protector, eh? I didn't know prostitutes around here had the money for a mercenary escort. You get out of the way, or you will be sorry. [EXTERN O] O [ARAN] I'm goin' to rip your head off an' piss down your neck. DO ~SetGlobal("c-arbarfight",LOCALS",1) ActionOverride("npc1",Enemy()) ActionOverride("npc2",Enemy()) ActionOverride("npc3",Enemy())~ EXIT /* PC Protective of Aran or just Fiesty Exit */ G [NPC1] Oh, big man, having her fight your battles for you. [EXTERN H] H [ARAN] Believe me, son, you don't be knowin' her like I do. Last one who ticked her off only lost a few pints o' blood an half his scalp. O' course, that was me, an' she needs me around for to carry stuff an' such. You, not so much. [EXTERN L] L [NPC1] I hear lots of hot air, but you don't look that tough, either of you. Come on, boys... they don't need all that coin. Get 'em. DO ~SetGlobal("c-arbarfight",LOCALS",1) ActionOverride("npc1",Enemy()) ActionOverride("npc2",Enemy()) ActionOverride("npc3",Enemy())~ EXIT /////////// You folks have to tell me when things go to far with language and imagery. Evoking strong reactions with language is a fun goal, but I am not interested in evoking the "I am uninstalling this mod and never playing it again" reaction. //////////// /* From P&T - I always wondered why no PC ever really embarrassed themselves with their love interest... with all the packing they must do, it's amazing no PC has accidentally left something private or incriminating out which was then found by another party member. */ /* Umberlee's Undulating Undergarment */ /* Embarrassing Things Aran > PC */ [ARAN] Now, I don't rightly think that this be mine, eh? >> [PC] ARAN! Put that away before someone sees you! [goto A ] >> [PC] No, I think those are mine. Where did you find them? [goto B] >> [PC] No, they are not mine. Do you want to explain why you have another woman's undergarment in your pack? [goto C] >> [PC] I did not realize you liked women's clothes so much. We should put you in some of the 'armor' they make available to us, and see how you like having a chainmail bikini to hide your most intimate parts. [goto D] A [ARAN] What I be tryin' to figure is why all th' fuss over a scrap o' linen. Although I suspect it has a mite to do wi' exactly what that scrap be coverin'. How about next time we do some clothes washin', you check where things be stored? People might get th' wrong idea. EXIT = IF ROMANCE ACTIVE [ARAN] Or worse, they might get the right idea. EXIT B [ARAN] Mixed up in thy' socks an' such in my pack. Last time I did th' party chores, I must o' not sorted so well. Sorry about that. No harm done, eh? >> [PC] Those are some of my most private possessions! Give them to me right now. [goto E ] >> [PC] From now on, I will do my own washing. You stick to things that you are less likely to mess up. [goto E ] > NOROMANCE > [PC] Well... I guess you could keep them... [goto F ] > ROMANCE > [PC] Well... I guess you could keep them... [goto G ] C [ARAN] Well, Sune's Sweet Stomach, if they be not yours, then... [goto CANONICAL_WOMEN_IN_PARTY] CANONICAL_WOMEN_IN_PARTY AERIEJ [AERIE] ARAN! Th... those are mine. [goto H ] NALIAJ [NALIA] That is personal property, and finding quality silk and lacework around here is difficult. Give them to me, please. [goto H ] EDWINA ? [EDWINA] You foul creature! Unhand my undergarments, you moronic baboon. And keep your lusts to yourself. I may be a magnificent looking woman, but I am still Edwin Odesseiron, Red Wizard. Indignities will be met with swift and horrific punishment! [goto H ] JAHEIRAJ [JAHEIRA] Underclothing is functional protection provided for the comfort of the wearer. I reclaim mine now, Aran. [goto I ] VICONIJ [VICONIA] Spidersilk is expensive, rivvil. If a single strand is damaged, I shall carve temporary patches out of your skin. [goto I ] IMOEN2J [iMOEN] Hey! That's mine! Give 'em here! [goto I ] H [ARAN] Bane's Blood, she be blushin' worse than a beet at fall harvest. She damned near glows! I guess I will not be volunteerin' to do no more o' th' group laundry anytime soon. I [ARAN] Itishia's Icy Iris, that were one cold glance she just gave me. Gave me th' chills, it did. I guess I will not be volunteerin' to do no more o' th' group laundry anytime soon. IF ! AERIE ! NALIA ! EDWINA ! JAHEIRA ! VICONIA ! IMOEN [ARAN] Bane's Blood, I don't rightly know whose this be. But somemone be missin' some right private clothin'. I guess I will not be volunteerin' to do no more o' th' group laundry anytime soon. D [ARAN] Just th' though o' that hurts in places not mentionable in polite company, eh? But no, I don't find no excitement in these kinds o' clothin' unless th' owner be showin' em off to me with 'em on. You be sure they are not yours? >> [PC] Those are some of my most private possessions! Give them to me right now. [goto E ] > NOROMANCE > [PC] They are mine. But... I guess you could keep them... [goto F ] > ROMANCE > [PC] They are mine. But... I guess you could keep them... [goto G ] >> [PC] Not mine, oh great washer of clothing. But by all means, keep holding a woman's private undergarments up and waving them about like a flag. It makes you look so masculine. [goto CANONICAL_WOMEN_IN_PARTY] E [ARAN] All that fuss over a little scrap o' clothin' no bigger than a good-sized handkerchief. But here you go. Don't want no one to think I be keepin' your panties as no souvenier or naught like that. Bad for morale, eh? F NOROMANCE [ARAN] No why would I want to be doin' that? It seems a right strange thing to use as a token or favor, an' I be no knightly jouster. All that fuss over a little scrap o' clothin' no bigger than a good-sized handkerchief. Here you go. Otherwise, it might be bad for morale, eh? G ROMANCE [ARAN] Now why would I want to be doin' that? Me, I'm a right simple soul. I'd much rather get rid o' such nonsense an' see you th' way th' gods created you. All that fuss over a little scrap o' clothin' no bigger than a good-sized handkerchief. Here you go. I'll be a mite more careful sortin' next laundry day. /* The Scroll Of Blushing */ /* Embarrassing Things PC > Aran */ [ARAN] Hey! Put that down! That don't rightly belong to you! >> [PC] This little scrap of paper? Here, I did not realize that it was yours. [ A ] >> [PC] Anything left out in public is mine. Why? What is on it? [ B ] >> [PC] A random scrap of parchment lying around has no owner. I think I shall read it aloud, though, since you seem so worried about me picking it up... [ C ] >> [PC] You should keep a closer eye on your belongings. Your punishment for carelessness is that I shall read it aloud. [ C ] A [ARAN] Thank you right kindly. You didn't read it, now, did you? >> [PC] Unfortunately, yes. The imagery was quite... detailed. one might even say explicit. [ G ] >> [PC] Not yet. But anything left out in public is mine. Why? What is on it? [ B ] >> [PC] A random scrap of parchment lying around has no owner. I think I shall read it aloud, though, since you seem so worried about me picking it up... [ C ] >> [PC] You should keep a closer eye on your belongings. Your punishment for carelessness is that I shall read it aloud. [ C ] >> [PC] Of course not. Though if it is private, I think you should be more careful about how you dispose of things like this in the future. [ G] B [ARAN] Nothin' much. Just some scrapped practice writin'. Nothin' there, no ma'am, nothin' to see. >> [PC] Unfortunately, I just lied to you. I read it. The imagery was quite... graphic. One might even say explicit. And apparently, you are very creative in your approach to spelling. [ G ] >> [PC] A random scrap of parchment lying around has no owner. I think I shall read it aloud, though, since you seem so worried about me picking it up... [ C ] >> [PC] You should keep a closer eye on your belongings. Your punishment for carelessness is that I shall read it aloud. [ C ] >> [PC] Of course not. Though if it is private, I think you should be more careful about how you dispose of things like this in the future. [ G] C [ARAN] Come on, <CHARNAME>... be a good <PRO_MANWOMAN>, a credit to all what call themselves '<PRO_RACE>'. It were a rough draft, and a bad one at that. Just give me th' blasted thing an' forget you ever saw it, eh? >> [PC] "My Dearest Love, how can I count the ways that you excite me, how you arouse my innermost passions and lusts." Hey, Aran, you misspelled 'excite', unless Chondathan somehow borrowed several Rashemite alphabet characters while I was not paying attention. "The way that both your..." not going to read that word... nor that one... "move, bouncing like twin horses tethered in tandem, two terrific trepidacious terrific..." No, you spelled that wrong, too... err... I have never heard that body part described quite that way. Hmmm. So, you are a leg man, too? No, you seem to go on and on about wonderous caves of passion, and something about spelunking, and here you have split an infinitive... 'to boldy go where no man has gone before?' Quite colorful. I think you should go into comedy writing with Volo. [ D ] >> [PC] Of course I will give it to you. Though if it is private, I think you should be more careful about how you dispose of things like this in the future. [ G] >> [PC] Of course I will give it to you. Though I did get a glimpse at the salutation. 'My Dearest Love'? Who were you writing to? [ F ] D [ARAN] <CHARNAME>, for th' love o' th' gods, stop readin' that an' give it back, eh? >> [PC] Oh, no. I intend to keep this and read it at our next inn. It should be good for a laugh and a free round of drinks. You couldn't get a professional Bard to write some of this stuff! >> [PC] Only one question... who was this draft intended for? What gracious woman were you intending to reduce to a puddle of laughter with this missive of misplaced words and awkward imagery? [ F ] >> [PC] I had no idea you were so colorful in your writing, Aran. I thought you might parse a love letter "If the party in the foresaid paragraph, to be henceforth referred to as 'The Lover', does agree to a private meeting the time of which to consist of not less than one-half (1/2) hour, as determined by the established Dale Reckoning Sundial, then aforesaid party shall indicate acceptance by..." [ G ] F [ARAN] Wild horses couldn't get that answer out o' me, no way, no how. Oh, Bane's Blood, go on then. Laugh away. I'll be on about my business. G [ARAN] Banes Broken Bones. I should take to eatin' my trail versions just to make sure they don't fall into th' wrong hands. ////////// As always, if someone sees another pathway that should be incorporated, or has suggestions, fire away!
WARNING. This thread contains swearing, poor depiction of prurient actions, reference to anatomy, and even a bawdy song. Do not read this thread if any of that offends you. You can also skip it is derivitave writing, poor spelling, and a high number of typos offends you, but I would much rather have you help me root those things out than skip the whole thing Underdark. A Pain in a Modder's Bottom. The entire Chaper 5 sequence is hard to work out. A player could be right there at very low level having raced for Imoen in Spellhold, they could be at very high level and 99% finished a romance (or two), and there is the whole "hey, how do I account for the Drow appearance being on, off, or ignored?". Then there is the lovely idea that some players will want to flirt and talk, but most normal denizens of Faerun see Underdark as a place of hell on earth, so to speak. Drow and Koa Toa and other strange beasties are the stuff of nightmares, and this is their home. Not many people say "Hey, all this danger and rot around us is kind of exciting - let's get it on!", unless they are about to become Slasher Victim #217, Second Class, Screaming, Death By Chainsaw. Or perhaps Girl Who Shows Bra And Therefore Dies In A Fountain Of Blood™. There are lots of ways of dealing with this, from NPCs that are specifically Underdark - Only, to the Flirtpack's single response "Not now honey, that mushroom over there is looking at us and trying to figure out how to kill us", to Edwin's Flirts which embrace the Drow appearence and script it with CODE + ~G("EdwinRomanceActive", 2) G("PlayerLooksLikeDrow", 1) Global("ERDrow", "LOCALS", 0)~ + ~Ask Edwin how he likes being a Drow.~ DO ~SetGlobal("ERDrow", "LOCALS", 1) ActionOverride(Player1, SetDialog("ERPlayer"))~ + Drow1 So, let's play around with Aran and his reactions to Underdark. On the one hand, if it is a female <CHARNAME> and she says "come here, big boy", he is going to want to grab her and make lots of little <CHARNAME>s, or at least try to. On the other hand, she currently looks like a Drow. And like any decent Faerunian human, the only good Drow in existence is drizzt, and most folks think he is just a myth, or a lie - without a disguse, he can't walk more than a few paces without being accosted - at least in most of the early books. And if <CHARNAME> is a dude, the flirts are left out, and things become easier - a disguise is a disguise. But there needs to be some kind of reaction because when your best bud looks like the enemy and is in enemy uniform, it is dark, smoky, and spooky, lit occasionally by phosphorus glow, etc... can you say "friendly fire"? So, a stab at building some interesting stuff into the Underdark. By now, most of the dialog code should be easy to read, after all the walkthroughs - nothing particularly new or interesting code-wise here, other than playing with some LOCALS and an occasional fun jaunt into hijack-states-land. We can save the Friendship Talks specific to Underdark for another day. here is the second or third pass at the PID (including Underdark-specific flirts).
OK, since the flirts are progressing, let's mess with PIDs. Player Initiated Dialogs or PIDs, are conversation options that show up when you "force-click" on the NPC. They are designed as individual conversations/flirts menus/Voice fixers/etc., taking advantage of the engine's mapping of click-to-talk=StartDialogNoSet(). In other words, clicking on an NPC is similar to scripting IF True() // >> clicked on << THEN RESPONSE #100 StartDialogNoSet("Player1") END only running once. This means that if we add options to the *BOTTOM* <<VERY IMPORTANT>> of the stack, with an "always true" condition, clicking on the NPC gives us access to a single (usually huge) dialog state with a ton of conditioned replies. REMEMBER:A PID is an "always true" conditioned dialog state. This is why a PID will pop up if you make a mistake on your NPC's J-file - if the script can't find what it is looking for, it will send back this PID instead. Worse, if you install the PID above other conditioned replies, IT WILL BLOCK THAT CONTENT. The safest way to deal with this is to make sure that the PID is a separate component in your NPC mod, and installs last in the order. You do not need to worry about other mods and modders - the Crossmod Banter Pack deals with B-files, and most modders do not mess around with reordering your mod's dialog states. If they do add to your NPC's J-file, it is likely to be interjections or specially scripted banters, and they have either gotten your permission (in which case they are aware of the issue) or they have simply weighted their materials higher than the bottom anyways, to make sure their stuff plays. The only exception to this canonical BioWare™ characters that have PPG FlirtPack entries. If you are adding content there, you need to be aware that unless you do a good bit of specialized work, your PID addition to (for example) Aerie *will* conflict with those flirts. Remember, folk, on these recommendations - I am talking code not content. And I am not a coding expert, so the suggested mods for research are just ones where I have come across cool ideas while reviewing code. Prepping for Aran, I have found it useful to read .d with only .tra numbers, so I don't get the dialog; I am just looking at the way the modder *structured* how they were doing things. That being said, for the most comprehensive use/abuse of this system, try checking out PID coding in Jastey's Ajantis in BG1NPC, and to a lesser but as detailed extent Domi's SharTeel PID in the same mod. Other notable PIDs to research: for clean and efficient structuring, Kulyok's Xan and Angelo PID coding (in Xan especially, she separates a series of PIDs off and builds "leveling" menus and submenus that tailor the PID and available responses with an efficiency that is not present in any other PID currently publicly released). Berelinde's Gavin PID (she extends options, reactions, and gives the most comprehensive commenting out there so it is easy to follow most of her files) can give you a good handle on how the structure works, and for the simplest and easiest to understand PID, chose any of JCompton's Flirtpack entries. They are not called PIDs, probably because they (I think) predated the idea. But as we talked about in Flirts, each component of the FlirtPack adds a clean, simple PID. To start the ball rolling, we need the dialog state that will run and always be true. This is /* PID for SoA */ IF ~IsGabber(Player1)~ THEN c-aranpid SAY ~[ARAN] (Aran is wandering around, idly tossing rocks at things that strike his fancy.)~ IF ~~ THEN EXIT END This means that when you press the "talk" icon at the bottom of the screen and then click on Aran's character portrait in the game, if no other conditions are true on the J-file, the dialog box will pop up OK, that is better than the stock variation on but not much better. So let's begin building in some responses. No, wait, let's start with an easier one - how about a PID that handles the case where a player has another party member NPC selected as the talker, rather than the PC, and then is about to post a bug report about the PID not working... let's set up a condition that handles the "not <CHARNAME> trying to force-talk". Several modders do this - most of them are single throwaway "Not now, I have a headache" lines, for reasons that will soon become apparent as I wander off into lala land... /* PID for SoA */ IF ~!IsGabber(Player1)~ THEN c-aranpidother SAY ~[ARAN] (Aran is wandering around, idly tossing rocks at things that strike his fancy. Since you are <GABBER>, not <CHARNAME>, he grins and sticks his tongue out at you before turning away.)~ IF ~~ THEN EXIT END This means that if I have Aldaron as my main PC, and I have selected Kivan instead of Aldaron, the PID will pop the following: (For more information on 'tokens' like <CHARNAME> <PRO_HESHE>, <PLAYER1>, and <GABBER> - things that the game can do for your text to match what is happening in any particular game setting on the fly, please see the IESDP). Well, so far so good. But we can do a bit better. I would not try this one at home, folks, because I am not sure it is the best way of doing this, but I will try a thought-experiment here, and massively abuse CHAIN to add a little custom "fun" for players. Here, we take advantage of the DeathVariable (dv) of existing NPCs to make individualized comments. Now, most folks don't do this for a zillion reasons, one of which is it is a huge waste of time for a throwaway line that 99% of folks will not even notice. But hey, what's an hour or two of tilting at windmills between friends... We know IsGabber("dv") will not check condition, and will not check to see if an NPC exists, so it won't crash. So we can mess with IsGabber("dv") and !IsGabber("dv") with relative impunity. Setting the condition IsGabber("b!haldimir") will allow that line to play only if the talker has a dv of b!haldimir. We can ignore folks who name their PC "Aerie" - because the engine handles that already, designating PC = Player1, so this dialog state will not play for them. Folks who create their own Multiplayer game and name their half-Elf Sorceress Aerie, playing from slot 2, well, erm... I guess they are SOL. Let's just hope no one is playing with a half-orc barbarian male and named them Aerie, or there will be a minor head-scratching moment when Aran makes a pass at them /* PID for SoA */ /* PID 1: Options for Other NPCs PC <> Aran, also know as "throughly abusing CHAIN until it screams" */ CHAIN IF ~!IsGabber(Player1)~ THEN c-aranpidother ~[ARAN] Well, now, you might want to talk, but I do have a bit on my mind right now, <GABBER>. Can this wait a bit?~ == ~C-ARANJ~ IF ~IsGabber("ADANGEL")~ THEN ~[ARAN] Besides, we might have a chat over weapons cleanin' later on, Angelo. I never did hear how you got free 'o that' Cyric-buggerin' bastard Sarevok, not from your perspective. I'll bring th' flask, you bring th' stories.~ EXIT So now we have a reply of if Angelo is not in the party, but if he is: We can also can cover multiplayer, but to do so we will need to stretch the usual limits of conditioned replies - here, we need a series of responses that skips out the special responses. this is a partial list for illustration. Please see the final code edits at the end of the next section for a relatively long list of possibles. == ~C-ARANJ~ IF ~!IsGabber("ADANGEL") !IsGabber("Aerie") !IsGabber("Anishai") !IsGabber("Anomen") // big section of other !IsGabber("myNPCdv") calls goes here removed for space !IsGabber("YASRAENA") !IsGabber("YASRAENA") !IsGabber("Yoshimo") !IsGabber("Z_MODDY") !IsGabber("ZAIYA")~ THEN ~[ARAN] No offence, <GABBER>, I just don't rightly have much to say to you right now.~ Here is a quick run at the "not-the-player PID reminder". Please feel free to suggest responses, as I am not completely familiar with all of the NPCs on the list. I can always tweak the response, but go ahead, give it a try! /* PID for SoA */ /* PID 1: Options for Other NPCs PC <> Aran, also know as "throughly abusing CHAIN until it screams" */ CHAIN IF ~!IsGabber(Player1)~ THEN c-aranpidother ~[ARAN] Well, now, you might want to talk, but I do have a bit on my mind right now. Can this wait a bit?~ == ~C-ARANJ~ IF ~IsGabber("ADANGEL")~ THEN ~[ARAN] Besides, we might have a chat over weapons cleanin' later on, Angelo. I never did hear how you got free 'o that' Cyric-buggerin' bastard Sarevok, not from your perspective. I'll bring th' flask, you bring th' stories.~ == ~C-ARANJ~ IF ~IsGabber("Aerie")~ THEN ~[ARAN] Not meanin' to be short, m'darlin lassie, but I'd rather we have a talk later. Are you up for a walk tonight, Aerie? Mayhap just you an' me, under th' stars?~ == ~C-ARANJ~ IF ~IsGabber("Anishai")~ THEN ~[ARAN] Though if you are lookin' for a partner to try a few practice runs, Ainshai, You could always try to get a good feel o' what's in my pocket... by Mask's Mighty Mouth, you could charm th' trousers off o' me, you could.~ == ~C-ARANJ~ IF ~IsGabber("Anomen")~ THEN ~[ARAN] Anomen, if this is about my gear bein' not quite tidy enough, I done rightly heard you the first three times. An' I'll say it again - I don't answer to you, nohow. So bugger on about your business, m'lord, an' leave me to mine.~ == ~C-ARANJ~ IF ~IsGabber("Azure")~ THEN ~[ARAN] Besides, Azure, I know better than to be makin' time wi' you. Sharo's a pretty sensitive wolf, an' might not take kindly to us takin' too long, private -like.~ == ~C-ARANJ~ IF ~IsGabber("B!Gavin")~ THEN ~[ARAN] BLOODY HELLS, OUCH! By Lathander's Sunny Sh... Gavin, what in th' hells do you think I'm usin' to walk with, my hands? Look, I know I don't rightly use th' tops o' my feet for much, but that's no reason for you to use 'em as steppin' stones.~ == ~C-ARANJ~ IF ~IsGabber("b!haldamir")~ THEN ~[ARAN] I'm goin' to kick myself for sayin' that, too, Haldamir, on account o' you don't talk much to anyone, an' here you go tryin' to start a conversation. Talk about bad timin'.~ == ~C-ARANJ~ IF ~IsGabber("BIDDE")~ THEN ~[ARAN] An' you can stop lookin' at me w' those cold stone grey eyes, y' old shortaxe. I like Lathander well enough, an' you don't need to go convertin' me to your ways.~ == ~C-ARANJ~ IF ~IsGabber("Britt")~ THEN ~[ARAN] Though how you got into this adventurin' party, Britt, is a mystery to me, you know. I thought you were just pullin' my leg about joinin' on. I suspect there's been some divine intervention what's made you take up adventurin'.~ == ~C-ARANJ~ IF ~IsGabber("BWTOUCHX")~ THEN ~[ARAN] An' lay off th' advice, Touchstone, m'boyo. You Wild Elves have been around a mite longer than me an' my kinfolk, I know, but here's more to th' world than trees, bugs, an' grass. Well, at least there's also mud, soot, an' grime, based on what you be wearin' right now.~ == ~C-ARANJ~ IF ~IsGabber("CALLISTO")~ THEN ~[ARAN] An' stay ahead o' me, Callisto. Mask's Blade, you are a right fine fighter, but you worry me, you do. You get all out o' control, an' there's nothin' what can stop you. I wouldn't want to have no 'accident' or nothin'.~ == ~C-ARANJ~ IF ~IsGabber("Cernd")~ THEN ~[ARAN] If it that talk you were wantin' to give me on th' ways o' th' birds an' th' bees, Cernd, well - that ship sailed a couple o' years ago. Though I can tell you o' some things I've learned what's great in th' bedroom, but don't quite fit under th' headin' o 'natural'... ~ == ~C-ARANJ~ IF ~IsGabber("CHLOE")~ THEN ~[ARAN] In fact, Chloe, let's just pretend we done talked already, an' call it quits. You scare th' crap out o' me.~ == ~C-ARANJ~ IF ~IsGabber("CMALORA")~ THEN ~[ARAN] Not that I don't appreciate some bubbly happiness an' sunshine in my day, m'darlin' Alora, but I need to concentrate right now. An' that 'happy happy joy joy' spirit o' yours might break it. Plus, last time you got all huggy wi' me, half my purse mysteriously went missin'... don't you play "Happy Hin" wi' me, lassie! I can't rightly afford it right now!~ == ~C-ARANJ~ IF ~IsGabber("CMGMIRIAM")~ THEN ~[ARAN] I don't have much time for no bloodsucker, nohow, Miriam. Especially when I don't rightly know which 'we' is you. I don't know why <CHARNAME> don't just throw a stake through your heart an' be done wi' you.~ == ~C-ARANJ~ IF ~IsGabber("CMNIKITA")~ THEN ~[ARAN] I'll tell you what, though, Nikitalleria. When we next camp, I will trade you fair an' square. You teach me a little sleight o' hand, an' I will teach you a mite on parryin' versus Waterdeep double-swords. An' I won't make no pass at you, neither. This is just friend to friend, see? ~ == ~C-ARANJ~ IF ~IsGabber("CMNINAF")~ THEN ~[ARAN] Besides, m'lady Ninafer, shouldn't you be chattin' up Anomen or somethin'? I think you are a right fine woman, an' all. But the boy's the jealous type, an' an officer an' all. I got enough o' him ridin' my back without you makin' it worse.~ == ~C-ARANJ~ IF ~IsGabber("CORAN")~ THEN ~[ARAN] An' stand where I can see you, Coran. Th' ladies might like your 'charmin' rogue' act, but me, I'm not that impressed.~ == ~C-ARANJ~ IF ~IsGabber("D#Silver")~ THEN ~[ARAN] An' stay an arm's length away, SilverStar. Unless you want a nice mutton, lettuce, an' tomato sandwich, or somethin'. Then where would your Mary be, eh? Have fun stormin' that particular castle.~ == ~C-ARANJ~ IF ~IsGabber("D0Alassa")~ THEN ~[ARAN] You can charm the breath out o' me an th' trousers off o' me, Alassa, with just the bat o' an eyelash. An' worse, you know it. But keep those gorgeous eyes an' pert lips out o' my business. You would skin me an' serve me raw if it got you an extra few coin, laughin' all the way to Calimport.~ == ~C-ARANJ~ IF ~IsGabber("DL#BWN")~ THEN ~[ARAN] By Tempus' Shield, Branwen, you are a sight for sore eyes. But I don't have no time to talk about following Tempus right now. Come talk to me when we are campin', or some such time.~ == ~C-ARANJ~ IF ~IsGabber("DYNAHEIR")~ THEN ~[ARAN] M'lady Wychlaran, I don't mean no disrespect. An' please don't turn me into no toad, nor squirrel, nor naught like that, Dynaheir. I just don't have no words t' speak right now.~ == ~C-ARANJ~ IF ~IsGabber("E3Fade")~ THEN ~[ARAN] I'm no prude, Fade, an' I respect th' Guild rightly enough. An accomplished Knife's a right good part o' a party, an' you keep th' Shadow Thieves appeased. But I don't trust no tiefling, no way, no how. So unless it's business, keep to yourself, girl.~ == ~C-ARANJ~ IF ~IsGabber("Edwin")~ THEN ~[ARAN] Unless it be more stories o' your conquests, o' course, Edwin. You got more o' those, well, step right on over, an' we'll have a mite o' a chat. I still can't rightly believe a Chondathan girl can be trained to do what you described last time. Didn't know they bent that way.~ == ~C-ARANJ~ IF ~IsGabber("FHLAND")~ THEN ~[ARAN] Come by an' chat later, though, Andrei. We can spar a bit, an' swap stories. Or, I can tell stories an' you can listen. Did I ever tell you about th' time Kirran an' me an' BrightFire got into a mite o' a spat wi' some boys servin' th' wi' Black Company? Now, that were a fight for a bard to describe...~ == ~C-ARANJ~ IF ~IsGabber("FHLSEB")~ THEN ~[ARAN] Though you could do me a right good favor, Sebastian, an' lay off Andrei. The lad's a decent enough sort, an' he needs some breathin' room you don't give him. I'll watch his back, don't you worry.~ == ~C-ARANJ~ IF ~IsGabber("FINIREN")~ THEN ~[ARAN] I don't have nothin' to say to you nohow, Irenicus. I spoke my piece back when we kicked your sorry arse. I'd tell you to get lost in any o' th' hells, but you've already done that.~ == ~C-ARANJ~ IF ~IsGabber("FWGhareth")~ THEN ~[ARAN] But come have a drink wi' me when you can, Ghareth. I want to hear more about th' Cowled an' their ways. Forewarned is forearmed, an' all that time enforcin' for 'em has got some good stories, I bet. I'll trade you, an' tell you about th' time I was servin wi' Moonshea an' we had a bit o' warlock trouble. Talk abut uncontrolled magic...~ == ~C-ARANJ~ IF ~IsGabber("G#CASS")~ THEN ~[ARAN] I know that look, Cassius love, an' you are about to charm me wi' those stories o' heroism an' such. Th' trouble wi' all you Skalds an' your tales is that when th' hero slays th' monster an' looks about, there's not much left o' th' rest o' th' party. Write one o' them tale where the kitchen maid an' her four friends beat th' crap out o' a dragon an' all live to tell the tale, an' I'll listen!~ == ~C-ARANJ~ IF ~IsGabber("GOZALOTH")~ THEN ~[ARAN] Better yet, keep yer distance, you floatin' eyeball. I can't rightly make out your accent anyways. An' people think *my* accent be hard to follow...~ == ~C-ARANJ~ IF ~IsGabber("HaerDalis")~ THEN ~[ARAN] An' lay of th' 'sparrowhawk', 'dovewing', an' birdy-birdy language for a mite, there, HaerDalis, eh? If you do, I'll let you look at a scrap o' parchment I found in a library outside o' Beregost, what's written in th' tongue o' Gold Dwarves...~ == ~C-ARANJ~ IF ~IsGabber("Horace")~ THEN ~[ARAN] Now, hold on to your jawbone, an' stop scratchin' th' inside o' that left eyesocket, Horace. I got enough trouble stayin' un-spooked just lookin' at you, let alone talkin' to an animated skeleton!~ == ~C-ARANJ~ IF ~IsGabber("Hubelpot")~ THEN ~[ARAN] We'll be talkin' over dinner prep anyways, Hubelpot. Don't worry none - I'll try not to get ripped limb from limb afore then, and with a bit o' luck, you won't be ground up bits o' parts neither. We can talk about real curry makin'!~ == ~C-ARANJ~ IF ~IsGabber("Imoen2")~ THEN ~[ARAN] I'm not pushin' you away, Imoen, really I'm not. I just know you have a mite on your mind, too, an' I'm not happy company right now. I'll walk by you for a bit, though, if you want.~ == ~C-ARANJ~ IF ~IsGabber("IYLOS")~ THEN ~[ARAN] You can't rightly expect much in th' way o' small talk from me, nohow, Iylos. You got a mission, an' I respect that. But fish around for information about <CHARNAME> from someone else. I don't serve more than one contract at a time, an' <CHARNAME> has that right now, an' probably 'til I'm arguin' wi' Kelemvor myself on where the prettiest girl souls be hidin' out.~ == ~C-ARANJ~ IF ~IsGabber("J#Kelsey")~ THEN ~[ARAN] Not that I'm puttin' you off for no reason, Kelsey. Come an' talk another time. I spent plenty o' time punchin' fists, Coster tradin' up an' down th' Sword Coast as a lad. We should talk shop some time soon, eh? I never did run a store, though I have done my share o' accountin' a' contract drafts. Reminds me o' th' good old days, when you raised an alarm for a stray urchin, a pickpocket, or a kobold or two, instead o' all the beasts th' nine hells can throw at us.~ == ~C-ARANJ~ IF ~IsGabber("Jaheira")~ THEN ~[ARAN] Yes, Jaheira, I packed up my bedroll right tightly. No, Jaheira, I did not eat too much o' th' hardtack, an' cramp my bowels. Yes, Jaheira, I read that list o' spices you wanted me to try to get into th' dinner roster. Melliki's Mysterious Mouth, I'm no bloody half-elf out o' your loins, I'm just a friend, eh? Go easy on th' motherin', for th' love of our friendship!~ == ~C-ARANJ~ IF ~IsGabber("Jan")~ THEN ~[ARAN] Tell you what, Jan. If th' story is about turnips, relatives, or craftin' new inventions, I can tell you I done heard it. In fact, if it was turnips, I done heard it twice. But we will have time to take on meal prep, an' then you can tell me about th' time the cute female turnip golem who was really your third cousin on your uncle's side managed to get you an idea for an invention what turned out to be th' best thing since th' gods created womenfolk.~ == ~C-ARANJ~ IF ~IsGabber("JCBruce")~ THEN ~[ARAN] Tymora's Tantalizing Tits, you got a huge bundle o' nerve talkin' to me, Bruce m'boyo. You owe *me* two platinum orbs an' the names o' three reliable courtesans, an' you haven't paid up yet. Bugger off until you do, you lazy bastard!~ == ~C-ARANJ~ IF ~IsGabber("K#Auren")~ THEN ~[ARAN] Tell you what, Auren - talk to me later, an' we'll have a go at that attack an' counter routine we had a few days ago. You are winnin' three falls to two, an' I would rightly enjoy balancin' out th' game, so to speak. ~ == ~C-ARANJ~ IF ~IsGabber("K#Bana")~ THEN ~[ARAN] You should know better than to sneak up on me like that, Banana. I got me a ton o' recipes wi' your name on 'em... hey, you got a cousin named Rosanna Bananadana?~ == ~C-ARANJ~ IF ~IsGabber("K#Sarah")~ THEN ~[ARAN] Sarah, lass-o-me-heart, I don't mean to be short wi' you. I'll make it up to you later. I can fix some decent flatbread an' honey, just like they serve back near Beregost, an' mayhap I can bribe you for a story or two. You keep too quiet, lass, an' I do appreciate your friendship.~ == ~C-ARANJ~ IF ~IsGabber("K#SHEENA")~ THEN ~[ARAN] I can promise you right proper, Sheena, I am not puttin' you off. I've sense enough not to cause no offense to a comerade what can be beautiful woman one moment, an' firedrake next. It be hard enough to stay on th' right side o' a regular woman, wi' out no draconic heritage.~ == ~C-ARANJ~ IF ~IsGabber("KACHIKO")~ THEN ~[ARAN] Hey, none o' that sharp eyed glare, Kachiko. I'll gladly talk wi' you another time. By your Eight Million Kara-Turan Gods, I didn't mean to offend you none. Not all o' us have your Dragon Tongue's focus, you know. I needs must concentrate, or I'll be not attendin' to my duties well enough. I'm not a Sword Saint or anythin'.~ == ~C-ARANJ~ IF ~IsGabber("Kari")~ THEN ~[ARAN] Easy, there, lass - don't you be gatherin' your tail in a twist, an' all. Literally, I mean. You are blushin' redder than I done seen in a tenday! Kari, I'm just busy now, that's all. Come by when we settle in for th' night, an' I'll help you with that weapon sharpenin' you were askin' about.~ == ~C-ARANJ~ IF ~IsGabber("Keldorn")~ THEN ~[ARAN] I don't mean no disrespect, Keldorn. If you have somethin' you want me to do, just say the word. Otherwise, I need to attend to my duties right proper.~ == ~C-ARANJ~ IF ~IsGabber("Keto")~ THEN ~[ARAN] How about you come by tonight, though, Keto, an' we trade some stories? I'd be lyin' if I didn't think I'd make you nice company. I have some nice Rashemi Firewine set aside, not even watered down... ~ == ~C-ARANJ~ IF ~IsGabber("KIARA")~ THEN ~[ARAN] There might be time to talk later, though, Kiara. I want to hear more about that monk trainin'. I'll help wi' some breath-holdin' exercise, if you want, too. Though there be not much more between us, I expect. I know you might be a decent enough friend, but somehow it always ends up bein' more about you, an' less about anyone else.~ == ~C-ARANJ~ IF ~IsGabber("KINDREK")~ THEN ~[ARAN] An' don't you be startin' in on me about th' corruption magic causes, neither, Kindrek. I'll take whatever weapon th' gods hand me, if it gets the job done proper. An' one more word about my head decoratin' a pike bein' pretty, an' we'll just have to see if that fancy weapon o' yours will be stronger than my skills, boyo.~ == ~C-ARANJ~ IF ~IsGabber("Kiyone")~ THEN ~[ARAN] Though between you an' me, I'd rather keep talkin' to you an' make some sort o' accommodation, Kiyone. I'd trust you to watch my back right proper.~ == ~C-ARANJ~ IF ~IsGabber("Korgan")~ THEN ~[ARAN] If this is about th' sharpenin' bar, Korgan, here it is. I don't need it no more nohow. An' I'm not so happy wi' havin' to rent it for two iron crescents an' a Trademeet trade bar. Xvim's Spit, that's bloody highway robbery.~ == ~C-ARANJ~ IF ~IsGabber("Kova")~ THEN ~[ARAN] On second thought, stay away, Kova. I'm not particular about my company, but in your case, I'm up for makin' exceptions. I'm not sayin' guilty, I'm not sayin' innocent - I'm just sayin' naught.~ == ~C-ARANJ~ IF ~IsGabber("LRIRENIC")~ THEN ~[ARAN] An' keep your Master O' th' Universe crap out o' my face, wonderboy. <CHARNAME> killed you once, remember? In my opinion, it were done too slowly, an' wi' not enough o' th' pain an' sufferin' on your part.~ == ~C-ARANJ~ IF ~IsGabber("M#AMBER")~ THEN ~[ARAN] I'm not likely to have nothin' to say anyways, Amber. It seems like you are backin' <CHARNAME>, but while you ca take the lady out o' th hells, now, can you really take th' hells out o' th' lady? I don't rightly trust no tiefling, no matter how pretty.~ == ~C-ARANJ~ IF ~IsGabber("Mazzy")~ THEN ~[ARAN] I'll be happy to help on th' weapons cleanin' later, though, Mazzy. I want to see how you sharpen those arrows so fierce.~ == ~C-ARANJ~ IF ~IsGabber("Minsc")~ THEN ~[ARAN] Oh, I'm right sorry, Minsc - didn't mean to be so short. Though when I'm standin' close to you, short is the word what springs to mind right quick, it does. You are blockin' most o' my view, big boy. You mind steppin' over a bit, so's I can see where we are headed?~ == ~C-ARANJ~ IF ~IsGabber("MTS#Shy")~ THEN ~[ARAN] Chende, I'm, err... well, I'm... not that I have anythin' against half-orcs, or nothin, on account o' I have worked wi' my share o' right proper comrades what's got my back as good as I watch theirs, regardless o' orcish blood. It's just you keep adjustin' your top, an' it bothers me a bit. There's a good healthy woman, an' then there's a need to get some clerical intervention. That's just not right, eh?~ == ~C-ARANJ~ IF ~IsGabber("MWAriena")~ THEN ~[ARAN] Ariena, don't be lookin' like that at me I'm not shunnin' you, I just don't rightly have th' time right now! We'll try some sparrin' later on. Though this time, you done got to remember that we be sparrin', not fightin' for real. Last time, you bloody well busted a few o' my ribs.~ == ~C-ARANJ~ IF ~IsGabber("MWKido")~ THEN ~[ARAN] An' no, I'm not interested in more discussions about Cyric an' his Dark Light, Kido. You spin a fine tale, but I'm stickin' wi' <CHARNAME> for <PRO_HISHER> sake, not on account o' any love for murder, death destruction, chaos, an' all that crap.~ == ~C-ARANJ~ IF ~IsGabber("Nalia")~ THEN ~[ARAN] An' I am not one o' th' Great Unwashed Little People, neither, Nalia. I 'll have you know I took a bath just last week. Well, parts o' me, anyways. Wanna see?~ == ~C-ARANJ~ IF ~IsGabber("NATH")~ THEN ~[ARAN] Come by later, though, 'Fletcher. We never did finish talkin' about that whole Trade Way skirmish wi' the Chill hittin' your squad o' Fist. I heard from Valis your party done got ambushed right proper, but fought all th' way out wi' only two casualties anyways. Now that is a story worth hearin' more'n once, it is. I'll provide th' spirits, you provide th' stories. ~ == ~C-ARANJ~ IF ~IsGabber("Ninde")~ THEN ~[ARAN] I mean no disrespect, o'course, m'Lady Ninde. I wouldn't want to be on th' wrong side o' one o' your tongue lashin's. Though if there's a right side, well, I'm your man for to call on. I'll just go get that gear straightened out a bit, eh?~ == ~C-ARANJ~ IF ~IsGabber("O#TIAX")~ THEN ~[ARAN] Yeah, yeah, I done heard you th' first twenty times. 'Tiax Rules All'. 'When Tiax Rules, Aran Will Be Th' Boot-Scraper An' Will Have To Talk To Me'. Sune's Rambunctious Rump, someone get this insane shorty th' Nine Hells away from me.~ == ~C-ARANJ~ IF ~IsGabber("O#XAN")~ THEN ~[ARAN] No offence, Xan, but I want to keep my spirits up, eh? You are one powerful Tel Quessir, but you sure can bring on th' doom an' gloom.~ == ~C-ARANJ~ IF ~IsGabber("P#DEHER")~ THEN ~[ARAN] Beggin' your pardon, m'lady Deheriana. I don't mean no offence to you nor your Ranger.~ == ~C-ARANJ~ IF ~IsGabber("P#KIVAN")~ THEN ~[ARAN] I'm downright flattered you want to talk to me, I am, Kivan - I don't mean no disrespect. There's just not rightly no time now for talkin'.~ == ~C-ARANJ~ IF ~IsGabber("R#ALLIS")~ THEN ~[ARAN] An' don't you be pesterin' me about all that cookin' wi' meat again, Allison. I know you be fond o' th' animals, but there's a right good purpose for them there bunny rabbits. Make good stew, they do!~ == ~C-ARANJ~ IF ~IsGabber("R#Kitanya")~ THEN ~[ARAN] Beggin' your pardon, o' course, vanimaberylellie en amin... no offense meant. I'd Like it fine if we could talk later, Kitanya. I'd like to learn some o' th' Tel Quessirim fightin' tactics, if you've a mind to share.~ == ~C-ARANJ~ IF ~IsGabber("Rylorn")~ THEN ~[ARAN] In fact, forget it. Shut your foul mouth, you Cyric-lovin' filth. If <CHARNAME> didn't keep you on a tight leash like soem pet, I'd be servin' your heart up tartar-style, wi' a nice cup o' th' blood o' innocents you like to murder. Watch your back, bastard, on account o' I'm just waitin' for th' opportunity to plant somethin' between your third an' fourth ribs.~ == ~C-ARANJ~ IF ~IsGabber("SAERILETH")~ THEN ~[ARAN] Hold on... I can do this right proper, I can. I've been readin'. *ahem*. Forsooth, it pains me greatly to cause you distress, my Lady Saerileth. But thy words best not the needs of the moment, and I must away anon. Perchance thy gracious lips would caress mine ears at the first pale glimmer of starlight; for in thine countenance I do see the beauty of life, the vivaciousness of youth, and the satin power of Tyr enobl'd and made feminine in the grace of your form. This poor sinner doth confess the lusts of both body and mind for such sweet discourse; a breath, a moment of your beauty is like the drop of divine wisdom from the countenance of Ao. *ahem*. Sune's Salacious Succulence, talkin' that way'll kill a man dead, it will. ~ == ~C-ARANJ~ IF ~IsGabber("SDNPC")~ THEN ~[ARAN] Come by an' talk later, though, Yikari. We can get a good stiff drink, an' loosen that still tongue o' yours. I want to hear more about th' far off lands, an' especially those Kara-Turan womenfolk!~ == ~C-ARANJ~ IF ~IsGabber("SIME")~ THEN ~[ARAN] Not meanin' to offend you, Sime, nor your father. I'd be right happy if you'd come talk later on. Perhaps I can buy you a drink or somethin', next opportunity. No pass, honest, just interested in swappin' some stories, playin' some dice, passin' the time.~ == ~C-ARANJ~ IF ~IsGabber("SK#NEHT")~ THEN ~[ARAN] I'm up for a mite o' a chat later, though, Neh'Taniel. You talk a deep set o' subjects, you do. I need most o' my mind on th' discussion if I want to keep up, eh?~ == ~C-ARANJ~ IF ~IsGabber("Skooter")~ THEN ~[ARAN] Oh, I'm right sorry, I am. Skooter, I did promise a throw or two o' that stick, didn't I. Right then, here you go... one good toss down that way. Just don't get lost, eh, m'boyo? There's critters around here what could eat *me* for a light snack, let alone you.~ == ~C-ARANJ~ IF ~IsGabber("SOLAUFEIN")~ THEN ~[ARAN] I'm not that interested in talkin' to no drow, nohow, Solaufein. You may talk a good game, but me, I got both my eyes on you. Figuratively speakin' that is. It'd be a mite messy if I done popped 'em out an' stuck em' to you.~ == ~C-ARANJ~ IF ~IsGabber("SUBRU")~ THEN ~[ARAN] Bugger all, Bruce, I told you I was tapped out clean. No coin, no trade bars, nothin'. Hells, man, here - take this flask. An' don't be drinkin' it staright in one shot, or it'll put you right over on your ares. Cut it wi' some water. Now leave me alone 'til payday!~ == ~C-ARANJ~ IF ~IsGabber("SUHESSA")~ THEN ~[ARAN] An' give me back my coinpurse, there, stickyfingers. Umberlee's Undulating Urges, Hessa, you should be lookin' for other marks, not messin' wi' my flat purse. <CHARNAME>'s holdin' all my share!~ == ~C-ARANJ~ IF ~IsGabber("t#dace")~ THEN ~[ARAN] An' don't you be goin' all 'Ducky This' an' 'Ducky That' wi', me, Linton. You're a right fine woman, but I figure you're a mite too streetwise to come roll in th' hay wi' th' like o' me.~ == ~C-ARANJ~ IF ~IsGabber("TASHIA")~ THEN ~[ARAN] Now, you want me to carry that kitty cat o' yours about, I'm your man. An' I wouldn't mind a few riddles, nether, Tashia. How about when we camp, I wander on by an' we have a nice conversation, private-like. I'll brew some decent tea...~ == ~C-ARANJ~ IF ~IsGabber("TSUJATH")~ THEN ~[ARAN] Outsider an' necromancer... there's naught about you that sits right wi' me, Tsujatha. I' m tolerant for <CHARNAME>'s sake, an' that's about it. So don't look for small talk an' comeradeship here.~ == ~C-ARANJ~ IF ~IsGabber("Valen")~ THEN ~[ARAN] An' stop spookin' me like that, Valen. I stay on one side o' <CHARNAME>, you stay on th' other, an' we will be fine. But I don't rightly think we should be havin' no private conversation. I'm likely to end up bein' an appetizer, or a light pre-dinner snack.~ == ~C-ARANJ~ IF ~IsGabber("Valygar")~ THEN ~[ARAN] I'm right suprised you want to talk, anyways, Valygar. You haven't put two words together wi' me in nigh on a tenday.~ == ~C-ARANJ~ IF ~IsGabber("Viconia")~ THEN ~[ARAN] On second thought, Viconia, don't even bother. I've got naught to say to a Shar-kissed spawn o' th' Nether Planes. Bugger off an' go screw an ettin, or somethin'.~ == ~C-ARANJ~ IF ~IsGabber("WILLYB")~ THEN ~[ARAN] besides, if it s that coin I owe you, Bruce m'boy, I'm tapped out until <CHARNAME> loosens those purse strings. So don't go all 'beat your arse' this an' 'youse gonna get yours' on me, eh? Just get <CHARNAME> to drop a few coin my way, an' I'll get square wi' you.~ == ~C-ARANJ~ IF ~IsGabber("WLBRAN")~ THEN ~[ARAN] I don't want to drive you away, none, Branwen you are a fine figure o' a woman. All that 'Tempus' Shield' talk, though, it worries me a mite. I'd offer you some companionship, but I'd rather not be askin' you to heal th' parts o' my body you might cut off.~ == ~C-ARANJ~ IF ~IsGabber("WxJon")~ THEN ~[ARAN] Aye, I did check up on th' idea, Jonathan, an' you'd be a fine addition to any one o' three different Guilds. I can write up th' letters for you, if you want, but the again, what be th' hurry? Th' Guilds take a tithe, an' you are doin' right fine as an independent, watchin' <CHARNAME>'s back.~ == ~C-ARANJ~ IF ~IsGabber("xulaye")~ THEN ~[ARAN] An' by Lolth's Lengthy Legs, keep away from me, you heartless drow bitch. I'm not one o' your filthy spider-spawn males to order about, Xulaye, cover or no cover. You want somethin', you put it through <CHARNAME>, done correct on th' chain o' command.~ == ~C-ARANJ~ IF ~IsGabber("YASRAENA")~ THEN ~[ARAN] I don't have naught to say to you nohow, Yasraena. You seem to be backin' <CHARNAME>, an' I see why. But the only good drow is... well, I'm not so sure I should finish that statement. Just stay where I can watch you, an' don't try to talk me up, an' I won't cause you no trouble. ~ == ~C-ARANJ~ IF ~IsGabber("Yoshimo")~ THEN ~[ARAN] Tell you what, Yoshimo - we'll talk next time we camp. I want to try that card game again. I don't rightly know how you won all five hands, an' I want a chance to make some o' those wages back. ~ == ~C-ARANJ~ IF ~IsGabber("ZAIYA")~ THEN ~[ARAN] Now, don't you be gettin' mad, there, Zaiya. I'm right interested in what you have to say. An' you are a right fine lookin' lassie, too, though sometimes it be dangerous to be around one o' those 'surges' o' yours...~ == ~C-ARANJ~ IF ~IsGabber("Z_MODDY")~ THEN ~[ARAN] Now then, miss foxy lass, I don't have no problems wi' talkin' to you, but now is not rightly th' time. Come by at dinner, Moddy, an' we'll share a bit o' talk, eh? Or better yet, a nice brace 'o rabbits.~ == ~C-ARANJ~ IF ~!IsGabber("ADANGEL") !IsGabber("K#SHEENA") !IsGabber("Aerie") !IsGabber("Anishai") !IsGabber("Anomen") !IsGabber("Azure") !IsGabber("B!Gavin") !IsGabber("b!haldamir") !IsGabber("BIDDE") !IsGabber("Britt") !IsGabber("BWTOUCHX") !IsGabber("CALLISTO") !IsGabber("Cernd") !IsGabber("CHLOE") !IsGabber("CMALORA") !IsGabber("CMGMIRIAM") !IsGabber("CMNIKITA") !IsGabber("CMNINAF") !IsGabber("CORAN") !IsGabber("D#Silver") !IsGabber("D0Alassa") !IsGabber("t#dace") !IsGabber("DL#BWN") !IsGabber("DYNAHEIR") !IsGabber("E3Fade") !IsGabber("Edwin") !IsGabber("FHLAND") !IsGabber("FHLSEB") !IsGabber("FINIREN") !IsGabber("FWGhareth") !IsGabber("G#CASS") !IsGabber("GOZALOTH") !IsGabber("HaerDalis") !IsGabber("Horace") !IsGabber("Hubelpot") !IsGabber("Imoen2") !IsGabber("IYLOS") !IsGabber("J#Kelsey") !IsGabber("Jaheira") !IsGabber("Jan") !IsGabber("JCBruce") !IsGabber("Kari") !IsGabber("K#Auren") !IsGabber("K#Bana") !IsGabber("K#Sarah") !IsGabber("KACHIKO") !IsGabber("Keldorn") !IsGabber("Keto") !IsGabber("KIARA") !IsGabber("KINDREK") !IsGabber("Kiyone") !IsGabber("Korgan") !IsGabber("Kova") !IsGabber("LRIRENIC") !IsGabber("M#AMBER") !IsGabber("Mazzy") !IsGabber("Minsc") !IsGabber("MTS#Shy") !IsGabber("MWAriena") !IsGabber("MWKido") !IsGabber("Nalia") !IsGabber("NATH") !IsGabber("Ninde") !IsGabber("O#TIAX") !IsGabber("O#XAN") !IsGabber("P#DEHER") !IsGabber("P#KIVAN") !IsGabber("R#ALLIS") !IsGabber("R#Kitanya") !IsGabber("Rylorn") !IsGabber("SAERILETH") !IsGabber("SDNPC") !IsGabber("SIME") !IsGabber("SK#NEHT") !IsGabber("Skooter") !IsGabber("SOLAUFEIN") !IsGabber("SUBRU") !IsGabber("SUHESSA") !IsGabber("TASHIA") !IsGabber("TSUJATH") !IsGabber("Valen") !IsGabber("Valygar") !IsGabber("Viconia") !IsGabber("WxJon") !IsGabber("WILLYB") !IsGabber("WLBRAN") !IsGabber("Xulaye") !IsGabber("YASRAENA") !IsGabber("Yoshimo") !IsGabber("Z_MODDY") !IsGabber("ZAIYA")~ THEN ~[ARAN] No offence, <GABBER>, I just don't rightly have much to say to you right now.~ EXIT Please feel free to add suggestions! In Progress Notes: /* Missing Stivan, SBS (Sandra), Therrin, Vanim, Wikaede, Mulgore & Xavia (BGT Indira, some of the Tutu NPC mods that might be CLUA'd into a BGT game) */ /* LEFT OFF ON PURPOSE: Taim, updated by MTS. No dialog, no assignments - silent NPC. */ /* Siefer's Horace is only available through PM/private distribution, and needs minor editing of .d for modern installs. May need permissions to update it and put it back in operation. */ /* Bananna included, but just for fun! [ARAN] Why are bananas never lonely? [bANANNA] Because they hang around in bunches. [ARAN] I done figured it was on account o' they make a right fine snack, so they don't have much time this run on th' Great Wheel. [bANANNA] You are a sick, sick man. [ARAN] I heard down on th' south continent, they 're not goin' to grow bananas no longer. [bANANNA] Really? Why not? That sounds like Banannacide. [ARAN] I heard they was long enough already. [bANANNA] I knew this was an adult mod, but that is a little gauche, don't you think? [ARAN] Hey, Bananna, what's we supposed to do if we see you go all blue? [bANANNA] Try to cheer me up, of course. [ARAN] Hey, Bananna, what would you call two banana skins? [bANANNA] Well, besides murder and vivisaction, I don't know. [ARAN] A pair o' slippers, o' course... [bANANA] Let me guess... you teach 10 year olds, don't you? [ARAN] Hey, Bananna, why is a banana peel on the sidewalk like music? [bANANA] You really have a thing for clobbering fruit, don't you? [ARAN] On account o' if you don't C sharp, you'll B flat. [bANANA] By Chiquita, Dole, and all the other Great Bananna Gods, get this man away from me! [bANANA] Hey, Aran... eat me. [ARAN] Well now, if that be an invitation... [bANANA] Hey, stop grinning like that! This isn't the Square Mod. [ARAN] Hey, Bannana, Knock knock! [bANANA] Who's there? [ARAN] Banana. [bANANA] Yes? [ARAN] No, that's who's there. [bANANA] That's not there, or No's not there? [ARAN] Bloody hells, that's what you get when you go tryin' to talk to a bananna. [ARAN] Hey, Bannana, let's try this again. Knock knock! [bANANA] Who's there? [ARAN] Banana. [bANANA] Banana who? [ARAN] Knock Knock. [bANANA] Who's there? [ARAN] Banana. [bANANA] Banana who? [ARAN] Knock Knock. [bANANA] Who's there? [ARAN] Orange. [bANANA] Hey, leave my sister out of this. [ARAN] Bloody hells, another blighted joke smashed to a pulp. [bANANA] No need to get violent there, big boy. */ /* Skooter included, but not on NPC tutorial index for pdialog.2da. Note to self - Check with Ace - I can see a whole ton of fun dialog now. [ARAN] Chauntea take that dog, he done tripped me three times today already. Right, then, laddie, waht do you want? [sKOOTER] THUD. *pant* *pant* *pant* *pant* *pant* [ARAN] OK. Now I see. Droppin' th' stick on my foot done made it clear. You are a bloody strong dog, eh? I'll toss it, then go get my foot bandaged. [sKOOTER] *wag* *wag* [ARAN] And a good wind up... go get it! [sKOOTER] (Zzzzing...) [ARAN] Hey, where did my jerky go? [sKOOTER] wmbmbmwmbb [ARAN] SKOOTER! Hey, leave that be, m'boyo - get your doggie teeth outta my sna... bloody hells, too late. [sKOOTER] *sniff* *sniff* [ARAN] Oi, there, laddie - get that long nose back where it do belong. You get any more treats, I'll be carryin you while you moan an' complain from overindulgin' ! */ NPC tutorial index for pdialog.2da Dace Linton [T#DACE T#DACEP T#DACEJ T#DACED T#DAC25P T#DAC25J T#DAC25D T#DAC25 BT#DACE BT#DAC25] Bananna (short joke joinable) [K#Bana K#BanaP K#BanaJ K#BanaD K#Ban25P K#Ban25J K#Ban25D K#Bana25 K#BanaB K#Ban25B] Horace (Siefer) [Horace HoraceP HoraceJ HoraceD Horc25P Horc25J Horc25D Horc25 BHorace BHorc25] Sheena (Red Night)[K#SHEENA SHEENAP SHEENAJ SHEENAD SHEENA25P SHEENA25J SHEENA25D SHEENA25 BSHEENA BSHEENA25] Taim (Major Tom Sawyer) [ silent, no dialog assignments made at all] Ninde (Diva) [NINDE LK#NINDP LK#NINDJ LK#NIND LK#NI25P LK#NI25J LK#NI25D LK#NI25 BLK#NIND BLK#NI25]