Hmm...
I'm looking at the 2003 Summer Camp Bow, which you can get at the telehubs. I know it's late, but I've checked the bow, the Arrow, and the arrow object in the bow... don't see the word "damage" anywhere. Shouldn't there be a "set damage" command of some type?
Gydeon.
Example: Script for the bow itself:
========================================================
vector fwd;
vector pos;
rotation rot;
key holder; // Key of avatar holding gun
integer on = TRUE;
integer attached = FALSE;
integer permissions = FALSE;
integer armed = TRUE;
key owner;
fire()
{
if(armed)
{
//
// Actually fires the ball
//
armed = FALSE;
integer shot = llRound(llFrand(1.0));
rot = llGetRot();
fwd = llRot2Fwd(rot);
pos = llGetPos();
pos = pos + fwd;
pos.z += 0.75; // Correct to eye point
fwd = fwd * 30.0;
llSay(57, (string)owner + "shoot"

;
llStartAnimation("shoot_L_bow"

;
llTriggerSound(llGetInventoryName(INVENTORY_SOUND, shot), 0.

;
llRezObject("arrow", pos, fwd, rot, 0);
llSetTimerEvent(2.0);
}
}
default
{
run_time_permissions(integer permissions)
{
if (permissions > 0)
{
llWhisper(0, "Enter Mouselook to shoot me, Say 'pickup' to pickup arrows, say 'id' to identify yours."

;
llTakeControls(CONTROL_ML_LBUTTON, TRUE, FALSE);
llStartAnimation("hold_L_bow"

;
attached = TRUE;
permissions = TRUE;
owner = llGetOwner();
}
}
attach(key attachedAgent)
{
//
// If attached/detached from agent, change behavior
//
if (attachedAgent != NULL_KEY)
{
string name = llKey2Name(llGetOwner());
on = TRUE;
attached = TRUE;
if (!permissions)
{
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION| PERMISSION_TAKE_CONTROLS | PERMISSION_ATTACH);
}
}
else
{
attached = FALSE;
llStopAnimation("hold_L_bow"

;
llReleaseControls();
}
}
control(key name, integer levels, integer edges)
{
if ( ((edges & CONTROL_ML_LBUTTON) == CONTROL_ML_LBUTTON)
&&

(levels & CONTROL_ML_LBUTTON) == CONTROL_ML_LBUTTON) )
{
fire();
}
}
timer()
{
llSetTimerEvent(0.0);
armed = TRUE;
}
}
========================================================
========================================================
Script for the arrow for your hand:
========================================================
list textlist;
integer i;
integer cb;
default
{
state_entry()
{
integer faces = llGetNumberOfSides();
for(i=0; i<faces; i++)
{
string texture = llGetTexture(i);
textlist = texture + textlist;
}
}
attach(key id)
{
if(id == llGetOwner())
{
llListenRemove(-1);
llSay(0,"armed"

;
cb = llListen(57,"","",(string)id + "shoot"

;
}
else
{
llListenRemove(cb);
}
}
listen(integer chan, string name, key id, string message)
{
//llSay(0, "arrow"

;
llMessageLinked(LINK_SET, 1,"",""

;
llSetTexture("clear", ALL_SIDES);
llSetTimerEvent(0.3);
}
timer()
{
llSetTimerEvent(0.0);
integer faces = llGetNumberOfSides();
for(i=0; i<faces; i++)
{
string texture = llList2String(textlist,i);
llSetTexture(texture, i);
}
}
}
========================================================
========================================================
Script for the arrow inside the bow.
========================================================
integer hit;
default
{
state_entry()
{
llPassCollisions(TRUE);
llSetStatus(STATUS_PHYSICS, TRUE);
llSetStatus(STATUS_PHANTOM, FALSE);
}
collision_start(integer detected)
{
llSetStatus(STATUS_PHYSICS, FALSE);
llTriggerSound(llGetInventoryName(INVENTORY_SOUND, hit), .5);
llSetStatus(STATUS_PHANTOM, TRUE);
llListen(0,"", llGetOwner(), "pickup"

;
llListen(0,"", "", "id"

;
//put score stuff here
}
listen(integer chan, string name, key id, string message)
{
if(message == "pickup"

{
llDie();
}
else
{
if(id == llGetOwner())
{
llSetText(llKey2Name(llGetOwner()), <1,0,0>, 1.0);
}
else
{
llSetText("",ZERO_VECTOR, 1.0);
}
}
}
on_rez(integer param)
{
// hit = llRound(llFrand(2.0));
llSetTimerEvent(600.0);
}
timer()
{
llDie();
}
land_collision_start(vector pos)
{
llDie();
}
}
========================================================
========================================================