string PRODUCT="THERP"; string VERSION="1.37"; string SECRET; integer DC; integer MC; integer PC=55; string mode="rp"; integer melee_mode; key owner; key creator; string playername; string playerrole; string playertitle; vector textcolor=<1,1,0>; float textalpha=1.0; integer showstats=1; integer hea=100; integer con=100; integer hun=100; integer thi=100; integer damage_rate=4; integer heal_rate=2; string anim; list stats; integer t0; integer t1; integer t2; integer t3; restore(){ stats=getlink(2,[PRIM_NAME])+getlink(2,[PRIM_DESC]); } backup(){ setlink(2,[PRIM_NAME,""]); setlink(2,[PRIM_DESC,""]); /* playername= playertitle= playerrole= textcolor= stats= hea= con= hun= thi= */ } update2(){ string _stats; if(showstats==1){ _stats="\nHEALTH: "+(string)hea+"%\nSTAMINA: "+(string)con+"%\nHUNGER: "+(string)hun+"%\nTHIRST: "+(string)thi+"%"; }else{ _stats=""; } settext( PRODUCT+" "+VERSION+ "\n"+playername+ "\n("+anim+")"+ "\n----\n.\n"+_stats ,textcolor,textalpha); } update(){ anim=getanim(owner); t0++; if(t0>9){ //every ten sec t0=0; t1++; con+=((llFloor(llFrand(heal_rate))+1)); hea+=llFloor(llFrand(heal_rate)); if(anim=="Running"){ con-=damage_rate; } } if(t1>5){ //every min t1=0; t2++; } if(t2>4){ // every 5 min t2=0; t3++; } if(t3>19){ //every hour t3=0; thi-=llFloor(llFrand(10)); hun-=llFloor(llFrand(10)); } if(hea<0)hea=0; if(hea>100)hea=100; if(con<0)con=0; if(con>100)con=100; if(hun<0)hun=0; if(hun>100)hun=100; if(thi<0)thi=0; if(thi>100)thi=100; update2(); } do_detach(){ llSetTimerEvent(1); //temp! llListen(PC,"",owner,""); //!!!!! } do_attach(){ llSetTimerEvent(1); llListen(PC,"",owner,""); } init(){ restore(); hea=100; con=100; hun=100; thi=100; owner=llGetOwner(); creator=llGetCreator(); playername=k2dn(owner); if(!llGetAttached())do_detach(); else do_attach(); } list s2l(string a,list b,list c){return llParseString2List(a,b,c);} list l2l(list a,integer b,integer c){return llList2List(a,b,c);} list dsl(list a,integer b,integer c){return llDeleteSubList(a,b,c);} string l2s(list a,integer b){return llList2String(a,b);} integer gll(list a){return llGetListLength(a);} integer ssi(string a,string b){return llSubStringIndex(a,b);} integer lfl(list a,list b){return llListFindList(a,b);} integer sl(string a){return llStringLength(a);} string gss(string a,integer b,integer c){return llGetSubString(a,b,c);} string dss(string a,integer b,integer c){return llDeleteSubString(a,b,c);} string s2b(string a){return llStringToBase64(a);} string b2s(string a){return llBase64ToString(a);} key genkey(){return llGenerateKey();} list getlink(integer a,list b){return llGetLinkPrimitiveParams(a,b);} setlink(integer a,list b){llSetLinkPrimitiveParamsFast(a,b);} settext(string a,vector b,float c){setlink(3,[26,a,b,c]);} string k2n(key a){return llKey2Name(a);} string k2un(key a){return llGetUsername(a);} string k2dn(key a){return llGetDisplayName(a);} string k2u(key a){return "secondlife:///app/agent/"+(string)a+"/about";} integer k2c(key a,integer b,integer c){return (integer)("0x"+gss((string)a,b,c));} string getanim(key a){return llGetAnimation(a);} default{ on_rez(integer i){ //state rez; init(); } attach(key i){ init(); } state_entry(){ init(); } listen(integer c,string n,key i,string m){ llOwnerSay(m); if(c==MC){} if(c==DC){} if(c==PC){ if(m=="ooc"){} if(m=="rp"){} if(m=="arena"){} if(m=="afk"){} if(m=="stats off")showstats=0; if(m=="stats on")showstats=1; if(m=="settings"){} if(m=="menu"){} if(m=="help"){} list l=s2l(m,[" "],[]); if(l2s(l,0)=="color")textcolor=(vector)l2s(l,1); if(l2s(l,0)=="name")playername=(string)dsl(l,0,0); } backup(); update(); } timer(){ update(); } sensor(integer i){ } no_sensor(){ } collision_start(integer i){ } } state rez{ state_entry(){ settext( "disabled" ,textcolor,textalpha); } }