diff --git a/Powder barrels explode on hit with flame arrow.esp b/Powder barrels explode on hit with flame arrow.esp new file mode 100644 index 00000000..02267c32 Binary files /dev/null and b/Powder barrels explode on hit with flame arrow.esp differ diff --git a/scripts/_00e_a1_firearrowsc.pex b/scripts/_00e_a1_firearrowsc.pex index 5eb187be..717c2c5a 100644 Binary files a/scripts/_00e_a1_firearrowsc.pex and b/scripts/_00e_a1_firearrowsc.pex differ diff --git a/scripts/_00e_explosivebarrelsscript.pex b/scripts/_00e_explosivebarrelsscript.pex index 97c41c3e..4445f5d6 100644 Binary files a/scripts/_00e_explosivebarrelsscript.pex and b/scripts/_00e_explosivebarrelsscript.pex differ diff --git a/source/scripts/_00e_a1_firearrowsc.psc b/source/scripts/_00e_a1_firearrowsc.psc index c89d4a82..dddfad97 100644 --- a/source/scripts/_00e_a1_firearrowsc.psc +++ b/source/scripts/_00e_a1_firearrowsc.psc @@ -20,6 +20,7 @@ Event OnEffectStart(Actor akTarget, Actor akCaster) amOldAmmo = GetEquippedAmmo() akCaster.AddItem(_00E_A1_FireArrowAmm, GetArrowCount()) akcaster.EquipItem(_00E_A1_FireArrowAmm) + AddInventoryEventFilter(_00E_A1_FireArrowAmm) EndEvent @@ -49,7 +50,7 @@ Event OnPlayerBowShot(Weapon akWeapon, Ammo akAmmo, float afPower, bool abSunGaz EndEvent Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer) - If akBaseItem == _00E_A1_FireArrowAmm + If akItemReference && ! akDestContainer akItemReference.Delete() EndIf EndEvent diff --git a/source/scripts/_00e_explosivebarrelsscript.psc b/source/scripts/_00e_explosivebarrelsscript.psc index ef5dcc29..69850f69 100644 --- a/source/scripts/_00e_explosivebarrelsscript.psc +++ b/source/scripts/_00e_explosivebarrelsscript.psc @@ -11,7 +11,24 @@ Import Utility Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) - If (akProjectile && _00E_ExplosiveBarrel_ValidProjectiles.HasForm(akProjectile)) || (akSource && _00E_ExplosiveBarrel_ValidSources.HasForm(akSource)) + bool bExplode = (akProjectile && _00E_ExplosiveBarrel_ValidProjectiles.HasForm(akProjectile)) || (akSource && _00E_ExplosiveBarrel_ValidSources.HasForm(akSource)) + + if ! bExplode + Actor aggressor = akAggressor as Actor + if aggressor + if _00E_A1_FireArrowAmm == None + _00E_A1_FireArrowAmm = Game.GetForm(0x670EC) as Ammo + endif + if _00E_A1_FireArrowME == None + _00E_A1_FireArrowME = Game.GetForm(0x5BD36) as MagicEffect + endif + if aggressor.IsEquipped(_00E_A1_FireArrowAmm) || ( aggressor.HasMagicEffect(_00E_A1_FireArrowME) && aggressor.GetItemCount(_00E_A1_FireArrowAmm) == 0 ) + bExplode = true + endif + endif + endif + + If bExplode If bExploded == False bExploded = True If ExplosionMarkerRef == None @@ -75,3 +92,6 @@ Static Property XMarker Auto Bool bExploded = False ObjectReference ExplosionMarkerRef + +MagicEffect Property _00E_A1_FireArrowME Auto +Ammo Property _00E_A1_FireArrowAmm Auto