You can make a disappearing arrow by defining an 
on_impact function that automatically deletes the object, which is a simplified version of how fireballs and other magic work. You also probably want to set 
flying_only, which tells DSB to delete the object instead of dropping it to the ground if it runs out of flying energy; this one is also 
true for fireballs and other magic.
The attack method is probably a little trickier, since the current method kind of relies on there being ammo. You might want to look at 
method_shoot_spell for an alternative.
Edit: After messing around with this a bit, I'm not satisfied with the way it works. I'll add a 
create_ammo property for attack methods for DSB 0.74, so, for example, you could create an attack method like this:
Code: Select all
method_info["MAGIC ARROW"] = {
 	   xp_class = CLASS_NINJA,
 	   xp_sub = SKILL_SHOOTING,
	   xp_get = 9,
	   idleness = 14,
	   stamina_used = 3,
	   create_ammo = "magic_arrow"
	}
This method is identical to "SHOOT" (and should call 
method_shoot_ammo) except it will generate its own ammo rather than looking in the left hand. It will try to spawn an instance of a "magic_arrow" so if 
obj.magic_arrow isn't defined this code won't work.
If you prefer, you can specify 
create_ammo as part of the object archetype's properties instead.