
AggroHUD lesson2
vector ZV=ZERO_VECTOR;
rotation ZR=ZERO_ROTATION;
integer mode=1;
integer ch=13;
default{
state_entry(){
llListen(ch,"",llGetOwner(),"");
}
touch_start(integer num){
if(mode==1){
vector whereami=llGetPos()+<1.8,0,1.6>*llGetRot();
vector FWOOSHH=llRot2Fwd(llGetRot())*55;
rotation aim=llEuler2Rot(<90,0,90>*DEG_TO_RAD);
llRezObject("dissed",whereami,FWOOSHH,aim,0);
}
}
touch(integer num){
if(mode==2){
vector whereami=llList2Vector(llGetObjectDetails(
llGetOwner(),[OBJECT_POS]),0)+<0,0,0.34>;
float Xoff = (llFrand(0.7)-0.35)*1.4;
float Yoff = (llFrand(0.7)-0.35)*1.4;
float Zoff = (llFrand(0.7)-0.35)*1.4;
vector nowwhere=whereami+<Xoff,Yoff,Zoff>;
integer ranchan=(integer)(llFrand(100000000)-1000000000);
integer wat = (integer)llFrand(10)+1;
float colR = llFrand(1);
float colG = llFrand(1);
float colB = llFrand(1);
llRezObject("ball",nowwhere,ZV,ZR,ranchan);
llSay(ranchan,(string)<colR,colG,colB>);
}
}
listen(integer chan,string who,key id,string msg){
// Mode Changers
if(msg=="blox")
mode=1;
else if(msg=="ball")
mode=2;
// Rezzers
else if(msg=="plat")
llRezObject("platfrm",llGetPos()-<0,0,1>,ZV,ZR,0);
else if(msg=="sand")
llRezObject("sandbx",llGetPos()-<0,0,1>,ZV,ZR,0);
else if(msg=="noclip")
llRezObject("npv",llGetPos(),ZV,ZR,0);
}
}