Jump to content

kjeron

Members
  • Posts

    485
  • Joined

  • Last visited

Everything posted by kjeron

  1. You would have to add your own entry to SPLPROT.2da, but the AREATYPE check doesn't work. It always returns true.
  2. This seems to diverge from most instances in the engine, where if you set the "cast at level" field to 0 it uses your caster level. The IESDP seems to suggest that this opcode could not be used with effects that involve caster level. Is that correct? If the subspell is to scale, you have to specify every level: Give the spell with opcode 333 50 ability headers, minlev 1-50, with opcode 333 in every header, casting at minlev. It needs to store the casting level this way because the "Caster" of the subspell can end up being the target of opcode 333, rather than the caster of opcode 333. This mostly occurs if you save/reload while the effect is active.
  3. CHARGEN applies the CLAB after spell selection, level-up applies the CLAB before spell selection. It's the same issue other divine casters face with removing spells at level-up. The CLAB would have to remove them both instantly and on a delay, to remove the spells for both situations. Each kit utilizing it would need a combination of 5 spells per level that they either cannot or must have, so the UI has enough to select at every level. These spells would have to be available for selection to all shamans, but adding dummy spells for this would likely cause conflict with mods that add Priest spells, since there are only 50 slots per level. The mod would now have to worry about compatibility issues with UI mods - would probably be best if a separate mod implements the UI changes, and others just tie-in when it's been installed. This method would otherwise work. The same section of UI.menu is used by Shamans and Sorcerers for spell selection, so Sorcerers could use this as well. Any shaman/sorcerer using it would then provide a way to select spells each level (likely though dialog menus).
  4. Which casting mode are each of the opcode 146/148 effects using? Is "Spell1" being cast manually or by another spell/opcode? This should work: Spell1 has: - header target = any location - projectile "None - 1" - effect 1 = opcode 146, cast spell, target = self, param2=1, resource = SubspellA - effect 2 = opcode 318, target = self, condition = not enough hp, resource = Spell1 - effect 3 = opcode 148, cast spell at point, target = self, param2=(0 or 1), resource = SubspellB SubspellA has - projectile "None - 1" - target = self, 6 points damage, reduce max hp by 6 SubspellB has: - header target = irrelevant - projectile = Produce Fire projectile (affects anyone in ~15' diameter) - effect 1 = fire damage, target = preset target
  5. It's worked in the engine ever since (v2.0 for BGEE, v1.3 for BG2EE), the relevant file (splprot.2da) just wasn't included by default (just had to import it from IWDEE). More importantly, the Spellstate assigned to Thieves in IWDEE serves no function (in any game) - the "Evasion check" has hardcoded conditions (Class/Level = Thief/7+, if your "Helpless"). "Launcher" abilities cannot be detected, "Ranged" self-made-ammo abilities (Gesen shortbow/Firetooth xbow) can be detected. This behavior is similar to opcodes 301,341,361,362 - where the "Launcher" ability type (Special=4) doesn't function because they cannot be detected.
  6. Power level 0 effects cannot be removed with opcodes 229/230.
  7. As a permanent effect, it's unavoidable. Putting it in the resurrection spell as instant/zero-duration will avoid the icon though.
  8. You also remove any other temporary weapon they may have, since resurrection spells don't have checks against targeting living creatures. (Not that the game doesn't already have such problems - casting Resurrection on a living target will remove most temporary abilities). You can also use Sequencers to force a creature to cast a spell on themselves through another spell: Opcode 177: Target (Preset) Resource (EFF, Opcode 256: Resource (Spell), Parent Resource (ParSpell)) Opcode 258: Target (Preset), Resource (ParSpell) (Spell) should have range of 32767(max). (Spell) will be cast by the target, on themselves, at their caster level. (If the spell forcing the cast is AoE, use Opcode 260 instead of 258, and all effects in (Spell) need to target (Self).) The Opcode 177 effect can be in the Resurrection ability, or just permanently (timing=9) attached to each creature that needs it. The opcode 258/260 effect would go in each Resurrection ability, after the opcode 177 if present.
  9. When successful, the saving throw on opcode 333 both blocks the spell it would apply, and removes the opcode 333 effect, preventing further triggers. Beltyn's Burning Blood and Shroud of Flame function this way (both IWDEE).
  10. You can force a save every round in the EE with opcode 333 (Static Charge). It forces a new saving throw for every trigger, terminating if it is successful. The subspell would just be 6-second effects with no-save.
  11. Opcodes 102/200/201/259 (those that specify a power level) only acknowledge power levels 1 through 9. The other opcodes (those that only specify a total number of spell levels) do work, and will actually accept power levels up to 2^31 - 1, as can be specified in external EFF files.
  12. Damage Immunity (Resistance >=100) no longer triggers an interrupt in the EE's, they made a hardcoded change to it in the release patch (v2.5.17.0). Unrelated to the Concentration check from "CONCENTR.2da". It can be bypassed by applying an extra zero-damage effect of a non-resistable type (stunning, untyped), if you really wanted to. Note: This behavior is not currently present in BG2EE (it's last patch was only v2.5.16.6).
  13. If I had to guess the value (BIT2/4) comes from the Special Field of Opcode 12: BIT2/4 = Fist Damage Only (except not restricted to damage in this case) The same does not work with opcode 249, even with a "ranged" fist.
  14. It's only useless if the party just rested, it will stack with any natural fatigue they have accumulated (or from haste, if it still applies fatigue). Non-party creatures do not naturally incur fatigue, so it will always require 2 castings against them.
  15. Luck will not reduce the effective roll below 1 (or increase it above 20), so the displayed adjustment will depend on your base roll.
  16. NI can 'Export' as "as DLG file' or "as Weidu dialog file" (.D file). Use the export button on the "edit" tab, not the one under the "File" menu.
  17. In IWDEE it's signature is "SPL" instead of "SPL ". The character probably won't display in the post, but its character 0x03, while it should be 0x20 (space). The spell isn't actually used in IWDEE (it crashes if used).
  18. I was just listing the limitations of what I wrote. I wasn't sure how whitespace should be treated. If the line is: text =value is key variable " text", "text ", " text ", or "text"? I'm sure the regexp can be adjusted to match.
  19. Would REPLACE_EVALUATE be simpler? OUTER_SPRINT configuration-default ~%MOD_FOLDER%/configuration-default.ini~ OUTER_SPRINT configuration ~%MOD_FOLDER%/configuration.ini~ DEFINE_ACTION_FUNCTION GetIniKeyValue STR_VAR filename="" RET_ARRAY ini_content BEGIN COPY - "%filename%" "%override%" // "COPY -" means no actual changes to the file REPLACE_EVALUATE ~^\([^ %TAB%%WNL%]+\)=\([^%WNL%$]+\)~ BEGIN // key must start line and cannot contain whitespace // value is everything after the "=" until the newline/end TEXT_SPRINT $ini_content(~%MATCH1%~) ~%MATCH2%~ END ~~ END PRINT "%configuration-default%" PRINT "%configuration%" LAF GetIniKeyValue STR_VAR filename="%configuration-default%" RET_ARRAY ini_content END ACTION_IF FILE_EXISTS ~%configuration%~ THEN BEGIN LAF GetIniKeyValue STR_VAR filename="%configuration%" RET_ARRAY ini_content END END ACTION_PHP_EACH ini_content AS key=>value BEGIN PRINT "%key%: %value%" END
  20. It's a combination of the order you select them for the sequencer, and the speed of each spells projectile. So depending on the set of spells it can be entirely reliable.
  21. No, I screwed that part up, but it can be fixed. Make 4 subspells with Opcode 171: one with 1x Opcode 171, one with 2x Opcode 171, one with 4x Opcode 171, one with 8x Opcode 171 Running spell applies: Opcode 326: stat (1 << X) 8 subspell1 Opcode 326: stat (2 << X) 8 subspell2 Opcode 326: stat (4 << X) 8 subspell3 Opcode 326: stat (8 << X) 8 subspell4
  22. Looks like the subspell adding the innates is removing them before adding the new one, resulting in there always being just "one". Otherwise it looks like an issue with effect order, as I don't run into issues with a simple test of the effects.
  23. Use Response/State Triggers? HaveKnownSpell()/HaveKnownSpellRES() (EE only) HasItem()
  24. It's simple in EE through the projectile: Offset 0x200: BIT15 Offset 0x244: 6 Offset 0x246: 1 Hits 6d1 targets.
  25. I can only answer the bonus: Power, Primary Type, Secondary Type, and Parent Resource are checked depending on the opcode applying the EFF: When applied by opcodes 177/283: The stats of the applying spell is used for removal of the opcode 177 effect (and therefor the EFF). The stats of both the applying spell and the EFF are used for deflection/reflection. When applied by opcodes 248/249: The stats of the EFF file are used for removal of the EFF. The stats of the EFF file are used for deflection/reflection of the EFF. When applied by opcode 272: The stats of the applying spell are used for removal/deflection/reflection of the opcode 272 effect. The stats of the EFF file are used for removal/deflection/reflection of the EFF. When applied by opcode 182/183: The stats of the applying spell are used for removal/deflection/reflection. Exception: Opcode 333 is always applied directly to the creature, even when applied through an EFF, so the stats in the EFF file are always used for it's removal. Opcodes 309/187 do not retain any stats, no matter how they are applied. The engine deletes and reapplies them as it's own effect. there might be some others IIRC the primary/secondary type removal opcodes cannot remove timing mode 9 effects.
×
×
  • Create New...