Jump to content

DavidW

Gibberlings
  • Posts

    7,897
  • Joined

  • Last visited

Posts posted by DavidW

  1. 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?

  2. 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.

  3. 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.

     

  4. 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.

  5. 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.

  6. 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.)

  7. 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.)

  8. 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.

     

  9. 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.)

  10. 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'. 

  11. 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.

     

  12. 1 hour ago, Jarno Mikkola said:

    1. Like said yes.

    2. No, it will be a spell that the "items user will cast". Just like every potion under the sun.

    3... The Breath Weapons saves and dex checks are the same thing, from 2nd ed to 5th ed. Ususally the breath weapons do half damage cause the other is non savable... and it's almost never a Xd6, cause it's actually Xd3+Xd3 save-able. Look for fireball(spwi304.spl).

    2: distinguish 'spell' in the engine sense from 'spell in the in-game sense.

    3: not true in either 2nd or 3rd edition. (Also, the Xd3+Xd3 thing isn't true on EE - there's a save-for-half flag instead.)

  13. The breach spell description is probably getting corrupted when SCS 5900 is installed. What I'm interested in is why. I'd very much like to see its description immediately *before* SCS 5900 is installed. Could you uninstall just 5900, then see what it is? I don't just mean 'is it corrupt?', I mean the exact description.

×
×
  • Create New...