Jump to content

kjeron

Members
  • Posts

    485
  • Joined

  • Last visited

Posts posted by kjeron

  1. 2 hours ago, subtledoctor said:

    3) Can I manipulate a character like teleporting them somewhere work in Timestop?

    Any action you can fully execute while the game is paused can be done by a creature during time stop, whether or not they are immune.  Every action in INSTANT.IDS should qualify.

    JumpToPoint() is not on that list, but can be added, though that may cause other scripts to misbehave.

    ReallyForceSpell()/Point() are on the list, and can teleport creatures with the teleport opcode as long as it uses projectile (1|none) and has no delay.

  2. You need "Face Target" set, BIT0 of offset 0x40.  SPRDRABU.BAM will also require "Mirror X Axis".  Set # of orientations (0x38) to 16.

    You will likely want "Modify for height", and for SPRDRABU.BAM, some extra height using a positive "Position: Z", unless the creature using it is using one of the hardcoded dragon animations.

    However, it's direction is based on where the creature is moving, not the direction it is facing.  If used on a stationary creature, it will remain facing downward until the creature moves.

  3. 4 hours ago, Greenhorn said:

    I thought that I was imagining things but then checked on my final Black pits BG:SoD EE save after defeating Baeloth on that annoying pesk Dinguer. There are strange things with Blind spell, if cast on party member outside combat on failed save it dispels all current buffs without actually blinding him/her despite text in dialogue window.

    That's not the Blindness spell, that's a part of the Black Pits custom AI Script for the party:

    IF
    	OR(2)
    		AreaCheck("OH9360")  // The Black Pits: Hub
    		!AreaCheckAllegiance(ENEMY)
    	OR(10)
    		StateCheck(Myself,STATE_CHARMED)
    		StateCheck(Myself,STATE_BERSERK)
    		StateCheck(Myself,STATE_PANIC)
    		StateCheck(Myself,STATE_STUNNED)
    		StateCheck(Myself,STATE_HELPLESS)
    		StateCheck(Myself,STATE_SILENCED)
    		StateCheck(Myself,STATE_CONFUSED)
    		StateCheck(Myself,STATE_FEEBLEMINDED)
    		StateCheck(Myself,STATE_DISEASED)
    		StateCheck(Myself,STATE_BLIND)
    THEN
    	RESPONSE #100
    		ApplySpellRES("BPDISPEL",Myself)  // Dispel Magic
    END
    4 hours ago, Greenhorn said:

    But more serious matter is that Inquisitor's or Priest of Helm innate True sight ability dispels not only hostile illusion spells ( like Mirror image ) but also yours disabling Blind spell cast on enemy mage. I'm sorry if this was already reported and is a well known thing but it came as complete surprise for me. 

    None of the effect removals (Dispel/Detect/Breach/Thrust/etc..) differentiate between buffs and debuffs.  The Blindness spell is Illusion school, and it's on an enemy, so it gets removed.

  4. One of the problems is with these lines here:

        OUTER_TEXT_SPRINT stack "20"
        OUTER_TEXT_SPRINT lore "0"
        OUTER_TEXT_SPRINT weight "0"
        OUTER_TEXT_SPRINT enchantment "1"

    Weidu automatically attempts to evaluate integer variables, with or without %%, as such, this is valid:

    OUTER_SPRINT a ~1~
    OUTER_SET b = ~a~ + 1

    The "stack" listed among the match values is automatically evaluated to 20 before matching.

  5. 22 hours ago, Raduziel said:

    Now let's see what it is about...

    Edit: I'm lost about this one, to be honest.

    I have the PRO file that is chocking the install inside Lib\Spheres\Import\Common

    The code should be installing this properly:

    ACTION_IF !FILE_EXISTS_IN_GAME ~IDPRO255.PRO~ BEGIN
    
    ADD_PROJECTILE ~DeitiesofFaerun/Lib/Spheres/Import/Common/IDPRO255.PRO~
    
    END ELSE BEGIN
    	OUTER_SPRINT	file ~IDPRO255~
    	COPY_EXISTING ~PROJECTL.IDS~	override
    		REPLACE_EVALUATE ~[%WNL%^]\(0x[0-9A-F]+\|[0-9]+\)[ %TAB%]+%file%[ %TAB%%WNL%$]~	BEGIN	SET	EVAL ~%file%~ = (~%MATCH1%~ +1)	END	~%MATCH0%~
    	BUT_ONLY
    END

    However, this piece of the code appears to be doing nothing at all.

    I'm open to suggestions, fellow members of this forum.

    Blind guess: IDPRO255.pro already exists in the override/biffs, but is NOT in PROJECTL.IDS (for whatever reason - botched uninstall maybe).

  6. 7 hours ago, Graion Dilach said:

    I still stand by my earlier suspicion that the Lua sandbox embedded within the UI code in the EEs are case-sensitive in all platforms, including Windows, and I still cite both the way the CHARSND.2DA header interacts with the filenames_stringrefs UI array and how lowercase portrait size suffix identifiers are ignored on Windows as proof of my suspicion.

    The parent resource field of EFF files has a similar issue.  It will not match (for immunity, sequencers, contingencies) if it contains any lowercase letters.  The casing of the actual file does not matter though in this case.

  7. That opcode affects a specific stat, namely STATS[167|MELEE_DAMAGE_BONUS].  It's value is added to melee weapon/fist damage.

    Choosing the "Set %" mode will only alter the stat's value by that %. If the stat is currently zero (the default), a 1000x bonus isn't going to change that.

    It's "Set %" mode is also very broken:

    • it's effect is applied in triplicate.  A 200% bonus grants 800% (2*2*2), a 300% bonus grants 2700% (3*3*3).
    • it does not stack with itself consistently.
    • as an equipped effect, the Equipment comparison mechanic will sometimes apply it to party members without actually equipping it.

    I would suggest using op332 with param1=100, for each of the physical damage types.  It will affect all sources of the damage, not just weapons, but it's the only way to boost base damage by a %.

  8. 8 hours ago, Galactygon said:

    Without the above flag implemented you could also change the HOLD and similar projectiles to exclude undead to avoid changing the spells, assuming mod spells use those projectiles. But yes, the "bypass opcode 101" flag is preferrable from a mod compatibility point of view.

    Keep in mind that projectile SPLPROT targeting fields only work for area-effect projectiles, as it controls which creatures are targeted with the "explosion projectile".

  9. No, casting a spell via script overrides the spells targeting mode.  If you target a creature, the projectile will track that creature, exploding when it reaches them, rather than exploding at the targeted location.  So if they target you, you would never be able to escape the AoE.

  10. On 6/21/2023 at 3:13 PM, Bubb said:

    Swings:

    • Real attack swings that pass their hit roll trigger HitBy(<attacker AI type>, 0). For some reason weapon abilities with type = RANGED don't trigger HitBy() as part of the swing.
    • op120 can still block a hit even after HitBy() is triggered by a swing.

    The likely reason for ranged weapons is so that the "hit" doesn't trigger until the projectile impacts the target.  With melee weapons, it's not an issue, as they ignore their projectile field.  With ranged weapons, a projectile impact is not guaranteed, and can even be setup to never occur.

    I would guess that the extra step for op120 is to stop effects that aren't tied to the projectile (those using anything  other than "Preset Target" and "Original Caster").

  11. 4 hours ago, polytope said:

    In my tests neither THAC0 nor damage bonus stacked, not even when using duplicate flame tongues in each hand, but the erroneously low +2 was used for a "winter wolf" cre that's also a lycanthrope and undead. Is it possible you had another source of damage like the bonus for striking at unarmed (+4)?

    op178/179 apply in reverse order (the oldest has precedent), so whichever is listed first among the equip effects will apply.   The THAC0 (op178) effects are listed in order: LYCAN, WINTER_WOLF, UNDEAD, TROLL.

    However, the sword does not use op179 for damage, but instead applies the damage directly through op177, so any that match will apply.

    Enchantment level is a "best of", so it doesn't matter what order they are in.

  12. 3 hours ago, Jazira said:

    And... I still can't figure out why the Staff of the Magi, for example, doesn't have any enchantment level shown in its name.

    A lot of the named Staves are straight from PnP (at least in name, not so much in function), where they are listed along with Rods and Wands, none of which list an enchantment level in their name.

  13. 58 minutes ago, jmerry said:

    The reason not to go too crazy on adding CLASS.IDS entries is that CLASS is a one-byte field. There are only 256 possible values available, and a bit over half are already used. We wouldn't want to eat up all the modder space here.

    If CLASS is to be used, it would be better to create a generic CLASS for use by any creature, based on Plane/Para/Quasi(WATER, FIRE, AIR, EARTH, SMOKE, MAGMA, OOZE, ICE, LIGHTNING, RADIANCE, MINERAL, STEAM, VACUUM, ASH, DUST, SALT, POSITIVE, NEGATIVE), rather than one specific to a single race (MEPHIT_ICE, MEPHIT_DUST, etc...)

    Otherwise, re-purposing one of the wasted proficiency stats for a similar purpose: 3 bits Good/Evil alignments + 3 bits Law/Chaos alignments + 4 bits Elemental + 2 bits Positive/Negative + 2 bits Ethereal/Astral + 2 bits Shadow/Fey = 16 bits covering all necessary planes.

  14. 1 hour ago, polytope said:

    Isn't the magical weapon slot still used for Polymorph/Shapechange attacks etc.? It doesn't make sense to steal a mage-in-golem-form's iron hands. Even with other things like Spiritual Hammer it's hard to imagine taking it away from the cleric who cast the spell. Melf's Meteors are the only case I could see as a stealable item.

    Yes, it's implemented that way because ITM files don't have a non-stealable flag.  However, with regards to weapons such as Shillelagh, Flame Blade, Spiritual Hammer, Moonblade, etc..., the person stealing doesn't necessarily know that it's a magically created weapon.

    1 hour ago, polytope said:

    Currently selected weapon is visible in game for most animations, so it would be obvious to the player, but again, how could a thief stealthily steal a sword currently gripped by someone else's hands, rather than from a scabbard?

    You can steal a bow out of there hand, but not a sword ... the logic is already broken.

  15. And that still wouldn't cover all possibilities.

    The currently selected weapon, the Fist slot, and the Magical Weapon slot cannot be stolen, without any regard to skill or the unstealable flag.

    The launcher (Bows, Crossbows, Slings) currently used by the selected ammo cannot be stolen if you (the pickpocket) currently have that type of launcher equipped (with ammo).

  16. 6 hours ago, Luke said:

    Before I forget (quoting your own thread):

    • Opcode 337 (remove effects by opcode) would falter against these
    • Opcode 198 (reflect specified effect) would falter against these
      • I know this opcode is (partially) bugged and rarely used (if we do not consider mods), but still worth mentioning...

    Op337 has since been fixed, it works fine in v2.6.6.0.

    IIRC, the issue with op198, in relation to op177, is that it will reflect the EFF using the "Impact Projectile (0xa0)" specified in the EFF, not the spell's projectile, which would prevent the EFF from being shared by multiple spells.

  17. 1 hour ago, Galactygon said:

    You don't need EEx for any of that. You can use opcode 183 to bypass undead resistance for Chill Touch (just found out!). Set parm2 to 0x10 to look for a ring, since undead have RING95.itm equipped. This and similar undead-centric effects should be possible to do for Fixpack.

    Knockdown that bypasses 101 is trickier since you need to look for many item types (i.e. 0x1c, and other weapon types).

    Or use op283 for the EFF, as it also ignores immunity.  Does it really matter that remove curse will remove it?

  18. 4 hours ago, Bubb said:

    There is one, and only one exception to this: op337 has special casing that considers op177's driven .EFF file.

    All (or at least most) of the opcode-specific "Cure/Remove X" opcodes can see enough of the EFF file to remove the driving opcode. (2, 4, 11, 46, 47, 48, 64, 70, 75, 77, 79, 81, 116, 136, 160, 161, 162, 163, 164, 212, 224, 240, 242, 266, 270, 279).  Like op337, they all primarily look to match the EFF's opcode.  If they don't have the same exception, maybe theirs is coded elsewhere (them being original, not EE-exclusive like 337).

  19. 1 hour ago, Galactygon said:

    There's a different method not yet mentioned in this thread of using external child status .effs using a commonly-agreed list of msectypes instead of child status .spls which might even be viable in BG2o (non-EE). It would be less clutter-intensive for sure since you only need to create a number of .effs for different graphical effects (i.e. #hold01.eff, #hold02.eff, etc), rather than one child spell per spell. Also, you might not even need to farm out status removal into child removal spells since you can use opcode 221 instead

    EFF files can only be removed via their own msectype if they are applied via op248/249/272.  When maintained via op177/283 this does not work in the EE's.

    1 hour ago, Galactygon said:

    Too bad opcode 321 doesn't (iirc) selectively dispel external .effs that have matching parent resource field (0x94) set - perhaps this can be changed in the future?

    EFF files maintained via op177/283 can only be removed based on their opcode, no other field checks work (msectype, school, dispel, parent).

    EFF's would be a far more ideal method, if removing them was easier.

  20. 2 hours ago, jmerry said:
    • If Master ID is dealt damage or becomes unconscious, this creature is moved to area "NO_AREA.ARE". This will delete non-global creatures from the game, unless such an area has been added to the game.

    Does that look good to everyone?

    "Took damage" can be misleading, since, just like spell disruption, zero damage will trigger it.

    2 hours ago, Bubb said:

    Also, a correction: I missed a part of the Project Image handling. op12 specifically destroys the Project Image clone of the target, regardless of the character's resistances. To me this feels like a bug, since the clone's processing goes out of its way to check if its master "took damage," just for the nuance of that check to be ignored by op12.

    Interestingly this was NOT the case in v2.6.5, 100% damage resistance would prevent the image from being destroyed.  Regression maybe?

  21. 2 hours ago, Graion Dilach said:

    Most people go with lowercase. Prior to casefolding, the convention on Linux was also to use tolower on everything (this broke on EEs, because Beamdog used FULLCAPS for a few resources).

    Lowercase may be fine for the files, but the resource fields within the files need to be UPPERCASE.  While it does not matter 99% of the time, the few resource fields that do care will not work with lowercase letters.

×
×
  • Create New...