Mod breaks ability to sneak attack with offhand crossbow.
fix: edit SneakAttackMaster_Interrupt.txt new entry "Interrupt_SneakAttack" type "InterruptData" data "DisplayName" "hd8a8ad84g4f65g46fdgb04dg5b91daf7f291;1" data "Description" "h23701712ge994g40bfga729g36dc38dc7c65;2" data "Icon" "Action_SneakAttack_Melee" data "InterruptContext" "OnCastHit" data "InterruptContextScope" "Self" data "Container" "YesNoDecision" data "Conditions" "Self(context.Source,context.Observer) and HasDamageEffectFlag(DamageFlags.Hit) and ((WieldingFinesseWeaponInSpecificHand(context.Observer,false) and IsMainHandAttack()) or (WieldingFinesseWeaponInSpecificHand(context.Observer,true) and IsOffHandAttack()) or IsThrowAttackRoll() or (WieldingWeapon('Ammunition', false, true, context.Observer) and IsRangedWeaponAttack())) and not IsCritical() and not IsKillingBlow() and (HasDamageEffectFlag(DamageFlags.AttackAdvantage) or HasAllyWithinRange('SG_Incapacitated',1.5)) and not HasDamageEffectFlag(DamageFlags.AttackDisadvantage) and not (SpellId('Projectile_SneakAttack') or SpellId('Target_SneakAttack')) and not AnyEntityIsItem()" data "Properties" "IF(IsMeleeAttack()):DealDamage(LevelMapValue(SneakAttack), MainMeleeWeaponDamageType);IF(IsRangedAttack()):DealDamage(LevelMapValue(SneakAttack), MainRangedWeaponDamageType);IF(HasPassive('MAG_ForcefulSneakAttack_Passive', context.Source)):DealDamage(1d4, Force)" data "Cost" "SneakAttack_Charge:1" data "Stack" "SneakAttack" data "Cooldown" "" data "InterruptDefaultValue" "Enabled" data "EnableCondition" "HasActionResource('SneakAttack_Charge',1,0,false,false,context.Source) and (WieldingFinesseWeaponInSpecificHand(context.Source, false) or WieldingFinesseWeaponInSpecificHand(context.Source, true) or WieldingWeapon('Ammunition', false, true, context.Source) or SpellTypeIs(SpellType.Throw)) and (not HasStatus('SG_Polymorph') or Tagged('MINDFLAYER'))" data "EnableContext" "OnActionResourcesChanged;OnEquip"
(I edited data section to add condition for ranged atack)
data "Conditions" "Self(context.Source,context.Observer) and HasDamageEffectFlag(DamageFlags.Hit) and ((WieldingFinesseWeaponInSpecificHand(context.Observer,false) and IsMainHandAttack()) or (WieldingFinesseWeaponInSpecificHand(context.Observer,true) and IsOffHandAttack()) or IsThrowAttackRoll() or (WieldingWeapon('Ammunition', false, true, context.Observer) and IsRangedWeaponAttack())) and not IsCritical() and not IsKillingBlow() and (HasDamageEffectFlag(DamageFlags.AttackAdvantage) or HasAllyWithinRange('SG_Incapacitated',1.5)) and not HasDamageEffectFlag(DamageFlags.AttackDisadvantage) and not (SpellId('Projectile_SneakAttack') or SpellId('Target_SneakAttack')) and not AnyEntityIsItem()"
One more thing (and my opinion) the most balanced way is to move this to lvl 5. or lvl 6. Every fighter class gets it's second attack at this point. And rogue got dodge... well eats you reaction and expertise... out of combat skills at lvl 6... Warior can use two battle manuvers... or four... and oneshot some poor dragon... rogue can get half damage once per round ang then get full damage from second and third attack.... perfectly balanced ).
to move this ability to lvl 5 - edit Progressions.lsx as follows
Do keep in mind that <attribute id="UUID" type="guid" value="19857e46-f5dc-4a9f-847e-5f714ceef7b1"/> changes with every level, so replacing value="5" to value="6" will not help
Hi Friend, really love the mod! I am currently trying to add a UI icon for the Sneak Attack Charges and think I got some decent icons made. I can't however for the life of me figure out what the correct structure is suppossed to be to couple the icons with the action resource... If you are interested I will gladly coorperate on making it work. If you got no clue either, I'll try to contact the Down By the River Discord and then come back 🌼
Hi again, I could not stop the vision I had in my head and I'm about done with a mod that adds an icon to Sneak Attack Charges! Made sure it is fully compatible with yours. It will be out by the time the ImprovedUI Assets people approve of it. If you end up being unhappy with it being up or how I ended up implementing it, I'll be happy to change anything and/or take it down if needed. Have a lovely day 💜
This mod is fcking great when level 12 but with the multiclass mod you can't get 12 or the game crashes so i kinda looked in the mod folder and could'nt get my self to make the mod to give me the passive at 11 instead of 12, have you any idea ?
Hello! I would actually recommend using this mod to level up beyond level 12 instead of the multiclass one, even if you're not planning to go beyond level 12 in a single class. The reason the multiclass mod crashes is because it doesn't appropriately fill out the progressions; the "unlock level curve" mod does, so it doesn't have that issue. (Note that even though that mod makes it possible to level up to 20 in a single class, you're still probably better off multiclassing once you hit level 12, since many class features beyond level 12 aren't implemented yet and things like e.g. scaling sneak attack damage beyond level 12 don't work.)
That said, if you really want to use the multiclass mod instead, the file you'll want to edit in order to give yourself the passive at level 11 is Progressions.lsx. First, find that file in the base game and look for the entry with "Rogue" for the "Name" attribute and "11" for the "Level" attribute. Copy-paste it from the base game file to mod file, overwriting the Level 12 entry that's currently in the mod file. Then, add a PassivesAdded attribute to it that looks like this:<attribute id="PassivesAdded" type="LSString" value="SneakAttackMaster"/> When you repack the mod, if you've done everything correctly it *should* give you the extra sneak attack at level 11 instead of 12.
Sorry, just checked what the base game's level 11 progression for Rogue looks like and noticed that there's already as PassivesAdded attribute for ReliableTalent. So to add both ReliableTalent and SneakAttackMaster, the entry should look like this:
I was wondering - is there any chance you could add a variant that prevents it from using 2 charges on the same target - thus limiting it to 1 charge/creature per round - max 2 creatures?
I believe it could still be powerful but a little bit more balanced (just add a 1-turn duration status on a creature receiving a sneak attack and prevent it from happening if that creature already has that state).
Or, restore the charge, 1 per round, if the character kills a creature.
I understand you may be done with the mod, so no pressure, just an idea :)
I'm probably not going to develop variants; I'll support this version and fix any issues with it that pop up as Larian releases patches, but I don't particularly relish the idea of having a bunch of different (and more complicated) versions of it to support as well. The idea's a good one, though, and what I said in my other responses stands(about others being free to unpack this and use it as a starting point for similar mods as long as they give credit for the bits that come from this mod)!
Great idea but I think go even more generous with it. Taking rogue levels sucks! Maybe turn sneak to d8 as well as an additional sneak charge to encourage actually maining rogue instead of just rogue 3
lol rogue is really powerful as is, and you can cheese anything with anything in this game anyway. Well I guess Rogue3 + smth like Ranger is even better
I second this comment. I would even give this feature at level 5 and increase the sneak attack dice to d8 at level 9 so there is incentive to take these rogue levels instead of taking just 3-4.
I'll echo my other responses here haha: if others wanted to take a stab at implementing a mod that acts as you describe, they have my permission to use this mod as a starting point (as long as they credit me for the piece they take from it)!
@Rubashov thanks a lot for the answer. I have never implemented a mod myself for BG3 but I will extract and take a look at your mod to see if I can manage to do something with it.
Thanks to your mod I was able to make the changes discussed in this thread. I levelled my rogue all the way to 12 and it was competitive and fun even though I did not have extra attack. Thanks a lot.
...just a word of warning: This also works with enemies, doesn't it?
Currently I'm not using the mod but - in the late game you *might* not want to boost thieves even more, especially if you're coupling the mod with Lethal AI or Stronger Bosses and on Tactical difficulty ;)
They can already take down a fully prepared and healed character of your party - in 1 round. I can't make spoilers but - 2 per round is already a very decent boost ;)
Personally, I'd even make it a feat, as long as you target 2 different creatures ;)
Ha! I would not have expected it to work for enemies too, but it's good to know that it does--I quite like that, actually! They must be built from a template that uses the same progression definitions as player characters. But yes, something to bear in mind if you're using difficulty-boosting mods!
If you're talking about the sneak attack reaction triggering when you make an off-hand attack if you haven't already made a sneak attack once that round, that's how it behaves vanilla as well. It should still only be possible to proc the sneak attack once without the level 12 passive (or twice with the level 12 passive). If you've observed it triggering more frequently than that, though, then there's something wrong. So far I have not.
Oh wow. I never knew you could proc a sneak attack using off-hand attack in vanilla (assuming you didn't already use sneak attack). That makes sense!
My original comment (which I was unclear about) was about using the explicit sneak attack action first... and then afterwards, using an off-hand attack for a SECOND sneak attack. But now it makes sense why the offhand attack triggers the 2nd sneak attack given what you said about vanilla and the mod description.
Ah, got it! It's worth noting that the sneak attack "reaction" can trigger from main-hand attacks too, and unlike the explicit sneak attack, it doesn't consume your sneak attack charge if the attack 1. misses or 2. would have killed the target even without the sneak attack damage, because it's implemented as a second "instance" of damage that you can optionally trigger after your attack hits. It doesn't consume your reaction charge either, so there's really no reason to use the explicit sneak attack action except in some weird niche scenarios where you want to make sure it all counts as a single "instance" of damage. I am personally only aware of two scenarios like that: when you're trying to assassinate a target without entering combat, and when your target has a debuff that only applies to the first instance of damage that hits it like the one from the Amulet of Branding. (Still talking about vanilla here, to be clear.)
I conceived this as a sort of "capstone" ability that would reward the player for going full rogue as opposed to mixing in rogue levels as part of a multiclass build, though I do see the appeal of having it come online earlier for the sake of such builds. I probably will not release variants of this, but if others wanted to take a stab at implementing a version of this mod that acts as you describe, they have my permission to use this mod as a starting point (as long as they credit me for the piece they take from it)!
This would be tough to implement I think, though I do see your point. The concept of sneak attack charges already existed in the game files, so to implement the existing version all I had to do was add another one via the level 12 passive. To do what you're describing would probably require some sort of custom scripting that's a bit beyond me at the moment. That said, if others wanted to take a stab at implementing a version of this mod that acts as you describe, they have my permission to use this mod as a starting point (as long as they credit me for the piece they take from it)!
30 comments
fix: edit
SneakAttackMaster_Interrupt.txt
new entry "Interrupt_SneakAttack"
type "InterruptData"
data "DisplayName" "hd8a8ad84g4f65g46fdgb04dg5b91daf7f291;1"
data "Description" "h23701712ge994g40bfga729g36dc38dc7c65;2"
data "Icon" "Action_SneakAttack_Melee"
data "InterruptContext" "OnCastHit"
data "InterruptContextScope" "Self"
data "Container" "YesNoDecision"
data "Conditions" "Self(context.Source,context.Observer) and HasDamageEffectFlag(DamageFlags.Hit) and ((WieldingFinesseWeaponInSpecificHand(context.Observer,false) and IsMainHandAttack()) or (WieldingFinesseWeaponInSpecificHand(context.Observer,true) and IsOffHandAttack()) or IsThrowAttackRoll() or (WieldingWeapon('Ammunition', false, true, context.Observer) and IsRangedWeaponAttack())) and not IsCritical() and not IsKillingBlow() and (HasDamageEffectFlag(DamageFlags.AttackAdvantage) or HasAllyWithinRange('SG_Incapacitated',1.5)) and not HasDamageEffectFlag(DamageFlags.AttackDisadvantage) and not (SpellId('Projectile_SneakAttack') or SpellId('Target_SneakAttack')) and not AnyEntityIsItem()"
data "Properties" "IF(IsMeleeAttack()):DealDamage(LevelMapValue(SneakAttack), MainMeleeWeaponDamageType);IF(IsRangedAttack()):DealDamage(LevelMapValue(SneakAttack), MainRangedWeaponDamageType);IF(HasPassive('MAG_ForcefulSneakAttack_Passive', context.Source)):DealDamage(1d4, Force)"
data "Cost" "SneakAttack_Charge:1"
data "Stack" "SneakAttack"
data "Cooldown" ""
data "InterruptDefaultValue" "Enabled"
data "EnableCondition" "HasActionResource('SneakAttack_Charge',1,0,false,false,context.Source) and (WieldingFinesseWeaponInSpecificHand(context.Source, false) or WieldingFinesseWeaponInSpecificHand(context.Source, true) or WieldingWeapon('Ammunition', false, true, context.Source) or SpellTypeIs(SpellType.Throw)) and (not HasStatus('SG_Polymorph') or Tagged('MINDFLAYER'))"
data "EnableContext" "OnActionResourcesChanged;OnEquip"
(I edited data section to add condition for ranged atack)
data "Conditions" "Self(context.Source,context.Observer) and HasDamageEffectFlag(DamageFlags.Hit) and ((WieldingFinesseWeaponInSpecificHand(context.Observer,false) and IsMainHandAttack()) or (WieldingFinesseWeaponInSpecificHand(context.Observer,true) and IsOffHandAttack()) or IsThrowAttackRoll() or (WieldingWeapon('Ammunition', false, true, context.Observer) and IsRangedWeaponAttack())) and not IsCritical() and not IsKillingBlow() and (HasDamageEffectFlag(DamageFlags.AttackAdvantage) or HasAllyWithinRange('SG_Incapacitated',1.5)) and not HasDamageEffectFlag(DamageFlags.AttackDisadvantage) and not (SpellId('Projectile_SneakAttack') or SpellId('Target_SneakAttack')) and not AnyEntityIsItem()"
to move this ability to lvl 5 - edit Progressions.lsx as follows
<node id="Progression">
<attribute id="Level" type="uint8" value="5"/>
<attribute id="Name" type="LSString" value="Rogue"/>
<attribute id="ProgressionType" type="uint8" value="0"/>
<attribute id="PassivesAdded" type="LSString" value="UncannyDodge;SneakAttackMaster"/>
<attribute id="TableUUID" type="guid" value="9a44e828-92db-4d6c-acbc-a4f8ef340415"/>
<attribute id="UUID" type="guid" value="19857e46-f5dc-4a9f-847e-5f714ceef7b1"/>
</node>
Do keep in mind that
<attribute id="UUID" type="guid" value="19857e46-f5dc-4a9f-847e-5f714ceef7b1"/>
changes with every level, so replacing value="5" to value="6" will not helpI would be grateful if you update the mod....
Have a lovely day 💜
This mod is fcking great when level 12 but with the multiclass mod you can't get 12 or the game crashes so i kinda looked in the mod folder and could'nt get my self to make the mod to give me the passive at 11 instead of 12, have you any idea ?
Thanks a lot great work
That said, if you really want to use the multiclass mod instead, the file you'll want to edit in order to give yourself the passive at level 11 is Progressions.lsx. First, find that file in the base game and look for the entry with "Rogue" for the "Name" attribute and "11" for the "Level" attribute. Copy-paste it from the base game file to mod file, overwriting the Level 12 entry that's currently in the mod file. Then, add a PassivesAdded attribute to it that looks like this:
<attribute id="PassivesAdded" type="LSString" value="SneakAttackMaster"/>
When you repack the mod, if you've done everything correctly it *should* give you the extra sneak attack at level 11 instead of 12. <node id="Progression">
<attribute id="Level" type="uint8" value="11"/>
<attribute id="Name" type="LSString" value="Rogue"/>
<attribute id="PassivesAdded" type="LSString" value="ReliableTalent;SneakAttackMaster"/>
<attribute id="ProgressionType" type="uint8" value="0"/>
<attribute id="TableUUID" type="guid" value="9a44e828-92db-4d6c-acbc-a4f8ef340415"/>
<attribute id="UUID" type="guid" value="9cf65c52-0df9-4433-9059-f7ae29fb1f18"/>
</node>
I was wondering - is there any chance you could add a variant that prevents it from using 2 charges on the same target - thus limiting it to 1 charge/creature per round - max 2 creatures?
I believe it could still be powerful but a little bit more balanced (just add a 1-turn duration status on a creature receiving a sneak attack and prevent it from happening if that creature already has that state).
Or, restore the charge, 1 per round, if the character kills a creature.
I understand you may be done with the mod, so no pressure, just an idea :)
Well I guess Rogue3 + smth like Ranger is even better
Currently I'm not using the mod but - in the late game you *might* not want to boost thieves even more, especially if you're coupling the mod with Lethal AI or Stronger Bosses and on Tactical difficulty ;)
They can already take down a fully prepared and healed character of your party - in 1 round. I can't make spoilers but - 2 per round is already a very decent boost ;)
Personally, I'd even make it a feat, as long as you target 2 different creatures ;)
I will install the mods you mention for my third run to see how it works.
My original comment (which I was unclear about) was about using the explicit sneak attack action first... and then afterwards, using an off-hand attack for a SECOND sneak attack. But now it makes sense why the offhand attack triggers the 2nd sneak attack given what you said about vanilla and the mod description.
Doing 2 sneak attack on the same enemy on the same turn doesn't really make sense