Jump to content

DavidW

Gibberlings
  • Posts

    7,853
  • Joined

  • Last visited

Everything posted by DavidW

  1. No apology needed. But I don't really mind that Kahrk can be more powerful than Sarevok (there's a very long tradition of optional bosses being tougher than the main boss) and if I did, I'd probably respond by nerfing Kahrk. Consensus seems to be that SCS Sarevok is already powerful enough.
  2. Can you explain why? Not yet. It's on my to-do list, but lowish priority (sorry). I think you can just summon the rope via CLUA. (It's bazplo05.)
  3. I don't actually single out Kahrk for special treatment, so this is just the automated code messing with him. But he's listed as 12th level, and SCS keeps him that way - and since he's an ogre-mage, he gets treated as a fighter/mage. That gives him another APR, which probably is double-counting since he's already given 3 - I might tweak that later. He'll be specialized with his weapon and have two pips in one-weapon style, and his ability scores are awesome. He has 18 Dex and a base AC of 1, so that's AC -3 before his defensive spells kick in - again, that's just the vanilla game. And of course he's 12th level, which is pretty high level for BG1. I don't give him anything special to make him immune to MM - could he have had Shield running? So: with the arguable exception of that extra APR, this is just an already-pretty-tough BG1 creature that gets horrendously tough when SCS gives him level-appropriate spells and proficiencies. So, on the one hand I can see the case for toning it down, since that 12th level flag is mostly nonfunctional in the baseline game but creates a hellishly dangerous SCS opponent. On the other hand, this is a completely optional fight which you get into only after a conversation that goes something like this: CARSA: this jar caused all my companions to die; it wants me to open it; I won't. PC: Give me the jar. CARSA: No, if I give it to you we'll all die. Run now. PC: Give me the damn jar! CARSA: No! Get away or I'll release the thing in the jar and it'll kill you. PC: We're taking the jar by force. CARSA: KAHRK! To be honest, I think if you let Kahrk out you get what you deserve
  4. If you're adding new spells that enemy AI ought to detect, very possibly. I can talk you through it if you want.
  5. As discussed here, the version of DS used in SR (and SRR) creates some (fairly edge-case) bugs due to removing duplicate entries from stats.ids. The more up-to-date version of DS in SCS avoids that (and has other minor advantages) but wasn't previously compatible with SR because it required AUTO_EVAL_STRINGS (which is part of my standard modding environment but breaks SR). The new version of DS I've just coded (see link here) doesn't require AUTO_EVAL_STRINGS, so you might want to update.
  6. & yes, checking the code (and SCS's readme) that section is a verbatim copy from Tactics' "Improved Druid Grove", untouched in SCS since 2011 (and even that was just to fix a namespace problem).
  7. This is a fairly belated comment, because I mostly did it a year ago, but I've coded a new version of Detectable Spells (v4.0.1). You can download it from the SCS github repo (it's not in the most recent live release of SCS). Just put ds.tph somewhere in your mod folder structure, INCLUDE it, and then run the 'detectable_spells' function. It works on the EE games (though it's not all that sensitive to IWD) and on the classic ToB engine, with or without ToBEx. This was a recode from scratch so I can't that easily describe fine-grained changes, but I think it's pretty solid (it's been loose in SCS and Ascension for a year or more without any bug being traceable to it). One of the main changes in this version is that it's radically easier to add detection effects to new spells, over and above the baseline ones included in ds.tph itself. But the use cases for that are relatively niche so ask me if you want them.
  8. I can reproduce this - it shows up in classic BG2 but not in BG2EE, because an opcode is interpreted differently. Thanks for catching it. I'll sort it out next time I do an update. (May not be imminent, sorry.)
  9. Although it's also true that SCS's AI assumes it's fighting level-appropriate adventurers - I suspect I could write anti-Hobgoblin AI for the SCS wizards that would do a lot better against large numbers of low-level mooks.
  10. I suspect it's mine ('improved minor encounters') though I have a feeling I might have borrowed it from Tactics. I don't think artificiality bothers me: if there are hostile plant creatures on the route to Faldorn, my working assumption would be that the Shadow Druids placed them deliberately.
  11. To be fair, they delivered on the ‘far easier to mod in general’ promise, at least by the time IWDEE came out. The EE engine is way beyond classic BG2 now, even with ToBEx.
  12. Back in 2004, when I was first messing with AI for the BG games, I discovered exactly this issue in BG1. So far as I can see it's a hardcoded feature of the engine and can't be worked around. It's the main reason I stopped trying to do AI for BG1 and moved to TUTU.
  13. PfMW, almost certainly. I don't know why you didn't see it being renewed in the log.
  14. Officially, in 2nd edition AD&D, 'bonus to THAC0' and 'attack bonus' are basically synonymous - they're used that way by the text in the 2nd edition Players' Handbook that explains THAC0, certainly. But the spell descriptions in the Players' Handbook don't, on quick inspection, refer to THAC0 - they talk exclusively about 'attack bonus'. At a guess, that's because the text is in most cases taken over with little or no changes from the 1st edition AD&D Players' Handbook, which doesn't have the THAC0 concept. Later sources do use it - for instance, the spell descriptions in the 2nd edition Forgotten Realms Adventures hardback describe various spells as giving attack rolls 'at the caster's THAC0 with a +2 bonus'. 1990s-period TSR almost certainly didn't have the established style rules that (I would bet) WotC or Paizo have, so things are a bit inconstant from product to product. My own feeling, FWIW, is that it's better to talk about 'attack bonuses' than 'THAC0 bonuses' because of the pre-3rd-edition awkwardness that lower THAC0 is better. Strictly, '+2 to THAC0' is a penalty, but it reads so weirdly to talk about a -2 bonus that in practice, +2 is used to mean a 2-point bonus. (Similar problems arise for AC, of course - a ring of protection +2 gives -2 to AC.)
  15. Polygons are part of the illusion of three-dimensionality. Character, and some spell-effect, pixels inside a polygon are dithered, i.e. drawn faded out, to indicate that the sprite is behind something. A tree, for instance, needs a blob on the search map (marking the region that you can't stand in because the tree is there) but also a polygon (marking the region where the tree is in front of you.
  16. It's the smallest rectangle you can draw around all the object's vertices. Presumably the engine checks if a sprite is in the bounding box (which is trivial) before bothering to check if it's in the area itself (which is calculationally harder).
  17. I do understand (I think) but it might take a few days before I have a chance to address it.
  18. It's not SCS (well, not intentionally anyway, and I can't see a way it could happen accidentally).
  19. As for the clash between SR and AUTO_EVAL_STRINGS... I guess in hindsight it was antisocial for me to code the latest ds.tph to assume it. I'll see if I can work out a version that doesn't require it (it may be difficult; I've been coding with AUTO_EVAL_STRINGS for seven years...)
  20. SFO definitely doesn't work without it, in that it does a sanity-check for it: /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Sanity check for AUTO_EVAL_STRINGS /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// OUTER_SPRINT var testers OUTER_SPRINT players var ACTION_IF !"%%players%%" STRING_EQUAL testers BEGIN FAIL "AUTO_EVAL_STRINGS is not set (you need to include it in your tp2 preamble to use SFO)" END
  21. Do you have AUTO_EVAL_STRINGS in your tp2 preamble?
  22. Oh - got it. Yes, version 3.x has some functionality (installed via the ds_altered_spell function) intended to tell later mods how to allow for changes to spells when installing DS, and SR makes (a very small amount of) use of it. My view was that it wasn't really robust and changes would have to be allowed for explicitly to work, so I deprecated it in v4. I think the v4 DS should handle SR fine (well, at least as fine as the v3.9x DS) without that functionality. I would just add DEFINE_ACTION_FUNCTION ds_altered_spell BEGIN END somewhere, if you don't want to strip out the ds_altered_spell functions manually.
  23. Are you sure? It looks like the unaltered v3.95 (which, absolutely, was written by Ardanis). SR's code uses DS to load a custom table of spell changes, but that table is empty in any case so it doesn't matter. Which macro is missing when you try SCS's version? I just tried installing it on a clean test mod (no other function libraries) and it seemed to work fine.
  24. This works, I think (testing required). You need my extension of the ALTER_EFFECT family. DEFINE_PATCH_FUNCTION match_fog RET value BEGIN READ_ASCII 0x14 resource PATCH_MATCH "%resource%" WITH "\(%WIZARD_STINKING_CLOUD%D?\|%WIZARD_CLOUDKILL%D?\|%WIZARD_DEATH_FOG%D?\|%WIZARD_INCENDIARY_CLOUD%D?\|%CLERIC_WRITHING_FOG%\|RR#WI502\|DVCKILL2?\|DVWCKILL\|WAND13\)" BEGIN value=1 END DEFAULT value=0 END END COPY_EXISTING_REGEXP ".*\.spl$" override PATCH_IF INDEX_BUFFER ("\(%WIZARD_STINKING_CLOUD%\|%WIZARD_CLOUDKILL%\|%WIZARD_DEATH_FOG%\|%WIZARD_INCENDIARY_CLOUD%\|%CLERIC_WRITHING_FOG%\|RR#WI502\|DVCKILL\|DVWCKILL\|WAND13\)" >=0 BEGIN LPF CLONE_EFFECT INT_VAR multi_match=1 match_opcode=206 opcode=142 target=1 parameter2=icon_ref insert_point=99 STR_VAR match_function=match_fog END LPF CLONE_EFFECT INT_VAR multi_match=1 match_opcode=206 opcode=139 target=1 timing=1 parameter1=RESOLVE_STR_REF (@1000117) insert_point=99 STR_VAR match_function=match_fog END END BUT_ONLY You don't need the INDEX_BUFFER, it's there for performance. (COMBINING COPY_EXISTING with ALTER_EFFECT/CLONE_EFFECT can be slow.)
×
×
  • Create New...