Jump to content

DavidW

Gibberlings
  • Posts

    7,853
  • Joined

  • Last visited

Posts posted by DavidW

  1. OK, reproduced (and identified) on Caedwyr's copy of mxsplbrd.2da.

    Here's what's going on: I'm not sure I'd call that file malformed, exactly, but it's got a very odd feature: the eighth-level spell column is entirely zeros. That confuses SCS when it reads in the bard spells: it does a column count on mxbrdspl.2da and concludes that bards have spells up to level 8, and so it assumes that spell_level_to_caster_level("bard"  "8") ought to be set to something (the level at which bards get level 8 spells) but then when it goes through the file, it never actually discovers any such level, and so the variable remains unset. Then it chokes when it tries to use that variable.

    I can, and probably should, guard against that in SCS's macro. That said, it probably also points to some oddity in one of Caedwyr's mods, or in the way they're interacting: I may be missing something, but I can't think of a good reason to add an 8th-level column to a spell list but have it entirely blank.

  2. @MachoGrande

    You may be misunderstanding SCS's goal. It's not intended as a systematic rebalancing of the game (if you want that, try a mod like Spell Revisions, which does have that aim). It's an attempt at intelligent AI within basically the core rules - "basically", because I tweak the core rules in fairly-small places to deal with situations that were getting in the way of writing interesting AI. (The lack of a good counter to Improved Invisibility + SI:Divination is the first and best example).

    Against that backdrop, I found (in playtesting) that Inquisitor dispel magic got in the way of interesting encounters: it was too systematically effective an attack relative to other things that were going on. I also found it a bit thematically excessive: a 12th-level character automatically dispelling an archmage's defenses. Hence the component. But it's not an example of a tweak that my AI assumes or needs, which is why (contra claims in your other post) it's optional. If your assessment differs from mine, don't use it. (There's a reason that I didn't wrap that component into the install-by-default tweaks when I released SCS v32.)

    As for giving wizards sequencers as innate, it's mostly a convenience tweak: it reduces the inconvenience of having to repeatedly rearrange your spellbook to relearn sequencers. (And 'inconvenience' is the right description, because for the most part the game imposes only minor constraints on your ability to rest as much as you like.) It's not intended to affect the actual class power. I appreciate that it boosts sorcerers; my own intuition is that it does so in an interesting rather than annoying way but I don't have first-hand experience with a sorcerer party member so I may be misjudging. Again, if you don't agree with my assessment, don't install: once again, it's not something the AI presumes and so it's an optional component, not installed by default.

    @Ront: My own view on comparative power levels (at least in party-based BG2) is that asking whether mages are the most powerful character is like asking whether artillery units are the most powerful units in an army battalion. In both cases, the point is that you have a collection of different units with different skills that complement each other. (In pen-and-paper D&D I think it depends a lot on how much you optimize and use edge-case rule advantages - my own, fairly low-optimization campaigns don't tend to end up with wizards outclassing others.)

    @polytopeThose are all defensible tweaks but I don't think any are actually required to make SCS work. (I do voluntarily refrain from putting multiple ADHW into a CC.)

    As for warrior HLAs: SCS uses the in-game power levels to determine who gets HLAs, and then filters it. So you have to have 3 million XP to get HLAs, no matter what. There are quite a lot of wizards in SoA who have 3M XP, but very few fighters; that's why you basically don't see fighter HLAs in SoA.

    (Buried in there is a deeper issue: why, in Bioware's original designn, are the mages in SoA higher level than the non-spellcasters? I think it's partly thematic (Amn is intentionally being portrayed as a high-magic setting, even if that's a bit thematically in tension with the PnP description) but mostly I suspect it's because the original game's mage AI is very weak, so that a mage badly underperforms against a fighter of the same level. So they upped mage levels as a brute-force fix. SCS comes along and gives mages AI more commensurate with their abilities, and now it really shows that they're so high level. By this stage I think this is part of the flavor of the game, but of course SCS does have an ini option to lower mage levels if you want to use it.)

  3. @MachoGrande

    1) "SCS plays fair" means that the rules for enemy spellcasters basically conform to the rules for PC spellcasters. It doesn't mean that enemies who are higher level than you don't get an advantage from being higher level. & SCS doesn't make them higher level for the most part: that's just how the basic game works.

    2) Most of the feedback I get from players is that Firkraag is if anything a bit too easy. If you need to reload fifty times, you're doing it wrong.

    3) If an enemy lowers your defenses, try putting them back up again. You're not required to restrict buffing to the pre-battle phase, and they don't have infinitely many dispel magics (and each round when they're casting dispel magic is a round when they're not casting something else.)

    4) While mostly this is just opinion and taste, this claim isn't true:

    5 hours ago, MachoGrande said:

    but [SCS] now has the inquisitor dispel magic buff enabled by default.  ... SCS guy nerf the shits out of the Inquisitor class without giving anything back, and doesn't tell you that.

    It's not enabled by default. It's where it always has been: as its own component. The description of that component is completely clear as to what it does, both in the readme and in the description the WEIDU installer gives you. I assume you either used some third-party installer that preselects components, or weren't paying attention at that point in the install process?

    @subtledoctor

    Firkraag (and other large creatures) don't use globes of invulnerability for aesthetic reasons: the globe animation looks silly overlaid on a large sprite.

  4. 3 hours ago, subtledoctor said:

    I’ve seen that error before, but I cannot recall when/why... :(

    It’s probably RR, though. It adds 8th-level slots to the table. TnB/MnG alter entries in the table, but that’s all. I have S&S, TnB, and MnG installed with SCS v33 right now, and no error. RR is the odd one out. 

    I think there must be something malformed - or odd, at any rate - about RR's version of the table. SCS doesn't hardcode the highest level of bard spells, it reads it from the file, so it shouldn't be upset just because the highest level has gone up.

    Caedwyr: do you still have your install in place and if so can you post mxsplbrd.2da?

  5. 2 hours ago, Jarno Mikkola said:

    This is an error in SCS's code, as it doesn't specify that a function should not be used as it's not defined. As if you fix this for level 8, there's likely going to be the same problem for level 9. This is cause the SCS likely has the original defined as %spell_level_to_caster_level_bard_"x"% ... so, it's just a result of lazy coding.

    As usual, people should ignore Jarno, who hasn’t the faintest idea what he’s talking about in 90% of situations.

  6. You can iterate through the items in the store fairly easily... but to be honest, in most circumstances you might as well just use FILE_CONTAINS to see if the resource name for the item occurs inside the store file. Unless your item has a weirdly short name, so that other item names contain it, or unless its name coincides with the name of a rumor dialog or a healing spell, that will be reliable. (And those are exceptionally weird edge cases.)

    That said, if all you want to do is remove it from whatever store it occurs in (and you don't care which store it actually does occur in), you might as well just use REMOVE_STORE_ITEM on every store. Unless I'm mistaken (it's been known), REMOVE_STORE_ITEM doesn't care if the item wasn't there to begin with.

     

  7. Agreed: if you're not using "HLAs are innate" then mages can be a bit sorcerer-y with their 9th level spell slots (likewise priests and 7th-level slots). I can't really see a way around that: it's the price I pay for making HLAs tied into the difficulty slider while still supporting people who don't want innate HLAs. I'm hoping it's not too noticeable in game.

    Possibly I should be toning down use of Dark Planetars. The problem is that there just aren't that many HLAs - the offensive ones are just Dragon's Breath, Comet, Planetar, really - and I don't want to use more than one of each. If you want to tweak it yourself, the files are in stratagems/mage/hla/vanilla and ought to be human-readable.

  8. I certainly have to look things up in SFO a lot. I think the main advantages in simple edits like the one Luke gives are that code is basically self-documenting and, more importantly, that errors tend to produce install-time failures rather than silent bugs. If you throw SFO this code:

    LAF edit_creature 
    	STR_VAR creature = "bandit"
    			editstring = "xpv=>1400"
    END

    then the code will refuse to install (it'll throw a 'function CRE_xpv does not exist' error or similar). If you do this:

    COPY_EXISTING "bandit.cre"
    	WRITE_LONG 0x16 1400

    then WEIDU will install fine and the code looks indistinguishable from the correct code on casual examination, but the file will be changed incorrectly.

    To be fair, you can get a lot of that advantage through using NAME and the like in baseline WEIDU.

  9. 5 hours ago, polytope said:

    What I will try for my own game is not to install the HLA component, but instead copy the references from the HLA choice 2DAs to the spell choice 2DAs.

    I'm not completely sure I understand. There isn't a separate spellcasters-get-HLAs component any more: it's integrated into Smarter Mages/Priests. (But in any case I think you're trying to solve a problem that doesn't exist - see earlier post.)

  10. 7 hours ago, polytope said:

    Most mages of level 18+ have far too many 9th level spells, up to 8 for a 25th level lich. I suspect the HLA for mages component assumes "Treat mages' and priests' High-Level Abilities as innate abilities rather than memorisable spells" is installed.

    That's intentional, but shouldn't be visible in-game (except in the rare cases where you manage to charm or dominate a high-level spellcaster). If you're not using HLAs as innate, I keep track of total 9th-level spells cast via a variable; assuming it's working correctly, and it was last time I checked, high-level wizards won't exceed their legal slots.

    As you correctly surmised, it's to allow for on-the-fly shifts in difficulty: every L18 wizard needs HLAs, because the difficulty setting might be set to maximum.

    Tactically it makes sense for demiliches to use Imprisonment, since I give a saving throw vs. their Trap the Soul. Thematically I agree it's weird, though: I'll probably change it.

    I'll check the other things. (I'm a bit surprised by the double-damage thing, that should be a very simple ToBEx setting. But I don't do playtesting much on classic any more, so I could easily have missed a bug there.)

  11. At the technical level I think I agree with subtledoctor: while in EE you can more-or-less simulate a Dexterity check, the complexity* is out of all proportion to the advantage and you'd do better just using a save vs. breath weapon. (As an additional issue, the game's allocation of Dexterity scores to enemy NPCs is unreliable: they're often just given 10 and some ad hoc AC and attack bonuses.)

    * my immediate thought as to how to do it is to do 20 different opcode-318 checks, each with a 5% chance of occurring, each keyed to the target's Dex being above a certain value, with that value varying from check to check. Ugh.

     

  12. On (2), I didn't mean anything very deep. Just that lots of things that aren't spells from an in-world perspective (like dragon breath, or nonmagical traps, or psionic attacks) are created by 'SPL' files. (And conversely, occasional things that are spells in-game, like Irenicus's sleep effect in Spellhold, aren't created by SPL files).

    On (3), AD&D 2nd edition used ability checks (roll d20, try to get your ability score or under) from time to time. It even occasionally supported using them in lieu of saving throws (see, e.g., AD&D 2nd edition Player's Handbook, p.101: 'ability checks as saving throws'.) And high Dexterity doesn't generally improve your agility-based saving throws. D&D 3rd edition more systematically lets ability scores affect saving throws, but still sharply distinguishes ability checks (roll d20, add your ability modifier) from saving throws (roll d20, add your save modifier) - a Reflex save, for instance, includes your Dexterity modifier but also includes the effect from a cloak of resistance, a Haste spell, and your base saving throw modifier, and so usually is going to generate a rather higher number. It's not until 4th or 5th edition that the distinction gets dropped and we just have the idea of a Dexterity save.

    As for Xd3+Xd3, of course I agree that it still works in EE. But you said something stronger: that save-for-half effects 'almost never' just do Xd6, they use the Xd3 + Xd3 trick instead. That's not true in EE: if you look at spwi304, it uses the save-for-half flag. (Actually, even in the original engine,  it's normally (X/2)d6 + (X/2)d6, I think - same average, different variance.)

  13. On the original bug: see Nathan82's thread for details, but it originates in a bug in the Dark Side of the Sword Coast's priest-spells component. That bug in turn confuses SCS and generates the problem. The simplest workaround is to uninstall that component of DSotSC. Since that's at the very beginning of your mod install order, you might instead want to insert this line into another mod's tp2 (SCS, or one that installs before SCS) if you know how:

    STRING_SET 34735 "Selune's Blessing"

    Alternately, use Near Infinity to set string 34735 to 'Selune's Blessing'. 

  14. Got it. It's a straight incompatibility between SCS and the 'DSotSC priest spells' component of DSotSC; no other mods needed. (And it breaks pretty much all anti-magic spells, not just breach.)

    Here's what's going on, for anyone curious. SCS dynamically collects a list of all player-usable spells that Breach can dispel. It assumes that the existing description for Breach contains a possibly-incomplete list of those spells. The name of each spell is replaced in the description text by 'DW_PLACEHOLDER'. The comma-separated sequence of DW_PLACEHOLDERs is then compressed into a single DW_PLACEHOLDER. And finally, that DW_PLACEHOLDER is replaced by the newly-generated list of all the spells Breach actually takes down. It's obviously not resilient against arbitrary changes of Breach's description, but it works for Breach as presented in the original game, in the Enhanced Edition, and in SR.

    DSotSC introduces a new protective spell, Selune's Blessing, that is taken down by Breach. BUT it doesn't give that spell a name: instead it hardcodes the 'name' field of the spell to '34735'. I don't know why, as that string isn't 'Selune's Blessing', or anything similar, on any of the IE games. (The string 'Selune's Blessing' appears only in IWD2, and in a different slot). So this is a bug in DSotSC: the spell is misnamed.

    Unfortunately, on BG2 (and so on BG2EE, BGT, and EET) string 34735 is blank. And that means SCS's name-substitution goes mad: it replaces every blank space in the spell description with DW_PLACEHOLDER. Contraction of that mess down to one DW_PLACEHOLDER fails, and so hundreds of DW_PLACEHOLDERs get replaced with the whole 'spells affected include' string.

    So: on the one hand, this is caused by the DSotSC bug: if the spell were named properly, things would work fine. On the other hand, I should have learned by now to write code that is more robust against things being broken by other mods: it was rash to do a substitution on an unknown string without checking it was sensible.

    I'll fix this next time I release SCS (and since this is a critical bug, albeit only on a specific mod combination, I'll try to do so relatively soon - this weekend, maybe). In the meantime, the simplest workaround is just not to install that component of DSotSC. If you really want it, put the line

    STRING_SET 34735 "Selune's Blessing"

    into the tp2 of DSotSC before installing.

    Thanks to Bartimaeus and Nathan82 for help diagnosing it.

     

×
×
  • Create New...