Jump to content


  • Content Count

  • Joined

  • Last visited

Everything posted by Ardanis

  1. There was some talk during SoD's development about using this trigger for AI, but it remained just a talk. I would assume it only, if ever, returns true when path is blocked by searchmap/doors.
  2. Unless you know what you're doing, follow this template for launching cutscenes. Activation script: IF // triggers THEN RESPONSE #100 StartCutSceneMode() ClearAllActions() // optional StartCutSceneEx("#L_Cut07",TRUE) // if you need triggers within cutscene evaluated // StartCutscene("#L_Cut07") // or if you don't END Cutscene itself: IF True() THEN RESPONSE #100 CutsceneID(Player1) // actions EndCutSceneMode() END
  3. As Lauriel says, can't you instead use global vars instead of myarea for regions? Master-slave relationship isn't particularly reliable. E.g. patch this into all master regions: IF !Global("current_region","global",3300) THEN RESPONSE #100 SetGlobal("current_region","global",3300) END For reputation change use SetGlobal("change_rep","global",1). Finally, put this into baldur.bcs: IF GlobalGT("change_rep","global",0) Switch("current_region","global") THEN RESPONSE #1100 IncrementGlobal("rep_1100","global",1) IncrementGlobal("change_rep","global",-1) RESPONSE #3300 IncrementGlobal("rep_3300","global",1) IncrementGlobal("change_rep","global",-1) END IF GlobaLT("change_rep","global",0) Switch("current_region","global") THEN RESPONSE #1100 IncrementGlobal("rep_1100","global",1) IncrementGlobal("change_rep","global",1) RESPONSE #3300 IncrementGlobal("rep_3300","global",1) IncrementGlobal("change_rep","global",1) END
  4. Almost the entire dialog consists of "choose party member" states, four initial and then four per each party member if PC refuses to bet them. I'm a little rusty to give you an actually working piece, but the logic would be like: COPY_EXISTING - bdthrix.dlg override READ_LONG 0xc states x = 0 FOR (i=21; i<24; ++i) BEGIN READ_LONG states + i * 16 + 8 trans_num SET insert%i% = ( (trans_num - 1) / 4) * x x = (x<3) ? x+1 : 0 END FOR (i=30; i<85; ++i) BEGIN READ_LONG states + i * 16 + 8 trans_num SET insert%i% = ( (trans_num - 1) / 4) * x x = (x<3) ? x+1 : 0 END Then in your .d use for each state EXTEND_BOTTOM bdthrix 21 #%insert21% /* trans list */ END You'll probably need to EVAL the .d I think this may do https://weidu.org/~thebigg/README-WeiDU.html#dActionWhen Otherwise, you'd have to read the .dlg structure, similar to above.
  5. The original dialog is already twice, if not thrice, as messy, so... I'd be cautious about making it even worse. Looking at it again, I recall you can refuse Thrix his choice of a party member and have him choose again. So technically you can go with 3rd idea and append NPC at the bottom - even if two mods will conflict there, you can still write "nope, choose someone else" option to stay in line with the original, and get the previous NPC mod as a next choice.
  6. I would read the number of transitions in each state, divide it by 4, and insert mod transitions at (trans_num / 4) * (state_ind - 21) points. EDIT So basically, what you suggest in 1, it seems. As for compatibility... You might have a point, but imo it's the least evil nonetheless - because in order to break something it requires another mod to 1) try to edit vanilla transitions and 2) do it without reading data first. PPS ...and also 3) be willing to poke the awful mess that is Thrix dialog file with a ten foot pole. This dialog was the worst in the entire SoD by a huge margin, because writers wanted to have random element added. In retrospect, may we should've added small cutscene effect and move all the rng calculations in there
  7. I am - special characters need to be preceded by \, to reverse them as a part of regexp formula. A-aand it only needs to be done when matching the string COPY_EXISTING ~SHOUT.BCS~ ~override~ DECOMPILE_AND_PATCH BEGIN REPLACE_TEXTUALLY ~Heard(\[NOTEVIL\],99)~ ~Heard([NOTEVIL],99) Detect(LastHeardBy)~ REPLACE_TEXTUALLY ~Heard(\[NOTGOOD\],99)~ ~Heard([NOTGOOD],99) Detect(LastHeardBy)~ END BUT_ONLY IIRC the only regexp allowed in replacement string is \1, \2 etc. to denote a match variable: REPLACE_TEXTUALLY ~\(Heard\)~ ~True() \1~ // WeiDu will substitute \1 with whatever has been matched by the first \(\) expression, \2 - with the second etc. As you can see, in case of match expression the parenthesis and numbers get preceded by \, to mark them as regexp and not part of a string. Fun, huh?
  8. If you donate the amount equal or greater than value corresponding to the current reputation (specified in reputati.2da), then it will increase by 1 point. No means of detection that I know of. You could try appending StartStore() actions with SetGlobal() to run a check afterwards if reputation is now greater than it used to be before starting dialog.
  9. Those vars look like arguments for party AI scripts, to turn off item usage by clones. They don't affect actual item flags.
  10. Rain probability set to 100? I vaguely remembering having similar problem in SoD with BG city districts, but I don't remember the details, except it was something close to Australian shaman dance indeed... Some possibilities - try adding your area to mastarea.2da, or to the worldmap. Could have been some other file than these, but my memory stops there. Otherwise something to do with WED... I think.
  11. ADD_ITEM_HEADER https://github.com/Gibberlings3/ItemRevisions/blob/master/item_rev/lib/macros.tpa Maybe check WeiDu readme/history, I won't be surprised if it's been included, or there's a similar function.
  12. You can read info points for >0 strref and empty script field. If the former is true, create a prefix%strref% script with DisplayString() if it doesn't exist yet, and assign to the script field.
  13. Info points can function without a script, as long as they have a valid strref specified. For your purpose you'd have change strref to -1 and attach a script that would DisplayString() it instead.
  14. Unless StoreZoomlevel() & RestoreZoomLevel() work in cutscene mode (which they very well might not), I suspect that no. PSTEE is a separate branch, which is probably why it behaves differently from BG/BG2/IWD EEs.
  15. Luck parameter gone wild, by the look of it.
  16. Politics can indeed sometimes trigger hostility between users, but ultimately it depends on the forum staff, really. The general gaming Russian forum I frequent has the political subforum about as active as the rest of it combined - which makes sense btw, because the more active participants have aged by 10-20 years since they joined it, lol, - and at worst a user may get temp ban for a weekend to chill down and sober up. And come to think of it, I don't remember any animosity between users on BD forum either, despite them holding opposite views.
  17. Posting this here for historical record while I still remember contents of the post, because mods kindly deleted it. First quote is from this post https://forums.beamdog.com/discussion/comment/1133887/#Comment_1133887
  18. TriggerOverride() doesn't work on objects not present in the active area. Worse, it doesn't return false either in such cases. And *worse yet*, it will even break OR() trigger if you put it in there as workaround, unless it goes the last in the entire condition section. From SoD's BDJAHEIR.D, this is how I managed to check that Jaheira is not inside of any Flaming Fist camps, without having to put dummy ff_camp region into each and every area: IF ~IsValidForPartyDialog("khalid") OR(2) !Range("ff_camp",999) !TriggerOverride("ff_camp",IsOverMe("jaheira"))~ Changing the order of triggers would break it. Better play it safe and just add SetGlobal() to the dialog. Or, as Jastey says, patch the script to set the var.
  19. DECOMPILE_AND_PATCH BEGIN REPLACE_TEXTUALLY ~IF AttackedBy([GOODCUTOFF],DEFAULT) Allegiance(Myself,NEUTRAL)~ You need to \ the square brackets, to make WeiDU recognize them as literal characters rather than expression: DECOMPILE_AND_PATCH BEGIN REPLACE_TEXTUALLY ~IF AttackedBy(\[GOODCUTOFF\],DEFAULT) Allegiance(Myself,NEUTRAL)~
  20. Slightly more complex than adding single category - it adds them in batches, - but this func should give you some idea where your code fails (I spent too much time away from IE to figure it off the top of my head): https://github.com/Gibberlings3/ItemRevisions/blob/master/item_rev/lib/store_rev_macros.tpa#L155 And some context for it: https://github.com/Gibberlings3/ItemRevisions/blob/master/item_rev/lib/store_rev_macros.tpa#L17 https://github.com/Gibberlings3/ItemRevisions/blob/master/item_rev/components/store_revisions.tpa#L106
  21. If you teamed up with someone to work on a project and want to host on your site along with other works of yours, then yes, you describe the details of collaboration on mod's page and in its readme, but you put it under My Mods. If you're going to pick on such excuse for a blame with such prejudice, then like I said, it is nothing short of medieval witch hunt. Well, worse, actually.
  22. I think it's IE-specific. Other games I tinkered with were far more internally organized and structured.
  23. I'm just slightly concerned that we don't have a repeat of the witch hunt from couple years ago, when some people have been ranting about what a Satan incarnate Roxanne was, when in the links they provided as "proof" she's only been responding to players who asked for help. So I hope you'll forgive me for inquiring whether the Seatower case is a fact or just speculation that Amnesia told her where did he get the files.
  24. Is Roxanne even aware of the original project, to begin with? Or has she been informed of its existence, in case there were doubts? The only reason I even know about it, is because I remember a decade old thread on SHS, so if you weren't around there back then and don't check on every recently active thread now, you'd be forgiven for being ignorant.
  • Create New...