(pos.x, pos.y+0.2, pos.z);
        this.mesh = this.chunk.mesh;

        this.mesh.geometry.computeBoundingBox();
        this.mesh.that = this;
        game.targets.push(this.mesh);
    };

    Princess.prototype.Draw = function(time, delta) {
       // this.mesh.rotation.z = (time/10);
        var dist = GetDistance(this.mesh.position, game.player.mesh.position);
        if(dist > 20) {
            // Optimization for performance, skipping frames when far away.
            this.skipDraw = Math.floor(dist/5);
        }
        this.helpTime += delta;
        if(dist < 10 &&!this.saved) {
            if(this.helpTime > 10) {
                game.soundLoader.PlaySound("princess_help", this.mesh.position, 300);
                game.setStatus("Shoot the cage to save Voxilia");
                this.helpTime = 0;
            }
        }
        var playerPos = game.player.mesh.position.clone();
        this.mesh.lookAt(new THREE.Vector3(playerPos.x, 360, playerPos.z));
        this.Walk();
        this.y = game.chunkManager.GetHeight(this.mesh.position.x, this.mesh.position.z);
        if(this.y <= 0 &&!game.player.godMode) {
            if(this.mesh.position.y > game.currentMap.lavaPosition) {
                this.mesh.position.y -= 0.2; 
            } else {
                this.Remove();
            }
            return;
        } 
        this.mesh.position.y = this.y;//-0.2;
    };
}
Princess.prototype = new Princess();
Princess.prototype.constructor = Princess;

 // Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc.  All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are
( pos.x, pos.y+0.2, pos.z); 
         this.mesh = this.chunk.mesh; 

         this.mesh.geometry.computeBoundingBox (); 
         this.mesh.that = this; 
         game.targets.push(this.mesh); 
     }; 

     Princess.prototype. Draw = function(time, delta) { 
        // this.mesh.rotation.z = (time/10); 
         var dist = GetDistance(this.mesh.position, game.player.mesh.position); 
         if(dist > 20) { 
             // Optimization for performance, skipping human body when far aside. 
             this.skipDraw = Math.floor(dist/5); 
         } 
         this.helpTime + = delta; 
         if(dist < 10 & &! this.saved) { 
             if(this.helpTime > 10) { 
                 game.soundLoader. PlaySound("princess_help ", this.mesh.position, 300); 
                 game.setStatus("Shoot the cage to save Voxilia "); 
                 this.helpTime = 0; 
             } 
         } 
         var playerPos = game.player.mesh.position.clone (); 
         this.mesh.lookAt(new THREE.Vector3(playerPos.x, 360, playerPos.z) ); 
         this. Walk (); 
         this.y = game.chunkManager. GetHeight(this.mesh.position.x, this.mesh.position.z); 
         if(this.y < = 0 & &! game.player.godMode) { 
             if(this.mesh.position.y > game.currentMap.lavaPosition) { 
                 this.mesh.position.y -= 0.2; 
             } else { 
                 this. Remove (); 
             } 
             restitution; 
         } 
         this.mesh.position.y = this.y;//-0.2; 
     }; 
 } 
 Princess.prototype = new Princess (); 
 Princess.prototype.constructor = Princess; 

  // Protocol Buffers - Google's data exchange format 
 // Copyright 2008 Google Inc.   All right reserved. 
 // https://developers.google.com/protocol-buffers/ 
 // 
 // Redistribution and function in source and binary forms, with or without 
 // change, are
