Jump to content

jmerry

Modders
  • Posts

    1,284
  • Joined

  • Last visited

Posts posted by jmerry

  1. Probably that, yes. In the vanilla game, SarevokBehavior is used in quite a few places to track the progress of the endgame plot. Values range from 0 to 4; 0 before the ducal palace, 1 after Sarevok flees the palace, 3 for the various loss conditions in the palace fight, 4 for when he personally attacks in the palace, 2 for the final battle.

    Obviously, a mod that tinkers with how the BG1 endgame works has to tweak these things. And I'm not familiar with the details - I don't use the mod, or even play EET - so any more is a matter for Transitions support. 

  2. So, the way that's all scripted ...

    The initial state of the area has lots of people. When you enter the area in chapter 7, nearly everyone despawns and some new "Rogue" characters spawn in at the entrances to tell you about it.

    Then, post-palace, there's this block:

    IF
    	Global("DukeThanks","GLOBAL",1)
    	!Exists("DENKOD")  // Denkod
    	!Dead("DENKOD")  // Denkod
    	!Dead("blacklily")  // Black Lily
    THEN
    	RESPONSE #100
    		CreateCreature("DENKOD",[881.430],S)  // Denkod
    		TriggerActivation("Door0146",TRUE)
    END

    And a slightly different version if Black Lily is dead - activate the way down, but don't spawn Denkod.

    IF
    	Global("DukeThanks","GLOBAL",1)
    	Dead("blacklily")  // Black Lily
    	!Global("dw#thiefdoor","MYAREA",1)
    THEN
    	RESPONSE #100
    		TriggerActivation("Door0146",TRUE)
    		SetGlobal("dw#thiefdoor","MYAREA",1)
    		EraseJournalEntry(31472)  // The Hunt for Sarevok Sarevok's plans have been shattered, but he has escaped to the Thieves' Guild. I must pursue him there and end his crusade of terror once and for all. If I do not, he will most likely return to strike at me in the future, perhaps when I am not prepared. The Grand Dukes can transport me to the Thieves' Guild instantaneously, so I must make haste.
    		AddJournalEntry(31473,QUEST)  // The Maze Sarevok has fled the Thieves' Guild and has escaped into a maze. The maze leads to the Undercity, an old settlement that once stood where Baldur's Gate is now. It appears he intends to make his final stand there.
    END

    These blocks are in the area script AR0153.BCS, which becomes BG0153.BCS with EET. The "DukeThanks" variable is set by the dukes' dialogue, before you get teleported over.

    So, troubleshooting. First, what's the state of the DukeThanks global variable? If it's not set to 1, it should be - and every time you run through that dialogue it gets set again. Second, if the variable is set, there's likely something wrong with the area script for the thieves' hideout - some block earlier in the script is broken and preempts the block that opens the door, every time the script runs. If you put up a copy of that file (it should be in your override, as BG0153.BCS), we might be able to spot what happened.

  3. I don't see any special treatment for Deril or the lich, so it's probably still in play.

    Basic setup for the Deril encounter: Conversations lead to cutscene (CUT87A) which spawns Deril (CEDERIL). Conversation with Deril has three possible outcomes:

    - Abandon Cernd. Deril kills him in a cutscene.

    - Fight with Cernd. Deril goes hostile and Lagole Gon (CELICH) spawns in holding the baby. Lagole Gon is neutral until attacked, and hands over the baby once Deril dies if you don't provoke him. Deril calls for help from Lagole at half health, but doesn't get it. This conversation improperly exits if Lagole is dead. It also happens even if you've already provoked Lagole; the lich refuses to help Deril even if he's already fighting on his side.

    - Later. Deril hands over the baby and promises to come back in a few days (CEDELICH) but never does.

    ... Actually, the potential special treatment here? If the lich could put up some of his prebuffs like the long-duration energy protections while he's still neutral, that would mostly eliminate this issue. After all, Lagole is level 29, and a buffed lich with enough levels always has immunity to fire/cold/acid/electric/magic/poison damage. Which lasts several in-game hours unless dispelled.

  4. Not new, not restricted to high difficulties. Unless this is a case of a fix not quite working, that is. The generic mage AI is perfectly willing to use indiscriminate attacks and any attack on the INNOCENT soldiers by a non-enemy is treated as a terrible crime that the PCs must be responsible for.

    The creatures involved here are TRGRD01 (soldiers) and TRGRD02 (mage), and the problem is most likely to manifest when that mage rolls the Invoker kit.

    I think the fix for this is an entry in mage/override/bg2/variable.2da. Set the appropriate variables, and this mage will no longer use indiscriminate attack spells that hurt his allies.

  5. Mods intended for one game in the series generally won't allow you to install you on the other - at least, if they're well-made. And even if they did, the item wouldn't be inserted into the new campaign for you to find.

    Now, two of the transitions aren't a big deal. The BG1 and SoD campaigns are in the same program, and the game simply continues to the new campaign with your party keeping their inventory. Same with SoA to ToB. So yes, you can carry equipment through those transitions with no problem.

    Going from BGEE to BG2EE - now, that's harder. It's a separate program so the item files won't be there, and even if they were the descriptions would be scrambled due to different string indexing. In addition, SoA starts by removing all of your characters' equipment (in part, because nonexistent items would break things). So there, you'd need a special mod component to add the items including their descriptions and insert them into a BG2EE campaign. Which ... either the original mod-maker provided such a component, or they didn't.

  6. That creature is TOLMAG02. Unlike Tolgerias himself, she's already an enemy. Nothing unusual I can spot in the base creature, just a generic mage with a generic mage combat script. Though the unused TOLMAG01 has a unique property that probably wouldn't play well with SCS - he has three generic mage combat scripts.

    Umm ... is the mage you're seeing this behavior from a female elf? Just to check that it's the standard option and nothing swapped her out for the weirdly broken one...

  7. There's lots of variation, for several reasons.

    First, spellcasters just come at different levels. Here are the levels of the enemies you mentioned (with all applicable SCS components, in the cases it matters):

    Neira: Level 5 cleric.

    Bassilus: Level 10 cleric (level 12 in older versions).

    Narcillicus: Level 7 mage.

    Kahrk: Level 12 mage.

    Obviously, higher-level spellcasters have more buffs.

    Second, spell choices include a random element, which will vary from installation to installation. For example, a level 12 evil cleric using the vanilla spell system has a 1/3 chance of Blade Barrier, a 1/3 chance of Physical Mirror, and a 1/3 chance of an offensive level 6 spell - which will be either Heal, Harm, or Aerial Servant with equal probabilities. Mage kits are also largely random and have an impact here; a necromancer won't get the low-level illusions that most mages buff with, for example.

    Third, difficulty level heavily impacts how much of a spellcaster's buffs are precast. As difficulty rises, spells with shorter durations are added to the list.

  8. 4 hours ago, DumbTheBad said:

    1) I played as a Deep gnome Magetracker, and was able to use mage scrolls from the get go. Coran was also able to use mage scrolls, but Alora was not, so I wonder if it's specific to F/T?  

    So the thing about the item usability system is that it's entirely subtractive, and it works on one attribute at a time. So if there's some sort of fighter/thief that can use scrolls, you need to do some tricky things to prevent unkitted fighter/thieves from using them. And here, Coran presents a special wrinkle. Because unlike a player-created character that has the 0x4000 (TRUECLASS or MAGESCHOOL_GENERALIST) kit, he has the null kit 0x0000. That isn't a valid kit for either a fighter or a thief, so the game uses the trueclass tables for everything ... but it's still not the same, and might be missed by whatever tricks are being used here.

    (Several other BG1 NPCs, along with Imoen in all games of the series, also have these null kits. As do multitudes of characters that can't join the party, but it doesn't matter for them.)

  9. It should be noted that the EE description for the sword includes the line "Each successful hit casts Larloch's Minor Drain on the target (no save)". What does non-EE BG2+ToB say there?

    And the EE version of the spell uses opcode 12, just with flags to make the damage grant equal temporary HP to the wielder (which was bugged before patch 2.6, but now works fully as intended). I suppose that with an opcode 12/18 combination, there wasn't any way to couple variable damage and variable healing so they were always equal?

  10. So Foebane +5 casts LMD, straight up. Actually the secondary spell of the innate version of LMD, but that mostly amounts to the same thing (except for the "don't hit certain enemies" filter, which is a bug in the base game to be addressed by the EE Fixpack).

    Looking at the spell tweaks ... LMD is tweaked to be dependent on caster level, scaling from 1d4 at level 1 to 5d4 at level 10+. And this is applied to both the innate version (most often seen as a Bhaalspawn ability) and the mage version. Sensible, so far. But now we put it as an on-hit ability of a sword, delivered several times per round... yeah, that's trouble for anything that stacks with itself, like damage.

    It seems that the cleanest thing to do here would be to tweak Foebane to always cast the spell at level 1. Which is doable in the EE, by setting parameter 2 of the op146 effect to 2 instead of its current 1. But not in non-EE games; for them, nerfing the sword would require creating a new non-scaling version of LMD.

  11. No. It was not any mod that put the items in the container. The game I look at when I talk about these things is unmodified BGEE. The "in development" stage I'm talking about is the original development of BG1 25 years ago. By the time the game came out, the items were in the container and Centeol wasn't actually carrying them. And that has been the situation ever since.

  12. This should be what you're looking for: STATE_WHICH_SAYS.

    Quote
    STATE_WHICH_SAYS text FROMString String must be an in-game or in-override .dlg file. Returns:
    1. Fails the installation if it can’t evaluate the text (an @x reference out of bounds)
    2. -3 if the text is not currently in the tlk or in the list of strings to add
    3. -2 if the text is spoken (= SAY ~Foo~) at least twice in the file String
    4. -1 if the text is never spoken in the file String
    Otherwise it returns the number of the state in which text is spoken in the file String. @x references are taken from the loaded TRA files (the ones defined in the Language part).

     

  13. Or should we drop the part about removing everything of the illusion school, and just aim for the sectype instead? Let's see, categorizing illusion school spells ... 33 exist in unmodded BGEE with SoD:

    Illusionary protections with the sectype: bddisplc, bddispb2 (Displacer Beast defenses), bdfractl (Fractal Blade mirror image), bdnighte (The Night's Embrace invisibility), OHWI212 (clone of Mirror Image), SPDM102 (DM Monk Blur), SPDM106 (DM Monk Mirror Image), SPDR401 (Avenger Improved Invisibility), SPIN118 (Quayle Invisibility), SPIN544 (Psionic Improved Invisibility), SPIN687 ("Create Shadows", an invisibility spell unused in BGEE), SPIN697 and SPIN698 (Mirror Image and Improved Invisibility for the Moon Dog), SPWI120 (Reflected Image), SPWI201 (Blur), SPWI206 (Invisibility), SPWI212 (Mirror Image), SPWI405 (Improved Invisibility), SPWI721 (Mass Invisibility), SPWI607 (Mislead), SPWI703 (Project Image), SPWI804 (Simulacrum)

    Debuffs without the sectype: SPDM101 (DM Monk Blindness), SPIN952 (Phantasmal Killer. Not really a debuff, but it relies on delayed effects so it can be removed before it goes off), SPPR704 (Nature's Beauty), SPWI106 (Blindness), SPWI125 (Spook), SPWI223 (Deafness), SPWM178 (wild surge blindness)

    Buffs without the sectype: SPPR516 (Pixie Dust), SPWI307 (Invisibility 10'), SPWI315 (Wraithform), SPWI505 (Shadow Door)

    Uh-huh. I think it makes more sense to give the ILLUSIONARYPROTECTIONS sectype to spells like Pixie Dust and Invisibility 10', but take out the school-removing ability of True Sight/Seeing.

  14. On 3/20/2024 at 8:11 AM, Graion Dilach said:

    Vanilla Centeol has all those items in fact and they exist outside her inventory...

    So it looks like what happened is that in some point in development Centeol genuinely had those items, but then the container was created, the items were placed there, and the "this slot has this item" markers were removed from her without deleting the "here's an item this creature could have somewhere" references. Interesting. I was only looking at the screen for inventory and equipped items when I made my earlier comment, so I didn't see that.

  15. So, is there any conceivable reason that, if you removed Bentley and had some later event bring him back, it would matter that it's that particular version of Bentley and not a newly created one? Stores are always global, by the way - it's just stuff like personal inventory and local variables that would care about a particular instance of an NPC.

    I'd conceptualize DestroySelf(), like EscapeArea(), as "send to nowhere". Global creatures can be recalled back from that nowhere with the MoveGlobal() action, while non-global creatures can't because any reference to their script name only "looks" in the current area.

  16. The dream cutscene (CUT69A through CUT69D) uses CreateCreatureCopyPoint, so that's an actual clone of player 1. That action also assigns a script name, which is used to control the creature in the remainder of the dream.

    Note that creating a clone strips scripts from the clone; if you want your clone to do stuff, you need an outside impetus.

  17. Vanilla Centeol has absolutely no items, and the only condition on her dialogue is the charmed option. These mods could not possibly be causing the problem on their own.

    What I suspect happened:

    - Another mod moved the contents of the nearby container to Centeol's inventory.

    - Those contents include the cursed "Discipliner" ring.

    - This mod caused her to equip that ring. In addition to the INT and WIS penalties in the description, the ring inflicts a Feeblemind state which prevents conversation.

    - Since her dialogue is what normally turns her hostile and summons additional spiders, that didn't happen.

     

    There's not much that can be done about other mods putting stuff in creatures' inventory; that's the whole point of the "Bag of Spilling" component. However, if you're going to go equip random stuff in inventories, how about a check for the "cursed" flag? Basically, don't blindly equip cursed items.

  18. Applying the change starting at level 1 was based on the drow enemies seen in BG2; the scaling you had is exactly the formula that most of them use. Including that they go up to 90% - there are some level 20 drow in Sendai's enclave with 90% MR.

    As for the mechanics of things ... here are what the spells involved do:

    - dw0 (initial): Sets base MR to zero. Applied once, when the character first joins the party.

    -dwsun (sunlight): Removes the effect of dwres. Applies the "dazzled" penalty, if you chose that option at installation.

    -dwres (resistance): Removes the effect of dwsun. Applies a MR increment appropriate to level; exact numbers depend on choices made at installation.

    Also, it is possible for characters to be out of sync; they're checked individually based on their locations, so if you have one character inside and one outside during the day, the first should have their resistance and the second should have the sunlight state.

    1 hour ago, ktchong said:

    I changed it to 50.  I loaded the edited save game.  Her MR was reset to 0 again.

    Now that? That means something weird is going on. Because the dw0 spell is the only one of the bunch that alters base MR, and it's only ever supposed to be applied once. It's all controlled by a local variable, see - 1 on the CRE file before they join, 2 in thedaylight state, 3 in the night/indoors state. My script never resets that variable to 1, and the initial zeroing spell is only ever cast at that value ... is this EEKeeper losing track of local variables again? Well, that's not something I can test - I literally can't run EEKeeper at all on my current system, because the most recent Mac version I'm aware of is a 32-bit app.

    I might have to come back to this, but not now. My attention is elsewhere at the moment.

  19. Well, that's something I'll have to look into, because I did test the drow MR component myself and didn't see anything like that. It works by flagging the characters with local variables, setting base MR to zero, and applying spells to do the day/night changes. And it looks like your problem is the light/dark scripts not working right for you. Viconia thought it was always daytime/outdoors, and Baeloth thought it was always night/indoors. The spells themselves were working exactly as expected. (Baeloth starts with archmage robes for +5 MR from equipment. Level 6 = 50+12 base, +5 equip = 67 total MR)

    Setting base MR to zero, by the way, is an essential feature of the component; it's done as soon as any of the drow characters join the party. I then use one spell to add resistance at night or indoors/underground, and a different spell to set the "dazzled" effect outdoors during the day.

    Wait. My component does the script parts by appending its blocks to the end of the global baldur.bcs script (or other global scripts for other parts of the game). If there's something earlier in the script that's always intercepting them so those blocks never run, it'll break and never update the sun/not sun status of the drow characters. Through no fault of its own, but instead some other mod breaking things.

    So that's my diagnosis: probably the fault of some other mod updating the global script with an attention-hog block that prevented this component from doing its work by always executing. After letting things through at least once to set Viconia's status to "daytime".

    What can I do on my end? Well, I did put "Continue()" in all of the blocks of my script addition; I could move it to the beginning of the script and avoid any attention hog blocks by beating them to the punch. But that only really treats this one symptom, not the underlying problem. Any other mod components that add things to the end of that global script will still fail.

  20.  

    20 minutes ago, Anterwaare said:

    That being said, 3 spells in total and you're good to go: protection from fire, chaotic commands, protection from magical energy. If the character isn't good aligned, you don't even need PfME.

    And I didn't have much trouble with the Spirit Trolls even in my run with no spellcasting at all. You see, spirit trolls have no defensive spells whatsoever. Trolls are immune to most crowd control effects so that's not an option against them, but all you have to do is put a little elemental damage on and their spells are disrupted. The Greater Commands are likely to get through because that spell casts so quickly, but you can build for excellent spell saves even pretty early in the game; my second spirit troll encounter in that no-casting run (after the first disrupted the troll's spell) had a Greater Command hit the full party and only bring down one member (Keldorn, most vulnerable at a 20% chance of failing his save).

    That party did try to focus down spirit trolls first whenever they showed up, of course. They are dangerous if you don't disrupt them.

  21. All innate abilities use the average of the class levels, for all dual-class and multiclass characters. That's pretty well known. Basically, characters have an innate caster level (that average), a divine caster level (cleric/druid/shaman level, paladin/ranger level minus whatever, or 1), and an arcane caster level (mage/sorcerer/bard level, or 1). Whatever spell you cast uses the caster level appropriate for its type. With the exception of some effects that cast a spell at a fixed level defined in the effect. So, for example, Bala's Axe has an activated ability to cast Dispel Magic. Specifically, the divine version. Which means it uses the wielder's divine caster level, which is usually pretty low unless they're a Shaman.

    Ranger/cleric casting (in the EE) is something I've tested:

    - The number of spell slots at a given spell level is whichever is larger between the cleric spell progression (including WIS bonuses) and the ranger spell progression (which doesn't include WIS bonuses).

    - All spells that a cleric can cast that aren't forbidden based on alignment are included in the spell list, if the character can cast spells of that level based on either class's progression.

    - Druid-only spells are added to the spell list only if the ranger spell progression has reached that level. (This is an EE change; pre-EE, the spells were added for all spell levels regardless of ranger level.)

    - Caster level is always the cleric level.

    So, for example, a cleric 2 -> ranger 17 with WIS 18, in the unmodded BG series, has four level 1 spell slots, three level 2 spell slots, and three level 3 spell slots. All spells from the cleric and druid lists that the character's Good alignment allows are included at those levels. And all of those spells are cast at caster level 2. Fortunately, pretty much all spells have "level 1" abilities that allow a character with a level too low to normally memorize the spell to cast it with an effect matching the lowest level it would normally be available at. So you can cast Animate Dead (for the weakest skeletons) or Holy Smite (for 5d4 damage), but your Dispel Magic and Call Lightning spells are considerably less powerful than a pure level 17 ranger's.

    I suspect that the mechanics of an early cleric -> ranger dual were never tested at all before release.

  22. Yeah. The AI-generated pictures can figure out how to replicate the style of a scientific illustration, but don't have a clue that it's meant to convey accurate information. Plus picture-generating AIs in their current form are very bad with text. So you get labels that superficially look like words but aren't real words, and often contain glyphs that aren't in any standard alphabet.

    Oh, and all of those pictures were total messes. The rat testicle illustration was just the easiest one to laugh at. (Hey, that picture managed to have one accurate label: "Rat")

×
×
  • Create New...