integer sleep = 7;
float DELAY = 0.2;
integer SWORD = 1;
integer strike_type;
integer have_permissions = FALSE;
integer armed = TRUE;
fire()
{
if (armed)
{
armed = FALSE;
llStartAnimation("throw_R"

llSleep(0.5);
llSetTimerEvent(0.25);
strike_type = SWORD;
armed = TRUE;
}
}
default
{
state_entry()
{
llListen(5,"",llGetOwner(),""

if (!have_permissions)
{
llRequestPermissions(llGetOwner(),
PERMISSION_TRIGGER_ANIMATION| PERMISSION_TAKE_CONTROLS);
}
}
on_rez(integer param)
{
llResetScript();
}
listen(integer channel, string name, key id, string message)
{
if (message == "s"

{
fire();
}
}
timer()
{
if ((strike_type == SWORD))
{
llSensor("", "", ACTIVE | AGENT | PASSIVE, 4.0, PI_BY_TWO*0.5);
}
else
{
llSensor("", "", ACTIVE | AGENT | PASSIVE, 3.0, PI_BY_TWO*0.5);
}
llSetTimerEvent(0.0);
}
sensor(integer tnum)
{
vector dir = llDetectedPos(0) - llGetPos();
dir.z = 0.0;
dir = llVecNorm(dir);
rotation rot = llGetRot();
if (strike_type == SWORD)
{
//llTriggerSound("crunch", 0.5);
dir += llRot2Up(rot);
dir *= 200.0;
llPushObject(llDetectedKey(0), dir * 2, <0,0,0>, FALSE);
}
strike_type= 0;
}
run_time_permissions(integer permissions)
{
if (permissions == PERMISSION_TRIGGER_ANIMATION| PERMISSION_TAKE_CONTROLS)
{
llTakeControls(CONTROL_ML_LBUTTON, TRUE, FALSE);
//llStartAnimation("hold_R_handgun"

have_permissions = TRUE;
}
}
attach(key attachedAgent)
{
if (attachedAgent != NULL_KEY)
{
llRequestPermissions(llGetOwner(),
PERMISSION_TRIGGER_ANIMATION| PERMISSION_TAKE_CONTROLS);
}
else
{
if (have_permissions)
{
//llStopAnimation("hold_R_handgun"

//llStopAnimation("aim_R_handgun"

llReleaseControls();
llSetRot(<0,0,0,1>

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

{
fire();
}
}
touch_end(integer num)
{
if (have_permissions)
{
}
else
{
}
}
}