Try
datablock ShapeBaseImageData(BowRocketImage : BowImage)
That fixed it, but then caused an error because of a state being unresolved. I've fixed it in the below code.
datablock ShapeBaseImageData(BowRocketImage : BowImage)
{
// Specify mount point & offset for 3rd person, and eye offset
// for first person rendering.
mountPoint = 0;
offset = "0 0 0";
eyeOffset = 0; //"0.7 1.2 -0.5";
rotation = eulerToMatrix( "0 0 0" );
shapeName = "base/data/shapes/empty.dts";
emap = false;
// When firing from a point offset from the eye, muzzle correction
// will adjust the muzzle vector to point to the eye LOS point.
// Since this weapon doesn't actually fire from the muzzle point,
// we need to turn this off.
correctMuzzleVector = true;
// Add the WeaponImage namespace as a parent, WeaponImage namespace
// provides some hooks into the inventory system.
className = "WeaponImage";
// Projectile && Ammo.
item = BowRocketItem;
ammo = " ";
projectile = ArrowProjectile;
projectileType = Projectile;
//melee particles shoot from eye node for consistancy
melee = false;
//raise your arm up or not
armReady = true;
doColorShift = false;
// colorShiftColor = AkimboBowItem.colorShiftColor;//"0.400 0.196 0 1.000";
stateName[0] = "Activate";
stateWaitForTimeout[0] = true;
stateTimeoutValue[0] = 0.05;
stateTransitionOnTimeout[0] = "Ready";
stateName[1] = "Ready";
stateTransitionOnTriggerDown[1] = "Click";
stateName[2] = "Click";
stateScript[2] = "onClick";
stateWaitForTimeout[2] = true;
stateTimemoutValue[2] = 0.05;
stateTransitionOnTimeout[2] = "Idle";
stateName[3] = "Idle";
stateTransitionOnTriggerUp[3] = "Ready";
stateSound[0] = "";
stateFire[2] = 0;
stateAllowImageChange[2] = 1;
stateSequence[2] = "";
stateSound[2] = "";
stateTransitionOnTimeout[3] = "";
stateTimeoutValue[3] = 0;
stateAllowImageChange[3] = 1;
stateSequence[3] = "";
stateName[4] = "";
stateTransitionOnTriggerUp[4] = "";
stateTransitionOnTriggerDown[4] = "";
stateName[5] = "";
stateTransitionOnTimeout[5] = "";
stateTimeoutValue[5] = 0;
stateAllowImageChange[5] = 1;
stateScript[5] = "";
};
OP still has to work on the states, because when you fire it, the bow never stops firing. Plus the rocket launcher and bow are in the same hand(unless that was what OP wanted?).
Also,
%obj.setImageTrigger(2, 1); in
onTrigger will be called any time the player jumps, right clicks, clicks, or crouches. You also have the last variable for
onTrigger wrong. It's a boolean as to wether the button was pushed or released, not the player.