updateArm essentially just set the proper armReady thread for the player
just do
function leftHandImage::onMount(%db,%pl,%slot)
{
%pl.playThread(1,armReadyLeft);
}
and you can use leftRecoil for gun shot animations (make sure you do it on a slot other than 1)
function leftHandImage::onFire(%db,%pl,%slot)
{
if(%pl.getDamagerPercent() >= 1)
return;
%pl.playThread(2,leftRecoil);
parent::onFire(%db,%pl,%slot);
}
since armReady animations are generally put all on slot 1 your armReadyLeft will overwrite any other thread that was on that thread ie armReadyRight or armReadyBoth
alternatively if your are hell bent on this updateArm thing you can package that function
package swol_updateArm
{
function Player::updateArm(%pl, %newImage)
{
if(%newImage.mountPoint == $LeftHandSlot)
{
if(!isObject(%pl.getMountedImage($RightHandSlot)))
{
if(isObject(%leftOld = %pl.getMountedImage($LeftHandSlot)))
{
if(%leftOld.armReady)
return;
if(%newImage.armReady)
{
%pl.playThread(1,armReadyLeft);
return;
}
}
else
{
if(%newImage.armReady)
{
%pl.playThread(1,armReadyLeft);
return;
}
}
}
}
parent::updateArm(%pl, %newImage);
}
};
activatePackage(swol_updateArm);