Jump to content

kjeron

Members
  • Posts

    485
  • Joined

  • Last visited

Everything posted by kjeron

  1. They do need it, and such an immunity will interfere with them.
  2. Possibly related to this: https://forums.beamdog.com/discussion/64178/instant-death-game-overs-for-no-reason/p1
  3. Yep. Regardless of your actual level, the game will cap it to a maximum of 50 in-game, just like ability scores are capped at 25. Once you have enough experience for level 51, you can push that level-up button over and over, because it will still think your level 50 afterwards. You still gain at least some of the level up benefits (HP, proficiency), but not sure about all of them. CLAB files are governed by your effective level, so entries 51+ won't be used. Caster level is also based on your effective level, so it won't exceed 50 without op191 (or wild magic bonus). The experience cap cannot be eliminated because if you have enough experience for every level (0 - 255), the game locks up, as it doesn't know what to do.
  4. StaticSequence switches which sequence the animation uses, first sequence is 0. AmbientActivate will activate (TRUE) or deactivate (FALSE) an area animation. StaticStop and StaticStart just freeze/unfreeze the animation. Make sure the animation has a unique name/label in the .ARE file. These actions do not reference animations by BAM file, but by the label/name given to it's animation header in the current area.
  5. Scripts can handle RES filenames with "+", Dialogs and the console cannot. Same with the ~, `, ', @, $, ^, and & characters, maybe some more. The in-game compiler is what's failing, not the action. ApplySpell and ApplySpellRES cast a spell at it's lowest level, and ignore it's projectile. Edit: The RES variants will default to a spell matching the first 7 characters in Dialogs/Console IF the 8th character isn't valid.
  6. AFAIK mode 1 has always worked that way, unable to specify a casting level, for both op146 and op148. Op148 has only 2 casting modes - that third one is exclusive to op146. The IESDP hasn't been abandoned.
  7. kjeron

    GemRB IESDP

    Oh yes, I'm well aware of what it allows to be done with the opcode, but for the purpose of reproducing the opcode, it's an important distinction. This specific aspect is actually similar to how the Sequencer Activation opcodes work (they target self, but cast their spells on the ability target). However, sequencers don't share any of those other features. Yes. op146*p2=0 isn't really "normal cast", as it cannot be interrupted by damage (it's more similar to ForceSpell() than SpellNoDec()), but can specify a level (or leave 0 to use caster level). op146*p2=1 cannot specify the casting level, it's just instant-cast using caster level for whatever type of spell the resource is. op146*p2=2 works identically to op326, bar trading the splprot filter for a level specifier, but otherwise has all the same quirks. Not sure what you mean by contingency spells, they no longer use op146. The op146 they did use was a cheap way to prevent you from casting other spells immediately after the Contingency, as the Contingency spells ignored the once/round rule (they no longer do). All it did was interrupt whatever you were doing 4 seconds later (were it instant it would not interrupt you). The spell they cast is labeled "DO_NOTHING", and has no effects, so I don't think it had any other purpose than to interrupt you.
  8. kjeron

    GemRB IESDP

    321: Leaving the resource field empty will remove any effect on the creature without a parent resource. Level-up Proficiency, HLA markers, Stealth, Turn Undead(Paladins Panic only), etc... Local Variable effects are however safe (if they are even stored on the creature during gameplay). 326 has a lot of quirks (whether or not they're intended is something else): Unlike op146, when targeting "Self" or "Original Caster", the resource is still cast on the ability target, not the caster. For the purpose of dispelling effects only, the target of op326 (not necessarily the caster) determines the caster level for effects in it's resource. It also determines the "Caster location" saved to the V2 effect on creatures. It doesn't transfer full ownership though - the caster is still credited for damage. If the resource uses a projectile other than #(0|Default): effects in the resource that target "Self" will affect the target of op326, not the caster. if op326 is reflected/turned, only effects in the resource targeting "Original Caster" will be affected, now affecting the target. If the resource uses projectile #(0|Default): the resource will ignore it's projectile field, defaulting to use projectile #(1|None) for all effects. effects in the resource that target "Self", "Preset Target", or "Original Caster" will all affect the target of op326. if op326 is reflected/turned, the target of effects in the resource is reflected. All of these are also shared with op333 (Static Charge), and op146 param2=2 (cast instant at specific level). edit: Effects in the resource will also bypass Magic Resistance, of every target, as if the caster targeted themselves, regardless of who they target with the spell or op326.
  9. BGEE/SoD and BG2EE currently have the same number of default kits (reserve + 40), so this shouldn't be an issue unless you're installing kits exclusive to either BG1 or BG2.
  10. LOL....No, it's all in-game observation. Those effect trigger once per (x seconds). If they trigger exactly once per 1 second, with Haste it will trigger twice as often (once per 0.5s). When they trigger once per (x>1 seconds), with Haste the trigger interval is reduced to the percentages I listed (about to 30%), up to tripling their number of triggers over a given duration. Turn Undead, Stealth, Bard Song, Shaman Dance, Find Traps ... though it appears I was wrong about them, it only affects Stealth, or more importantly the Stealth Cooldown, not sure what happened. Trigger conditions 1-6, 8-9, 13-15, and 18-21 are normally checked once per round. Haste/Slow affect their check frequency the same as the other listed opcodes.
  11. A weapons first ability header is always treated as a weapon ability, regardless of it's ability location. It still affects it's presence on the action bar, and whether it can be activated as an item. A weapons additional abilities are locked into their location function. A spells ability location is not considered when selecting spells through op214(select spell) or op234/257 (contingency/sequencer creation), allowing spells that can be known/memorized but not cast unless through one of those opcodes. Also useful if you're creating a custom identify spell that can only be accessed through the inventory UI - more or less how the vanilla identify spell functions (though fully hardcoded).
  12. The items (CMSTQ04.itm) first ability (melee/weapon) claims 1 effect with an effect index of 9, but the item only has 8 effects, which is 2 less since the index starts at 0.
  13. Looks like one of the items ability and/or effect indexes/offsets isn't correct. 658 = 0x292 = base (0x72) + 2 abilities (0x38 * 2) + 9 effects (9 * 0x30) It's likely trying to read the opcode (READ_SHORT) of a non-existent 10th effect.
  14. "Black" entangle, EE-only. Overlay effect in mh#wiz44 updated in archive. Just need to Add&Assign the projectile to test. Projectile tentacles are 2x size (to better fit the EBT spell, easy to reduce back to 1x if desired), wrapping tentacles size unchanged. There is some unavoidable quality loss in the tentacle animations, since a "black" projectile cannot utilize transparency (as black is the color converted to transparency). The entangle animation is especially a PITA because of this. EVBLTENT.zip
  15. It looks like the calculations (5-100 rand, * 5) are based off the other games 2e thieving scores range (0 - 255), rather than IWD2 3e skills range (0 - 33)
  16. IIRC: When selecting a kit during chargen, the character is assigned the KITIDS (final column) of KITLIST.2da, based on the ROW# in the K_X_X.2da files, then the KITLIST row for that kit is applied to the creature. entry # from K_X_X.2da KITIDS column of row# in KITLIST.2da (KITIDS - 0x4000) row# in KITLIST.2da: all other columns. Exceptions for specialists, wildmage, and barbarian, and their hardcoded slots (0x4040, 0x4080, 0x4100, etc...).
  17. 0x10 (Minimum level) does have a full two-byte range. Standard spellcasting only utilizes the first byte (0-255), but opcodes that specify casting level (146*2/326*EFF/333) have access to the entire range (0 - 65535).
  18. A location/point-targeted spell (ability target 4) cannot be cast on a creature through the UI* - even if you click on the sprite, it's still targeting their location, not the creature. * They can target a creature while in a contingency or sequencer, though the sequencer must also contain a creature-targeted spell.
  19. Sorry, had to do some more testing for sleeping/helpless. Both ACTSLEEP.IDS and INSTANT.IDS control which actions can be taken depending on whether the creature is sleeping, otherwise helpless, and/or dead. Sleeping creatures need the action to be listed in ACTSLEEP.IDS to attempt it. Non-Sleeping, but still helpless creatures (held, web, etc...) need the action to be listed in INSTANT.IDS to attempt the action, but do not need the action listed in ACTSLEEP.IDS at all. At least through ActionOverride(), dead creatures need the action to be listed in INSTANT.IDS to attempt the action, and also listed in ACTSLEEP.IDS to avoid crashing when they attempt it. An action not listed in either won't be attempted while dead through ActionOverride, and therefor won't crash. "Dead" creatures here applies to those with "STATE_DEAD". Creatures with either "STATE_STONE_DEATH" or "STATE_FROZEN_DEATH" set without "STATE_DEAD", as far as I've seen, will not attempt actions unless they are listed in both ACTSLEEP.IDS and INSTANT.IDS (they aren't attempted, and therefor do not crash, if they're only listed in INSTANT.IDS). Actions ordered upon a dead creature through the UI will be attempted (though likely fail), whether or not they are listed in INSTANT.IDS, and will crash if not listed in ACTSLEEP.IDS. Only example I'm aware of: It is possible to have a dead party member selected, and ordering them to move will crash unless the relevant movement actions have been added to ACTSLEEP.IDS. Some actions can be added to either/both files and will function as expected, but I've never gone through and made a comprehensive list of which actions can/cannot be added. Many of those actions can be attempted, but will still fail, usually those that require a valid target, as they cannot locate(dead) and/or reach(dead/helpless) said target. The "Pause Target" effect (op165) has some oddities, such as frequently not performing any actions until after opening a menu (inventory, options, record, etc...), so I'm not certain about it's restrictions. * Some of these may have exceptions - they're are too many actions to fully test.
  20. Too many negations: You have: NOT ( [<5000 Gold] OR NOT ([>4 Backstab] OR [NOT THIEF]) ) With 5000+ gold and ("not a thief" or >4 Backstab) : = NOT (FALSE OR NOT (FALSE OR TRUE) ) = NOT (FALSE OR NOT (TRUE) ) = NOT (FALSE OR FALSE) = NOT (FALSE) = TRUE (incorrect, as they were "not a thief") You want: NOT ([<5000 Gold] OR ([>4 Backstab] OR [NOT THIEF]) ) 146: <5000 Gold 151: >4 Backstab 152: NOT THIEF 153: (151 OR 152) - remove the negation on this one (use relation 0x103/259) 154: NOT (146 OR 153)
  21. option 0 alters the Mixed-case string option 1 alters the lower-case string, in the few (if any) places it's used.
  22. Hard to fault you there, you wouldn't be the only one. It should be an easy fix @subtledoctor, just replace both the spaces in the match text with this thing: [ %TAB%]*
  23. The lines most likely failing are these two (from comp/setup_metamagic.tpa, line 379-380): The first parts of each replacement (mageScreen:SequenceSpell / mageScreen:UnSequenceSpell) shouldn't have changed even with LeUI, so it's likely the latter part (in the parenthesis) that has changed (the same part that my code changes). Each has two entries separated by a comma, the first part can be left as is, only the second entry in each should need changing to 'DEFAULT'. If you do a text search for them in UI.menu, you might be able to manually edit it to work. They're are multiple instances of each in the default file, so they're may still be multiple instances to look for with LeUI.
×
×
  • Create New...