Jump to content

jmerry

Modders
  • Posts

    1,280
  • Joined

  • Last visited

Everything posted by jmerry

  1. 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.
  2. 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...
  3. Yes, spell choices are made during installation. The CRE file has its list of memorized spells, and that's what they'll use in gameplay. I've never been tempted to mess with creature levels more than SCS does by default, so I don't know much about those options.
  4. 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.
  5. 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.)
  6. 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?
  7. 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.
  8. 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.
  9. This should be what you're looking for: STATE_WHICH_SAYS.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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. 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.
  16. 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.
  17. The source of legitimate complication is that other languages don't do that "make backup copies of everything" step by default. The "don't back anything up" state that you have to deliberately invoke with a special modifier in WeiDU is normal in other languages.
  18. Or in the case I was describing, 10+ APR of weapons with elemental damage riders (acid arrows, long sword of flame, Stonefire axe). It also helps with finishing the trolls off.
  19. 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.
  20. 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.
  21. 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")
  22. Of all the errors in the snippet provided, I find the DELETE_FILE one particularly vicious. Because, even as someone who knows WeiDU pretty well, I had to search the documentation to spot that one. The real command is just DELETE, by the way. With a big warning in the documentation to not use it without a good reason.
  23. It's not the first time I've seen ChatGPT fail at producing code in this modding scene's obscure languages. Here's a juicy example (I took apart one chunk of it in detail): https://forums.beamdog.com/discussion/88152/need-help-in-making-vampire-kit-spells-scripts-creatures-items Anyway, for this one... - SPWI405 isn't Magic Missile. It's Improved Invisibility (in the BG series). So right off the bat, we're editing the wrong spell. - Then we read some binary data. Two bytes at 0x1E (some of the kit exclusion flags), one byte at 0x20 (more kit exclusion flags), one byte at 0x21 (the last of the kit exclusion flags), and two bytes at 0x22 (the casting animation). Values 4096, 0, 0, and 13, by the way. - Then we write something. Add one to the number at 0x22. Now the spell has a Conjuration animation instead of Necromancy. - Then we write more things. In the first three cases, write what's already there. In the fourth, undo the change we just made in the last step. - Then, in the name of printing an unearned victory message, we bring in a string @100 (OK, I'll assume that there's a tra file somewhere for that to point to, as that's the more entertaining option). Write it at the NAME1 offset. Which is actually the name of the spell. So we've renamed "Improved Invisibility" to ... something. - The next line is a glaring syntax error; SAY needs two arguments, and only one is provided. The first argument has to be an integer, and that string can't be converted. So the code crashes here. All right, let's proceed as if the "SAY ~Magic Missile damage increased by 1 point.~" doesn't exist. - The line after that is another glaring syntax error. COMPILE ... what? EVALUATE_BUFFER is a modifier, not the argument that action needs. All right, ignore that line too. - Now, we close the spell (by performing an ACTION). That action is to immediately open up the same thing we were just working with. I really don't see the point. - Finally, the DELETE_FILE command tells us to get rid of everything we just worked on. Except - no, that command doesn't actually exist in WeiDU. So that's a third syntax error, a bit subtler than the last two. - OK. We've just defined a function. Which, contrary to what it's called, renames Improved Invisibility. At least, if we ignore the syntax errors. Now, we have a code snippet that invokes the function. I'll be generous and suppose this is part of a mod component, and we just don't have the boilerplate around it. - If Improved Invisibility exists, "modify_magic_missile". Wait. You need to LAUNCH functions in WeiDU. That's another syntax error. And what if the spell doesn't exist? Well, then we SAY something. Which is a syntax error for two reasons: that there's only one argument, and that SAY is a PATCH and we don't have a file loaded. So, as a summary, there are five syntax errors, and the parts that are technically functional have absolutely nothing to do with the stated purpose.
  24. OT: The "code" environment respects spacing and uses a monospaced font; I'd build the table in a text editor and copy it in. Also, the last button in the top bar (magnifying glass) is a preview.
  25. I think that old version you remember was in SCS (it isn't anymore). I don't think it gave you as many choices as the new version in cdtweaks, but that's arguably better design anyway. For example, in Nashkel, some NPCs would go to the inn and some to the Belching Dragon, and that choice was believably based on their personalities. I think I have some old versions lying around that I can check... no, looks like I don't have anything older than v33 saved, at least on this machine.
×
×
  • Create New...