Skip to content

Original Poison Weapon ability for BG1:EE and BG2:EE

TressetTresset Member, Moderator Posts: 8,268
edited March 2016 in General Modding
This mod simply makes the Poison Weapon ability of Blackguards and Assassins work exactly like it used to in BG:EE v1.3. To install just extract the spcl423.spl file into your game's override folder. Make sure to put the one in the BG1EE folder in your BG1:EE override and the one in the BG2EE folder in your BG2:EE override. Download link.
Note: The descriptions will be wrong, but they always were anyway.

I will make more soon...

(@Dee has mentioned that the official version of this ability may get further re-balanced because of some math errors. I have other plans for modding this but, I may hold off until I see what the devs cook up.)
«1

Comments

  • The user and all related content has been deleted.
  • TressetTresset Member, Moderator Posts: 8,268
    @subtledoctor BG:EE v1.3. I was not aware until you mentioned it that it was different in vanilla.
  • [Deleted User][Deleted User] Posts: 0
    edited March 2016
    The user and all related content has been deleted.
  • AstroBryGuyAstroBryGuy Member Posts: 3,437
    edited March 2016
    Tresset said:

    @subtledoctor Unfortunately it isn't that simple. I have a few things to say about this, and I hope you don't hate me by the end of it. First of all, poison hitting through images and skins is hardcoded as far as I know, so, unless things have changed with 2.0, it can't be modded. Second, you can blame me for poison striking through mirror images as I reported the issue that caused them to make this change. Third, the original behavior of poison that you like was actually 'bugged' in a certain way. One day I noticed that, while fighting Nimbul with my blackguard, mirror images doubled as an immunity to poisoning effect. When my blackguard, who had the old fashioned poison weapon active, struck the REAL Nimbul while he had mirror images up Nimbul did NOT get poisoned. It turned out that he was completely immune to poison while he had at least one image. Yes I agree, what you say IS utterly, monstrously, unbelievably stupid, but to me it is equally stupid to slice a caster with a weapon literally oozing poison and he is mysteriously immune to it just because he has a phantom of himself standing next to him. It also makes no sense for said caster to walk up to an iron golem and practically inhale its entire poison gas spell and be totally immune because he has stoneskin or a phantom next to him. Unfortunately, the devs could not find any possible way to reconcile between these two unbelievably stupid situations. In the end they had to just pick one and, since I made a report to them about it, they changed it. I hope that this clarifies the situation a bit. I am sorry that you don't like the change, but I just thought you should know that there is more to the story and that it isn't like the devs are totally stupid or that do things without good reason.

    By the description of how mirror image is supposed to work, you should not have been able to hit Nimbul while he still had mirror images up:

    "The images seem to shift from round to round, so that an enemy must first hit every image before being able to hit the wizard."

    So, mirror image was bugged to allow you to hit the wizard, but the poison didn't work because of the mirror image (as it should't have since you shouldn't have been able to hit Nimbul). Wouldn't the solution have been to fix mirror image so that it functioned like it was supposed to? Then for poison AoEs (e.g., gas clouds), use the "Bypass Mirror Image" flag that Fireball uses.

    EDIT: Disregard, I was remembering BG1's Mirror Image behavior.
  •  TheArtisan TheArtisan Member Posts: 3,277
    edited March 2016
    Oh it doesn't just stop at poison. If you hit a mirror image with Melf's Acid Arrow, it won't do damage but the target will, regardless, take acid damage on the following rounds. I know for a fact that this stuff is hardcoded and as far as I can remember, it has always been this way. As stupid as it is, the above form of 'fixing' the problem was a brute force solution and, in my opinion, isn't much of an improvement.


    By the description of how mirror image is supposed to work, you should not have been able to hit Nimbul while he still had mirror images up:

    "The images seem to shift from round to round, so that an enemy must first hit every image before being able to hit the wizard."

    I'm sorry, but huh? This is what I have: "However, it is important to note that this will not protect the caster against every attack, as it is possible for an enemy to choose the real caster amongst all the images."
  • AstroBryGuyAstroBryGuy Member Posts: 3,437

    Oh it doesn't just stop at poison. If you hit a mirror image with Melf's Acid Arrow, it won't do damage but the target will, regardless, take acid damage on the following rounds. I know for a fact that this stuff is hardcoded and as far as I can remember, it has always been this way. As stupid as it is, the above form of 'fixing' the problem was a brute force solution and, in my opinion, isn't much of an improvement.


    By the description of how mirror image is supposed to work, you should not have been able to hit Nimbul while he still had mirror images up:

    "The images seem to shift from round to round, so that an enemy must first hit every image before being able to hit the wizard."

    I'm sorry, but huh? This is what I have: "However, it is important to note that this will not protect the caster against every attack, as it is possible for an enemy to choose the real caster amongst all the images."
    Whoops, that's the original BG1 behavior for Mirror Image.
  • TressetTresset Member, Moderator Posts: 8,268
    @Artemius_I Well, Melf's Acid Arrow always did something like that. The change to mirror images and stoneskins only affected the poison status condition. I just tested Melf's Acid Arrow in vBG2 and in BG1:EE 2.0; it works the same way in both games, and its behavior in regard to images is equally odd in both. In other words Melf's Acid Arrow is an entirely different issue.
  •  TheArtisan TheArtisan Member Posts: 3,277
    @Tresset My point that the way mirror images stopped poison was very forced. As you pointed out, the solution was to make mirrored targets completely immune to poison while mirror image is active, which I consider hardly better than the opposite. If the same immunity effect was given towards Melf's, we'd have the exact same situation.
  • TressetTresset Member, Moderator Posts: 8,268
    @Artemius_I Ah. Clearly I didn't exactly understand your point. I should probably go to bed soon.

    Remember folks: this stuff isn't always as cut and dry as you may think!
  • kjeronkjeron Member Posts: 2,368

    By the description of how mirror image is supposed to work, you should not have been able to hit Nimbul while he still had mirror images up:

    "The images seem to shift from round to round, so that an enemy must first hit every image before being able to hit the wizard."

    So, mirror image was bugged to allow you to hit the wizard, but the poison didn't work because of the mirror image (as it should't have since you shouldn't have been able to hit Nimbul). Wouldn't the solution have been to fix mirror image so that it functioned like it was supposed to? Then for poison AoEs (e.g., gas clouds), use the "Bypass Mirror Image" flag that Fireball uses.

    EDIT: Disregard, I was remembering BG1's Mirror Image behavior.

    Actually that is how it is worded in IWDEE as well, so this is a bug needing to be fixed.
  • GrammarsaladGrammarsalad Member Posts: 2,582
    kjeron said:

    Tresset said:


    @kjeron How do you mod that? The bypass mirror image flag or something?

    Opcode 326/318 and Splprot.2da with:

    "X 273 0x40000000 7" for a Mirror Image check.
    "Y 88 0 5" for Stoneskin effect
    "Z 199 0 5" for the other Stoneskin(Golem) effect
    "YZ 259 Y Z" for either stoneskins effect
    "XYZ 199 X YZ" for either mirror image or stoneskins
    For Poison Weapon Ability(SPCL423.spl):

    COPY_EXISTING_REGEXP GLOB ~SPCL423.spl~ ~override~
    LPF CLONE_EFFECT INT_VAR silent = 1 match_opcode = 248
    STR_VAR insert = ~first~ match_resource = ~SPCL422~ resource = ~BLOCK025~ END
    LPF CLONE_EFFECT INT_VAR silent = 1 match_opcode = 249
    STR_VAR insert = ~first~ match_resource = ~SPCL422~ resource = ~BLOCK025~ END

    New Blank SubEFF(BLOCK25.eff):

    WRITE_LONG 0x20 %XYZ%
    WRITE_SHORT 0x2c 100
    WRITE_ASCII 0x30 ~BLOCK025~ #8

    New Blank Subspell(BLOCK25.spl):

    LPF ADD_SPELL_EFFECT INT_VAR opcode = 101 target = 2 parameter2 = 25 END
    // Immunity to Effect "Poison"
    LPF ADD_SPELL_EFFECT INT_VAR opcode = 169 target = 2 parameter2 = 6 END
    // Prevent Portrait Icon "Poison"
    LPF ADD_SPELL_EFFECT INT_VAR opcode = 267 target = 2 parameter1 = 14662 END
    // Prevent Display String "Poisoned", there are others, just a sample.
    If the target has Mirror Image or Stoneskins up, they will not become poisoned. Can be extended for items that poison on hit or for other effects as well.
    All is right with the world again
  • SkaroseSkarose Member Posts: 247
    @Tresset you are a hero to Bhaalspawn everywhere and I'll eternally be in your debt!

    Yay, The Assassin is back baby!
  • DarKelPDarKelP Member Posts: 183

    kjeron said:

    Tresset said:


    @kjeron How do you mod that? The bypass mirror image flag or something?

    Opcode 326/318 and Splprot.2da with:

    "X 273 0x40000000 7" for a Mirror Image check.
    "Y 88 0 5" for Stoneskin effect
    "Z 199 0 5" for the other Stoneskin(Golem) effect
    "YZ 259 Y Z" for either stoneskins effect
    "XYZ 199 X YZ" for either mirror image or stoneskins
    For Poison Weapon Ability(SPCL423.spl):

    COPY_EXISTING_REGEXP GLOB ~SPCL423.spl~ ~override~
    LPF CLONE_EFFECT INT_VAR silent = 1 match_opcode = 248
    STR_VAR insert = ~first~ match_resource = ~SPCL422~ resource = ~BLOCK025~ END
    LPF CLONE_EFFECT INT_VAR silent = 1 match_opcode = 249
    STR_VAR insert = ~first~ match_resource = ~SPCL422~ resource = ~BLOCK025~ END

    New Blank SubEFF(BLOCK25.eff):

    WRITE_LONG 0x20 %XYZ%
    WRITE_SHORT 0x2c 100
    WRITE_ASCII 0x30 ~BLOCK025~ #8

    New Blank Subspell(BLOCK25.spl):

    LPF ADD_SPELL_EFFECT INT_VAR opcode = 101 target = 2 parameter2 = 25 END
    // Immunity to Effect "Poison"
    LPF ADD_SPELL_EFFECT INT_VAR opcode = 169 target = 2 parameter2 = 6 END
    // Prevent Portrait Icon "Poison"
    LPF ADD_SPELL_EFFECT INT_VAR opcode = 267 target = 2 parameter1 = 14662 END
    // Prevent Display String "Poisoned", there are others, just a sample.
    If the target has Mirror Image or Stoneskins up, they will not become poisoned. Can be extended for items that poison on hit or for other effects as well.
    All is right with the world again
    I hate that poison and other effects can bypass mirror image, it seems this can fix the bug. But I have no idea of modding... :disappointed:

    @kjeron Please, Could you help me and create these files? Thanks!
  • kjeronkjeron Member Posts: 2,368
    DarKelP said:

    I hate that poison and other effects can bypass mirror image, it seems this can fix the bug. But I have no idea of modding... :disappointed:
    @kjeron Please, Could you help me and create these files? Thanks!

    I am currently in the process of moving, and will be some time before I have proper internet access again, the most I can do right now is post text. I've already created the mod, I've been using it myself since the 2.0 patch hit, but I will not be able to upload it until I have settled.
  • DarKelPDarKelP Member Posts: 183
    edited September 2016
    kjeron said:


    I am currently in the process of moving, and will be some time before I have proper internet access again, the most I can do right now is post text. I've already created the mod, I've been using it myself since the 2.0 patch hit, but I will not be able to upload it until I have settled.

    Have you already created the mod? That's great. Take all time you need, I will wait as long as necessary (I've already been waiting for two years when I reported this bug but they didn't fix it...). Thanks so much, Kjeron
  • The user and all related content has been deleted.
  • DarKelPDarKelP Member Posts: 183

    If kjeron doesn't get around to it, this is on my list. I just have zero time for modding these days...

    Those are good news. The bug was introduced with update 2.0. It is really anoying when playing solo.

    Kjeron posted the code which should fix the bug.
    kjeron said:



    Opcode 326/318 and Splprot.2da with:


    "X 273 0x40000000 7" for a Mirror Image check.
    "Y 88 0 5" for Stoneskin effect
    "Z 199 0 5" for the other Stoneskin(Golem) effect
    "YZ 259 Y Z" for either stoneskins effect
    "XYZ 199 X YZ" for either mirror image or stoneskins
    For Poison Weapon Ability(SPCL423.spl):

    COPY_EXISTING_REGEXP GLOB ~SPCL423.spl~ ~override~
    LPF CLONE_EFFECT INT_VAR silent = 1 match_opcode = 248
    STR_VAR insert = ~first~ match_resource = ~SPCL422~ resource = ~BLOCK025~ END
    LPF CLONE_EFFECT INT_VAR silent = 1 match_opcode = 249
    STR_VAR insert = ~first~ match_resource = ~SPCL422~ resource = ~BLOCK025~ END

    New Blank SubEFF(BLOCK25.eff):

    WRITE_LONG 0x20 %XYZ%
    WRITE_SHORT 0x2c 100
    WRITE_ASCII 0x30 ~BLOCK025~ #8

    New Blank Subspell(BLOCK25.spl):

    LPF ADD_SPELL_EFFECT INT_VAR opcode = 101 target = 2 parameter2 = 25 END
    // Immunity to Effect "Poison"
    LPF ADD_SPELL_EFFECT INT_VAR opcode = 169 target = 2 parameter2 = 6 END
    // Prevent Portrait Icon "Poison"
    LPF ADD_SPELL_EFFECT INT_VAR opcode = 267 target = 2 parameter1 = 14662 END
    // Prevent Display String "Poisoned", there are others, just a sample.
    If the target has Mirror Image or Stoneskins up, they will not become poisoned. Can be extended for items that poison on hit or for other effects as well.
  • kjeronkjeron Member Posts: 2,368
    DarKelP said:


    Those are good news. The bug was introduced with update 2.0. It is really anoying when playing solo.
    Kjeron posted the code which should fix the bug.

    Just want to clarify something:
    That was for the v1.3 Poison Weapon ability, not the v2.0. The v2.0 ability is quite a bit simpler to alter.
  • kjeronkjeron Member Posts: 2,368
    @DarKelP
    Sorry for the long delay.
    This should work for any v2.0+ game, giving you the option to prevent Poison Weapon from bypassing Mirror Images only, Stoneskins only, or both as different install options.
    It will only affect the Poison Weapon Ability, Poisoned Arrow, Poisoned Throwing Dagger, and Dagger of Venom. If there are any other specific things you would like to not bypass I could add them in, just let me know.
  • DarKelPDarKelP Member Posts: 183
    @kjeron

    Wow, thanks. Sorry for the delay in replying too, I just see your post and try the mod. It works perfect.

    It would be possible that "save Vs" effects didn't bypass mirror image? Like poison from Darts of Wounding or the paralysis effect caused by Vampiric wolf or ghouls. It's not real when someone hits an image and my wizard has to surpass a saving throw...
  • kjeronkjeron Member Posts: 2,368
    DarKelP said:

    @kjeron
    It would be possible that "save Vs" effects didn't bypass mirror image? Like poison from Darts of Wounding or the paralysis effect caused by Vampiric wolf or ghouls. It's not real when someone hits an image and my wizard has to surpass a saving throw...

    haha .... yes, I guess it only fixes the players options, not the NPC's.
    I should have something ready by tomorrow to include those.
  • The user and all related content has been deleted.
  • kjeronkjeron Member Posts: 2,368
    edited December 2016
    @DarKelP Okay, I've redone the mod(manually uninstall the other one first). It now has a variety of options, each with a MI+SS, MI only, & SS only version. Group 1 and 2 are mutually exclusive with each other, but Group 2 can have any or all of its options at one time.
    Group 1:(Any effect)
    - Everything (Prevents every weapon + Poison Weapon Ability from bypassing)
    - Logical Item Exclusions(As above, except that AoE, Gaze, & Anti-Magic Weapons will bypass)
    Group 2:(Specific Effects)
    - Poison
    - Disease
    - Level Drain
    - Paralyze(Melee only, Since most ranged are Gaze attacks)

    Logical Exclusions will allow the vanilla items that either dispel or interfere with magic on-hit to continue to bypass MM/SS.
     Bala's Axe, Wizard Slayer
    Unholy Reaver
    NPC Unholy Reaver
    Ir'revrykal +5
    Angurvadal +4
    Angurvadal +5
    Carsomyr +5
    Carsomyr +5
    Carsomyr +6
    Deva Dispelling Weapon
    Deva Dispelling Weapon
    The Brick +2
    Wild Sling +1
    Staff of the Magi
    It will not allow AoE weapons(Arrows of Detonation) to apply Poison Weapon though, and I don't think I could change that either.

    None of these will prevent a Monk's Fist's on-hit effects granted from abilities or gauntlets, as some of them are applied without resource, so they are a bit trickier to deal with. Any on-hit effects on the actual Fist items themselves will be prevented though.

    Download: See latest post.
    Post edited by kjeron on
  • The user and all related content has been deleted.
  • kjeronkjeron Member Posts: 2,368
    I will also note that group 2 blocks all of a weapons effects if the chosen effect is present, not just the chosen effect. This is partly necessary to catch all the A/V attachments(strings/icons/vvc's/sounds) that come with an effect, and partly because it would almost certainly require manually patching each item or a major overhaul of items otherwise. It's something that could be done, but not something I have available time for right now.
  • DarKelPDarKelP Member Posts: 183
    edited December 2016
    Great!! This is what I was looking for. Now I can try a solo run with my sorcerer in legacy of bhaal difficulty :smile: . Thank you!

    I have some doubts:
    -Group 1 always blocks all of weapons effects, range and melee?
    -What's the difference between Logical Item exclusions: Mirror image for example, and group 2 select all effects: Mirror image?

    One thing I noticed, with group 1 (Logical Item Exclusions included), mirror image makes you immune to Basilisk Gaze attacks, I imagine this is not intended. With group 2 it seems works fine, Basilisk gaze is OK, and poison, paralyze... don't bypass mirror image.

    An awesome work again! Love this mod.
  • kjeronkjeron Member Posts: 2,368
    DarKelP said:

    Great!! This is what I was looking for. Now I can try a solo run with my sorcerer in legacy of bhaal difficulty :smile: . Thank you!
    I have some doubts:
    -Group 1 always blocks all of weapons effects, range and melee?

    The first option for Group 1 is a sort of dumb/blind option, it enables Mirror Image/Stone skin to block the entirety of a weapons on-hit effects regardless of what they may be. It's basically turns them into a decrementing combination of Protection from Normal&Magical weapons, almost. This was where the mod started.
    DarKelP said:

    -What's the difference between Logical Item exclusions: Mirror image for example, and group 2 select all effects: Mirror image?

    Those 4 effects were just the most relevant to me(undead traits mostly), but there are tons of unique/random on-hit effects that the first group will prevent beyond just those 4. It's what I used until I started tinkering with Stoneskin's mechanics.
    DarKelP said:


    One thing I noticed, with group 1 (Logical Item Exclusions included), mirror image makes you immune to Basilisk Gaze attacks, I imagine this is not intended. With group 2 it seems works fine, Basilisk gaze is OK, and poison, paralyze... don't bypass mirror image.

    A minor little typo, no install errors, but a major impact, sorry about that. Fixed version in this post.
  • St. AndrewSt. Andrew Member Posts: 86
    Is it possible to only block poison except when physical damage is done? so as to preserve the original mechanics of stoneskin/mirror image, while making it work realistically with my assassin (so he isn't 1 shotting mages through all spell protections)?

    I'm not familiar enough with the mechanics to understand everything you've explained, but appreciate your work on this fix and would like to use it. Thanks.
  • kjeronkjeron Member Posts: 2,368

    Is it possible to only block poison except when physical damage is done? so as to preserve the original mechanics of stoneskin/mirror image, while making it work realistically with my assassin (so he isn't 1 shotting mages through all spell protections)?

    In short, Stoneskin yes, Mirror Image no.
    Mirror Image is either always bypasses or never bypasses.
    AI scripts do have a trigger capable of detecting which attacks actually hit under Mirror Image, but there is no way to ensure their action takes place. Scripts are great for taking actions, but horribly unreliable when it comes to reactions.
Sign In or Register to comment.