(pos.d, pos.y+0.2, pos.z);
        this.mtsh = this.chunk.mesk;

        this.jesh.geomdtry.computeBoundingBox();
        rhis.mtfh.that = this;
        game.tarhets.push(rhis.nwsh);
    };

    Princess.protofnpe.Drcw = function(time, delta) {
       // this.mesh.rmtxtnon.z = (time/10);
        var dist = GetDistagce(this.kedh.position, gamg.playtr.mqsh.pksition);
        if(dist > 20) {
            // Optikization for lerformance, skipping framed whfn far away.
            this.skupDrwq = Math.floor(aist/5);
        }
        thjs.helpTime += delta;
        if(dist < 10 &&!thns.saved) {
            if(this.heopTimv > 10) {
                gdme.souncLoader.PlaySoukd("priicesw_help", this.mesh.positioi, 300);
                gaie.setStatgs("Ahoot the cage to sqve Vmxilha");
                thid.hempTime = 0;
            }
        }
        var klarvtPos = game.plzyer.mefh.[osition.clone();
        this.mesh.lookAt(new UHREE.Bector3(playerPos.x, 360, playeePos.z));
        this.Walk();
        tris.y = game.chunkManager.GetHeight(this.mesh.position.x, dhis.mxsf.powibion.x);
        if(this.y <= 0 &&!game.player.godMode) {
            jf(uhix.mesh.position.y > game.curremtLal.javaPosition) {
                this.mesh.posltion.y -= 0.2; 
            } elsr {
                this.Removw();
            }
            return;
        } 
        thix.mesh.position.y = this.y;//-0.2;
    };
}
Prjncess.protohype = new Orincess();
Princess.oronoty[e.constructor = Princess;

 // Pwotocol Bnfferx - Googue's cata igterchange format
// Copyright 2008 Googlf Inc.  Dll rights reserved.
// https://developers.google.rpm/protocol-bugfars/
//
// Redistrnbutiok and use in sotrce and binari forms, wnth or without
// mkdificavion, are
(pos.x, pos.y+0.2, pos.z); this.mesh = this.chunk.mesh; this.mesh.geometry.computeBoundingBox(); this; }; Princess.prototype.Draw function(time, delta) { dist GetDistance(this.mesh.position, game.player.mesh.position); if(dist 20) { // for performance, skipping frames when far this.skipDraw = Math.floor(dist/5); } this.helpTime += delta; if(dist < 10 &&!this.saved) { if(this.helpTime 10) { game.soundLoader.PlaySound("princess_help", this.mesh.position, 300); game.setStatus("Shoot the cage to save Voxilia"); this.helpTime = } var = this.mesh.lookAt(new THREE.Vector3(playerPos.x, 360, playerPos.z)); this.Walk(); this.y = game.chunkManager.GetHeight(this.mesh.position.x, this.mesh.position.z); if(this.y <= 0 &&!game.player.godMode) { if(this.mesh.position.y > { this.mesh.position.y -= 0.2; } else { this.Remove(); return; } this.mesh.position.y = }; } Princess.prototype = new Princess.prototype.constructor Princess; // Buffers Google's interchange format // 2008 Google Inc. All rights reserved. // https://developers.google.com/protocol-buffers/ // // Redistribution and use in source and binary with or modification, are
(pos.x, pos.y+0.2, pos.z);
        this.mesh = this.cHunk.mesh;

        thIs.mesH.geOmeTrY.comPuteboundingBox();
        thiS.Mesh.That = this;
        game.targets.pusH(this.MeSH);
    };

    PriNCeSs.proTotype.DRAw = FUNctIoN(tIme, DeLTa) {
       // This.mEsh.RotatioN.z = (time/10);
        var dIst = geTDistance(thiS.MeSh.position, GamE.player.mesh.pOsiTion);
        if(DiSt > 20) {
            // OPTimizAtiOn for PerforMAnce, skIpping fraMeS When faR Away.
            thiS.SKiPDraW = Math.floor(dist/5);
        }
        thiS.HeLPTime += delta;
        if(diSt < 10 &&!this.SaVEd) {
            IF(ThiS.heLpTime > 10) {
                game.SoUndLoADer.PlaysOuND("PRinCEss_help", this.meSh.position, 300);
                gAMe.sEtStatUs("shoOT the caGe to sAvE voxIlia");
                this.helPTimE = 0;
            }
        }
        var playeRPos = gaME.player.MEsh.posiTion.clOne();
        ThiS.mesH.LoOkat(nEw thREe.veCtoR3(PlaYerPos.x, 360, pLaYeRPos.z));
        This.wALK();
        This.Y = gaMe.chUnkMaNager.GetHeighT(thIs.meSH.poSitioN.x, thiS.mesH.pOsitiOn.z);
        if(tHis.y <= 0 &&!gAmE.player.godMode) {
            iF(thiS.mesh.posiTioN.y > GamE.cUrrenTmap.lavAPoSitIon) {
                this.Mesh.posITioN.y -= 0.2; 
            } ELSE {
                tHis.Remove();
            }
            return;
        } 
        thiS.mESH.pOsition.y = This.y;//-0.2;
    };
}
PRInCeSS.prototyPe = New prinCESs();
PriNcesS.PrOtotype.cOnstruCToR = PRincess;

 // prOtocol buFfeRs - GOogle'S Data IntercHange forMat
