key lastkey; integer sensfinished = 0; integer mode = 0; string addstr = "phantom "; integer upfirst = 0; integer counter = 0; integer shieldout = 0; default { state_entry() { llSensorRepeat("",NULL_KEY,ACTIVE,200000,7000*PI,0.001); llListen(7,"",llGetOwner(),""); llListen(8037,"Excellent Shield",NULL_KEY,""); } sensor(integer num_detected) { integer checknum = 0; while(checknum < num_detected && !sensfinished) { vector othervel = llDetectedVel(checknum); float otherspeed = llVecMag(othervel); key otherowner = llDetectedOwner(checknum); string owner = llKey2Name(otherowner); vector fwd = llVecNorm(othervel); float dist = llVecDist(llGetPos(),llDetectedPos(checknum)); vector ppos = llDetectedPos(checknum)+(fwd*dist); float pdist = llVecDist(llGetPos(),ppos); if(otherspeed > 10 && llDetectedKey(checknum) != lastkey && otherowner != llGetOwner() && pdist <= 1) { if(counter && !sensfinished) { //llRezObject("Merevast Shot",pos+fwd,fwd*75,ZERO_ROTATION,2); } if(upfirst && !sensfinished) { llMoveToTarget(llGetPos()+<0,0,10>,0.05); llSleep(0.2); } if(mode == 0 && !sensfinished) { llMessageLinked(LINK_SET,0,addstr+owner,NULL_KEY); llOwnerSay(owner); lastkey = llDetectedKey(checknum); sensfinished = 1; llSetTimerEvent(1); } if(mode == 1 && !sensfinished && !shieldout) { llRezObject("Excellent Shield",llGetPos(),ZERO_VECTOR,ZERO_ROTATION,2); sensfinished = 1; llSetTimerEvent(1); } if(upfirst) { llStopMoveToTarget(); sensfinished = 1; llSetTimerEvent(1); } } checknum += 1; } } timer() { sensfinished = 0; llSetTimerEvent(0); } listen(integer channel,string name,key id,string msg) { if(msg == "ps phantom") { addstr = "phantom "; mode = 0; llOwnerSay("PS Mode: Phantom"); } if(msg == "ps tele") { addstr = "tele "; mode = 0; llOwnerSay("PS Mode: Teleport"); } if(msg == "ps bash") { addstr = "bash "; mode = 0; llOwnerSay("PS Mode: Bash"); } if(msg == "ps shield") { mode = 1; llOwnerSay("PS Mode: Shield"); } if(msg == "ps off") { mode = 2; llOwnerSay("PS Off"); } if(msg == "uf on") { upfirst = 1; llOwnerSay("PS Upfirst On"); } if(msg == "uf off") { upfirst = 0; llOwnerSay("PS Upfirst Off"); } if(msg == "here" && name == "Excellent Shield") { shieldout = 1; } if(msg == "not here" && name == "Excellent Shield") { shieldout = 0; } } }