Hi Plasma. So the way I would do this is to add code in the step event of objBow that detects if the secret is gotten, and if true, then delete itself and create an objBow2. So like what you did, but inside the bow step event instead of the objSecretItem collision event. The code would be
if (global.secretItem[0]) { // replace 0 with your item number
instance_destroy();
instance_create(x, y, objBow2);
}
You can also copy this code to the create event which should get rid of the 1-frame delay when you respawn.