key lastkey; integer sensfinished = 0; integer mode = 0; integer action = 0; //0 - Phantom //1 - Teleport //2 - Bash //3 - Shield //99 - Off 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(8032,"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 && pdist <= 5) { 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(action <= 2 && !sensfinished) { llMessageLinked(LINK_SET,action,"",otherowner); lastkey = llDetectedKey(checknum); sensfinished = 1; llSetTimerEvent(1); } else if(action == 3 && !sensfinished && !shieldout) { llRezObject("Excellent Shield",llGetPos(),ZERO_VECTOR,ZERO_ROTATION,2); sensfinished = 1; llSetTimerEvent(1); } if(action != 99) { llOwnerSay(owner); } 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") { action = 0; llOwnerSay("PS Mode: Phantom"); } if(msg == "ps tele") { action = 1; llOwnerSay("PS Mode: Teleport"); } if(msg == "ps bash") { action = 2; llOwnerSay("PS Mode: Bash"); } if(msg == "ps shield") { action = 3; llOwnerSay("PS Mode: Shield"); } if(msg == "ps off") { action = 99; 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") { shieldout = 0; } } }