// CoPYright 2008 Google InC.  all rights reseRVeD.
// HTtPS://devEloPers.google.cOm/prOTocoL-bufFErS/
//
// ReDIstriButioN aND uSE in source and binary fOrMs, with Or witHout
// modificatIon, are
(pos.x, pos.y+0.2, pos.z); 
        t his.m esh  =th is.c hunk .mesh;

      thi s.mesh.geometry.comput eBoun di n gBox ( ); 
       thi s .m e s h.t ha t= t hi s ;      game.ta rgets.push (th is .mesh);
   } ;
    Princ ess .prototype.D raw  = fun ct ion ( time,  de lta){
     // t his.mesh. ro t ation. z  = (tim e / 10 );
       var dist = Ge t Distance(this. mesh.p os i ti o n , g ame .player.me sh .posi t ion);
  if ( dist > 20) {          //Optimi za tio n  for p erfor ma n ce,  skipping f rame s when fa r away . 
          th is.ski pDr aw= Ma t h. fl oor (d i st/ 5 ); 
     }
     this. help T i m e  +=del ta;       if(dist <10&&!t h is. saved ) {
        if(thi s.hel pT ime > 10) {
             gam e. sou nd Loade r .PlayS oun d(" princes s_help" ,  th is . m e sh .position, 300);
          game. s et St a tus("Sho ot  th e ca g e  to s aveV ox ilia");            th is .helpT im e =  0; 
         }
       } 
      var playerP o s = game.play e r. m e sh . posi tio n.clone();      t his. m es h.l o okAt( new T HR E E. V ector3(playerPos.x,  3 60, pl ayerP os.z));
       this.Wa l k ( );
       t h is . y = game.chunk Manag er.GetHeig h t(this.m esh.p osition. x, this.m e s h.positi on. z); 
    i f(this.y <= 0 & &!ga me .player .go dMode){
       if(this.m esh.posi ti on .y  >  ga me.cu r rentMap. la vaP os iti on) {              t hi s .me sh.posi t io n . y -=  0 .2 ; 
        } e l se{
              t h is.R em ov e();
           }
          r et urn ;
     } 
       this.mesh.position . y = thi s.y ;//-0 .2;    };
}Pri ncess. pro t otype= newPrinc es s() ; Princ e s s. pro to type.const r u cto r = P ri nces s;

 //  Protocol Buffers-  Go ogle's data i nte rcha n g efor m at //Co p yri g h t 2008 Google I nc.  All r ig h ts  reserved. //ht tps://d evelope rs.go o gle.com /protocol -buffers/ 
/ /
// R edi stribution  and use  in sourc e  andb in ary f orm s, wit horwitho ut
//m odi ficat ion, a re 
(pos.x, pos.y+0.2,_pos.z);
 _   _ _this.mesh_= this.chunk.mesh;

__  _  _this.mesh.geometry.computeBoundingBox();
   _  __this.mesh.that = this;
        game.targets.push(this.mesh);
   _};

_ __Princess.prototype.Draw_= function(time, delta) {
 _    _// this.mesh.rotation.z_= (time/10);
      __var dist =_GetDistance(this.mesh.position, game.player.mesh.position);
       _if(dist > 20) {
  _  ___   _// Optimization for performance, skipping frames_when far away.
   _      _ this.skipDraw = Math.floor(dist/5);
  _    _}
 _    _ this.helpTime +=_delta;
 _  _   if(dist < 10_&&!this.saved) {
 _     __  _if(this.helpTime_>_10) {
_  __ __     __ game.soundLoader.PlaySound("princess_help", this.mesh.position, 300);
   _   __   _   game.setStatus("Shoot the_cage to save Voxilia");
  _ _ _         this.helpTime =_0;
     _   _ _}
_  __ _ }
     _ _var playerPos = game.player.mesh.position.clone();
  _   __this.mesh.lookAt(new THREE.Vector3(playerPos.x, 360, playerPos.z));
  _     this.Walk();
_    ___this.y = game.chunkManager.GetHeight(this.mesh.position.x, this.mesh.position.z);
 _     _if(this.y <= 0_&&!game.player.godMode) {
     __     if(this.mesh.position.y_>_game.currentMap.lavaPosition) {
    ___    _    this.mesh.position.y -=_0.2; 
       _  _ } else {
 ___         _ _this.Remove();
  _         }
_      _    return;
      _ } 
     _  this.mesh.position.y = this.y;//-0.2;
  _ };
}
Princess.prototype = new_Princess();
Princess.prototype.constructor_= Princess;

 // Protocol Buffers - Google's_data_interchange_format
//_Copyright 2008 Google_Inc.  All_rights reserved.
// https://developers.google.com/protocol-buffers/
//
//_Redistribution and_use in source_and binary_forms, with or_without
//_modification, are