User:Allen Kerensky/Myriad Lite Preview2/Myriad Lite Healing v0.0.0 20110605
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Myriad Lite Healing v0.0.0 20110605
<lsl> //============================================================================ // Myriad Lite Healing v0.0.0 20110605 // Copyright (c) 2011 By Allen Kerensky (OSG/SL) // The Myriad RPG System was designed, written, and illustrated by Ashok Desai // Myriad is published under a: // Creative Commons License (Attribution 2.0 UK: England and Wales) // Myriad Lite Healing is published under a: // Creative Commons License Attribution-NonCommercial-ShareAlike 3.0 Unported //============================================================================
float TOUCH_RANGE = 3.0; integer RESPAWN_FLAG = TRUE; float RESPAWN_TIME = 30.0; string DIV = "|"; integer HEALALL = TRUE; // heal all? if FALSE... integer HEALAMOUNT = 0; // heal how many critical/wound boxes?
default {
state_entry() {
llSetLinkColor(LINK_SET,<1,0,0>,ALL_SIDES);
llTargetOmega(<0,0,1>,0.25,1.0);
llSetText("Full Health",<1,0,0>,1.0);
}
collision_start(integer collisions) {
while (collisions--) {
if ( RESPAWN_FLAG == FALSE ) {
return;
}
key who = llDetectedKey(collisions);
key whoowner = llList2Key(llGetObjectDetails(llDetectedKey(collisions),[OBJECT_OWNER]),0);
if ( who == whoowner) {
//osCauseHealing(llDetectedKey(collisions),100);
integer chanplayer = (integer)("0x" + llGetSubString((string)who,0,6));
if ( HEALALL == TRUE ) {
llWhisper(chanplayer,"HEALALL");
} else {
llWhisper(chanplayer,"HEALPARTIAL"+DIV+(string)HEALAMOUNT);
}
llSetLinkColor(LINK_SET,<.5,.5,.5>,ALL_SIDES);
llSetTimerEvent(RESPAWN_TIME);
RESPAWN_FLAG=FALSE;
return;
}
}
}
touch_start(integer touches) {
while (touches--) {
if ( RESPAWN_FLAG == FALSE ) {
return;
}
key who2 = llDetectedKey(touches);
vector whopos = llList2Vector(llGetObjectDetails(who2,[OBJECT_POS]),0);
if ( llVecDist(whopos,llGetPos()) <= TOUCH_RANGE ) {
//osCauseHealing(llDetectedKey(touches),100);
integer chanplayer = (integer)("0x" + llGetSubString((string)who2,0,6));
if ( HEALALL == TRUE ) {
llWhisper(chanplayer,"HEALFULL");
} else {
llWhisper(chanplayer,"HEALPARTIAL"+DIV+(string)HEALAMOUNT);
}
llSetLinkColor(LINK_SET,<.5,.5,.5>,ALL_SIDES);
llSetTimerEvent(RESPAWN_TIME);
RESPAWN_FLAG=FALSE;
return;
}
}
}
timer() {
llSetLinkColor(LINK_SET,<1,0,0>,ALL_SIDES);
RESPAWN_FLAG=TRUE;
llSetTimerEvent(0.0);
}
} </lsl>