Jump to content

subtledoctor

Modders
  • Posts

    8,931
  • Joined

  • Last visited

Everything posted by subtledoctor

  1. Oh yeah, huh. Must have made a typo when searching the IESDP page. ...I was about to say "I'll experiment with that for the next update," but I suppose since I haven't yet released the current update, the responsible thing to do is to go experiment with that now. Sigh. The IESDP should probably still mention those opcodes' inability to set scores lower, though.
  2. I didn't see a script action for this, so I made up a bunch of spells with opcodes 44/15/10/19/49/6. The spells use timing mode 1, parameter1 = [chosen value], and parameter2 = 1 [set score to value of parameter1]. But when a spell would set an ability score to something lower than it is, no change is registered. Is the only way to lower ability scores doing it incrementally?
  3. Is there any way to modify their sudden appearance on the streets of Athkatla? I need to apply a spell at level-up (triggered in the kit ability table), and it needs to be based on the player's wizard level, and it just occurred to me that if the spell is innate, it will use the wrong level for dual-classed characters. So it needs to be a wizard spell. But if it is a wizard spell, then the Cowled Wizards will rain fire on some poor schlub who just wants to level up. Is there any way to whitelest spells so they don't trigger that reaction? It's SUPER annoying. (If anyone from Beamdog passes by here, maybe think about exempting some spells from that behavior? Maybe use hidespl.2da, or another similar mechanism?)
  4. I might have made a typo when assigning the icon to the spell. I've been tinkering with those icons, so that should be fixed in the very-soon-to-be-released update. Glad to know it's working, anyway.
  5. @Dallan You should have an innate ability called something like "change prepared spells." Using it will enable the traditional spell slots in your spellbook; then you can change out which spells you want to memorize, and rest. After resting, you will once again lose access to making changes in your spellbook, but can cast your chosen spells spontaneously. I can't promise the Bladesinger kit wasn't bugged, especially given that this seems to be an older install and I've made some bugfixes specifically for that kit lately. In particular, thaat spellcasting system has recently been completely overhauled and I'm right now in the final stages of testing another update.
  6. In part. Yes, I remember the bad old days when tons of mods made tons of additions to baldur.bcs, and it didn't go well. My preference became to use spells instead of scripts; I'll note that 1) single-threaded performance on modern processors is not actually that much better than it was on those old beefy Pentium chips; and 2) I play the game on a tablet with a mobile processor that is 10 years old, which is actually pretty darn slow. Even if the risk of script-based hiccups is low, the risk of hiccups in spell effects is effectively nil; overloaded scripts are prone to simply skipping blocks, whereas overloaded spells will briefly pause the game until they are finished processing. So best practice, to me, is to default to avoiding scripts and use spells instead. With the new EE opcodes, there is almost nothing you can do in scripts that can't be done in spells, so this practice works fine. Thanks, I never messed with that stuff so I never fully learned whether the descriptions of them is meant in an absolute sense (which I guess it is), or relative to the caster of the spell (which I gather effect targeting is). I'll try simply adding a 318 effect to block the spell for !(EA=PC).
  7. I try to never touch that script, so that sort of thing never even occurs to me. But I guess I could do something like: IF NextTriggerObject(Player1,Locals(ThisVariable,0)) OR(6) Class(Player1,MAGE_ALL) Class(Player1,BARD) Class(Player1,CLERIC_ALL) Class(Player1,DRUID_ALL) Class(Player1,PALADIN) Class(Player1,RANGER) THEN ReallyForceSpell(Player1,ThisSpell) ActionOverride(Player1,SetGlobal(LOCALS,ThisVariable,1) Continue() Need to clean up that syntax, obvs, and repeat through Player6, but that could run once on each party member and then get out if the way. My understanding is, casters would have the local variable set upon being activated, and thereafter escape the trigger; and non-casters would never activate it; so hopefully it would not clog up the script? It just irks me at a gut level to check for something on 6 characters once per second across a ~100-hour game (so, ~216,000 checks?) for something that only needs to happen once, ever, for each character... Is there no condition in opcode 318 that can limit a spell’s effects to party members? Like EA/30 (GOODCUTOFF)? I confess I’ve never fully understood EA values, like does that mean actual green-circles, or does it mean “anyone allied with the caster of this spell?”
  8. This spell from IWD has a long casting time and a wide tunnel-shaped AoE and with everyone moving during combat it is easy to either miss your enemies or hit your party members. I want to make it a party-friendly effect, which is not too crazy given its power and spell level. But, I don't know how. I don't see anything in its projectile that I can change. What if I just set all its effects to 5 (everyone except party) instead of 2 (pre-set target)? Will that still be limited to people who are hit by the projectile?
  9. Yeah this is probably one of those times when EEKeeper is easier than a mod.
  10. Might be possible with a bunch of XP-related scripting, but not sure how reliable the end result would be. (Look at all of the issues SCS v33 faced with its XP scripts, and that was made by one of the most technically proficient modders around here.) All for a relatively limited benefit. Plus, it would arguably undermine the whole point of the 2E dual-class mechanism, which is that you must start from level 1 the moment you decide to take on a new class. You're supposed to be at a disadvantage for a while, as you work to catch up. With 499,000 XP in your example, you would be able to dual-class and add 249,000 to your new class, leveling up ~10 levels in an instant. if you want some interesting multi/dual-class mod possibilities, bother Beamdoog to add a script action or opcode to modify creatures' OriginalClass values... I've been asking them for that for 8 years and they haven't done it yet.
  11. I've been using IWD to test the development of some stuff recently, specifically the HoW campaign start option, for several reasons: my IWDEE happened to be mod-free at the moment can easily make a party of six to test effects of mod on various classes/kits don't need to deal with the Chateau Irenicus game start (cut-scene, talking to Imoen, etc.) starting at mid-level tests the immediate jump in levels during character generation, similar to BG2 game is at the latest v2.5.17 patch HOWEVER, some things were not working. Specifically I had a function to dynamically add certain spells to spellbooks, and I was testing it on mages, sorcerers, clerics and shamans. It wasn't working, and in frustrated me to no end because I couldn't find the error but I'm testing a mod, right? So surely the problem is with the mod? Nope, turns out if you start a HoW game, spells applied from the kit ability table with opcode 171 effects do not work. By chance, after several hours, I tried a level 1 IWDEE game start and suddenly my code was working perfectly. I don't know if it is just opcode 171, or what. The more your know...!
  12. I've looked at the tables, and they really don't have any differences until after level 25 or so. So don't expect to see much difference until TOB, if at all.
  13. Yeah, me too, it’s in my Random Tweaks mod (around line 400)
  14. That’s about what I figured. I’m not sure how it could be done well... maybe run it as a mage, set local variables for each spell level’s spell slots, decrement the value each time a spell is cast, and apply opcode 261 to restore the spell on a 10 second delay if the variable > 0. Not a big deal - I’m working on a thing to give players more flexibility in spellcasting, and it would be nice to help enemies as well. (I had the thought that if SCS handles sorcerers, I could simply change every enemy mage into a sorcerer, and let SCS handle the rest.) But even if enemies don’t get this benefit, their processes are opaque to the player so it won’t mar gameplay in a subjective sense. And the player’s advantage in flexible casting will be offset by the need to manage their resources for a whole dungeon, while every enemy caster is in a singular fight for their lives and can thus unleash their entire spellbook.
  15. Finally since I'm here thinking about a stuff and adding stuff to my Random Tweaks mod, @Bartimaeus have you had any thoughts about Spirit Ward, the shaman-only spell? It currently just seems like a worse ProEvil... desperately in need of being more useful. -2 AC vs. fey/elementals/spectral undead is awfully limited... why only spectral undead? And what do fey and elementals have to do with it (in this cosmology)? "Spirit Ward" is pretty evocative, I feel like it should be more interesting spell.
  16. @DavidNYC it occurs to me these .BAM files should really have modder prefixes if they are being copied into the game. If you don't have a reserved prefix and don't want to bother, I'm happy to use mine... your call.
  17. In my SR+SCS install, PfMW does not set this spellstate. It has 328 effects setting PRIORITY_BREACH PRIORITY_DISPEL BUFF_PRO_WEAPONS Maybe your script is not seeing any conditions valid for casting Breach; but the parts of your script checking for valid attack targets are seeing that Kahrk is protected; so they don't Breach and they don't attack either. In my BGEE install with only SCS v33, PfMW has 328 effects setting both "PROTECTION_FROM_MAGICAL_WEAPONS" and "BUFF_PRO_WEAPONS." In my BG2EE install with only SR 4b18, PfMW only sets "BUFF_PRO_WEAPONS." Good thing I looked at others, because PfNW also sets "BUFF_PRO_WEAPONS," as well as "PROTECTION_FROM_NORMAL_WEAPONS." In my completely unmodded SoD game, PfNW sets both "BUFF_PRO_WEAPONS," as well as "PROTECTION_FROM_NORMAL_WEAPONS;" PfMW only sets BUFF_PRO_WEAPONS." So it seems that the general rule is, vanilla PfMW only sets the "BUFF_PRO_WEAPONS" spellstate; SR does not change this. SCS adds the "PROTECTION_FROM_MAGICAL_WEAPONS" spellstate, but only if it does not detect SR. So the takeaway is, your script should check for a combination of CheckSpellState(LastSeenBy(Myself),BUFF_PRO_WEAPONS) !CheckSpellState(LastSeenBy(Myself),PROTECTION_FROM_NORMAL_WEAPONS) ...and then it should work across all combinations of vanilla/SR/SCS.
  18. I'm working on something that will change the way spellcasting works... but not in a scriptable way. It is only visible to players, changing the way they interact with the UI; it is useless and could be detrimental to AI enemies. Generally the way this is handled is to put abilities into the "CLAB__.2da" ability tables, because those are applied to PCs when they are created and to NPCs when they join the party. But SCS applies all CLAB abilities to all NPCs, including AI-controlled ones that fight against you. I want to protect these creatures from being affected by my changes and leave their abilities and scripts alone, since SCS already has them working pretty well. So, easy enough to distinguish joinable NPCs from non-joinable ones in Weidu and give non-joinable characters 206 protection against my CLAB ability. BUT, there are the rare cases in which a creature might be joinable, but might fight against you if they don't join you. Baeloth I think, probably Ascension Balthazar too. Maybe one or two mod-added NPCs. And I guess you can theoretically pick a fight with any joinable NPC when they are blue-circle and thereby turn them to red-circle. I know this is edge-case stuff, but can anyone think of a way to distinguish in-game between joinable and non-joinable, to make sure the changes are only applied to party members? Off the top of my head I can only think of: 1) Insert checks into BALDUR.BCS to remove the 206 protection from PLAYER1 through PLAYER6. (My mod's changes take a few seconds to kick in, so the game script should update them before it happens) 2) Pull the mod changes out of the CLAB table and into an innate ability: "Initilialize Modified Spellcasting Abilities." And have the player manually make the change when each character is created or joins the party. (This would be quite reliable, but players don't like it for breaking the 4th wall.) Any ideas?
  19. No, if SR is detected then SCS does not change player versions of the MAGICATTACK spells to target invisible characters. But IIRC enemy mages will use versions that can target invisible players. But, also IIRC, even without SR those SCS changes only affect Spell Thrust, Secret Word, Pierce Magic, etc. Not Breach. And anyway Kahrk wasn't invisible in your test (or improved invisible). So your scripts refusing to cast Breach seems to be unrelated to invisibility or improved invisibility.
  20. Agree to disagree. This is how Refinements v4 is structured right now. The biggest, uh, refinement I made to Refinements was to allow HLAs to be installed on a class-by class basis. The install procedure looks like this: Install all HLAs? [y] or [n] If [n]: Install Fighter HLAs? [y] or [n] Install Paladin HLAs? [y] or [n] Install Ranger HLAs? [y] or [n] Install Cleric HLAs? [y] or [n] Install Druid HLAs? [y] or [n] Install Wizard HLAs? [y] or [n] Install Bard HLAs? [y] or [n] Install Thief HLAs? [y] or [n] The players who just want all the Refinements HLAs have a procedure that is just as easy as it was under v3.31: press 'y' once and they are done. But the players who want more control can press 'n' and then they get several options. This is one of the benefits of immutability and encapsulation: the changes made in a mod need not be tied to this or that mod component, but can be installed by several components in combination with other changes or settings. The Refinements thing is repeated in various instances across my mods: e.g. the SoB total proficiency overhaul auto-installs proficiency category changes, but those can also be installed independently; the MnG revised archery system auto-installs the Marksman kit (a fighter-class Archer) and the Slinger kit (a halfling F/T Archer), but those can also be installed independently. Another application is Tome & Blood's "Innate Spell Sequencers:" there are four options presented as subcomponents; each subcomponent sets a single variable to a different value and then runs the same function. There are minor differences in application, like do you learn Sequencer abilities automatically or do you learn them from scrolls. But in all four options the result is the same, Sequencer spells live in the innate abilities bar and behave a certain way. If I want to check in another whether TnB has moved Sequencer spells to the innate abilities bar, I can either code a clunky check for four different-but-similar LABELS, or I can check for a single marker file. Me, I'll choose the latter option any day of the week. I don't want to check which component was installed; I want to check whether that function was run. Another thing: I have replicated TnB's "Ability-Based Bonus Spells" in SoB, a completely different mod. The components are completely identical to each other, not a single different character in the code; it is only in two different places for the sake of players' install order convenience. I cannot use LABEL for compatibility checks to see whether that code is installed, but I can use a marker file. I could go on and on. This is not to say that LABEL isn't valuable - you've convinced me of that. But the value seems to be focused on mod managers like BWS/PI, not on compatibility checks for other mods. One is not a substitute for the other... if anything, with LABELs and marker files and proper immutability/encapsulation, we could do away with DESIGNATED. But, I'll keep using that anyway for the sake of full component-order control. (Not to mention, it is already in all my mods, so removing it would be more work than keeping it. But anyone starting to mod now, using LABEL and marker files and encapsulation, could omit DESIGNATED.)
  21. Are there any in the game? If so, does SCS handle them any differently from enemy mages? As in, the main advantage of a sorcerer is their spontaneous casting. A mage might only have two Breach spells memorized, so if they cast both of them and then you cast PfMW or something, then the mage will be unable to remove your protection. Whereas a sorcerer could cast Breach again, as long as they have any 5th-level spell slots remaining. I'm curious if SCS makes use of that characteristic.
  22. Whoa. This started out as "casters don't target Improved Invisible targets when they should" (IIRC?) but I think something else entirely is going on. Here is a simple case of a mage with Shield, MI, Haste, SS, MGOI, and PfMW up. I'd have to guess it's down to either a) something about the Breach targeting conditions of the script itself, or b) something about one of those defenses, maybe a script state applied by SR or SCS or something like that. Harder to pin down now, but those six spells are what I would look at. In fact, I have ST/TnB/SCS installed in a game right now, so I can take a peek. Huh. Only thing that jumps out at me is Shield, which has an opcode 282 'Modify Script State' effect. EDIT - that 282 effect on Shield is not added by SR, though... EDIT 2 - or perhaps it's something about Kahrk in particular that is throwing the test off... man, I like m aking mods but testing stuff in this engine is super annoying. EDIT 3 - interesting, I never bothered to inspect Kahrk's .CRE file before. He wears MAGEAMUL.itm, which auto-casts MGOI, and MAGEBRAC.itm, which auto-casts a custom version of Pro Normal Missiles... I guess Beamdog's half-hearted attempt to replicate SCS-style pre-buffing. Also MAGE06.itm, which has a while-equipped Haste effect. Also his class is "ogre_mage," which I didn't know was a class. (Why not just make him a fighter/mage?) But I don't see any applied effects - at all - so nothing that would mess up the test as far as I can tell.
  23. Whoa. Which components of EET_Tweaks do you have installed?
  24. Well that's interesting. But I'm a bit confused about a couple things: 1) Why did Kahrk cast Nondetection if he was not invisible? That makes little sense... though I guess ND is a long-duration buff, so SCS is likely to have it pre-cast, and if he decides to go invisible during the fight it would be helpful. But as things stand, it is of no value. (Though, with Tome & Blood installed, Nondetection will actually protect his Mirror Images from being removed. So it's almost like SCS works better with my mod than without! ) That's nothing to do with your scripts, I just found it interesting. 2) More on-topic: you didn't mention what effects your party was under during the test. If Kahrk was totally visible, then what was stopping your casters from taking action? Like, in your second test Kahrk is not invisible, and not under Nondetection... so I don't understand what the problem is. Maybe, can I presume that you had cast True Seeing on your party? Even though Kahrk did not end up being invisible? So if you want to do a follow-up test, it would be to look at two the scripts handle a visible enemy. First, with SR True Seeing active - my assumption is, that is the test you just reported. Now, edit the True Seeing spell to remove any opcode 193 effects, and run the test again with everything else as it is now (i.e. with the opcode 69 and 282 effects removed from DWSW310.spl). If opcode 193 prevents scripted spellcasting against visible opponents... that seems important to know! Certainly something that should probably go in the IESDP.
×
×
  • Create New...