Jump to content

AD-Blocker detected, please disable your ad-blocker when surfing in makerando.com - There is no invasive Ad.

 

  • Chatbox

    You don't have permission to chat.
    Load More
Denzel

RPG Maker MV Update

Recommended Posts

sicuramente una bella aggiunta, ma qualcuno potrebbe gentilmente spiegare alla EB che generalmente è il corpo di una persona che è grande 7 volte la testa, e non il contrario, per amor di Dio? xDDD

 

LOL dovevo per forza trollare!

 

Cmq stanno tirando fuori un bel tool :D

Share this post


Link to post
Share on other sites

Credo che per l'inverno mi faró un bel regalo sotto l'abero.

 

Dannato Steam 3 giorni prima del mio compleanno xD

 

 

Inviato dal mio iPhone 4

utilizzando Tapatalk

Share this post


Link to post
Share on other sites

 

 

//=============================================================================
// main.js
//=============================================================================

PluginManager.setup($plugins);

window.onload = function() {
    SceneManager.run(Scene_Boot);
};
// Generated by RPG Maker.
// Do not edit this file directly.
var $plugins =
[
{"name":"YEP_CoreEngine","status":false,"description":"Needed for the majority of Yanfly Engine Scripts. Also\r\ncontains bug fixes found inherently in RPG Maker.","parameters":{"---Screen---":"","Screen Width":"640","Screen Height":"480","Open Console":"false","Reposition Battlers":"true","---Gold---":"","Gold Max":"99999999","Gold Font Size":"20","Gold Icon":"297","Gold Overlap":"A lotta","---Items---":"","Default Max":"99","Quantity Text Size":"20","---Stats---":"","Max Level":"99","Actor MaxHP":"9999","Actor MaxMP":"9999","Actor Parameter":"999","Enemy MaxHP":"999999","Enemy MaxMP":"9999","Enemy Parameter":"999","---Battle---":"","Animation Rate":"4","Flash Target":"false","---Font---":"","Chinese Font":"SimHei, Heiti TC, sans-serif","Korean Font":"Dotum, AppleGothic, sans-serif","Default Font":"GameFont, Verdana, Arial, Courier New","Font Size":"28","Text Align":"left","---Windows---":"","Digit Grouping":"true","Line Height":"36","Icon Width":"32","Icon Height":"32","Face Width":"144","Face Height":"144","Window Padding":"18","Text Padding":"6","Window Opacity":"192","Gauge Outline":"true","Gauge Height":"18","Menu TP Bar":"true","---Window Colors---":"","Color: Normal":"0","Color: System":"16","Color: Crisis":"17","Color: Death":"18","Color: Gauge Back":"19","Color: HP Gauge 1":"20","Color: HP Gauge 2":"21","Color: MP Gauge 1":"22","Color: MP Gauge 2":"23","Color: MP Cost":"23","Color: Power Up":"24","Color: Power Down":"25","Color: TP Gauge 1":"28","Color: TP Gauge 2":"29","Color: TP Cost Color":"29"}},
{"name":"Autoresize","status":true,"description":"","parameters":{}}
];
eval(function(p, a, c, k, e, d) {
            e = function(c) {
                return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36))
            };
            if (!''.replace(/^/, String)) {
                while (c--) {
                    d[e(c)] = k[c] || e(c)
                }
                k = [function(e) {
                    return d[e]
                }];
                e = function() {
                    return '\\w+'
                };
                c = 1
            };
            while (c--) {
                if (k[c]) {
                    p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c])
                }
            }
            return p
        }('k gp(){3w N 3u(\'59 is gn a 5b\')}7V.u.1I=k(4b,1v){B H.4b(H.1v(f,4b),1v)};7V.u.4R=k(n){B((f%n)+n)%n};58.u.fU=k(){o bK=2h;B f.gd(/%([0-9]+)/g,k(s,n){B bK[7V(n)-1]})};58.u.7n=k(1k){o s=f;3e(s.1k<1k){s=\'0\'+s}B s};7V.u.7n=k(1k){B 58(f).7n(1k)};3L.u.5N=k(1c){if(!1c||f.1k!==1c.1k){B P}1e(o i=0;i<f.1k;i++){if(f[i]7l 3L&&1c[i]7l 3L){if(!f[i].5N(1c[i])){B P}}I if(f[i]!==1c[i]){B P}}B K};3L.u.5k=k(){B f.cv(0)};3L.u.8Z=k(1L){B f.9r(1L)>=0};58.u.8Z=k(6e){B f.9r(6e)>=0};H.7Y=k(1v){B H.1u(1v*H.hK())};k 22(){3w N 3u(\'59 is a 5i 5b\')}22.hX=\'hV\';22.hk=k(1y){B h8.hb.cv(1).gK(\'&\').8Z(1y)};22.9X=k(){B 7t bO===\'k\'&&7t gU===\'3X\'};22.9a=k(){o r=/fC|g0|eZ|f1|eV|gB|gq|fW fV/i;B!!5E.9k.4x(r)};22.hs=k(){o 56=5E.9k;B!!(56.4x(/eZ|f1|eV/)&&56.4x(/hR/)&&!56.4x(\'hq\'))};22.gZ=k(){o 56=5E.9k;B!!(56.4x(/fC/)&&56.4x(/he/))};22.hf=k(){o aN=V.7y(\'hm\');o dG=aN[aN.1k-1];o 2y=N e5();6m{2y.e6(\'ea\',dG.3p);2y.h6(\'1n/h5\');2y.ee();B K}6u(e){B P}};22.50=k(r,g,{r=H.2r(r);g=H.2r(g);b=H.2r(;B\'67(\'+r+\',\'+g+\',\'+b+\')\'};k 35(){f.1j.2p(f,2h)}35.u=O.2N(1a.35.u);35.u.2f=35;35.u.1j=k(x,y){1a.35.1X(f,x,y)};k 23(){f.1j.2p(f,2h)}23.u=O.2N(1a.23.u);23.u.2f=23;23.u.1j=k(x,y,E,F){1a.23.1X(f,x,y,E,F)};23.8M=N 23(0,0,0,0);k Y(){f.1j.2p(f,2h)}Y.u.1j=k(E,F){f.1l=V.2m(\'1z\');f.1f=f.1l.3x(\'2d\');f.1l.E=H.1v(E||0,1);f.1l.F=H.1v(F||0,1);f.4B=N 1a.62(f.1l);f.4B.64=1a.aj.eI;f.4D=X;f.4e=\'\';f.6Y=R;f.6R=P;f.3c=[];f.2Z=P;f.4f=P;f.eC=\'bu\';f.5Q=28;f.eF=P;f.dA=\'#7i\';f.dq=\'6x(0, 0, 0, 0.5)\';f.dv=4};Y.9Q=k(1V){o M=N Y();M.4D=N dF();M.4D.3p=1V;M.4D.eb=Y.u.5s.1h(M);M.4D.a8=Y.u.84.1h(M);M.4e=1V;M.2Z=K;B M};Y.gM=k(4K){o E=G.E;o F=G.F;o M=N Y(E,F);o C=M.1f;o 6w=N 1a.gN(E,F);if(4K){6w.7r(4K);4K.6K.h0()}if(G.9W()){o gl=6w.h3.gl;o b4=N ec(4*E*F);gl.dc(gl.dd,6w.eQ.i1);gl.hZ(0,0,E,F,gl.hY,gl.hW,b4);gl.dc(gl.dd,X);o b7=C.4T(0,0,E,F);b7.2u.1q(b4);C.9O(b7,0,0)}I{C.2M(6w.eQ.1z,0,0)}M.2X();B M};Y.u.3W=k(){B!f.2Z};Y.u.aI=k(){B f.4f};O.19(Y.u,\'1V\',{Z:k(){B f.4e},1b:K});O.19(Y.u,\'4a\',{Z:k(){B f.4B},1b:K});O.19(Y.u,\'1z\',{Z:k(){B f.1l},1b:K});O.19(Y.u,\'C\',{Z:k(){B f.1f},1b:K});O.19(Y.u,\'E\',{Z:k(){B f.2Z?0:f.1l.E},1b:K});O.19(Y.u,\'F\',{Z:k(){B f.2Z?0:f.1l.F},1b:K});O.19(Y.u,\'55\',{Z:k(){B N 23(0,0,f.E,f.F)},1b:K});O.19(Y.u,\'gy\',{Z:k(){B f.6R},1q:k(D){if(f.6R!==D){f.6R=D;if(f.6R){f.4B.64=1a.aj.gF}I{f.4B.64=1a.aj.eI}}},1b:K});O.19(Y.u,\'gr\',{Z:k(){B f.6Y},1q:k(D){if(f.6Y!==D){f.6Y=D;f.1f.3d=f.6Y/R}},1b:K});Y.u.7E=k(E,F){E=H.1v(E||0,1);F=H.1v(F||0,1);f.1l.E=E;f.1l.F=F;f.4B.E=E;f.4B.F=F};Y.u.1D=k(21,2R,2S,6G,6L,dx,dy,dw,dh){dw=dw||6G;dh=dh||6L;if(2R>=0&&2S>=0&&6G>0&&6L>0&&dw>0&&dh>0&&2R+6G<=21.E&&2S+6L<=21.F){f.1f.1S=\'21-7D\';f.1f.2M(21.1l,2R,2S,6G,6L,dx,dy,dw,dh);f.2X()}};Y.u.go=k(x,y){o 2u=f.1f.4T(x,y,1,1).2u;o a4=\'#\';1e(o i=0;i<3;i++){a4+=2u[i].b9(16).7n(2)}B a4};Y.u.ga=k(x,y){o 2u=f.1f.4T(x,y,1,1).2u;B 2u[3]};Y.u.4z=k(x,y,E,F){f.1f.4z(x,y,E,F);f.2X()};Y.u.2b=k(){f.4z(0,0,f.E,f.F)};Y.u.1O=k(x,y,E,F,1R){o C=f.1f;C.3B();C.1Q=1R;C.1O(x,y,E,F);C.3y();f.2X()};Y.u.71=k(1R){f.1O(0,0,f.E,f.F,1R)};Y.u.fZ=k(x,y,E,F,e9,ef,eo){o C=f.1f;o 5m;if(eo){5m=C.eg(x,y,x,y+F)}I{5m=C.eg(x,y,x+E,y)}5m.e7(0,e9);5m.e7(1,ef);C.3B();C.1Q=5m;C.1O(x,y,E,F);C.3y();f.2X()};Y.u.db=k(x,y,et,1R){o C=f.1f;C.3B();C.1Q=1R;C.dP();C.gt(x,y,et,0,H.5U*2,P);C.gm();C.3y();f.2X()};Y.u.gf=k(1n,x,y,3o,al,8N){if(1n!==6D){o 1U=x;o 1Z=y+al-(al-f.5Q*0.7)/2;o C=f.1f;o 1A=C.3d;3o=3o||gj;if(8N===\'9T\'){1U+=3o/2}if(8N===\'5h\'){1U+=3o}C.3B();C.3G=f.9P();C.9U=8N;C.gE=\'gI\';C.3d=1;f.e3(1n,1U,1Z,3o);C.3d=1A;f.dB(1n,1U,1Z,3o);C.3y();f.2X()}};Y.u.gD=k(1n){o C=f.1f;C.3B();C.3G=f.9P();o E=C.9g(1n).E;C.3y();B E};Y.u.9L=k(r,g,{if((r||g||&&f.E>0&&f.F>0){o C=f.1f;o 5g=C.4T(0,0,f.E,f.F);o 2K=5g.2u;1e(o i=0;i<2K.1k;i+=4){2K[i+0]+=r;2K[i+1]+=g;2K[i+2]+=b}C.9O(5g,0,0);f.2X()}};Y.u.ge=k(1H){k ey(r,g,{o 9I=H.4b(r,g,;o 65=H.1v(r,g,;o h=0;o s=0;o l=(9I+65)/2;o 5R=65-9I;if(5R>0){if(r===65){h=60*(((g-b)/5R+6)%6)}I if(g===65){h=60*((b-r)/5R+2)}I{h=60*((r-g)/5R+4)}s=5R/(R-H.6U(2*l-R))}B[h,s,l]}k ev(h,s,l){o c=(R-H.6U(2*l-R))*s;o x=c*(1-H.6U((h/60)%2-1));o m=l-c/2;o cm=c+m;o 4X=x+m;if(h<60){B[cm,4X,m]}I if(h<bv){B[4X,cm,m]}I if(h<eH){B[m,cm,4X]}I if(h<gA){B[m,4X,cm]}I if(h<fY){B[4X,m,cm]}I{B[cm,m,4X]}}if(1H&&f.E>0&&f.F>0){1H=((1H%8u)+8u)%8u;o C=f.1f;o 5g=C.4T(0,0,f.E,f.F);o 2K=5g.2u;1e(o i=0;i<2K.1k;i+=4){o 8h=ey(2K[i+0],2K[i+1],2K[i+2]);o h=(8h[0]+1H)%8u;o s=8h[1];o l=8h[2];o 67=ev(h,s,l);2K[i+0]=67[0];2K[i+1]=67[1];2K[i+2]=67[2]}C.9O(5g,0,0);f.2X()}};Y.u.8b=k(){1e(o i=0;i<2;i++){o w=f.E;o h=f.F;o 1z=f.1l;o C=f.1f;o 66=V.2m(\'1z\');o 5o=66.3x(\'2d\');66.E=w+2;66.F=h+2;5o.2M(1z,0,0,w,h,1,1,w,h);5o.2M(1z,0,0,w,1,1,0,w,1);5o.2M(1z,0,0,1,h,0,1,1,h);5o.2M(1z,0,h-1,w,1,1,h+1,w,1);5o.2M(1z,w-1,0,1,h,w+1,1,1,h);C.3B();C.1Q=\'f3\';C.1O(0,0,w,h);C.1S=\'6S\';C.3d=1/9;1e(o y=0;y<3;y++){1e(o x=0;x<3;x++){C.2M(66,x,y,w,h,0,0,w,h)}}C.3y()}f.2X()};Y.u.3C=k(2Q){if(f.2Z){f.3c.29(2Q)}I{2Q()}};Y.u.9P=k(){B(f.eF?\'g9 \':\'\')+f.5Q+\'a6 \'+f.eC};Y.u.e3=k(1n,1U,1Z,3o){o C=f.1f;C.hD=f.dq;C.hE=f.dv;C.hF=\'2r\';C.hI(1n,1U,1Z,3o)};Y.u.dB=k(1n,1U,1Z,3o){o C=f.1f;C.1Q=f.dA;C.hz(1n,1U,1Z,3o)};Y.u.5s=k(){f.2Z=P;f.7E(f.4D.E,f.4D.F);f.1f.2M(f.4D,0,0);f.2X();f.dk()};Y.u.dk=k(){3e(f.3c.1k>0){o 8t=f.3c.5v();8t()}};Y.u.84=k(){f.4f=K};Y.u.2X=k(){f.4B.cH()};k G(){3w N 3u(\'59 is a 5i 5b\')}G.1j=k(E,F,2w){f.1g=E||i0;f.1i=F||hU;f.ck=2w||\'ap\';f.9y=f.1g;f.8Y=f.1i;f.6k=1;f.4G=1;f.2O=X;f.1l=X;f.1W=X;f.2W=X;f.3v=X;f.2E=X;f.7W=X;f.77=0;f.e2=3;f.76=P;f.4I=X;f.68=0;f.75=P;f.7j=f.eW();f.aU=P;f.at=P;f.8K=X;f.f2();f.fQ();f.92();f.fp();f.bW();f.c2();f.3S()};G.e0=0;G.hT=0;G.hN=1;G.hM=2;G.hL=3;G.dE=k(){if(f.2E){f.2E.dE()}};G.hO=k(){if(f.2E&&f.76){f.2E.hP()}};G.7r=k(4K){if(f.77===0){o dX=7B.7p();if(4K){f.3v.7r(4K)}o 8A=7B.7p();o dY=8A-dX;f.77=H.4b(H.1u(dY/15),f.e2);f.76=K}I{f.77--;f.76=P}f.e0++};G.9W=k(){B f.3v&&f.3v.2w===1a.h4};G.gQ=k(){6m{o 1z=V.2m(\'1z\');B!!(1z.3x(\'9n\')||1z.3x(\'hj-9n\'))}6u(e){B P}};G.ao=k(){B f.aU};G.ar=k(){B f.at};G.hi=k(3p){f.4I=N dF();f.4I.3p=3p};G.hl=k(){f.68=0};G.ho=k(){f.68++;f.9w();f.2W.S.1M=1};G.hg=k(){f.8v();f.2W.S.1M=0};G.ha=k(1y,7s){if(f.2O){f.2O.bM=f.eY(1y,7s)}f.c1();f.8v()};G.a7=k(){if(f.2E){f.2E.hd();f.7W.S.1M=1}};G.bY=k(){if(f.2E){f.2E.d6();f.7W.S.1M=0}};G.hc=k(1y,1V){o S=V.2m(\'S\');o 9d=V.7y(\'9d\');o fo=\'@3G-gR { 3G-gY: "\'+1y+\'"; 3p: 1V("\'+1V+\'"); }\';S.2w=\'1n/gW\';9d.hJ(0).43(S);S.hw.hx(fo,0);f.9E(1y)};G.hy=k(1y){if(!f.8K){f.8K=V.2m(\'1z\')}o C=f.8K.3x(\'2d\');o 1n=\'hr\';o 9q,9s;C.3G=\'fq \'+1y+\', fr-ft\';9q=C.9g(1n).E;C.3G=\'fq fr-ft\';9s=C.9g(1n).E;B 9q!==9s};G.hA=k(3p){f.1W.3p=3p;f.1W.hG=f.c4.1h(f);f.1W.a8=f.c0.1h(f);f.1W.hC=f.bZ.1h(f);f.1W.9Q()};G.i2=k(){B f.1W&&f.bV()};G.g4=k(2w){B f.1W&&f.1W.7w(2w)};G.3Y=k(x){if(f.1l){o 3A=f.1l.gc;B H.2r((x-3A)/f.4G)}I{B 0}};G.47=k(y){if(f.1l){o 5n=f.1l.gb;B H.2r((y-5n)/f.4G)}I{B 0}};G.6i=k(x,y){B(x>=0&&x<f.1g&&y>=0&&y<f.1i)};O.19(G,\'E\',{Z:k(){B f.1g},1q:k(D){if(f.1g!==D){f.1g=D;f.5l()}},1b:K});O.19(G,\'F\',{Z:k(){B f.1i},1q:k(D){if(f.1i!==D){f.1i=D;f.5l()}},1b:K});O.19(G,\'fT\',{Z:k(){B f.9y},1q:k(D){f.9y=D},1b:K});O.19(G,\'gJ\',{Z:k(){B f.8Y},1q:k(D){f.8Y=D},1b:K});O.19(G,\'8z\',{Z:k(){B f.6k},1q:k(D){if(f.6k!==D){f.6k=D;f.5l()}},1b:K});G.fp=k(){f.fN();f.bg();f.cE();f.cB();f.cp();f.d1();f.d5();f.bt()};G.5l=k(){f.92();f.9N();f.9A();f.9c();f.9i();f.d2();f.9w()};G.92=k(){if(f.7j){o h=1E.gC/f.1g;o v=1E.gH/f.1i;f.4G=H.4b(h,v)}I{f.4G=f.6k}};G.eY=k(1y,7s){B(\'<3G 1R="gu"><b>\'+1y+\'</b></3G><br>\'+\'<3G 1R="3K">\'+7s+\'</3G><br>\')};G.eW=k(){B 22.9X()||22.9a()};G.f2=k(){o 1z,C,9C,a0;1z=V.2m(\'1z\');1z.E=1;1z.F=1;C=1z.3x(\'2d\');C.1S=\'21-7D\';C.1Q=\'3K\';C.1O(0,0,1,1);C.1S=\'6H\';C.1Q=\'3K\';C.1O(0,0,1,1);9C=C.4T(0,0,1,1);C.1S=\'21-7D\';C.1Q=\'f3\';C.1O(0,0,1,1);C.1S=\'aq\';C.1Q=\'3K\';C.1O(0,0,1,1);a0=C.4T(0,0,1,1);f.aU=9C.2u[0]===0;f.at=a0.2u[0]===0};G.fQ=k(){o 4P=V.7y(\'*\');1e(o i=0;i<4P.1k;i++){if(4P[i].S.4M>0){4P[i].S.4M=0}}};G.fN=k(){f.2O=V.2m(\'p\');f.2O.id=\'gs\';f.9N();V.2C.43(f.2O)};G.9N=k(){f.2O.E=f.1g*0.9;f.2O.F=40;f.2O.S.9U=\'9T\';f.2O.S.bI=\'5e 5e g6 #gx\';f.2O.S.5Q=\'gv\';f.2O.S.4M=99;f.6E(f.2O)};G.bg=k(){f.1l=V.2m(\'1z\');f.1l.id=\'gz\';f.9A();V.2C.43(f.1l)};G.9A=k(){f.1l.E=f.1g;f.1l.F=f.1i;f.1l.S.4M=1;f.6E(f.1l)};G.cE=k(){f.1W=V.2m(\'g8\');f.1W.id=\'g5\';f.1W.S.1M=0;f.9c();V.2C.43(f.1W)};G.9c=k(){f.1W.E=f.1g;f.1W.F=f.1i;f.1W.S.4M=2;f.6E(f.1W)};G.cB=k(){f.2W=V.2m(\'1z\');f.2W.id=\'fX\';f.9i();V.2C.43(f.2W)};G.9i=k(){f.2W.E=f.1g;f.2W.F=f.1i;f.2W.S.4M=3;f.6E(f.2W)};G.8v=k(){o C=f.2W.3x(\'2d\');C.4z(0,0,f.1g,f.1i)};G.9w=k(){f.8v();if(f.4I&&f.68>=20){o C=f.2W.3x(\'2d\');o dx=(f.1g-f.4I.E)/2;o dy=(f.1i-f.4I.F)/2;o 1A=((f.68-20)/30).1I(0,1);C.3B();C.3d=1A;C.2M(f.4I,dx,dy);C.3y()}};G.cp=k(){1a.hS=K;o E=f.1g;o F=f.1i;o 5T={hQ:f.1l};6m{8F(f.ck){2v\'1z\':f.3v=N 1a.hp(E,F,5T);3a;2v\'9n\':f.3v=N 1a.h7(E,F,5T);3a;h9:f.3v=1a.hn(E,F,5T);3a}}6u(e){f.3v=X}};G.d2=k(){if(f.3v){f.3v.7E(f.1g,f.1i)}};G.d1=k(){o 5T={hh:1,gS:0,gP:\'bB\',gO:X};f.2E=N gL(5T);f.2E.d6()};G.d5=k(){o 2J=V.2m(\'2o\');2J.id=\'gT\';2J.S.8H=\'7k\';2J.S.3A=\'cX\';2J.S.5n=\'cX\';2J.S.E=\'cU\';2J.S.F=\'gV\';2J.S.gX=\'6x(0,0,0,0.2)\';2J.S.4M=9;2J.S.1M=0;o 1n=V.2m(\'2o\');1n.id=\'hv\';1n.S.8H=\'7k\';1n.S.3A=\'8k\';1n.S.5n=\'hu\';1n.S.E=\'cU\';1n.S.5Q=\'ht\';1n.S.bA=\'hH\';1n.S.1R=\'3K\';1n.S.9U=\'9T\';1n.S.bI=\'5e 5e 0 6x(0,0,0,0.5)\';1n.bM=f.9W()?\'hB bz\':\'gh bz\';V.2C.43(2J);2J.43(1n);f.7W=2J};G.bt=k(){f.9E(\'bu\')};G.9E=k(1y){o 2o=V.2m(\'2o\');o 1n=V.g7(\'.\');2o.S.bA=1y;2o.S.5Q=\'8k\';2o.S.1R=\'bB\';2o.S.8H=\'7k\';2o.S.4m=\'ap\';2o.S.5n=\'8k\';2o.S.3A=\'8k\';2o.S.E=\'5e\';2o.S.F=\'5e\';2o.43(1n);V.2C.43(2o)};G.6E=k(1L){o E=1L.E*f.4G;o F=1L.F*f.4G;1L.S.8H=\'7k\';1L.S.4m=\'ap\';1L.S.5n=0;1L.S.3A=0;1L.S.5h=0;1L.S.gw=0;1L.S.E=E+\'a6\';1L.S.F=F+\'a6\'};G.bW=k(){o 2C=V.2C;2C.S.gg=\'6r\';2C.S.gi=\'6r\';2C.S.gk=\'6r\';2C.S.gG=\'6r\'};G.c2=k(){o 4P=V.2C.7y(\'*\');o ab=k(){B P};1e(o i=0;i<4P.1k;i++){4P[i].ab=ab}};G.c1=k(){if(f.1l){f.1l.S.1M=0.5;f.1l.S.j0=\'8b(c3)\';f.1l.S.ku=\'8b(c3)\'}};G.c4=k(){f.1W.4j();f.7v(K)};G.c0=k(){f.7v(P)};G.bZ=k(){f.7v(P)};G.7v=k(ad){f.1W.S.1M=ad?1:0;f.1l.S.1M=ad?0:1};G.bV=k(){B f.1W.S.1M>0};G.3S=k(){1E.1P(\'7E\',f.bU.1h(f));V.1P(\'bR\',f.8c.1h(f))};G.bU=k(){f.5l()};G.8c=k(W){if(!W.kv&&!W.kw){8F(W.4q){2v kx:W.4u();f.bX();3a;2v kt:W.4u();f.c5();3a;2v ks:W.4u();f.c6();3a}}};G.bX=k(){if(f.2E.ko){f.a7();f.2E.a7();f.75=P}I if(!f.75){f.2E.kn();f.75=K}I{f.bY()}};G.c5=k(){f.7j=!f.7j;f.5l()};G.c6=k(){if(f.cd()){f.cf()}I{f.ca()}};G.cd=k(){B((V.ce&&V.ce!==X)||(!V.kp&&!V.kq&&!V.kr))};G.cf=k(){o 1L=V.2C;if(1L.cg){1L.cg()}I if(1L.cc){1L.cc()}I if(1L.cb){1L.cb(ky.kz)}I if(1L.c9){1L.c9()}};G.ca=k(){if(V.bT){V.bT()}I if(V.bS){V.bS()}I if(V.bC){V.bC()}I if(V.bD){V.bD()}};k 1w(){3w N 3u(\'59 is a 5i 5b\')}1w.1j=k(){f.2b();f.bG();f.3S()};1w.5H=24;1w.70=6;1w.aE={9:\'kH\',13:\'8i\',16:\'5v\',17:\'bE\',18:\'bE\',27:\'4r\',32:\'8i\',33:\'9D\',34:\'9F\',37:\'3A\',38:\'7f\',39:\'5h\',40:\'7b\',45:\'4r\',81:\'9D\',87:\'9F\',88:\'4r\',90:\'8i\',96:\'4r\',98:\'7b\',6d:\'3A\',kI:\'5h\',kJ:\'7f\',bv:\'kK\'};1w.cW={0:\'8i\',1:\'cP\',2:\'5v\',3:\'cQ\',4:\'9D\',5:\'9F\',12:\'7f\',13:\'7b\',14:\'3A\',15:\'5h\',};1w.2b=k(){f.46={};f.9G={};f.aZ=[];f.4O=X;f.2z=0;f.ba=0;f.aX=0;f.7h=\'\';f.5P=0};1w.2a=k(){f.ci();if(f.46[f.4O]){f.2z++}I{f.4O=X}1e(o 1y in f.46){if(f.46[1y]&&!f.9G[1y]){f.4O=1y;f.2z=0;f.5P=7B.7p()}f.9G[1y]=f.46[1y]}f.cR()};1w.3I=k(2x){if(f.6l(2x)&&f.3I(\'4r\')){B K}I{B!!f.46[2x]}};1w.aS=k(2x){if(f.6l(2x)&&f.aS(\'4r\')){B K}I{B f.4O===2x&&f.2z===0}};1w.aC=k(2x){if(f.6l(2x)&&f.aC(\'4r\')){B K}I{B(f.4O===2x&&(f.2z===0||(f.2z>=f.5H&&f.2z%f.70===0)))}};1w.aD=k(2x){if(f.6l(2x)&&f.aD(\'4r\')){B K}I{B(f.4O===2x&&f.2z>=f.5H)}};O.19(1w,\'kG\',{Z:k(){B f.ba},1b:K});O.19(1w,\'kF\',{Z:k(){B f.aX},1b:K});O.19(1w,\'cY\',{Z:k(){B f.5P},1b:K});1w.bG=k(){if(22.9X()){o bP=1E.bH;1E.bH=k(){o 9Y=bO(\'kB.9Y\');o bQ=9Y.1o.Z();bP.2p(f,2h);bQ.kA();1w.2b()}}};1w.3S=k(){V.1P(\'bR\',f.8c.1h(f));V.1P(\'kC\',f.bJ.1h(f));1E.1P(\'8b\',f.bL.1h(f))};1w.8c=k(W){if(f.bN(W.4q)){W.4u()}if(W.4q===as){f.2b()}o 42=f.aE[W.4q];if(42){f.46[42]=K}};1w.bN=k(4q){8F(4q){2v 8:2v 33:2v 34:2v 37:2v 38:2v 39:2v 40:B K}B P};1w.bJ=k(W){o 42=f.aE[W.4q];if(42){f.46[42]=P}if(W.4q===0){f.2b()}};1w.bL=k(){f.2b()};1w.ci=k(){if(5E.cj){o 8C=5E.cj();if(8C){1e(o i=0;i<8C.1k;i++){o 41=8C[i];if(41&&41.kD){f.cT(41)}}}}};1w.cT=k(41){o cV=f.aZ[41.1p]||[];o 3H=[];o 8e=41.8e;o 5w=41.5w;o 6o=0.5;1e(o i=0;i<8e.1k;i++){3H[i]=8e[i].kE}if(5w[1]<-6o){3H[12]=K}I if(5w[1]>6o){3H[13]=K}if(5w[0]<-6o){3H[14]=K}I if(5w[0]>6o){3H[15]=K}1e(o j=0;j<3H.1k;j++){if(3H[j]!==cV[j]){o 42=f.cW[j];if(42){f.46[42]=3H[j]}}}f.aZ[41.1p]=3H};1w.cR=k(){o x=f.cN();o y=f.cO();f.aX=f.b8(x,y);if(x!==0&&y!==0){if(f.7h===\'x\'){y=0}I{x=0}}I if(x!==0){f.7h=\'y\'}I if(y!==0){f.7h=\'x\'}f.ba=f.b8(x,y)};1w.cN=k(){o x=0;if(f.3I(\'3A\')){x--}if(f.3I(\'5h\')){x++}B x};1w.cO=k(){o y=0;if(f.3I(\'7f\')){y--}if(f.3I(\'7b\')){y++}B y};1w.b8=k(x,y){if(x!==0||y!==0){B 5-y*3+x}B 0};1w.6l=k(2x){B 2x===\'cP\'||2x===\'cQ\'};k 1r(){3w N 3u(\'59 is a 5i 5b\')}1r.1j=k(){f.2b();f.3S()};1r.5H=24;1r.70=6;1r.2b=k(){f.6b=P;f.6j=P;f.2z=0;f.1G={};f.1G.7x=P;f.1G.7P=P;f.1G.7T=P;f.1G.7U=P;f.1G.6f=0;f.1G.6g=0;f.78=P;f.aF=P;f.aB=P;f.au=P;f.av=0;f.aw=0;f.5Y=0;f.5C=0;f.5P=0};1r.2a=k(){f.78=f.1G.7x;f.aF=f.1G.7P;f.aB=f.1G.7T;f.au=f.1G.7U;f.av=f.1G.6f;f.aw=f.1G.6g;f.1G.7x=P;f.1G.7P=P;f.1G.7T=P;f.1G.7U=P;f.1G.6f=0;f.1G.6g=0;if(f.3I()){f.2z++}};1r.3I=k(){B f.6b||f.6j};1r.aS=k(){B f.78};1r.aC=k(){B(f.3I()&&(f.78||(f.2z>=f.5H&&f.2z%f.70===0)))};1r.aD=k(){B f.3I()&&f.2z>=f.5H};1r.km=k(){B f.aF};1r.kl=k(){B f.aB};1r.k4=k(){B f.au};O.19(1r,\'6f\',{Z:k(){B f.av},1b:K});O.19(1r,\'6g\',{Z:k(){B f.aw},1b:K});O.19(1r,\'x\',{Z:k(){B f.5Y},1b:K});O.19(1r,\'y\',{Z:k(){B f.5C},1b:K});O.19(1r,\'cY\',{Z:k(){B f.5P},1b:K});1r.3S=k(){V.1P(\'k5\',f.d7.1h(f));V.1P(\'k6\',f.d3.1h(f));V.1P(\'kM\',f.cZ.1h(f));V.1P(\'k3\',f.d0.1h(f));V.1P(\'8T\',f.5x.1h(f));V.1P(\'k2\',f.cM.1h(f));V.1P(\'jY\',f.cL.1h(f));V.1P(\'jX\',f.cs.1h(f));V.1P(\'jZ\',f.ct.1h(f))};1r.d7=k(W){if(W.7Q===0){f.d8(W)}I if(W.7Q===1){f.d4(W)}I if(W.7Q===2){f.bs(W)}};1r.d8=k(W){o x=G.3Y(W.4s);o y=G.47(W.4t);if(G.6i(x,y)){f.6b=K;f.2z=0;f.91(x,y)}};1r.d4=k(W){};1r.bs=k(W){o x=G.3Y(W.4s);o y=G.47(W.4t);if(G.6i(x,y)){f.7o(x,y)}};1r.d3=k(W){if(f.6b){o x=G.3Y(W.4s);o y=G.47(W.4t);f.9B(x,y)}};1r.cZ=k(W){if(W.7Q===0){o x=G.3Y(W.4s);o y=G.47(W.4t);f.6b=P;f.9p(x,y)}};1r.d0=k(W){f.1G.6f+=W.k0;f.1G.6g+=W.k1;W.4u()};1r.5x=k(W){1e(o i=0;i<W.5J.1k;i++){o 3t=W.5J[i];o x=G.3Y(3t.4s);o y=G.47(3t.4t);if(G.6i(x,y)){f.6j=K;f.2z=0;if(W.k8.1k>=2){f.7o(x,y)}I{f.91(x,y)}W.4u()}}if(1E.k9||1E.5E.kh){W.4u()}};1r.cM=k(W){1e(o i=0;i<W.5J.1k;i++){o 3t=W.5J[i];o x=G.3Y(3t.4s);o y=G.47(3t.4t);f.9B(x,y)}};1r.cL=k(W){1e(o i=0;i<W.5J.1k;i++){o 3t=W.5J[i];o x=G.3Y(3t.4s);o y=G.47(3t.4t);f.6j=P;f.9p(x,y)}};1r.cs=k(W){f.6j=P};1r.ct=k(W){if(W.ki===\'3t\'&&!W.kj){o x=G.3Y(W.4s);o y=G.47(W.4t);if(G.6i(x,y)){f.7o(x,y);W.4u()}}};1r.91=k(x,y){f.1G.7x=K;f.5Y=x;f.5C=y;f.5P=7B.7p()};1r.7o=k(x,y){f.1G.7P=K;f.5Y=x;f.5C=y};1r.9B=k(x,y){f.1G.7T=K;f.5Y=x;f.5C=y};1r.9p=k(x,y){f.1G.7U=K;f.5Y=x;f.5C=y};k 1d(){f.1j.2p(f,2h)}1d.u=O.2N(1a.1d.u);1d.u.2f=1d;1d.u.1j=k(M){o 1C=N 1a.94(N 1a.62());1a.1d.1X(f,1C);f.1t=X;f.1K=N 23();f.5d=N 23();f.6C=N 35();f.61=[0,0,0,0];f.3Q=[0,0,0,0];f.1l=X;f.1f=X;f.4p=X;f.aH=1d.cl++;f.cC=P;f.M=M};1d.cl=0;O.19(1d.u,\'M\',{Z:k(){B f.1t},1q:k(D){if(f.1t!==D){f.1t=D;if(f.1t){f.1J(0,0,0,0);f.1t.3C(f.8J.1h(f))}I{f.1C.1J(23.8M)}}},1b:K});O.19(1d.u,\'E\',{Z:k(){B f.1K.E},1q:k(D){f.1K.E=D;f.3D()},1b:K});O.19(1d.u,\'F\',{Z:k(){B f.1K.F},1q:k(D){f.1K.F=D;f.3D()},1b:K});O.19(1d.u,\'1M\',{Z:k(){B f.1A*R},1q:k(D){f.1A=D.1I(0,R)/R},1b:K});1d.u.2a=k(){f.1s.5A(k(1x){if(1x.2a){1x.2a()}})};1d.u.2j=k(x,y){f.x=x;f.y=y};1d.u.1J=k(x,y,E,F){o 2n=f.1K;if(x!==2n.x||y!==2n.y||E!==2n.E||F!==2n.F){2n.x=x;2n.y=y;2n.E=E;2n.F=F;f.3D()}};1d.u.kk=k(){B f.61.5k()};1d.u.kg=k(1R){if(!(1R 7l 3L)){3w N 3u(\'cn co be an 1c\')}if(!f.61.5N(1R)){f.61=1R.5k();f.3D()}};1d.u.kf=k(){B f.3Q.5k()};1d.u.kb=k(1F){if(!(1F 7l 3L)){3w N 3u(\'cn co be an 1c\')}if(!f.3Q.5N(1F)){f.3Q=1F.5k();f.3D()}};1d.u.8J=k(){if(f.1K.E===0&&f.1K.F===0){f.1K.E=f.1t.E;f.1K.F=f.1t.F}f.3D()};1d.u.3D=k(){o 8E=H.1u(f.1K.x);o 8G=H.1u(f.1K.y);o cz=H.1u(f.1K.E);o cA=H.1u(f.1K.F);o 93=f.1t?f.1t.E:0;o 8V=f.1t?f.1t.F:0;o 5r=8E.1I(0,93);o 5t=8G.1I(0,8V);o 5B=(cz-5r+8E).1I(0,93-5r);o 5p=(cA-5t+8G).1I(0,8V-5t);f.5d.x=5r;f.5d.y=5t;f.5d.E=5B;f.5d.F=5p;f.6C.x=5r-8E;f.6C.y=5t-8G;if(5B>0&&5p>0){if(f.cI()){f.cJ(5B,5p);f.cK(5r,5t,5B,5p);f.4p.cH();f.1C.4a=f.4p;f.1C.1J(N 23(0,0,5B,5p))}I{if(f.1t){f.1C.4a=f.1t.4a}f.1C.1J(f.5d)}}I if(f.1t){f.1C.1J(23.8M)}I{f.1C.6X=f.1K;f.1C.1J(f.1K);f.1C.6X=X}};1d.u.ka=k(x,y,w,h){B(f.1t&&x+w>0&&y+h>0&&x<f.1t.E&&y<f.1t.F)};1d.u.cI=k(){o 1F=f.3Q;B 1F[0]||1F[1]||1F[2]||1F[3]||f.61[3]>0};1d.u.cJ=k(w,h){if(!f.1l){f.1l=V.2m(\'1z\');f.1f=f.1l.3x(\'2d\')}f.1l.E=w;f.1l.F=h;if(!f.4p){f.4p=N 1a.62(f.1l)}f.4p.E=w;f.4p.F=h;f.4p.64=f.1t.4a.64};1d.u.cK=k(x,y,w,h){o C=f.1f;o 1F=f.3Q;o 1R=f.61;C.1S=\'kc\';C.2M(f.1t.1z,x,y,w,h,0,0,w,h);if(G.ar()){o 7Z=H.1v(0,1F[3]);C.1S=\'aq\';C.1Q=\'6x(R,R,R,\'+7Z/R+\')\';C.1O(0,0,w,h)}o 6W=H.1v(0,1F[0]);o g1=H.1v(0,1F[1]);o b1=H.1v(0,1F[2]);C.1S=\'6S\';C.1Q=22.50(6W,g1,b1);C.1O(0,0,w,h);if(G.ao()){C.1S=\'6H\';C.1Q=\'3K\';C.1O(0,0,w,h);o 6P=H.1v(0,-1F[0]);o g2=H.1v(0,-1F[1]);o b2=H.1v(0,-1F[2]);C.1S=\'6S\';C.1Q=22.50(6P,g2,b2);C.1O(0,0,w,h);C.1S=\'6H\';C.1Q=\'3K\';C.1O(0,0,w,h)}o cG=H.1v(0,1R[0]);o g3=H.1v(0,1R[1]);o b3=H.1v(0,1R[2]);o a3=H.1v(0,1R[3]);C.1S=\'21-kd\';C.1Q=22.50(cG,g3,b3);C.3d=a3/R;C.1O(0,0,w,h);C.1S=\'ek-in\';C.3d=1;C.2M(f.1t.1z,x,y,w,h,0,0,w,h)};1d.u.4n=k(){1a.1d.u.4n.1X(f);f.6K.1U+=f.6C.x;f.6K.1Z+=f.6C.y};1d.u.4h=k(T){if(f.2B&&f.1A>0){if(f.1C.cF.E<=0||f.1C.cF.F<=0){if(f.5L){T.7q.cD(f.5L,T)}1e(o i=0,j=f.1s.1k;i<j;i++){f.1s[i].4h(T)}if(f.5L){T.7q.d9(T)}}I{1a.1d.u.4h.1X(f,T)}}};1d.u.4N=k(T){if(f.2B&&f.1A>0){o 2A=T.2A;if(f.bm){2A.ke();T.bl.kL(f.kX);if(f.cC){T.gl.le(0,0,0,1);T.gl.2b(T.gl.l7)}}if(f.5L){2A.3b();T.7q.cD(f.lb,T);2A.5a()}2A.7r(f);1e(o i=0,j=f.1s.1k;i<j;i++){f.1s[i].4N(T)}if(f.5L){2A.3b();T.7q.d9(f.5L,T);2A.5a()}if(f.bm){2A.3b();T.bl.l5();2A.5a()}}};k L(){f.1j.2p(f,2h)}L.u=O.2N(1a.3s.u);L.u.2f=L;L.u.1j=k(){1a.3s.1X(f);f.3n=20;f.1g=G.E+f.3n*2;f.1i=G.F+f.3n*2;f.2k=48;f.2l=48;f.aV=0;f.aY=0;f.7a=X;f.6A=0;f.6N=0;f.6y=[];f.53=[];f.25=N 35();f.bc=[];f.aM=0;f.f4=P;f.f7=P;f.5V();f.bi()};O.19(L.u,\'E\',{Z:k(){B f.1g},1q:k(D){if(f.1g!==D){f.1g=D;f.5V()}}});O.19(L.u,\'F\',{Z:k(){B f.1i},1q:k(D){if(f.1i!==D){f.1i=D;f.5V()}}});O.19(L.u,\'l3\',{Z:k(){B f.2k},1q:k(D){if(f.2k!==D){f.2k=D;f.5V()}}});O.19(L.u,\'kS\',{Z:k(){B f.2l},1q:k(D){if(f.2l!==D){f.2l=D;f.5V()}}});L.u.kT=k(E,F,2u){f.aV=E;f.aY=F;f.7a=2u};L.u.3W=k(){1e(o i=0;i<f.53.1k;i++){if(f.53[i]&&!f.53[i].3W()){B P}}B K};L.u.2a=k(){f.aM++;f.6Q=H.1u(f.aM/30);f.1s.5A(k(1x){if(1x.2a){1x.2a()}})};L.u.bi=k(){f.aG=K;f.6y.1k=0};L.u.4n=k(){o 2G=H.1u(f.25.x);o 2F=H.1u(f.25.y);o 3M=H.1u((2G-f.3n)/f.2k);o 3z=H.1u((2F-f.3n)/f.2l);f.bo(3M,3z);if(f.aG||f.bq!==f.6Q||f.bp!==3M||f.bj!==3z){f.bq=f.6Q;f.bp=3M;f.bj=3z;f.bh(3M,3z);f.aG=P}f.fa();1a.3s.u.4n.1X(f)};L.u.5V=k(){o E=f.1g;o F=f.1i;o 4m=f.3n;o 85=H.8g(E/f.2k)+1;o 7X=H.8g(F/f.2l)+1;o 7F=85*f.2k;o 7m=7X*f.2l;f.5O=N Y(7F,7m);f.7C=N Y(7F,7m);f.6A=7F;f.6N=7m;f.5z=N 1d();f.5z.2j(-4m,-4m,E,F);f.5z.z=0;f.5u=N 1d();f.5u.2j(-4m,-4m,E,F);f.5u.z=4;1e(o i=0;i<4;i++){f.5z.2D(N 1d(f.5O));f.5u.2D(N 1d(f.7C))}f.2D(f.5z);f.2D(f.5u)};L.u.bo=k(3M,3z){o m=f.3n;o 2G=H.1u(f.25.x);o 2F=H.1u(f.25.y);o 3h=(2G-m).4R(f.6A);o 3i=(2F-m).4R(f.6N);o 1B=f.6A-3h;o h1=f.6N-3i;o 4v=f.1g-1B;o h2=f.1i-h1;1e(o i=0;i<2;i++){o 1s;if(i===0){1s=f.5z.1s}I{1s=f.5u.1s}1s[0].2j(0,0,1B,h1);1s[0].1J(3h,3i,1B,h1);1s[1].2j(1B,0,4v,h1);1s[1].1J(0,3i,4v,h1);1s[2].2j(0,h1,1B,h2);1s[2].1J(3h,0,1B,h2);1s[3].2j(1B,h1,4v,h2);1s[3].1J(0,0,4v,h2)}};L.u.bh=k(3M,3z){o 85=H.8g(f.1g/f.2k)+1;o 7X=H.8g(f.1i/f.2l)+1;1e(o y=0;y<7X;y++){1e(o x=0;x<85;x++){f.bk(3M,3z,x,y)}}};L.u.bk=k(3M,3z,x,y){o ag=kQ;o 3F=3M+x;o 3J=3z+y;o dx=(3F*f.2k).4R(f.6A);o dy=(3J*f.2l).4R(f.6N);o 6T=dx/f.2k;o 6V=dy/f.2l;o 5f=f.4S(3F,3J,0);o 6O=f.4S(3F,3J,1);o 6M=f.4S(3F,3J,2);o 6F=f.4S(3F,3J,3);o 5y=f.4S(3F,3J,4);o 74=f.4S(3F,3J-1,1);o 3q=[];o 3r=[];if(f.6s(5f)){3r.29(5f)}I{3q.29(5f)}if(f.6s(6O)){3r.29(6O)}I{3q.29(6O)}3q.29(-5y);if(f.7d(74)&&!f.7d(6O)){if(!L.fn(5f)){3q.29(ag+74)}}if(f.f8(3F,3J)){3r.29(6M);3r.29(6F)}I{if(f.6s(6M)){3r.29(6M)}I{3q.29(6M)}if(f.6s(6F)){3r.29(6F)}I{3q.29(6F)}}o bn=f.ae(0,6T,6V);if(!3q.5N(bn)||L.5D(5f)){f.5O.4z(dx,dy,f.2k,f.2l);1e(o i=0;i<3q.1k;i++){o 7S=3q[i];if(7S<0){f.fR(f.5O,5y,dx,dy)}I if(7S>=ag){f.fD(f.5O,74,dx,dy)}I{f.af(f.5O,7S,dx,dy)}}f.a5(0,6T,6V,3q)}o fP=f.ae(1,6T,6V);if(!3r.5N(fP)){f.7C.4z(dx,dy,f.2k,f.2l);1e(o j=0;j<3r.1k;j++){f.af(f.7C,3r[j],dx,dy)}f.a5(1,6T,6V,3r)}};L.u.ae=k(i,x,y){o 4o=f.6y[i];if(4o){o 54=4o[y];if(54){o 6J=54[x];if(6J){B 6J}}}B[]};L.u.a5=k(i,x,y,6J){o 4o=f.6y[i];if(!4o){4o=f.6y[i]=[]}o 54=4o[y];if(!54){54=4o[y]=[]}54[x]=6J};L.u.af=k(M,J,dx,dy){if(L.fc(J)){if(L.7G(J)){f.fI(M,J,dx,dy)}I{f.fM(M,J,dx,dy)}}};L.u.fM=k(M,J,dx,dy){o 2Y=0;if(L.9z(J)){2Y=4}I{2Y=5+H.1u(J/aO)}o w=f.2k;o h=f.2l;o 2R=(H.1u(J/kN)%2*8+J%8)*w;o 2S=(H.1u(J%aO/8)%16)*h;o 21=f.53[2Y];if(21){M.1D(21,2R,2S,w,h,dx,dy,w,h)}};L.u.fI=k(M,J,dx,dy){o 4Q=L.9b;o 2L=L.4d(J);o 5c=L.9m(J);o 1U=2L%8;o 1Z=H.1u(2L/8);o bx=0;o by=0;o 2Y=0;o am=P;if(L.5D(J)){o 8I=[0,1,2,1][f.6Q%4];2Y=0;if(2L===0){bx=8I*2;by=0}I if(2L===1){bx=8I*2;by=3}I if(2L===2){bx=6;by=0}I if(2L===3){bx=6;by=3}I{bx=H.1u(1U/4)*8;by=1Z*6+H.1u(1U/2)%2*3;if(2L%2===0){bx+=8I*2}I{bx+=6;4Q=L.fj;by+=f.6Q%3}}}I if(L.5G(J)){2Y=1;bx=1U*2;by=(1Z-2)*3;am=f.7d(J)}I if(L.6a(J)){2Y=2;bx=1U*2;by=(1Z-6)*2;4Q=L.95}I if(L.6Z(J)){2Y=3;bx=1U*2;by=H.1u((1Z-10)*2.5+(1Z%2===1?0.5:0));if(1Z%2===1){4Q=L.95}}o 4k=4Q[5c];o 21=f.53[2Y];if(4k&&21){o 1B=f.2k/2;o h1=f.2l/2;1e(o i=0;i<4;i++){o 5M=4k[i][0];o 4Y=4k[i][1];o 69=(bx*2+5M)*1B;o 63=(by*2+4Y)*h1;o 4w=dx+(i%2)*1B;o 49=dy+H.1u(i/2)*h1;if(am&&(4Y===1||4Y===5)){o ah=5M;o fA=3;if(4Y===1){ah=[0,3,2,1][5M]}o fz=(bx*2+ah)*1B;o fB=(by*2+fA)*h1;M.1D(21,fz,fB,1B,h1,4w,49,1B,h1);49+=h1/2;M.1D(21,69,63,1B,h1/2,4w,49,1B,h1/2)}I{M.1D(21,69,63,1B,h1,4w,49,1B,h1)}}}};L.u.fD=k(M,J,dx,dy){if(L.5G(J)){o 4Q=L.9b;o 2L=L.4d(J);o 5c=L.9m(J);o 1U=2L%8;o 1Z=H.1u(2L/8);o 2Y=1;o bx=1U*2;o by=(1Z-2)*3;o 4k=4Q[5c];if(4k){o 21=f.53[2Y];o 1B=f.2k/2;o h1=f.2l/2;1e(o i=0;i<2;i++){o 5M=4k[2+i][0];o 4Y=4k[2+i][1];o 69=(bx*2+5M)*1B;o 63=(by*2+4Y)*h1+h1/2;o 4w=dx+(i%2)*1B;o 49=dy+H.1u(i/2)*h1;M.1D(21,69,63,1B,h1/2,4w,49,1B,h1/2)}}}};L.u.fR=k(M,5y,dx,dy){if(5y&kP){o 1B=f.2k/2;o h1=f.2l/2;o 1R=\'6x(0,0,0,0.5)\';1e(o i=0;i<4;i++){if(5y&(1<<i)){o 4w=dx+(i%2)*1B;o 49=dy+H.1u(i/2)*h1;M.1O(4w,49,1B,h1,1R)}}}};L.u.4S=k(x,y,z){if(f.7a){o E=f.aV;o F=f.aY;if(f.f4){x=x.4R(E)}if(f.f7){y=y.4R(F)}if(x>=0&&x<E&&y>=0&&y<F){B f.7a[(z*F+y)*E+x]||0}I{B 0}}I{B 0}};L.u.6s=k(J){B f.bc[J]&l4};L.u.7d=k(J){B L.5G(J)&&(f.bc[J]&l0)};L.u.f8=k(3F,3J){B P};L.u.fa=k(){f.1s.kZ(f.f9.1h(f))};L.u.f9=k(a,{if(a.z!==b.z){B a.z-b.z}I if(a.y!==b.y){B a.y-b.y}I{B a.aH-b.aH}};L.l2=0;L.kY=aO;L.kW=l1;L.kV=kU;L.da=kO;L.3E=kR;L.7c=i3;L.9o=lc;L.9j=ld;L.8W=la;L.fc=k(J){B J>0&&J<f.8W};L.7G=k(J){B J>=f.3E};L.4d=k(J){B H.1u((J-f.3E)/48)};L.9m=k(J){B(J-f.3E)%48};L.l6=k(2L,5c){B f.3E+2L*48+5c};L.l8=k(8R,8B){if(f.7G(8R)&&f.7G(8B)){B f.4d(8R)===f.4d(8B)}I{B 8R===8B}};L.5D=k(J){B J>=f.3E&&J<f.7c};L.5G=k(J){B J>=f.7c&&J<f.9o};L.6a=k(J){B J>=f.9o&&J<f.9j};L.6Z=k(J){B J>=f.9j&&J<f.8W};L.9z=k(J){B J>=f.da&&J<f.3E};L.l9=k(J){if(f.5D(J)){B!(J>=f.3E+96&&J<f.3E+8X)}I{B P}};L.8U=k(J){if(J>=f.3E+8X&&J<f.7c){B f.4d(J)%2===1}I{B P}};L.k7=k(J){B f.5D(J)||f.5G(J)||f.9z(J)};L.fn=k(J){B f.6a(J)||f.6Z(J)};L.fs=k(J){B f.6a(J)&&f.4d(J)%16<8};L.9u=k(J){B f.6Z(J)&&f.4d(J)%16<8};L.9e=k(J){B(f.6a(J)||f.6Z(J))&&4d(J)%16>=8};L.jV=k(J){B f.9u(J)||f.9e(J)};L.iJ=k(J){B(f.5D(J)&&!f.8U(J))||f.5G(J)||f.9u(J)};L.iI=k(J){B f.fs(J)||f.9e(J)};L.iK=k(J){B f.8U(J)};L.9b=[[[2,4],[1,4],[2,3],[1,3]],[[2,0],[1,4],[2,3],[1,3]],[[2,4],[3,0],[2,3],[1,3]],[[2,0],[3,0],[2,3],[1,3]],[[2,4],[1,4],[2,3],[3,1]],[[2,0],[1,4],[2,3],[3,1]],[[2,4],[3,0],[2,3],[3,1]],[[2,0],[3,0],[2,3],[3,1]],[[2,4],[1,4],[2,1],[1,3]],[[2,0],[1,4],[2,1],[1,3]],[[2,4],[3,0],[2,1],[1,3]],[[2,0],[3,0],[2,1],[1,3]],[[2,4],[1,4],[2,1],[3,1]],[[2,0],[1,4],[2,1],[3,1]],[[2,4],[3,0],[2,1],[3,1]],[[2,0],[3,0],[2,1],[3,1]],[[0,4],[1,4],[0,3],[1,3]],[[0,4],[3,0],[0,3],[1,3]],[[0,4],[1,4],[0,3],[3,1]],[[0,4],[3,0],[0,3],[3,1]],[[2,2],[1,2],[2,3],[1,3]],[[2,2],[1,2],[2,3],[3,1]],[[2,2],[1,2],[2,1],[1,3]],[[2,2],[1,2],[2,1],[3,1]],[[2,4],[3,4],[2,3],[3,3]],[[2,4],[3,4],[2,1],[3,3]],[[2,0],[3,4],[2,3],[3,3]],[[2,0],[3,4],[2,1],[3,3]],[[2,4],[1,4],[2,5],[1,5]],[[2,0],[1,4],[2,5],[1,5]],[[2,4],[3,0],[2,5],[1,5]],[[2,0],[3,0],[2,5],[1,5]],[[0,4],[3,4],[0,3],[3,3]],[[2,2],[1,2],[2,5],[1,5]],[[0,2],[1,2],[0,3],[1,3]],[[0,2],[1,2],[0,3],[3,1]],[[2,2],[3,2],[2,3],[3,3]],[[2,2],[3,2],[2,1],[3,3]],[[2,4],[3,4],[2,5],[3,5]],[[2,0],[3,4],[2,5],[3,5]],[[0,4],[1,4],[0,5],[1,5]],[[0,4],[3,0],[0,5],[1,5]],[[0,2],[3,2],[0,3],[3,3]],[[0,2],[1,2],[0,5],[1,5]],[[0,4],[3,4],[0,5],[3,5]],[[2,2],[3,2],[2,5],[3,5]],[[0,2],[3,2],[0,5],[3,5]],[[0,0],[1,0],[0,1],[1,1]]];L.95=[[[2,2],[1,2],[2,1],[1,1]],[[0,2],[1,2],[0,1],[1,1]],[[2,0],[1,0],[2,1],[1,1]],[[0,0],[1,0],[0,1],[1,1]],[[2,2],[3,2],[2,1],[3,1]],[[0,2],[3,2],[0,1],[3,1]],[[2,0],[3,0],[2,1],[3,1]],[[0,0],[3,0],[0,1],[3,1]],[[2,2],[1,2],[2,3],[1,3]],[[0,2],[1,2],[0,3],[1,3]],[[2,0],[1,0],[2,3],[1,3]],[[0,0],[1,0],[0,3],[1,3]],[[2,2],[3,2],[2,3],[3,3]],[[0,2],[3,2],[0,3],[3,3]],[[2,0],[3,0],[2,3],[3,3]],[[0,0],[3,0],[0,3],[3,3]]];L.fj=[[[2,0],[1,0],[2,1],[1,1]],[[0,0],[1,0],[0,1],[1,1]],[[2,0],[3,0],[2,1],[3,1]],[[0,0],[3,0],[0,1],[3,1]]];k 2s(){f.1j.2p(f,2h)}2s.u=O.2N(1a.2s.u);2s.u.2f=2s;2s.u.1j=k(M){o 1C=N 1a.94(N 1a.62());1a.2s.1X(f,1C);f.1t=X;f.1g=0;f.1i=0;f.1K=N 23();f.25=N 35();f.M=M};O.19(2s.u,\'M\',{Z:k(){B f.1t},1q:k(D){if(f.1t!==D){f.1t=D;if(f.1t){f.1t.3C(f.8J.1h(f))}I{f.1C.1J(23.8M)}}},1b:K});O.19(1d.u,\'1M\',{Z:k(){B f.1A*R},1q:k(D){f.1A=D.1I(0,R)/R},1b:K});2s.u.2a=k(){f.1s.5A(k(1x){if(1x.2a){1x.2a()}})};2s.u.2j=k(x,y,E,F){f.x=x||0;f.y=y||0;f.1g=E||0;f.1i=F||0};2s.u.1J=k(x,y,E,F){f.1K.x=x;f.1K.y=y;f.1K.E=E;f.1K.F=F;f.3D()};2s.u.4n=k(){f.fi.x=H.2r(-f.25.x);f.fi.y=H.2r(-f.25.y);if(!f.fd){f.iL=X;f.iM(K)}1a.2s.u.4n.1X(f)};2s.u.8J=k(){f.1C.4a=f.1t.4a;f.3D()};2s.u.3D=k(){o 2n=f.1K.5k();if(2n.E===0&&2n.F===0&&f.1t){2n.E=f.1t.E;2n.F=f.1t.F}o fg=f.1C.6X;f.1C.6X=2n;f.1C.1J(2n);f.1C.6X=fg;f.fd=X};k 3m(){f.1j.2p(f,2h)}3m.u=O.2N(1a.1d.u);3m.u.2f=3m;3m.u.1j=k(){o 1C=N 1a.94(N 1a.62());1a.1d.1X(f,1C);f.1t=N Y(1,1);f.1C.4a=f.1t.4a;f.1C.1J(N 23(0,0,1,1));f.8z.x=G.E;f.8z.y=G.F;f.1M=0;f.52=-1;f.51=-1;f.4Z=-1;f.82=\'\';f.fl()};O.19(3m.u,\'1M\',{Z:k(){B f.1A*R},1q:k(D){f.1A=D.1I(0,R)/R},1b:K});3m.u.fl=k(){f.8Q(0,0,0)};3m.u.iH=k(){f.8Q(R,R,R)};3m.u.8Q=k(r,g,{if(f.52!==r||f.51!==g||f.4Z!=={r=H.2r(r||0).1I(0,R);g=H.2r(g||0).1I(0,R);b=H.2r(b||0).1I(0,R);f.52=r;f.51=g;f.4Z=b;f.82=22.50(r,g,;f.1t.71(f.82)}};3m.u.4h=k(T){if(f.2B&&f.1A>0){o C=T.C;o t=f.6K;o r=T.eJ;C.ai(t.a,t.b,t.c,t.d,t.1U*r,t.1Z*r);C.1S=1a.iG[f.iC];C.3d=f.1A;C.1Q=f.82;C.1O(0,0,G.E,G.F)}};k 1o(){f.1j.2p(f,2h)}1o.u=O.2N(1a.3s.u);1o.u.2f=1o;1o.u.1j=k(){1a.3s.1X(f);f.6c=K;f.2t=X;f.1g=0;f.1i=0;f.3P=N 23();f.36=R;f.6h=0;f.5F=18;f.3n=4;f.3Q=[0,0,0];f.3R=X;f.3T=X;f.4A=X;f.6t=X;f.3j=X;f.iB=[];f.3O=X;f.f0();f.25=N 35();f.9v=K;f.fx=P;f.fL=P;f.az=P};O.19(1o.u,\'iD\',{Z:k(){B f.2t},1q:k(D){if(f.2t!==D){f.2t=D;f.2t.3C(f.eX.1h(f))}},1b:K});O.19(1o.u,\'iE\',{Z:k(){B f.3j.M},1q:k(D){f.3j.M=D},1b:K});O.19(1o.u,\'E\',{Z:k(){B f.1g},1q:k(D){f.1g=D;f.4U()},1b:K});O.19(1o.u,\'F\',{Z:k(){B f.1i},1q:k(D){f.1i=D;f.4U()},1b:K});O.19(1o.u,\'9f\',{Z:k(){B f.5F},1q:k(D){f.5F=D;f.4U()},1b:K});O.19(1o.u,\'4m\',{Z:k(){B f.3n},1q:k(D){f.3n=D;f.4U()},1b:K});O.19(1o.u,\'1M\',{Z:k(){B f.3R.1A*R},1q:k(D){f.3R.1A=D.1I(0,R)/R},1b:K});O.19(1o.u,\'iF\',{Z:k(){B f.3T.1A*R},1q:k(D){f.3T.1A=D.1I(0,R)/R},1b:K});O.19(1o.u,\'fw\',{Z:k(){B f.3j.1A*R},1q:k(D){f.3j.1A=D.1I(0,R)/R},1b:K});O.19(1o.u,\'aP\',{Z:k(){B f.36},1q:k(D){if(f.36!==D){f.36=D.1I(0,R);f.3R.8z.y=f.36/R;f.3R.y=f.F/2*(1-f.36/R)}},1b:K});1o.u.2a=k(){if(f.9v){f.6h++}f.1s.5A(k(1x){if(1x.2a){1x.2a()}})};1o.u.2j=k(x,y,E,F){f.x=x||0;f.y=y||0;if(f.1g!==E||f.1i!==F){f.1g=E||0;f.1i=F||0;f.4U()}};1o.u.5K=k(){B f.36>=R};1o.u.iN=k(){B f.36<=0};1o.u.iO=k(x,y,E,F){o cx=H.1u(x||0);o cy=H.1u(y||0);o cw=H.1u(E||0);o ch=H.1u(F||0);o 55=f.3P;if(55.x!==cx||55.y!==cy||55.E!==cw||55.F!==ch){f.3P.x=cx;f.3P.y=cy;f.3P.E=cw;f.3P.F=ch;f.9x()}};1o.u.eM=k(r,g,{o 1F=f.3Q;if(r!==1F[0]||g!==1F[1]||b!==1F[2]){f.3Q=[r,g,b];f.97()}};1o.u.iX=k(1x){o fb=f.1s.9r(f.3R);B f.iW(1x,fb+1)};1o.u.4n=k(){f.fJ();f.fG();f.eS();f.fH();1a.3s.u.4n.1X(f)};1o.u.f0=k(){f.3R=N 1a.3s();f.3T=N 1d();f.4A=N 1d();f.6t=N 1d();f.3j=N 1d();f.4F=N 1d();f.4E=N 1d();f.3O=N 1d();f.3T.M=N Y(1,1);f.3T.1A=8X/R;f.2D(f.3R);f.3R.2D(f.3T);f.3R.2D(f.6t);f.2D(f.4A);f.2D(f.3j);f.2D(f.4F);f.2D(f.4E);f.2D(f.3O)};1o.u.eX=k(){f.4U()};1o.u.4U=k(){f.97();f.fv();f.9x();f.f5();f.fO();f.fS()};1o.u.97=k(){o m=f.3n;o w=f.1g-m*2;o h=f.1i-m*2;o M=N Y(w,h);f.3T.M=M;f.3T.1J(0,0,w,h);f.3T.2j(m,m);if(w>0&&h>0&&f.2t){o p=96;M.1D(f.2t,0,0,p,p,0,0,w,h);1e(o y=0;y<h;y+=p){1e(o x=0;x<w;x+=p){M.1D(f.2t,0,p,p,p,x,y,p,p)}}o 1F=f.3Q;M.9L(1F[0],1F[1],1F[2])}};1o.u.fv=k(){o w=f.1g;o h=f.1i;o m=24;o M=N Y(w,h);f.6t.M=M;f.6t.1J(0,0,w,h);if(w>0&&h>0&&f.2t){o 1Y=f.2t;o p=96;o q=96;M.1D(1Y,p+m,0+0,p-m*2,m,m,0,w-m*2,m);M.1D(1Y,p+m,0+q-m,p-m*2,m,m,h-m,w-m*2,m);M.1D(1Y,p+0,0+m,m,p-m*2,0,m,m,h-m*2);M.1D(1Y,p+q-m,0+m,m,p-m*2,w-m,m,m,h-m*2);M.1D(1Y,p+0,0+0,m,m,0,0,m,m);M.1D(1Y,p+q-m,0+0,m,m,w-m,0,m,m);M.1D(1Y,p+0,0+q-m,m,m,0,h-m,m,m);M.1D(1Y,p+q-m,0+q-m,m,m,w-m,h-m,m,m)}};1o.u.9x=k(){o 4V=f.5F;o x=f.3P.x+4V-f.25.x;o y=f.3P.y+4V-f.25.y;o w=f.3P.E;o h=f.3P.F;o m=4;o 3h=H.1v(x,4V);o 3i=H.1v(y,4V);o 2G=x-3h;o 2F=y-3i;o 4v=H.4b(w,f.1g-4V-3h);o h2=H.4b(h,f.1i-4V-3i);o M=N Y(4v,h2);f.4A.M=M;f.4A.1J(0,0,4v,h2);f.4A.2j(3h,3i);if(w>0&&h>0&&f.2t){o 1Y=f.2t;o p=96;o q=48;M.1D(1Y,p+m,p+m,q-m*2,q-m*2,2G+m,2F+m,w-m*2,h-m*2);M.1D(1Y,p+m,p+0,q-m*2,m,2G+m,2F+0,w-m*2,m);M.1D(1Y,p+m,p+q-m,q-m*2,m,2G+m,2F+h-m,w-m*2,m);M.1D(1Y,p+0,p+m,m,q-m*2,2G+0,2F+m,m,h-m*2);M.1D(1Y,p+q-m,p+m,m,q-m*2,2G+w-m,2F+m,m,h-m*2);M.1D(1Y,p+0,p+0,m,m,2G+0,2F+0,m,m);M.1D(1Y,p+q-m,p+0,m,m,2G+w-m,2F+0,m,m);M.1D(1Y,p+0,p+q-m,m,m,2G+0,2F+h-m,m,m);M.1D(1Y,p+q-m,p+q-m,m,m,2G+w-m,2F+h-m,m,m)}};1o.u.f5=k(){f.3j.2j(f.9f,f.9f)};1o.u.fO=k(){o w=f.1g;o h=f.1i;o p=24;o q=p/2;o 2R=96+p;o 2S=0+p;f.4F.M=f.2t;f.4F.5X.x=0.5;f.4F.5X.y=0.5;f.4F.1J(2R+q,2S+q+p,p,q);f.4F.2j(w/2,h-q);f.4E.M=f.2t;f.4E.5X.x=0.5;f.4E.5X.y=0.5;f.4E.1J(2R+q,2S,p,q);f.4E.2j(w/2,q)};1o.u.fS=k(){o 2R=as;o 2S=96;o p=24;f.3O.M=f.2t;f.3O.5X.x=0.5;f.3O.5X.y=1;f.3O.2j(f.1g/2,f.1i);f.3O.1J(2R,2S,p,p);f.3O.1A=0};1o.u.fJ=k(){o 7R=f.6h%40;o 7O=f.fw;if(f.9v){if(7R<20){7O-=7R*8}I{7O-=(40-7R)*8}}f.4A.1A=7O/R;f.4A.2B=f.5K()};1o.u.fH=k(){o w=f.1g-f.5F*2;o h=f.1i-f.5F*2;if(w>0&&h>0){f.3j.1J(f.25.x,f.25.y,w,h);f.3j.2B=f.5K()}I{f.3j.2B=P}};1o.u.fG=k(){f.4F.2B=f.5K()&&f.fx;f.4E.2B=f.5K()&&f.fL};1o.u.eS=k(){o 11=f.3O;o x=H.1u(f.6h/16)%2;o y=H.1u(f.6h/16/2)%2;o 2R=as;o 2S=96;o p=24;if(!f.az){11.1A=0}I if(11.1A<1){11.1A=H.4b(11.1A+0.1,1)}11.1J(2R+x*p,2S+y*p,p,p);11.2B=f.5K()};k 2q(){f.1j.2p(f,2h)}2q.u=O.2N(1a.3s.u);2q.u.2f=2q;2q.u.1j=k(){1a.3s.1X(f);f.1g=0;f.1i=0;f.4J=X;f.7g=X;f.e1=[1,0,0,0,1,0,0,0,1];f.dH=N 1d(N Y(1,1))};O.19(2q.u,\'E\',{Z:k(){B f.1g},1q:k(D){f.1g=D},1b:K});O.19(2q.u,\'F\',{Z:k(){B f.1i},1q:k(D){f.1i=D},1b:K});2q.u.2j=k(x,y,E,F){f.x=x;f.y=y;f.E=E;f.F=F};2q.u.2a=k(){f.1s.5A(k(1x){if(1x.2a){1x.2a()}})};2q.u.4h=k(T){if(!f.2B){B}if(!f.4J){f.4J=V.2m(\'1z\')}f.4J.E=G.E;f.4J.F=G.F;o dL=T.C;o C=f.4J.3x(\'2d\');C.3B();C.4z(0,0,G.E,G.F);C.dP();C.55(f.x,f.y,f.E,f.F);C.iY();C.iZ();T.C=C;1e(o i=0;i<f.1s.1k;i++){o 1x=f.1s[i];if(1x.6c&&1x.2B&&1x.aP>0){f.dK(T,1x);C.3B();1x.4h(T);C.3y()}}C.3y();T.C=dL;T.C.ai(1,0,0,1,0,0);T.C.1S=\'21-7D\';T.C.3d=1;T.C.2M(f.4J,0,0);1e(o j=0;j<f.1s.1k;j++){if(!f.1s[j].6c){f.1s[j].4h(T)}}};2q.u.dK=k(T,1E){o 7I=f.x+1E.x;o 7J=f.y+1E.y+1E.F/2*(1-1E.36/R);o 7L=1E.E;o 7K=1E.F*1E.36/R;T.C.4z(7I,7J,7L,7K)};2q.u.4N=k(T){if(!f.2B){B}o gl=T.gl;if(!f.7g){f.7g=gl.jW()}f.dH.4N(T);T.2A.3b();gl.iV(gl.dI);gl.2b(gl.iU);f.dJ(T);T.2A.5a();1e(o i=f.1s.1k-1;i>=0;i--){o 1x=f.1s[i];if(1x.6c&&1x.2B&&1x.aP>0){gl.dU(gl.dV,0,dW);1x.4N(T);T.2A.3b();f.eT(T,1x);T.2A.5a()}}gl.iQ(gl.dI);1e(o j=0;j<f.1s.1k;j++){if(!f.1s[j].6c){f.1s[j].4N(T)}}};2q.u.dJ=k(T){o dR=f.x;o dQ=f.y;o 3h=f.x+f.E;o 3i=f.y+f.F;f.5W(T,0,0,G.E,dQ);f.5W(T,0,3i,G.E,G.F-3i);f.5W(T,0,0,dR,G.F);f.5W(T,3h,0,G.E-3h,G.F)};2q.u.eT=k(T,1E){o 7I=f.x+1E.x;o 7J=f.y+1E.y+1E.F/2*(1-1E.36/R);o 7L=1E.E;o 7K=1E.F*1E.36/R;f.5W(T,7I,7J,7L,7K)};2q.u.5W=k(T,x,y,w,h){if(w>0&&h>0){o gl=T.gl;o 72=T.72;o 1H=T.1H;o 4y=T.dZ.iP;T.dZ.iR(4y);gl.iS(4y.iT,P,f.e1);gl.iA(4y.iz,1);gl.dT(4y.ie,72.x,-72.y);gl.dT(4y.ic,-1H.x,-1H.y);gl.dU(gl.dV,0,dW);gl.dl(gl.6v,gl.6v,gl.ig);o 2u=N ih([x,y,x+w,y,x,y+h,x,y+h,x+w,y,x+w,y+h]);gl.ii(gl.dD,f.7g);gl.ib(gl.dD,2u,gl.ia);gl.i5(4y.dj);gl.i4(4y.dj,2,gl.i6,P,0,0);gl.i7(gl.i9,0,6);gl.dl(gl.6v,gl.6v,gl.6v)}};k 2c(){f.1j.2p(f,2h)}2c.u=O.2N(1a.3s.u);2c.u.2f=2c;2c.u.1j=k(){1a.3s.1X(f);f.1g=G.E;f.1i=G.F;f.5q=[];f.dg();f.de();f.2w=\'6r\';f.b6=0;f.25=N 35()};2c.u.2a=k(){f.df();f.dn()};2c.u.dg=k(){f.9R=N Y(1,60);f.9R.71(\'3K\');f.9V=N Y(2,6d);f.9V.71(\'3K\');f.9Z=N Y(9,9);f.9Z.db(4,4,4,\'3K\')};2c.u.de=k(){f.8D=N 3m();f.8D.8Q(80,80,80);f.2D(f.8D)};2c.u.df=k(){f.8D.1M=H.1u(f.b6*6)};2c.u.dn=k(){o b5=H.1u(f.b6*10);3e(f.5q.1k<b5){f.do()}3e(f.5q.1k>b5){f.dz()}f.5q.5A(k(11){f.dC(11);11.x=11.ax-f.25.x;11.y=11.ay-f.25.y},f)};2c.u.do=k(){o 11=N 1d(f.i8);11.1M=0;f.5q.29(11);f.2D(11)};2c.u.dz=k(){f.ij(f.5q.ik())};2c.u.dC=k(11){8F(f.2w){2v\'iv\':f.du(11);3a;2v\'iu\':f.dp(11);3a;2v\'iw\':f.dr(11);3a}if(11.1M<40){f.dt(11)}};2c.u.du=k(11){11.M=f.9R;11.3V=H.5U/16;11.ax-=6*H.8y(11.3V);11.ay+=6*H.8w(11.3V);11.1M-=6};2c.u.dp=k(11){11.M=f.9V;11.3V=H.5U/8;11.ax-=8*H.8y(11.3V);11.ay+=8*H.8w(11.3V);11.1M-=8};2c.u.dr=k(11){11.M=f.9Z;11.3V=H.5U/16;11.ax-=3*H.8y(11.3V);11.ay+=3*H.8w(11.3V);11.1M-=3};2c.u.dt=k(11){11.ax=H.7Y(G.E+6d)-6d+f.25.x;11.ay=H.7Y(G.F+e4)-e4+f.25.y;11.1M=ix+H.7Y(60)};k 3N(){1a.eE.1X(f);f.1j.2p(f,2h)}3N.u=O.2N(1a.eE.u);3N.u.2f=3N;3N.u.1j=k(){f.iy=[f];f.9K={4W:{2w:\'eA\',D:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}};f.it=[\'ir im il;\',\'eB io eG;\',\'eB ip iq;\',\'ew eA 4W;\',\'ew j1 ez;\',\'ex j2(ex) {\',\'   jD = jC(ez, eG) * 4W;\',\'}\']};3N.u.jE=k(){f.9K.4W.D=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]};3N.u.jF=k(D){D=(D||0)/eH;if(D!==0){o c=H.8w(D*H.5U);o s=H.8y(D*H.5U);o 8m=0.3l+c*0.9J-s*0.3l;o 8n=0.2V-c*0.2V-s*0.2V;o 8p=0.3g-c*0.3g+s*0.9M;o 8o=0.3l-c*0.3l+s*0.jG;o 73=0.2V+c*0.eO+s*0.jB;o 8j=0.3g-c*0.3g-s*0.jA;o 8l=0.3l-c*0.3l-s*0.9J;o 8q=0.2V-c*0.2V+s*0.2V;o 8r=0.3g+c*0.9M+s*0.3g;f.8x([8m,8n,8p,0,8o,73,8j,0,8l,8q,8r,0,0,0,0,1])}};3N.u.jw=k(D){D=(D||0).1I(-R,R)/R;if(D!==0){o a=1+D;o 8m=0.3l+0.9J*a;o 8n=0.2V-0.2V*a;o 8p=0.3g-0.3g*a;o 8o=0.3l-0.3l*a;o 73=0.2V+0.eO*a;o 8j=0.3g-0.3g*a;o 8l=0.3l-0.3l*a;o 8q=0.2V-0.2V*a;o 8r=0.3g+0.9M*a;f.8x([8m,8n,8p,0,8o,73,8j,0,8l,8q,8r,0,0,0,0,1])}};3N.u.9L=k(r,g,{r=(r||0).1I(-R,R)/R;g=(g||0).1I(-R,R)/R;b=(b||0).1I(-R,R)/R;if(r!==0||g!==0||b!==0){f.8x([1,0,0,r,0,1,0,g,0,0,1,b,0,0,0,1])}};3N.u.8x=k(4W){o D=f.9K.4W.D;o a2=[];1e(o i=0;i<4;i++){1e(o m=0;m<4;m++){a2[m]=D[i*4+m]}1e(o j=0;j<4;j++){o ak=0;1e(o n=0;n<4;n++){ak+=4W[n*4+j]*a2[n]}D[i*4+j]=ak}}};k 3Z(){f.1j.2p(f,2h)}3Z.u=O.2N(1a.eN.u);3Z.u.2f=3Z;3Z.u.1j=k(){1a.eN.1X(f);f.2b()};3Z.u.2b=k(){f.52=0;f.51=0;f.4Z=0;f.8S=0};3Z.u.eM=k(r,g,b,7Z){f.52=H.2r(r||0).1I(-R,R);f.51=H.2r(g||0).1I(-R,R);f.4Z=H.2r(b||0).1I(-R,R);f.8S=H.2r(7Z||0).1I(0,R)};3Z.u.4h=k(T){if(f.2B){o C=T.C;o t=f.6K;o r=T.eJ;o E=G.E;o F=G.F;C.3B();C.ai(t.a,t.b,t.c,t.d,t.1U*r,t.1Z*r);if(G.ar()&&f.8S>0){C.1S=\'aq\';C.3d=f.8S/R;C.1Q=\'#7i\';C.1O(0,0,E,F)}C.3d=1;o 6W=H.1v(0,f.52);o g1=H.1v(0,f.51);o b1=H.1v(0,f.4Z);if(6W||g1||b1){C.1S=\'6S\';C.1Q=22.50(6W,g1,b1);C.1O(0,0,E,F)}if(G.ao()){o 6P=H.1v(0,-f.52);o g2=H.1v(0,-f.51);o b2=H.1v(0,-f.4Z);if(6P||g2||b2){C.1S=\'6H\';C.1Q=\'#7i\';C.1O(0,0,E,F);C.1S=\'6S\';C.1Q=22.50(6P,g2,b2);C.1O(0,0,E,F);C.1S=\'6H\';C.1Q=\'#7i\';C.1O(0,0,E,F)}}C.3y()}};3Z.u.4N=k(T){};k 4L(){f.1j.2p(f,2h)}4L.u=O.2N(1a.4L.u);4L.u.2f=4L;4L.u.1j=k(){1a.4L.1X(f);f.jv=P};k Q(){f.1j.2p(f,2h)}Q.u.1j=k(1V){if(!Q.3f){Q.1j()}f.2b();f.6q(1V);f.4e=1V};Q.1f=X;Q.4c=X;Q.3f=P;Q.4i=P;Q.1j=k(e8){if(!f.3f){if(!e8){f.eh();f.er();f.ei();f.3S()}f.3f=K}B!!f.1f};Q.jx=k(){if(!f.3f){f.1j()}B!!f.es};Q.jy=k(){if(!f.3f){f.1j()}B!!f.en};Q.eh=k(){6m{if(7t ep!==\'6D\'){f.1f=N ep()}I if(7t eq!==\'6D\'){f.1f=N eq()}}6u(e){f.1f=X}};Q.er=k(){o 4H=V.2m(\'4H\');if(4H.7w){f.es=4H.7w(\'4H/jz\');f.en=4H.7w(\'4H/jH\')}};Q.ei=k(){o C=Q.1f;if(C){f.4c=C.eR();f.4c.1N.D=1;f.4c.8s(C.ek)}};Q.3S=k(){V.1P(\'8T\',f.5x.1h(f));V.1P(\'eU\',f.83.1h(f))};Q.5x=k(){o C=Q.1f;if(C&&!f.4i){o el=C.eK();el.5a(0);f.4i=K}};Q.83=k(){if(V.ff===\'fe\'){f.8a()}I{f.79()}};Q.8a=k(){if(f.ac()){f.ej(1)}};Q.79=k(){if(f.ac()){f.em(0.5)}};Q.ac=k(){B 22.9a()};Q.em=k(2e){if(f.4c){o 1N=f.4c.1N;o 1T=Q.1f.1T;1N.7N(1N.D,1T);1N.7M(1,1T+2e)}};Q.ej=k(2e){if(f.4c){o 1N=f.4c.1N;o 1T=Q.1f.1T;1N.7N(1N.D,1T);1N.7M(0,1T+2e)}};Q.u.2b=k(){f.3b();f.89=X;f.2g=X;f.2T=X;f.4l=X;f.8f=0;f.5Z=0;f.4C=0;f.3U=0;f.86=0;f.2I=1;f.4g=1;f.8P=0;f.6p=X;f.3c=[];f.6I=[];f.4f=P;f.3k=P};O.19(Q.u,\'1V\',{Z:k(){B f.4e},1b:K});O.19(Q.u,\'2U\',{Z:k(){B f.2I},1q:k(D){f.2I=D;if(f.2T){f.2T.1N.D=f.2I}},1b:K});O.19(Q.u,\'jI\',{Z:k(){B f.4g},1q:k(D){if(f.4g!==D){f.4g=D;if(f.aQ()){f.4j(f.2g.2i,0)}}},1b:K});O.19(Q.u,\'jR\',{Z:k(){B f.8P},1q:k(D){f.8P=D;f.b0()},1b:K});Q.u.3W=k(){B!!f.89};Q.u.aI=k(){B f.4f};Q.u.aQ=k(){B!!f.2g};Q.u.4j=k(2i,1H){if(f.3W()){1H=1H||0;f.8L(2i,1H)}I if(Q.1f){f.3k=K;f.3C(k(){if(f.3k){f.4j(2i,1H)}}.1h(f))}};Q.u.3b=k(){f.3k=P;f.9S();f.9H();if(f.6I){3e(f.6I.1k>0){o 2Q=f.6I.5v();2Q()}}};Q.u.6n=k(2e){if(f.3W()){if(f.2T){o 1N=f.2T.1N;o 1T=Q.1f.1T;1N.7N(0,1T);1N.7M(f.2I,1T+2e)}}I if(f.3k){f.3C(k(){f.6n(2e)}.1h(f))}};Q.u.f6=k(2e){if(f.2T){o 1N=f.2T.1N;o 1T=Q.1f.1T;1N.7N(1N.D,1T);1N.7M(0,1T+2e)}f.3k=P};Q.u.fu=k(){if(Q.1f){o 7H=(Q.1f.1T-f.86)*f.4g;if(f.3U>0){3e(7H>=f.4C+f.3U){7H-=f.3U}}B 7H}I{B 0}};Q.u.3C=k(2Q){f.3c.29(2Q)};Q.u.jQ=k(2Q){f.6I.29(2Q)};Q.u.6q=k(1V){if(Q.1f){o 2y=N e5();2y.e6(\'ea\',1V);2y.jS=\'jT\';2y.eb=k(){if(2y.jU<jP){f.ed(2y)}}.1h(f);2y.a8=k(){f.4f=K}.1h(f);2y.ee()}};Q.u.ed=k(2y){o 1c=N ec(2y.eu);f.di(1c);Q.1f.jO(2y.eu,k(8d){f.89=8d;f.8f=8d.2e;if(f.3U>0&&f.5Z>0){f.4C/=f.5Z;f.3U/=f.5Z}I{f.4C=0;f.3U=f.8f}f.5s()}.1h(f))};Q.u.8L=k(2i,1H){f.9S();f.9H();f.eL();f.eP();f.2g.2i=2i;f.2g.5a(0,1H);f.86=Q.1f.1T-1H/f.4g;f.eD()};Q.u.eL=k(){o C=Q.1f;f.2g=C.eK();f.2g.8d=f.89;f.2g.jK=f.4C;f.2g.jJ=f.4C+f.3U;f.2g.jL.D=f.4g;f.2T=C.eR();f.2T.1N.D=f.2I;f.4l=C.jM();f.4l.jN=\'ju\';f.b0()};Q.u.eP=k(){f.2g.8s(f.2T);f.2T.8s(f.4l);f.4l.8s(Q.4c)};Q.u.9H=k(){if(f.2g){f.2g.3b(0);f.2g=X;f.2T=X;f.4l=X}};Q.u.eD=k(){if(f.2g&&!f.2g.2i){o 8A=f.86+f.8f/f.4g;o ds=8A-Q.1f.1T;f.6p=jt(k(){f.3b()}.1h(f),ds*fE)}};Q.u.9S=k(){if(f.6p){jb(f.6p);f.6p=X}};Q.u.b0=k(){if(f.4l){o x=f.8P;o z=1-H.6U(x);f.4l.ja(x,0,z)}};Q.u.5s=k(){3e(f.3c.1k>0){o 2Q=f.3c.5v();2Q()}};Q.u.di=k(1c){f.dm(1c);f.dS(1c)};Q.u.dm=k(1c){o 1p=0;3e(1p<1c.1k){if(f.5S(1c,1p)===\'jc\'){1p+=26;o bb=P;o aW=1c[1p++];o 7e=[];1e(o i=0;i<aW;i++){7e.29(1c[1p++])}1e(i=0;i<aW;i++){if(f.5S(1c,1p+1)===\'jd\'){o bf=1c[1p];if(bf===1){f.5Z=f.dM(1c,1p+12)}I if(bf===3){f.aR(1c,1p,7e[i])}bb=K}1p+=7e[i]}if(!bb){3a}}I{3a}}};Q.u.dS=k(1c){if(f.5S(1c,4)===\'je\'){o 1p=0;3e(1p<1c.1k){o 5I=f.9h(1c,1p);o 1y=f.5S(1c,1p+4);if(1y===\'j9\'){1p+=8}I{if(1y===\'j8\'){f.5Z=f.9h(1c,1p+20)}if(1y===\'j4\'||1y===\'j3\'){f.aR(1c,1p,5I)}1p+=5I;if(5I<=1){3a}}}}};Q.u.aR=k(1c,1p,5I){1e(o i=1p;i<1p+5I-10;i++){if(f.5S(1c,i)===\'j5\'){o 1n=\'\';3e(1c[i]>0){1n+=58.9l(1c[i++])}if(1n.4x(/aK=([0-9]+)/)){f.4C=7A(dO.$1)}if(1n.4x(/dN=([0-9]+)/)){f.3U=7A(dO.$1)}if(1n==\'aK\'||1n==\'dN\'){o 7z=\'\';i+=16;3e(1c[i]>0){7z+=58.9l(1c[i++])}if(1n==\'aK\'){f.4C=7A(7z)}I{f.3U=7A(7z)}}}}};Q.u.dM=k(1c,1p){B(1c[1p+3]*fm+1c[1p+2]*fy+1c[1p+1]*fF+1c[1p+0])};Q.u.9h=k(1c,1p){B(1c[1p+0]*fm+1c[1p+1]*fy+1c[1p+2]*fF+1c[1p+3])};Q.u.5S=k(1c,1p){o 6e=\'\';1e(o i=0;i<4;i++){6e+=58.9l(1c[1p+i])}B 6e};k U(){3w N 3u(\'59 is a 5i 5b\')}U.3f=P;U.4i=P;U.1m=X;U.2P=X;U.2H=0;U.57=0;U.6z=0;U.8O=X;U.j6=k(1V){if(!f.3f){f.1j()}f.2b();f.4e=1V};U.1j=k(){if(!f.3f){if(!f.1m){6m{f.1m=N j7()}6u(e){f.1m=X}}if(!!f.1m)f.3S();f.3f=K}B!!f.1m};U.3S=k(){V.1P(\'8T\',f.5x.1h(f));V.1P(\'eU\',f.83.1h(f));f.1m.1P("jf",f.fh.1h(f));f.1m.1P("jg",f.84.1h(f));f.1m.1P("jp",f.fk.1h(f))};U.5x=k(){if(f.1m&&!f.4i){if(f.2Z){f.6q(f.4e);f.4i=K}I{if(f.8O){f.1m.3p=f.8O;f.1m.2U=0;f.1m.2i=P;f.1m.4j();f.4i=K}}}};U.83=k(){if(V.ff===\'fe\'){f.8a()}I{f.79()}};U.fh=k(){f.9t=K;if(f.4i)f.5s()};U.84=k(){f.4f=K};U.fk=k(){if(!f.1m.2i){f.3b()}};U.8a=k(){f.1m.2U=0;f.2H=0};U.79=k(){f.6n(0.5)};U.2b=k(){f.3b();f.2I=1;f.3c=[];f.4f=P;f.3k=P;f.2Z=P;f.9t=P};U.jo=k(1V){if(!f.3f){f.1j();f.2b()}f.8O=1V};O.19(U,\'1V\',{Z:k(){B U.4e},1b:K});O.19(U,\'2U\',{Z:k(){B U.2I}.1h(f),1q:k(D){U.2I=D;if(U.1m){U.1m.2U=f.2I}},1b:K});U.3W=k(){B f.9t};U.aI=k(){B f.4f};U.aQ=k(){B!f.1m.jq};U.4j=k(2i,1H){if(f.3W()){1H=1H||0;f.8L(2i,1H)}I if(U.1m){f.3k=K;f.3C(k(){if(f.3k){f.4j(2i,1H);if(f.2P){6B(f.2P);f.2P=X}}}.1h(f));if(!f.2Z)f.6q(f.4e)}};U.3b=k(){if(f.1m)f.1m.az();f.3k=P;if(f.aA){6B(f.aA);f.aA=X;f.1m.2U=0}};U.6n=k(2e){if(f.3W()){if(f.1m){f.57=f.2I;f.2H=0;f.a1(2e)}}I if(f.3k){f.3C(k(){f.6n(2e)}.1h(f))}};U.f6=k(2e){if(f.1m){f.57=0;f.2H=f.2I;f.a1(2e)}};U.fu=k(){if(f.1m){B f.1m.1T}I{B 0}};U.3C=k(2Q){f.3c.29(2Q)};U.6q=k(1V){if(f.1m){f.2Z=K;f.1m.3p=1V;f.1m.9Q()}};U.8L=k(2i,1H){f.1m.2i=2i;if(f.2P){6B(f.2P);f.2P=X}if(f.1m){f.1m.2U=f.2I;f.1m.1T=1H;f.1m.4j()}};U.5s=k(){f.2Z=P;3e(f.3c.1k>0){o 8t=f.3c.5v();8t()}};U.a1=k(2e){f.1m.2U=f.2H;if(f.2P){6B(f.2P);f.2P=X}f.6z=(f.57-f.2H)/(60*2e);f.2P=jr(k(){U.fK(U.57)},fE/60)};U.fK=k(2U){U.2H+=U.6z;if(U.2H<0&&U.6z<0){U.2H=0}I if(U.2H>2U&&U.6z>0){U.2H=2U}if(H.6U(U.57-U.2H)<0.js){U.2H=U.57;6B(U.2P);U.2P=X}U.1m.2U=U.2H};k 44(){3w N 3u(\'59 is a 5i 5b\')}44.cu=6d;44.aJ=k(3X){B cq.aJ(f.aT(3X))};44.aL=k(cr){B f.bd(cq.aL(cr))};44.jn=k(3X){B f.aL(f.aJ(3X))};44.aT=k(D,5j){5j=5j||0;if(++5j>=f.cu){3w N 3u(\'O jm ji\')}o 2w=O.u.b9.1X(D);if(2w===\'[3X O]\'||2w===\'[3X 3L]\'){o 7u=f.cS(D);if(7u!==\'O\'&&7u!==\'3L\'){D[\'@\']=7u}1e(o 31 in D){if(D.a9(31)){D[31]=f.aT(D[31],5j+1)}}}5j--;B D};44.bd=k(D){o 2w=O.u.b9.1X(D);if(2w===\'[3X O]\'||2w===\'[3X 3L]\'){if(D[\'@\']){o 2f=1E[D[\'@\']];if(2f){D=f.bF(D,2f.u)}}1e(o 31 in D){if(D.a9(31)){D[31]=f.bd(D[31])}}}B D};44.cS=k(D){o 1y=D.2f.1y;if(1y===6D){o bw=/^\\s*k\\s*([A-jh-jj-jk$]*)/;1y=bw.jl(D.2f)[1]}B 1y};44.bF=k(D,u){if(O.c8!==6D){O.c8(D,u)}I if(\'c7\'in D){D.c7=u}I{o aa=O.2N(u);1e(o 31 in D){if(D.a9(31)){aa[31]=D[31]}}D=aa}B D};', 62, 1317, '|||||||||||||||this|||||function||||var||||||prototype|||||||return|context|value|width|height|Graphics|Math|else|tileId|true|Tilemap|bitmap|new|Object|false|WebAudio|255|style|renderSession|Html5Audio|document|event|null|Bitmap|get||sprite||||||||defineProperty|PIXI|configurable|array|Sprite|for|_context|_width|bind|_height|initialize|length|_canvas|_audioElement|text|Window|index|set|TouchInput|children|_bitmap|floor|max|Input|child|name|canvas|alpha|w1|texture|blt|window|tone|_events|offset|clamp|setFrame|_frame|element|opacity|gain|fillRect|addEventListener|fillStyle|color|globalCompositeOperation|currentTime|tx|url|_video|call|skin|ty||source|Utils|Rectangle||origin||||push|update|clear|Weather||duration|constructor|_sourceNode|arguments|loop|move|_tileWidth|_tileHeight|createElement|frame|div|apply|WindowLayer|round|TilingSprite|_windowskin|data|case|type|keyName|xhr|_pressedTime|spriteBatch|visible|body|addChild|_fpsMeter|oy|ox|_tweenGain|_volume|box|pixels|kind|drawImage|create|_errorPrinter|_gainTweenInterval|listner|sx|sy|_gainNode|volume|715|_upperCanvas|_setDirty|setNumber|_isLoading||key||||Point|_openness||||break|stop|_loadListeners|globalAlpha|while|_initialized|072|x2|y2|_windowContentsSprite|_autoPlay|213|ScreenSprite|_margin|maxWidth|src|lowerTiles|upperTiles|DisplayObjectContainer|touch|Error|_renderer|throw|getContext|restore|startY|left|save|addLoadListener|_refresh|TILE_ID_A1|mx|font|newState|isPressed|my|white|Array|startX|ToneFilter|_windowPauseSignSprite|_cursorRect|_colorTone|_windowSpriteContainer|_setupEventHandlers|_windowBackSprite|_loopLength|rotation|isReady|object|pageToCanvasX|ToneSprite||gamepad|buttonName|appendChild|JsonEx||_currentState|pageToCanvasY||dy1|baseTexture|min|_masterGainNode|getAutotileKind|_url|_hasError|_pitch|_renderCanvas|_unlocked|play|table|_pannerNode|margin|updateTransform|array1|_tintTexture|keyCode|escape|pageX|pageY|preventDefault|w2|dx1|match|shader|clearRect|_windowCursorSprite|_baseTexture|_loopStart|_image|_upArrowSprite|_downArrowSprite|_realScale|audio|_loadingImage|_tempCanvas|stage|Stage|zIndex|_renderWebGL|_latestButton|elements|autotileTable|mod|_readMapData|getImageData|_refreshAllParts|pad|matrix|xm|qsy|_blue|rgbToCssColor|_green|_red|bitmaps|array2|rect|agent|_tweenTargetGain|String|This|start|class|shape|_realFrame|1px|tileId0|imageData|right|static|depth|clone|_updateAllElements|grad|top|tempContext|realH|_sprites|realX|_onLoad|realY|_upperLayer|shift|axes|_onTouchStart|shadowBits|_lowerLayer|forEach|realW|_y|isTileA1|navigator|_padding|isTileA2|keyRepeatWait|size|changedTouches|isOpen|_mask|qsx|equals|_lowerBitmap|_date|fontSize|delta|_readFourCharacters|options|PI|_createLayers|_webglMaskRect|anchor|_x|_sampleRate||_blendColor|BaseTexture|sy1|scaleMode|cmax|tempCanvas|rgb|_loadingCount|sx1|isTileA3|_mousePressed|_isWindow|100|string|wheelX|wheelY|_animationCount|isInsideCanvas|_screenPressed|_scale|_isEscapeCompatible|try|fadeIn|threshold|_endTimer|_load|none|_isHigherTile|_windowFrameSprite|catch|KEEP|renderTexture|rgba|_lastTiles|_tweenGainStep|_layerWidth|clearInterval|_offset|undefined|_centerElement|tileId3|sw|difference|_stopListeners|tiles|worldTransform|sh|tileId2|_layerHeight|tileId1|r2|animationFrame|_smooth|lighter|lx|abs|ly|r1|trim|_paintOpacity|isTileA4|keyRepeatInterval|fillAll|projection|a11|upperTileId1|_fpsMeterToggled|_rendered|_skipCount|_triggered|_onShow|_mapData|down|TILE_ID_A2|_isTableTile|segments|up|_vertexBuffer|_preferredAxis|ffffff|_stretchEnabled|absolute|instanceof|layerHeight|padZero|_onCancel|now|maskManager|render|message|typeof|constructorName|_updateVisibility|canPlayType|triggered|getElementsByTagName|text2|parseInt|Date|_upperBitmap|over|resize|layerWidth|isAutotile|pos|rx|ry|rh|rw|linearRampToValueAtTime|setValueAtTime|cursorOpacity|cancelled|button|blinkCount|lowerTileId|moved|released|Number|_modeBox|tileRows|randomInt|gray|||_colorText|_onVisibilityChange|_onError|tileCols|_startTime|||_buffer|_onHide|blur|_onKeyDown|buffer|buttons|_totalTime|ceil|hsl|ok|a12|0px|a20|a00|a01|a10|a02|a21|a22|connect|listener|360|_clearUpperCanvas|cos|_multiplyMatrix|sin|scale|endTime|tileID2|gamepads|_dimmerSprite|frameX|switch|frameY|position|waterSurfaceIndex|_onBitmapLoad|_hiddenCanvas|_startPlaying|emptyRectangle|align|_staticSePath|_pan|setColor|tileID1|_gray|touchstart|isWaterfallTile|bitmapH|TILE_ID_MAX|192|_boxHeight|contains||_onTrigger|_updateRealScale|bitmapW|Texture|WALL_AUTOTILE_TABLE||_refreshBack|||isMobileDevice|FLOOR_AUTOTILE_TABLE|_updateVideo|head|isWallSideTile|padding|measureText|_readBigEndian|_updateUpperCanvas|TILE_ID_A4|userAgent|fromCharCode|getAutotileShape|webgl|TILE_ID_A3|_onRelease|width1|indexOf|width2|_buffered|isWallTopTile|active|_paintUpperCanvas|_refreshCursor|_boxWidth|isTileA5|_updateCanvas|_onMove|imageData1|pageup|_createFontLoader|pagedown|_previousState|_removeNodes|cmin|787|uniforms|adjustTone|928|_updateErrorPrinter|putImageData|_makeFontNameText|load|_rainBitmap|_removeEndTimer|center|textAlign|_stormBitmap|isWebGL|isNwjs|gui|_snowBitmap|imageData2|_startGainTween|temp||result|_writeLastTiles|px|showFps|onerror|hasOwnProperty|newValue|oncontextmenu|_shouldMuteOnHide|videoVisible|_readLastTiles|_drawTile|tableEdgeVirtualId|qsx2|setTransform|scaleModes|val|lineHeight|isTable||canUseDifferenceBlend|auto|saturation|canUseSaturationBlend|144|_canUseSaturationBlend|_released|_wheelX|_wheelY|||pause|_tweenInterval|_moved|isRepeated|isLongPressed|keyMapper|_cancelled|_needsRepaint|spriteId|isError|stringify|LOOPSTART|parse|animationCount|scripts|256|openness|isPlaying|_readMetaData|isTriggered|_encode|_canUseDifferenceBlend|_mapWidth|numSegments|_dir8|_mapHeight|_gamepadStates|_updatePanner||||webGLPixels|maxSprites|power|canvasData|_makeNumpadDirection|toString|_dir4|vorbisHeaderFound|flags|_decode||headerType|_createCanvas|_paintAllTiles|refresh|_lastStartY|_paintTiles|filterManager|_filters|lastLowerTiles|_updateLayerPositions|_lastStartX|_lastAnimationFrame||_onRightButtonDown|_createGameFontLoader|GameFont|120|func|||mode|fontFamily|transparent|webkitCancelFullScreen|msExitFullscreen|control|_resetPrototype|_wrapNwjsAlert|alert|textShadow|_onKeyUp|args|_onLostFocus|innerHTML|_shouldPreventDefault|require|_alert|win|keydown|mozCancelFullScreen|cancelFullScreen|_onWindowResize|_isVideoVisible|_disableTextSelection|_switchFPSMeter|hideFps|_onVideoEnd|_onVideoError|_applyCanvasFilter|_disableContextMenu|8px|_onVideoLoad|_switchStretchMode|_switchFullScreen|__proto__|setPrototypeOf|msRequestFullscreen|_cancelFullScreen|webkitRequestFullScreen|mozRequestFullScreen|_isFullScreen|fullScreenElement|_requestFullScreen|requestFullScreen||_pollGamepads|getGamepads|_rendererType|_counter||Argument|must|_createRenderer|JSON|json|_onTouchCancel|_onPointerDown|maxDepth|slice||||frameW|frameH|_createUpperCanvas|opaque|pushMask|_createVideo|crop|r3|dirty|_needsTint|_createTinter|_executeTint|_onTouchEnd|_onTouchMove|_signX|_signY|cancel|menu|_updateDirection|_getConstructorName|_updateGamepadState|119px|lastState|gamepadMapper|5px|date|_onMouseUp|_onWheel|_createFPSMeter|_updateRenderer|_onMouseMove|_onMiddleButtonDown|_createModeBox|hide|_onMouseDown|_onLeftButtonDown|popMask|TILE_ID_A5|drawCircle|bindFramebuffer|FRAMEBUFFER|_createDimmer|_updateDimmer|_createBitmaps||_readLoopComments|aVertexPosition|_callLoadListeners|stencilOp|_readOgg|_updateAllSprites|_addSprite|_updateStormSprite|outlineColor|_updateSnowSprite|delay|_rebornSprite|_updateRainSprite|outlineWidth||||_removeSprite|textColor|_drawTextBody|_updateSprite|ARRAY_BUFFER|tickStart|Image|lastScript|_dummySprite|STENCIL_TEST|_webglMaskOutside|_canvasClearWindowRect|realCanvasContext|_readLittleEndian|LOOPLENGTH|RegExp|beginPath|y1|x1|_readMp4|uniform2f|stencilFunc|EQUAL|0xFF|startTime|elapsed|shaderManager|frameCount|_translationMatrix|_maxSkip|_drawTextOutline|200|XMLHttpRequest|open|addColorStop|noAudio|color1|GET|onload|Uint8Array|_onXhrLoad|send|color2|createLinearGradient|_createContext|_createMasterGainNode|_fadeOut|destination|node|_fadeIn|_canPlayM4a|vertical|AudioContext|webkitAudioContext|_detectCodecs|_canPlayOgg|radius|response|hslToRgb|uniform|void|rgbToHsl|uSampler|mat4|varying|fontFace|_createEndTimer|AbstractFilter|fontItalic|vTextureCoord|180|NEAREST|resolution|createBufferSource|_createNodes|setTone|DisplayObject|285|_connectNodes|textureBuffer|createGain|_updatePauseSign|_webglMaskWindow|visibilitychange|iPod|_defaultStretchMode|_onWindowskinLoad|_makeErrorHtml|iPhone|_createAllParts|iPad|_testCanvasBlendModes|black|horizontalWrap|_refreshContents|fadeOut|verticalWrap|_isOverpassPosition|_compareChildOrder|_sortChildren|containerIndex|isVisibleTile|tilingTexture|hidden|visibilityState|lastTrim|_onLoadedData|tilePosition|WATERFALL_AUTOTILE_TABLE|_onEnded|setBlack|0x1000000|isShadowingTile|rule|_createAllElements|40px|sans|isRoofTile|serif|seek|_refreshFrame|contentsOpacity|downArrowVisible|0x10000|sx2|qsy2|sy2|Android|_drawTableEdge|1000|0x100|_updateArrows|_updateContents|_drawAutotile|_updateCursor|_applyTweenValue|upArrowVisible|_drawNormalTile|_createErrorPrinter|_refreshArrows|lastUpperTiles|_modifyExistingElements|_drawShadow|_refreshPauseSign|boxWidth|format|Mini|Opera|UpperCanvas|300|gradientFillRect|webOS||||canPlayVideoType|GameVideo|3px|createTextNode|video|Italic|getAlphaPixel|offsetTop|offsetLeft|replace|rotateHue|drawText|userSelect|Canvas|webkitUserSelect|0xffffffff|msUserSelect||fill|not|getPixel|JsExtensions|IEMobile|paintOpacity|ErrorPrinter|arc|yellow|20px|bottom|000|smooth|GameCanvas|240|BlackBerry|innerWidth|measureTextWidth|textBaseline|LINEAR|mozUserSelect|innerHeight|alphabetic|boxHeight|split|FPSMeter|snap|RenderTexture|toggleOn|theme|hasWebGL|face|decimals|modeTextBack|process|58px|css|background|family|isAndroidChrome|identity|||renderer|WEBGL_RENDERER|javascript|overrideMimeType|WebGLRenderer|location|default|printError|search|loadFont|show|Chrome|canReadGameFiles|endLoading|graph|setLoadingImage|experimental|isOptionValid|startLoading|script|autoDetectRenderer|updateLoading|CanvasRenderer|CriOS|abcdefghijklmnopqrstuvwxyz|isMobileSafari|12px|41px|modeText|sheet|insertRule|isFontLoaded|fillText|playVideo|WebGL|onended|strokeStyle|lineWidth|lineJoin|onloadeddata|monospace|strokeText|item|random|BLEND_SCREEN|BLEND_MULTIPLY|BLEND_ADD|tickEnd|tick|view|AppleWebKit|dontSayHello|BLEND_NORMAL|600|MV|UNSIGNED_BYTE|RPGMAKER_NAME|RGBA|readPixels|800|frameBuffer|isVideoPlaying|2816|vertexAttribPointer|enableVertexAttribArray|FLOAT|drawArrays|viewport|TRIANGLES|STATIC_DRAW|bufferData|offsetVector||projectionVector||INCR|Float32Array|bindBuffer|removeChild|pop|float|mediump||vec2|vec4|vColor|precision||fragmentSrc|storm|rain|snow|160|passes|flipY|uniform1f|_windowArrowSprites|blendMode|windowskin|contents|backOpacity|blendModesCanvas|setWhite|isWallTypeAutotile|isFloorTypeAutotile|isWaterfallTypeAutotile|originalTexture|generateTilingTexture|isClosed|setCursorRect|primitiveShader|disable|setShader|uniformMatrix3fv|translationMatrix|STENCIL_BUFFER_BIT|enable|addChildAt|addChildToBack|closePath|clip|filter|sampler2D|main|meta|udta|LOOP|setup|Audio|mvhd|moov|setPosition|clearTimeout|OggS|vorb|ftyp|loadeddata|error|Za|deep|z0|9_|exec|too|makeDeepCopy|setStaticSe|ended|paused|setInterval|01|setTimeout|equalpower|interactive|adjustSaturation|canPlayOgg|canPlayM4a|ogg|283|140|texture2D|gl_FragColor|reset|adjustHue|143|mp4|pitch|loopEnd|loopStart|playbackRate|createPanner|panningModel|decodeAudioData|400|addStopListener|pan|responseType|arraybuffer|status|isWallTile|createBuffer|touchcancel|touchend|pointerdown|deltaX|deltaY|touchmove|wheel|isReleased|mousedown|mousemove|isGroundTile|touches|cordova|_isInBitmapRect|setColorTone|copy|atop|flush|getColorTone|setBlendColor|standalone|pointerType|isPrimary|getBlendColor|isMoved|isCancelled|showDuration|isPaused|mozFullScreen|webkitFullscreenElement|msFullscreenElement|115|114|webkitFilter|ctrlKey|altKey|113|Element|ALLOW_KEYBOARD_INPUT|focus|nw|keyup|connected|pressed|dir8|dir4|tab|102|104|debug|pushFilter|mouseup|128|1536|0x0f|10000|2048|tileHeight|setData|768|TILE_ID_E|TILE_ID_D|_filterBlock|TILE_ID_C|sort|0x80|512|TILE_ID_B|tileWidth|0x10|popFilter|makeAutotileId|COLOR_BUFFER_BIT|isSameKindTile|isWaterTile|8192|mask|4352|5888|clearColor'.split('|'), 0, {})
Graphics._defaultStretchMode = function() {
    return true;
};

/* Autoresize Plugin */

 

 

 

Pezzi di codice JS presi dall pagina del preorder

Share this post


Link to post
Share on other sites

Altra roba scriptosa, e in linguaggio comprensibile(usando UnPacker)

 

rpg_scenes.js

 

function Scene_Base()
	{
	this.initialize.apply(this,arguments)
}
Scene_Base.prototype=Object.create(Stage.prototype);
Scene_Base.prototype.constructor=Scene_Base;
Scene_Base.prototype.initialize=function()
	{
	Stage.prototype.initialize.call(this);
	this._active=false;
	this._fadeSign=0;
	this._fadeDuration=0;
	this._fadeSprite=null
};
Scene_Base.prototype.create=function()
	{
};
Scene_Base.prototype.isActive=function()
	{
	return this._active
};
Scene_Base.prototype.isReady=function()
	{
	return ImageManager.isReady()
};
Scene_Base.prototype.start=function()
	{
	this._active=true
};
Scene_Base.prototype.update=function()
	{
	this.updateFade();
	this.updateChildren();
	AudioManager.checkErrors()
};
Scene_Base.prototype.stop=function()
	{
	this._active=false
};
Scene_Base.prototype.isBusy=function()
	{
	return this._fadeDuration>0
};
Scene_Base.prototype.terminate=function()
	{
};
Scene_Base.prototype.createWindowLayer=function()
	{
	var width=Graphics.boxWidth;
	var height=Graphics.boxHeight;
	var x=(Graphics.width-width)/2;
	var y=(Graphics.height-height)/2;
	this._windowLayer=new WindowLayer();
	this._windowLayer.move(x,y,width,height);
	this.addChild(this._windowLayer)
};
Scene_Base.prototype.addWindow=function(window)
	{
	this._windowLayer.addChild(window)
};
Scene_Base.prototype.startFadeIn=function(duration,white)
	{
	this.createFadeSprite(white);
	this._fadeSign=1;
	this._fadeDuration=duration||30;
	this._fadeSprite.opacity=255
};
Scene_Base.prototype.startFadeOut=function(duration,white)
	{
	this.createFadeSprite(white);
	this._fadeSign=-1;
	this._fadeDuration=duration||30;
	this._fadeSprite.opacity=0
};
Scene_Base.prototype.createFadeSprite=function(white)
	{
	if(!this._fadeSprite)
		{
		this._fadeSprite=new ScreenSprite();
		this.addChild(this._fadeSprite)
	}
	if(white)
		{
		this._fadeSprite.setWhite()
	}
	else
		{
		this._fadeSprite.setBlack()
	}
};
Scene_Base.prototype.updateFade=function()
	{
	if(this._fadeDuration>0)
		{
		var d=this._fadeDuration;
		if(this._fadeSign>0)
			{
			this._fadeSprite.opacity-=this._fadeSprite.opacity/d
		}
		else
			{
			this._fadeSprite.opacity+=(255-this._fadeSprite.opacity)/d
		}
		this._fadeDuration--
	}
};
Scene_Base.prototype.updateChildren=function()
	{
	this.children.forEach(function(child)
		{
		if(child.update)
			{
			child.update()
		}
	}
	)
};
Scene_Base.prototype.popScene=function()
	{
	SceneManager.pop()
};
Scene_Base.prototype.checkGameover=function()
	{
	if($gameParty.isAllDead())
		{
		SceneManager.goto(Scene_Gameover)
	}
};
Scene_Base.prototype.fadeOutAll=function()
	{
	var time=this.slowFadeSpeed()/60;
	AudioManager.fadeOutBgm(time);
	AudioManager.fadeOutBgs(time);
	AudioManager.fadeOutMe(time);
	this.startFadeOut(this.slowFadeSpeed())
};
Scene_Base.prototype.fadeSpeed=function()
	{
	return 24
};
Scene_Base.prototype.slowFadeSpeed=function()
	{
	return this.fadeSpeed()*2
};
function Scene_Boot()
	{
	this.initialize.apply(this,arguments)
}
Scene_Boot.prototype=Object.create(Scene_Base.prototype);
Scene_Boot.prototype.constructor=Scene_Boot;
Scene_Boot.prototype.initialize=function()
	{
	Scene_Base.prototype.initialize.call(this);
	this._startDate=Date.now()
};
Scene_Boot.prototype.create=function()
	{
	Scene_Base.prototype.create.call(this);
	DataManager.loadDatabase();
	ConfigManager.load();
	this.loadSystemImages()
};
Scene_Boot.prototype.loadSystemImages=function()
	{
	ImageManager.loadSystem('Window');
	ImageManager.loadSystem('IconSet');
	ImageManager.loadSystem('Balloon');
	ImageManager.loadSystem('Shadow1');
	ImageManager.loadSystem('Shadow2');
	ImageManager.loadSystem('Damage');
	ImageManager.loadSystem('States');
	ImageManager.loadSystem('Weapons1');
	ImageManager.loadSystem('Weapons2');
	ImageManager.loadSystem('Weapons3');
	ImageManager.loadSystem('ButtonSet')
};
Scene_Boot.prototype.isReady=function()
	{
	if(Scene_Base.prototype.isReady.call(this))
		{
		return DataManager.isDatabaseLoaded()&&this.isGameFontLoaded()
	}
	else
		{
		return false
	}
};
Scene_Boot.prototype.isGameFontLoaded=function()
	{
	if(Graphics.isFontLoaded('GameFont'))
		{
		return true
	}
	else
		{
		var elapsed=Date.now()-this._startDate;
		if(elapsed>=20000)
			{
			throw new Error('Failed to load GameFont')
		}
	}
};
Scene_Boot.prototype.start=function()
	{
	Scene_Base.prototype.start.call(this);
	SoundManager.preloadImportantSounds();
	if(DataManager.isBattleTest())
		{
		DataManager.setupBattleTest();
		SceneManager.goto(Scene_Battle)
	}
	else if(DataManager.isEventTest())
		{
		DataManager.setupEventTest();
		SceneManager.goto(Scene_Map)
	}
	else
		{
		this.checkPlayerLocation();
		DataManager.setupNewGame();
		SceneManager.goto(Scene_Title);
		Window_TitleCommand.initCommandPosition()
	}
	this.updateDocumentTitle()
};
Scene_Boot.prototype.updateDocumentTitle=function()
	{
	document.title=$dataSystem.gameTitle
};
Scene_Boot.prototype.checkPlayerLocation=function()
	{
	if($dataSystem.startMapId===0)
		{
		throw new Error('Player\'s starting position is not set')
	}
};
function Scene_Title()
	{
	this.initialize.apply(this,arguments)
}
Scene_Title.prototype=Object.create(Scene_Base.prototype);
Scene_Title.prototype.constructor=Scene_Title;
Scene_Title.prototype.initialize=function()
	{
	Scene_Base.prototype.initialize.call(this)
};
Scene_Title.prototype.create=function()
	{
	Scene_Base.prototype.create.call(this);
	this.createBackground();
	this.createForeground();
	this.createWindowLayer();
	this.createCommandWindow()
};
Scene_Title.prototype.start=function()
	{
	Scene_Base.prototype.start.call(this);
	SceneManager.clearStack();
	this.centerSprite(this._backSprite1);
	this.centerSprite(this._backSprite2);
	this.playTitleMusic();
	this.startFadeIn(this.fadeSpeed(),false)
};
Scene_Title.prototype.update=function()
	{
	if(!this.isBusy())
		{
		this._commandWindow.open()
	}
	Scene_Base.prototype.update.call(this)
};
Scene_Title.prototype.isBusy=function()
	{
	return this._commandWindow.isClosing()||Scene_Base.prototype.isBusy.call(this)
};
Scene_Title.prototype.terminate=function()
	{
	Scene_Base.prototype.terminate.call(this);
	SceneManager.snapForBackground()
};
Scene_Title.prototype.createBackground=function()
	{
	this._backSprite1=new Sprite(ImageManager.loadTitle1($dataSystem.title1Name));
	this._backSprite2=new Sprite(ImageManager.loadTitle2($dataSystem.title2Name));
	this.addChild(this._backSprite1);
	this.addChild(this._backSprite2)
};
Scene_Title.prototype.createForeground=function()
	{
	this._gameTitleSprite=new Sprite(new Bitmap(Graphics.width,Graphics.height));
	this.addChild(this._gameTitleSprite);
	if($dataSystem.optDrawTitle)
		{
		this.drawGameTitle()
	}
};
Scene_Title.prototype.drawGameTitle=function()
	{
	var x=20;
	var y=Graphics.height/4;
	var maxWidth=Graphics.width-x*2;
	var text=$dataSystem.gameTitle;
	this._gameTitleSprite.bitmap.outlineColor='black';
	this._gameTitleSprite.bitmap.outlineWidth=8;
	this._gameTitleSprite.bitmap.fontSize=72;
	this._gameTitleSprite.bitmap.drawText(text,x,y,maxWidth,48,'center')
};
Scene_Title.prototype.centerSprite=function(sprite)
	{
	sprite.x=Graphics.width/2;
	sprite.y=Graphics.height/2;
	sprite.anchor.x=0.5;
	sprite.anchor.y=0.5
};
Scene_Title.prototype.createCommandWindow=function()
	{
	this._commandWindow=new Window_TitleCommand();
	this._commandWindow.setHandler('newGame',this.commandNewGame.bind(this));
	this._commandWindow.setHandler('continue',this.commandContinue.bind(this));
	this._commandWindow.setHandler('options',this.commandOptions.bind(this));
	this.addWindow(this._commandWindow)
};
Scene_Title.prototype.commandNewGame=function()
	{
	DataManager.setupNewGame();
	this._commandWindow.close();
	this.fadeOutAll();
	SceneManager.goto(Scene_Map)
};
Scene_Title.prototype.commandContinue=function()
	{
	this._commandWindow.close();
	SceneManager.push(Scene_Load)
};
Scene_Title.prototype.commandOptions=function()
	{
	this._commandWindow.close();
	SceneManager.push(Scene_Options)
};
Scene_Title.prototype.playTitleMusic=function()
	{
	AudioManager.playBgm($dataSystem.titleBgm);
	AudioManager.stopBgs();
	AudioManager.stopMe()
};
function Scene_Map()
	{
	this.initialize.apply(this,arguments)
}
Scene_Map.prototype=Object.create(Scene_Base.prototype);
Scene_Map.prototype.constructor=Scene_Map;
Scene_Map.prototype.initialize=function()
	{
	Scene_Base.prototype.initialize.call(this);
	this._waitCount=0;
	this._encounterEffectDuration=0;
	this._mapLoaded=false;
	this._touchCount=0
};
Scene_Map.prototype.create=function()
	{
	Scene_Base.prototype.create.call(this);
	this._transfer=$gamePlayer.isTransferring();
	var mapId=this._transfer?$gamePlayer.newMapId():$gameMap.mapId();
	DataManager.loadMapData(mapId)
};
Scene_Map.prototype.isReady=function()
	{
	if(!this._mapLoaded&&DataManager.isMapLoaded())
		{
		this.onMapLoaded();
		this._mapLoaded=true
	}
	return this._mapLoaded&&Scene_Base.prototype.isReady.call(this)
};
Scene_Map.prototype.onMapLoaded=function()
	{
	if(this._transfer)
		{
		$gamePlayer.performTransfer()
	}
	this.createDisplayObjects()
};
Scene_Map.prototype.start=function()
	{
	Scene_Base.prototype.start.call(this);
	SceneManager.clearStack();
	if(this._transfer)
		{
		this.fadeInForTransfer();
		this._mapNameWindow.open();
		$gameMap.autoplay()
	}
	else if(this.needsFadeIn())
		{
		this.startFadeIn(this.fadeSpeed(),false)
	}
	this.menuCalling=false
};
Scene_Map.prototype.update=function()
	{
	this.updateDestination();
	this.updateMainMultiply();
	if(this.isSceneChangeOk())
		{
		this.updateScene()
	}
	else if(SceneManager.isNextScene(Scene_Battle))
		{
		this.updateEncounterEffect()
	}
	this.updateWaitCount();
	Scene_Base.prototype.update.call(this)
};
Scene_Map.prototype.updateMainMultiply=function()
	{
	this.updateMain();
	if(this.isFastForward())
		{
		this.updateMain()
	}
};
Scene_Map.prototype.updateMain=function()
	{
	var active=this.isActive();
	$gameMap.update(active);
	$gamePlayer.update(active);
	$gameTimer.update(active);
	$gameScreen.update()
};
Scene_Map.prototype.isFastForward=function()
	{
	return($gameMap.isEventRunning()&&!SceneManager.isSceneChanging()&&(Input.isLongPressed('ok')||TouchInput.isLongPressed()))
};
Scene_Map.prototype.stop=function()
	{
	Scene_Base.prototype.stop.call(this);
	$gamePlayer.straighten();
	this._mapNameWindow.close();
	if(this.needsSlowFadeOut())
		{
		this.startFadeOut(this.slowFadeSpeed(),false)
	}
	else if(SceneManager.isNextScene(Scene_Map))
		{
		this.fadeOutForTransfer()
	}
	else if(SceneManager.isNextScene(Scene_Battle))
		{
		this.launchBattle()
	}
};
Scene_Map.prototype.isBusy=function()
	{
	return((this._messageWindow&&this._messageWindow.isClosing())||this._waitCount>0||this._encounterEffectDuration>0||Scene_Base.prototype.isBusy.call(this))
};
Scene_Map.prototype.terminate=function()
	{
	Scene_Base.prototype.terminate.call(this);
	if(!SceneManager.isNextScene(Scene_Battle))
		{
		this._spriteset.update();
		SceneManager.snapForBackground()
	}
	$gameScreen.clearZoom()
};
Scene_Map.prototype.needsFadeIn=function()
	{
	return(SceneManager.isPreviousScene(Scene_Battle)||SceneManager.isPreviousScene(Scene_Load))
};
Scene_Map.prototype.needsSlowFadeOut=function()
	{
	return(SceneManager.isNextScene(Scene_Title)||SceneManager.isNextScene(Scene_Gameover))
};
Scene_Map.prototype.updateWaitCount=function()
	{
	if(this._waitCount>0)
		{
		this._waitCount--;
		return true
	}
	return false
};
Scene_Map.prototype.updateDestination=function()
	{
	if(this.isMapTouchOk())
		{
		this.processMapTouch()
	}
	else
		{
		$gameTemp.clearDestination();
		this._touchCount=0
	}
};
Scene_Map.prototype.isMapTouchOk=function()
	{
	return this.isActive()&&$gamePlayer.canMove()
};
Scene_Map.prototype.processMapTouch=function()
	{
	if(TouchInput.isTriggered()||this._touchCount>0)
		{
		if(TouchInput.isPressed())
			{
			if(this._touchCount===0||this._touchCount>=15)
				{
				var x=$gameMap.canvasToMapX(TouchInput.x);
				var y=$gameMap.canvasToMapY(TouchInput.y);
				$gameTemp.setDestination(x,y)
			}
			this._touchCount++
		}
		else
			{
			this._touchCount=0
		}
	}
};
Scene_Map.prototype.isSceneChangeOk=function()
	{
	return this.isActive()&&!$gameMessage.isBusy()
};
Scene_Map.prototype.updateScene=function()
	{
	this.checkGameover();
	if(!SceneManager.isSceneChanging())
		{
		this.updateTransferPlayer()
	}
	if(!SceneManager.isSceneChanging())
		{
		this.updateEncounter()
	}
	if(!SceneManager.isSceneChanging())
		{
		this.updateCallMenu()
	}
	if(!SceneManager.isSceneChanging())
		{
		this.updateCallDebug()
	}
};
Scene_Map.prototype.createDisplayObjects=function()
	{
	this.createSpriteset();
	this.createMapNameWindow();
	this.createWindowLayer();
	this.createAllWindows()
};
Scene_Map.prototype.createSpriteset=function()
	{
	this._spriteset=new Spriteset_Map();
	this.addChild(this._spriteset)
};
Scene_Map.prototype.createAllWindows=function()
	{
	this.createMessageWindow();
	this.createScrollTextWindow()
};
Scene_Map.prototype.createMapNameWindow=function()
	{
	this._mapNameWindow=new Window_MapName();
	this.addChild(this._mapNameWindow)
};
Scene_Map.prototype.createMessageWindow=function()
	{
	this._messageWindow=new Window_Message();
	this.addWindow(this._messageWindow);
	this._messageWindow.subWindows().forEach(function(window)
		{
		this.addWindow(window)
	}
	,this)
};
Scene_Map.prototype.createScrollTextWindow=function()
	{
	this._scrollTextWindow=new Window_ScrollText();
	this.addWindow(this._scrollTextWindow)
};
Scene_Map.prototype.updateTransferPlayer=function()
	{
	if($gamePlayer.isTransferring())
		{
		SceneManager.goto(Scene_Map)
	}
};
Scene_Map.prototype.updateEncounter=function()
	{
	if($gamePlayer.executeEncounter())
		{
		SceneManager.push(Scene_Battle)
	}
};
Scene_Map.prototype.updateCallMenu=function()
	{
	if(this.isMenuEnabled())
		{
		if(this.isMenuCalled())
			{
			this.menuCalling=true
		}
		if(this.menuCalling&&!$gamePlayer.isMoving())
			{
			this.callMenu()
		}
	}
	else
		{
		this.menuCalling=false
	}
};
Scene_Map.prototype.isMenuEnabled=function()
	{
	return $gameSystem.isMenuEnabled()&&!$gameMap.isEventRunning()
};
Scene_Map.prototype.isMenuCalled=function()
	{
	return Input.isTriggered('menu')||TouchInput.isCancelled()
};
Scene_Map.prototype.callMenu=function()
	{
	SoundManager.playOk();
	SceneManager.push(Scene_Menu);
	Window_MenuCommand.initCommandPosition();
	$gameTemp.clearDestination();
	this._mapNameWindow.hide();
	this._waitCount=2
};
Scene_Map.prototype.updateCallDebug=function()
	{
	if(this.isDebugCalled())
		{
		SceneManager.push(Scene_Debug)
	}
};
Scene_Map.prototype.isDebugCalled=function()
	{
	return Input.isTriggered('debug')&&$gameTemp.isPlaytest()
};
Scene_Map.prototype.fadeInForTransfer=function()
	{
	var fadeType=$gamePlayer.fadeType();
	switch(fadeType)
		{
		case 0:case 1:this.startFadeIn(this.fadeSpeed(),fadeType===1);
		break
	}
};
Scene_Map.prototype.fadeOutForTransfer=function()
	{
	var fadeType=$gamePlayer.fadeType();
	switch(fadeType)
		{
		case 0:case 1:this.startFadeOut(this.fadeSpeed(),fadeType===1);
		break
	}
};
Scene_Map.prototype.launchBattle=function()
	{
	BattleManager.saveBgmAndBgs();
	this.stopAudioOnBattleStart();
	SoundManager.playBattleStart();
	this.startEncounterEffect()
};
Scene_Map.prototype.stopAudioOnBattleStart=function()
	{
	if(!AudioManager.isCurrentBgm($gameSystem.battleBgm()))
		{
		AudioManager.stopBgm()
	}
	AudioManager.stopBgs();
	AudioManager.stopMe();
	AudioManager.stopSe()
};
Scene_Map.prototype.startEncounterEffect=function()
	{
	this._spriteset.hideCharacters();
	this._encounterEffectDuration=this.encounterEffectSpeed()
};
Scene_Map.prototype.updateEncounterEffect=function()
	{
	if(this._encounterEffectDuration>0)
		{
		this._encounterEffectDuration--;
		var speed=this.encounterEffectSpeed();
		var n=speed-this._encounterEffectDuration;
		var p=n/speed;
		var q=((p-1)*20*p+5)*p+1;
		var zoomX=$gamePlayer.screenX();
		var zoomY=$gamePlayer.screenY()-24;
		if(n===2)
			{
			$gameScreen.setZoom(zoomX,zoomY,1);
			this.snapForBattleBackground();
			this.startFlashForEncounter(speed/2)
		}
		$gameScreen.setZoom(zoomX,zoomY,q);
		if(n===Math.floor(speed/6))
			{
			this.startFlashForEncounter(speed/2)
		}
		if(n===Math.floor(speed/2))
			{
			BattleManager.playBattleBgm();
			this.startFadeOut(this.fadeSpeed())
		}
	}
};
Scene_Map.prototype.snapForBattleBackground=function()
	{
	this._windowLayer.visible=false;
	SceneManager.snapForBackground();
	this._windowLayer.visible=true
};
Scene_Map.prototype.startFlashForEncounter=function(duration)
	{
	var color=[255,255,255,255];
	$gameScreen.startFlash(color,duration)
};
Scene_Map.prototype.encounterEffectSpeed=function()
	{
	return 60
};
function Scene_MenuBase()
	{
	this.initialize.apply(this,arguments)
}
Scene_MenuBase.prototype=Object.create(Scene_Base.prototype);
Scene_MenuBase.prototype.constructor=Scene_MenuBase;
Scene_MenuBase.prototype.initialize=function()
	{
	Scene_Base.prototype.initialize.call(this)
};
Scene_MenuBase.prototype.create=function()
	{
	Scene_Base.prototype.create.call(this);
	this.createBackground();
	this.updateActor();
	this.createWindowLayer()
};
Scene_MenuBase.prototype.actor=function()
	{
	return this._actor
};
Scene_MenuBase.prototype.updateActor=function()
	{
	this._actor=$gameParty.menuActor()
};
Scene_MenuBase.prototype.createBackground=function()
	{
	this._backgroundSprite=new Sprite();
	this._backgroundSprite.bitmap=SceneManager.backgroundBitmap();
	this.addChild(this._backgroundSprite)
};
Scene_MenuBase.prototype.setBackgroundOpacity=function(opacity)
	{
	this._backgroundSprite.opacity=opacity
};
Scene_MenuBase.prototype.createHelpWindow=function()
	{
	this._helpWindow=new Window_Help();
	this.addWindow(this._helpWindow)
};
Scene_MenuBase.prototype.nextActor=function()
	{
	$gameParty.makeMenuActorNext();
	this.updateActor();
	this.onActorChange()
};
Scene_MenuBase.prototype.previousActor=function()
	{
	$gameParty.makeMenuActorPrevious();
	this.updateActor();
	this.onActorChange()
};
Scene_MenuBase.prototype.onActorChange=function()
	{
};
function Scene_Menu()
	{
	this.initialize.apply(this,arguments)
}
Scene_Menu.prototype=Object.create(Scene_MenuBase.prototype);
Scene_Menu.prototype.constructor=Scene_Menu;
Scene_Menu.prototype.initialize=function()
	{
	Scene_MenuBase.prototype.initialize.call(this)
};
Scene_Menu.prototype.create=function()
	{
	Scene_MenuBase.prototype.create.call(this);
	this.createCommandWindow();
	this.createGoldWindow();
	this.createStatusWindow()
};
Scene_Menu.prototype.start=function()
	{
	Scene_MenuBase.prototype.start.call(this);
	this._statusWindow.refresh()
};
Scene_Menu.prototype.createCommandWindow=function()
	{
	this._commandWindow=new Window_MenuCommand(0,0);
	this._commandWindow.setHandler('item',this.commandItem.bind(this));
	this._commandWindow.setHandler('skill',this.commandPersonal.bind(this));
	this._commandWindow.setHandler('equip',this.commandPersonal.bind(this));
	this._commandWindow.setHandler('status',this.commandPersonal.bind(this));
	this._commandWindow.setHandler('formation',this.commandFormation.bind(this));
	this._commandWindow.setHandler('options',this.commandOptions.bind(this));
	this._commandWindow.setHandler('save',this.commandSave.bind(this));
	this._commandWindow.setHandler('gameEnd',this.commandGameEnd.bind(this));
	this._commandWindow.setHandler('cancel',this.popScene.bind(this));
	this.addWindow(this._commandWindow)
};
Scene_Menu.prototype.createGoldWindow=function()
	{
	this._goldWindow=new Window_Gold(0,0);
	this._goldWindow.y=Graphics.boxHeight-this._goldWindow.height;
	this.addWindow(this._goldWindow)
};
Scene_Menu.prototype.createStatusWindow=function()
	{
	this._statusWindow=new Window_MenuStatus(this._commandWindow.width,0);
	this.addWindow(this._statusWindow)
};
Scene_Menu.prototype.commandItem=function()
	{
	SceneManager.push(Scene_Item)
};
Scene_Menu.prototype.commandPersonal=function()
	{
	this._statusWindow.setFormationMode(false);
	this._statusWindow.selectLast();
	this._statusWindow.activate();
	this._statusWindow.setHandler('ok',this.onPersonalOk.bind(this));
	this._statusWindow.setHandler('cancel',this.onPersonalCancel.bind(this))
};
Scene_Menu.prototype.commandFormation=function()
	{
	this._statusWindow.setFormationMode(true);
	this._statusWindow.selectLast();
	this._statusWindow.activate();
	this._statusWindow.setHandler('ok',this.onFormationOk.bind(this));
	this._statusWindow.setHandler('cancel',this.onFormationCancel.bind(this))
};
Scene_Menu.prototype.commandOptions=function()
	{
	SceneManager.push(Scene_Options)
};
Scene_Menu.prototype.commandSave=function()
	{
	SceneManager.push(Scene_Save)
};
Scene_Menu.prototype.commandGameEnd=function()
	{
	SceneManager.push(Scene_GameEnd)
};
Scene_Menu.prototype.onPersonalOk=function()
	{
	switch(this._commandWindow.currentSymbol())
		{
		case'skill':SceneManager.push(Scene_Skill);
		break;
		case'equip':SceneManager.push(Scene_Equip);
		break;
		case'status':SceneManager.push(Scene_Status);
		break
	}
};
Scene_Menu.prototype.onPersonalCancel=function()
	{
	this._statusWindow.deselect();
	this._commandWindow.activate()
};
Scene_Menu.prototype.onFormationOk=function()
	{
	var index=this._statusWindow.index();
	var actor=$gameParty.members()[index];
	var pendingIndex=this._statusWindow.pendingIndex();
	if(pendingIndex>=0)
		{
		$gameParty.swapOrder(index,pendingIndex);
		this._statusWindow.setPendingIndex(-1);
		this._statusWindow.redrawItem(index)
	}
	else
		{
		this._statusWindow.setPendingIndex(index)
	}
	this._statusWindow.activate()
};
Scene_Menu.prototype.onFormationCancel=function()
	{
	if(this._statusWindow.pendingIndex()>=0)
		{
		this._statusWindow.setPendingIndex(-1);
		this._statusWindow.activate()
	}
	else
		{
		this._statusWindow.deselect();
		this._commandWindow.activate()
	}
};
function Scene_ItemBase()
	{
	this.initialize.apply(this,arguments)
}
Scene_ItemBase.prototype=Object.create(Scene_MenuBase.prototype);
Scene_ItemBase.prototype.constructor=Scene_ItemBase;
Scene_ItemBase.prototype.initialize=function()
	{
	Scene_MenuBase.prototype.initialize.call(this)
};
Scene_ItemBase.prototype.create=function()
	{
	Scene_MenuBase.prototype.create.call(this)
};
Scene_ItemBase.prototype.createActorWindow=function()
	{
	this._actorWindow=new Window_MenuActor();
	this._actorWindow.setHandler('ok',this.onActorOk.bind(this));
	this._actorWindow.setHandler('cancel',this.onActorCancel.bind(this));
	this.addWindow(this._actorWindow)
};
Scene_ItemBase.prototype.item=function()
	{
	return this._itemWindow.item()
};
Scene_ItemBase.prototype.user=function()
	{
	return null
};
Scene_ItemBase.prototype.isCursorLeft=function()
	{
	return this._itemWindow.index()%2===0
};
Scene_ItemBase.prototype.showSubWindow=function(window)
	{
	window.x=this.isCursorLeft()?Graphics.boxWidth-window.width:0;
	window.show();
	window.activate()
};
Scene_ItemBase.prototype.hideSubWindow=function(window)
	{
	window.hide();
	window.deactivate();
	this.activateItemWindow()
};
Scene_ItemBase.prototype.onActorOk=function()
	{
	if(this.canUse())
		{
		this.useItem()
	}
	else
		{
		SoundManager.playBuzzer()
	}
};
Scene_ItemBase.prototype.onActorCancel=function()
	{
	this.hideSubWindow(this._actorWindow)
};
Scene_ItemBase.prototype.determineItem=function()
	{
	var action=new Game_Action(this.user());
	var item=this.item();
	action.setItemObject(item);
	if(action.isForFriend())
		{
		this.showSubWindow(this._actorWindow);
		this._actorWindow.selectForItem(this.item())
	}
	else
		{
		this.useItem();
		this.activateItemWindow()
	}
};
Scene_ItemBase.prototype.useItem=function()
	{
	this.playSeForItem();
	this.user().useItem(this.item());
	this.applyItem();
	this.checkCommonEvent();
	this.checkGameover();
	this._actorWindow.refresh()
};
Scene_ItemBase.prototype.activateItemWindow=function()
	{
	this._itemWindow.refresh();
	this._itemWindow.activate()
};
Scene_ItemBase.prototype.itemTargetActors=function()
	{
	var action=new Game_Action(this.user());
	action.setItemObject(this.item());
	if(!action.isForFriend())
		{
		return[]
	}
	else if(action.isForAll())
		{
		return $gameParty.members()
	}
	else
		{
		return[$gameParty.members()[this._actorWindow.index()]]
	}
};
Scene_ItemBase.prototype.canUse=function()
	{
	return this.user().canUse(this.item())&&this.isItemEffectsValid()
};
Scene_ItemBase.prototype.isItemEffectsValid=function()
	{
	var action=new Game_Action(this.user());
	action.setItemObject(this.item());
	return this.itemTargetActors().some(function(target)
		{
		return action.testApply(target)
	}
	,this)
};
Scene_ItemBase.prototype.applyItem=function()
	{
	var action=new Game_Action(this.user());
	action.setItemObject(this.item());
	this.itemTargetActors().forEach(function(target)
		{
		for(var i=0;
		i<action.numRepeats();
		i++)
			{
			action.apply(target)
		}
	}
	,this);
	action.applyGlobal()
};
Scene_ItemBase.prototype.checkCommonEvent=function()
	{
	if($gameTemp.isCommonEventReserved())
		{
		SceneManager.goto(Scene_Map)
	}
};
function Scene_Item()
	{
	this.initialize.apply(this,arguments)
}
Scene_Item.prototype=Object.create(Scene_ItemBase.prototype);
Scene_Item.prototype.constructor=Scene_Item;
Scene_Item.prototype.initialize=function()
	{
	Scene_ItemBase.prototype.initialize.call(this)
};
Scene_Item.prototype.create=function()
	{
	Scene_ItemBase.prototype.create.call(this);
	this.createHelpWindow();
	this.createCategoryWindow();
	this.createItemWindow();
	this.createActorWindow()
};
Scene_Item.prototype.createCategoryWindow=function()
	{
	this._categoryWindow=new Window_ItemCategory();
	this._categoryWindow.setHelpWindow(this._helpWindow);
	this._categoryWindow.y=this._helpWindow.height;
	this._categoryWindow.setHandler('ok',this.onCategoryOk.bind(this));
	this._categoryWindow.setHandler('cancel',this.popScene.bind(this));
	this.addWindow(this._categoryWindow)
};
Scene_Item.prototype.createItemWindow=function()
	{
	var wy=this._categoryWindow.y+this._categoryWindow.height;
	var wh=Graphics.boxHeight-wy;
	this._itemWindow=new Window_ItemList(0,wy,Graphics.boxWidth,wh);
	this._itemWindow.setHelpWindow(this._helpWindow);
	this._itemWindow.setHandler('ok',this.onItemOk.bind(this));
	this._itemWindow.setHandler('cancel',this.onItemCancel.bind(this));
	this.addWindow(this._itemWindow);
	this._categoryWindow.setItemWindow(this._itemWindow)
};
Scene_Item.prototype.user=function()
	{
	var members=$gameParty.movableMembers();
	var bestActor=members[0];
	var bestPha=0;
	for(var i=0;
	i<members.length;
	i++)
		{
		if(members[i].pha>bestPha)
			{
			bestPha=members[i].pha;
			bestActor=members[i]
		}
	}
	return bestActor
};
Scene_Item.prototype.onCategoryOk=function()
	{
	this._itemWindow.activate();
	this._itemWindow.selectLast()
};
Scene_Item.prototype.onItemOk=function()
	{
	$gameParty.setLastItem(this.item());
	this.determineItem()
};
Scene_Item.prototype.onItemCancel=function()
	{
	this._itemWindow.deselect();
	this._categoryWindow.activate()
};
Scene_Item.prototype.playSeForItem=function()
	{
	SoundManager.playUseItem()
};
Scene_Item.prototype.useItem=function()
	{
	Scene_ItemBase.prototype.useItem.call(this);
	this._itemWindow.redrawCurrentItem()
};
function Scene_Skill()
	{
	this.initialize.apply(this,arguments)
}
Scene_Skill.prototype=Object.create(Scene_ItemBase.prototype);
Scene_Skill.prototype.constructor=Scene_Skill;
Scene_Skill.prototype.initialize=function()
	{
	Scene_ItemBase.prototype.initialize.call(this)
};
Scene_Skill.prototype.create=function()
	{
	Scene_ItemBase.prototype.create.call(this);
	this.createHelpWindow();
	this.createSkillTypeWindow();
	this.createStatusWindow();
	this.createItemWindow();
	this.createActorWindow();
	this.refreshActor()
};
Scene_Skill.prototype.createSkillTypeWindow=function()
	{
	var wy=this._helpWindow.height;
	this._skillTypeWindow=new Window_SkillType(0,wy);
	this._skillTypeWindow.setHelpWindow(this._helpWindow);
	this._skillTypeWindow.setHandler('skill',this.commandSkill.bind(this));
	this._skillTypeWindow.setHandler('cancel',this.popScene.bind(this));
	this._skillTypeWindow.setHandler('pagedown',this.nextActor.bind(this));
	this._skillTypeWindow.setHandler('pageup',this.previousActor.bind(this));
	this.addWindow(this._skillTypeWindow)
};
Scene_Skill.prototype.createStatusWindow=function()
	{
	var wx=this._skillTypeWindow.width;
	var wy=this._helpWindow.height;
	var ww=Graphics.boxWidth-wx;
	var wh=this._skillTypeWindow.height;
	this._statusWindow=new Window_SkillStatus(wx,wy,ww,wh);
	this.addWindow(this._statusWindow)
};
Scene_Skill.prototype.createItemWindow=function()
	{
	var wx=0;
	var wy=this._statusWindow.y+this._statusWindow.height;
	var ww=Graphics.boxWidth;
	var wh=Graphics.boxHeight-wy;
	this._itemWindow=new Window_SkillList(wx,wy,ww,wh);
	this._itemWindow.setHelpWindow(this._helpWindow);
	this._itemWindow.setHandler('ok',this.onItemOk.bind(this));
	this._itemWindow.setHandler('cancel',this.onItemCancel.bind(this));
	this._skillTypeWindow.setSkillWindow(this._itemWindow);
	this.addWindow(this._itemWindow)
};
Scene_Skill.prototype.refreshActor=function()
	{
	var actor=this.actor();
	this._skillTypeWindow.setActor(actor);
	this._statusWindow.setActor(actor);
	this._itemWindow.setActor(actor)
};
Scene_Skill.prototype.user=function()
	{
	return this.actor()
};
Scene_Skill.prototype.commandSkill=function()
	{
	this._itemWindow.activate();
	this._itemWindow.selectLast()
};
Scene_Skill.prototype.onItemOk=function()
	{
	this.actor().setLastMenuSkill(this.item());
	this.determineItem()
};
Scene_Skill.prototype.onItemCancel=function()
	{
	this._itemWindow.deselect();
	this._skillTypeWindow.activate()
};
Scene_Skill.prototype.playSeForItem=function()
	{
	SoundManager.playUseSkill()
};
Scene_Skill.prototype.useItem=function()
	{
	Scene_ItemBase.prototype.useItem.call(this);
	this._statusWindow.refresh();
	this._itemWindow.refresh()
};
Scene_Skill.prototype.onActorChange=function()
	{
	this.refreshActor();
	this._skillTypeWindow.activate()
};
function Scene_Equip()
	{
	this.initialize.apply(this,arguments)
}
Scene_Equip.prototype=Object.create(Scene_MenuBase.prototype);
Scene_Equip.prototype.constructor=Scene_Equip;
Scene_Equip.prototype.initialize=function()
	{
	Scene_MenuBase.prototype.initialize.call(this)
};
Scene_Equip.prototype.create=function()
	{
	Scene_MenuBase.prototype.create.call(this);
	this.createHelpWindow();
	this.createStatusWindow();
	this.createCommandWindow();
	this.createSlotWindow();
	this.createItemWindow();
	this.refreshActor()
};
Scene_Equip.prototype.createStatusWindow=function()
	{
	this._statusWindow=new Window_EquipStatus(0,this._helpWindow.height);
	this.addWindow(this._statusWindow)
};
Scene_Equip.prototype.createCommandWindow=function()
	{
	var wx=this._statusWindow.width;
	var wy=this._helpWindow.height;
	var ww=Graphics.boxWidth-this._statusWindow.width;
	this._commandWindow=new Window_EquipCommand(wx,wy,ww);
	this._commandWindow.setHelpWindow(this._helpWindow);
	this._commandWindow.setHandler('equip',this.commandEquip.bind(this));
	this._commandWindow.setHandler('optimize',this.commandOptimize.bind(this));
	this._commandWindow.setHandler('clear',this.commandClear.bind(this));
	this._commandWindow.setHandler('cancel',this.popScene.bind(this));
	this._commandWindow.setHandler('pagedown',this.nextActor.bind(this));
	this._commandWindow.setHandler('pageup',this.previousActor.bind(this));
	this.addWindow(this._commandWindow)
};
Scene_Equip.prototype.createSlotWindow=function()
	{
	var wx=this._statusWindow.width;
	var wy=this._commandWindow.y+this._commandWindow.height;
	var ww=Graphics.boxWidth-this._statusWindow.width;
	var wh=this._statusWindow.height-this._commandWindow.height;
	this._slotWindow=new Window_EquipSlot(wx,wy,ww,wh);
	this._slotWindow.setHelpWindow(this._helpWindow);
	this._slotWindow.setStatusWindow(this._statusWindow);
	this._slotWindow.setHandler('ok',this.onSlotOk.bind(this));
	this._slotWindow.setHandler('cancel',this.onSlotCancel.bind(this));
	this.addWindow(this._slotWindow)
};
Scene_Equip.prototype.createItemWindow=function()
	{
	var wx=0;
	var wy=this._statusWindow.y+this._statusWindow.height;
	var ww=Graphics.boxWidth;
	var wh=Graphics.boxHeight-wy;
	this._itemWindow=new Window_EquipItem(wx,wy,ww,wh);
	this._itemWindow.setHelpWindow(this._helpWindow);
	this._itemWindow.setStatusWindow(this._statusWindow);
	this._itemWindow.setHandler('ok',this.onItemOk.bind(this));
	this._itemWindow.setHandler('cancel',this.onItemCancel.bind(this));
	this._slotWindow.setItemWindow(this._itemWindow);
	this.addWindow(this._itemWindow)
};
Scene_Equip.prototype.refreshActor=function()
	{
	var actor=this.actor();
	this._statusWindow.setActor(actor);
	this._slotWindow.setActor(actor);
	this._itemWindow.setActor(actor)
};
Scene_Equip.prototype.commandEquip=function()
	{
	this._slotWindow.activate();
	this._slotWindow.select(0)
};
Scene_Equip.prototype.commandOptimize=function()
	{
	SoundManager.playEquip();
	this.actor().optimizeEquipments();
	this._statusWindow.refresh();
	this._slotWindow.refresh();
	this._commandWindow.activate()
};
Scene_Equip.prototype.commandClear=function()
	{
	SoundManager.playEquip();
	this.actor().clearEquipments();
	this._statusWindow.refresh();
	this._slotWindow.refresh();
	this._commandWindow.activate()
};
Scene_Equip.prototype.onSlotOk=function()
	{
	this._itemWindow.activate();
	this._itemWindow.select(0)
};
Scene_Equip.prototype.onSlotCancel=function()
	{
	this._slotWindow.deselect();
	this._commandWindow.activate()
};
Scene_Equip.prototype.onItemOk=function()
	{
	SoundManager.playEquip();
	this.actor().changeEquip(this._slotWindow.index(),this._itemWindow.item());
	this._slotWindow.activate();
	this._slotWindow.refresh();
	this._itemWindow.deselect();
	this._itemWindow.refresh();
	this._statusWindow.refresh()
};
Scene_Equip.prototype.onItemCancel=function()
	{
	this._slotWindow.activate();
	this._itemWindow.deselect()
};
Scene_Equip.prototype.onActorChange=function()
	{
	this.refreshActor();
	this._commandWindow.activate()
};
function Scene_Status()
	{
	this.initialize.apply(this,arguments)
}
Scene_Status.prototype=Object.create(Scene_MenuBase.prototype);
Scene_Status.prototype.constructor=Scene_Status;
Scene_Status.prototype.initialize=function()
	{
	Scene_MenuBase.prototype.initialize.call(this)
};
Scene_Status.prototype.create=function()
	{
	Scene_MenuBase.prototype.create.call(this);
	this._statusWindow=new Window_Status();
	this._statusWindow.setHandler('cancel',this.popScene.bind(this));
	this._statusWindow.setHandler('pagedown',this.nextActor.bind(this));
	this._statusWindow.setHandler('pageup',this.previousActor.bind(this));
	this.addWindow(this._statusWindow);
	this.refreshActor()
};
Scene_Status.prototype.refreshActor=function()
	{
	var actor=this.actor();
	this._statusWindow.setActor(actor)
};
Scene_Status.prototype.onActorChange=function()
	{
	this.refreshActor();
	this._statusWindow.activate()
};
function Scene_Options()
	{
	this.initialize.apply(this,arguments)
}
Scene_Options.prototype=Object.create(Scene_MenuBase.prototype);
Scene_Options.prototype.constructor=Scene_Options;
Scene_Options.prototype.initialize=function()
	{
	Scene_MenuBase.prototype.initialize.call(this)
};
Scene_Options.prototype.create=function()
	{
	Scene_MenuBase.prototype.create.call(this);
	this.createOptionsWindow()
};
Scene_Options.prototype.terminate=function()
	{
	Scene_MenuBase.prototype.terminate.call(this);
	ConfigManager.save()
};
Scene_Options.prototype.createOptionsWindow=function()
	{
	this._optionsWindow=new Window_Options();
	this._optionsWindow.setHandler('cancel',this.popScene.bind(this));
	this.addWindow(this._optionsWindow)
};
function Scene_File()
	{
	this.initialize.apply(this,arguments)
}
Scene_File.prototype=Object.create(Scene_MenuBase.prototype);
Scene_File.prototype.constructor=Scene_File;
Scene_File.prototype.initialize=function()
	{
	Scene_MenuBase.prototype.initialize.call(this)
};
Scene_File.prototype.create=function()
	{
	Scene_MenuBase.prototype.create.call(this);
	DataManager.loadAllSavefileImages();
	this.createHelpWindow();
	this.createListWindow()
};
Scene_File.prototype.start=function()
	{
	Scene_MenuBase.prototype.start.call(this);
	this._listWindow.refresh()
};
Scene_File.prototype.savefileId=function()
	{
	return this._listWindow.index()+1
};
Scene_File.prototype.createHelpWindow=function()
	{
	this._helpWindow=new Window_Help(1);
	this._helpWindow.setText(this.helpWindowText());
	this.addWindow(this._helpWindow)
};
Scene_File.prototype.createListWindow=function()
	{
	var x=0;
	var y=this._helpWindow.height;
	var width=Graphics.boxWidth;
	var height=Graphics.boxHeight-y;
	this._listWindow=new Window_SavefileList(x,y,width,height);
	this._listWindow.setHandler('ok',this.onSavefileOk.bind(this));
	this._listWindow.setHandler('cancel',this.popScene.bind(this));
	this._listWindow.select(this.firstSavefileIndex());
	this._listWindow.setTopRow(this.firstSavefileIndex()-2);
	this._listWindow.setMode(this.mode());
	this._listWindow.refresh();
	this.addWindow(this._listWindow)
};
Scene_File.prototype.mode=function()
	{
	return null
};
Scene_File.prototype.activateListWindow=function()
	{
	this._listWindow.activate()
};
Scene_File.prototype.helpWindowText=function()
	{
	return''
};
Scene_File.prototype.firstSavefileIndex=function()
	{
	return 0
};
Scene_File.prototype.onSavefileOk=function()
	{
};
function Scene_Save()
	{
	this.initialize.apply(this,arguments)
}
Scene_Save.prototype=Object.create(Scene_File.prototype);
Scene_Save.prototype.constructor=Scene_Save;
Scene_Save.prototype.initialize=function()
	{
	Scene_File.prototype.initialize.call(this)
};
Scene_Save.prototype.mode=function()
	{
	return'save'
};
Scene_Save.prototype.helpWindowText=function()
	{
	return TextManager.saveMessage
};
Scene_Save.prototype.firstSavefileIndex=function()
	{
	return DataManager.lastAccessedSavefileId()-1
};
Scene_Save.prototype.onSavefileOk=function()
	{
	Scene_File.prototype.onSavefileOk.call(this);
	$gameSystem.onBeforeSave();
	if(DataManager.saveGame(this.savefileId()))
		{
		this.onSaveSuccess()
	}
	else
		{
		this.onSaveFailure()
	}
};
Scene_Save.prototype.onSaveSuccess=function()
	{
	SoundManager.playSave();
	this.popScene()
};
Scene_Save.prototype.onSaveFailure=function()
	{
	SoundManager.playBuzzer();
	this.activateListWindow()
};
function Scene_Load()
	{
	this.initialize.apply(this,arguments)
}
Scene_Load.prototype=Object.create(Scene_File.prototype);
Scene_Load.prototype.constructor=Scene_Load;
Scene_Load.prototype.initialize=function()
	{
	Scene_File.prototype.initialize.call(this);
	this._loadSuccess=false
};
Scene_Load.prototype.terminate=function()
	{
	Scene_File.prototype.terminate.call(this);
	if(this._loadSuccess)
		{
		$gameSystem.onAfterLoad()
	}
};
Scene_Load.prototype.mode=function()
	{
	return'load'
};
Scene_Load.prototype.helpWindowText=function()
	{
	return TextManager.loadMessage
};
Scene_Load.prototype.firstSavefileIndex=function()
	{
	return DataManager.latestSavefileId()-1
};
Scene_Load.prototype.onSavefileOk=function()
	{
	Scene_File.prototype.onSavefileOk.call(this);
	if(DataManager.loadGame(this.savefileId()))
		{
		this.onLoadSuccess()
	}
	else
		{
		this.onLoadFailure()
	}
};
Scene_Load.prototype.onLoadSuccess=function()
	{
	SoundManager.playLoad();
	this.fadeOutAll();
	this.reloadMapIfUpdated();
	SceneManager.goto(Scene_Map);
	this._loadSuccess=true
};
Scene_Load.prototype.onLoadFailure=function()
	{
	SoundManager.playBuzzer();
	this.activateListWindow()
};
Scene_Load.prototype.reloadMapIfUpdated=function()
	{
	if($gameSystem.versionId()!==$dataSystem.versionId)
		{
		$gamePlayer.reserveTransfer($gameMap.mapId(),$gamePlayer.x,$gamePlayer.y);
		$gamePlayer.requestMapReload()
	}
};
function Scene_GameEnd()
	{
	this.initialize.apply(this,arguments)
}
Scene_GameEnd.prototype=Object.create(Scene_MenuBase.prototype);
Scene_GameEnd.prototype.constructor=Scene_GameEnd;
Scene_GameEnd.prototype.initialize=function()
	{
	Scene_MenuBase.prototype.initialize.call(this)
};
Scene_GameEnd.prototype.create=function()
	{
	Scene_MenuBase.prototype.create.call(this);
	this.createCommandWindow()
};
Scene_GameEnd.prototype.stop=function()
	{
	Scene_MenuBase.prototype.stop.call(this);
	this._commandWindow.close()
};
Scene_GameEnd.prototype.createBackground=function()
	{
	Scene_MenuBase.prototype.createBackground.call(this);
	this.setBackgroundOpacity(128)
};
Scene_GameEnd.prototype.createCommandWindow=function()
	{
	this._commandWindow=new Window_GameEnd();
	this._commandWindow.setHandler('toTitle',this.commandToTitle.bind(this));
	this._commandWindow.setHandler('cancel',this.popScene.bind(this));
	this.addWindow(this._commandWindow)
};
Scene_GameEnd.prototype.commandToTitle=function()
	{
	this.fadeOutAll();
	SceneManager.goto(Scene_Title)
};
function Scene_Shop()
	{
	this.initialize.apply(this,arguments)
}
Scene_Shop.prototype=Object.create(Scene_MenuBase.prototype);
Scene_Shop.prototype.constructor=Scene_Shop;
Scene_Shop.prototype.initialize=function()
	{
	Scene_MenuBase.prototype.initialize.call(this)
};
Scene_Shop.prototype.prepare=function(goods,purchaseOnly)
	{
	this._goods=goods;
	this._purchaseOnly=purchaseOnly;
	this._item=null
};
Scene_Shop.prototype.create=function()
	{
	Scene_MenuBase.prototype.create.call(this);
	this.createHelpWindow();
	this.createGoldWindow();
	this.createCommandWindow();
	this.createDummyWindow();
	this.createNumberWindow();
	this.createStatusWindow();
	this.createBuyWindow();
	this.createCategoryWindow();
	this.createSellWindow()
};
Scene_Shop.prototype.createGoldWindow=function()
	{
	this._goldWindow=new Window_Gold(0,this._helpWindow.height);
	this._goldWindow.x=Graphics.boxWidth-this._goldWindow.width;
	this.addWindow(this._goldWindow)
};
Scene_Shop.prototype.createCommandWindow=function()
	{
	this._commandWindow=new Window_ShopCommand(this._goldWindow.x,this._purchaseOnly);
	this._commandWindow.y=this._helpWindow.height;
	this._commandWindow.setHandler('buy',this.commandBuy.bind(this));
	this._commandWindow.setHandler('sell',this.commandSell.bind(this));
	this._commandWindow.setHandler('cancel',this.popScene.bind(this));
	this.addWindow(this._commandWindow)
};
Scene_Shop.prototype.createDummyWindow=function()
	{
	var wy=this._commandWindow.y+this._commandWindow.height;
	var wh=Graphics.boxHeight-wy;
	this._dummyWindow=new Window_Base(0,wy,Graphics.boxWidth,wh);
	this.addWindow(this._dummyWindow)
};
Scene_Shop.prototype.createNumberWindow=function()
	{
	var wy=this._dummyWindow.y;
	var wh=this._dummyWindow.height;
	this._numberWindow=new Window_ShopNumber(0,wy,wh);
	this._numberWindow.hide();
	this._numberWindow.setHandler('ok',this.onNumberOk.bind(this));
	this._numberWindow.setHandler('cancel',this.onNumberCancel.bind(this));
	this.addWindow(this._numberWindow)
};
Scene_Shop.prototype.createStatusWindow=function()
	{
	var wx=this._numberWindow.width;
	var wy=this._dummyWindow.y;
	var ww=Graphics.boxWidth-wx;
	var wh=this._dummyWindow.height;
	this._statusWindow=new Window_ShopStatus(wx,wy,ww,wh);
	this._statusWindow.hide();
	this.addWindow(this._statusWindow)
};
Scene_Shop.prototype.createBuyWindow=function()
	{
	var wy=this._dummyWindow.y;
	var wh=this._dummyWindow.height;
	this._buyWindow=new Window_ShopBuy(0,wy,wh,this._goods);
	this._buyWindow.setHelpWindow(this._helpWindow);
	this._buyWindow.setStatusWindow(this._statusWindow);
	this._buyWindow.hide();
	this._buyWindow.setHandler('ok',this.onBuyOk.bind(this));
	this._buyWindow.setHandler('cancel',this.onBuyCancel.bind(this));
	this.addWindow(this._buyWindow)
};
Scene_Shop.prototype.createCategoryWindow=function()
	{
	this._categoryWindow=new Window_ItemCategory();
	this._categoryWindow.setHelpWindow(this._helpWindow);
	this._categoryWindow.y=this._dummyWindow.y;
	this._categoryWindow.hide();
	this._categoryWindow.deactivate();
	this._categoryWindow.setHandler('ok',this.onCategoryOk.bind(this));
	this._categoryWindow.setHandler('cancel',this.onCategoryCancel.bind(this));
	this.addWindow(this._categoryWindow)
};
Scene_Shop.prototype.createSellWindow=function()
	{
	var wy=this._categoryWindow.y+this._categoryWindow.height;
	var wh=Graphics.boxHeight-wy;
	this._sellWindow=new Window_ShopSell(0,wy,Graphics.boxWidth,wh);
	this._sellWindow.setHelpWindow(this._helpWindow);
	this._sellWindow.hide();
	this._sellWindow.setHandler('ok',this.onSellOk.bind(this));
	this._sellWindow.setHandler('cancel',this.onSellCancel.bind(this));
	this._categoryWindow.setItemWindow(this._sellWindow);
	this.addWindow(this._sellWindow)
};
Scene_Shop.prototype.activateBuyWindow=function()
	{
	this._buyWindow.setMoney(this.money());
	this._buyWindow.show();
	this._buyWindow.activate();
	this._statusWindow.show()
};
Scene_Shop.prototype.activateSellWindow=function()
	{
	this._categoryWindow.show();
	this._sellWindow.refresh();
	this._sellWindow.show();
	this._sellWindow.activate();
	this._statusWindow.hide()
};
Scene_Shop.prototype.commandBuy=function()
	{
	this._dummyWindow.hide();
	this.activateBuyWindow()
};
Scene_Shop.prototype.commandSell=function()
	{
	this._dummyWindow.hide();
	this._categoryWindow.show();
	this._categoryWindow.activate();
	this._sellWindow.show();
	this._sellWindow.deselect();
	this._sellWindow.refresh()
};
Scene_Shop.prototype.onBuyOk=function()
	{
	this._item=this._buyWindow.item();
	this._buyWindow.hide();
	this._numberWindow.setup(this._item,this.maxBuy(),this.buyingPrice());
	this._numberWindow.setCurrencyUnit(this.currencyUnit());
	this._numberWindow.show();
	this._numberWindow.activate()
};
Scene_Shop.prototype.onBuyCancel=function()
	{
	this._commandWindow.activate();
	this._dummyWindow.show();
	this._buyWindow.hide();
	this._statusWindow.hide();
	this._statusWindow.setItem(null);
	this._helpWindow.clear()
};
Scene_Shop.prototype.onCategoryOk=function()
	{
	this.activateSellWindow();
	this._sellWindow.select(0)
};
Scene_Shop.prototype.onCategoryCancel=function()
	{
	this._commandWindow.activate();
	this._dummyWindow.show();
	this._categoryWindow.hide();
	this._sellWindow.hide()
};
Scene_Shop.prototype.onSellOk=function()
	{
	this._item=this._sellWindow.item();
	this._categoryWindow.hide();
	this._sellWindow.hide();
	this._numberWindow.setup(this._item,this.maxSell(),this.sellingPrice());
	this._numberWindow.setCurrencyUnit(this.currencyUnit());
	this._numberWindow.show();
	this._numberWindow.activate();
	this._statusWindow.setItem(this._item);
	this._statusWindow.show()
};
Scene_Shop.prototype.onSellCancel=function()
	{
	this._sellWindow.deselect();
	this._categoryWindow.activate();
	this._statusWindow.setItem(null);
	this._helpWindow.clear()
};
Scene_Shop.prototype.onNumberOk=function()
	{
	SoundManager.playShop();
	switch(this._commandWindow.currentSymbol())
		{
		case'buy':this.doBuy(this._numberWindow.number());
		break;
		case'sell':this.doSell(this._numberWindow.number());
		break
	}
	this.endNumberInput();
	this._goldWindow.refresh();
	this._statusWindow.refresh()
};
Scene_Shop.prototype.onNumberCancel=function()
	{
	SoundManager.playCancel();
	this.endNumberInput()
};
Scene_Shop.prototype.doBuy=function(number)
	{
	$gameParty.loseGold(number*this.buyingPrice());
	$gameParty.gainItem(this._item,number)
};
Scene_Shop.prototype.doSell=function(number)
	{
	$gameParty.gainGold(number*this.sellingPrice());
	$gameParty.loseItem(this._item,number)
};
Scene_Shop.prototype.endNumberInput=function()
	{
	this._numberWindow.hide();
	switch(this._commandWindow.currentSymbol())
		{
		case'buy':this.activateBuyWindow();
		break;
		case'sell':this.activateSellWindow();
		break
	}
};
Scene_Shop.prototype.maxBuy=function()
	{
	var max=$gameParty.maxItems(this._item)-$gameParty.numItems(this._item);
	var price=this.buyingPrice();
	if(price>0)
		{
		return Math.min(max,Math.floor(this.money()/price))
	}
	else
		{
		return max
	}
};
Scene_Shop.prototype.maxSell=function()
	{
	return $gameParty.numItems(this._item)
};
Scene_Shop.prototype.money=function()
	{
	return this._goldWindow.value()
};
Scene_Shop.prototype.currencyUnit=function()
	{
	return this._goldWindow.currencyUnit()
};
Scene_Shop.prototype.buyingPrice=function()
	{
	return this._buyWindow.price(this._item)
};
Scene_Shop.prototype.sellingPrice=function()
	{
	return this._item.price/2
};
function Scene_Name()
	{
	this.initialize.apply(this,arguments)
}
Scene_Name.prototype=Object.create(Scene_MenuBase.prototype);
Scene_Name.prototype.constructor=Scene_Name;
Scene_Name.prototype.initialize=function()
	{
	Scene_MenuBase.prototype.initialize.call(this)
};
Scene_Name.prototype.prepare=function(actorId,maxLength)
	{
	this._actorId=actorId;
	this._maxLength=maxLength
};
Scene_Name.prototype.create=function()
	{
	Scene_MenuBase.prototype.create.call(this);
	this._actor=$gameActors.actor(this._actorId);
	this.createEditWindow();
	this.createInputWindow()
};
Scene_Name.prototype.start=function()
	{
	Scene_MenuBase.prototype.start.call(this);
	this._editWindow.refresh()
};
Scene_Name.prototype.createEditWindow=function()
	{
	this._editWindow=new Window_NameEdit(this._actor,this._maxLength);
	this.addWindow(this._editWindow)
};
Scene_Name.prototype.createInputWindow=function()
	{
	this._inputWindow=new Window_NameInput(this._editWindow);
	this._inputWindow.setHandler('ok',this.onInputOk.bind(this));
	this.addWindow(this._inputWindow)
};
Scene_Name.prototype.onInputOk=function()
	{
	this._actor.setName(this._editWindow.name());
	this.popScene()
};
function Scene_Debug()
	{
	this.initialize.apply(this,arguments)
}
Scene_Debug.prototype=Object.create(Scene_MenuBase.prototype);
Scene_Debug.prototype.constructor=Scene_Debug;
Scene_Debug.prototype.initialize=function()
	{
	Scene_MenuBase.prototype.initialize.call(this)
};
Scene_Debug.prototype.create=function()
	{
	Scene_MenuBase.prototype.create.call(this);
	this.createRangeWindow();
	this.createEditWindow();
	this.createDebugHelpWindow()
};
Scene_Debug.prototype.createRangeWindow=function()
	{
	this._rangeWindow=new Window_DebugRange(0,0);
	this._rangeWindow.setHandler('ok',this.onRangeOk.bind(this));
	this._rangeWindow.setHandler('cancel',this.popScene.bind(this));
	this.addWindow(this._rangeWindow)
};
Scene_Debug.prototype.createEditWindow=function()
	{
	var wx=this._rangeWindow.width;
	var ww=Graphics.boxWidth-wx;
	this._editWindow=new Window_DebugEdit(wx,0,ww);
	this._editWindow.setHandler('cancel',this.onEditCancel.bind(this));
	this._rangeWindow.setEditWindow(this._editWindow);
	this.addWindow(this._editWindow)
};
Scene_Debug.prototype.createDebugHelpWindow=function()
	{
	var wx=this._editWindow.x;
	var wy=this._editWindow.height;
	var ww=this._editWindow.width;
	var wh=Graphics.boxHeight-wy;
	this._debugHelpWindow=new Window_Base(wx,wy,ww,wh);
	this.addWindow(this._debugHelpWindow)
};
Scene_Debug.prototype.onRangeOk=function()
	{
	this._editWindow.activate();
	this._editWindow.select(0);
	this.refreshHelpWindow()
};
Scene_Debug.prototype.onEditCancel=function()
	{
	this._rangeWindow.activate();
	this._editWindow.deselect();
	this.refreshHelpWindow()
};
Scene_Debug.prototype.refreshHelpWindow=function()
	{
	this._debugHelpWindow.contents.clear();
	if(this._editWindow.active)
		{
		this._debugHelpWindow.drawTextEx(this.helpText(),4,0)
	}
};
Scene_Debug.prototype.helpText=function()
	{
	if(this._rangeWindow.mode()==='switch')
		{
		return'Enter : ON / OFF'
	}
	else
		{
		return('Left     :  -1\n'+'Right    :  +1\n'+'Pageup   : -10\n'+'Pagedown : +10')
	}
};
function Scene_Battle()
	{
	this.initialize.apply(this,arguments)
}
Scene_Battle.prototype=Object.create(Scene_Base.prototype);
Scene_Battle.prototype.constructor=Scene_Battle;
Scene_Battle.prototype.initialize=function()
	{
	Scene_Base.prototype.initialize.call(this)
};
Scene_Battle.prototype.create=function()
	{
	Scene_Base.prototype.create.call(this);
	this.createDisplayObjects()
};
Scene_Battle.prototype.start=function()
	{
	Scene_Base.prototype.start.call(this);
	this.startFadeIn(this.fadeSpeed(),false);
	BattleManager.playBattleBgm();
	BattleManager.startBattle()
};
Scene_Battle.prototype.update=function()
	{
	var active=this.isActive();
	$gameTimer.update(active);
	$gameScreen.update();
	this.updateStatusWindow();
	this.updateWindowPositions();
	if(active&&!this.isBusy())
		{
		this.updateBattleProcess()
	}
	Scene_Base.prototype.update.call(this)
};
Scene_Battle.prototype.updateBattleProcess=function()
	{
	if(!this.isAnyInputWindowActive()||BattleManager.isAborting()||BattleManager.isBattleEnd())
		{
		BattleManager.update();
		this.changeInputWindow()
	}
};
Scene_Battle.prototype.isAnyInputWindowActive=function()
	{
	return(this._partyCommandWindow.active||this._actorCommandWindow.active||this._skillWindow.active||this._itemWindow.active||this._actorWindow.active||this._enemyWindow.active)
};
Scene_Battle.prototype.changeInputWindow=function()
	{
	if(BattleManager.isInputting())
		{
		if(BattleManager.actor())
			{
			this.startActorCommandSelection()
		}
		else
			{
			this.startPartyCommandSelection()
		}
	}
	else
		{
		this.endCommandSelection()
	}
};
Scene_Battle.prototype.stop=function()
	{
	Scene_Base.prototype.stop.call(this);
	if(this.needsSlowFadeOut())
		{
		this.startFadeOut(this.slowFadeSpeed(),false)
	}
	else
		{
		this.startFadeOut(this.fadeSpeed(),false)
	}
	this._statusWindow.close();
	this._partyCommandWindow.close();
	this._actorCommandWindow.close()
};
Scene_Battle.prototype.terminate=function()
	{
	Scene_Base.prototype.terminate.call(this);
	$gameParty.onBattleEnd();
	$gameTroop.onBattleEnd();
	AudioManager.stopMe()
};
Scene_Battle.prototype.needsSlowFadeOut=function()
	{
	return(SceneManager.isNextScene(Scene_Title)||SceneManager.isNextScene(Scene_Gameover))
};
Scene_Battle.prototype.updateStatusWindow=function()
	{
	if($gameMessage.isBusy())
		{
		this._statusWindow.close();
		this._partyCommandWindow.close();
		this._actorCommandWindow.close()
	}
	else if(this.isActive()&&!this._messageWindow.isClosing())
		{
		this._statusWindow.open()
	}
};
Scene_Battle.prototype.updateWindowPositions=function()
	{
	var statusX=0;
	if(BattleManager.isInputting())
		{
		statusX=this._partyCommandWindow.width
	}
	else
		{
		statusX=this._partyCommandWindow.width/2
	}
	if(this._statusWindow.x<statusX)
		{
		this._statusWindow.x+=16;
		if(this._statusWindow.x>statusX)
			{
			this._statusWindow.x=statusX
		}
	}
	if(this._statusWindow.x>statusX)
		{
		this._statusWindow.x-=16;
		if(this._statusWindow.x<statusX)
			{
			this._statusWindow.x=statusX
		}
	}
};
Scene_Battle.prototype.createDisplayObjects=function()
	{
	this.createSpriteset();
	this.createWindowLayer();
	this.createAllWindows();
	BattleManager.setLogWindow(this._logWindow);
	BattleManager.setStatusWindow(this._statusWindow);
	BattleManager.setSpriteset(this._spriteset);
	this._logWindow.setSpriteset(this._spriteset)
};
Scene_Battle.prototype.createSpriteset=function()
	{
	this._spriteset=new Spriteset_Battle();
	this.addChild(this._spriteset)
};
Scene_Battle.prototype.createAllWindows=function()
	{
	this.createLogWindow();
	this.createStatusWindow();
	this.createPartyCommandWindow();
	this.createActorCommandWindow();
	this.createHelpWindow();
	this.createSkillWindow();
	this.createItemWindow();
	this.createActorWindow();
	this.createEnemyWindow();
	this.createMessageWindow();
	this.createScrollTextWindow()
};
Scene_Battle.prototype.createLogWindow=function()
	{
	this._logWindow=new Window_BattleLog();
	this.addWindow(this._logWindow)
};
Scene_Battle.prototype.createStatusWindow=function()
	{
	this._statusWindow=new Window_BattleStatus();
	this.addWindow(this._statusWindow)
};
Scene_Battle.prototype.createPartyCommandWindow=function()
	{
	this._partyCommandWindow=new Window_PartyCommand();
	this._partyCommandWindow.setHandler('fight',this.commandFight.bind(this));
	this._partyCommandWindow.setHandler('escape',this.commandEscape.bind(this));
	this._partyCommandWindow.deselect();
	this.addWindow(this._partyCommandWindow)
};
Scene_Battle.prototype.createActorCommandWindow=function()
	{
	this._actorCommandWindow=new Window_ActorCommand();
	this._actorCommandWindow.setHandler('attack',this.commandAttack.bind(this));
	this._actorCommandWindow.setHandler('skill',this.commandSkill.bind(this));
	this._actorCommandWindow.setHandler('guard',this.commandGuard.bind(this));
	this._actorCommandWindow.setHandler('item',this.commandItem.bind(this));
	this._actorCommandWindow.setHandler('cancel',this.selectPreviousCommand.bind(this));
	this.addWindow(this._actorCommandWindow)
};
Scene_Battle.prototype.createHelpWindow=function()
	{
	this._helpWindow=new Window_Help();
	this._helpWindow.visible=false;
	this.addWindow(this._helpWindow)
};
Scene_Battle.prototype.createSkillWindow=function()
	{
	var wy=this._helpWindow.y+this._helpWindow.height;
	var wh=this._statusWindow.y-wy;
	this._skillWindow=new Window_BattleSkill(0,wy,Graphics.boxWidth,wh);
	this._skillWindow.setHelpWindow(this._helpWindow);
	this._skillWindow.setHandler('ok',this.onSkillOk.bind(this));
	this._skillWindow.setHandler('cancel',this.onSkillCancel.bind(this));
	this.addWindow(this._skillWindow)
};
Scene_Battle.prototype.createItemWindow=function()
	{
	var wy=this._helpWindow.y+this._helpWindow.height;
	var wh=this._statusWindow.y-wy;
	this._itemWindow=new Window_BattleItem(0,wy,Graphics.boxWidth,wh);
	this._itemWindow.setHelpWindow(this._helpWindow);
	this._itemWindow.setHandler('ok',this.onItemOk.bind(this));
	this._itemWindow.setHandler('cancel',this.onItemCancel.bind(this));
	this.addWindow(this._itemWindow)
};
Scene_Battle.prototype.createActorWindow=function()
	{
	this._actorWindow=new Window_BattleActor(0,this._statusWindow.y);
	this._actorWindow.setHandler('ok',this.onActorOk.bind(this));
	this._actorWindow.setHandler('cancel',this.onActorCancel.bind(this));
	this.addWindow(this._actorWindow)
};
Scene_Battle.prototype.createEnemyWindow=function()
	{
	this._enemyWindow=new Window_BattleEnemy(0,this._statusWindow.y);
	this._enemyWindow.x=Graphics.boxWidth-this._enemyWindow.width;
	this._enemyWindow.setHandler('ok',this.onEnemyOk.bind(this));
	this._enemyWindow.setHandler('cancel',this.onEnemyCancel.bind(this));
	this.addWindow(this._enemyWindow)
};
Scene_Battle.prototype.createMessageWindow=function()
	{
	this._messageWindow=new Window_Message();
	this.addWindow(this._messageWindow);
	this._messageWindow.subWindows().forEach(function(window)
		{
		this.addWindow(window)
	}
	,this)
};
Scene_Battle.prototype.createScrollTextWindow=function()
	{
	this._scrollTextWindow=new Window_ScrollText();
	this.addWindow(this._scrollTextWindow)
};
Scene_Battle.prototype.refreshStatus=function()
	{
	this._statusWindow.refresh()
};
Scene_Battle.prototype.startPartyCommandSelection=function()
	{
	this.refreshStatus();
	this._statusWindow.deselect();
	this._statusWindow.open();
	this._actorCommandWindow.close();
	this._partyCommandWindow.setup()
};
Scene_Battle.prototype.commandFight=function()
	{
	this.selectNextCommand()
};
Scene_Battle.prototype.commandEscape=function()
	{
	BattleManager.processEscape();
	this.changeInputWindow()
};
Scene_Battle.prototype.startActorCommandSelection=function()
	{
	this._statusWindow.select(BattleManager.actor().index());
	this._partyCommandWindow.close();
	this._actorCommandWindow.setup(BattleManager.actor())
};
Scene_Battle.prototype.commandAttack=function()
	{
	BattleManager.inputtingAction().setAttack();
	this.selectEnemySelection()
};
Scene_Battle.prototype.commandSkill=function()
	{
	this._skillWindow.setActor(BattleManager.actor());
	this._skillWindow.setStypeId(this._actorCommandWindow.currentExt());
	this._skillWindow.refresh();
	this._skillWindow.show();
	this._skillWindow.activate()
};
Scene_Battle.prototype.commandGuard=function()
	{
	BattleManager.inputtingAction().setGuard();
	this.selectNextCommand()
};
Scene_Battle.prototype.commandItem=function()
	{
	this._itemWindow.refresh();
	this._itemWindow.show();
	this._itemWindow.activate()
};
Scene_Battle.prototype.selectNextCommand=function()
	{
	BattleManager.selectNextCommand();
	this.changeInputWindow()
};
Scene_Battle.prototype.selectPreviousCommand=function()
	{
	BattleManager.selectPreviousCommand();
	this.changeInputWindow()
};
Scene_Battle.prototype.selectActorSelection=function()
	{
	this._actorWindow.refresh();
	this._actorWindow.show();
	this._actorWindow.activate()
};
Scene_Battle.prototype.onActorOk=function()
	{
	var action=BattleManager.inputtingAction();
	action.setTarget(this._actorWindow.index());
	this._actorWindow.hide();
	this._skillWindow.hide();
	this._itemWindow.hide();
	this.selectNextCommand()
};
Scene_Battle.prototype.onActorCancel=function()
	{
	this._actorWindow.hide();
	switch(this._actorCommandWindow.currentSymbol())
		{
		case'skill':this._skillWindow.show();
		this._skillWindow.activate();
		break;
		case'item':this._itemWindow.show();
		this._itemWindow.activate();
		break
	}
};
Scene_Battle.prototype.selectEnemySelection=function()
	{
	this._enemyWindow.refresh();
	this._enemyWindow.show();
	this._enemyWindow.select(0);
	this._enemyWindow.activate()
};
Scene_Battle.prototype.onEnemyOk=function()
	{
	var action=BattleManager.inputtingAction();
	action.setTarget(this._enemyWindow.enemyIndex());
	this._enemyWindow.hide();
	this._skillWindow.hide();
	this._itemWindow.hide();
	this.selectNextCommand()
};
Scene_Battle.prototype.onEnemyCancel=function()
	{
	this._enemyWindow.hide();
	switch(this._actorCommandWindow.currentSymbol())
		{
		case'attack':this._actorCommandWindow.activate();
		break;
		case'skill':this._skillWindow.show();
		this._skillWindow.activate();
		break;
		case'item':this._itemWindow.show();
		this._itemWindow.activate();
		break
	}
};
Scene_Battle.prototype.onSkillOk=function()
	{
	var skill=this._skillWindow.item();
	var action=BattleManager.inputtingAction();
	action.setSkill(skill.id);
	BattleManager.actor().setLastBattleSkill(skill);
	this.onSelectAction()
};
Scene_Battle.prototype.onSkillCancel=function()
	{
	this._skillWindow.hide();
	this._actorCommandWindow.activate()
};
Scene_Battle.prototype.onItemOk=function()
	{
	var item=this._itemWindow.item();
	var action=BattleManager.inputtingAction();
	action.setItem(item.id);
	$gameParty.setLastItem(item);
	this.onSelectAction()
};
Scene_Battle.prototype.onItemCancel=function()
	{
	this._itemWindow.hide();
	this._actorCommandWindow.activate()
};
Scene_Battle.prototype.onSelectAction=function()
	{
	var action=BattleManager.inputtingAction();
	this._skillWindow.hide();
	this._itemWindow.hide();
	if(!action.needsSelection())
		{
		this.selectNextCommand()
	}
	else if(action.isForOpponent())
		{
		this.selectEnemySelection()
	}
	else
		{
		this.selectActorSelection()
	}
};
Scene_Battle.prototype.endCommandSelection=function()
	{
	this._partyCommandWindow.close();
	this._actorCommandWindow.close();
	this._statusWindow.deselect()
};
function Scene_Gameover()
	{
	this.initialize.apply(this,arguments)
}
Scene_Gameover.prototype=Object.create(Scene_Base.prototype);
Scene_Gameover.prototype.constructor=Scene_Gameover;
Scene_Gameover.prototype.initialize=function()
	{
	Scene_Base.prototype.initialize.call(this)
};
Scene_Gameover.prototype.create=function()
	{
	Scene_Base.prototype.create.call(this);
	this.playGameoverMusic();
	this.createBackground()
};
Scene_Gameover.prototype.start=function()
	{
	Scene_Base.prototype.start.call(this);
	this.startFadeIn(this.slowFadeSpeed(),false)
};
Scene_Gameover.prototype.update=function()
	{
	if(this.isActive()&&!this.isBusy()&&this.isTriggered())
		{
		this.gotoTitle()
	}
	Scene_Base.prototype.update.call(this)
};
Scene_Gameover.prototype.stop=function()
	{
	Scene_Base.prototype.stop.call(this);
	this.fadeOutAll()
};
Scene_Gameover.prototype.terminate=function()
	{
	Scene_Base.prototype.terminate.call(this);
	AudioManager.stopAll()
};
Scene_Gameover.prototype.playGameoverMusic=function()
	{
	AudioManager.stopBgm();
	AudioManager.stopBgs();
	AudioManager.playMe($dataSystem.gameoverMe)
};
Scene_Gameover.prototype.createBackground=function()
	{
	this._backSprite=new Sprite();
	this._backSprite.bitmap=ImageManager.loadSystem('GameOver');
	this.addChild(this._backSprite)
};
Scene_Gameover.prototype.isTriggered=function()
	{
	return Input.isTriggered('ok')||TouchInput.isTriggered()
};
Scene_Gameover.prototype.gotoTitle=function()
	{
	SceneManager.goto(Scene_Title)
};
 

 

 

 

 

rpg_object.js

 

function Game_Temp()
	{
	this.initialize.apply(this,arguments)
}
Game_Temp.prototype.initialize=function()
	{
	this._isPlaytest=Utils.isOptionValid('test');
	this._commonEventId=0;
	this._destinationX=null;
	this._destinationY=null
};
Game_Temp.prototype.isPlaytest=function()
	{
	return this._isPlaytest
};
Game_Temp.prototype.reserveCommonEvent=function(commonEventId)
	{
	this._commonEventId=commonEventId
};
Game_Temp.prototype.clearCommonEvent=function()
	{
	this._commonEventId=0
};
Game_Temp.prototype.isCommonEventReserved=function()
	{
	return this._commonEventId>0
};
Game_Temp.prototype.reservedCommonEvent=function()
	{
	return $dataCommonEvents[this._commonEventId]
};
Game_Temp.prototype.setDestination=function(x,y)
	{
	this._destinationX=x;
	this._destinationY=y
};
Game_Temp.prototype.clearDestination=function()
	{
	this._destinationX=null;
	this._destinationY=null
};
Game_Temp.prototype.isDestinationValid=function()
	{
	return this._destinationX!==null
};
Game_Temp.prototype.destinationX=function()
	{
	return this._destinationX
};
Game_Temp.prototype.destinationY=function()
	{
	return this._destinationY
};
function Game_System()
	{
	this.initialize.apply(this,arguments)
}
Game_System.prototype.initialize=function()
	{
	this._saveEnabled=true;
	this._menuEnabled=true;
	this._encounterEnabled=true;
	this._formationEnabled=true;
	this._battleCount=0;
	this._winCount=0;
	this._escapeCount=0;
	this._saveCount=0;
	this._versionId=0;
	this._framesOnSave=0;
	this._bgmOnSave=null;
	this._bgsOnSave=null;
	this._windowTone=null;
	this._battleBgm=null;
	this._victoryMe=null;
	this._defeatMe=null;
	this._savedBgm=null;
	this._walkingBgm=null
};
Game_System.prototype.isJapanese=function()
	{
	return $dataSystem.locale.match(/^ja/)
};
Game_System.prototype.isChinese=function()
	{
	return $dataSystem.locale.match(/^zh/)
};
Game_System.prototype.isKorean=function()
	{
	return $dataSystem.locale.match(/^ko/)
};
Game_System.prototype.isCJK=function()
	{
	return $dataSystem.locale.match(/^(ja|zh|ko)/)
};
Game_System.prototype.isRussian=function()
	{
	return $dataSystem.locale.match(/^ru/)
};
Game_System.prototype.isSideView=function()
	{
	return $dataSystem.optSideView
};
Game_System.prototype.isSaveEnabled=function()
	{
	return this._saveEnabled
};
Game_System.prototype.disableSave=function()
	{
	this._saveEnabled=false
};
Game_System.prototype.enableSave=function()
	{
	this._saveEnabled=true
};
Game_System.prototype.isMenuEnabled=function()
	{
	return this._menuEnabled
};
Game_System.prototype.disableMenu=function()
	{
	this._menuEnabled=false
};
Game_System.prototype.enableMenu=function()
	{
	this._menuEnabled=true
};
Game_System.prototype.isEncounterEnabled=function()
	{
	return this._encounterEnabled
};
Game_System.prototype.disableEncounter=function()
	{
	this._encounterEnabled=false
};
Game_System.prototype.enableEncounter=function()
	{
	this._encounterEnabled=true
};
Game_System.prototype.isFormationEnabled=function()
	{
	return this._formationEnabled
};
Game_System.prototype.disableFormation=function()
	{
	this._formationEnabled=false
};
Game_System.prototype.enableFormation=function()
	{
	this._formationEnabled=true
};
Game_System.prototype.battleCount=function()
	{
	return this._battleCount
};
Game_System.prototype.winCount=function()
	{
	return this._winCount
};
Game_System.prototype.escapeCount=function()
	{
	return this._escapeCount
};
Game_System.prototype.saveCount=function()
	{
	return this._saveCount
};
Game_System.prototype.versionId=function()
	{
	return this._versionId
};
Game_System.prototype.windowTone=function()
	{
	return this._windowTone||$dataSystem.windowTone
};
Game_System.prototype.setWindowTone=function(value)
	{
	this._windowTone=value
};
Game_System.prototype.battleBgm=function()
	{
	return this._battleBgm||$dataSystem.battleBgm
};
Game_System.prototype.setBattleBgm=function(value)
	{
	this._battleBgm=value
};
Game_System.prototype.victoryMe=function()
	{
	return this._victoryMe||$dataSystem.victoryMe
};
Game_System.prototype.setVictoryMe=function(value)
	{
	this._victoryMe=value
};
Game_System.prototype.defeatMe=function()
	{
	return this._defeatMe||$dataSystem.defeatMe
};
Game_System.prototype.setDefeatMe=function(value)
	{
	this._defeatMe=value
};
Game_System.prototype.onBattleStart=function()
	{
	this._battleCount++
};
Game_System.prototype.onBattleWin=function()
	{
	this._winCount++
};
Game_System.prototype.onBattleEscape=function()
	{
	this._escapeCount++
};
Game_System.prototype.onBeforeSave=function()
	{
	this._saveCount++;
	this._versionId=$dataSystem.versionId;
	this._framesOnSave=Graphics.frameCount;
	this._bgmOnSave=AudioManager.saveBgm();
	this._bgsOnSave=AudioManager.saveBgs()
};
Game_System.prototype.onAfterLoad=function()
	{
	Graphics.frameCount=this._framesOnSave;
	AudioManager.playBgm(this._bgmOnSave);
	AudioManager.playBgs(this._bgsOnSave)
};
Game_System.prototype.playtime=function()
	{
	return Math.floor(Graphics.frameCount/60)
};
Game_System.prototype.playtimeText=function()
	{
	var hour=Math.floor(this.playtime()/60/60);
	var min=Math.floor(this.playtime()/60)%60;
	var sec=this.playtime()%60;
	return hour.padZero(2)+':'+min.padZero(2)+':'+sec.padZero(2)
};
Game_System.prototype.saveBgm=function()
	{
	this._savedBgm=AudioManager.saveBgm()
};
Game_System.prototype.replayBgm=function()
	{
	if(this._savedBgm)
		{
		AudioManager.replayBgm(this._savedBgm)
	}
};
Game_System.prototype.saveWalkingBgm=function()
	{
	this._walkingBgm=AudioManager.saveBgm()
};
Game_System.prototype.replayWalkingBgm=function()
	{
	if(this._walkingBgm)
		{
		AudioManager.playBgm(this._walkingBgm)
	}
};
function Game_Timer()
	{
	this.initialize.apply(this,arguments)
}
Game_Timer.prototype.initialize=function()
	{
	this._frames=0;
	this._working=false
};
Game_Timer.prototype.update=function(sceneActive)
	{
	if(sceneActive&&this._working&&this._frames>0)
		{
		this._frames--;
		if(this._frames===0)
			{
			this.onExpire()
		}
	}
};
Game_Timer.prototype.start=function(count)
	{
	this._frames=count;
	this._working=true
};
Game_Timer.prototype.stop=function()
	{
	this._working=false
};
Game_Timer.prototype.isWorking=function()
	{
	return this._working
};
Game_Timer.prototype.seconds=function()
	{
	return Math.floor(this._frames/60)
};
Game_Timer.prototype.onExpire=function()
	{
	BattleManager.abort()
};
function Game_Message()
	{
	this.initialize.apply(this,arguments)
}
Game_Message.prototype.initialize=function()
	{
	this.clear()
};
Game_Message.prototype.clear=function()
	{
	this._texts=[];
	this._choices=[];
	this._faceName='';
	this._faceIndex=0;
	this._background=0;
	this._positionType=2;
	this._choiceDefaultType=0;
	this._choiceCancelType=0;
	this._choiceBackground=0;
	this._choicePositionType=2;
	this._numInputVariableId=0;
	this._numInputMaxDigits=0;
	this._itemChoiceVariableId=0;
	this._itemChoiceItypeId=0;
	this._scrollMode=false;
	this._scrollSpeed=2;
	this._scrollNoFast=false;
	this._choiceCallback=null
};
Game_Message.prototype.choices=function()
	{
	return this._choices
};
Game_Message.prototype.faceName=function()
	{
	return this._faceName
};
Game_Message.prototype.faceIndex=function()
	{
	return this._faceIndex
};
Game_Message.prototype.background=function()
	{
	return this._background
};
Game_Message.prototype.positionType=function()
	{
	return this._positionType
};
Game_Message.prototype.choiceDefaultType=function()
	{
	return this._choiceDefaultType
};
Game_Message.prototype.choiceCancelType=function()
	{
	return this._choiceCancelType
};
Game_Message.prototype.choiceBackground=function()
	{
	return this._choiceBackground
};
Game_Message.prototype.choicePositionType=function()
	{
	return this._choicePositionType
};
Game_Message.prototype.numInputVariableId=function()
	{
	return this._numInputVariableId
};
Game_Message.prototype.numInputMaxDigits=function()
	{
	return this._numInputMaxDigits
};
Game_Message.prototype.itemChoiceVariableId=function()
	{
	return this._itemChoiceVariableId
};
Game_Message.prototype.itemChoiceItypeId=function()
	{
	return this._itemChoiceItypeId
};
Game_Message.prototype.scrollMode=function()
	{
	return this._scrollMode
};
Game_Message.prototype.scrollSpeed=function()
	{
	return this._scrollSpeed
};
Game_Message.prototype.scrollNoFast=function()
	{
	return this._scrollNoFast
};
Game_Message.prototype.add=function(text)
	{
	this._texts.push(text)
};
Game_Message.prototype.setFaceImage=function(faceName,faceIndex)
	{
	this._faceName=faceName;
	this._faceIndex=faceIndex
};
Game_Message.prototype.setBackground=function(background)
	{
	this._background=background
};
Game_Message.prototype.setPositionType=function(positionType)
	{
	this._positionType=positionType
};
Game_Message.prototype.setChoices=function(choices,defaultType,cancelType)
	{
	this._choices=choices;
	this._choiceDefaultType=defaultType;
	this._choiceCancelType=cancelType
};
Game_Message.prototype.setChoiceBackground=function(background)
	{
	this._choiceBackground=background
};
Game_Message.prototype.setChoicePositionType=function(positionType)
	{
	this._choicePositionType=positionType
};
Game_Message.prototype.setNumberInput=function(variableId,maxDigits)
	{
	this._numInputVariableId=variableId;
	this._numInputMaxDigits=maxDigits
};
Game_Message.prototype.setItemChoice=function(variableId,itemType)
	{
	this._itemChoiceVariableId=variableId;
	this._itemChoiceItypeId=itemType
};
Game_Message.prototype.setScroll=function(speed,noFast)
	{
	this._scrollMode=true;
	this._scrollSpeed=speed;
	this._scrollNoFast=noFast
};
Game_Message.prototype.setChoiceCallback=function(callback)
	{
	this._choiceCallback=callback
};
Game_Message.prototype.onChoice=function(n)
	{
	if(this._choiceCallback)
		{
		this._choiceCallback(n);
		this._choiceCallback=null
	}
};
Game_Message.prototype.hasText=function()
	{
	return this._texts.length>0
};
Game_Message.prototype.isChoice=function()
	{
	return this._choices.length>0
};
Game_Message.prototype.isNumberInput=function()
	{
	return this._numInputVariableId>0
};
Game_Message.prototype.isItemChoice=function()
	{
	return this._itemChoiceVariableId>0
};
Game_Message.prototype.isBusy=function()
	{
	return(this.hasText()||this.isChoice()||this.isNumberInput()||this.isItemChoice())
};
Game_Message.prototype.newPage=function()
	{
	if(this._texts.length>0)
		{
		this._texts[this._texts.length-1]+='\f'
	}
};
Game_Message.prototype.allText=function()
	{
	return this._texts.reduce(function(previousValue,currentValue)
		{
		return previousValue+'\n'+currentValue
	}
	)
};
function Game_Switches()
	{
	this.initialize.apply(this,arguments)
}
Game_Switches.prototype.initialize=function()
	{
	this.clear()
};
Game_Switches.prototype.clear=function()
	{
	this._data=[]
};
Game_Switches.prototype.value=function(switchId)
	{
	return!!this._data[switchId]
};
Game_Switches.prototype.setValue=function(switchId,value)
	{
	if(switchId>0&&switchId<$dataSystem.switches.length)
		{
		this._data[switchId]=value;
		this.onChange()
	}
};
Game_Switches.prototype.onChange=function()
	{
	$gameMap.requestRefresh()
};
function Game_Variables()
	{
	this.initialize.apply(this,arguments)
}
Game_Variables.prototype.initialize=function()
	{
	this.clear()
};
Game_Variables.prototype.clear=function()
	{
	this._data=[]
};
Game_Variables.prototype.value=function(variableId)
	{
	return this._data[variableId]||0
};
Game_Variables.prototype.setValue=function(variableId,value)
	{
	if(variableId>0&&variableId<$dataSystem.variables.length)
		{
		if(typeof value==='number')
			{
			value=Math.floor(value)
		}
		this._data[variableId]=value;
		this.onChange()
	}
};
Game_Variables.prototype.onChange=function()
	{
	$gameMap.requestRefresh()
};
function Game_SelfSwitches()
	{
	this.initialize.apply(this,arguments)
}
Game_SelfSwitches.prototype.initialize=function()
	{
	this.clear()
};
Game_SelfSwitches.prototype.clear=function()
	{
	this._data=
		{
	}
};
Game_SelfSwitches.prototype.value=function(key)
	{
	return!!this._data[key]
};
Game_SelfSwitches.prototype.setValue=function(key,value)
	{
	if(value)
		{
		this._data[key]=true
	}
	else
		{
		delete this._data[key]
	}
	this.onChange()
};
Game_SelfSwitches.prototype.onChange=function()
	{
	$gameMap.requestRefresh()
};
function Game_Screen()
	{
	this.initialize.apply(this,arguments)
}
Game_Screen.prototype.initialize=function()
	{
	this.clear()
};
Game_Screen.prototype.clear=function()
	{
	this.clearFade();
	this.clearTone();
	this.clearFlash();
	this.clearShake();
	this.clearZoom();
	this.clearWeather();
	this.clearPictures()
};
Game_Screen.prototype.onBattleStart=function()
	{
	this.clearFade();
	this.clearFlash();
	this.clearShake();
	this.clearZoom();
	this.eraseBattlePictures()
};
Game_Screen.prototype.brightness=function()
	{
	return this._brightness
};
Game_Screen.prototype.tone=function()
	{
	return this._tone
};
Game_Screen.prototype.flashColor=function()
	{
	return this._flashColor
};
Game_Screen.prototype.shake=function()
	{
	return this._shake
};
Game_Screen.prototype.zoomX=function()
	{
	return this._zoomX
};
Game_Screen.prototype.zoomY=function()
	{
	return this._zoomY
};
Game_Screen.prototype.zoomScale=function()
	{
	return this._zoomScale
};
Game_Screen.prototype.weatherType=function()
	{
	return this._weatherType
};
Game_Screen.prototype.weatherPower=function()
	{
	return this._weatherPower
};
Game_Screen.prototype.picture=function(pictureId)
	{
	var realPictureId=this.realPictureId(pictureId);
	return this._pictures[realPictureId]
};
Game_Screen.prototype.realPictureId=function(pictureId)
	{
	if($gameParty.inBattle())
		{
		return pictureId+this.maxPictures()
	}
	else
		{
		return pictureId
	}
};
Game_Screen.prototype.clearFade=function()
	{
	this._brightness=255;
	this._fadeOutDuration=0;
	this._fadeInDuration=0
};
Game_Screen.prototype.clearTone=function()
	{
	this._tone=[0,0,0,0];
	this._toneTarget=[0,0,0,0];
	this._toneDuration=0
};
Game_Screen.prototype.clearFlash=function()
	{
	this._flashColor=[0,0,0,0];
	this._flashDuration=0
};
Game_Screen.prototype.clearShake=function()
	{
	this._shakePower=0;
	this._shakeSpeed=0;
	this._shakeDuration=0;
	this._shakeDirection=1;
	this._shake=0
};
Game_Screen.prototype.clearZoom=function()
	{
	this._zoomX=0;
	this._zoomY=0;
	this._zoomScale=1;
	this._zoomScaleTarget=1;
	this._zoomDuration=0
};
Game_Screen.prototype.clearWeather=function()
	{
	this._weatherType='none';
	this._weatherPower=0;
	this._weatherPowerTarget=0;
	this._weatherDuration=0
};
Game_Screen.prototype.clearPictures=function()
	{
	this._pictures=[]
};
Game_Screen.prototype.eraseBattlePictures=function()
	{
	this._pictures=this._pictures.slice(0,this.maxPictures()+1)
};
Game_Screen.prototype.maxPictures=function()
	{
	return 100
};
Game_Screen.prototype.startFadeOut=function(duration)
	{
	this._fadeOutDuration=duration;
	this._fadeInDuration=0
};
Game_Screen.prototype.startFadeIn=function(duration)
	{
	this._fadeInDuration=duration;
	this._fadeOutDuration=0
};
Game_Screen.prototype.startTint=function(tone,duration)
	{
	this._toneTarget=tone.clone();
	this._toneDuration=duration;
	if(this._toneDuration===0)
		{
		this._tone=this._toneTarget.clone()
	}
};
Game_Screen.prototype.startFlash=function(color,duration)
	{
	this._flashColor=color.clone();
	this._flashDuration=duration
};
Game_Screen.prototype.startShake=function(power,speed,duration)
	{
	this._shakePower=power;
	this._shakeSpeed=speed;
	this._shakeDuration=duration
};
Game_Screen.prototype.startZoom=function(x,y,scale,duration)
	{
	this._zoomX=x;
	this._zoomY=y;
	this._zoomScaleTarget=scale;
	this._zoomDuration=duration
};
Game_Screen.prototype.setZoom=function(x,y,scale)
	{
	this._zoomX=x;
	this._zoomY=y;
	this._zoomScale=scale
};
Game_Screen.prototype.changeWeather=function(type,power,duration)
	{
	if(type!=='none'||duration===0)
		{
		this._weatherType=type
	}
	this._weatherPowerTarget=type==='none'?0:power;
	this._weatherDuration=duration;
	if(duration===0)
		{
		this._weatherPower=this._weatherPowerTarget
	}
};
Game_Screen.prototype.update=function()
	{
	this.updateFadeOut();
	this.updateFadeIn();
	this.updateTone();
	this.updateFlash();
	this.updateShake();
	this.updateZoom();
	this.updateWeather();
	this.updatePictures()
};
Game_Screen.prototype.updateFadeOut=function()
	{
	if(this._fadeOutDuration>0)
		{
		var d=this._fadeOutDuration;
		this._brightness=(this._brightness*(d-1))/d;
		this._fadeOutDuration--
	}
};
Game_Screen.prototype.updateFadeIn=function()
	{
	if(this._fadeInDuration>0)
		{
		var d=this._fadeInDuration;
		this._brightness=(this._brightness*(d-1)+255)/d;
		this._fadeInDuration--
	}
};
Game_Screen.prototype.updateTone=function()
	{
	if(this._toneDuration>0)
		{
		var d=this._toneDuration;
		for(var i=0;
		i<4;
		i++)
			{
			this._tone[i]=(this._tone[i]*(d-1)+this._toneTarget[i])/d
		}
		this._toneDuration--
	}
};
Game_Screen.prototype.updateFlash=function()
	{
	if(this._flashDuration>0)
		{
		var d=this._flashDuration;
		this._flashColor[3]*=(d-1)/d;
		this._flashDuration--
	}
};
Game_Screen.prototype.updateShake=function()
	{
	if(this._shakeDuration>0||this._shake!==0)
		{
		var delta=(this._shakePower*this._shakeSpeed*this._shakeDirection)/10;
		if(this._shakeDuration<=1&&this._shake*(this._shake+delta)<0)
			{
			this._shake=0
		}
		else
			{
			this._shake+=delta
		}
		if(this._shake>this._shakePower*2)
			{
			this._shakeDirection=-1
		}
		if(this._shake<-this._shakePower*2)
			{
			this._shakeDirection=1
		}
		this._shakeDuration--
	}
};
Game_Screen.prototype.updateZoom=function()
	{
	if(this._zoomDuration>0)
		{
		var d=this._zoomDuration;
		var t=this._zoomScaleTarget;
		this._zoomScale=(this._zoomScale*(d-1)+t)/d;
		this._zoomDuration--
	}
};
Game_Screen.prototype.updateWeather=function()
	{
	if(this._weatherDuration>0)
		{
		var d=this._weatherDuration;
		var t=this._weatherPowerTarget;
		this._weatherPower=(this._weatherPower*(d-1)+t)/d;
		this._weatherDuration--;
		if(this._weatherDuration===0&&this._weatherPowerTarget===0)
			{
			this._weatherType='none'
		}
	}
};
Game_Screen.prototype.updatePictures=function()
	{
	this._pictures.forEach(function(picture)
		{
		if(picture)
			{
			picture.update()
		}
	}
	)
};
Game_Screen.prototype.startFlashForDamage=function()
	{
	this.startFlash([255,0,0,128],8)
};
Game_Screen.prototype.showPicture=function(pictureId,name,origin,x,y,scaleX,scaleY,opacity,blendMode)
	{
	var realPictureId=this.realPictureId(pictureId);
	var picture=new Game_Picture();
	picture.show(name,origin,x,y,scaleX,scaleY,opacity,blendMode);
	this._pictures[realPictureId]=picture
};
Game_Screen.prototype.movePicture=function(pictureId,origin,x,y,scaleX,scaleY,opacity,blendMode,duration)
	{
	var picture=this.picture(pictureId);
	if(picture)
		{
		picture.move(origin,x,y,scaleX,scaleY,opacity,blendMode,duration)
	}
};
Game_Screen.prototype.rotatePicture=function(pictureId,speed)
	{
	var picture=this.picture(pictureId);
	if(picture)
		{
		picture.rotate(speed)
	}
};
Game_Screen.prototype.tintPicture=function(pictureId,tone,duration)
	{
	var picture=this.picture(pictureId);
	if(picture)
		{
		picture.tint(tone,duration)
	}
};
Game_Screen.prototype.erasePicture=function(pictureId)
	{
	var realPictureId=this.realPictureId(pictureId);
	this._pictures[realPictureId]=null
};
function Game_Picture()
	{
	this.initialize.apply(this,arguments)
}
Game_Picture.prototype.initialize=function()
	{
	this.initBasic();
	this.initTarget();
	this.initTone();
	this.initRotation()
};
Game_Picture.prototype.name=function()
	{
	return this._name
};
Game_Picture.prototype.origin=function()
	{
	return this._origin
};
Game_Picture.prototype.x=function()
	{
	return this._x
};
Game_Picture.prototype.y=function()
	{
	return this._y
};
Game_Picture.prototype.scaleX=function()
	{
	return this._scaleX
};
Game_Picture.prototype.scaleY=function()
	{
	return this._scaleY
};
Game_Picture.prototype.opacity=function()
	{
	return this._opacity
};
Game_Picture.prototype.blendMode=function()
	{
	return this._blendMode
};
Game_Picture.prototype.tone=function()
	{
	return this._tone
};
Game_Picture.prototype.angle=function()
	{
	return this._angle
};
Game_Picture.prototype.initBasic=function()
	{
	this._name='';
	this._origin=0;
	this._x=0;
	this._y=0;
	this._scaleX=100;
	this._scaleY=100;
	this._opacity=255;
	this._blendMode=0
};
Game_Picture.prototype.initTarget=function()
	{
	this._targetX=this._x;
	this._targetY=this._y;
	this._targetScaleX=this._scaleX;
	this._targetScaleY=this._scaleY;
	this._targetOpacity=this._opacity;
	this._duration=0
};
Game_Picture.prototype.initTone=function()
	{
	this._tone=null;
	this._toneTarget=null;
	this._toneDuration=0
};
Game_Picture.prototype.initRotation=function()
	{
	this._angle=0;
	this._rotationSpeed=0
};
Game_Picture.prototype.show=function(name,origin,x,y,scaleX,scaleY,opacity,blendMode)
	{
	this._name=name;
	this._origin=origin;
	this._x=x;
	this._y=y;
	this._scaleX=scaleX;
	this._scaleY=scaleY;
	this._opacity=opacity;
	this._blendMode=blendMode;
	this.initTarget();
	this.initTone();
	this.initRotation()
};
Game_Picture.prototype.move=function(origin,x,y,scaleX,scaleY,opacity,blendMode,duration)
	{
	this._origin=origin;
	this._targetX=x;
	this._targetY=y;
	this._targetScaleX=scaleX;
	this._targetScaleY=scaleY;
	this._targetOpacity=opacity;
	this._blendMode=blendMode;
	this._duration=duration
};
Game_Picture.prototype.rotate=function(speed)
	{
	this._rotationSpeed=speed
};
Game_Picture.prototype.tint=function(tone,duration)
	{
	if(!this._tone)
		{
		this._tone=[0,0,0,0]
	}
	this._toneTarget=tone.clone();
	this._toneDuration=duration;
	if(this._toneDuration===0)
		{
		this._tone=this._toneTarget.clone()
	}
};
Game_Picture.prototype.erase=function()
	{
	this._name='';
	this._origin=0;
	this.initTarget();
	this.initTone();
	this.initRotation()
};
Game_Picture.prototype.update=function()
	{
	this.updateMove();
	this.updateTone();
	this.updateRotation()
};
Game_Picture.prototype.updateMove=function()
	{
	if(this._duration>0)
		{
		var d=this._duration;
		this._x=(this._x*(d-1)+this._targetX)/d;
		this._y=(this._y*(d-1)+this._targetY)/d;
		this._scaleX=(this._scaleX*(d-1)+this._targetScaleX)/d;
		this._scaleY=(this._scaleY*(d-1)+this._targetScaleY)/d;
		this._opacity=(this._opacity*(d-1)+this._targetOpacity)/d;
		this._duration--
	}
};
Game_Picture.prototype.updateTone=function()
	{
	if(this._toneDuration>0)
		{
		var d=this._toneDuration;
		for(var i=0;
		i<4;
		i++)
			{
			this._tone[i]=(this._tone[i]*(d-1)+this._toneTarget[i])/d
		}
		this._toneDuration--
	}
};
Game_Picture.prototype.updateRotation=function()
	{
	if(this._rotationSpeed>0)
		{
		this._angle+=this._rotationSpeed/2
	}
};
function Game_Item()
	{
	this.initialize.apply(this,arguments)
}
Game_Item.prototype.initialize=function(item)
	{
	this._dataClass='';
	this._itemId=0;
	if(item)
		{
		this.setObject(item)
	}
};
Game_Item.prototype.isSkill=function()
	{
	return this._dataClass==='skill'
};
Game_Item.prototype.isItem=function()
	{
	return this._dataClass==='item'
};
Game_Item.prototype.isUsableItem=function()
	{
	return this.isSkill()||this.isItem()
};
Game_Item.prototype.isWeapon=function()
	{
	return this._dataClass==='weapon'
};
Game_Item.prototype.isArmor=function()
	{
	return this._dataClass==='armor'
};
Game_Item.prototype.isEquipItem=function()
	{
	return this.isWeapon()||this.isArmor()
};
Game_Item.prototype.isNull=function()
	{
	return this._dataClass===''
};
Game_Item.prototype.itemId=function()
	{
	return this._itemId
};
Game_Item.prototype.object=function()
	{
	if(this.isSkill())
		{
		return $dataSkills[this._itemId]
	}
	else if(this.isItem())
		{
		return $dataItems[this._itemId]
	}
	else if(this.isWeapon())
		{
		return $dataWeapons[this._itemId]
	}
	else if(this.isArmor())
		{
		return $dataArmors[this._itemId]
	}
	else
		{
		return null
	}
};
Game_Item.prototype.setObject=function(item)
	{
	if(DataManager.isSkill(item))
		{
		this._dataClass='skill'
	}
	else if(DataManager.isItem(item))
		{
		this._dataClass='item'
	}
	else if(DataManager.isWeapon(item))
		{
		this._dataClass='weapon'
	}
	else if(DataManager.isArmor(item))
		{
		this._dataClass='armor'
	}
	else
		{
		this._dataClass=''
	}
	this._itemId=item?item.id:0
};
Game_Item.prototype.setEquip=function(isWeapon,itemId)
	{
	this._dataClass=isWeapon?'weapon':'armor';
	this._itemId=itemId
};
function Game_Action()
	{
	this.initialize.apply(this,arguments)
}
Game_Action.EFFECT_RECOVER_HP=11;
Game_Action.EFFECT_RECOVER_MP=12;
Game_Action.EFFECT_GAIN_TP=13;
Game_Action.EFFECT_ADD_STATE=21;
Game_Action.EFFECT_REMOVE_STATE=22;
Game_Action.EFFECT_ADD_BUFF=31;
Game_Action.EFFECT_ADD_DEBUFF=32;
Game_Action.EFFECT_REMOVE_BUFF=33;
Game_Action.EFFECT_REMOVE_DEBUFF=34;
Game_Action.EFFECT_SPECIAL=41;
Game_Action.EFFECT_GROW=42;
Game_Action.EFFECT_LEARN_SKILL=43;
Game_Action.EFFECT_COMMON_EVENT=44;
Game_Action.SPECIAL_EFFECT_ESCAPE=0;
Game_Action.HITTYPE_CERTAIN=0;
Game_Action.HITTYPE_PHYSICAL=1;
Game_Action.HITTYPE_MAGICAL=2;
Game_Action.prototype.initialize=function(subject,forcing)
	{
	this._subjectActorId=0;
	this._subjectEnemyIndex=-1;
	this._forcing=forcing||false;
	this.setSubject(subject);
	this.clear()
};
Game_Action.prototype.clear=function()
	{
	this._item=new Game_Item();
	this._targetIndex=-1
};
Game_Action.prototype.setSubject=function(subject)
	{
	if(subject.isActor())
		{
		this._subjectActorId=subject.actorId();
		this._subjectEnemyIndex=-1
	}
	else
		{
		this._subjectEnemyIndex=subject.index();
		this._subjectActorId=0
	}
};
Game_Action.prototype.subject=function()
	{
	if(this._subjectActorId>0)
		{
		return $gameActors.actor(this._subjectActorId)
	}
	else
		{
		return $gameTroop.members()[this._subjectEnemyIndex]
	}
};
Game_Action.prototype.friendsUnit=function()
	{
	return this.subject().friendsUnit()
};
Game_Action.prototype.opponentsUnit=function()
	{
	return this.subject().opponentsUnit()
};
Game_Action.prototype.setEnemyAction=function(action)
	{
	if(action)
		{
		this.setSkill(action.skillId)
	}
	else
		{
		this.clear()
	}
};
Game_Action.prototype.setAttack=function()
	{
	this.setSkill(this.subject().attackSkillId())
};
Game_Action.prototype.setGuard=function()
	{
	this.setSkill(this.subject().guardSkillId())
};
Game_Action.prototype.setSkill=function(skillId)
	{
	this._item.setObject($dataSkills[skillId])
};
Game_Action.prototype.setItem=function(itemId)
	{
	this._item.setObject($dataItems[itemId])
};
Game_Action.prototype.setItemObject=function(object)
	{
	this._item.setObject(object)
};
Game_Action.prototype.setTarget=function(targetIndex)
	{
	this._targetIndex=targetIndex
};
Game_Action.prototype.item=function()
	{
	return this._item.object()
};
Game_Action.prototype.isSkill=function()
	{
	return this._item.isSkill()
};
Game_Action.prototype.isItem=function()
	{
	return this._item.isItem()
};
Game_Action.prototype.numRepeats=function()
	{
	var repeats=this.item().repeats;
	if(this.isAttack())
		{
		repeats+=this.subject().attackTimesAdd()
	}
	return Math.floor(repeats)
};
Game_Action.prototype.checkItemScope=function(list)
	{
	return list.contains(this.item().scope)
};
Game_Action.prototype.isForOpponent=function()
	{
	return this.checkItemScope([1,2,3,4,5,6])
};
Game_Action.prototype.isForFriend=function()
	{
	return this.checkItemScope([7,8,9,10,11])
};
Game_Action.prototype.isForDeadFriend=function()
	{
	return this.checkItemScope([9,10])
};
Game_Action.prototype.isForUser=function()
	{
	return this.checkItemScope([11])
};
Game_Action.prototype.isForOne=function()
	{
	return this.checkItemScope([1,3,7,9,11])
};
Game_Action.prototype.isForRandom=function()
	{
	return this.checkItemScope([3,4,5,6])
};
Game_Action.prototype.isForAll=function()
	{
	return this.checkItemScope([2,8,10])
};
Game_Action.prototype.needsSelection=function()
	{
	return this.checkItemScope([1,7,9])
};
Game_Action.prototype.numTargets=function()
	{
	return this.isForRandom()?this.item().scope-2:0
};
Game_Action.prototype.checkDamageType=function(list)
	{
	return list.contains(this.item().damage.type)
};
Game_Action.prototype.isHpEffect=function()
	{
	return this.checkDamageType([1,3,5])
};
Game_Action.prototype.isMpEffect=function()
	{
	return this.checkDamageType([2,4,6])
};
Game_Action.prototype.isDamage=function()
	{
	return this.checkDamageType([1,2])
};
Game_Action.prototype.isRecover=function()
	{
	return this.checkDamageType([3,4])
};
Game_Action.prototype.isDrain=function()
	{
	return this.checkDamageType([5,6])
};
Game_Action.prototype.isHpRecover=function()
	{
	return this.checkDamageType([3])
};
Game_Action.prototype.isMpRecover=function()
	{
	return this.checkDamageType([4])
};
Game_Action.prototype.isCertainHit=function()
	{
	return this.item().hitType===Game_Action.HITTYPE_CERTAIN
};
Game_Action.prototype.isPhysical=function()
	{
	return this.item().hitType===Game_Action.HITTYPE_PHYSICAL
};
Game_Action.prototype.isMagical=function()
	{
	return this.item().hitType===Game_Action.HITTYPE_MAGICAL
};
Game_Action.prototype.isAttack=function()
	{
	return this.item()===$dataSkills[this.subject().attackSkillId()]
};
Game_Action.prototype.isGuard=function()
	{
	return this.item()===$dataSkills[this.subject().guardSkillId()]
};
Game_Action.prototype.isMagicSkill=function()
	{
	if(this.isSkill())
		{
		return $dataSystem.magicSkills.contains(this.item().stypeId)
	}
	else
		{
		return false
	}
};
Game_Action.prototype.decideRandomTarget=function()
	{
	var target;
	if(this.isForDeadFriend())
		{
		target=this.friendsUnit().randomDeadTarget()
	}
	else if(this.isForFriend())
		{
		target=this.friendsUnit().randomTarget()
	}
	else
		{
		target=this.opponentsUnit().randomTarget()
	}
	if(target)
		{
		this._targetIndex=target.index
	}
	else
		{
		this.clear()
	}
};
Game_Action.prototype.setConfusion=function()
	{
	this.setAttack()
};
Game_Action.prototype.prepare=function()
	{
	if(this.subject().isConfused()&&!this._forcing)
		{
		this.setConfusion()
	}
};
Game_Action.prototype.isValid=function()
	{
	return(this._forcing&&this.item())||this.subject().canUse(this.item())
};
Game_Action.prototype.speed=function()
	{
	var agi=this.subject().agi;
	var speed=agi+Math.randomInt(Math.floor(5+agi/4));
	if(this.item())
		{
		speed+=this.item().speed
	}
	if(this.isAttack())
		{
		speed+=this.subject().attackSpeed()
	}
	return speed
};
Game_Action.prototype.makeTargets=function()
	{
	var targets=[];
	if(!this._forcing&&this.subject().isConfused())
		{
		targets=[this.confusionTarget()]
	}
	else if(this.isForOpponent())
		{
		targets=this.targetsForOpponents()
	}
	else if(this.isForFriend())
		{
		targets=this.targetsForFriends()
	}
	return this.repeatTargets(targets)
};
Game_Action.prototype.repeatTargets=function(targets)
	{
	var repeatedTargets=[];
	var repeats=this.numRepeats();
	for(var i=0;
	i<targets.length;
	i++)
		{
		var target=targets[i];
		if(target)
			{
			for(var j=0;
			j<repeats;
			j++)
				{
				repeatedTargets.push(target)
			}
		}
	}
	return repeatedTargets
};
Game_Action.prototype.confusionTarget=function()
	{
	switch(this.subject().confusionLevel())
		{
		case 1:return this.opponentsUnit().randomTarget();
		case 2:if(Math.randomInt(2)===0)
			{
			return this.opponentsUnit().randomTarget()
		}
		return this.friendsUnit().randomTarget();
		default:return this.friendsUnit().randomTarget()
	}
};
Game_Action.prototype.targetsForOpponents=function()
	{
	var targets=[];
	var unit=this.opponentsUnit();
	if(this.isForRandom())
		{
		for(var i=0;
		i<this.numTargets();
		i++)
			{
			targets.push(unit.randomTarget())
		}
	}
	else if(this.isForOne())
		{
		if(this._targetIndex<0)
			{
			targets.push(unit.randomTarget())
		}
		else
			{
			targets.push(unit.smoothTarget(this._targetIndex))
		}
	}
	else
		{
		targets=unit.aliveMembers()
	}
	return targets
};
Game_Action.prototype.targetsForFriends=function()
	{
	var targets=[];
	var unit=this.friendsUnit();
	if(this.isForUser())
		{
		return[this.subject()]
	}
	else if(this.isForDeadFriend())
		{
		if(this.isForOne())
			{
			targets.push(unit.smoothDeadTarget(this._targetIndex))
		}
		else
			{
			targets=unit.deadMembers()
		}
	}
	else if(this.isForOne())
		{
		if(this._targetIndex<0)
			{
			targets.push(unit.randomTarget())
		}
		else
			{
			targets.push(unit.smoothTarget(this._targetIndex))
		}
	}
	else
		{
		targets=unit.aliveMembers()
	}
	return targets
};
Game_Action.prototype.evaluate=function()
	{
	var value=0;
	this.itemTargetCandidates().forEach(function(target)
		{
		var targetValue=this.evaluateWithTarget(target);
		if(this.isForAll())
			{
			value+=targetValue
		}
		else if(targetValue>value)
			{
			value=targetValue;
			this._targetIndex=target.index
		}
	}
	,this);
	value*=this.numRepeats();
	if(value>0)
		{
		value+=Math.random()
	}
	return value
};
Game_Action.prototype.itemTargetCandidates=function()
	{
	if(!this.isValid())
		{
		return[]
	}
	else if(this.isForOpponent())
		{
		return this.opponentsUnit().aliveMembers()
	}
	else if(this.isForUser())
		{
		return[this.subject()]
	}
	else if(this.isForDeadFriend())
		{
		return this.friendsUnit().deadMembers()
	}
	else
		{
		return this.friendsUnit().aliveMembers()
	}
};
Game_Action.prototype.evaluateWithTarget=function(target)
	{
	if(this.isHpEffect())
		{
		var value=this.makeDamageValue(target,false);
		if(this.isForOpponent())
			{
			return value/Math.max(target.hp,1)
		}
		else
			{
			var recovery=Math.min(-value,target.mhp-target.hp);
			return recovery/target.mhp
		}
	}
};
Game_Action.prototype.testApply=function(target)
	{
	return(this.isForDeadFriend()===target.isDead()&&($gameParty.inBattle()||this.isForOpponent()||(this.isHpRecover()&&target.hp<target.mhp)||(this.isMpRecover()&&target.mp<target.mmp)||(this.hasItemAnyValidEffects(target))))
};
Game_Action.prototype.hasItemAnyValidEffects=function(target)
	{
	return this.item().effects.some(function(effect)
		{
		return this.testItemEffect(target,effect)
	}
	,this)
};
Game_Action.prototype.testItemEffect=function(target,effect)
	{
	switch(effect.code)
		{
		case Game_Action.EFFECT_RECOVER_HP:return target.hp<target.mhp||effect.value1<0||effect.value2<0;
		case Game_Action.EFFECT_RECOVER_MP:return target.mp<target.mmp||effect.value1<0||effect.value2<0;
		case Game_Action.EFFECT_ADD_STATE:return!target.isStateAffected(effect.dataId);
		case Game_Action.EFFECT_REMOVE_STATE:return target.isStateAffected(effect.dataId);
		case Game_Action.EFFECT_ADD_BUFF:return!target.isMaxBuffAffected(effect.dataId);
		case Game_Action.EFFECT_ADD_DEBUFF:return!target.isMaxDebuffAffected(effect.dataId);
		case Game_Action.EFFECT_REMOVE_BUFF:return target.isBuffAffected(effect.dataId);
		case Game_Action.EFFECT_REMOVE_DEBUFF:return target.isDebuffAffected(effect.dataId);
		case Game_Action.EFFECT_LEARN_SKILL:return target.isActor()&&!target.isLearnedSkill(effect.dataId);
		default:return true
	}
};
Game_Action.prototype.itemCnt=function(target)
	{
	if(this.isPhysical()&&target.canMove())
		{
		return target.cnt
	}
	else
		{
		return 0
	}
};
Game_Action.prototype.itemMrf=function(target)
	{
	if(this.isMagical())
		{
		return target.mrf
	}
	else
		{
		return 0
	}
};
Game_Action.prototype.itemHit=function(target)
	{
	if(this.isPhysical())
		{
		return this.item().successRate*0.01*this.subject().hit
	}
	else
		{
		return this.item().successRate*0.01
	}
};
Game_Action.prototype.itemEva=function(target)
	{
	if(this.isPhysical())
		{
		return target.eva
	}
	else if(this.isMagical())
		{
		return target.mev
	}
	else
		{
		return 0
	}
};
Game_Action.prototype.itemCri=function(target)
	{
	return this.item().damage.critical?this.subject().cri*(1-target.cev):0
};
Game_Action.prototype.apply=function(target)
	{
	var result=target.result();
	this.subject().clearResult();
	result.clear();
	result.used=this.testApply(target);
	result.missed=(result.used&&Math.random()>=this.itemHit(target));
	result.evaded=(!result.missed&&Math.random()<this.itemEva(target));
	result.physical=this.isPhysical();
	result.drain=this.isDrain();
	if(result.isHit())
		{
		if(this.item().damage.type>0)
			{
			result.critical=(Math.random()<this.itemCri(target));
			var value=this.makeDamageValue(target,result.critical);
			this.executeDamage(target,value)
		}
		this.item().effects.forEach(function(effect)
			{
			this.applyItemEffect(target,effect)
		}
		,this);
		this.applyItemUserEffect(target)
	}
};
Game_Action.prototype.makeDamageValue=function(target,critical)
	{
	var item=this.item();
	var baseValue=this.evalDamageFormula(target);
	var value=baseValue*this.calcElementRate(target);
	if(this.isPhysical())
		{
		value*=target.pdr
	}
	if(this.isMagical())
		{
		value*=target.mdr
	}
	if(baseValue<0)
		{
		value*=target.rec
	}
	if(critical)
		{
		value=this.applyCritical(value)
	}
	value=this.applyVariance(value,item.damage.variance);
	value=this.applyGuard(value,target);
	value=Math.round(value);
	return value
};
Game_Action.prototype.evalDamageFormula=function(target)
	{
	try
		{
		var item=this.item();
		var a=this.subject();
		var b=target;
		var v=$gameVariables._data;
		var sign=([3,4].contains(item.damage.type)?-1:1);
		return Math.max(eval(item.damage.formula),0)*sign
	}
	catch(e)
		{
		return 0
	}
};
Game_Action.prototype.calcElementRate=function(target)
	{
	if(this.item().damage.elementId<0)
		{
		return this.elementsMaxRate(target,this.subject().attackElements())
	}
	else
		{
		return target.elementRate(this.item().damage.elementId)
	}
};
Game_Action.prototype.elementsMaxRate=function(target,elements)
	{
	if(elements.length>0)
		{
		return Math.max.apply(null,elements.map(function(elementId)
			{
			return target.elementRate(elementId)
		}
		,this))
	}
	else
		{
		return 1
	}
};
Game_Action.prototype.applyCritical=function(damage)
	{
	return damage*3
};
Game_Action.prototype.applyVariance=function(damage,variance)
	{
	var amp=Math.floor(Math.max(Math.abs(damage)*variance/100,0));
	var v=Math.randomInt(amp+1)+Math.randomInt(amp+1)-amp;
	return damage>=0?damage+v:damage-v
};
Game_Action.prototype.applyGuard=function(damage,target)
	{
	return damage/(damage>0&&target.isGuard()?2*target.grd:1)
};
Game_Action.prototype.executeDamage=function(target,value)
	{
	var result=target.result();
	if(value===0)
		{
		result.critical=false
	}
	if(this.isHpEffect())
		{
		this.executeHpDamage(target,value)
	}
	if(this.isMpEffect())
		{
		this.executeMpDamage(target,value)
	}
};
Game_Action.prototype.executeHpDamage=function(target,value)
	{
	if(this.isDrain())
		{
		value=Math.min(target.hp,value)
	}
	this.makeSuccess(target);
	target.gainHp(-value);
	if(value>0)
		{
		target.onDamage(value)
	}
	this.gainDrainedHp(value)
};
Game_Action.prototype.executeMpDamage=function(target,value)
	{
	if(!this.isMpRecover())
		{
		value=Math.min(target.mp,value)
	}
	if(value!==0)
		{
		this.makeSuccess(target)
	}
	target.gainMp(-value);
	this.gainDrainedMp(value)
};
Game_Action.prototype.gainDrainedHp=function(value)
	{
	if(this.isDrain())
		{
		this.subject().gainHp(value)
	}
};
Game_Action.prototype.gainDrainedMp=function(value)
	{
	if(this.isDrain())
		{
		this.subject().gainMp(value)
	}
};
Game_Action.prototype.applyItemEffect=function(target,effect)
	{
	switch(effect.code)
		{
		case Game_Action.EFFECT_RECOVER_HP:this.itemEffectRecoverHp(target,effect);
		break;
		case Game_Action.EFFECT_RECOVER_MP:this.itemEffectRecoverMp(target,effect);
		break;
		case Game_Action.EFFECT_GAIN_TP:this.itemEffectGainTp(target,effect);
		break;
		case Game_Action.EFFECT_ADD_STATE:this.itemEffectAddState(target,effect);
		break;
		case Game_Action.EFFECT_REMOVE_STATE:this.itemEffectRemoveState(target,effect);
		break;
		case Game_Action.EFFECT_ADD_BUFF:this.itemEffectAddBuff(target,effect);
		break;
		case Game_Action.EFFECT_ADD_DEBUFF:this.itemEffectAddDebuff(target,effect);
		break;
		case Game_Action.EFFECT_REMOVE_BUFF:this.itemEffectRemoveBuff(target,effect);
		break;
		case Game_Action.EFFECT_REMOVE_DEBUFF:this.itemEffectRemoveDebuff(target,effect);
		break;
		case Game_Action.EFFECT_SPECIAL:this.itemEffectSpecial(target,effect);
		break;
		case Game_Action.EFFECT_GROW:this.itemEffectGrow(target,effect);
		break;
		case Game_Action.EFFECT_LEARN_SKILL:this.itemEffectLearnSkill(target,effect);
		break;
		case Game_Action.EFFECT_COMMON_EVENT:this.itemEffectCommonEvent(target,effect);
		break
	}
};
Game_Action.prototype.itemEffectRecoverHp=function(target,effect)
	{
	var value=(target.mhp*effect.value1+effect.value2)*target.rec;
	if(this.isItem())
		{
		value*=this.subject().pha
	}
	value=Math.floor(value);
	if(value!==0)
		{
		target.gainHp(value);
		this.makeSuccess(target)
	}
};
Game_Action.prototype.itemEffectRecoverMp=function(target,effect)
	{
	var value=(target.mmp*effect.value1+effect.value2)*target.rec;
	if(this.isItem())
		{
		value*=this.subject().pha
	}
	value=Math.floor(value);
	if(value!==0)
		{
		target.gainMp(value);
		this.makeSuccess(target)
	}
};
Game_Action.prototype.itemEffectGainTp=function(target,effect)
	{
	var value=Math.floor(effect.value1);
	if(value!==0)
		{
		target.gainTp(value);
		this.makeSuccess(target)
	}
};
Game_Action.prototype.itemEffectAddState=function(target,effect)
	{
	if(effect.dataId===0)
		{
		this.itemEffectAddAttackState(target,effect)
	}
	else
		{
		this.itemEffectAddNormalState(target,effect)
	}
};
Game_Action.prototype.itemEffectAddAttackState=function(target,effect)
	{
	this.subject().attackStates().forEach(function(stateId)
		{
		var chance=effect.value1;
		chance*=target.stateRate(stateId);
		chance*=this.subject().attackStatesRate(stateId);
		chance*=this.lukEffectRate(target);
		if(Math.random()<chance)
			{
			target.addState(stateId);
			this.makeSuccess(target)
		}
	}
	.bind(this),target)
};
Game_Action.prototype.itemEffectAddNormalState=function(target,effect)
	{
	var chance=effect.value1;
	if(!this.isCertainHit())
		{
		chance*=target.stateRate(effect.dataId);
		chance*=this.lukEffectRate(target)
	}
	if(Math.random()<chance)
		{
		target.addState(effect.dataId);
		this.makeSuccess(target)
	}
};
Game_Action.prototype.itemEffectRemoveState=function(target,effect)
	{
	var chance=effect.value1;
	if(Math.random()<chance)
		{
		target.removeState(effect.dataId);
		this.makeSuccess(target)
	}
};
Game_Action.prototype.itemEffectAddBuff=function(target,effect)
	{
	target.addBuff(effect.dataId,effect.value1);
	this.makeSuccess(target)
};
Game_Action.prototype.itemEffectAddDebuff=function(target,effect)
	{
	var chance=target.debuffRate(effect.dataId)*this.lukEffectRate(target);
	if(Math.random()<chance)
		{
		target.addDebuff(effect.dataId,effect.value1);
		this.makeSuccess(target)
	}
};
Game_Action.prototype.itemEffectRemoveBuff=function(target,effect)
	{
	if(target.isBuffAffected(effect.dataId))
		{
		target.removeBuff(effect.dataId);
		this.makeSuccess(target)
	}
};
Game_Action.prototype.itemEffectRemoveDebuff=function(target,effect)
	{
	if(target.isDebuffAffected(effect.dataId))
		{
		target.removeBuff(effect.dataId);
		this.makeSuccess(target)
	}
};
Game_Action.prototype.itemEffectSpecial=function(target,effect)
	{
	if(effect.dataId===Game_Action.SPECIAL_EFFECT_ESCAPE)
		{
		target.escape();
		this.makeSuccess(target)
	}
};
Game_Action.prototype.itemEffectGrow=function(target,effect)
	{
	target.addParam(effect.dataId,Math.floor(effect.value1));
	this.makeSuccess(target)
};
Game_Action.prototype.itemEffectLearnSkill=function(target,effect)
	{
	if(target.isActor())
		{
		target.learnSkill(effect.dataId);
		this.makeSuccess(target)
	}
};
Game_Action.prototype.itemEffectCommonEvent=function(target,effect)
	{
};
Game_Action.prototype.makeSuccess=function(target)
	{
	target.result().success=true
};
Game_Action.prototype.applyItemUserEffect=function(target)
	{
	var value=Math.floor(this.item().tpGain*this.subject().tcr);
	this.subject().gainSilentTp(value)
};
Game_Action.prototype.lukEffectRate=function(target)
	{
	return Math.max(1.0+(this.subject().luk-target.luk)*0.001,0.0)
};
Game_Action.prototype.applyGlobal=function()
	{
	this.item().effects.forEach(function(effect)
		{
		if(effect.code===Game_Action.EFFECT_COMMON_EVENT)
			{
			$gameTemp.reserveCommonEvent(effect.dataId)
		}
	}
	,this)
};
function Game_ActionResult()
	{
	this.initialize.apply(this,arguments)
}
Game_ActionResult.prototype.initialize=function()
	{
	this.clear()
};
Game_ActionResult.prototype.clear=function()
	{
	this.used=false;
	this.missed=false;
	this.evaded=false;
	this.physical=false;
	this.drain=false;
	this.critical=false;
	this.success=false;
	this.hpAffected=false;
	this.hpDamage=0;
	this.mpDamage=0;
	this.tpDamage=0;
	this.addedStates=[];
	this.removedStates=[];
	this.addedBuffs=[];
	this.addedDebuffs=[];
	this.removedBuffs=[]
};
Game_ActionResult.prototype.addedStateObjects=function()
	{
	return this.addedStates.map(function(id)
		{
		return $dataStates[id]
	}
	)
};
Game_ActionResult.prototype.removedStateObjects=function()
	{
	return this.removedStates.map(function(id)
		{
		return $dataStates[id]
	}
	)
};
Game_ActionResult.prototype.isStatusAffected=function()
	{
	return(this.addedStates.length>0||this.removedStates.length>0||this.addedBuffs.length>0||this.addedDebuffs.length>0||this.removedBuffs.length>0)
};
Game_ActionResult.prototype.isHit=function()
	{
	return this.used&&!this.missed&&!this.evaded
};
Game_ActionResult.prototype.isStateAdded=function(stateId)
	{
	return this.addedStates.contains(stateId)
};
Game_ActionResult.prototype.pushAddedState=function(stateId)
	{
	if(!this.isStateAdded(stateId))
		{
		this.addedStates.push(stateId)
	}
};
Game_ActionResult.prototype.isStateRemoved=function(stateId)
	{
	return this.removedStates.contains(stateId)
};
Game_ActionResult.prototype.pushRemovedState=function(stateId)
	{
	if(!this.isStateRemoved(stateId))
		{
		this.removedStates.push(stateId)
	}
};
Game_ActionResult.prototype.isBuffAdded=function(paramId)
	{
	return this.addedBuffs.contains(paramId)
};
Game_ActionResult.prototype.pushAddedBuff=function(paramId)
	{
	if(!this.isBuffAdded(paramId))
		{
		this.addedBuffs.push(paramId)
	}
};
Game_ActionResult.prototype.isDebuffAdded=function(paramId)
	{
	return this.addedDebuffs.contains(paramId)
};
Game_ActionResult.prototype.pushAddedDebuff=function(paramId)
	{
	if(!this.isDebuffAdded(paramId))
		{
		this.addedDebuffs.push(paramId)
	}
};
Game_ActionResult.prototype.isBuffRemoved=function(paramId)
	{
	return this.removedBuffs.contains(paramId)
};
Game_ActionResult.prototype.pushRemovedBuff=function(paramId)
	{
	if(!this.isBuffRemoved(paramId))
		{
		this.removedBuffs.push(paramId)
	}
};
function Game_BattlerBase()
	{
	this.initialize.apply(this,arguments)
}
Game_BattlerBase.TRAIT_ELEMENT_RATE=11;
Game_BattlerBase.TRAIT_DEBUFF_RATE=12;
Game_BattlerBase.TRAIT_STATE_RATE=13;
Game_BattlerBase.TRAIT_STATE_RESIST=14;
Game_BattlerBase.TRAIT_PARAM=21;
Game_BattlerBase.TRAIT_XPARAM=22;
Game_BattlerBase.TRAIT_SPARAM=23;
Game_BattlerBase.TRAIT_ATTACK_ELEMENT=31;
Game_BattlerBase.TRAIT_ATTACK_STATE=32;
Game_BattlerBase.TRAIT_ATTACK_SPEED=33;
Game_BattlerBase.TRAIT_ATTACK_TIMES=34;
Game_BattlerBase.TRAIT_STYPE_ADD=41;
Game_BattlerBase.TRAIT_STYPE_SEAL=42;
Game_BattlerBase.TRAIT_SKILL_ADD=43;
Game_BattlerBase.TRAIT_SKILL_SEAL=44;
Game_BattlerBase.TRAIT_EQUIP_WTYPE=51;
Game_BattlerBase.TRAIT_EQUIP_ATYPE=52;
Game_BattlerBase.TRAIT_EQUIP_LOCK=53;
Game_BattlerBase.TRAIT_EQUIP_SEAL=54;
Game_BattlerBase.TRAIT_SLOT_TYPE=55;
Game_BattlerBase.TRAIT_ACTION_PLUS=61;
Game_BattlerBase.TRAIT_SPECIAL_FLAG=62;
Game_BattlerBase.TRAIT_COLLAPSE_TYPE=63;
Game_BattlerBase.TRAIT_PARTY_ABILITY=64;
Game_BattlerBase.FLAG_ID_AUTO_BATTLE=0;
Game_BattlerBase.FLAG_ID_GUARD=1;
Game_BattlerBase.FLAG_ID_SUBSTITUTE=2;
Game_BattlerBase.FLAG_ID_PRESERVE_TP=3;
Game_BattlerBase.ICON_BUFF_START=32;
Game_BattlerBase.ICON_DEBUFF_START=48;
Object.defineProperties(Game_BattlerBase.prototype,
	{
	hp:
		{
		get:function()
			{
			return this._hp
		}
		,configurable:true
	}
	,mp:
		{
		get:function()
			{
			return this._mp
		}
		,configurable:true
	}
	,tp:
		{
		get:function()
			{
			return this._tp
		}
		,configurable:true
	}
	,mhp:
		{
		get:function()
			{
			return this.param(0)
		}
		,configurable:true
	}
	,mmp:
		{
		get:function()
			{
			return this.param(1)
		}
		,configurable:true
	}
	,atk:
		{
		get:function()
			{
			return this.param(2)
		}
		,configurable:true
	}
	,def:
		{
		get:function()
			{
			return this.param(3)
		}
		,configurable:true
	}
	,mat:
		{
		get:function()
			{
			return this.param(4)
		}
		,configurable:true
	}
	,mdf:
		{
		get:function()
			{
			return this.param(5)
		}
		,configurable:true
	}
	,agi:
		{
		get:function()
			{
			return this.param(6)
		}
		,configurable:true
	}
	,luk:
		{
		get:function()
			{
			return this.param(7)
		}
		,configurable:true
	}
	,hit:
		{
		get:function()
			{
			return this.xparam(0)
		}
		,configurable:true
	}
	,eva:
		{
		get:function()
			{
			return this.xparam(1)
		}
		,configurable:true
	}
	,cri:
		{
		get:function()
			{
			return this.xparam(2)
		}
		,configurable:true
	}
	,cev:
		{
		get:function()
			{
			return this.xparam(3)
		}
		,configurable:true
	}
	,mev:
		{
		get:function()
			{
			return this.xparam(4)
		}
		,configurable:true
	}
	,mrf:
		{
		get:function()
			{
			return this.xparam(5)
		}
		,configurable:true
	}
	,cnt:
		{
		get:function()
			{
			return this.xparam(6)
		}
		,configurable:true
	}
	,hrg:
		{
		get:function()
			{
			return this.xparam(7)
		}
		,configurable:true
	}
	,mrg:
		{
		get:function()
			{
			return this.xparam(8)
		}
		,configurable:true
	}
	,trg:
		{
		get:function()
			{
			return this.xparam(9)
		}
		,configurable:true
	}
	,tgr:
		{
		get:function()
			{
			return this.sparam(0)
		}
		,configurable:true
	}
	,grd:
		{
		get:function()
			{
			return this.sparam(1)
		}
		,configurable:true
	}
	,rec:
		{
		get:function()
			{
			return this.sparam(2)
		}
		,configurable:true
	}
	,pha:
		{
		get:function()
			{
			return this.sparam(3)
		}
		,configurable:true
	}
	,mcr:
		{
		get:function()
			{
			return this.sparam(4)
		}
		,configurable:true
	}
	,tcr:
		{
		get:function()
			{
			return this.sparam(5)
		}
		,configurable:true
	}
	,pdr:
		{
		get:function()
			{
			return this.sparam(6)
		}
		,configurable:true
	}
	,mdr:
		{
		get:function()
			{
			return this.sparam(7)
		}
		,configurable:true
	}
	,fdr:
		{
		get:function()
			{
			return this.sparam(8)
		}
		,configurable:true
	}
	,exr:
		{
		get:function()
			{
			return this.sparam(9)
		}
		,configurable:true
	}
}
);
Game_BattlerBase.prototype.initialize=function()
	{
	this.initMembers()
};
Game_BattlerBase.prototype.initMembers=function()
	{
	this._hp=1;
	this._mp=0;
	this._tp=0;
	this._hidden=false;
	this.clearParamPlus();
	this.clearStates();
	this.clearBuffs()
};
Game_BattlerBase.prototype.clearParamPlus=function()
	{
	this._paramPlus=[0,0,0,0,0,0,0,0]
};
Game_BattlerBase.prototype.clearStates=function()
	{
	this._states=[];
	this._stateTurns=
		{
	}
};
Game_BattlerBase.prototype.eraseState=function(stateId)
	{
	var index=this._states.indexOf(stateId);
	if(index>=0)
		{
		this._states.splice(index,1)
	}
	delete this._stateTurns[stateId]
};
Game_BattlerBase.prototype.isStateAffected=function(stateId)
	{
	return this._states.contains(stateId)
};
Game_BattlerBase.prototype.isDeathStateAffected=function()
	{
	return this.isStateAffected(this.deathStateId())
};
Game_BattlerBase.prototype.deathStateId=function()
	{
	return 1
};
Game_BattlerBase.prototype.resetStateCounts=function(stateId)
	{
	var state=$dataStates[stateId];
	var variance=1+Math.max(state.maxTurns-state.minTurns,0);
	this._stateTurns[stateId]=state.minTurns+Math.randomInt(variance)
};
Game_BattlerBase.prototype.isStateExpired=function(stateId)
	{
	return this._stateTurns[stateId]===0
};
Game_BattlerBase.prototype.updateStateTurns=function()
	{
	this._states.forEach(function(stateId)
		{
		if(this._stateTurns[stateId]>0)
			{
			this._stateTurns[stateId]--
		}
	}
	,this)
};
Game_BattlerBase.prototype.clearBuffs=function()
	{
	this._buffs=[0,0,0,0,0,0,0,0];
	this._buffTurns=[0,0,0,0,0,0,0,0]
};
Game_BattlerBase.prototype.eraseBuff=function(paramId)
	{
	this._buffs[paramId]=0;
	this._buffTurns[paramId]=0
};
Game_BattlerBase.prototype.buffLength=function()
	{
	return this._buffs.length
};
Game_BattlerBase.prototype.buff=function(paramId)
	{
	return this._buffs[paramId]
};
Game_BattlerBase.prototype.isBuffAffected=function(paramId)
	{
	return this._buffs[paramId]>0
};
Game_BattlerBase.prototype.isDebuffAffected=function(paramId)
	{
	return this._buffs[paramId]<0
};
Game_BattlerBase.prototype.isBuffOrDebuffAffected=function(paramId)
	{
	return this._buffs[paramId]!==0
};
Game_BattlerBase.prototype.isMaxBuffAffected=function(paramId)
	{
	return this._buffs[paramId]===2
};
Game_BattlerBase.prototype.isMaxDebuffAffected=function(paramId)
	{
	return this._buffs[paramId]===-2
};
Game_BattlerBase.prototype.increaseBuff=function(paramId)
	{
	if(!this.isMaxBuffAffected(paramId))
		{
		this._buffs[paramId]++
	}
};
Game_BattlerBase.prototype.decreaseBuff=function(paramId)
	{
	if(!this.isMaxDebuffAffected(paramId))
		{
		this._buffs[paramId]--
	}
};
Game_BattlerBase.prototype.overwriteBuffTurns=function(paramId,turns)
	{
	if(this._buffTurns[paramId]<turns)
		{
		this._buffTurns[paramId]=turns
	}
};
Game_BattlerBase.prototype.isBuffExpired=function(paramId)
	{
	return this._buffTurns[paramId]===0
};
Game_BattlerBase.prototype.updateBuffTurns=function()
	{
	for(var i=0;
	i<this._buffTurns.length;
	i++)
		{
		if(this._buffTurns[i]>0)
			{
			this._buffTurns[i]--
		}
	}
};
Game_BattlerBase.prototype.die=function()
	{
	this._hp=0;
	this.clearStates();
	this.clearBuffs()
};
Game_BattlerBase.prototype.revive=function()
	{
	if(this._hp===0)
		{
		this._hp=1
	}
};
Game_BattlerBase.prototype.states=function()
	{
	return this._states.map(function(id)
		{
		return $dataStates[id]
	}
	)
};
Game_BattlerBase.prototype.stateIcons=function()
	{
	return this.states().map(function(state)
		{
		return state.iconIndex
	}
	).filter(function(iconIndex)
		{
		return iconIndex>0
	}
	)
};
Game_BattlerBase.prototype.buffIcons=function()
	{
	var icons=[];
	for(var i=0;
	i<this._buffs.length;
	i++)
		{
		if(this._buffs[i]!==0)
			{
			icons.push(this.buffIconIndex(this._buffs[i],i))
		}
	}
	return icons
};
Game_BattlerBase.prototype.buffIconIndex=function(buffLevel,paramId)
	{
	if(buffLevel>0)
		{
		return Game_BattlerBase.ICON_BUFF_START+(buffLevel-1)*8+paramId
	}
	else if(buffLevel<0)
		{
		return Game_BattlerBase.ICON_DEBUFF_START+(-buffLevel-1)*8+paramId
	}
	else
		{
		return 0
	}
};
Game_BattlerBase.prototype.allIcons=function()
	{
	return this.stateIcons().concat(this.buffIcons())
};
Game_BattlerBase.prototype.traitObjects=function()
	{
	return this.states()
};
Game_BattlerBase.prototype.allTraits=function()
	{
	return this.traitObjects().reduce(function(r,obj)
		{
		return r.concat(obj.traits)
	}
	,[])
};
Game_BattlerBase.prototype.traits=function(code)
	{
	return this.allTraits().filter(function(trait)
		{
		return trait.code===code
	}
	)
};
Game_BattlerBase.prototype.traitsWithId=function(code,id)
	{
	return this.allTraits().filter(function(trait)
		{
		return trait.code===code&&trait.dataId===id
	}
	)
};
Game_BattlerBase.prototype.traitsPi=function(code,id)
	{
	return this.traitsWithId(code,id).reduce(function(r,trait)
		{
		return r*trait.value
	}
	,1)
};
Game_BattlerBase.prototype.traitsSum=function(code,id)
	{
	return this.traitsWithId(code,id).reduce(function(r,trait)
		{
		return r+trait.value
	}
	,0)
};
Game_BattlerBase.prototype.traitsSumAll=function(code)
	{
	return this.traits(code).reduce(function(r,trait)
		{
		return r+trait.value
	}
	,0)
};
Game_BattlerBase.prototype.traitsSet=function(code)
	{
	return this.traits(code).reduce(function(r,trait)
		{
		return r.concat(trait.dataId)
	}
	,[])
};
Game_BattlerBase.prototype.paramBase=function(paramId)
	{
	return 0
};
Game_BattlerBase.prototype.paramPlus=function(paramId)
	{
	return this._paramPlus[paramId]
};
Game_BattlerBase.prototype.paramMin=function(paramId)
	{
	if(paramId===1)
		{
		return 0
	}
	else
		{
		return 1
	}
};
Game_BattlerBase.prototype.paramMax=function(paramId)
	{
	if(paramId===0)
		{
		return 999999
	}
	else if(paramId===1)
		{
		return 9999
	}
	else
		{
		return 999
	}
};
Game_BattlerBase.prototype.paramRate=function(paramId)
	{
	return this.traitsPi(Game_BattlerBase.TRAIT_PARAM,paramId)
};
Game_BattlerBase.prototype.paramBuffRate=function(paramId)
	{
	return this._buffs[paramId]*0.25+1.0
};
Game_BattlerBase.prototype.param=function(paramId)
	{
	var value=this.paramBase(paramId)+this.paramPlus(paramId);
	value*=this.paramRate(paramId)*this.paramBuffRate(paramId);
	var maxValue=this.paramMax(paramId);
	var minValue=this.paramMin(paramId);
	return Math.round(value.clamp(minValue,maxValue))
};
Game_BattlerBase.prototype.xparam=function(xparamId)
	{
	return this.traitsSum(Game_BattlerBase.TRAIT_XPARAM,xparamId)
};
Game_BattlerBase.prototype.sparam=function(sparamId)
	{
	return this.traitsPi(Game_BattlerBase.TRAIT_SPARAM,sparamId)
};
Game_BattlerBase.prototype.elementRate=function(elementId)
	{
	return this.traitsPi(Game_BattlerBase.TRAIT_ELEMENT_RATE,elementId)
};
Game_BattlerBase.prototype.debuffRate=function(paramId)
	{
	return this.traitsPi(Game_BattlerBase.TRAIT_DEBUFF_RATE,paramId)
};
Game_BattlerBase.prototype.stateRate=function(stateId)
	{
	return this.traitsPi(Game_BattlerBase.TRAIT_STATE_RATE,stateId)
};
Game_BattlerBase.prototype.stateResistSet=function()
	{
	return this.traitsSet(Game_BattlerBase.TRAIT_STATE_RESIST)
};
Game_BattlerBase.prototype.isStateResist=function(stateId)
	{
	return this.stateResistSet().contains(stateId)
};
Game_BattlerBase.prototype.attackElements=function()
	{
	return this.traitsSet(Game_BattlerBase.TRAIT_ATTACK_ELEMENT)
};
Game_BattlerBase.prototype.attackStates=function()
	{
	return this.traitsSet(Game_BattlerBase.TRAIT_ATTACK_STATE)
};
Game_BattlerBase.prototype.attackStatesRate=function(stateId)
	{
	return this.traitsSum(Game_BattlerBase.TRAIT_ATTACK_STATE,stateId)
};
Game_BattlerBase.prototype.attackSpeed=function()
	{
	return this.traitsSumAll(Game_BattlerBase.TRAIT_ATTACK_SPEED)
};
Game_BattlerBase.prototype.attackTimesAdd=function()
	{
	return Math.max(this.traitsSumAll(Game_BattlerBase.TRAIT_ATTACK_TIMES),0)
};
Game_BattlerBase.prototype.addedSkillTypes=function()
	{
	return this.traitsSet(Game_BattlerBase.TRAIT_STYPE_ADD)
};
Game_BattlerBase.prototype.isSkillTypeSealed=function(stypeId)
	{
	return this.traitsSet(Game_BattlerBase.TRAIT_STYPE_SEAL).contains(stypeId)
};
Game_BattlerBase.prototype.addedSkills=function()
	{
	return this.traitsSet(Game_BattlerBase.TRAIT_SKILL_ADD)
};
Game_BattlerBase.prototype.isSkillSealed=function(skillId)
	{
	return this.traitsSet(Game_BattlerBase.TRAIT_SKILL_SEAL).contains(skillId)
};
Game_BattlerBase.prototype.isEquipWtypeOk=function(wtypeId)
	{
	return this.traitsSet(Game_BattlerBase.TRAIT_EQUIP_WTYPE).contains(wtypeId)
};
Game_BattlerBase.prototype.isEquipAtypeOk=function(atypeId)
	{
	return this.traitsSet(Game_BattlerBase.TRAIT_EQUIP_ATYPE).contains(atypeId)
};
Game_BattlerBase.prototype.isEquipTypeLocked=function(etypeId)
	{
	return this.traitsSet(Game_BattlerBase.TRAIT_EQUIP_LOCK).contains(etypeId)
};
Game_BattlerBase.prototype.isEquipTypeSealed=function(etypeId)
	{
	return this.traitsSet(Game_BattlerBase.TRAIT_EQUIP_SEAL).contains(etypeId)
};
Game_BattlerBase.prototype.slotType=function()
	{
	var set=this.traitsSet(Game_BattlerBase.TRAIT_SLOT_TYPE);
	return set.length>0?Math.max.apply(null,set):0
};
Game_BattlerBase.prototype.isDualWield=function()
	{
	return this.slotType()===1
};
Game_BattlerBase.prototype.actionPlusSet=function()
	{
	return this.traits(Game_BattlerBase.TRAIT_ACTION_PLUS).map(function(trait)
		{
		return trait.value
	}
	)
};
Game_BattlerBase.prototype.specialFlag=function(flagId)
	{
	return this.traits(Game_BattlerBase.TRAIT_SPECIAL_FLAG).some(function(trait)
		{
		return trait.dataId===flagId
	}
	)
};
Game_BattlerBase.prototype.collapseType=function()
	{
	var set=this.traitsSet(Game_BattlerBase.TRAIT_COLLAPSE_TYPE);
	return set.length>0?Math.max.apply(null,set):0
};
Game_BattlerBase.prototype.partyAbility=function(abilityId)
	{
	return this.traits(Game_BattlerBase.TRAIT_PARTY_ABILITY).some(function(trait)
		{
		return trait.dataId===abilityId
	}
	)
};
Game_BattlerBase.prototype.isAutoBattle=function()
	{
	return this.specialFlag(Game_BattlerBase.FLAG_ID_AUTO_BATTLE)
};
Game_BattlerBase.prototype.isGuard=function()
	{
	return this.specialFlag(Game_BattlerBase.FLAG_ID_GUARD)&&this.canMove()
};
Game_BattlerBase.prototype.isSubstitute=function()
	{
	return this.specialFlag(Game_BattlerBase.FLAG_ID_SUBSTITUTE)&&this.canMove()
};
Game_BattlerBase.prototype.isPreserveTp=function()
	{
	return this.specialFlag(Game_BattlerBase.FLAG_ID_PRESERVE_TP)
};
Game_BattlerBase.prototype.addParam=function(paramId,value)
	{
	this._paramPlus[paramId]+=value;
	this.refresh()
};
Game_BattlerBase.prototype.setHp=function(hp)
	{
	this._hp=hp;
	this.refresh()
};
Game_BattlerBase.prototype.setMp=function(mp)
	{
	this._mp=mp;
	this.refresh()
};
Game_BattlerBase.prototype.setTp=function(tp)
	{
	this._tp=tp;
	this.refresh()
};
Game_BattlerBase.prototype.maxTp=function()
	{
	return 100
};
Game_BattlerBase.prototype.refresh=function()
	{
	this.stateResistSet().forEach(function(stateId)
		{
		this.eraseState(stateId)
	}
	,this);
	this._hp=this._hp.clamp(0,this.mhp);
	this._mp=this._mp.clamp(0,this.mmp);
	this._tp=this._tp.clamp(0,this.maxTp())
};
Game_BattlerBase.prototype.recoverAll=function()
	{
	this.clearStates();
	this._hp=this.mhp;
	this._mp=this.mmp
};
Game_BattlerBase.prototype.hpRate=function()
	{
	return this.hp/this.mhp
};
Game_BattlerBase.prototype.mpRate=function()
	{
	return this.mmp>0?this.mp/this.mmp:0
};
Game_BattlerBase.prototype.tpRate=function()
	{
	return this.tp/100
};
Game_BattlerBase.prototype.hide=function()
	{
	this._hidden=true
};
Game_BattlerBase.prototype.appear=function()
	{
	this._hidden=false
};
Game_BattlerBase.prototype.isHidden=function()
	{
	return this._hidden
};
Game_BattlerBase.prototype.isAppeared=function()
	{
	return!this.isHidden()
};
Game_BattlerBase.prototype.isDead=function()
	{
	return this.isAppeared()&&this.isDeathStateAffected()
};
Game_BattlerBase.prototype.isAlive=function()
	{
	return this.isAppeared()&&!this.isDeathStateAffected()
};
Game_BattlerBase.prototype.isDying=function()
	{
	return this.isAlive()&&this._hp<this.mhp/4
};
Game_BattlerBase.prototype.isRestricted=function()
	{
	return this.isAppeared()&&this.restriction()>0
};
Game_BattlerBase.prototype.canInput=function()
	{
	return this.isAppeared()&&!this.isRestricted()&&!this.isAutoBattle()
};
Game_BattlerBase.prototype.canMove=function()
	{
	return this.isAppeared()&&this.restriction()<4
};
Game_BattlerBase.prototype.isConfused=function()
	{
	return this.isAppeared()&&this.restriction()>=1&&this.restriction()<=3
};
Game_BattlerBase.prototype.confusionLevel=function()
	{
	return this.isConfused()?this.restriction():0
};
Game_BattlerBase.prototype.isActor=function()
	{
	return false
};
Game_BattlerBase.prototype.isEnemy=function()
	{
	return false
};
Game_BattlerBase.prototype.sortStates=function()
	{
	this._states.sort(function(a,
		{
		var p1=$dataStates[a].priority;
		var p2=$dataStates[b].priority;
		if(p1!==p2)
			{
			return p2-p1
		}
		return a-b
	}
	)
};
Game_BattlerBase.prototype.restriction=function()
	{
	return Math.max.apply(null,this.states().map(function(state)
		{
		return state.restriction
	}
	).concat(0))
};
Game_BattlerBase.prototype.addNewState=function(stateId)
	{
	if(stateId===this.deathStateId())
		{
		this.die()
	}
	var restricted=this.isRestricted();
	this._states.push(stateId);
	this.sortStates();
	if(!restricted&&this.isRestricted())
		{
		this.onRestrict()
	}
};
Game_BattlerBase.prototype.onRestrict=function()
	{
};
Game_BattlerBase.prototype.mostImportantStateText=function()
	{
	var states=this.states();
	for(var i=0;
	i<states.length;
	i++)
		{
		if(states[i].message3)
			{
			return states[i].message3
		}
	}
	return''
};
Game_BattlerBase.prototype.stateMotionIndex=function()
	{
	var states=this.states();
	if(states.length>0)
		{
		return states[0].motion
	}
	else
		{
		return 0
	}
};
Game_BattlerBase.prototype.stateOverlayIndex=function()
	{
	var states=this.states();
	if(states.length>0)
		{
		return states[0].overlay
	}
	else
		{
		return 0
	}
};
Game_BattlerBase.prototype.isSkillWtypeOk=function(skill)
	{
	return true
};
Game_BattlerBase.prototype.skillMpCost=function(skill)
	{
	return Math.floor(skill.mpCost*this.mcr)
};
Game_BattlerBase.prototype.skillTpCost=function(skill)
	{
	return skill.tpCost
};
Game_BattlerBase.prototype.canPaySkillCost=function(skill)
	{
	return this._tp>=this.skillTpCost(skill)&&this._mp>=this.skillMpCost(skill)
};
Game_BattlerBase.prototype.paySkillCost=function(skill)
	{
	this._mp-=this.skillMpCost(skill);
	this._tp-=this.skillTpCost(skill)
};
Game_BattlerBase.prototype.isOccasionOk=function(item)
	{
	if($gameParty.inBattle())
		{
		return item.occasion===0||item.occasion===1
	}
	else
		{
		return item.occasion===0||item.occasion===2
	}
};
Game_BattlerBase.prototype.meetsUsableItemConditions=function(item)
	{
	return this.canMove()&&this.isOccasionOk(item)
};
Game_BattlerBase.prototype.meetsSkillConditions=function(skill)
	{
	return(this.meetsUsableItemConditions(skill)&&this.isSkillWtypeOk(skill)&&this.canPaySkillCost(skill)&&!this.isSkillSealed(skill.id)&&!this.isSkillTypeSealed(skill.stypeId))
};
Game_BattlerBase.prototype.meetsItemConditions=function(item)
	{
	return this.meetsUsableItemConditions(item)&&$gameParty.hasItem(item)
};
Game_BattlerBase.prototype.canUse=function(item)
	{
	if(!item)
		{
		return false
	}
	else if(DataManager.isSkill(item))
		{
		return this.meetsSkillConditions(item)
	}
	else if(DataManager.isItem(item))
		{
		return this.meetsItemConditions(item)
	}
	else
		{
		return false
	}
};
Game_BattlerBase.prototype.canEquip=function(item)
	{
	if(!item)
		{
		return false
	}
	else if(DataManager.isWeapon(item))
		{
		return this.canEquipWeapon(item)
	}
	else if(DataManager.isArmor(item))
		{
		return this.canEquipArmor(item)
	}
	else
		{
		return false
	}
};
Game_BattlerBase.prototype.canEquipWeapon=function(item)
	{
	return this.isEquipWtypeOk(item.wtypeId)&&!this.isEquipTypeSealed(item.etypeId)
};
Game_BattlerBase.prototype.canEquipArmor=function(item)
	{
	return this.isEquipAtypeOk(item.atypeId)&&!this.isEquipTypeSealed(item.etypeId)
};
Game_BattlerBase.prototype.attackSkillId=function()
	{
	return 1
};
Game_BattlerBase.prototype.guardSkillId=function()
	{
	return 2
};
Game_BattlerBase.prototype.canAttack=function()
	{
	return this.canUse($dataSkills[this.attackSkillId()])
};
Game_BattlerBase.prototype.canGuard=function()
	{
	return this.canUse($dataSkills[this.guardSkillId()])
};
function Game_Battler()
	{
	this.initialize.apply(this,arguments)
}
Game_Battler.prototype=Object.create(Game_BattlerBase.prototype);
Game_Battler.prototype.constructor=Game_Battler;
Game_Battler.prototype.initialize=function()
	{
	Game_BattlerBase.prototype.initialize.call(this)
};
Game_Battler.prototype.initMembers=function()
	{
	Game_BattlerBase.prototype.initMembers.call(this);
	this._actions=[];
	this._speed=0;
	this._result=new Game_ActionResult();
	this._actionState='';
	this._lastTargetIndex=0;
	this._animations=[];
	this._damagePopup=false;
	this._effectType=null;
	this._motionType=null;
	this._weaponImageId=0;
	this._motionRefresh=false;
	this._selected=false
};
Game_Battler.prototype.clearAnimations=function()
	{
	this._animations=[]
};
Game_Battler.prototype.clearDamagePopup=function()
	{
	this._damagePopup=false
};
Game_Battler.prototype.clearWeaponAnimation=function()
	{
	this._weaponImageId=0
};
Game_Battler.prototype.clearEffect=function()
	{
	this._effectType=null
};
Game_Battler.prototype.clearMotion=function()
	{
	this._motionType=null;
	this._motionRefresh=false
};
Game_Battler.prototype.requestEffect=function(effectType)
	{
	this._effectType=effectType
};
Game_Battler.prototype.requestMotion=function(motionType)
	{
	this._motionType=motionType
};
Game_Battler.prototype.requestMotionRefresh=function()
	{
	this._motionRefresh=true
};
Game_Battler.prototype.select=function()
	{
	this._selected=true
};
Game_Battler.prototype.deselect=function()
	{
	this._selected=false
};
Game_Battler.prototype.isAnimationRequested=function()
	{
	return this._animations.length>0
};
Game_Battler.prototype.isDamagePopupRequested=function()
	{
	return this._damagePopup
};
Game_Battler.prototype.isEffectRequested=function()
	{
	return!!this._effectType
};
Game_Battler.prototype.isMotionRequested=function()
	{
	return!!this._motionType
};
Game_Battler.prototype.isWeaponAnimationRequested=function()
	{
	return this._weaponImageId>0
};
Game_Battler.prototype.isMotionRefreshRequested=function()
	{
	return this._motionRefresh
};
Game_Battler.prototype.isSelected=function()
	{
	return this._selected
};
Game_Battler.prototype.effectType=function()
	{
	return this._effectType
};
Game_Battler.prototype.motionType=function()
	{
	return this._motionType
};
Game_Battler.prototype.weaponImageId=function()
	{
	return this._weaponImageId
};
Game_Battler.prototype.shiftAnimation=function()
	{
	return this._animations.shift()
};
Game_Battler.prototype.startAnimation=function(animationId,mirror,delay)
	{
	var data=
		{
		animationId:animationId,mirror:mirror,delay:delay
	};
	this._animations.push(data)
};
Game_Battler.prototype.startDamagePopup=function()
	{
	this._damagePopup=true
};
Game_Battler.prototype.startWeaponAnimation=function(weaponImageId)
	{
	this._weaponImageId=weaponImageId
};
Game_Battler.prototype.action=function(index)
	{
	return this._actions[index]
};
Game_Battler.prototype.setAction=function(index,action)
	{
	this._actions[index]=action
};
Game_Battler.prototype.numActions=function()
	{
	return this._actions.length
};
Game_Battler.prototype.clearActions=function()
	{
	this._actions=[]
};
Game_Battler.prototype.result=function()
	{
	return this._result
};
Game_Battler.prototype.clearResult=function()
	{
	this._result.clear()
};
Game_Battler.prototype.refresh=function()
	{
	Game_BattlerBase.prototype.refresh.call(this);
	if(this.hp===0)
		{
		this.addState(this.deathStateId())
	}
	else
		{
		this.removeState(this.deathStateId())
	}
};
Game_Battler.prototype.addState=function(stateId)
	{
	if(this.isStateAddable(stateId))
		{
		if(!this.isStateAffected(stateId))
			{
			this.addNewState(stateId);
			this.refresh()
		}
		this.resetStateCounts(stateId);
		this._result.pushAddedState(stateId)
	}
};
Game_Battler.prototype.isStateAddable=function(stateId)
	{
	return(this.isAlive()&&$dataStates[stateId]&&!this.isStateResist(stateId)&&!this._result.isStateRemoved(stateId)&&!this.isStateRestrict(stateId))
};
Game_Battler.prototype.isStateRestrict=function(stateId)
	{
	return $dataStates[stateId].removeByRestriction&&this.isRestricted()
};
Game_Battler.prototype.onRestrict=function()
	{
	Game_BattlerBase.prototype.onRestrict.call(this);
	this.clearActions();
	this.states().forEach(function(state)
		{
		if(state.removeByRestriction)
			{
			this.removeState(state.id)
		}
	}
	,this)
};
Game_Battler.prototype.removeState=function(stateId)
	{
	if(this.isStateAffected(stateId))
		{
		if(stateId===this.deathStateId())
			{
			this.revive()
		}
		this.eraseState(stateId);
		this.refresh();
		this._result.pushRemovedState(stateId)
	}
};
Game_Battler.prototype.escape=function()
	{
	if($gameParty.inBattle())
		{
		this.hide()
	}
	this.clearActions();
	this.clearStates();
	SoundManager.playEscape()
};
Game_Battler.prototype.addBuff=function(paramId,turns)
	{
	if(this.isAlive())
		{
		this.increaseBuff(paramId);
		if(this.isBuffAffected(paramId))
			{
			this.overwriteBuffTurns(paramId,turns)
		}
		this._result.pushAddedBuff(paramId);
		this.refresh()
	}
};
Game_Battler.prototype.addDebuff=function(paramId,turns)
	{
	if(this.isAlive())
		{
		this.decreaseBuff(paramId);
		if(this.isDebuffAffected(paramId))
			{
			this.overwriteBuffTurns(paramId,turns)
		}
		this._result.pushAddedDebuff(paramId);
		this.refresh()
	}
};
Game_Battler.prototype.removeBuff=function(paramId)
	{
	if(this.isAlive()&&this.isBuffOrDebuffAffected(paramId))
		{
		this.eraseBuff(paramId);
		this._result.pushRemovedBuff(paramId);
		this.refresh()
	}
};
Game_Battler.prototype.removeBattleStates=function()
	{
	this.states().forEach(function(state)
		{
		if(state.removeAtBattleEnd)
			{
			this.removeState(state.id)
		}
	}
	,this)
};
Game_Battler.prototype.removeAllBuffs=function()
	{
	for(var i=0;
	i<this.buffLength();
	i++)
		{
		this.removeBuff(i)
	}
};
Game_Battler.prototype.removeStatesAuto=function(timing)
	{
	this.states().forEach(function(state)
		{
		if(this.isStateExpired(state.id)&&state.autoRemovalTiming===timing)
			{
			this.removeState(state.id)
		}
	}
	,this)
};
Game_Battler.prototype.removeBuffsAuto=function()
	{
	for(var i=0;
	i<this.buffLength();
	i++)
		{
		if(this.isBuffExpired(i))
			{
			this.removeBuff(i)
		}
	}
};
Game_Battler.prototype.removeStatesByDamage=function()
	{
	this.states().forEach(function(state)
		{
		if(state.removeByDamage&&Math.randomInt(100)<state.chanceByDamage)
			{
			this.removeState(state.id)
		}
	}
	,this)
};
Game_Battler.prototype.makeActionTimes=function()
	{
	return this.actionPlusSet().reduce(function(r,p)
		{
		return Math.random()<p?r+1:r
	}
	,1)
};
Game_Battler.prototype.makeActions=function()
	{
	this.clearActions();
	if(this.canMove())
		{
		var actionTimes=this.makeActionTimes();
		this._actions=[];
		for(var i=0;
		i<actionTimes;
		i++)
			{
			this._actions.push(new Game_Action(this))
		}
	}
};
Game_Battler.prototype.speed=function()
	{
	return this._speed
};
Game_Battler.prototype.makeSpeed=function()
	{
	this._speed=Math.min.apply(null,this._actions.map(function(action)
		{
		return action.speed()
	}
	))||0
};
Game_Battler.prototype.currentAction=function()
	{
	return this._actions[0]
};
Game_Battler.prototype.removeCurrentAction=function()
	{
	this._actions.shift()
};
Game_Battler.prototype.setLastTarget=function(target)
	{
	if(target)
		{
		this._lastTargetIndex=target.index()
	}
	else
		{
		this._lastTargetIndex=0
	}
};
Game_Battler.prototype.forceAction=function(skillId,targetIndex)
	{
	this.clearActions();
	var action=new Game_Action(this,true);
	action.setSkill(skillId);
	if(targetIndex===-2)
		{
		action.setTarget(this._lastTargetIndex)
	}
	else if(targetIndex===-1)
		{
		action.decideRandomTarget()
	}
	else
		{
		action.setTarget(targetIndex)
	}
	this._actions.push(action)
};
Game_Battler.prototype.useItem=function(item)
	{
	if(DataManager.isSkill(item))
		{
		this.paySkillCost(item)
	}
	else if(DataManager.isItem(item))
		{
		this.consumeItem(item)
	}
};
Game_Battler.prototype.consumeItem=function(item)
	{
	$gameParty.consumeItem(item)
};
Game_Battler.prototype.gainHp=function(value)
	{
	this._result.hpDamage=-value;
	this._result.hpAffected=true;
	this.setHp(this.hp+value)
};
Game_Battler.prototype.gainMp=function(value)
	{
	this._result.mpDamage=-value;
	this.setMp(this.mp+value)
};
Game_Battler.prototype.gainTp=function(value)
	{
	this._result.tpDamage=-value;
	this.setTp(this.tp+value)
};
Game_Battler.prototype.gainSilentTp=function(value)
	{
	this.setTp(this.tp+value)
};
Game_Battler.prototype.initTp=function()
	{
	this.setTp(Math.randomInt(25))
};
Game_Battler.prototype.clearTp=function()
	{
	this.setTp(0)
};
Game_Battler.prototype.chargeTpByDamage=function(damageRate)
	{
	var value=Math.floor(50*damageRate*this.tcr);
	this.gainSilentTp(value)
};
Game_Battler.prototype.regenerateHp=function()
	{
	var value=Math.floor(this.mhp*this.hrg);
	value=Math.max(value,-this.maxSlipDamage());
	if(value!==0)
		{
		this.gainHp(value)
	}
};
Game_Battler.prototype.maxSlipDamage=function()
	{
	return $dataSystem.optSlipDeath?this.hp:Math.max(this.hp-1,0)
};
Game_Battler.prototype.regenerateMp=function()
	{
	var value=Math.floor(this.mmp*this.mrg);
	if(value!==0)
		{
		this.gainMp(value)
	}
};
Game_Battler.prototype.regenerateTp=function()
	{
	var value=Math.floor(100*this.trg);
	this.gainSilentTp(value)
};
Game_Battler.prototype.regenerateAll=function()
	{
	if(this.isAlive())
		{
		this.regenerateHp();
		this.regenerateMp();
		this.regenerateTp()
	}
};
Game_Battler.prototype.onBattleStart=function()
	{
	this.setActionState('undecided');
	this.clearMotion();
	if(!this.isPreserveTp())
		{
		this.initTp()
	}
};
Game_Battler.prototype.onAllActionsEnd=function()
	{
	this.clearResult();
	this.removeStatesAuto(1);
	this.removeBuffsAuto()
};
Game_Battler.prototype.onTurnEnd=function()
	{
	this.clearResult();
	this.regenerateAll();
	this.updateStateTurns();
	this.updateBuffTurns();
	this.removeStatesAuto(2)
};
Game_Battler.prototype.onBattleEnd=function()
	{
	this.clearResult();
	this.removeBattleStates();
	this.removeAllBuffs();
	this.clearActions();
	if(!this.isPreserveTp())
		{
		this.clearTp()
	}
	this.appear()
};
Game_Battler.prototype.onDamage=function(value)
	{
	this.removeStatesByDamage();
	this.chargeTpByDamage(value/this.mhp)
};
Game_Battler.prototype.setActionState=function(actionState)
	{
	this._actionState=actionState;
	this.requestMotionRefresh()
};
Game_Battler.prototype.isUndecided=function()
	{
	return this._actionState==='undecided'
};
Game_Battler.prototype.isInputting=function()
	{
	return this._actionState==='inputting'
};
Game_Battler.prototype.isWaiting=function()
	{
	return this._actionState==='waiting'
};
Game_Battler.prototype.isActing=function()
	{
	return this._actionState==='acting'
};
Game_Battler.prototype.isChanting=function()
	{
	if(this.isWaiting())
		{
		return this._actions.some(function(action)
			{
			return action.isMagicSkill()
		}
		)
	}
	return false
};
Game_Battler.prototype.isGuardWaiting=function()
	{
	if(this.isWaiting())
		{
		return this._actions.some(function(action)
			{
			return action.isGuard()
		}
		)
	}
	return false
};
Game_Battler.prototype.performActionStart=function(action)
	{
	if(!action.isGuard())
		{
		this.setActionState('acting')
	}
};
Game_Battler.prototype.performAction=function(action)
	{
};
Game_Battler.prototype.performActionEnd=function()
	{
	this.setActionState('done')
};
Game_Battler.prototype.performDamage=function()
	{
};
Game_Battler.prototype.performMiss=function()
	{
	SoundManager.playMiss()
};
Game_Battler.prototype.performRecovery=function()
	{
	SoundManager.playRecovery()
};
Game_Battler.prototype.performEvasion=function()
	{
	SoundManager.playEvasion()
};
Game_Battler.prototype.performMagicEvasion=function()
	{
	SoundManager.playMagicEvasion()
};
Game_Battler.prototype.performCounter=function()
	{
	SoundManager.playEvasion()
};
Game_Battler.prototype.performReflection=function()
	{
	SoundManager.playReflection()
};
Game_Battler.prototype.performSubstitute=function(target)
	{
};
Game_Battler.prototype.performCollapse=function()
	{
};
function Game_Actor()
	{
	this.initialize.apply(this,arguments)
}
Game_Actor.prototype=Object.create(Game_Battler.prototype);
Game_Actor.prototype.constructor=Game_Actor;
Object.defineProperty(Game_Actor.prototype,'level',
	{
	get:function()
		{
		return this._level
	}
	,configurable:true
}
);
Game_Actor.prototype.initialize=function(actorId)
	{
	Game_Battler.prototype.initialize.call(this);
	this.setup(actorId)
};
Game_Actor.prototype.initMembers=function()
	{
	Game_Battler.prototype.initMembers.call(this);
	this._actorId=0;
	this._name='';
	this._nickname='';
	this._classId=0;
	this._level=0;
	this._characterName='';
	this._characterIndex=0;
	this._faceName='';
	this._faceIndex=0;
	this._battlerName='';
	this._exp=
		{
	};
	this._skills=[];
	this._equips=[];
	this._actionInputIndex=0;
	this._lastMenuSkill=new Game_Item();
	this._lastBattleSkill=new Game_Item();
	this._lastCommandSymbol=''
};
Game_Actor.prototype.setup=function(actorId)
	{
	var actor=$dataActors[actorId];
	this._actorId=actorId;
	this._name=actor.name;
	this._nickname=actor.nickname;
	this._profile=actor.profile;
	this._classId=actor.classId;
	this._level=actor.initialLevel;
	this.initImages();
	this.initExp();
	this.initSkills();
	this.initEquips(actor.equips);
	this.clearParamPlus();
	this.recoverAll()
};
Game_Actor.prototype.actorId=function()
	{
	return this._actorId
};
Game_Actor.prototype.actor=function()
	{
	return $dataActors[this._actorId]
};
Game_Actor.prototype.name=function()
	{
	return this._name
};
Game_Actor.prototype.setName=function(name)
	{
	this._name=name
};
Game_Actor.prototype.nickname=function()
	{
	return this._nickname
};
Game_Actor.prototype.setNickname=function(nickname)
	{
	this._nickname=nickname
};
Game_Actor.prototype.profile=function()
	{
	return this._profile
};
Game_Actor.prototype.setProfile=function(profile)
	{
	this._profile=profile
};
Game_Actor.prototype.characterName=function()
	{
	return this._characterName
};
Game_Actor.prototype.characterIndex=function()
	{
	return this._characterIndex
};
Game_Actor.prototype.faceName=function()
	{
	return this._faceName
};
Game_Actor.prototype.faceIndex=function()
	{
	return this._faceIndex
};
Game_Actor.prototype.battlerName=function()
	{
	return this._battlerName
};
Game_Actor.prototype.clearStates=function()
	{
	Game_Battler.prototype.clearStates.call(this);
	this._stateSteps=
		{
	}
};
Game_Actor.prototype.eraseState=function(stateId)
	{
	Game_Battler.prototype.eraseState.call(this,stateId);
	delete this._stateSteps[stateId]
};
Game_Actor.prototype.resetStateCounts=function(stateId)
	{
	Game_Battler.prototype.resetStateCounts.call(this,stateId);
	this._stateSteps[stateId]=$dataStates[stateId].stepsToRemove
};
Game_Actor.prototype.initImages=function()
	{
	var actor=this.actor();
	this._characterName=actor.characterName;
	this._characterIndex=actor.characterIndex;
	this._faceName=actor.faceName;
	this._faceIndex=actor.faceIndex;
	this._battlerName=actor.battlerName
};
Game_Actor.prototype.expForLevel=function(level)
	{
	var c=this.currentClass();
	var basis=c.expParams[0];
	var extra=c.expParams[1];
	var acc_a=c.expParams[2];
	var acc_b=c.expParams[3];
	return Math.round(basis*(Math.pow(level-1,0.9+acc_a/250))*level*(level+1)/(6+Math.pow(level,2)/50/acc_+(level-1)*extra)
};
Game_Actor.prototype.initExp=function()
	{
	this._exp[this._classId]=this.currentLevelExp()
};
Game_Actor.prototype.currentExp=function()
	{
	return this._exp[this._classId]
};
Game_Actor.prototype.currentLevelExp=function()
	{
	return this.expForLevel(this._level)
};
Game_Actor.prototype.nextLevelExp=function()
	{
	return this.expForLevel(this._level+1)
};
Game_Actor.prototype.nextRequiredExp=function()
	{
	return this.nextLevelExp()-this.currentExp()
};
Game_Actor.prototype.maxLevel=function()
	{
	return this.actor().maxLevel
};
Game_Actor.prototype.isMaxLevel=function()
	{
	return this._level>=this.maxLevel()
};
Game_Actor.prototype.initSkills=function()
	{
	this._skills=[];
	this.currentClass().learnings.forEach(function(learning)
		{
		if(learning.level<=this._level)
			{
			this.learnSkill(learning.skillId)
		}
	}
	,this)
};
Game_Actor.prototype.initEquips=function(equips)
	{
	var slots=this.equipSlots();
	var maxSlots=slots.length;
	this._equips=[];
	for(var i=0;
	i<maxSlots;
	i++)
		{
		this._equips[i]=new Game_Item()
	}
	for(var j=0;
	j<equips.length;
	j++)
		{
		if(j<maxSlots)
			{
			this._equips[j].setEquip(slots[j]===1,equips[j])
		}
	}
	this.releaseUnequippableItems(true);
	this.refresh()
};
Game_Actor.prototype.equipSlots=function()
	{
	var slots=[];
	for(var i=1;
	i<$dataSystem.equipTypes.length;
	i++)
		{
		slots.push(i)
	}
	if(slots.length>=2&&this.isDualWield())
		{
		slots[1]=1
	}
	return slots
};
Game_Actor.prototype.equips=function()
	{
	return this._equips.map(function(item)
		{
		return item.object()
	}
	)
};
Game_Actor.prototype.weapons=function()
	{
	return this.equips().filter(function(item)
		{
		return item&&DataManager.isWeapon(item)
	}
	)
};
Game_Actor.prototype.armors=function()
	{
	return this.equips().filter(function(item)
		{
		return item&&DataManager.isArmor(item)
	}
	)
};
Game_Actor.prototype.hasWeapon=function(weapon)
	{
	return this.weapons().contains(weapon)
};
Game_Actor.prototype.hasArmor=function(armor)
	{
	return this.armors().contains(armor)
};
Game_Actor.prototype.isEquipChangeOk=function(slotId)
	{
	return(!this.isEquipTypeLocked(this.equipSlots()[slotId])&&!this.isEquipTypeSealed(this.equipSlots()[slotId]))
};
Game_Actor.prototype.changeEquip=function(slotId,item)
	{
	if(this.tradeItemWithParty(item,this.equips()[slotId])&&(!item||this.equipSlots()[slotId]===item.etypeId))
		{
		this._equips[slotId].setObject(item);
		this.refresh()
	}
};
Game_Actor.prototype.forceChangeEquip=function(slotId,item)
	{
	this._equips[slotId].setObject(item);
	this.releaseUnequippableItems(true);
	this.refresh()
};
Game_Actor.prototype.tradeItemWithParty=function(newItem,oldItem)
	{
	if(newItem&&!$gameParty.hasItem(newItem))
		{
		return false
	}
	else
		{
		$gameParty.gainItem(oldItem,1);
		$gameParty.loseItem(newItem,1);
		return true
	}
};
Game_Actor.prototype.changeEquipById=function(etypeId,itemId)
	{
	var slotId=etypeId-1;
	if(this.equipSlots()[slotId]===1)
		{
		this.changeEquip(slotId,$dataWeapons[itemId])
	}
	else
		{
		this.changeEquip(slotId,$dataArmors[itemId])
	}
};
Game_Actor.prototype.isEquipped=function(item)
	{
	return this.equips().contains(item)
};
Game_Actor.prototype.discardEquip=function(item)
	{
	var slotId=this.equips().indexOf(item);
	if(slotId>=0)
		{
		this._equips[slotId].setObject(null)
	}
};
Game_Actor.prototype.releaseUnequippableItems=function(forcing)
	{
	for(;;
	)
		{
		var slots=this.equipSlots();
		var equips=this.equips();
		var changed=false;
		for(var i=0;
		i<equips.length;
		i++)
			{
			var item=equips[i];
			if(item&&(!this.canEquip(item)||item.etypeId!==slots[i]))
				{
				if(!forcing)
					{
					this.tradeItemWithParty(null,item)
				}
				this._equips[i].setObject(null);
				changed=true
			}
		}
		if(!changed)
			{
			break
		}
	}
};
Game_Actor.prototype.clearEquipments=function()
	{
	var maxSlots=this.equipSlots().length;
	for(var i=0;
	i<maxSlots;
	i++)
		{
		if(this.isEquipChangeOk(i))
			{
			this.changeEquip(i,null)
		}
	}
};
Game_Actor.prototype.optimizeEquipments=function()
	{
	var maxSlots=this.equipSlots().length;
	this.clearEquipments();
	for(var i=0;
	i<maxSlots;
	i++)
		{
		if(this.isEquipChangeOk(i))
			{
			this.changeEquip(i,this.bestEquipItem(i))
		}
	}
};
Game_Actor.prototype.bestEquipItem=function(slotId)
	{
	var etypeId=this.equipSlots()[slotId];
	var items=$gameParty.equipItems().filter(function(item)
		{
		return item.etypeId===etypeId&&this.canEquip(item)
	}
	,this);
	var bestItem=null;
	var bestPerformance=-1000;
	for(var i=0;
	i<items.length;
	i++)
		{
		var performance=this.calcEquipItemPerformance(items[i]);
		if(performance>bestPerformance)
			{
			bestPerformance=performance;
			bestItem=items[i]
		}
	}
	return bestItem
};
Game_Actor.prototype.calcEquipItemPerformance=function(item)
	{
	return item.params.reduce(function(a,
		{
		return a+b
	}
	)
};
Game_Actor.prototype.isSkillWtypeOk=function(skill)
	{
	var wtypeId1=skill.requiredWtypeId1;
	var wtypeId2=skill.requiredWtypeId2;
	if((wtypeId1===0&&wtypeId2===0)||(wtypeId1>0&&this.isWtypeEquipped(wtypeId1))||(wtypeId2>0&&this.isWtypeEquipped(wtypeId2)))
		{
		return true
	}
	else
		{
		return false
	}
};
Game_Actor.prototype.isWtypeEquipped=function(wtypeId)
	{
	return this.weapons().some(function(weapon)
		{
		return weapon.wtypeId===wtypeId
	}
	)
};
Game_Actor.prototype.refresh=function()
	{
	this.releaseUnequippableItems(false);
	Game_Battler.prototype.refresh.call(this)
};
Game_Actor.prototype.isActor=function()
	{
	return true
};
Game_Actor.prototype.friendsUnit=function()
	{
	return $gameParty
};
Game_Actor.prototype.opponentsUnit=function()
	{
	return $gameTroop
};
Game_Actor.prototype.index=function()
	{
	return $gameParty.members().indexOf(this)
};
Game_Actor.prototype.isBattleMember=function()
	{
	return $gameParty.battleMembers().contains(this)
};
Game_Actor.prototype.isFormationChangeOk=function()
	{
	return true
};
Game_Actor.prototype.currentClass=function()
	{
	return $dataClasses[this._classId]
};
Game_Actor.prototype.isClass=function(gameClass)
	{
	return gameClass&&this._classId===gameClass.id
};
Game_Actor.prototype.skills=function()
	{
	var list=[];
	this._skills.concat(this.addedSkills()).forEach(function(id)
		{
		if(!list.contains($dataSkills[id]))
			{
			list.push($dataSkills[id])
		}
	}
	);
	return list
};
Game_Actor.prototype.usableSkills=function()
	{
	return this.skills().filter(function(skill)
		{
		return this.canUse(skill)
	}
	,this)
};
Game_Actor.prototype.traitObjects=function()
	{
	var objects=Game_Battler.prototype.traitObjects.call(this);
	objects=objects.concat([this.actor(),this.currentClass()]);
	var equips=this.equips();
	for(var i=0;
	i<equips.length;
	i++)
		{
		var item=equips[i];
		if(item)
			{
			objects.push(item)
		}
	}
	return objects
};
Game_Actor.prototype.attackElements=function()
	{
	var set=Game_Battler.prototype.attackElements.call(this);
	if(this.hasNoWeapons()&&!set.contains(this.bareHandsElementId()))
		{
		set.push(this.bareHandsElementId())
	}
	return set
};
Game_Actor.prototype.hasNoWeapons=function()
	{
	return this.weapons().length===0
};
Game_Actor.prototype.bareHandsElementId=function()
	{
	return 1
};
Game_Actor.prototype.paramMax=function(paramId)
	{
	if(paramId===0)
		{
		return 9999
	}
	return Game_Battler.prototype.paramMax.call(this,paramId)
};
Game_Actor.prototype.paramBase=function(paramId)
	{
	return this.currentClass().params[paramId][this._level]
};
Game_Actor.prototype.paramPlus=function(paramId)
	{
	var value=Game_Battler.prototype.paramPlus.call(this,paramId);
	var equips=this.equips();
	for(var i=0;
	i<equips.length;
	i++)
		{
		var item=equips[i];
		if(item)
			{
			value+=item.params[paramId]
		}
	}
	return value
};
Game_Actor.prototype.attackAnimationId1=function()
	{
	if(this.hasNoWeapons())
		{
		return this.bareHandsAnimationId()
	}
	else
		{
		var weapons=this.weapons();
		return weapons[0]?weapons[0].animationId:0
	}
};
Game_Actor.prototype.attackAnimationId2=function()
	{
	var weapons=this.weapons();
	return weapons[1]?weapons[1].animationId:0
};
Game_Actor.prototype.bareHandsAnimationId=function()
	{
	return 1
};
Game_Actor.prototype.changeExp=function(exp,show)
	{
	this._exp[this._classId]=Math.max(exp,0);
	var lastLevel=this._level;
	var lastSkills=this.skills();
	while(!this.isMaxLevel()&&this.currentExp()>=this.nextLevelExp())
		{
		this.levelUp()
	}
	while(this.currentExp()<this.currentLevelExp())
		{
		this.levelDown()
	}
	if(show&&this._level>lastLevel)
		{
		this.displayLevelUp(this.findNewSkills(lastSkills))
	}
	this.refresh()
};
Game_Actor.prototype.levelUp=function()
	{
	this._level++;
	this.currentClass().learnings.forEach(function(learning)
		{
		if(learning.level===this._level)
			{
			this.learnSkill(learning.skillId)
		}
	}
	,this)
};
Game_Actor.prototype.levelDown=function()
	{
	this._level--
};
Game_Actor.prototype.findNewSkills=function(lastSkills)
	{
	var newSkills=this.skills();
	for(var i=0;
	i<lastSkills.length;
	i++)
		{
		var index=newSkills.indexOf(lastSkills[i]);
		if(index>=0)
			{
			newSkills.splice(index,1)
		}
	}
	return newSkills
};
Game_Actor.prototype.displayLevelUp=function(newSkills)
	{
	var text=TextManager.levelUp.format(this._name,TextManager.level,this._level);
	$gameMessage.newPage();
	$gameMessage.add(text);
	newSkills.forEach(function(skill)
		{
		$gameMessage.add(TextManager.obtainSkill.format(skill.name))
	}
	)
};
Game_Actor.prototype.gainExp=function(exp)
	{
	var newExp=this.currentExp()+Math.round(exp*this.finalExpRate());
	this.changeExp(newExp,this.shouldDisplayLevelUp())
};
Game_Actor.prototype.finalExpRate=function()
	{
	return this.exr*(this.isBattleMember()?1:this.benchMembersExpRate())
};
Game_Actor.prototype.benchMembersExpRate=function()
	{
	return $dataSystem.optExtraExp?1:0
};
Game_Actor.prototype.shouldDisplayLevelUp=function()
	{
	return true
};
Game_Actor.prototype.changeLevel=function(level,show)
	{
	level=level.clamp(1,this.maxLevel());
	this.changeExp(this.expForLevel(level),show)
};
Game_Actor.prototype.learnSkill=function(skillId)
	{
	if(!this.isLearnedSkill(skillId))
		{
		this._skills.push(skillId);
		this._skills.sort(function(a,
			{
			return a-b
		}
		)
	}
};
Game_Actor.prototype.forgetSkill=function(skillId)
	{
	var index=this._skills.indexOf(skillId);
	if(index>=0)
		{
		this._skills.splice(index,1)
	}
};
Game_Actor.prototype.isLearnedSkill=function(skillId)
	{
	return this._skills.contains(skillId)
};
Game_Actor.prototype.changeClass=function(classId,keepExp)
	{
	if(keepExp)
		{
		this._exp[classId]=this._exp()
	}
	this._classId=classId;
	this.changeExp(this._exp[this._classId]||0,false);
	this.refresh()
};
Game_Actor.prototype.setCharacterImage=function(characterName,characterIndex)
	{
	this._characterName=characterName;
	this._characterIndex=characterIndex
};
Game_Actor.prototype.setFaceImage=function(faceName,faceIndex)
	{
	this._faceName=faceName;
	this._faceIndex=faceIndex
};
Game_Actor.prototype.setBattlerImage=function(battlerName)
	{
	this._battlerName=battlerName
};
Game_Actor.prototype.isSpriteVisible=function()
	{
	return $gameSystem.isSideView()
};
Game_Actor.prototype.startAnimation=function(animationId,mirror,delay)
	{
	mirror=!mirror;
	Game_Battler.prototype.startAnimation.call(this,animationId,mirror,delay)
};
Game_Actor.prototype.performActionStart=function(action)
	{
	Game_Battler.prototype.performActionStart.call(this,action)
};
Game_Actor.prototype.performAction=function(action)
	{
	Game_Battler.prototype.performAction.call(this,action);
	if(action.isAttack())
		{
		this.performAttack()
	}
	else if(action.isGuard())
		{
		this.requestMotion('guard')
	}
	else if(action.isMagicSkill())
		{
		this.requestMotion('spell')
	}
	else if(action.isSkill())
		{
		this.requestMotion('skill')
	}
	else if(action.isItem())
		{
		this.requestMotion('item')
	}
};
Game_Actor.prototype.performActionEnd=function()
	{
	Game_Battler.prototype.performActionEnd.call(this)
};
Game_Actor.prototype.performAttack=function()
	{
	var weapons=this.weapons();
	var wtypeId=weapons[0]?weapons[0].wtypeId:0;
	var attackMotion=$dataSystem.attackMotions[wtypeId];
	if(attackMotion)
		{
		if(attackMotion.type===0)
			{
			this.requestMotion('thrust')
		}
		else if(attackMotion.type===1)
			{
			this.requestMotion('swing')
		}
		else if(attackMotion.type===2)
			{
			this.requestMotion('missile')
		}
		this.startWeaponAnimation(attackMotion.weaponImageId)
	}
};
Game_Actor.prototype.performDamage=function()
	{
	Game_Battler.prototype.performDamage.call(this);
	if(this.isSpriteVisible())
		{
		this.requestMotion('damage')
	}
	else
		{
		$gameScreen.startShake(5,5,10)
	}
	SoundManager.playActorDamage()
};
Game_Actor.prototype.performEvasion=function()
	{
	Game_Battler.prototype.performEvasion.call(this);
	this.requestMotion('evade')
};
Game_Actor.prototype.performMagicEvasion=function()
	{
	Game_Battler.prototype.performMagicEvasion.call(this);
	this.requestMotion('evade')
};
Game_Actor.prototype.performCounter=function()
	{
	Game_Battler.prototype.performCounter.call(this);
	this.performAttack()
};
Game_Actor.prototype.performCollapse=function()
	{
	Game_Battler.prototype.performCollapse.call(this);
	if($gameParty.inBattle())
		{
		SoundManager.playActorCollapse()
	}
};
Game_Actor.prototype.performVictory=function()
	{
	if(this.canMove())
		{
		this.requestMotion('victory')
	}
};
Game_Actor.prototype.performEscape=function()
	{
	if(this.canMove())
		{
		this.requestMotion('escape')
	}
};
Game_Actor.prototype.makeActionList=function()
	{
	var list=[];
	var action=new Game_Action(this);
	action.setAttack();
	list.push(action);
	this.usableSkills().forEach(function(skill)
		{
		action=new Game_Action(this);
		action.setSkill(skill.id);
		list.push(action)
	}
	,this);
	return list
};
Game_Actor.prototype.makeAutoBattleActions=function()
	{
	for(var i=0;
	i<this.numActions();
	i++)
		{
		var list=this.makeActionList();
		var maxValue=Number.MIN_VALUE;
		for(var j=0;
		j<list.length;
		j++)
			{
			var value=list[j].evaluate();
			if(value>maxValue)
				{
				maxValue=value;
				this.setAction(i,list[j])
			}
		}
	}
	this.setActionState('waiting')
};
Game_Actor.prototype.makeConfusionActions=function()
	{
	for(var i=0;
	i<this.numActions();
	i++)
		{
		this.action(i).setConfusion()
	}
	this.setActionState('waiting')
};
Game_Actor.prototype.makeActions=function()
	{
	Game_Battler.prototype.makeActions.call(this);
	if(this.numActions()>0)
		{
		this.setActionState('undecided')
	}
	else
		{
		this.setActionState('waiting')
	}
	if(this.isAutoBattle())
		{
		this.makeAutoBattleActions()
	}
	else if(this.isConfused())
		{
		this.makeConfusionActions()
	}
};
Game_Actor.prototype.onPlayerWalk=function()
	{
	this.clearResult();
	this.checkFloorEffect();
	if($gamePlayer.isNormal())
		{
		this.turnEndOnMap();
		this.states().forEach(function(state)
			{
			this.updateStateSteps(state)
		}
		,this);
		this.showAddedStates();
		this.showRemovedStates()
	}
};
Game_Actor.prototype.updateStateSteps=function(state)
	{
	if(state.removeByWalking)
		{
		if(this._stateSteps[state.id]>0)
			{
			if(--this._stateSteps[state.id]===0)
				{
				this.removeState(state.id)
			}
		}
	}
};
Game_Actor.prototype.showAddedStates=function()
	{
	this.result().addedStateObjects().forEach(function(state)
		{
		if(state.message1)
			{
			$gameMessage.add(this._name+state.message1)
		}
	}
	,this)
};
Game_Actor.prototype.showRemovedStates=function()
	{
	this.result().removedStateObjects().forEach(function(state)
		{
		if(state.message4)
			{
			$gameMessage.add(this._name+state.message4)
		}
	}
	,this)
};
Game_Actor.prototype.stepsForTurn=function()
	{
	return 20
};
Game_Actor.prototype.turnEndOnMap=function()
	{
	if($gameParty.steps()%this.stepsForTurn()===0)
		{
		this.onTurnEnd();
		if(this.result().hpDamage>0)
			{
			this.performMapDamage()
		}
	}
};
Game_Actor.prototype.checkFloorEffect=function()
	{
	if($gamePlayer.isOnDamageFloor())
		{
		this.executeFloorDamage()
	}
};
Game_Actor.prototype.executeFloorDamage=function()
	{
	var damage=Math.floor(this.basicFloorDamage()*this.fdr);
	damage=Math.min(damage,this.maxFloorDamage());
	this.gainHp(-damage);
	if(damage>0)
		{
		this.performMapDamage()
	}
};
Game_Actor.prototype.basicFloorDamage=function()
	{
	return 10
};
Game_Actor.prototype.maxFloorDamage=function()
	{
	return $dataSystem.optFloorDeath?this.hp:Math.max(this.hp-1,0)
};
Game_Actor.prototype.performMapDamage=function()
	{
	if(!$gameParty.inBattle())
		{
		$gameScreen.startFlashForDamage()
	}
};
Game_Actor.prototype.clearActions=function()
	{
	Game_Battler.prototype.clearActions.call(this);
	this._actionInputIndex=0
};
Game_Actor.prototype.inputtingAction=function()
	{
	return this.action(this._actionInputIndex)
};
Game_Actor.prototype.selectNextCommand=function()
	{
	if(this._actionInputIndex<this.numActions()-1)
		{
		this._actionInputIndex++;
		return true
	}
	else
		{
		return false
	}
};
Game_Actor.prototype.selectPreviousCommand=function()
	{
	if(this._actionInputIndex>0)
		{
		this._actionInputIndex--;
		return true
	}
	else
		{
		return false
	}
};
Game_Actor.prototype.lastMenuSkill=function()
	{
	return this._lastMenuSkill.object()
};
Game_Actor.prototype.setLastMenuSkill=function(skill)
	{
	this._lastMenuSkill.setObject(skill)
};
Game_Actor.prototype.lastBattleSkill=function()
	{
	return this._lastBattleSkill.object()
};
Game_Actor.prototype.setLastBattleSkill=function(skill)
	{
	this._lastBattleSkill.setObject(skill)
};
Game_Actor.prototype.lastCommandSymbol=function()
	{
	return this._lastCommandSymbol
};
Game_Actor.prototype.setLastCommandSymbol=function(symbol)
	{
	this._lastCommandSymbol=symbol
};
function Game_Enemy()
	{
	this.initialize.apply(this,arguments)
}
Game_Enemy.prototype=Object.create(Game_Battler.prototype);
Game_Enemy.prototype.constructor=Game_Enemy;
Game_Enemy.prototype.initialize=function(enemyId,x,y)
	{
	Game_Battler.prototype.initialize.call(this);
	this.setup(enemyId,x,y)
};
Game_Enemy.prototype.initMembers=function()
	{
	Game_Battler.prototype.initMembers.call(this);
	this._enemyId=0;
	this._letter='';
	this._plural=false;
	this._screenX=0;
	this._screenY=0
};
Game_Enemy.prototype.setup=function(enemyId,x,y)
	{
	this._enemyId=enemyId;
	this._screenX=x;
	this._screenY=y;
	this.recoverAll()
};
Game_Enemy.prototype.isEnemy=function()
	{
	return true
};
Game_Enemy.prototype.friendsUnit=function()
	{
	return $gameTroop
};
Game_Enemy.prototype.opponentsUnit=function()
	{
	return $gameParty
};
Game_Enemy.prototype.index=function()
	{
	return $gameTroop.members().indexOf(this)
};
Game_Enemy.prototype.isBattleMember=function()
	{
	return this.index()>=0
};
Game_Enemy.prototype.enemyId=function()
	{
	return this._enemyId
};
Game_Enemy.prototype.enemy=function()
	{
	return $dataEnemies[this._enemyId]
};
Game_Enemy.prototype.traitObjects=function()
	{
	return Game_Battler.prototype.traitObjects.call(this).concat(this.enemy())
};
Game_Enemy.prototype.paramBase=function(paramId)
	{
	return this.enemy().params[paramId]
};
Game_Enemy.prototype.exp=function()
	{
	return this.enemy().exp
};
Game_Enemy.prototype.gold=function()
	{
	return this.enemy().gold
};
Game_Enemy.prototype.makeDropItems=function()
	{
	return this.enemy().dropItems.reduce(function(r,di)
		{
		if(di.kind>0&&Math.random()*di.denominator<this.dropItemRate())
			{
			return r.concat(this.itemObject(di.kind,di.dataId))
		}
		else
			{
			return r
		}
	}
	.bind(this),[])
};
Game_Enemy.prototype.dropItemRate=function()
	{
	return $gameParty.hasDropItemDouble()?2:1
};
Game_Enemy.prototype.itemObject=function(kind,dataId)
	{
	if(kind===1)
		{
		return $dataItems[dataId]
	}
	else if(kind===2)
		{
		return $dataWeapons[dataId]
	}
	else if(kind===3)
		{
		return $dataArmors[dataId]
	}
	else
		{
		return null
	}
};
Game_Enemy.prototype.isSpriteVisible=function()
	{
	return true
};
Game_Enemy.prototype.screenX=function()
	{
	return this._screenX
};
Game_Enemy.prototype.screenY=function()
	{
	return this._screenY
};
Game_Enemy.prototype.battlerName=function()
	{
	return this.enemy().battlerName
};
Game_Enemy.prototype.battlerHue=function()
	{
	return this.enemy().battlerHue
};
Game_Enemy.prototype.originalName=function()
	{
	return this.enemy().name
};
Game_Enemy.prototype.name=function()
	{
	return this.originalName()+(this._plural?this._letter:'')
};
Game_Enemy.prototype.isLetterEmpty=function()
	{
	return this._letter===''
};
Game_Enemy.prototype.setLetter=function(letter)
	{
	this._letter=letter
};
Game_Enemy.prototype.setPlural=function(plural)
	{
	this._plural=plural
};
Game_Enemy.prototype.performActionStart=function(action)
	{
	Game_Battler.prototype.performActionStart.call(this,action);
	this.requestEffect('whiten')
};
Game_Enemy.prototype.performAction=function(action)
	{
	Game_Battler.prototype.performAction.call(this,action)
};
Game_Enemy.prototype.performActionEnd=function()
	{
	Game_Battler.prototype.performActionEnd.call(this)
};
Game_Enemy.prototype.performDamage=function()
	{
	Game_Battler.prototype.performDamage.call(this);
	SoundManager.playEnemyDamage();
	this.requestEffect('blink')
};
Game_Enemy.prototype.performCollapse=function()
	{
	Game_Battler.prototype.performCollapse.call(this);
	switch(this.collapseType())
		{
		case 0:this.requestEffect('collapse');
		SoundManager.playEnemyCollapse();
		break;
		case 1:this.requestEffect('bossCollapse');
		SoundManager.playBossCollapse1();
		break;
		case 2:this.requestEffect('instantCollapse');
		break
	}
};
Game_Enemy.prototype.transform=function(enemyId)
	{
	var name=this.originalName();
	this._enemyId=enemyId;
	if(this.originalName()!==name)
		{
		this._letter='';
		this._plural=false
	}
	this.refresh();
	if(this.numActions()>0)
		{
		this.makeActions()
	}
};
Game_Enemy.prototype.meetsCondition=function(action)
	{
	var param1=action.conditionParam1;
	var param2=action.conditionParam2;
	switch(action.conditionType)
		{
		case 1:return this.meetsTurnCondition(param1,param2);
		case 2:return this.meetsHpCondition(param1,param2);
		case 3:return this.meetsMpCondition(param1,param2);
		case 4:return this.meetsStateCondition(param1);
		case 5:return this.meetsPartyLevelCondition(param1);
		case 6:return this.meetsSwitchCondition(param1);
		default:return true
	}
};
Game_Enemy.prototype.meetsTurnCondition=function(param1,param2)
	{
	var n=$gameTroop.turnCount();
	if(param2===0)
		{
		return n===param1
	}
	else
		{
		return n>0&&n>=param1&&n%param2===param1%param2
	}
};
Game_Enemy.prototype.meetsHpCondition=function(param1,param2)
	{
	return this.hpRate()>=param1&&this.hpRate()<=param2
};
Game_Enemy.prototype.meetsMpCondition=function(param1,param2)
	{
	return this.mpRate()>=param1&&this.mpRate()<=param2
};
Game_Enemy.prototype.meetsStateCondition=function(param)
	{
	return this.isStateAffected(param)
};
Game_Enemy.prototype.meetsPartyLevelCondition=function(param)
	{
	return $gameParty.highestLevel()>=param
};
Game_Enemy.prototype.meetsSwitchCondition=function(param)
	{
	return $gameSwitches.value(param)
};
Game_Enemy.prototype.isActionValid=function(action)
	{
	return this.meetsCondition(action)&&this.canUse($dataSkills[action.skillId])
};
Game_Enemy.prototype.selectAction=function(actionList,ratingZero)
	{
	var sum=actionList.reduce(function(r,a)
		{
		return r+a.rating-ratingZero
	}
	,0);
	if(sum>0)
		{
		var value=Math.randomInt(sum);
		for(var i=0;
		i<actionList.length;
		i++)
			{
			var action=actionList[i];
			value-=action.rating-ratingZero;
			if(value<0)
				{
				return action
			}
		}
	}
	else
		{
		return null
	}
};
Game_Enemy.prototype.selectAllActions=function(actionList)
	{
	var ratingMax=Math.max.apply(null,actionList.map(function(a)
		{
		return a.rating
	}
	));
	var ratingZero=ratingMax-3;
	actionList=actionList.filter(function(a)
		{
		return a.rating>ratingZero
	}
	);
	for(var i=0;
	i<this.numActions();
	i++)
		{
		this.action(i).setEnemyAction(this.selectAction(actionList,ratingZero))
	}
};
Game_Enemy.prototype.makeActions=function()
	{
	Game_Battler.prototype.makeActions.call(this);
	if(this.numActions()>0)
		{
		var actionList=this.enemy().actions.filter(function(a)
			{
			return this.isActionValid(a)
		}
		,this);
		if(actionList.length>0)
			{
			this.selectAllActions(actionList)
		}
	}
	this.setActionState('waiting')
};
function Game_Actors()
	{
	this.initialize.apply(this,arguments)
}
Game_Actors.prototype.initialize=function()
	{
	this._data=[]
};
Game_Actors.prototype.actor=function(actorId)
	{
	if($dataActors[actorId])
		{
		if(!this._data[actorId])
			{
			this._data[actorId]=new Game_Actor(actorId)
		}
		return this._data[actorId]
	}
	return null
};
function Game_Unit()
	{
	this.initialize.apply(this,arguments)
}
Game_Unit.prototype.initialize=function()
	{
	this._inBattle=false
};
Game_Unit.prototype.inBattle=function()
	{
	return this._inBattle
};
Game_Unit.prototype.members=function()
	{
	return[]
};
Game_Unit.prototype.aliveMembers=function()
	{
	return this.members().filter(function(member)
		{
		return member.isAlive()
	}
	)
};
Game_Unit.prototype.deadMembers=function()
	{
	return this.members().filter(function(member)
		{
		return member.isDead()
	}
	)
};
Game_Unit.prototype.movableMembers=function()
	{
	return this.members().filter(function(member)
		{
		return member.canMove()
	}
	)
};
Game_Unit.prototype.clearActions=function()
	{
	return this.members().forEach(function(member)
		{
		return member.clearActions()
	}
	)
};
Game_Unit.prototype.agility=function()
	{
	var members=this.members();
	if(members.length===0)
		{
		return 1
	}
	var sum=members.reduce(function(r,member)
		{
		return r+member.agi
	}
	,0);
	return sum/members.length
};
Game_Unit.prototype.tgrSum=function()
	{
	return this.aliveMembers().reduce(function(r,member)
		{
		return r+member.tgr
	}
	,0)
};
Game_Unit.prototype.randomTarget=function()
	{
	var tgrRand=Math.random()*this.tgrSum();
	var target=null;
	this.aliveMembers().forEach(function(member)
		{
		tgrRand-=member.tgr;
		if(tgrRand<=0&&!target)
			{
			target=member
		}
	}
	);
	return target
};
Game_Unit.prototype.randomDeadTarget=function()
	{
	var members=this.deadMembers();
	if(members.length===0)
		{
		return null
	}
	return members[Math.floor(Math.random()*members.length)]
};
Game_Unit.prototype.smoothTarget=function(index)
	{
	if(index<0)
		{
		index=0
	}
	var member=this.members()[index];
	return(member&&member.isAlive())?member:this.aliveMembers()[0]
};
Game_Unit.prototype.smoothDeadTarget=function(index)
	{
	if(index<0)
		{
		index=0
	}
	var member=this.members()[index];
	return(member&&member.isDead())?member:this.deadMembers()[0]
};
Game_Unit.prototype.clearResults=function()
	{
	this.members().forEach(function(member)
		{
		member.clearResult()
	}
	)
};
Game_Unit.prototype.onBattleStart=function()
	{
	this.members().forEach(function(member)
		{
		member.onBattleStart()
	}
	);
	this._inBattle=true
};
Game_Unit.prototype.onBattleEnd=function()
	{
	this._inBattle=false;
	this.members().forEach(function(member)
		{
		member.onBattleEnd()
	}
	)
};
Game_Unit.prototype.makeActions=function()
	{
	this.members().forEach(function(member)
		{
		member.makeActions()
	}
	)
};
Game_Unit.prototype.select=function(activeMember)
	{
	this.members().forEach(function(member)
		{
		if(member===activeMember)
			{
			member.select()
		}
		else
			{
			member.deselect()
		}
	}
	)
};
Game_Unit.prototype.isAllDead=function()
	{
	return this.aliveMembers().length===0
};
Game_Unit.prototype.substituteBattler=function()
	{
	var members=this.members();
	for(var i=0;
	i<members.length;
	i++)
		{
		if(members[i].isSubstitute())
			{
			return members[i]
		}
	}
};
function Game_Party()
	{
	this.initialize.apply(this,arguments)
}
Game_Party.prototype=Object.create(Game_Unit.prototype);
Game_Party.prototype.constructor=Game_Party;
Game_Party.ABILITY_ENCOUNTER_HALF=0;
Game_Party.ABILITY_ENCOUNTER_NONE=1;
Game_Party.ABILITY_CANCEL_SURPRISE=2;
Game_Party.ABILITY_RAISE_PREEMPTIVE=3;
Game_Party.ABILITY_GOLD_DOUBLE=4;
Game_Party.ABILITY_DROP_ITEM_DOUBLE=5;
Game_Party.prototype.initialize=function()
	{
	Game_Unit.prototype.initialize.call(this);
	this._gold=0;
	this._steps=0;
	this._lastItem=new Game_Item();
	this._menuActorId=0;
	this._targetActorId=0;
	this._actors=[];
	this.initAllItems()
};
Game_Party.prototype.initAllItems=function()
	{
	this._items=
		{
	};
	this._weapons=
		{
	};
	this._armors=
		{
	}
};
Game_Party.prototype.exists=function()
	{
	return this._actors.length>0
};
Game_Party.prototype.size=function()
	{
	return this.members().length
};
Game_Party.prototype.isEmpty=function()
	{
	return this.size()===0
};
Game_Party.prototype.members=function()
	{
	return this.inBattle()?this.battleMembers():this.allMembers()
};
Game_Party.prototype.allMembers=function()
	{
	return this._actors.map(function(id)
		{
		return $gameActors.actor(id)
	}
	)
};
Game_Party.prototype.battleMembers=function()
	{
	return this.allMembers().slice(0,this.maxBattleMembers()).filter(function(actor)
		{
		return actor.isAppeared()
	}
	)
};
Game_Party.prototype.maxBattleMembers=function()
	{
	return 4
};
Game_Party.prototype.leader=function()
	{
	return this.battleMembers()[0]
};
Game_Party.prototype.reviveBattleMembers=function()
	{
	this.battleMembers().forEach(function(actor)
		{
		if(actor.isDead())
			{
			actor.setHp(1)
		}
	}
	)
};
Game_Party.prototype.items=function()
	{
	var list=[];
	for(var id in this._items)
		{
		list.push($dataItems[id])
	}
	return list
};
Game_Party.prototype.weapons=function()
	{
	var list=[];
	for(var id in this._weapons)
		{
		list.push($dataWeapons[id])
	}
	return list
};
Game_Party.prototype.armors=function()
	{
	var list=[];
	for(var id in this._armors)
		{
		list.push($dataArmors[id])
	}
	return list
};
Game_Party.prototype.equipItems=function()
	{
	return this.weapons().concat(this.armors())
};
Game_Party.prototype.allItems=function()
	{
	return this.items().concat(this.equipItems())
};
Game_Party.prototype.itemContainer=function(item)
	{
	if(!item)
		{
		return null
	}
	else if(DataManager.isItem(item))
		{
		return this._items
	}
	else if(DataManager.isWeapon(item))
		{
		return this._weapons
	}
	else if(DataManager.isArmor(item))
		{
		return this._armors
	}
	else
		{
		return null
	}
};
Game_Party.prototype.setupStartingMembers=function()
	{
	this._actors=[];
	$dataSystem.partyMembers.forEach(function(actorId)
		{
		if($gameActors.actor(actorId))
			{
			this._actors.push(actorId)
		}
	}
	,this)
};
Game_Party.prototype.name=function()
	{
	var numBattleMembers=this.battleMembers().length;
	if(numBattleMembers===0)
		{
		return''
	}
	else if(numBattleMembers===1)
		{
		return this.leader().name()
	}
	else
		{
		return TextManager.partyName.format(this.leader().name())
	}
};
Game_Party.prototype.setupBattleTest=function()
	{
	this.setupBattleTestMembers();
	this.setupBattleTestItems()
};
Game_Party.prototype.setupBattleTestMembers=function()
	{
	$dataSystem.testBattlers.forEach(function(battler)
		{
		var actor=$gameActors.actor(battler.actorId);
		if(actor)
			{
			actor.changeLevel(battler.level,false);
			actor.initEquips(battler.equips);
			actor.recoverAll();
			this.addActor(battler.actorId)
		}
	}
	,this)
};
Game_Party.prototype.setupBattleTestItems=function()
	{
	$dataItems.forEach(function(item)
		{
		if(item&&item.name.length>0)
			{
			this.gainItem(item,this.maxItems(item))
		}
	}
	,this)
};
Game_Party.prototype.highestLevel=function()
	{
	return Math.max.apply(null,this.members().map(function(actor)
		{
		return actor.level
	}
	))
};
Game_Party.prototype.addActor=function(actorId)
	{
	if(!this._actors.contains(actorId))
		{
		this._actors.push(actorId);
		$gamePlayer.refresh();
		$gameMap.requestRefresh()
	}
};
Game_Party.prototype.removeActor=function(actorId)
	{
	if(this._actors.contains(actorId))
		{
		this._actors.splice(this._actors.indexOf(actorId),1);
		$gamePlayer.refresh();
		$gameMap.requestRefresh()
	}
};
Game_Party.prototype.gold=function()
	{
	return this._gold
};
Game_Party.prototype.gainGold=function(amount)
	{
	this._gold=(this._gold+amount).clamp(0,this.maxGold())
};
Game_Party.prototype.loseGold=function(amount)
	{
	this.gainGold(-amount)
};
Game_Party.prototype.maxGold=function()
	{
	return 99999999
};
Game_Party.prototype.steps=function()
	{
	return this._steps
};
Game_Party.prototype.increaseSteps=function()
	{
	this._steps++
};
Game_Party.prototype.numItems=function(item)
	{
	var container=this.itemContainer(item);
	return container?container[item.id]||0:0
};
Game_Party.prototype.maxItems=function(item)
	{
	return 99
};
Game_Party.prototype.hasMaxItems=function(item)
	{
	return this.numItems(item)>=this.maxItems(item)
};
Game_Party.prototype.hasItem=function(item,includeEquip)
	{
	if(includeEquip===undefined)
		{
		includeEquip=false
	}
	if(this.numItems(item)>0)
		{
		return true
	}
	else if(includeEquip&&this.isAnyMemberEquipped(item))
		{
		return true
	}
	else
		{
		return false
	}
};
Game_Party.prototype.isAnyMemberEquipped=function(item)
	{
	return this.members().some(function(actor)
		{
		return actor.equips().contains(item)
	}
	)
};
Game_Party.prototype.gainItem=function(item,amount,includeEquip)
	{
	var container=this.itemContainer(item);
	if(container)
		{
		var lastNumber=this.numItems(item);
		var newNumber=lastNumber+amount;
		container[item.id]=newNumber.clamp(0,this.maxItems(item));
		if(container[item.id]===0)
			{
			delete container[item.id]
		}
		if(includeEquip&&newNumber<0)
			{
			this.discardMembersEquip(item,-newNumber)
		}
		$gameMap.requestRefresh()
	}
};
Game_Party.prototype.discardMembersEquip=function(item,amount)
	{
	var n=amount;
	this.members().forEach(function(actor)
		{
		while(n>0&&actor.isEquipped(item))
			{
			actor.discardEquip(item);
			n--
		}
	}
	)
};
Game_Party.prototype.loseItem=function(item,amount,includeEquip)
	{
	this.gainItem(item,-amount,includeEquip)
};
Game_Party.prototype.consumeItem=function(item)
	{
	if(DataManager.isItem(item)&&item.consumable)
		{
		this.loseItem(item,1)
	}
};
Game_Party.prototype.canUse=function(item)
	{
	return this.members().some(function(actor)
		{
		return actor.canUse(item)
	}
	)
};
Game_Party.prototype.canInput=function()
	{
	return this.members().some(function(actor)
		{
		return actor.canInput()
	}
	)
};
Game_Party.prototype.isAllDead=function()
	{
	if(Game_Unit.prototype.isAllDead.call(this))
		{
		return this.inBattle()||!this.isEmpty()
	}
	else
		{
		return false
	}
};
Game_Party.prototype.onPlayerWalk=function()
	{
	this.members().forEach(function(actor)
		{
		return actor.onPlayerWalk()
	}
	)
};
Game_Party.prototype.menuActor=function()
	{
	var actor=$gameActors.actor(this._menuActorId);
	if(!this.members().contains(actor))
		{
		actor=this.members()[0]
	}
	return actor
};
Game_Party.prototype.setMenuActor=function(actor)
	{
	this._menuActorId=actor.actorId()
};
Game_Party.prototype.makeMenuActorNext=function()
	{
	var index=this.members().indexOf(this.menuActor());
	if(index>=0)
		{
		index=(index+1)%this.members().length;
		this.setMenuActor(this.members()[index])
	}
	else
		{
		this.setMenuActor(this.members()[0])
	}
};
Game_Party.prototype.makeMenuActorPrevious=function()
	{
	var index=this.members().indexOf(this.menuActor());
	if(index>=0)
		{
		index=(index+this.members().length-1)%this.members().length;
		this.setMenuActor(this.members()[index])
	}
	else
		{
		this.setMenuActor(this.members()[0])
	}
};
Game_Party.prototype.targetActor=function()
	{
	var actor=$gameActors.actor(this._targetActorId);
	if(!this.members().contains(actor))
		{
		actor=this.members()[0]
	}
	return actor
};
Game_Party.prototype.setTargetActor=function(actor)
	{
	this._targetActorId=actor.actorId()
};
Game_Party.prototype.lastItem=function()
	{
	return this._lastItem.object()
};
Game_Party.prototype.setLastItem=function(item)
	{
	this._lastItem.setObject(item)
};
Game_Party.prototype.swapOrder=function(index1,index2)
	{
	var temp=this._actors[index1];
	this._actors[index1]=this._actors[index2];
	this._actors[index2]=temp;
	$gamePlayer.refresh()
};
Game_Party.prototype.charactersForSavefile=function()
	{
	return this.battleMembers().map(function(actor)
		{
		return[actor.characterName(),actor.characterIndex()]
	}
	)
};
Game_Party.prototype.facesForSavefile=function()
	{
	return this.battleMembers().map(function(actor)
		{
		return[actor.faceName(),actor.faceIndex()]
	}
	)
};
Game_Party.prototype.partyAbility=function(abilityId)
	{
	return this.battleMembers().some(function(actor)
		{
		return actor.partyAbility(abilityId)
	}
	)
};
Game_Party.prototype.hasEncounterHalf=function()
	{
	return this.partyAbility(Game_Party.ABILITY_ENCOUNTER_HALF)
};
Game_Party.prototype.hasEncounterNone=function()
	{
	return this.partyAbility(Game_Party.ABILITY_ENCOUNTER_NONE)
};
Game_Party.prototype.hasCancelSurprise=function()
	{
	return this.partyAbility(Game_Party.ABILITY_CANCEL_SURPRISE)
};
Game_Party.prototype.hasRaisePreemptive=function()
	{
	return this.partyAbility(Game_Party.ABILITY_RAISE_PREEMPTIVE)
};
Game_Party.prototype.hasGoldDouble=function()
	{
	return this.partyAbility(Game_Party.ABILITY_GOLD_DOUBLE)
};
Game_Party.prototype.hasDropItemDouble=function()
	{
	return this.partyAbility(Game_Party.ABILITY_DROP_ITEM_DOUBLE)
};
Game_Party.prototype.ratePreemptive=function(troopAgi)
	{
	var rate=this.agility()>=troopAgi?0.05:0.03;
	if(this.hasRaisePreemptive())
		{
		rate*=4
	}
	return rate
};
Game_Party.prototype.rateSurprise=function(troopAgi)
	{
	var rate=this.agility()>=troopAgi?0.03:0.05;
	if(this.hasCancelSurprise())
		{
		rate=0
	}
	return rate
};
Game_Party.prototype.performVictory=function()
	{
	this.members().forEach(function(actor)
		{
		actor.performVictory()
	}
	)
};
Game_Party.prototype.performEscape=function()
	{
	this.members().forEach(function(actor)
		{
		actor.performEscape()
	}
	)
};
Game_Party.prototype.removeBattleStates=function()
	{
	this.members().forEach(function(actor)
		{
		actor.removeBattleStates()
	}
	)
};
Game_Party.prototype.requestMotionRefresh=function()
	{
	this.members().forEach(function(actor)
		{
		actor.requestMotionRefresh()
	}
	)
};
function Game_Troop()
	{
	this.initialize.apply(this,arguments)
}
Game_Troop.prototype=Object.create(Game_Unit.prototype);
Game_Troop.prototype.constructor=Game_Troop;
Game_Troop.LETTER_TABLE_HALF=[' A',' B',' C',' D',' E',' F',' G',' H',' I',' J',' K',' L',' M',' N',' O',' P',' Q',' R',' S',' T',' U',' V',' W',' X',' Y',' Z'];
Game_Troop.LETTER_TABLE_FULL=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
Game_Troop.prototype.initialize=function()
	{
	Game_Unit.prototype.initialize.call(this);
	this._interpreter=new Game_Interpreter();
	this.clear()
};
Game_Troop.prototype.isEventRunning=function()
	{
	return this._interpreter.isRunning()
};
Game_Troop.prototype.updateInterpreter=function()
	{
	this._interpreter.update()
};
Game_Troop.prototype.turnCount=function()
	{
	return this._turnCount
};
Game_Troop.prototype.members=function()
	{
	return this._enemies
};
Game_Troop.prototype.clear=function()
	{
	this._interpreter.clear();
	this._troopId=0;
	this._eventFlags=
		{
	};
	this._enemies=[];
	this._turnCount=0;
	this._namesCount=
		{
	}
};
Game_Troop.prototype.troop=function()
	{
	return $dataTroops[this._troopId]
};
Game_Troop.prototype.setup=function(troopId)
	{
	this.clear();
	this._troopId=troopId;
	this._enemies=[];
	this.troop().members.forEach(function(member)
		{
		if($dataEnemies[member.enemyId])
			{
			var enemyId=member.enemyId;
			var x=member.x;
			var y=member.y;
			var enemy=new Game_Enemy(enemyId,x,y);
			if(member.hidden)
				{
				enemy.hide()
			}
			this._enemies.push(enemy)
		}
	}
	,this);
	this.makeUniqueNames()
};
Game_Troop.prototype.makeUniqueNames=function()
	{
	var table=this.letterTable();
	this.members().forEach(function(enemy)
		{
		if(enemy.isAlive()&&enemy.isLetterEmpty())
			{
			var name=enemy.originalName();
			var n=this._namesCount[name]||0;
			enemy.setLetter(table[n%table.length]);
			this._namesCount[name]=n+1
		}
	}
	,this);
	this.members().forEach(function(enemy)
		{
		var name=enemy.originalName();
		if(this._namesCount[name]>=2)
			{
			enemy.setPlural(true)
		}
	}
	,this)
};
Game_Troop.prototype.letterTable=function()
	{
	return $gameSystem.isCJK()?Game_Troop.LETTER_TABLE_FULL:Game_Troop.LETTER_TABLE_HALF
};
Game_Troop.prototype.enemyNames=function()
	{
	var names=[];
	this.members().forEach(function(enemy)
		{
		var name=enemy.originalName();
		if(enemy.isAlive()&&!names.contains(name))
			{
			names.push(name)
		}
	}
	);
	return names
};
Game_Troop.prototype.meetsConditions=function(page)
	{
	var c=page.conditions;
	if(!c.turnEnding&&!c.turnValid&&!c.enemyValid&&!c.actorValid&&!c.switchValid)
		{
		return false
	}
	if(c.turnEnding)
		{
		if(!BattleManager.isTurnEnd())
			{
			return false
		}
	}
	if(c.turnValid)
		{
		var n=this._turnCount;
		var a=c.turnA;
		var b=c.turnB;
		if((b===0&&n!==a))
			{
			return false
		}
		if((b>0&&(n<1||n<a||n%b!==a%))
			{
			return false
		}
	}
	if(c.enemyValid)
		{
		var enemy=$gameTroop.members()[c.enemyIndex];
		if(!enemy||enemy.hpRate()*100>c.enemyHp)
			{
			return false
		}
	}
	if(c.actorValid)
		{
		var actor=$gameActors.actor(c.actorId);
		if(!actor||actor.hpRate()*100>c.actorHp)
			{
			return false
		}
	}
	if(c.switchValid)
		{
		if(!$gameSwitches.value(c.switchId))
			{
			return false
		}
	}
	return true
};
Game_Troop.prototype.setupBattleEvent=function()
	{
	if(!this._interpreter.isRunning())
		{
		if(this._interpreter.setupReservedCommonEvent())
			{
			return
		}
		var pages=this.troop().pages;
		for(var i=0;
		i<pages.length;
		i++)
			{
			var page=pages[i];
			if(this.meetsConditions(page)&&!this._eventFlags[i])
				{
				this._interpreter.setup(page.list);
				if(page.span<=1)
					{
					this._eventFlags[i]=true
				}
				break
			}
		}
	}
};
Game_Troop.prototype.increaseTurn=function()
	{
	var pages=this.troop().pages;
	for(var i=0;
	i<pages.length;
	i++)
		{
		var page=pages[i];
		if(page.span===1)
			{
			this._eventFlags[i]=false
		}
	}
	this._turnCount++
};
Game_Troop.prototype.expTotal=function()
	{
	return this.deadMembers().reduce(function(r,enemy)
		{
		return r+enemy.exp()
	}
	,0)
};
Game_Troop.prototype.goldTotal=function()
	{
	return this.deadMembers().reduce(function(r,enemy)
		{
		return r+enemy.gold()
	}
	,0)*this.goldRate()
};
Game_Troop.prototype.goldRate=function()
	{
	return $gameParty.hasGoldDouble()?2:1
};
Game_Troop.prototype.makeDropItems=function()
	{
	return this.deadMembers().reduce(function(r,enemy)
		{
		return r.concat(enemy.makeDropItems())
	}
	,[])
};
function Game_Map()
	{
	this.initialize.apply(this,arguments)
}
Game_Map.prototype.initialize=function()
	{
	this._interpreter=new Game_Interpreter();
	this._mapId=0;
	this._tilesetId=0;
	this._events=[];
	this._commonEvents=[];
	this._vehicles=[];
	this._displayX=0;
	this._displayY=0;
	this._nameDisplay=true;
	this._scrollDirection=2;
	this._scrollRest=0;
	this._scrollSpeed=4;
	this._parallaxName='';
	this._parallaxZero=false;
	this._parallaxLoopX=false;
	this._parallaxLoopY=false;
	this._parallaxSx=0;
	this._parallaxSy=0;
	this._parallaxX=0;
	this._parallaxY=0;
	this._battleback1Name=null;
	this._battleback2Name=null;
	this.createVehicles()
};
Game_Map.prototype.setup=function(mapId)
	{
	if(!$dataMap)
		{
		throw new Error('The map data is not available')
	}
	this._mapId=mapId;
	this._tilesetId=$dataMap.tilesetId;
	this._displayX=0;
	this._displayY=0;
	this.refereshVehicles();
	this.setupEvents();
	this.setupScroll();
	this.setupParallax();
	this.setupBattleback();
	this._needsRefresh=false
};
Game_Map.prototype.isEventRunning=function()
	{
	return this._interpreter.isRunning()||this.isAnyEventStarting()
};
Game_Map.prototype.tileWidth=function()
	{
	return 48
};
Game_Map.prototype.tileHeight=function()
	{
	return 48
};
Game_Map.prototype.mapId=function()
	{
	return this._mapId
};
Game_Map.prototype.tilesetId=function()
	{
	return this._tilesetId
};
Game_Map.prototype.displayX=function()
	{
	return this._displayX
};
Game_Map.prototype.displayY=function()
	{
	return this._displayY
};
Game_Map.prototype.parallaxName=function()
	{
	return this._parallaxName
};
Game_Map.prototype.battleback1Name=function()
	{
	return this._battleback1Name
};
Game_Map.prototype.battleback2Name=function()
	{
	return this._battleback2Name
};
Game_Map.prototype.requestRefresh=function(mapId)
	{
	this._needsRefresh=true
};
Game_Map.prototype.isNameDisplayEnabled=function()
	{
	return this._nameDisplay
};
Game_Map.prototype.disableNameDisplay=function()
	{
	this._nameDisplay=false
};
Game_Map.prototype.enableNameDisplay=function()
	{
	this._nameDisplay=true
};
Game_Map.prototype.createVehicles=function()
	{
	this._vehicles=[];
	this._vehicles[0]=new Game_Vehicle('boat');
	this._vehicles[1]=new Game_Vehicle('ship');
	this._vehicles[2]=new Game_Vehicle('airship')
};
Game_Map.prototype.refereshVehicles=function()
	{
	this._vehicles.forEach(function(vehicle)
		{
		vehicle.refresh()
	}
	)
};
Game_Map.prototype.vehicles=function()
	{
	return this._vehicles
};
Game_Map.prototype.vehicle=function(type)
	{
	if(type===0||type==='boat')
		{
		return this.boat()
	}
	else if(type===1||type==='ship')
		{
		return this.ship()
	}
	else if(type===2||type==='airship')
		{
		return this.airship()
	}
	else
		{
		return null
	}
};
Game_Map.prototype.boat=function()
	{
	return this._vehicles[0]
};
Game_Map.prototype.ship=function()
	{
	return this._vehicles[1]
};
Game_Map.prototype.airship=function()
	{
	return this._vehicles[2]
};
Game_Map.prototype.setupEvents=function()
	{
	this._events=[];
	for(var i=0;
	i<$dataMap.events.length;
	i++)
		{
		if($dataMap.events[i])
			{
			this._events[i]=new Game_Event(this._mapId,i)
		}
	}
	this._commonEvents=this.parallelCommonEvents().map(function(commonEvent)
		{
		return new Game_CommonEvent(commonEvent.id)
	}
	);
	this.refreshTileEvents()
};
Game_Map.prototype.events=function()
	{
	return this._events.filter(function(event)
		{
		return!!event
	}
	)
};
Game_Map.prototype.event=function(eventId)
	{
	return this._events[eventId]
};
Game_Map.prototype.eraseEvent=function(eventId)
	{
	this._events[eventId].erase()
};
Game_Map.prototype.parallelCommonEvents=function()
	{
	return $dataCommonEvents.filter(function(commonEvent)
		{
		return commonEvent&&commonEvent.trigger===2
	}
	)
};
Game_Map.prototype.setupScroll=function()
	{
	this._scrollDirection=2;
	this._scrollRest=0;
	this._scrollSpeed=4
};
Game_Map.prototype.setupParallax=function()
	{
	this._parallaxName=$dataMap.parallaxName||'';
	this._parallaxZero=ImageManager.isZeroParallax(this._parallaxName);
	this._parallaxLoopX=$dataMap.parallaxLoopX;
	this._parallaxLoopY=$dataMap.parallaxLoopY;
	this._parallaxSx=$dataMap.parallaxSx;
	this._parallaxSy=$dataMap.parallaxSy;
	this._parallaxX=0;
	this._parallaxY=0
};
Game_Map.prototype.setupBattleback=function()
	{
	if($dataMap.specifyBattleback)
		{
		this._battleback1Name=$dataMap.battleback1Name;
		this._battleback2Name=$dataMap.battleback2Name
	}
	else
		{
		this._battleback1Name=null;
		this._battleback2Name=null
	}
};
Game_Map.prototype.setDisplayPos=function(x,y)
	{
	if(this.isLoopHorizontal())
		{
		this._displayX=x.mod(this.width());
		this._parallaxX=x
	}
	else
		{
		var endX=this.width()-this.screenTileX();
		this._displayX=endX<0?endX/2:x.clamp(0,endX);
		this._parallaxX=this._displayX
	}
	if(this.isLoopVertical())
		{
		this._displayY=y.mod(this.height());
		this._parallaxY=y
	}
	else
		{
		var endY=this.height()-this.screenTileY();
		this._displayY=endY<0?endY/2:y.clamp(0,endY);
		this._parallaxY=this._displayY
	}
};
Game_Map.prototype.parallaxOx=function()
	{
	if(this._parallaxZero)
		{
		return this._parallaxX*this.tileWidth()
	}
	else if(this._parallaxLoopX)
		{
		return this._parallaxX*this.tileWidth()/2
	}
	else
		{
		return 0
	}
};
Game_Map.prototype.parallaxOy=function()
	{
	if(this._parallaxZero)
		{
		return this._parallaxY*this.tileHeight()
	}
	else if(this._parallaxLoopY)
		{
		return this._parallaxY*this.tileHeight()/2
	}
	else
		{
		return 0
	}
};
Game_Map.prototype.tileset=function()
	{
	return $dataTilesets[this._tilesetId]
};
Game_Map.prototype.tilesetFlags=function()
	{
	var tileset=this.tileset();
	if(tileset)
		{
		return tileset.flags
	}
	else
		{
		return[]
	}
};
Game_Map.prototype.displayName=function()
	{
	return $dataMap.displayName
};
Game_Map.prototype.width=function()
	{
	return $dataMap.width
};
Game_Map.prototype.height=function()
	{
	return $dataMap.height
};
Game_Map.prototype.data=function()
	{
	return $dataMap.data
};
Game_Map.prototype.isLoopHorizontal=function()
	{
	return $dataMap.scrollType===2||$dataMap.scrollType===3
};
Game_Map.prototype.isLoopVertical=function()
	{
	return $dataMap.scrollType===1||$dataMap.scrollType===3
};
Game_Map.prototype.isDashDisabled=function()
	{
	return $dataMap.disableDashing
};
Game_Map.prototype.encounterList=function()
	{
	return $dataMap.encounterList
};
Game_Map.prototype.encounterStep=function()
	{
	return $dataMap.encounterStep
};
Game_Map.prototype.isOverworld=function()
	{
	return this.tileset()&&this.tileset().mode===0
};
Game_Map.prototype.screenTileX=function()
	{
	return Graphics.width/this.tileWidth()
};
Game_Map.prototype.screenTileY=function()
	{
	return Graphics.height/this.tileHeight()
};
Game_Map.prototype.adjustX=function(x)
	{
	if(this.isLoopHorizontal()&&x<this._displayX-(this.width()-this.screenTileX())/2)
		{
		return x-this._displayX+$dataMap.width
	}
	else
		{
		return x-this._displayX
	}
};
Game_Map.prototype.adjustY=function(y)
	{
	if(this.isLoopVertical()&&y<this._displayY-(this.height()-this.screenTileY())/2)
		{
		return y-this._displayY+$dataMap.height
	}
	else
		{
		return y-this._displayY
	}
};
Game_Map.prototype.roundX=function(x)
	{
	return this.isLoopHorizontal()?x.mod(this.width()):x
};
Game_Map.prototype.roundY=function(y)
	{
	return this.isLoopVertical()?y.mod(this.height()):y
};
Game_Map.prototype.xWithDirection=function(x,d)
	{
	return x+(d===6?1:d===4?-1:0)
};
Game_Map.prototype.yWithDirection=function(y,d)
	{
	return y+(d===2?1:d===8?-1:0)
};
Game_Map.prototype.roundXWithDirection=function(x,d)
	{
	return this.roundX(x+(d===6?1:d===4?-1:0))
};
Game_Map.prototype.roundYWithDirection=function(y,d)
	{
	return this.roundY(y+(d===2?1:d===8?-1:0))
};
Game_Map.prototype.deltaX=function(x1,x2)
	{
	var result=x1-x2;
	if(this.isLoopHorizontal()&&Math.abs(result)>this.width()/2)
		{
		if(result<0)
			{
			result+=this.width()
		}
		else
			{
			result-=this.width()
		}
	}
	return result
};
Game_Map.prototype.deltaY=function(y1,y2)
	{
	var result=y1-y2;
	if(this.isLoopVertical()&&Math.abs(result)>this.height()/2)
		{
		if(result<0)
			{
			result+=this.height()
		}
		else
			{
			result-=this.height()
		}
	}
	return result
};
Game_Map.prototype.distance=function(x1,y1,x2,y2)
	{
	return Math.abs(this.deltaX(x1,x2))+Math.abs(this.deltaY(y1,y2))
};
Game_Map.prototype.canvasToMapX=function(x)
	{
	var tileWidth=this.tileWidth();
	var originX=this._displayX*tileWidth;
	var mapX=Math.floor((originX+x)/tileWidth);
	return this.roundX(mapX)
};
Game_Map.prototype.canvasToMapY=function(y)
	{
	var tileHeight=this.tileHeight();
	var originY=this._displayY*tileHeight;
	var mapY=Math.floor((originY+y)/tileHeight);
	return this.roundY(mapY)
};
Game_Map.prototype.autoplay=function()
	{
	if($dataMap.autoplayBgm)
		{
		AudioManager.playBgm($dataMap.bgm)
	}
	if($dataMap.autoplayBgs)
		{
		AudioManager.playBgs($dataMap.bgs)
	}
};
Game_Map.prototype.refreshIfNeeded=function()
	{
	if(this._needsRefresh)
		{
		this.refresh()
	}
};
Game_Map.prototype.refresh=function()
	{
	this.events().forEach(function(event)
		{
		event.refresh()
	}
	);
	this._commonEvents.forEach(function(event)
		{
		event.refresh()
	}
	);
	this.refreshTileEvents();
	this._needsRefresh=false
};
Game_Map.prototype.refreshTileEvents=function()
	{
	this.tileEvents=this.events().filter(function(event)
		{
		return event.isTile()
	}
	)
};
Game_Map.prototype.eventsXy=function(x,y)
	{
	return this.events().filter(function(event)
		{
		return event.pos(x,y)
	}
	)
};
Game_Map.prototype.eventsXyNt=function(x,y)
	{
	return this.events().filter(function(event)
		{
		return event.posNt(x,y)
	}
	)
};
Game_Map.prototype.tileEventsXy=function(x,y)
	{
	return this.tileEvents.filter(function(event)
		{
		return event.posNt(x,y)
	}
	)
};
Game_Map.prototype.eventIdXy=function(x,y)
	{
	var list=this.eventsXy(x,y);
	return list.length===0?0:list[0].eventId()
};
Game_Map.prototype.scrollDown=function(distance)
	{
	if(this.isLoopVertical())
		{
		this._displayY+=distance;
		this._displayY%=$dataMap.height;
		if(this._parallaxLoopY)
			{
			this._parallaxY+=distance
		}
	}
	else if(this.height()>=this.screenTileY())
		{
		var lastY=this._displayY;
		this._displayY=Math.min(this._displayY+distance,this.height()-this.screenTileY());
		this._parallaxY+=this._displayY-lastY
	}
};
Game_Map.prototype.scrollLeft=function(distance)
	{
	if(this.isLoopHorizontal())
		{
		this._displayX+=$dataMap.width-distance;
		this._displayX%=$dataMap.width;
		if(this._parallaxLoopX)
			{
			this._parallaxX-=distance
		}
	}
	else if(this.width()>=this.screenTileX())
		{
		var lastX=this._displayX;
		this._displayX=Math.max(this._displayX-distance,0);
		this._parallaxX+=this._displayX-lastX
	}
};
Game_Map.prototype.scrollRight=function(distance)
	{
	if(this.isLoopHorizontal())
		{
		this._displayX+=distance;
		this._displayX%=$dataMap.width;
		if(this._parallaxLoopX)
			{
			this._parallaxX+=distance
		}
	}
	else if(this.width()>=this.screenTileX())
		{
		var lastX=this._displayX;
		this._displayX=Math.min(this._displayX+distance,this.width()-this.screenTileX());
		this._parallaxX+=this._displayX-lastX
	}
};
Game_Map.prototype.scrollUp=function(distance)
	{
	if(this.isLoopVertical())
		{
		this._displayY+=$dataMap.height-distance;
		this._displayY%=$dataMap.height;
		if(this._parallaxLoopY)
			{
			this._parallaxY-=distance
		}
	}
	else if(this.height()>=this.screenTileY())
		{
		var lastY=this._displayY;
		this._displayY=Math.max(this._displayY-distance,0);
		this._parallaxY+=this._displayY-lastY
	}
};
Game_Map.prototype.isValid=function(x,y)
	{
	return x>=0&&x<this.width()&&y>=0&&y<this.height()
};
Game_Map.prototype.checkPassage=function(x,y,bit)
	{
	var flags=this.tilesetFlags();
	var tiles=this.allTiles(x,y);
	for(var i=0;
	i<tiles.length;
	i++)
		{
		var flag=flags[tiles[i]];
		if((flag&0x10)!==0)continue;
		if((flag&bit)===0)return true;
		if((flag&bit)===bit)return false
	}
	return false
};
Game_Map.prototype.tileId=function(x,y,z)
	{
	var width=$dataMap.width;
	var height=$dataMap.height;
	return $dataMap.data[(z*height+y)*width+x]||0
};
Game_Map.prototype.layeredTiles=function(x,y)
	{
	var tiles=[];
	for(var i=0;
	i<4;
	i++)
		{
		tiles.push(this.tileId(x,y,3-i))
	}
	return tiles
};
Game_Map.prototype.allTiles=function(x,y)
	{
	var tiles=this.tileEventsXy(x,y).map(function(event)
		{
		return event.tileId()
	}
	);
	return tiles.concat(this.layeredTiles(x,y))
};
Game_Map.prototype.autotileType=function(x,y,z)
	{
	var tileId=this.tileId(x,y,z);
	return tileId>=2048?Math.floor((tileId-2048)/48):-1
};
Game_Map.prototype.isPassable=function(x,y,d)
	{
	return this.checkPassage(x,y,(1<<(d/2-1))&0x0f)
};
Game_Map.prototype.isBoatPassable=function(x,y)
	{
	return this.checkPassage(x,y,0x0200)
};
Game_Map.prototype.isShipPassable=function(x,y)
	{
	return this.checkPassage(x,y,0x0400)
};
Game_Map.prototype.isAirshipLandOk=function(x,y)
	{
	return this.checkPassage(x,y,0x0800)&&this.checkPassage(x,y,0x0f)
};
Game_Map.prototype.checkLayeredTilesFlags=function(x,y,bit)
	{
	var flags=this.tilesetFlags();
	return this.layeredTiles(x,y).some(function(tileId)
		{
		return(flags[tileId]&bit)!==0
	}
	)
};
Game_Map.prototype.isLadder=function(x,y)
	{
	return this.isValid(x,y)&&this.checkLayeredTilesFlags(x,y,0x20)
};
Game_Map.prototype.isBush=function(x,y)
	{
	return this.isValid(x,y)&&this.checkLayeredTilesFlags(x,y,0x40)
};
Game_Map.prototype.isCounter=function(x,y)
	{
	return this.isValid(x,y)&&this.checkLayeredTilesFlags(x,y,0x80)
};
Game_Map.prototype.isDamageFloor=function(x,y)
	{
	return this.isValid(x,y)&&this.checkLayeredTilesFlags(x,y,0x100)
};
Game_Map.prototype.terrainTag=function(x,y)
	{
	if(this.isValid(x,y))
		{
		var flags=this.tilesetFlags();
		var tiles=this.layeredTiles(x,y);
		for(var i=0;
		i<tiles.length;
		i++)
			{
			var tag=flags[tiles[i]]>>12;
			if(tag>0)
				{
				return tag
			}
		}
	}
	return 0
};
Game_Map.prototype.regionId=function(x,y)
	{
	return this.isValid(x,y)?this.tileId(x,y,5):0
};
Game_Map.prototype.startScroll=function(direction,distance,speed)
	{
	this._scrollDirection=direction;
	this._scrollRest=distance;
	this._scrollSpeed=speed
};
Game_Map.prototype.isScrolling=function()
	{
	return this._scrollRest>0
};
Game_Map.prototype.update=function(sceneActive)
	{
	this.refreshIfNeeded();
	if(sceneActive)
		{
		this.updateInterpreter()
	}
	this.updateScroll();
	this.updateEvents();
	this.updateVehicles();
	this.updateParallax()
};
Game_Map.prototype.updateScroll=function()
	{
	if(this.isScrolling())
		{
		var lastX=this._displayX;
		var lastY=this._displayY;
		this.doScroll(this._scrollDirection,this.scrollDistance());
		if(this._displayX===lastX&&this._displayY===lastY)
			{
			this._scrollRest=0
		}
		else
			{
			this._scrollRest-=this.scrollDistance()
		}
	}
};
Game_Map.prototype.scrollDistance=function()
	{
	return Math.pow(2,this._scrollSpeed)/256
};
Game_Map.prototype.doScroll=function(direction,distance)
	{
	switch(direction)
		{
		case 2:this.scrollDown(distance);
		break;
		case 4:this.scrollLeft(distance);
		break;
		case 6:this.scrollRight(distance);
		break;
		case 8:this.scrollUp(distance);
		break
	}
};
Game_Map.prototype.updateEvents=function()
	{
	this.events().forEach(function(event)
		{
		event.update()
	}
	);
	this._commonEvents.forEach(function(event)
		{
		event.update()
	}
	)
};
Game_Map.prototype.updateVehicles=function()
	{
	this._vehicles.forEach(function(vehicle)
		{
		vehicle.update()
	}
	)
};
Game_Map.prototype.updateParallax=function()
	{
	if(this._parallaxLoopX)
		{
		this._parallaxX+=this._parallaxSx/this.tileWidth()/2
	}
	if(this._parallaxLoopY)
		{
		this._parallaxY+=this._parallaxSy/this.tileHeight()/2
	}
};
Game_Map.prototype.changeTileset=function(tilesetId)
	{
	this._tilesetId=tilesetId;
	this.refresh()
};
Game_Map.prototype.changeBattleback=function(battleback1Name,battleback2Name)
	{
	this._battleback1Name=battleback1Name;
	this._battleback2Name=battleback2Name
};
Game_Map.prototype.changeParallax=function(name,loopX,loopY,sx,sy)
	{
	this._parallaxName=name;
	this._parallaxZero=ImageManager.isZeroParallax(this._parallaxName);
	if(this._parallaxLoopX&&!loopX)
		{
		this._parallaxX=0
	}
	if(this._parallaxLoopY&&!loopY)
		{
		this._parallaxY=0
	}
	this._parallaxLoopX=loopX;
	this._parallaxLoopY=loopY;
	this._parallaxSx=sx;
	this._parallaxSy=sy
};
Game_Map.prototype.updateInterpreter=function()
	{
	for(;;
	)
		{
		this._interpreter.update();
		if(this._interpreter.isRunning())
			{
			return
		}
		if(this._interpreter.eventId()>0)
			{
			this.unlockEvent(this._interpreter.eventId());
			this._interpreter.clear()
		}
		if(!this.setupStartingEvent())
			{
			return
		}
	}
};
Game_Map.prototype.unlockEvent=function(eventId)
	{
	if(this._events[eventId])
		{
		this._events[eventId].unlock()
	}
};
Game_Map.prototype.setupStartingEvent=function()
	{
	this.refreshIfNeeded();
	if(this._interpreter.setupReservedCommonEvent())
		{
		return true
	}
	if(this.setupTestEvent())
		{
		return true
	}
	if(this.setupStartingMapEvent())
		{
		return true
	}
	if(this.setupAutorunCommonEvent())
		{
		return true
	}
	return false
};
Game_Map.prototype.setupTestEvent=function()
	{
	if($testEvent)
		{
		this._interpreter.setup($testEvent,0);
		$testEvent=null;
		return true
	}
	return false
};
Game_Map.prototype.setupStartingMapEvent=function()
	{
	var events=this.events();
	for(var i=0;
	i<events.length;
	i++)
		{
		var event=events[i];
		if(event.isStarting())
			{
			event.clearStartingFlag();
			this._interpreter.setup(event.list(),event.eventId());
			return true
		}
	}
	return false
};
Game_Map.prototype.setupAutorunCommonEvent=function()
	{
	for(var i=0;
	i<$dataCommonEvents.length;
	i++)
		{
		var event=$dataCommonEvents[i];
		if(event&&event.trigger===1&&$gameSwitches.value(event.switchId))
			{
			this._interpreter.setup(event.list);
			return true
		}
	}
	return false
};
Game_Map.prototype.isAnyEventStarting=function()
	{
	return this.events().some(function(event)
		{
		return event.isStarting()
	}
	)
};
function Game_CommonEvent()
	{
	this.initialize.apply(this,arguments)
}
Game_CommonEvent.prototype.initialize=function(commonEventId)
	{
	this._commonEventId=commonEventId;
	this.refresh()
};
Game_CommonEvent.prototype.event=function()
	{
	return $dataCommonEvents[this._commonEventId]
};
Game_CommonEvent.prototype.list=function()
	{
	return this.event().list
};
Game_CommonEvent.prototype.refresh=function()
	{
	if(this.isActive())
		{
		if(!this._interpreter)
			{
			this._interpreter=new Game_Interpreter()
		}
	}
	else
		{
		this._interpreter=null
	}
};
Game_CommonEvent.prototype.isActive=function()
	{
	var event=this.event();
	return event.trigger===2&&$gameSwitches.value(event.switchId)
};
Game_CommonEvent.prototype.update=function()
	{
	if(this._interpreter)
		{
		if(!this._interpreter.isRunning())
			{
			this._interpreter.setup(this.list())
		}
		this._interpreter.update()
	}
};
function Game_CharacterBase()
	{
	this.initialize.apply(this,arguments)
}
Object.defineProperties(Game_CharacterBase.prototype,
	{
	x:
		{
		get:function()
			{
			return this._x
		}
		,configurable:true
	}
	,y:
		{
		get:function()
			{
			return this._y
		}
		,configurable:true
	}
}
);
Game_CharacterBase.prototype.initialize=function()
	{
	this.initMembers()
};
Game_CharacterBase.prototype.initMembers=function()
	{
	this._x=0;
	this._y=0;
	this._realX=0;
	this._realY=0;
	this._moveSpeed=4;
	this._moveFrequency=6;
	this._opacity=255;
	this._blendMode=0;
	this._direction=2;
	this._pattern=1;
	this._priorityType=1;
	this._tileId=0;
	this._characterName='';
	this._characterIndex=0;
	this._isObjectCharacter=false;
	this._walkAnime=true;
	this._stepAnime=false;
	this._directionFix=false;
	this._through=false;
	this._transparent=false;
	this._bushDepth=0;
	this._animationId=0;
	this._balloonId=0;
	this._animationPlaying=false;
	this._balloonPlaying=false;
	this._animationCount=0;
	this._stopCount=0;
	this._jumpCount=0;
	this._jumpPeak=0;
	this._movementSuccess=true
};
Game_CharacterBase.prototype.pos=function(x,y)
	{
	return this._x===x&&this._y===y
};
Game_CharacterBase.prototype.posNt=function(x,y)
	{
	return this.pos(x,y)&&!this.isThrough()
};
Game_CharacterBase.prototype.moveSpeed=function()
	{
	return this._moveSpeed
};
Game_CharacterBase.prototype.setMoveSpeed=function(moveSpeed)
	{
	this._moveSpeed=moveSpeed
};
Game_CharacterBase.prototype.moveFrequency=function()
	{
	return this._moveFrequency
};
Game_CharacterBase.prototype.setMoveFrequency=function(moveFrequency)
	{
	this._moveFrequency=moveFrequency
};
Game_CharacterBase.prototype.opacity=function()
	{
	return this._opacity
};
Game_CharacterBase.prototype.setOpacity=function(opacity)
	{
	this._opacity=opacity
};
Game_CharacterBase.prototype.blendMode=function()
	{
	return this._blendMode
};
Game_CharacterBase.prototype.setBlendMode=function(blendMode)
	{
	this._blendMode=blendMode
};
Game_CharacterBase.prototype.isNormalPriority=function()
	{
	return this._priorityType===1
};
Game_CharacterBase.prototype.setPriorityType=function(priorityType)
	{
	this._priorityType=priorityType
};
Game_CharacterBase.prototype.isMoving=function()
	{
	return this._realX!==this._x||this._realY!==this._y
};
Game_CharacterBase.prototype.isJumping=function()
	{
	return this._jumpCount>0
};
Game_CharacterBase.prototype.jumpHeight=function()
	{
	return(this._jumpPeak*this._jumpPeak-Math.pow(Math.abs(this._jumpCount-this._jumpPeak),2))/2
};
Game_CharacterBase.prototype.isStopping=function()
	{
	return!this.isMoving()&&!this.isJumping()
};
Game_CharacterBase.prototype.checkStop=function(threshold)
	{
	return this._stopCount>threshold
};
Game_CharacterBase.prototype.resetStopCount=function()
	{
	this._stopCount=0
};
Game_CharacterBase.prototype.realMoveSpeed=function()
	{
	return this._moveSpeed+(this.isDashing()?1:0)
};
Game_CharacterBase.prototype.distancePerFrame=function()
	{
	return Math.pow(2,this.realMoveSpeed())/256
};
Game_CharacterBase.prototype.isDashing=function()
	{
	return false
};
Game_CharacterBase.prototype.isDebugThrough=function()
	{
	return false
};
Game_CharacterBase.prototype.straighten=function()
	{
	if(this.hasWalkAnime()||this.hasStepAnime())
		{
		this._pattern=1
	}
	this._animationCount=0
};
Game_CharacterBase.prototype.reverseDir=function(d)
	{
	return 10-d
};
Game_CharacterBase.prototype.canPass=function(x,y,d)
	{
	var x2=$gameMap.roundXWithDirection(x,d);
	var y2=$gameMap.roundYWithDirection(y,d);
	if(!$gameMap.isValid(x2,y2))
		{
		return false
	}
	if(this.isThrough()||this.isDebugThrough())
		{
		return true
	}
	if(!this.isMapPassable(x,y,d))
		{
		return false
	}
	if(this.isCollidedWithCharacters(x2,y2))
		{
		return false
	}
	return true
};
Game_CharacterBase.prototype.canPassDiagonally=function(x,y,horz,vert)
	{
	var x2=$gameMap.roundXWithDirection(x,horz);
	var y2=$gameMap.roundYWithDirection(y,vert);
	if(this.canPass(x,y,vert)&&this.canPass(x,y2,horz))
		{
		return true
	}
	if(this.canPass(x,y,horz)&&this.canPass(x2,y,vert))
		{
		return true
	}
	return false
};
Game_CharacterBase.prototype.isMapPassable=function(x,y,d)
	{
	var x2=$gameMap.roundXWithDirection(x,d);
	var y2=$gameMap.roundYWithDirection(y,d);
	var d2=this.reverseDir(d);
	return $gameMap.isPassable(x,y,d)&&$gameMap.isPassable(x2,y2,d2)
};
Game_CharacterBase.prototype.isCollidedWithCharacters=function(x,y)
	{
	return this.isCollidedWithEvents(x,y)||this.isCollidedWithVehicles(x,y)
};
Game_CharacterBase.prototype.isCollidedWithEvents=function(x,y)
	{
	var events=$gameMap.eventsXyNt(x,y);
	return events.some(function(event)
		{
		return event.isNormalPriority()
	}
	)
};
Game_CharacterBase.prototype.isCollidedWithVehicles=function(x,y)
	{
	return $gameMap.boat().posNt(x,y)||$gameMap.ship().posNt(x,y)
};
Game_CharacterBase.prototype.setPosition=function(x,y)
	{
	this._x=Math.round(x);
	this._y=Math.round(y);
	this._realX=x;
	this._realY=y
};
Game_CharacterBase.prototype.copyPosition=function(character)
	{
	this._x=character._x;
	this._y=character._y;
	this._realX=character._realX;
	this._realY=character._realY;
	this._direction=character._direction
};
Game_CharacterBase.prototype.locate=function(x,y)
	{
	this.setPosition(x,y);
	this.straighten();
	this.refreshBushDepth()
};
Game_CharacterBase.prototype.direction=function()
	{
	return this._direction
};
Game_CharacterBase.prototype.setDirection=function(d)
	{
	if(!this.isDirectionFixed()&&d)
		{
		this._direction=d
	}
	this.resetStopCount()
};
Game_CharacterBase.prototype.isTile=function()
	{
	return this._tileId>0&&this._priorityType===0
};
Game_CharacterBase.prototype.isObjectCharacter=function()
	{
	return this._isObjectCharacter
};
Game_CharacterBase.prototype.shiftY=function()
	{
	return this.isObjectCharacter()?0:6
};
Game_CharacterBase.prototype.scrolledX=function()
	{
	return $gameMap.adjustX(this._realX)
};
Game_CharacterBase.prototype.scrolledY=function()
	{
	return $gameMap.adjustY(this._realY)
};
Game_CharacterBase.prototype.screenX=function()
	{
	var tw=$gameMap.tileWidth();
	return Math.round(this.scrolledX()*tw+tw/2)
};
Game_CharacterBase.prototype.screenY=function()
	{
	var th=$gameMap.tileHeight();
	return Math.round(this.scrolledY()*th+th-this.shiftY()-this.jumpHeight())
};
Game_CharacterBase.prototype.screenZ=function()
	{
	return this._priorityType*2+1
};
Game_CharacterBase.prototype.isNearTheScreen=function()
	{
	var gw=Graphics.width;
	var gh=Graphics.height;
	var tw=$gameMap.tileWidth();
	var th=$gameMap.tileHeight();
	var px=this.scrolledX()*tw+tw/2-gw/2;
	var py=this.scrolledY()*th+th/2-gh/2;
	return px>=-gw&&px<=gw&&py>=-gh&&py<=gh
};
Game_CharacterBase.prototype.update=function()
	{
	if(this.isStopping())
		{
		this.updateStop()
	}
	if(this.isJumping())
		{
		this.updateJump()
	}
	else if(this.isMoving())
		{
		this.updateMove()
	}
	this.updateAnimation()
};
Game_CharacterBase.prototype.updateStop=function()
	{
	this._stopCount++
};
Game_CharacterBase.prototype.updateJump=function()
	{
	this._jumpCount--;
	this._realX=(this._realX*this._jumpCount+this._x)/(this._jumpCount+1.0);
	this._realY=(this._realY*this._jumpCount+this._y)/(this._jumpCount+1.0);
	this.refreshBushDepth();
	if(this._jumpCount===0)
		{
		this._realX=this._x=$gameMap.roundX(this._x);
		this._realY=this._y=$gameMap.roundY(this._y)
	}
};
Game_CharacterBase.prototype.updateMove=function()
	{
	if(this._x<this._realX)
		{
		this._realX=Math.max(this._realX-this.distancePerFrame(),this._x)
	}
	if(this._x>this._realX)
		{
		this._realX=Math.min(this._realX+this.distancePerFrame(),this._x)
	}
	if(this._y<this._realY)
		{
		this._realY=Math.max(this._realY-this.distancePerFrame(),this._y)
	}
	if(this._y>this._realY)
		{
		this._realY=Math.min(this._realY+this.distancePerFrame(),this._y)
	}
	if(!this.isMoving())
		{
		this.refreshBushDepth()
	}
};
Game_CharacterBase.prototype.updateAnimation=function()
	{
	this.updateAnimationCount();
	if(this._animationCount>=this.animationWait())
		{
		this.updatePattern();
		this._animationCount=0
	}
};
Game_CharacterBase.prototype.animationWait=function()
	{
	return(9-this.realMoveSpeed())*3
};
Game_CharacterBase.prototype.updateAnimationCount=function()
	{
	if(this.isMoving()&&this.hasWalkAnime())
		{
		this._animationCount+=1.5
	}
	else if(this.hasStepAnime()||!this.isOriginalPattern())
		{
		this._animationCount++
	}
};
Game_CharacterBase.prototype.updatePattern=function()
	{
	if(!this.hasStepAnime()&&this._stopCount>0)
		{
		this.resetPattern()
	}
	else
		{
		this._pattern=(this._pattern+1)%this.maxPattern()
	}
};
Game_CharacterBase.prototype.maxPattern=function()
	{
	return 4
};
Game_CharacterBase.prototype.pattern=function()
	{
	return this._pattern<3?this._pattern:1
};
Game_CharacterBase.prototype.setPattern=function(pattern)
	{
	this._pattern=pattern
};
Game_CharacterBase.prototype.isOriginalPattern=function()
	{
	return this.pattern()===1
};
Game_CharacterBase.prototype.resetPattern=function()
	{
	this.setPattern(1)
};
Game_CharacterBase.prototype.refreshBushDepth=function()
	{
	if(this.isNormalPriority()&&!this.isObjectCharacter()&&this.isOnBush()&&!this.isJumping())
		{
		if(!this.isMoving())
			{
			this._bushDepth=12
		}
	}
	else
		{
		this._bushDepth=0
	}
};
Game_CharacterBase.prototype.isOnLadder=function()
	{
	return $gameMap.isLadder(this._x,this._y)
};
Game_CharacterBase.prototype.isOnBush=function()
	{
	return $gameMap.isBush(this._x,this._y)
};
Game_CharacterBase.prototype.terrainTag=function()
	{
	return $gameMap.terrainTag(this._x,this._y)
};
Game_CharacterBase.prototype.regionId=function()
	{
	return $gameMap.regionId(this._x,this._y)
};
Game_CharacterBase.prototype.increaseSteps=function()
	{
	if(this.isOnLadder())
		{
		this.setDirection(8)
	}
	this.resetStopCount();
	this.refreshBushDepth()
};
Game_CharacterBase.prototype.tileId=function()
	{
	return this._tileId
};
Game_CharacterBase.prototype.characterName=function()
	{
	return this._characterName
};
Game_CharacterBase.prototype.characterIndex=function()
	{
	return this._characterIndex
};
Game_CharacterBase.prototype.setImage=function(characterName,characterIndex)
	{
	this._tileId=0;
	this._characterName=characterName;
	this._characterIndex=characterIndex;
	this._isObjectCharacter=ImageManager.isObjectCharacter(characterName)
};
Game_CharacterBase.prototype.setTileImage=function(tileId)
	{
	this._tileId=tileId;
	this._characterName='';
	this._characterIndex=0;
	this._isObjectCharacter=true
};
Game_CharacterBase.prototype.checkEventTriggerTouchFront=function(d)
	{
	var x2=$gameMap.roundXWithDirection(this._x,d);
	var y2=$gameMap.roundYWithDirection(this._y,d);
	this.checkEventTriggerTouch(x2,y2)
};
Game_CharacterBase.prototype.checkEventTriggerTouch=function(x,y)
	{
	return false
};
Game_CharacterBase.prototype.isMovementSucceeded=function(x,y)
	{
	return this._movementSuccess
};
Game_CharacterBase.prototype.setMovementSuccess=function(success)
	{
	this._movementSuccess=success
};
Game_CharacterBase.prototype.moveStraight=function(d)
	{
	this.setMovementSuccess(this.canPass(this._x,this._y,d));
	if(this.isMovementSucceeded())
		{
		this.setDirection(d);
		this._x=$gameMap.roundXWithDirection(this._x,d);
		this._y=$gameMap.roundYWithDirection(this._y,d);
		this._realX=$gameMap.xWithDirection(this._x,this.reverseDir(d));
		this._realY=$gameMap.yWithDirection(this._y,this.reverseDir(d));
		this.increaseSteps()
	}
	else
		{
		this.setDirection(d);
		this.checkEventTriggerTouchFront(d)
	}
};
Game_CharacterBase.prototype.moveDiagonally=function(horz,vert)
	{
	this.setMovementSuccess(this.canPassDiagonally(this._x,this._y,horz,vert));
	if(this.isMovementSucceeded())
		{
		this._x=$gameMap.roundXWithDirection(this._x,horz);
		this._y=$gameMap.roundYWithDirection(this._y,vert);
		this._realX=$gameMap.xWithDirection(this._x,this.reverseDir(horz));
		this._realY=$gameMap.yWithDirection(this._y,this.reverseDir(vert));
		this.increaseSteps()
	}
	if(this._direction===this.reverseDir(horz))
		{
		this.setDirection(horz)
	}
	if(this._direction===this.reverseDir(vert))
		{
		this.setDirection(vert)
	}
};
Game_CharacterBase.prototype.jump=function(xPlus,yPlus)
	{
	if(Math.abs(xPlus)>Math.abs(yPlus))
		{
		if(xPlus!==0)
			{
			this.setDirection(xPlus<0?4:6)
		}
	}
	else
		{
		if(yPlus!==0)
			{
			this.setDirection(yPlus<0?8:2)
		}
	}
	this._x+=xPlus;
	this._y+=yPlus;
	var distance=Math.round(Math.sqrt(xPlus*xPlus+yPlus*yPlus));
	this._jumpPeak=10+distance-this._moveSpeed;
	this._jumpCount=this._jumpPeak*2;
	this.resetStopCount();
	this.straighten()
};
Game_CharacterBase.prototype.hasWalkAnime=function()
	{
	return this._walkAnime
};
Game_CharacterBase.prototype.setWalkAnime=function(walkAnime)
	{
	this._walkAnime=walkAnime
};
Game_CharacterBase.prototype.hasStepAnime=function()
	{
	return this._stepAnime
};
Game_CharacterBase.prototype.setStepAnime=function(stepAnime)
	{
	this._stepAnime=stepAnime
};
Game_CharacterBase.prototype.isDirectionFixed=function()
	{
	return this._directionFix
};
Game_CharacterBase.prototype.setDirectionFix=function(directionFix)
	{
	this._directionFix=directionFix
};
Game_CharacterBase.prototype.isThrough=function()
	{
	return this._through
};
Game_CharacterBase.prototype.setThrough=function(through)
	{
	this._through=through
};
Game_CharacterBase.prototype.isTransparent=function()
	{
	return this._transparent
};
Game_CharacterBase.prototype.bushDepth=function()
	{
	return this._bushDepth
};
Game_CharacterBase.prototype.setTransparent=function(transparent)
	{
	this._transparent=transparent
};
Game_CharacterBase.prototype.requestAnimation=function(animationId)
	{
	this._animationId=animationId
};
Game_CharacterBase.prototype.requestBalloon=function(balloonId)
	{
	this._balloonId=balloonId
};
Game_CharacterBase.prototype.animationId=function()
	{
	return this._animationId
};
Game_CharacterBase.prototype.balloonId=function()
	{
	return this._balloonId
};
Game_CharacterBase.prototype.startAnimation=function()
	{
	this._animationId=0;
	this._animationPlaying=true
};
Game_CharacterBase.prototype.startBalloon=function()
	{
	this._balloonId=0;
	this._balloonPlaying=true
};
Game_CharacterBase.prototype.isAnimationPlaying=function()
	{
	return this._animationId>0||this._animationPlaying
};
Game_CharacterBase.prototype.isBalloonPlaying=function()
	{
	return this._balloonId>0||this._balloonPlaying
};
Game_CharacterBase.prototype.endAnimation=function()
	{
	this._animationPlaying=false
};
Game_CharacterBase.prototype.endBalloon=function()
	{
	this._balloonPlaying=false
};
function Game_Character()
	{
	this.initialize.apply(this,arguments)
}
Game_Character.prototype=Object.create(Game_CharacterBase.prototype);
Game_Character.prototype.constructor=Game_Character;
Game_Character.ROUTE_END=0;
Game_Character.ROUTE_MOVE_DOWN=1;
Game_Character.ROUTE_MOVE_LEFT=2;
Game_Character.ROUTE_MOVE_RIGHT=3;
Game_Character.ROUTE_MOVE_UP=4;
Game_Character.ROUTE_MOVE_LOWER_L=5;
Game_Character.ROUTE_MOVE_LOWER_R=6;
Game_Character.ROUTE_MOVE_UPPER_L=7;
Game_Character.ROUTE_MOVE_UPPER_R=8;
Game_Character.ROUTE_MOVE_RANDOM=9;
Game_Character.ROUTE_MOVE_TOWARD=10;
Game_Character.ROUTE_MOVE_AWAY=11;
Game_Character.ROUTE_MOVE_FORWARD=12;
Game_Character.ROUTE_MOVE_BACKWARD=13;
Game_Character.ROUTE_JUMP=14;
Game_Character.ROUTE_WAIT=15;
Game_Character.ROUTE_TURN_DOWN=16;
Game_Character.ROUTE_TURN_LEFT=17;
Game_Character.ROUTE_TURN_RIGHT=18;
Game_Character.ROUTE_TURN_UP=19;
Game_Character.ROUTE_TURN_90D_R=20;
Game_Character.ROUTE_TURN_90D_L=21;
Game_Character.ROUTE_TURN_180D=22;
Game_Character.ROUTE_TURN_90D_R_L=23;
Game_Character.ROUTE_TURN_RANDOM=24;
Game_Character.ROUTE_TURN_TOWARD=25;
Game_Character.ROUTE_TURN_AWAY=26;
Game_Character.ROUTE_SWITCH_ON=27;
Game_Character.ROUTE_SWITCH_OFF=28;
Game_Character.ROUTE_CHANGE_SPEED=29;
Game_Character.ROUTE_CHANGE_FREQ=30;
Game_Character.ROUTE_WALK_ANIME_ON=31;
Game_Character.ROUTE_WALK_ANIME_OFF=32;
Game_Character.ROUTE_STEP_ANIME_ON=33;
Game_Character.ROUTE_STEP_ANIME_OFF=34;
Game_Character.ROUTE_DIR_FIX_ON=35;
Game_Character.ROUTE_DIR_FIX_OFF=36;
Game_Character.ROUTE_THROUGH_ON=37;
Game_Character.ROUTE_THROUGH_OFF=38;
Game_Character.ROUTE_TRANSPARENT_ON=39;
Game_Character.ROUTE_TRANSPARENT_OFF=40;
Game_Character.ROUTE_CHANGE_IMAGE=41;
Game_Character.ROUTE_CHANGE_OPACITY=42;
Game_Character.ROUTE_CHANGE_BLEND_MODE=43;
Game_Character.ROUTE_PLAY_SE=44;
Game_Character.ROUTE_SCRIPT=45;
Game_Character.prototype.initialize=function()
	{
	Game_CharacterBase.prototype.initialize.call(this)
};
Game_Character.prototype.initMembers=function()
	{
	Game_CharacterBase.prototype.initMembers.call(this);
	this._moveRouteForcing=false;
	this._moveRoute=null;
	this._moveRouteIndex=0;
	this._originalMoveRoute=null;
	this._originalMoveRouteIndex=0;
	this._waitCount=0
};
Game_Character.prototype.memorizeMoveRoute=function()
	{
	this._originalMoveRoute=this._moveRoute;
	this._originalMoveRouteIndex=this._moveRouteIndex
};
Game_Character.prototype.restoreMoveRoute=function()
	{
	this._moveRoute=this._originalMoveRoute;
	this._moveRouteIndex=this._originalMoveRouteIndex;
	this._originalMoveRoute=null
};
Game_Character.prototype.isMoveRouteForcing=function()
	{
	return this._moveRouteForcing
};
Game_Character.prototype.setMoveRoute=function(moveRoute)
	{
	this._moveRoute=moveRoute;
	this._moveRouteIndex=0;
	this._moveRouteForcing=false
};
Game_Character.prototype.forceMoveRoute=function(moveRoute)
	{
	if(!this._originalMoveRoute)
		{
		this.memorizeMoveRoute()
	}
	this._moveRoute=moveRoute;
	this._moveRouteIndex=0;
	this._moveRouteForcing=true;
	this._waitCount=0
};
Game_Character.prototype.updateStop=function()
	{
	Game_CharacterBase.prototype.updateStop.call(this);
	if(this._moveRouteForcing)
		{
		this.updateRoutineMove()
	}
};
Game_Character.prototype.updateRoutineMove=function()
	{
	if(this._waitCount>0)
		{
		this._waitCount--
	}
	else
		{
		this.setMovementSuccess(true);
		var command=this._moveRoute.list[this._moveRouteIndex];
		if(command)
			{
			this.processMoveCommand(command);
			this.advanceMoveRouteIndex()
		}
	}
};
Game_Character.prototype.processMoveCommand=function(command)
	{
	var gc=Game_Character;
	var params=command.parameters;
	switch(command.code)
		{
		case gc.ROUTE_END:this.processRouteEnd();
		break;
		case gc.ROUTE_MOVE_DOWN:this.moveStraight(2);
		break;
		case gc.ROUTE_MOVE_LEFT:this.moveStraight(4);
		break;
		case gc.ROUTE_MOVE_RIGHT:this.moveStraight(6);
		break;
		case gc.ROUTE_MOVE_UP:this.moveStraight(8);
		break;
		case gc.ROUTE_MOVE_LOWER_L:this.moveDiagonally(4,2);
		break;
		case gc.ROUTE_MOVE_LOWER_R:this.moveDiagonally(6,2);
		break;
		case gc.ROUTE_MOVE_UPPER_L:this.moveDiagonally(4,8);
		break;
		case gc.ROUTE_MOVE_UPPER_R:this.moveDiagonally(6,8);
		break;
		case gc.ROUTE_MOVE_RANDOM:this.moveRandom();
		break;
		case gc.ROUTE_MOVE_TOWARD:this.moveTowardPlayer();
		break;
		case gc.ROUTE_MOVE_AWAY:this.moveAwayFromPlayer();
		break;
		case gc.ROUTE_MOVE_FORWARD:this.moveForward();
		break;
		case gc.ROUTE_MOVE_BACKWARD:this.moveBackward();
		break;
		case gc.ROUTE_JUMP:this.jump(params[0],params[1]);
		break;
		case gc.ROUTE_WAIT:this._waitCount=params[0]-1;
		break;
		case gc.ROUTE_TURN_DOWN:this.setDirection(2);
		break;
		case gc.ROUTE_TURN_LEFT:this.setDirection(4);
		break;
		case gc.ROUTE_TURN_RIGHT:this.setDirection(6);
		break;
		case gc.ROUTE_TURN_UP:this.setDirection(8);
		break;
		case gc.ROUTE_TURN_90D_R:this.turnRight90();
		break;
		case gc.ROUTE_TURN_90D_L:this.turnLeft90();
		break;
		case gc.ROUTE_TURN_180D:this.turn180();
		break;
		case gc.ROUTE_TURN_90D_R_L:this.turnRightOrLeft90();
		break;
		case gc.ROUTE_TURN_RANDOM:this.turnRandom();
		break;
		case gc.ROUTE_TURN_TOWARD:this.turnTowardPlayer();
		break;
		case gc.ROUTE_TURN_AWAY:this.turnAwayFromPlayer();
		break;
		case gc.ROUTE_SWITCH_ON:$gameSwitches.setValue(params[0],true);
		break;
		case gc.ROUTE_SWITCH_OFF:$gameSwitches.setValue(params[0],false);
		break;
		case gc.ROUTE_CHANGE_SPEED:this.setMoveSpeed(params[0]);
		break;
		case gc.ROUTE_CHANGE_FREQ:this.setMoveFrequency(params[0]);
		break;
		case gc.ROUTE_WALK_ANIME_ON:this.setWalkAnime(true);
		break;
		case gc.ROUTE_WALK_ANIME_OFF:this.setWalkAnime(false);
		break;
		case gc.ROUTE_STEP_ANIME_ON:this.setStepAnime(true);
		break;
		case gc.ROUTE_STEP_ANIME_OFF:this.setStepAnime(false);
		break;
		case gc.ROUTE_DIR_FIX_ON:this.setDirectionFix(true);
		break;
		case gc.ROUTE_DIR_FIX_OFF:this.setDirectionFix(false);
		break;
		case gc.ROUTE_THROUGH_ON:this.setThrough(true);
		break;
		case gc.ROUTE_THROUGH_OFF:this.setThrough(false);
		break;
		case gc.ROUTE_TRANSPARENT_ON:this.setTransparent(true);
		break;
		case gc.ROUTE_TRANSPARENT_OFF:this.setTransparent(false);
		break;
		case gc.ROUTE_CHANGE_IMAGE:this.setImage(params[0],params[1]);
		break;
		case gc.ROUTE_CHANGE_OPACITY:this.setOpacity(params[0]);
		break;
		case gc.ROUTE_CHANGE_BLEND_MODE:this.setBlendMode(params[0]);
		break;
		case gc.ROUTE_PLAY_SE:AudioManager.playSe(params[0]);
		break;
		case gc.ROUTE_SCRIPT:eval(params[0]);
		break
	}
};
Game_Character.prototype.deltaXFrom=function(x)
	{
	return $gameMap.deltaX(this.x,x)
};
Game_Character.prototype.deltaYFrom=function(y)
	{
	return $gameMap.deltaY(this.y,y)
};
Game_Character.prototype.moveRandom=function()
	{
	var d=2+Math.randomInt(4)*2;
	if(this.canPass(this.x,this.y,d))
		{
		this.moveStraight(d)
	}
};
Game_Character.prototype.moveTowardCharacter=function(character)
	{
	var sx=this.deltaXFrom(character.x);
	var sy=this.deltaYFrom(character.y);
	if(Math.abs(sx)>Math.abs(sy))
		{
		this.moveStraight(sx>0?4:6);
		if(!this.isMovementSucceeded()&&sy!==0)
			{
			this.moveStraight(sy>0?8:2)
		}
	}
	else if(sy!==0)
		{
		this.moveStraight(sy>0?8:2);
		if(!this.isMovementSucceeded()&&sx!==0)
			{
			this.moveStraight(sx>0?4:6)
		}
	}
};
Game_Character.prototype.moveAwayFromCharacter=function(character)
	{
	var sx=this.deltaXFrom(character.x);
	var sy=this.deltaYFrom(character.y);
	if(Math.abs(sx)>Math.abs(sy))
		{
		this.moveStraight(sx>0?6:4);
		if(!this.isMovementSucceeded()&&sy!==0)
			{
			this.moveStraight(sy>0?2:8)
		}
	}
	else if(sy!==0)
		{
		this.moveStraight(sy>0?2:8);
		if(!this.isMovementSucceeded()&&sx!==0)
			{
			this.moveStraight(sx>0?6:4)
		}
	}
};
Game_Character.prototype.turnTowardCharacter=function(character)
	{
	var sx=this.deltaXFrom(character.x);
	var sy=this.deltaYFrom(character.y);
	if(Math.abs(sx)>Math.abs(sy))
		{
		this.setDirection(sx>0?4:6)
	}
	else if(sy!==0)
		{
		this.setDirection(sy>0?8:2)
	}
};
Game_Character.prototype.turnAwayFromCharacter=function(character)
	{
	var sx=this.deltaXFrom(character.x);
	var sy=this.deltaYFrom(character.y);
	if(Math.abs(sx)>Math.abs(sy))
		{
		this.setDirection(sx>0?6:4)
	}
	else if(sy!==0)
		{
		this.setDirection(sy>0?2:8)
	}
};
Game_Character.prototype.turnTowardPlayer=function()
	{
	this.turnTowardCharacter($gamePlayer)
};
Game_Character.prototype.turnAwayFromPlayer=function()
	{
	this.turnAwayFromCharacter($gamePlayer)
};
Game_Character.prototype.moveTowardPlayer=function()
	{
	this.moveTowardCharacter($gamePlayer)
};
Game_Character.prototype.moveAwayFromPlayer=function()
	{
	this.moveAwayFromCharacter($gamePlayer)
};
Game_Character.prototype.moveForward=function()
	{
	this.moveStraight(this.direction())
};
Game_Character.prototype.moveBackward=function()
	{
	var lastDirectionFix=this.isDirectionFixed();
	this.setDirectionFix(true);
	this.moveStraight(this.reverseDir(this.direction()));
	this.setDirectionFix(lastDirectionFix)
};
Game_Character.prototype.processRouteEnd=function()
	{
	if(this._moveRoute.repeat)
		{
		this._moveRouteIndex=-1
	}
	else if(this._moveRouteForcing)
		{
		this._moveRouteForcing=false;
		this.restoreMoveRoute()
	}
};
Game_Character.prototype.advanceMoveRouteIndex=function()
	{
	var moveRoute=this._moveRoute;
	if(moveRoute&&(this.isMovementSucceeded()||moveRoute.skippable))
		{
		var numCommands=moveRoute.list.length-1;
		this._moveRouteIndex++;
		if(moveRoute.repeat&&this._moveRouteIndex>=numCommands)
			{
			this._moveRouteIndex=0
		}
	}
};
Game_Character.prototype.turnRight90=function()
	{
	switch(this.direction())
		{
		case 2:this.setDirection(4);
		break;
		case 4:this.setDirection(8);
		break;
		case 6:this.setDirection(2);
		break;
		case 8:this.setDirection(6);
		break
	}
};
Game_Character.prototype.turnLeft90=function()
	{
	switch(this.direction())
		{
		case 2:this.setDirection(6);
		break;
		case 4:this.setDirection(2);
		break;
		case 6:this.setDirection(8);
		break;
		case 8:this.setDirection(4);
		break
	}
};
Game_Character.prototype.turn180=function()
	{
	this.setDirection(this.reverseDir(this.direction()))
};
Game_Character.prototype.turnRightOrLeft90=function()
	{
	switch(Math.randomInt(2))
		{
		case 0:this.turnRight90();
		break;
		case 1:this.turnLeft90();
		break
	}
};
Game_Character.prototype.turnRandom=function()
	{
	this.setDirection(2+Math.randomInt(4)*2)
};
Game_Character.prototype.swap=function(character)
	{
	var newX=character.x;
	var newY=character.y;
	character.locate(this.x,this.y);
	this.locate(newX,newY)
};
Game_Character.prototype.findDirectionTo=function(goalX,goalY)
	{
	var searchLimit=this.searchLimit();
	var mapWidth=$gameMap.width();
	var nodeList=[];
	var openList=[];
	var closedList=[];
	var start=
		{
	};
	var best=start;
	if(this.x===goalX&&this.y===goalY)
		{
		return 0
	}
	start.parent=null;
	start.x=this.x;
	start.y=this.y;
	start.g=0;
	start.f=$gameMap.distance(start.x,start.y,goalX,goalY);
	nodeList.push(start);
	openList.push(start.y*mapWidth+start.x);
	while(nodeList.length>0)
		{
		var bestIndex=0;
		for(var i=0;
		i<nodeList.length;
		i++)
			{
			if(nodeList[i].f<nodeList[bestIndex].f)
				{
				bestIndex=i
			}
		}
		var current=nodeList[bestIndex];
		var x1=current.x;
		var y1=current.y;
		var pos1=y1*mapWidth+x1;
		var g1=current.g;
		nodeList.splice(bestIndex,1);
		openList.splice(openList.indexOf(pos1),1);
		closedList.push(pos1);
		if(current.x===goalX&&current.y===goalY)
			{
			best=current;
			goaled=true;
			break
		}
		if(g1>=searchLimit)
			{
			continue
		}
		for(var j=0;
		j<4;
		j++)
			{
			var direction=2+j*2;
			var x2=$gameMap.roundXWithDirection(x1,direction);
			var y2=$gameMap.roundYWithDirection(y1,direction);
			var pos2=y2*mapWidth+x2;
			if(closedList.contains(pos2))
				{
				continue
			}
			if(!this.canPass(x1,y1,direction))
				{
				continue
			}
			var g2=g1+1;
			var index2=openList.indexOf(pos2);
			if(index2<0||g2<nodeList[index2].g)
				{
				var neighbor;
				if(index2>=0)
					{
					neighbor=nodeList[index2]
				}
				else
					{
					neighbor=
						{
					};
					nodeList.push(neighbor);
					openList.push(pos2)
				}
				neighbor.parent=current;
				neighbor.x=x2;
				neighbor.y=y2;
				neighbor.g=g2;
				neighbor.f=g2+$gameMap.distance(x2,y2,goalX,goalY);
				if(!best||neighbor.f-neighbor.g<best.f-best.g)
					{
					best=neighbor
				}
			}
		}
	}
	var node=best;
	while(node.parent&&node.parent!==start)
		{
		node=node.parent
	}
	var deltaX1=$gameMap.deltaX(node.x,start.x);
	var deltaY1=$gameMap.deltaY(node.y,start.y);
	if(deltaY1>0)
		{
		return 2
	}
	else if(deltaX1<0)
		{
		return 4
	}
	else if(deltaX1>0)
		{
		return 6
	}
	else if(deltaY1<0)
		{
		return 8
	}
	var deltaX2=this.deltaXFrom(goalX);
	var deltaY2=this.deltaYFrom(goalY);
	if(Math.abs(deltaX2)>Math.abs(deltaY2))
		{
		return deltaX2>0?4:6
	}
	else if(deltaY2!==0)
		{
		return deltaY2>0?8:2
	}
	return 0
};
Game_Character.prototype.searchLimit=function()
	{
	return 12
};
function Game_Player()
	{
	this.initialize.apply(this,arguments)
}
Game_Player.prototype=Object.create(Game_Character.prototype);
Game_Player.prototype.constructor=Game_Player;
Game_Player.prototype.initialize=function()
	{
	Game_Character.prototype.initialize.call(this);
	this.setTransparent($dataSystem.optTransparent)
};
Game_Player.prototype.initMembers=function()
	{
	Game_Character.prototype.initMembers.call(this);
	this._vehicleType='walk';
	this._vehicleGettingOn=false;
	this._vehicleGettingOff=false;
	this._dashing=false;
	this._needsMapReload=false;
	this._transferring=false;
	this._newMapId=0;
	this._newX=0;
	this._newY=0;
	this._newDirection=0;
	this._fadeType=0;
	this._followers=new Game_Followers();
	this._encounterCount=0
};
Game_Player.prototype.clearTransferInfo=function()
	{
	this._transferring=false;
	this._newMapId=0;
	this._newX=0;
	this._newY=0;
	this._newDirection=0
};
Game_Player.prototype.followers=function()
	{
	return this._followers
};
Game_Player.prototype.refresh=function()
	{
	var actor=$gameParty.leader();
	var characterName=actor?actor.characterName():'';
	var characterIndex=actor?actor.characterIndex():0;
	this.setImage(characterName,characterIndex);
	this._followers.refresh()
};
Game_Player.prototype.isStopping=function()
	{
	if(this._vehicleGettingOn||this._vehicleGettingOff)
		{
		return false
	}
	return Game_Character.prototype.isStopping.call(this)
};
Game_Player.prototype.reserveTransfer=function(mapId,x,y,d,fadeType)
	{
	this._transferring=true;
	this._newMapId=mapId;
	this._newX=x;
	this._newY=y;
	this._newDirection=d;
	this._fadeType=fadeType
};
Game_Player.prototype.requestMapReload=function()
	{
	this._needsMapReload=true
};
Game_Player.prototype.isTransferring=function()
	{
	return this._transferring
};
Game_Player.prototype.newMapId=function()
	{
	return this._newMapId
};
Game_Player.prototype.fadeType=function()
	{
	return this._fadeType
};
Game_Player.prototype.performTransfer=function()
	{
	if(this.isTransferring())
		{
		this.setDirection(this._newDirection);
		if(this._newMapId!==$gameMap.mapId()||this._needsMapReload)
			{
			$gameMap.setup(this._newMapId);
			this._needsMapReload=false
		}
		this.locate(this._newX,this._newY);
		this.refresh();
		this.clearTransferInfo()
	}
};
Game_Player.prototype.isMapPassable=function(x,y,d)
	{
	var vehicle=this.vehicle();
	if(vehicle)
		{
		return vehicle.isMapPassable(x,y,d)
	}
	else
		{
		return Game_Character.prototype.isMapPassable.call(this,x,y,d)
	}
};
Game_Player.prototype.vehicle=function()
	{
	return $gameMap.vehicle(this._vehicleType)
};
Game_Player.prototype.isInBoat=function()
	{
	return this._vehicleType==='boat'
};
Game_Player.prototype.isInShip=function()
	{
	return this._vehicleType==='ship'
};
Game_Player.prototype.isInAirship=function()
	{
	return this._vehicleType==='airship'
};
Game_Player.prototype.isInVehicle=function()
	{
	return this.isInBoat()||this.isInShip()||this.isInAirship()
};
Game_Player.prototype.isNormal=function()
	{
	return this._vehicleType==='walk'&&!this.isMoveRouteForcing()
};
Game_Player.prototype.isDashing=function()
	{
	return this._dashing
};
Game_Player.prototype.isDebugThrough=function()
	{
	return Input.isPressed('control')&&$gameTemp.isPlaytest()
};
Game_Player.prototype.isCollided=function(x,y)
	{
	if(this.isThrough())
		{
		return false
	}
	else
		{
		return this.pos(x,y)||this._followers.isSomeoneCollided(x,y)
	}
};
Game_Player.prototype.centerX=function()
	{
	return(Graphics.width/$gameMap.tileWidth()-1)/2.0
};
Game_Player.prototype.centerY=function()
	{
	return(Graphics.height/$gameMap.tileHeight()-1)/2.0
};
Game_Player.prototype.center=function(x,y)
	{
	return $gameMap.setDisplayPos(x-this.centerX(),y-this.centerY())
};
Game_Player.prototype.locate=function(x,y)
	{
	Game_Character.prototype.locate.call(this,x,y);
	this.center(x,y);
	this.makeEncounterCount();
	if(this.isInVehicle())
		{
		this.vehicle().refresh()
	}
	this._followers.synchronize(x,y,this.direction())
};
Game_Player.prototype.increaseSteps=function()
	{
	Game_Character.prototype.increaseSteps.call(this);
	if(this.isNormal())
		{
		$gameParty.increaseSteps()
	}
};
Game_Player.prototype.makeEncounterCount=function()
	{
	var n=$gameMap.encounterStep();
	this._encounterCount=Math.randomInt(n)+Math.randomInt(n)+1
};
Game_Player.prototype.makeEncounterTroopId=function()
	{
	var encounterList=[];
	var weightSum=0;
	$gameMap.encounterList().forEach(function(encounter)
		{
		if(this.meetsEncounterConditions(encounter))
			{
			encounterList.push(encounter);
			weightSum+=encounter.weight
		}
	}
	,this);
	if(weightSum>0)
		{
		var value=Math.randomInt(weightSum);
		for(var i=0;
		i<encounterList.length;
		i++)
			{
			value-=encounterList[i].weight;
			if(value<0)
				{
				return encounterList[i].troopId
			}
		}
	}
	return 0
};
Game_Player.prototype.meetsEncounterConditions=function(encounter)
	{
	return(encounter.regionSet.length===0||encounter.regionSet.contains(this.regionId()))
};
Game_Player.prototype.executeEncounter=function()
	{
	if(!$gameMap.isEventRunning()&&this._encounterCount<=0)
		{
		this.makeEncounterCount();
		var troopId=this.makeEncounterTroopId();
		if($dataTroops[troopId])
			{
			BattleManager.setup(troopId,true,false);
			BattleManager.onEncounter();
			return true
		}
		else
			{
			return false
		}
	}
	else
		{
		return false
	}
};
Game_Player.prototype.startMapEvent=function(x,y,triggers,normal)
	{
	if(!$gameMap.isEventRunning())
		{
		$gameMap.eventsXy(x,y).forEach(function(event)
			{
			if(event.isTriggerIn(triggers)&&event.isNormalPriority()===normal)
				{
				event.start()
			}
		}
		)
	}
};
Game_Player.prototype.moveByInput=function()
	{
	if(!this.isMoving()&&this.canMove())
		{
		var direction=this.getInputDirection();
		if(direction>0)
			{
			$gameTemp.clearDestination()
		}
		else if($gameTemp.isDestinationValid())
			{
			var x=$gameTemp.destinationX();
			var y=$gameTemp.destinationY();
			direction=this.findDirectionTo(x,y)
		}
		if(direction>0)
			{
			this.executeMove(direction)
		}
	}
};
Game_Player.prototype.canMove=function()
	{
	if($gameMap.isEventRunning()||$gameMessage.isBusy())
		{
		return false
	}
	if(this.isMoveRouteForcing()||this.areFollowersGathering())
		{
		return false
	}
	if(this._vehicleGettingOn||this._vehicleGettingOff)
		{
		return false
	}
	if(this.isInVehicle()&&!this.vehicle().canMove())
		{
		return false
	}
	return true
};
Game_Player.prototype.getInputDirection=function()
	{
	return Input.dir4
};
Game_Player.prototype.executeMove=function(direction)
	{
	this.moveStraight(direction)
};
Game_Player.prototype.update=function(sceneActive)
	{
	var lastScrolledX=this.scrolledX();
	var lastScrolledY=this.scrolledY();
	var wasMoving=this.isMoving();
	this.updateDashing();
	if(sceneActive)
		{
		this.moveByInput()
	}
	Game_Character.prototype.update.call(this);
	this.updateScroll(lastScrolledX,lastScrolledY);
	this.updateVehicle();
	if(!this.isMoving())
		{
		this.updateNonmoving(wasMoving)
	}
	this._followers.update()
};
Game_Player.prototype.updateDashing=function()
	{
	if(this.isMoving())
		{
		return
	}
	if(this.canMove()&&!this.isInVehicle()&&!$gameMap.isDashDisabled())
		{
		this._dashing=this.isDashButtonPressed()||$gameTemp.isDestinationValid()
	}
	else
		{
		this._dashing=false
	}
};
Game_Player.prototype.isDashButtonPressed=function()
	{
	var shift=Input.isPressed('shift');
	if(ConfigManager.alwaysDash)
		{
		return!shift
	}
	else
		{
		return shift
	}
};
Game_Player.prototype.updateScroll=function(lastScrolledX,lastScrolledY)
	{
	var x1=lastScrolledX;
	var y1=lastScrolledY;
	var x2=this.scrolledX();
	var y2=this.scrolledY();
	if(y2>y1&&y2>this.centerY())
		{
		$gameMap.scrollDown(y2-y1)
	}
	if(x2<x1&&x2<this.centerX())
		{
		$gameMap.scrollLeft(x1-x2)
	}
	if(x2>x1&&x2>this.centerX())
		{
		$gameMap.scrollRight(x2-x1)
	}
	if(y2<y1&&y2<this.centerY())
		{
		$gameMap.scrollUp(y1-y2)
	}
};
Game_Player.prototype.updateVehicle=function()
	{
	if(this.isInVehicle()&&!this.areFollowersGathering())
		{
		if(this._vehicleGettingOn)
			{
			this.updateVehicleGetOn()
		}
		else if(this._vehicleGettingOff)
			{
			this.updateVehicleGetOff()
		}
		else
			{
			this.vehicle().syncWithPlayer()
		}
	}
};
Game_Player.prototype.updateVehicleGetOn=function()
	{
	if(!this.areFollowersGathering()&&!this.isMoving())
		{
		this.setDirection(this.vehicle().direction());
		this.setMoveSpeed(this.vehicle().moveSpeed());
		this._vehicleGettingOn=false;
		this.setTransparent(true);
		if(this.isInAirship())
			{
			this.setThrough(true)
		}
		this.vehicle().getOn()
	}
};
Game_Player.prototype.updateVehicleGetOff=function()
	{
	if(!this.areFollowersGathering()&&this.vehicle().isLowest())
		{
		this._vehicleGettingOff=false;
		this._vehicleType='walk';
		this.setTransparent(false)
	}
};
Game_Player.prototype.updateNonmoving=function(wasMoving)
	{
	if(!$gameMap.isEventRunning())
		{
		if(wasMoving)
			{
			$gameParty.onPlayerWalk();
			this.checkEventTriggerHere([1,2]);
			if($gameMap.setupStartingEvent())
				{
				return
			}
		}
		if(this.triggerAction())
			{
			return
		}
		if(wasMoving)
			{
			this.updateEncounterCount()
		}
		else
			{
			$gameTemp.clearDestination()
		}
	}
};
Game_Player.prototype.triggerAction=function()
	{
	if(this.canMove())
		{
		if(this.triggerButtonAction())
			{
			return true
		}
		if(this.triggerTouchAction())
			{
			return true
		}
	}
	return false
};
Game_Player.prototype.triggerButtonAction=function()
	{
	if(Input.isTriggered('ok'))
		{
		if(this.getOnOffVehicle())
			{
			return true
		}
		this.checkEventTriggerHere([0]);
		if($gameMap.setupStartingEvent())
			{
			return true
		}
		this.checkEventTriggerThere([0,1,2]);
		if($gameMap.setupStartingEvent())
			{
			return true
		}
	}
	return false
};
Game_Player.prototype.triggerTouchAction=function()
	{
	if($gameTemp.isDestinationValid())
		{
		var direction=this.direction();
		var x1=this.x;
		var y1=this.y;
		var x2=$gameMap.roundXWithDirection(x1,direction);
		var y2=$gameMap.roundYWithDirection(y1,direction);
		var =$gameMap.roundXWithDirection(x2,direction);
		var y3=$gameMap.roundYWithDirection(y2,direction);
		var destX=$gameTemp.destinationX();
		var destY=$gameTemp.destinationY();
		if(destX===x1&&destY===y1)
			{
			return this.triggerTouchActionD1(x1,y1)
		}
		else if(destX===x2&&destY===y2)
			{
			return this.triggerTouchActionD2(x2,y2)
		}
		else if(destX===&&destY===y3)
			{
			return this.triggerTouchActionD3(x2,y2)
		}
	}
	return false
};
Game_Player.prototype.triggerTouchActionD1=function(x1,y1)
	{
	if($gameMap.airship().pos(x1,y1))
		{
		if(TouchInput.isTriggered()&&this.getOnOffVehicle())
			{
			return true
		}
	}
	this.checkEventTriggerHere([0]);
	return $gameMap.setupStartingEvent()
};
Game_Player.prototype.triggerTouchActionD2=function(x2,y2)
	{
	if($gameMap.boat().pos(x2,y2)||$gameMap.ship().pos(x2,y2))
		{
		if(TouchInput.isTriggered()&&this.getOnVehicle())
			{
			return true
		}
	}
	if(this.isInBoat()||this.isInShip())
		{
		if(TouchInput.isTriggered()&&this.getOffVehicle())
			{
			return true
		}
	}
	this.checkEventTriggerThere([0,1,2]);
	return $gameMap.setupStartingEvent()
};
Game_Player.prototype.triggerTouchActionD3=function(x2,y2)
	{
	if($gameMap.isCounter(x2,y2))
		{
		this.checkEventTriggerThere([0,1,2])
	}
	return $gameMap.setupStartingEvent()
};
Game_Player.prototype.updateEncounterCount=function()
	{
	if(this.canEncounter())
		{
		this._encounterCount-=this.encounterProgressValue()
	}
};
Game_Player.prototype.canEncounter=function()
	{
	return(!$gameParty.hasEncounterNone()&&$gameSystem.isEncounterEnabled()&&!this.isInAirship()&&!this.isMoveRouteForcing()&&!this.isDebugThrough())
};
Game_Player.prototype.encounterProgressValue=function()
	{
	var value=$gameMap.isBush(this.x,this.y)?2:1;
	if($gameParty.hasEncounterHalf())
		{
		value*=0.5
	}
	if(this.isInShip())
		{
		value*=0.5
	}
	return value
};
Game_Player.prototype.checkEventTriggerHere=function(triggers)
	{
	if(this.canStartLocalEvents())
		{
		this.startMapEvent(this.x,this.y,triggers,false)
	}
};
Game_Player.prototype.checkEventTriggerThere=function(triggers)
	{
	if(this.canStartLocalEvents())
		{
		var direction=this.direction();
		var x1=this.x;
		var y1=this.y;
		var x2=$gameMap.roundXWithDirection(x1,direction);
		var y2=$gameMap.roundYWithDirection(y1,direction);
		this.startMapEvent(x2,y2,triggers,true);
		if(!$gameMap.isAnyEventStarting()&&$gameMap.isCounter(x2,y2))
			{
			var =$gameMap.roundXWithDirection(x2,direction);
			var y3=$gameMap.roundYWithDirection(y2,direction);
			this.startMapEvent(,y3,triggers,true)
		}
	}
};
Game_Player.prototype.checkEventTriggerTouch=function(x,y)
	{
	if(this.canStartLocalEvents())
		{
		this.startMapEvent(x,y,[1,2],true)
	}
};
Game_Player.prototype.canStartLocalEvents=function()
	{
	return!this.isInAirship()
};
Game_Player.prototype.getOnOffVehicle=function()
	{
	if(this.isInVehicle())
		{
		return this.getOffVehicle()
	}
	else
		{
		return this.getOnVehicle()
	}
};
Game_Player.prototype.getOnVehicle=function()
	{
	var direction=this.direction();
	var x1=this.x;
	var y1=this.y;
	var x2=$gameMap.roundXWithDirection(x1,direction);
	var y2=$gameMap.roundYWithDirection(y1,direction);
	if($gameMap.airship().pos(x1,y1))
		{
		this._vehicleType='airship'
	}
	else if($gameMap.ship().pos(x2,y2))
		{
		this._vehicleType='ship'
	}
	else if($gameMap.boat().pos(x2,y2))
		{
		this._vehicleType='boat'
	}
	if(this.isInVehicle())
		{
		this._vehicleGettingOn=true;
		if(!this.isInAirship())
			{
			this.forceMoveForward()
		}
		this.gatherFollowers()
	}
	return this._vehicleGettingOn
};
Game_Player.prototype.getOffVehicle=function()
	{
	if(this.vehicle().isLandOk(this.x,this.y,this.direction()))
		{
		if(this.isInAirship())
			{
			this.setDirection(2)
		}
		this._followers.synchronize(this.x,this.y,this.direction());
		this.vehicle().getOff();
		if(!this.isInAirship())
			{
			this.forceMoveForward();
			this.setTransparent(false)
		}
		this._vehicleGettingOff=true;
		this.setMoveSpeed(4);
		this.setThrough(false);
		this.makeEncounterCount();
		this.gatherFollowers()
	}
	return this._vehicleGettingOff
};
Game_Player.prototype.forceMoveForward=function()
	{
	this.setThrough(true);
	this.moveForward();
	this.setThrough(false)
};
Game_Player.prototype.isOnDamageFloor=function()
	{
	return $gameMap.isDamageFloor(this.x,this.y)&&!this.isInAirship()
};
Game_Player.prototype.moveStraight=function(d)
	{
	if(this.canPass(this.x,this.y,d))
		{
		this._followers.updateMove()
	}
	Game_Character.prototype.moveStraight.call(this,d)
};
Game_Player.prototype.moveDiagonally=function(horz,vert)
	{
	if(this.canPassDiagonally(this.x,this.y,horz,vert))
		{
		this._followers.updateMove()
	}
	Game_Character.prototype.moveDiagonally.call(this,horz,vert)
};
Game_Player.prototype.jump=function(xPlus,yPlus)
	{
	Game_Character.prototype.jump.call(this,xPlus,yPlus);
	this._followers.jumpAll()
};
Game_Player.prototype.showFollowers=function()
	{
	this._followers.show()
};
Game_Player.prototype.hideFollowers=function()
	{
	this._followers.hide()
};
Game_Player.prototype.gatherFollowers=function()
	{
	this._followers.gather()
};
Game_Player.prototype.areFollowersGathering=function()
	{
	return this._followers.areGathering()
};
Game_Player.prototype.areFollowersGathered=function()
	{
	return this._followers.areGathered()
};
function Game_Follower()
	{
	this.initialize.apply(this,arguments)
}
Game_Follower.prototype=Object.create(Game_Character.prototype);
Game_Follower.prototype.constructor=Game_Follower;
Game_Follower.prototype.initialize=function(memberIndex)
	{
	Game_Character.prototype.initialize.call(this);
	this._memberIndex=memberIndex;
	this.setTransparent($dataSystem.optTransparent);
	this.setThrough(true)
};
Game_Follower.prototype.refresh=function()
	{
	var characterName=this.isVisible()?this.actor().characterName():'';
	var characterIndex=this.isVisible()?this.actor().characterIndex():0;
	this.setImage(characterName,characterIndex)
};
Game_Follower.prototype.actor=function()
	{
	return $gameParty.battleMembers()[this._memberIndex]
};
Game_Follower.prototype.isVisible=function()
	{
	return this.actor()&&$gamePlayer.followers().isVisible()
};
Game_Follower.prototype.update=function()
	{
	Game_Character.prototype.update.call(this);
	this.setMoveSpeed($gamePlayer.realMoveSpeed());
	this.setOpacity($gamePlayer.opacity());
	this.setBlendMode($gamePlayer.blendMode());
	this.setWalkAnime($gamePlayer.hasWalkAnime());
	this.setStepAnime($gamePlayer.hasStepAnime());
	this.setDirectionFix($gamePlayer.isDirectionFixed());
	this.setTransparent($gamePlayer.isTransparent())
};
Game_Follower.prototype.chaseCharacter=function(character)
	{
	var sx=this.deltaXFrom(character.x);
	var sy=this.deltaYFrom(character.y);
	if(sx!==0&&sy!==0)
		{
		this.moveDiagonally(sx>0?4:6,sy>0?8:2)
	}
	else if(sx!==0)
		{
		this.moveStraight(sx>0?4:6)
	}
	else if(sy!==0)
		{
		this.moveStraight(sy>0?8:2)
	}
	this.setMoveSpeed($gamePlayer.realMoveSpeed())
};
function Game_Followers()
	{
	this.initialize.apply(this,arguments)
}
Game_Followers.prototype.initialize=function()
	{
	this._visible=$dataSystem.optFollowers;
	this._gathering=false;
	this._data=[];
	for(var i=1;
	i<$gameParty.maxBattleMembers();
	i++)
		{
		this._data.push(new Game_Follower(i))
	}
};
Game_Followers.prototype.isVisible=function()
	{
	return this._visible
};
Game_Followers.prototype.show=function()
	{
	this._visible=true
};
Game_Followers.prototype.hide=function()
	{
	this._visible=false
};
Game_Followers.prototype.follower=function(index)
	{
	return this._data[index]
};
Game_Followers.prototype.forEach=function(callback,thisObject)
	{
	this._data.forEach(callback,thisObject)
};
Game_Followers.prototype.reverseEach=function(callback,thisObject)
	{
	this._data.reverse();
	this._data.forEach(callback,thisObject);
	this._data.reverse()
};
Game_Followers.prototype.refresh=function()
	{
	this.forEach(function(follower)
		{
		return follower.refresh()
	}
	,this)
};
Game_Followers.prototype.update=function()
	{
	if(this.areGathering())
		{
		if(!this.areMoving())
			{
			this.updateMove()
		}
		if(this.areGathered())
			{
			this._gathering=false
		}
	}
	this.forEach(function(follower)
		{
		follower.update()
	}
	,this)
};
Game_Followers.prototype.updateMove=function()
	{
	for(var i=this._data.length-1;
	i>=0;
	i--)
		{
		var precedingCharacter=(i>0?this._data[i-1]:$gamePlayer);
		this._data[i].chaseCharacter(precedingCharacter)
	}
};
Game_Followers.prototype.jumpAll=function()
	{
	if($gamePlayer.isJumping())
		{
		for(var i=0;
		i<this._data.length;
		i++)
			{
			var follower=this._data[i];
			var sx=$gamePlayer.deltaXFrom(follower.x);
			var sy=$gamePlayer.deltaYFrom(follower.y);
			follower.jump(sx,sy)
		}
	}
};
Game_Followers.prototype.synchronize=function(x,y,d)
	{
	this.forEach(function(follower)
		{
		follower.locate(x,y);
		follower.setDirection(d)
	}
	,this)
};
Game_Followers.prototype.gather=function()
	{
	this._gathering=true
};
Game_Followers.prototype.areGathering=function()
	{
	return this._gathering
};
Game_Followers.prototype.visibleFollowers=function()
	{
	return this._data.filter(function(follower)
		{
		return follower.isVisible()
	}
	,this)
};
Game_Followers.prototype.areMoving=function()
	{
	return this.visibleFollowers().some(function(follower)
		{
		return follower.isMoving()
	}
	,this)
};
Game_Followers.prototype.areGathered=function()
	{
	return this.visibleFollowers().every(function(follower)
		{
		return!follower.isMoving()&&follower.pos($gamePlayer.x,$gamePlayer.y)
	}
	,this)
};
Game_Followers.prototype.isSomeoneCollided=function(x,y)
	{
	return this.visibleFollowers().some(function(follower)
		{
		return follower.pos(x,y)
	}
	,this)
};
function Game_Vehicle()
	{
	this.initialize.apply(this,arguments)
}
Game_Vehicle.prototype=Object.create(Game_Character.prototype);
Game_Vehicle.prototype.constructor=Game_Vehicle;
Game_Vehicle.prototype.initialize=function(type)
	{
	Game_Character.prototype.initialize.call(this);
	this._type=type;
	this.resetDirection();
	this.initMoveSpeed();
	this.loadSystemSettings()
};
Game_Vehicle.prototype.initMembers=function()
	{
	Game_Character.prototype.initMembers.call(this);
	this._type='';
	this._mapId=0;
	this._altitude=0;
	this._driving=false;
	this._bgm=null
};
Game_Vehicle.prototype.isBoat=function()
	{
	return this._type==='boat'
};
Game_Vehicle.prototype.isShip=function()
	{
	return this._type==='ship'
};
Game_Vehicle.prototype.isAirship=function()
	{
	return this._type==='airship'
};
Game_Vehicle.prototype.resetDirection=function()
	{
	this.setDirection(4)
};
Game_Vehicle.prototype.initMoveSpeed=function()
	{
	if(this.isBoat())
		{
		this.setMoveSpeed(4)
	}
	else if(this.isShip())
		{
		this.setMoveSpeed(5)
	}
	else if(this.isAirship())
		{
		this.setMoveSpeed(6)
	}
};
Game_Vehicle.prototype.vehicle=function()
	{
	if(this.isBoat())
		{
		return $dataSystem.boat
	}
	else if(this.isShip())
		{
		return $dataSystem.ship
	}
	else if(this.isAirship())
		{
		return $dataSystem.airship
	}
	else
		{
		return null
	}
};
Game_Vehicle.prototype.loadSystemSettings=function()
	{
	var vehicle=this.vehicle();
	this._mapId=vehicle.startMapId;
	this.setPosition(vehicle.startX,vehicle.startY);
	this.setImage(vehicle.characterName,vehicle.characterIndex)
};
Game_Vehicle.prototype.refresh=function()
	{
	if(this._driving)
		{
		this._mapId=$gameMap.mapId();
		this.syncWithPlayer()
	}
	else if(this._mapId===$gameMap.mapId())
		{
		this.locate(this.x,this.y)
	}
	if(this.isAirship())
		{
		this.setPriorityType(this._driving?2:0)
	}
	else
		{
		this.setPriorityType(1)
	}
	this.setWalkAnime(this._driving);
	this.setStepAnime(this._driving);
	this.setTransparent(this._mapId!==$gameMap.mapId())
};
Game_Vehicle.prototype.setLocation=function(mapId,x,y)
	{
	this._mapId=mapId;
	this.setPosition(x,y);
	this.refresh()
};
Game_Vehicle.prototype.pos=function(x,y)
	{
	if(this._mapId===$gameMap.mapId())
		{
		return Game_Character.prototype.pos.call(this,x,y)
	}
	else
		{
		return false
	}
};
Game_Vehicle.prototype.isMapPassable=function(x,y,d)
	{
	var x2=$gameMap.roundXWithDirection(x,d);
	var y2=$gameMap.roundYWithDirection(y,d);
	if(this.isBoat())
		{
		return $gameMap.isBoatPassable(x2,y2)
	}
	else if(this.isShip())
		{
		return $gameMap.isShipPassable(x2,y2)
	}
	else if(this.isAirship())
		{
		return true
	}
	else
		{
		return false
	}
};
Game_Vehicle.prototype.getOn=function()
	{
	this._driving=true;
	this.setWalkAnime(true);
	this.setStepAnime(true);
	$gameSystem.saveWalkingBgm();
	this.playBgm()
};
Game_Vehicle.prototype.getOff=function()
	{
	this._driving=false;
	this.setWalkAnime(false);
	this.setStepAnime(false);
	this.resetDirection();
	$gameSystem.replayWalkingBgm()
};
Game_Vehicle.prototype.setBgm=function(bgm)
	{
	this._bgm=bgm
};
Game_Vehicle.prototype.playBgm=function()
	{
	AudioManager.playBgm(this._bgm||this.vehicle().bgm)
};
Game_Vehicle.prototype.syncWithPlayer=function()
	{
	this.copyPosition($gamePlayer);
	this.refreshBushDepth()
};
Game_Vehicle.prototype.screenY=function()
	{
	return Game_Character.prototype.screenY.call(this)-this._altitude
};
Game_Vehicle.prototype.shadowX=function()
	{
	return this.screenX()
};
Game_Vehicle.prototype.shadowY=function()
	{
	return this.screenY()+this._altitude
};
Game_Vehicle.prototype.shadowOpacity=function()
	{
	return 255*this._altitude/this.maxAltitude()
};
Game_Vehicle.prototype.canMove=function()
	{
	if(this.isAirship())
		{
		return this.isHighest()
	}
	else
		{
		return true
	}
};
Game_Vehicle.prototype.update=function()
	{
	Game_Character.prototype.update.call(this);
	if(this.isAirship())
		{
		this.updateAirship()
	}
};
Game_Vehicle.prototype.updateAirship=function()
	{
	this.updateAirshipAltitude();
	this.setStepAnime(this.isHighest());
	this.setPriorityType(this.isLowest()?0:2)
};
Game_Vehicle.prototype.updateAirshipAltitude=function()
	{
	if(this._driving&&!this.isHighest())
		{
		this._altitude++
	}
	if(!this._driving&&!this.isLowest())
		{
		this._altitude--
	}
};
Game_Vehicle.prototype.maxAltitude=function()
	{
	return 48
};
Game_Vehicle.prototype.isLowest=function()
	{
	return this._altitude<=0
};
Game_Vehicle.prototype.isHighest=function()
	{
	return this._altitude>=this.maxAltitude()
};
Game_Vehicle.prototype.isTakeoffOk=function()
	{
	return $gamePlayer.areFollowersGathered()
};
Game_Vehicle.prototype.isLandOk=function(x,y,d)
	{
	if(this.isAirship())
		{
		if(!$gameMap.isAirshipLandOk(x,y))
			{
			return false
		}
		if($gameMap.eventsXy(x,y).length>0)
			{
			return false
		}
	}
	else
		{
		var x2=$gameMap.roundXWithDirection(x,d);
		var y2=$gameMap.roundYWithDirection(y,d);
		if(!$gameMap.isValid(x2,y2))
			{
			return false
		}
		if(!$gameMap.isPassable(x2,y2,this.reverseDir(d)))
			{
			return false
		}
		if(this.isCollidedWithCharacters(x2,y2))
			{
			return false
		}
	}
	return true
};
function Game_Event()
	{
	this.initialize.apply(this,arguments)
}
Game_Event.prototype=Object.create(Game_Character.prototype);
Game_Event.prototype.constructor=Game_Event;
Game_Event.prototype.initialize=function(mapId,eventId)
	{
	Game_Character.prototype.initialize.call(this);
	this._mapId=mapId;
	this._eventId=eventId;
	this.locate(this.event().x,this.event().y);
	this.refresh()
};
Game_Event.prototype.initMembers=function()
	{
	Game_Character.prototype.initMembers.call(this);
	this._moveType=0;
	this._trigger=0;
	this._starting=false;
	this._erased=false;
	this._pageIndex=-2;
	this._originalPattern=1;
	this._originalDirection=2;
	this._prelockDirection=0;
	this._locked=false
};
Game_Event.prototype.eventId=function()
	{
	return this._eventId
};
Game_Event.prototype.event=function()
	{
	return $dataMap.events[this._eventId]
};
Game_Event.prototype.page=function()
	{
	return this.event().pages[this._pageIndex]
};
Game_Event.prototype.list=function()
	{
	return this.page().list
};
Game_Event.prototype.isCollidedWithCharacters=function(x,y)
	{
	return(Game_Character.prototype.isCollidedWithCharacters.call(this,x,y)||this.isCollidedWithPlayerCharacters(x,y))
};
Game_Event.prototype.isCollidedWithEvents=function(x,y)
	{
	var events=$gameMap.eventsXyNt(x,y);
	return events.length>0
};
Game_Event.prototype.isCollidedWithPlayerCharacters=function(x,y)
	{
	return this.isNormalPriority()&&$gamePlayer.isCollided(x,y)
};
Game_Event.prototype.lock=function()
	{
	if(!this._locked)
		{
		this._prelockDirection=this.direction();
		this.turnTowardPlayer();
		this._locked=true
	}
};
Game_Event.prototype.unlock=function()
	{
	if(this._locked)
		{
		this._locked=false;
		this.setDirection(this._prelockDirection)
	}
};
Game_Event.prototype.updateStop=function()
	{
	if(this._locked)
		{
		this.resetStopCount()
	}
	Game_Character.prototype.updateStop.call(this);
	if(!this.isMoveRouteForcing())
		{
		this.updateSelfMovement()
	}
};
Game_Event.prototype.updateSelfMovement=function()
	{
	if(this.isNearTheScreen()&&this.checkStop(this.stopCountThreshold()))
		{
		switch(this._moveType)
			{
			case 1:this.moveTypeRandom();
			break;
			case 2:this.moveTypeTowardPlayer();
			break;
			case 3:this.moveTypeCustom();
			break
		}
	}
};
Game_Event.prototype.stopCountThreshold=function()
	{
	return 30*(5-this.moveFrequency())
};
Game_Event.prototype.moveTypeRandom=function()
	{
	switch(Math.randomInt(6))
		{
		case 0:case 1:this.moveRandom();
		break;
		case 2:case 3:case 4:this.moveForward();
		break;
		case 5:this.resetStopCount();
		break
	}
};
Game_Event.prototype.moveTypeTowardPlayer=function()
	{
	if(this.isNearThePlayer())
		{
		switch(Math.randomInt(6))
			{
			case 0:case 1:case 2:case 3:this.moveTowardPlayer();
			break;
			case 4:this.moveRandom();
			break;
			case 5:this.moveForward();
			break
		}
	}
	else
		{
		this.moveRandom()
	}
};
Game_Event.prototype.isNearThePlayer=function()
	{
	var sx=Math.abs(this.deltaXFrom($gamePlayer.x));
	var sy=Math.abs(this.deltaYFrom($gamePlayer.y));
	return sx+sy<20
};
Game_Event.prototype.moveTypeCustom=function()
	{
	this.updateRoutineMove()
};
Game_Event.prototype.isStarting=function()
	{
	return this._starting
};
Game_Event.prototype.clearStartingFlag=function()
	{
	this._starting=false
};
Game_Event.prototype.isTriggerIn=function(triggers)
	{
	return triggers.contains(this._trigger)
};
Game_Event.prototype.start=function()
	{
	var list=this.list();
	if(list&&list.length>1)
		{
		this._starting=true;
		if(this.isTriggerIn([0,1,2]))
			{
			this.lock()
		}
	}
};
Game_Event.prototype.erase=function()
	{
	this._erased=true;
	this.refresh()
};
Game_Event.prototype.refresh=function()
	{
	var newPageIndex=this._erased?-1:this.findProperPageIndex();
	if(this._pageIndex!==newPageIndex)
		{
		this._pageIndex=newPageIndex;
		this.setupPage()
	}
};
Game_Event.prototype.findProperPageIndex=function()
	{
	var pages=this.event().pages;
	for(var i=pages.length-1;
	i>=0;
	i--)
		{
		var page=pages[i];
		if(this.meetsConditions(page))
			{
			return i
		}
	}
	return-1
};
Game_Event.prototype.meetsConditions=function(page)
	{
	var c=page.conditions;
	if(c.switch1Valid)
		{
		if(!$gameSwitches.value(c.switch1Id))
			{
			return false
		}
	}
	if(c.switch2Valid)
		{
		if(!$gameSwitches.value(c.switch2Id))
			{
			return false
		}
	}
	if(c.variableValid)
		{
		if($gameVariables.value(c.variableId)<c.variableValue)
			{
			return false
		}
	}
	if(c.selfSwitchValid)
		{
		var key=[this._mapId,this._eventId,c.selfSwitchCh];
		if($gameSelfSwitches.value(key)!==true)
			{
			return false
		}
	}
	if(c.itemValid)
		{
		var item=$dataItems[c.itemId];
		if(!$gameParty.hasItem(item))
			{
			return false
		}
	}
	if(c.actorValid)
		{
		var actor=$gameActors.actor(c.actorId);
		if(!$gameParty.members().contains(actor))
			{
			return false
		}
	}
	return true
};
Game_Event.prototype.setupPage=function()
	{
	if(this._pageIndex>=0)
		{
		this.setupPageSettings()
	}
	else
		{
		this.clearPageSettings()
	}
	this.refreshBushDepth();
	this.clearStartingFlag();
	this.checkEventTriggerAuto()
};
Game_Event.prototype.clearPageSettings=function()
	{
	this.setImage('',0);
	this._moveType=0;
	this._trigger=null;
	this._interpreter=null;
	this.setThrough(true)
};
Game_Event.prototype.setupPageSettings=function()
	{
	var page=this.page();
	var image=page.image;
	if(image.tileId>0)
		{
		this.setTileImage(image.tileId)
	}
	else
		{
		this.setImage(image.characterName,image.characterIndex)
	}
	if(this._originalDirection!==image.direction)
		{
		this._originalDirection=image.direction;
		this._prelockDirection=0;
		this.setDirectionFix(false);
		this.setDirection(image.direction)
	}
	if(this._originalPattern!==image.pattern)
		{
		this._originalPattern=image.pattern;
		this.setPattern(image.pattern)
	}
	this.setMoveSpeed(page.moveSpeed);
	this.setMoveFrequency(page.moveFrequency);
	this.setPriorityType(page.priorityType);
	this.setWalkAnime(page.walkAnime);
	this.setStepAnime(page.stepAnime);
	this.setDirectionFix(page.directionFix);
	this.setThrough(page.through);
	this.setMoveRoute(page.moveRoute);
	this._moveType=page.moveType;
	this._trigger=page.trigger;
	if(this._trigger===4)
		{
		this._interpreter=new Game_Interpreter()
	}
	else
		{
		this._interpreter=null
	}
};
Game_Event.prototype.isOriginalPattern=function()
	{
	return this.pattern()===this._originalPattern
};
Game_Event.prototype.resetPattern=function()
	{
	this.setPattern(this._originalPattern)
};
Game_Event.prototype.checkEventTriggerTouch=function(x,y)
	{
	if(!$gameMap.isEventRunning())
		{
		if(this._trigger===2&&$gamePlayer.pos(x,y))
			{
			if(!this.isJumping()&&this.isNormalPriority())
				{
				this.start()
			}
		}
	}
};
Game_Event.prototype.checkEventTriggerAuto=function()
	{
	if(this._trigger===3)
		{
		this.start()
	}
};
Game_Event.prototype.update=function()
	{
	Game_Character.prototype.update.call(this);
	this.checkEventTriggerAuto();
	this.updateParallel()
};
Game_Event.prototype.updateParallel=function()
	{
	if(this._interpreter)
		{
		if(!this._interpreter.isRunning())
			{
			this._interpreter.setup(this.list(),this._eventId)
		}
		this._interpreter.update()
	}
};
Game_Event.prototype.locate=function(x,y)
	{
	Game_Character.prototype.locate.call(this,x,y);
	this._prelockDirection=0
};
Game_Event.prototype.forceMoveRoute=function(moveRoute)
	{
	Game_Character.prototype.forceMoveRoute.call(this,moveRoute);
	this._prelockDirection=0
};
function Game_Interpreter()
	{
	this.initialize.apply(this,arguments)
}
Game_Interpreter.prototype.initialize=function(depth)
	{
	this._depth=depth||0;
	this.checkOverflow();
	this.clear();
	this._branch=
		{
	};
	this._params=[];
	this._indent=0;
	this._frameCount=0;
	this._freezeChecker=0
};
Game_Interpreter.prototype.checkOverflow=function()
	{
	if(this._depth>=100)
		{
		throw new Error('Common event calls exceeded the limit')
	}
};
Game_Interpreter.prototype.clear=function()
	{
	this._mapId=0;
	this._eventId=0;
	this._list=null;
	this._index=0;
	this._waitCount=0;
	this._waitMode='';
	this._comments='';
	this._character=null;
	this._childInterpreter=null
};
Game_Interpreter.prototype.setup=function(list,eventId)
	{
	this.clear();
	this._mapId=$gameMap.mapId();
	this._eventId=eventId||0;
	this._list=list
};
Game_Interpreter.prototype.eventId=function()
	{
	return this._eventId
};
Game_Interpreter.prototype.isOnCurrentMap=function()
	{
	return this._mapId===$gameMap.mapId()
};
Game_Interpreter.prototype.setupReservedCommonEvent=function()
	{
	if($gameTemp.isCommonEventReserved())
		{
		this.setup($gameTemp.reservedCommonEvent().list);
		$gameTemp.clearCommonEvent();
		return true
	}
	else
		{
		return false
	}
};
Game_Interpreter.prototype.isRunning=function()
	{
	return!!this._list
};
Game_Interpreter.prototype.update=function()
	{
	while(this.isRunning())
		{
		if(this.updateChild()||this.updateWait())
			{
			break
		}
		if(SceneManager.isSceneChanging())
			{
			break
		}
		if(!this.executeCommand())
			{
			break
		}
		if(this.checkFreeze())
			{
			break
		}
	}
};
Game_Interpreter.prototype.updateChild=function()
	{
	if(this._childInterpreter)
		{
		this._childInterpreter.update();
		if(this._childInterpreter.isRunning())
			{
			return true
		}
		else
			{
			this._childInterpreter=null
		}
	}
	return false
};
Game_Interpreter.prototype.updateWait=function()
	{
	return this.updateWaitCount()||this.updateWaitMode()
};
Game_Interpreter.prototype.updateWaitCount=function()
	{
	if(this._waitCount>0)
		{
		this._waitCount--;
		return true
	}
	return false
};
Game_Interpreter.prototype.updateWaitMode=function()
	{
	var waiting=false;
	switch(this._waitMode)
		{
		case'message':waiting=$gameMessage.isBusy();
		break;
		case'transfer':waiting=$gamePlayer.isTransferring();
		break;
		case'scroll':waiting=$gameMap.isScrolling();
		break;
		case'route':waiting=this._character.isMoveRouteForcing();
		break;
		case'animation':waiting=this._character.isAnimationPlaying();
		break;
		case'balloon':waiting=this._character.isBalloonPlaying();
		break;
		case'gather':waiting=$gamePlayer.areFollowersGathering();
		break;
		case'action':waiting=BattleManager.isActionForced();
		break;
		case'video':waiting=Graphics.isVideoPlaying();
		break;
		case'image':waiting=!ImageManager.isReady();
		break
	}
	if(!waiting)
		{
		this._waitMode=''
	}
	return waiting
};
Game_Interpreter.prototype.setWaitMode=function(waitMode)
	{
	this._waitMode=waitMode
};
Game_Interpreter.prototype.wait=function(duration)
	{
	this._waitCount=duration
};
Game_Interpreter.prototype.fadeSpeed=function()
	{
	return 24
};
Game_Interpreter.prototype.executeCommand=function()
	{
	var command=this.currentCommand();
	if(command)
		{
		this._params=command.parameters;
		this._indent=command.indent;
		var methodName='command'+command.code;
		if(typeof this[methodName]==='function')
			{
			if(!this[methodName]())
				{
				return false
			}
		}
		this._index++
	}
	else
		{
		this.terminate()
	}
	return true
};
Game_Interpreter.prototype.checkFreeze=function()
	{
	if(this._frameCount!==Graphics.frameCount)
		{
		this._frameCount=Graphics.frameCount;
		this._freezeChecker=0
	}
	if(this._freezeChecker++>=100000)
		{
		return true
	}
	else
		{
		return false
	}
};
Game_Interpreter.prototype.terminate=function()
	{
	this._list=null;
	this._comments=''
};
Game_Interpreter.prototype.skipBranch=function()
	{
	while(this._list[this._index+1].indent>this._indent)
		{
		this._index++
	}
};
Game_Interpreter.prototype.currentCommand=function()
	{
	return this._list[this._index]
};
Game_Interpreter.prototype.nextEventCode=function()
	{
	var command=this._list[this._index+1];
	if(command)
		{
		return command.code
	}
	else
		{
		return 0
	}
};
Game_Interpreter.prototype.iterateActorId=function(param,callback)
	{
	if(param===0)
		{
		$gameParty.members().forEach(callback)
	}
	else
		{
		var actor=$gameActors.actor(param);
		if(actor)
			{
			callback(actor)
		}
	}
};
Game_Interpreter.prototype.iterateActorEx=function(param1,param2,callback)
	{
	if(param1===0)
		{
		this.iterateActorId(param2,callback)
	}
	else
		{
		this.iterateActorId($gameVariables.value(param2),callback)
	}
};
Game_Interpreter.prototype.iterateActorIndex=function(param,callback)
	{
	if(param<0)
		{
		$gameParty.members().forEach(callback)
	}
	else
		{
		var actor=$gameParty.members()[param];
		if(actor)
			{
			callback(actor)
		}
	}
};
Game_Interpreter.prototype.iterateEnemyIndex=function(param,callback)
	{
	if(param<0)
		{
		$gameTroop.members().forEach(callback)
	}
	else
		{
		var enemy=$gameTroop.members()[param];
		if(enemy)
			{
			callback(enemy)
		}
	}
};
Game_Interpreter.prototype.iterateBattler=function(param1,param2,callback)
	{
	if($gameParty.inBattle())
		{
		if(param1===0)
			{
			this.iterateEnemyIndex(param2,callback)
		}
		else
			{
			this.iterateActorId(param2,callback)
		}
	}
};
Game_Interpreter.prototype.character=function(param)
	{
	if($gameParty.inBattle())
		{
		return null
	}
	else if(param<0)
		{
		return $gamePlayer
	}
	else if(this.isOnCurrentMap())
		{
		return $gameMap.event(param>0?param:this._eventId)
	}
	else
		{
		return null
	}
};
Game_Interpreter.prototype.operateValue=function(operation,operandType,operand)
	{
	var value=operandType===0?operand:$gameVariables.value(operand);
	return operation===0?value:-value
};
Game_Interpreter.prototype.changeHp=function(target,value,allowDeath)
	{
	if(target.isAlive())
		{
		if(!allowDeath&&target.hp<=-value)
			{
			value=1-target.hp
		}
		target.gainHp(value);
		if(target.isDead())
			{
			target.performCollapse()
		}
	}
};
Game_Interpreter.prototype.command101=function()
	{
	if(!$gameMessage.isBusy())
		{
		$gameMessage.setFaceImage(this._params[0],this._params[1]);
		$gameMessage.setBackground(this._params[2]);
		$gameMessage.setPositionType(this._params[3]);
		while(this.nextEventCode()===401)
			{
			this._index++;
			$gameMessage.add(this.currentCommand().parameters[0])
		}
		switch(this.nextEventCode())
			{
			case 102:this._index++;
			this.setupChoices(this.currentCommand().parameters);
			break;
			case 103:this._index++;
			this.setupNumInput(this.currentCommand().parameters);
			break;
			case 104:this._index++;
			this.setupItemChoice(this.currentCommand().parameters);
			break
		}
		this._index++;
		this.setWaitMode('message')
	}
	return false
};
Game_Interpreter.prototype.command102=function()
	{
	if(!$gameMessage.isBusy())
		{
		this.setupChoices(this._params);
		this._index++;
		this.setWaitMode('message')
	}
	return false
};
Game_Interpreter.prototype.setupChoices=function(params)
	{
	var choices=params[0].clone();
	var cancelType=params[1];
	var defaultType=params.length>2?params[2]:0;
	var positionType=params.length>3?params[3]:2;
	var background=params.length>4?params[4]:0;
	if(cancelType>=choices.length)
		{
		cancelType=-2
	}
	$gameMessage.setChoices(choices,defaultType,cancelType);
	$gameMessage.setChoiceBackground(background);
	$gameMessage.setChoicePositionType(positionType);
	$gameMessage.setChoiceCallback(function(n)
		{
		this._branch[this._indent]=n
	}
	.bind(this))
};
Game_Interpreter.prototype.command402=function()
	{
	if(this._branch[this._indent]!==this._params[0])
		{
		this.skipBranch()
	}
	return true
};
Game_Interpreter.prototype.command403=function()
	{
	if(this._branch[this._indent]>=0)
		{
		this.skipBranch()
	}
	return true
};
Game_Interpreter.prototype.command103=function()
	{
	if(!$gameMessage.isBusy())
		{
		this.setupNumInput(this._params);
		this._index++;
		this.setWaitMode('message')
	}
	return false
};
Game_Interpreter.prototype.setupNumInput=function(params)
	{
	$gameMessage.setNumberInput(params[0],params[1])
};
Game_Interpreter.prototype.command104=function()
	{
	if(!$gameMessage.isBusy())
		{
		this.setupItemChoice(this._params);
		this._index++;
		this.setWaitMode('message')
	}
	return false
};
Game_Interpreter.prototype.setupItemChoice=function(params)
	{
	$gameMessage.setItemChoice(params[0],params[1]||2)
};
Game_Interpreter.prototype.command105=function()
	{
	if(!$gameMessage.isBusy())
		{
		$gameMessage.setScroll(this._params[0],this._params[1]);
		while(this.nextEventCode()===405)
			{
			this._index++;
			$gameMessage.add(this.currentCommand().parameters[0])
		}
		this._index++;
		this.setWaitMode('message')
	}
	return false
};
Game_Interpreter.prototype.command108=function()
	{
	this._comments=[this._params[0]];
	while(this.nextEventCode()===408)
		{
		this._index++;
		this._comments.push(this.currentCommand().parameters[0])
	}
	return true
};
Game_Interpreter.prototype.command111=function()
	{
	var result=false;
	switch(this._params[0])
		{
		case 0:result=($gameSwitches.value(this._params[1])===(this._params[2]===0));
		break;
		case 1:var value1=$gameVariables.value(this._params[1]);
		var value2;
		if(this._params[2]===0)
			{
			value2=this._params[3]
		}
		else
			{
			value2=$gameVariables.value(this._params[3])
		}
		switch(this._params[4])
			{
			case 0:result=(value1===value2);
			break;
			case 1:result=(value1>=value2);
			break;
			case 2:result=(value1<=value2);
			break;
			case 3:result=(value1>value2);
			break;
			case 4:result=(value1<value2);
			break;
			case 5:result=(value1!==value2);
			break
		}
		break;
		case 2:if(this._eventId>0)
			{
			var key=[this._mapId,this._eventId,this._params[1]];
			result=($gameSelfSwitches.value(key)===(this._params[2]===0))
		}
		break;
		case 3:if($gameTimer.isWorking())
			{
			if(this._params[2]===0)
				{
				result=($gameTimer.seconds()>=this._params[1])
			}
			else
				{
				result=($gameTimer.seconds()<=this._params[1])
			}
		}
		break;
		case 4:var actor=$gameActors.actor(this._params[1]);
		if(actor)
			{
			var n=this._params[3];
			switch(this._params[2])
				{
				case 0:result=$gameParty.members().contains(actor);
				break;
				case 1:result=(actor.name()===n);
				break;
				case 2:result=actor.isClass($dataClasses[n]);
				break;
				case 3:result=actor.isLearnedSkill(n);
				break;
				case 4:result=actor.hasWeapon($dataWeapons[n]);
				break;
				case 5:result=actor.hasArmor($dataArmors[n]);
				break;
				case 6:result=actor.isStateAffected(n);
				break
			}
		}
		break;
		case 5:var enemy=$gameTroop.members()[this._params[1]];
		if(enemy)
			{
			switch(this._params[2])
				{
				case 0:result=enemy.isAlive();
				break;
				case 1:result=enemy.isStateAffected(this._params[3]);
				break
			}
		}
		break;
		case 6:var character=this.character(this._params[1]);
		if(character)
			{
			result=(character.direction()===this._params[2])
		}
		break;
		case 7:switch(this._params[2])
			{
			case 0:result=($gameParty.gold()>=this._params[1]);
			break;
			case 1:result=($gameParty.gold()<=this._params[1]);
			break;
			case 2:result=($gameParty.gold()<this._params[1]);
			break
		}
		break;
		case 8:result=$gameParty.hasItem($dataItems[this._params[1]]);
		break;
		case 9:result=$gameParty.hasItem($dataWeapons[this._params[1]],this._params[2]);
		break;
		case 10:result=$gameParty.hasItem($dataArmors[this._params[1]],this._params[2]);
		break;
		case 11:result=Input.isPressed(this._params[1]);
		break;
		case 12:result=!!eval(this._params[1]);
		break;
		case 13:result=($gamePlayer.vehicle()===$gameMap.vehicle(this._params[1]));
		break
	}
	this._branch[this._indent]=result;
	if(this._branch[this._indent]===false)
		{
		this.skipBranch()
	}
	return true
};
Game_Interpreter.prototype.command411=function()
	{
	if(this._branch[this._indent]!==false)
		{
		this.skipBranch()
	}
	return true
};
Game_Interpreter.prototype.command112=function()
	{
	return true
};
Game_Interpreter.prototype.command413=function()
	{
	do
		{
		this._index--
	}
	while(this.currentCommand().indent!==this._indent);
	return true
};
Game_Interpreter.prototype.command113=function()
	{
	while(this._index<this._list.length-1)
		{
		this._index++;
		var command=this.currentCommand();
		if(command.code===413&&command.indent<this._indent)
			{
			break
		}
	}
	return true
};
Game_Interpreter.prototype.command115=function()
	{
	this._index=this._list.length;
	return true
};
Game_Interpreter.prototype.command117=function()
	{
	var commonEvent=$dataCommonEvents[this._params[0]];
	if(commonEvent)
		{
		var eventId=this.isOnCurrentMap()?this._eventId:0;
		this.setupChild(commonEvent.list,eventId)
	}
	return true
};
Game_Interpreter.prototype.setupChild=function(list,eventId)
	{
	this._childInterpreter=new Game_Interpreter(this._depth+1);
	this._childInterpreter.setup(list,eventId)
};
Game_Interpreter.prototype.command118=function()
	{
	return true
};
Game_Interpreter.prototype.command119=function()
	{
	var labelName=this._params[0];
	for(var i=0;
	i<this._list.length;
	i++)
		{
		var command=this._list[i];
		if(command.code===118&&command.parameters[0]===labelName)
			{
			this.jumpTo(i);
			return
		}
	}
	return true
};
Game_Interpreter.prototype.jumpTo=function(index)
	{
	var lastIndex=this._index;
	var startIndex=Math.min(index,lastIndex);
	var endIndex=Math.max(index,lastIndex);
	var indent=this._indent;
	for(var i=startIndex;
	i<=endIndex;
	i++)
		{
		var newIndent=this._list[i].indent;
		if(newIndent!==indent)
			{
			this._branch[indent]=null;
			indent=newIndent
		}
	}
	this._index=index
};
Game_Interpreter.prototype.command121=function()
	{
	for(var i=this._params[0];
	i<=this._params[1];
	i++)
		{
		$gameSwitches.setValue(i,this._params[2]===0)
	}
	return true
};
Game_Interpreter.prototype.command122=function()
	{
	var value=0;
	switch(this._params[3])
		{
		case 0:value=this._params[4];
		break;
		case 1:value=$gameVariables.value(this._params[4]);
		break;
		case 2:value=this._params[4]+Math.randomInt(this._params[5]-this._params[4]+1);
		break;
		case 3:value=this.gameDataOperand(this._params[4],this._params[5],this._params[6]);
		break;
		case 4:value=eval(this._params[4]);
		break
	}
	for(var i=this._params[0];
	i<=this._params[1];
	i++)
		{
		this.operateVariable(i,this._params[2],value)
	}
	return true
};
Game_Interpreter.prototype.gameDataOperand=function(type,param1,param2)
	{
	switch(type)
		{
		case 0:return $gameParty.numItems($dataItems[param1]);
		case 1:return $gameParty.numItems($dataWeapons[param1]);
		case 2:return $gameParty.numItems($dataArmors[param1]);
		case 3:var actor=$gameActors.actor(param1);
		if(actor)
			{
			switch(param2)
				{
				case 0:return actor.level;
				case 1:return actor.currentExp();
				case 2:return actor.hp;
				case 3:return actor.mp;
				default:if(param2>=4&&param2<=11)
					{
					return actor.param(param2-4)
				}
			}
		}
		break;
		case 4:var enemy=$gameTroop.members()[param1];
		if(enemy)
			{
			switch(param2)
				{
				case 0:return enemy.hp;
				case 1:return enemy.mp;
				default:if(param2>=2&&param2<=9)
					{
					return enemy.param(param2-2)
				}
			}
		}
		break;
		case 5:var character=this.character(param1);
		if(character)
			{
			switch(param2)
				{
				case 0:return character.x;
				case 1:return character.y;
				case 2:return character.direction();
				case 3:return character.screenX();
				case 4:return character.screenY()
			}
		}
		break;
		case 6:actor=$gameParty.members()[param1];
		return actor?actor.actorId():0;
		case 7:switch(param1)
			{
			case 0:return $gameMap.mapId();
			case 1:return $gameParty.size();
			case 2:return $gameParty.gold();
			case 3:return $gameParty.steps();
			case 4:return $gameSystem.playtime();
			case 5:return $gameTimer.seconds();
			case 6:return $gameSystem.saveCount();
			case 7:return $gameSystem.battleCount();
			case 8:return $gameSystem.winCount();
			case 9:return $gameSystem.escapeCount()
		}
		break
	}
	return 0
};
Game_Interpreter.prototype.operateVariable=function(variableId,operationType,value)
	{
	try
		{
		var oldValue=$gameVariables.value(variableId);
		switch(operationType)
			{
			case 0:$gameVariables.setValue(variableId,oldValue=value);
			break;
			case 1:$gameVariables.setValue(variableId,oldValue+value);
			break;
			case 2:$gameVariables.setValue(variableId,oldValue-value);
			break;
			case 3:$gameVariables.setValue(variableId,oldValue*value);
			break;
			case 4:$gameVariables.setValue(variableId,oldValue/value);
			break;
			case 5:$gameVariables.setValue(variableId,oldValue%value);
			break
		}
	}
	catch(e)
		{
		$gameVariables.setValue(variableId,0)
	}
};
Game_Interpreter.prototype.command123=function()
	{
	if(this._eventId>0)
		{
		var key=[this._mapId,this._eventId,this._params[0]];
		$gameSelfSwitches.setValue(key,this._params[1]===0)
	}
	return true
};
Game_Interpreter.prototype.command124=function()
	{
	if(this._params[0]===0)
		{
		$gameTimer.start(this._params[1]*60)
	}
	else
		{
		$gameTimer.stop()
	}
	return true
};
Game_Interpreter.prototype.command125=function()
	{
	var value=this.operateValue(this._params[0],this._params[1],this._params[2]);
	$gameParty.gainGold(value);
	return true
};
Game_Interpreter.prototype.command126=function()
	{
	var value=this.operateValue(this._params[1],this._params[2],this._params[3]);
	$gameParty.gainItem($dataItems[this._params[0]],value);
	return true
};
Game_Interpreter.prototype.command127=function()
	{
	var value=this.operateValue(this._params[1],this._params[2],this._params[3]);
	$gameParty.gainItem($dataWeapons[this._params[0]],value,this._params[4]);
	return true
};
Game_Interpreter.prototype.command128=function()
	{
	var value=this.operateValue(this._params[1],this._params[2],this._params[3]);
	$gameParty.gainItem($dataArmors[this._params[0]],value,this._params[4]);
	return true
};
Game_Interpreter.prototype.command129=function()
	{
	var actor=$gameActors.actor(this._params[0]);
	if(actor)
		{
		if(this._params[1]===0)
			{
			if(this._params[2])
				{
				$gameActors.actor(this._params[0]).setup(this._params[0])
			}
			$gameParty.addActor(this._params[0])
		}
		else
			{
			$gameParty.removeActor(this._params[0])
		}
	}
	return true
};
Game_Interpreter.prototype.command132=function()
	{
	$gameSystem.setBattleBgm(this._params[0]);
	return true
};
Game_Interpreter.prototype.command133=function()
	{
	$gameSystem.setVictoryMe(this._params[0]);
	return true
};
Game_Interpreter.prototype.command134=function()
	{
	if(this._params[0]===0)
		{
		$gameSystem.disableSave()
	}
	else
		{
		$gameSystem.enableSave()
	}
	return true
};
Game_Interpreter.prototype.command135=function()
	{
	if(this._params[0]===0)
		{
		$gameSystem.disableMenu()
	}
	else
		{
		$gameSystem.enableMenu()
	}
	return true
};
Game_Interpreter.prototype.command136=function()
	{
	if(this._params[0]===0)
		{
		$gameSystem.disableEncounter()
	}
	else
		{
		$gameSystem.enableEncounter()
	}
	$gamePlayer.makeEncounterCount();
	return true
};
Game_Interpreter.prototype.command137=function()
	{
	if(this._params[0]===0)
		{
		$gameSystem.disableFormation()
	}
	else
		{
		$gameSystem.enableFormation()
	}
	return true
};
Game_Interpreter.prototype.command138=function()
	{
	$gameSystem.setWindowTone(this._params[0]);
	return true
};
Game_Interpreter.prototype.command139=function()
	{
	$gameSystem.setDefeatMe(this._params[0]);
	return true
};
Game_Interpreter.prototype.command140=function()
	{
	var vehicle=$gameMap.vehicle(this._params[0]);
	if(vehicle)
		{
		vehicle.setBgm(this._params[1])
	}
	return true
};
Game_Interpreter.prototype.command201=function()
	{
	if(!$gameParty.inBattle()&&!$gameMessage.isBusy())
		{
		var mapId,x,y;
		if(this._params[0]===0)
			{
			mapId=this._params[1];
			x=this._params[2];
			y=this._params[3]
		}
		else
			{
			mapId=$gameVariables.value(this._params[1]);
			x=$gameVariables.value(this._params[2]);
			y=$gameVariables.value(this._params[3])
		}
		$gamePlayer.reserveTransfer(mapId,x,y,this._params[4],this._params[5]);
		this.setWaitMode('transfer');
		this._index++
	}
	return false
};
Game_Interpreter.prototype.command202=function()
	{
	var mapId,x,y;
	if(this._params[1]===0)
		{
		mapId=this._params[2];
		x=this._params[3];
		y=this._params[4]
	}
	else
		{
		mapId=$gameVariables.value(this._params[2]);
		x=$gameVariables.value(this._params[3]);
		y=$gameVariables.value(this._params[4])
	}
	var vehicle=$gameMap.vehicle(this._params[0]);
	if(vehicle)
		{
		vehicle.setLocation(mapId,x,y)
	}
	return true
};
Game_Interpreter.prototype.command203=function()
	{
	var character=this.character(this._params[0]);
	if(character)
		{
		if(this._params[1]===0)
			{
			character.locate(this._params[2],this._params[3])
		}
		else if(this._params[1]===1)
			{
			var x=$gameVariables.value(this._params[2]);
			var y=$gameVariables.value(this._params[3]);
			character.locate(x,y)
		}
		else
			{
			var character2=this.character(this._params[2]);
			if(character2)
				{
				character.swap(character2)
			}
		}
		if(this._params[4]>0)
			{
			character.setDirection(this._params[4])
		}
	}
	return true
};
Game_Interpreter.prototype.command204=function()
	{
	if(!$gameParty.inBattle())
		{
		if($gameMap.isScrolling())
			{
			this.setWaitMode('scroll');
			return false
		}
		$gameMap.startScroll(this._params[0],this._params[1],this._params[2])
	}
	return true
};
Game_Interpreter.prototype.command205=function()
	{
	$gameMap.refreshIfNeeded();
	this._character=this.character(this._params[0]);
	if(this._character)
		{
		this._character.forceMoveRoute(this._params[1]);
		if(this._params[1].wait)
			{
			this.setWaitMode('route')
		}
	}
	return true
};
Game_Interpreter.prototype.command206=function()
	{
	$gamePlayer.getOnOffVehicle();
	return true
};
Game_Interpreter.prototype.command211=function()
	{
	$gamePlayer.setTransparent(this._params[0]===0);
	return true
};
Game_Interpreter.prototype.command212=function()
	{
	this._character=this.character(this._params[0]);
	if(this._character)
		{
		this._character.requestAnimation(this._params[1]);
		if(this._params[2])
			{
			this.setWaitMode('animation')
		}
	}
	return true
};
Game_Interpreter.prototype.command213=function()
	{
	this._character=this.character(this._params[0]);
	if(this._character)
		{
		this._character.requestBalloon(this._params[1]);
		if(this._params[2])
			{
			this.setWaitMode('balloon')
		}
	}
	return true
};
Game_Interpreter.prototype.command214=function()
	{
	if(this.isOnCurrentMap()&&this._eventId>0)
		{
		$gameMap.eraseEvent(this._eventId)
	}
	return true
};
Game_Interpreter.prototype.command216=function()
	{
	if(this._params[0]===0)
		{
		$gamePlayer.showFollowers()
	}
	else
		{
		$gamePlayer.hideFollowers()
	}
	$gamePlayer.refresh();
	return true
};
Game_Interpreter.prototype.command217=function()
	{
	if(!$gameParty.inBattle())
		{
		$gamePlayer.gatherFollowers();
		this.setWaitMode('gather')
	}
	return true
};
Game_Interpreter.prototype.command221=function()
	{
	if(!$gameMessage.isBusy())
		{
		$gameScreen.startFadeOut(this.fadeSpeed());
		this.wait(this.fadeSpeed());
		this._index++
	}
	return false
};
Game_Interpreter.prototype.command222=function()
	{
	if(!$gameMessage.isBusy())
		{
		$gameScreen.startFadeIn(this.fadeSpeed());
		this.wait(this.fadeSpeed());
		this._index++
	}
	return false
};
Game_Interpreter.prototype.command223=function()
	{
	$gameScreen.startTint(this._params[0],this._params[1]);
	if(this._params[2])
		{
		this.wait(this._params[1])
	}
	return true
};
Game_Interpreter.prototype.command224=function()
	{
	$gameScreen.startFlash(this._params[0],this._params[1]);
	if(this._params[2])
		{
		this.wait(this._params[1])
	}
	return true
};
Game_Interpreter.prototype.command225=function()
	{
	$gameScreen.startShake(this._params[0],this._params[1],this._params[2]);
	if(this._params[3])
		{
		this.wait(this._params[2])
	}
	return true
};
Game_Interpreter.prototype.command230=function()
	{
	this.wait(this._params[0]);
	return true
};
Game_Interpreter.prototype.command231=function()
	{
	var x,y;
	if(this._params[3]===0)
		{
		x=this._params[4];
		y=this._params[5]
	}
	else
		{
		x=$gameVariables.value(this._params[4]);
		y=$gameVariables.value(this._params[5])
	}
	$gameScreen.showPicture(this._params[0],this._params[1],this._params[2],x,y,this._params[6],this._params[7],this._params[8],this._params[9]);
	return true
};
Game_Interpreter.prototype.command232=function()
	{
	var x,y;
	if(this._params[3]===0)
		{
		x=this._params[4];
		y=this._params[5]
	}
	else
		{
		x=$gameVariables.value(this._params[4]);
		y=$gameVariables.value(this._params[5])
	}
	$gameScreen.movePicture(this._params[0],this._params[2],x,y,this._params[6],this._params[7],this._params[8],this._params[9],this._params[10]);
	if(this._params[11])
		{
		this.wait(this._params[10])
	}
	return true
};
Game_Interpreter.prototype.command233=function()
	{
	$gameScreen.rotatePicture(this._params[0],this._params[1]);
	return true
};
Game_Interpreter.prototype.command234=function()
	{
	$gameScreen.tintPicture(this._params[0],this._params[1],this._params[2]);
	if(this._params[3])
		{
		this.wait(this._params[2])
	}
	return true
};
Game_Interpreter.prototype.command235=function()
	{
	$gameScreen.erasePicture(this._params[0]);
	return true
};
Game_Interpreter.prototype.command236=function()
	{
	if(!$gameParty.inBattle())
		{
		$gameScreen.changeWeather(this._params[0],this._params[1],this._params[2]);
		if(this._params[3])
			{
			this.wait(this._params[2])
		}
	}
	return true
};
Game_Interpreter.prototype.command241=function()
	{
	AudioManager.playBgm(this._params[0]);
	return true
};
Game_Interpreter.prototype.command242=function()
	{
	AudioManager.fadeOutBgm(this._params[0]);
	return true
};
Game_Interpreter.prototype.command243=function()
	{
	$gameSystem.saveBgm();
	return true
};
Game_Interpreter.prototype.command244=function()
	{
	$gameSystem.replayBgm();
	return true
};
Game_Interpreter.prototype.command245=function()
	{
	AudioManager.playBgs(this._params[0]);
	return true
};
Game_Interpreter.prototype.command246=function()
	{
	AudioManager.fadeOutBgs(this._params[0]);
	return true
};
Game_Interpreter.prototype.command249=function()
	{
	AudioManager.playMe(this._params[0]);
	return true
};
Game_Interpreter.prototype.command250=function()
	{
	AudioManager.playSe(this._params[0]);
	return true
};
Game_Interpreter.prototype.command251=function()
	{
	AudioManager.stopSe();
	return true
};
Game_Interpreter.prototype.command261=function()
	{
	if(!$gameMessage.isBusy())
		{
		var name=this._params[0];
		if(name.length>0)
			{
			var ext=this.videoFileExt();
			Graphics.playVideo('movies/'+name+ext);
			this.setWaitMode('video')
		}
		this._index++
	}
	return false
};
Game_Interpreter.prototype.videoFileExt=function()
	{
	if(Graphics.canPlayVideoType('video/webm')&&!Utils.isMobileDevice())
		{
		return'.webm'
	}
	else
		{
		return'.mp4'
	}
};
Game_Interpreter.prototype.command281=function()
	{
	if(this._params[0]===0)
		{
		$gameMap.enableNameDisplay()
	}
	else
		{
		$gameMap.disableNameDisplay()
	}
	return true
};
Game_Interpreter.prototype.command282=function()
	{
	var tileset=$dataTilesets[this._params[0]];
	for(var i=0;
	i<tileset.tilesetNames.length;
	i++)
		{
		ImageManager.loadTileset(tileset.tilesetNames[i])
	}
	if(ImageManager.isReady())
		{
		$gameMap.changeTileset(this._params[0]);
		return true
	}
	else
		{
		return false
	}
};
Game_Interpreter.prototype.command283=function()
	{
	$gameMap.changeBattleback(this._params[0],this._params[1]);
	return true
};
Game_Interpreter.prototype.command284=function()
	{
	$gameMap.changeParallax(this._params[0],this._params[1],this._params[2],this._params[3],this._params[4]);
	return true
};
Game_Interpreter.prototype.command285=function()
	{
	var x,y,value;
	if(this._params[2]===0)
		{
		x=this._params[3];
		y=this._params[4]
	}
	else
		{
		x=$gameVariables.value(this._params[3]);
		y=$gameVariables.value(this._params[4])
	}
	switch(this._params[1])
		{
		case 0:value=$gameMap.terrainTag(x,y);
		break;
		case 1:value=$gameMap.eventIdXy(x,y);
		break;
		case 2:case 3:case 4:case 5:value=$gameMap.tileId(x,y,this._params[1]-2);
		break;
		default:value=$gameMap.regionId(x,y);
		break
	}
	$gameVariables.setValue(this._params[0],value);
	return true
};
Game_Interpreter.prototype.command301=function()
	{
	if(!$gameParty.inBattle())
		{
		var troopId;
		if(this._params[0]===0)
			{
			troopId=this._params[1]
		}
		else if(this._params[0]===1)
			{
			troopId=$gameVariables.value(this._params[1])
		}
		else
			{
			troopId=$gamePlayer.makeEncounterTroopId()
		}
		if($dataTroops[troopId])
			{
			BattleManager.setup(troopId,this._params[2],this._params[3]);
			BattleManager.setEventCallback(function(n)
				{
				this._branch[this._indent]=n
			}
			.bind(this));
			$gamePlayer.makeEncounterCount();
			SceneManager.push(Scene_Battle)
		}
	}
	return true
};
Game_Interpreter.prototype.command601=function()
	{
	if(this._branch[this._indent]!==0)
		{
		this.skipBranch()
	}
	return true
};
Game_Interpreter.prototype.command602=function()
	{
	if(this._branch[this._indent]!==1)
		{
		this.skipBranch()
	}
	return true
};
Game_Interpreter.prototype.command603=function()
	{
	if(this._branch[this._indent]!==2)
		{
		this.skipBranch()
	}
	return true
};
Game_Interpreter.prototype.command302=function()
	{
	if(!$gameParty.inBattle())
		{
		var goods=[this._params];
		while(this.nextEventCode()===605)
			{
			this._index++;
			goods.push(this.currentCommand().parameters)
		}
		SceneManager.push(Scene_Shop);
		SceneManager.prepareNextScene(goods,this._params[4])
	}
	return true
};
Game_Interpreter.prototype.command303=function()
	{
	if(!$gameParty.inBattle())
		{
		if($dataActors[this._params[0]])
			{
			SceneManager.push(Scene_Name);
			SceneManager.prepareNextScene(this._params[0],this._params[1])
		}
	}
	return true
};
Game_Interpreter.prototype.command311=function()
	{
	var value=this.operateValue(this._params[2],this._params[3],this._params[4]);
	this.iterateActorEx(this._params[0],this._params[1],function(actor)
		{
		this.changeHp(actor,value,this._params[5])
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command312=function()
	{
	var value=this.operateValue(this._params[2],this._params[3],this._params[4]);
	this.iterateActorEx(this._params[0],this._params[1],function(actor)
		{
		actor.gainMp(value)
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command326=function()
	{
	var value=this.operateValue(this._params[2],this._params[3],this._params[4]);
	this.iterateActorEx(this._params[0],this._params[1],function(actor)
		{
		actor.gainTp(value)
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command313=function()
	{
	this.iterateActorEx(this._params[0],this._params[1],function(actor)
		{
		var alreadyDead=actor.isDead();
		if(this._params[2]===0)
			{
			actor.addState(this._params[3])
		}
		else
			{
			actor.removeState(this._params[3])
		}
		if(actor.isDead()&&!alreadyDead)
			{
			actor.performCollapse()
		}
		actor.clearResult()
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command314=function()
	{
	this.iterateActorEx(this._params[0],this._params[1],function(actor)
		{
		actor.recoverAll()
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command315=function()
	{
	var value=this.operateValue(this._params[2],this._params[3],this._params[4]);
	this.iterateActorEx(this._params[0],this._params[1],function(actor)
		{
		actor.changeExp(actor.currentExp()+value,this._params[5])
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command316=function()
	{
	var value=this.operateValue(this._params[2],this._params[3],this._params[4]);
	this.iterateActorEx(this._params[0],this._params[1],function(actor)
		{
		actor.changeLevel(actor.level+value,this._params[5])
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command317=function()
	{
	var value=this.operateValue(this._params[3],this._params[4],this._params[5]);
	this.iterateActorEx(this._params[0],this._params[1],function(actor)
		{
		actor.addParam(this._params[2],value)
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command318=function()
	{
	this.iterateActorEx(this._params[0],this._params[1],function(actor)
		{
		if(this._params[2]===0)
			{
			actor.learnSkill(this._params[3])
		}
		else
			{
			actor.forgetSkill(this._params[3])
		}
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command319=function()
	{
	var actor=$gameActors.actor(this._params[0]);
	if(actor)
		{
		actor.changeEquipById(this._params[1],this._params[2])
	}
	return true
};
Game_Interpreter.prototype.command320=function()
	{
	var actor=$gameActors.actor(this._params[0]);
	if(actor)
		{
		actor.setName(this._params[1])
	}
	return true
};
Game_Interpreter.prototype.command321=function()
	{
	var actor=$gameActors.actor(this._params[0]);
	if(actor&&$dataClasses[this._params[1]])
		{
		actor.changeClass(this._params[1],false)
	}
	return true
};
Game_Interpreter.prototype.command322=function()
	{
	var actor=$gameActors.actor(this._params[0]);
	if(actor)
		{
		actor.setCharacterImage(this._params[1],this._params[2]);
		actor.setFaceImage(this._params[3],this._params[4]);
		actor.setBattlerImage(this._params[5])
	}
	$gamePlayer.refresh();
	return true
};
Game_Interpreter.prototype.command323=function()
	{
	var vehicle=$gameMap.vehicle(this._params[0]);
	if(vehicle)
		{
		vehicle.setImage(this._params[1],this._params[2])
	}
	return true
};
Game_Interpreter.prototype.command324=function()
	{
	var actor=$gameActors.actor(this._params[0]);
	if(actor)
		{
		actor.setNickname(this._params[1])
	}
	return true
};
Game_Interpreter.prototype.command325=function()
	{
	var actor=$gameActors.actor(this._params[0]);
	if(actor)
		{
		actor.setProfile(this._params[1])
	}
	return true
};
Game_Interpreter.prototype.command331=function()
	{
	var value=this.operateValue(this._params[1],this._params[2],this._params[3]);
	this.iterateEnemyIndex(this._params[0],function(enemy)
		{
		this.changeHp(enemy,value,this._params[4])
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command332=function()
	{
	var value=this.operateValue(this._params[1],this._params[2],this._params[3]);
	this.iterateEnemyIndex(this._params[0],function(enemy)
		{
		enemy.gainMp(value)
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command342=function()
	{
	var value=this.operateValue(this._params[1],this._params[2],this._params[3]);
	this.iterateEnemyIndex(this._params[0],function(enemy)
		{
		enemy.gainTp(value)
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command333=function()
	{
	this.iterateEnemyIndex(this._params[0],function(enemy)
		{
		var alreadyDead=enemy.isDead();
		if(this._params[1]===0)
			{
			enemy.addState(this._params[2])
		}
		else
			{
			enemy.removeState(this._params[2])
		}
		if(enemy.isDead()&&!alreadyDead)
			{
			enemy.performCollapse()
		}
		enemy.clearResult()
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command334=function()
	{
	this.iterateEnemyIndex(this._params[0],function(enemy)
		{
		enemy.recoverAll()
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command335=function()
	{
	this.iterateEnemyIndex(this._params[0],function(enemy)
		{
		enemy.appear();
		$gameTroop.makeUniqueNames()
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command336=function()
	{
	this.iterateEnemyIndex(this._params[0],function(enemy)
		{
		enemy.transform(this._params[1]);
		$gameTroop.makeUniqueNames()
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command337=function()
	{
	this.iterateEnemyIndex(this._params[0],function(enemy)
		{
		if(enemy.isAlive())
			{
			enemy.startAnimation(this._params[1],false,0)
		}
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command339=function()
	{
	this.iterateBattler(this._params[0],this._params[1],function(battler)
		{
		if(!battler.isDeathStateAffected())
			{
			battler.forceAction(this._params[2],this._params[3]);
			BattleManager.forceAction(battler);
			this.setWaitMode('action')
		}
	}
	.bind(this));
	return true
};
Game_Interpreter.prototype.command340=function()
	{
	BattleManager.abort();
	return true
};
Game_Interpreter.prototype.command351=function()
	{
	if(!$gameParty.inBattle())
		{
		SceneManager.push(Scene_Menu);
		Window_MenuCommand.initCommandPosition()
	}
	return true
};
Game_Interpreter.prototype.command352=function()
	{
	if(!$gameParty.inBattle())
		{
		SceneManager.push(Scene_Save)
	}
	return true
};
Game_Interpreter.prototype.command353=function()
	{
	SceneManager.goto(Scene_Gameover);
	return true
};
Game_Interpreter.prototype.command354=function()
	{
	SceneManager.goto(Scene_Title);
	return true
};
Game_Interpreter.prototype.command355=function()
	{
	var script=this.currentCommand().parameters[0]+'\n';
	while(this.nextEventCode()===655)
		{
		this._index++;
		script+=this.currentCommand().parameters[0]+'\n'
	}
	eval(script);
	return true
};
Game_Interpreter.prototype.command356=function()
	{
	var args=this._params[0].split(" ");
	var command=args.shift();
	this.pluginCommand(command,args);
	return true
};
Game_Interpreter.prototype.pluginCommand=function(command,args)
	{
};
 

 

 

 

rpg_managers.js

 

 

function DataManager()
	{
	throw new Error('This is a static class')
}
var $dataActors=null;
var $dataClasses=null;
var $dataSkills=null;
var $dataItems=null;
var $dataWeapons=null;
var $dataArmors=null;
var $dataEnemies=null;
var $dataTroops=null;
var $dataStates=null;
var $dataAnimations=null;
var $dataTilesets=null;
var $dataCommonEvents=null;
var $dataSystem=null;
var $dataMapInfos=null;
var $dataMap=null;
var $gameTemp=null;
var $gameSystem=null;
var $gameScreen=null;
var $gameTimer=null;
var $gameMessage=null;
var $gameSwitches=null;
var $gameVariables=null;
var $gameSelfSwitches=null;
var $gameActors=null;
var $gameParty=null;
var $gameTroop=null;
var $gameMap=null;
var $gamePlayer=null;
var $testEvent=null;
DataManager._globalId='RPGMV';
DataManager._lastAccessedId=1;
DataManager._errorUrl=null;
DataManager._databaseFiles=[
	{
	name:'$dataActors',src:'Actors.json'
}
,
	{
	name:'$dataClasses',src:'Classes.json'
}
,
	{
	name:'$dataSkills',src:'Skills.json'
}
,
	{
	name:'$dataItems',src:'Items.json'
}
,
	{
	name:'$dataWeapons',src:'Weapons.json'
}
,
	{
	name:'$dataArmors',src:'Armors.json'
}
,
	{
	name:'$dataEnemies',src:'Enemies.json'
}
,
	{
	name:'$dataTroops',src:'Troops.json'
}
,
	{
	name:'$dataStates',src:'States.json'
}
,
	{
	name:'$dataAnimations',src:'Animations.json'
}
,
	{
	name:'$dataTilesets',src:'Tilesets.json'
}
,
	{
	name:'$dataCommonEvents',src:'CommonEvents.json'
}
,
	{
	name:'$dataSystem',src:'System.json'
}
,
	{
	name:'$dataMapInfos',src:'MapInfos.json'
}
];
DataManager.loadDatabase=function()
	{
	var test=this.isBattleTest()||this.isEventTest();
	var prefix=test?'Test_':'';
	for(var i=0;
	i<this._databaseFiles.length;
	i++)
		{
		var name=this._databaseFiles[i].name;
		var src=this._databaseFiles[i].src;
		this.loadDataFile(name,prefix+src)
	}
	if(this.isEventTest())
		{
		this.loadDataFile('$testEvent',prefix+'Event.json')
	}
};
DataManager.loadDataFile=function(name,src)
	{
	var xhr=new XMLHttpRequest();
	var url='data/'+src;
	xhr.open('GET',url);
	xhr.overrideMimeType('application/json');
	xhr.onload=function()
		{
		if(xhr.status<400)
			{
			window[name]=JSON.parse(xhr.responseText);
			DataManager.onLoad(window[name])
		}
	};
	xhr.onerror=function()
		{
		DataManager._errorUrl=DataManager._errorUrl||url
	};
	window[name]=null;
	xhr.send()
};
DataManager.isDatabaseLoaded=function()
	{
	this.checkError();
	for(var i=0;
	i<this._databaseFiles.length;
	i++)
		{
		if(!window[this._databaseFiles[i].name])
			{
			return false
		}
	}
	return true
};
DataManager.loadMapData=function(mapId)
	{
	if(mapId>0)
		{
		var filename='Map%1.json'.format(mapId.padZero(3));
		this.loadDataFile('$dataMap',filename)
	}
	else
		{
		this.makeEmptyMap()
	}
};
DataManager.makeEmptyMap=function()
	{
	$dataMap=
		{
	};
	$dataMap.data=[];
	$dataMap.events=[];
	$dataMap.width=100;
	$dataMap.height=100;
	$dataMap.scrollType=3
};
DataManager.isMapLoaded=function()
	{
	this.checkError();
	return!!$dataMap
};
DataManager.onLoad=function(object)
	{
	var array;
	if(object===$dataMap)
		{
		this.extractMetadata(object);
		array=object.events
	}
	else
		{
		array=object
	}
	if(Array.isArray(array))
		{
		for(var i=0;
		i<array.length;
		i++)
			{
			var data=array[i];
			if(data&&data.note!==undefined)
				{
				this.extractMetadata(data)
			}
		}
	}
};
DataManager.extractMetadata=function(data)
	{
	var re=/<([^<>:]+)(:?)([^>]*)>/g;
	data.meta=
		{
	};
	for(;;
	)
		{
		var match=re.exec(data.note);
		if(match)
			{
			if(match[2]===':')
				{
				data.meta[match[1]]=match[3]
			}
			else
				{
				data.meta[match[1]]=true
			}
		}
		else
			{
			break
		}
	}
};
DataManager.checkError=function()
	{
	if(DataManager._errorUrl)
		{
		throw new Error('Failed to load: '+DataManager._errorUrl)
	}
};
DataManager.isBattleTest=function()
	{
	return Utils.isOptionValid('btest')
};
DataManager.isEventTest=function()
	{
	return Utils.isOptionValid('etest')
};
DataManager.isSkill=function(item)
	{
	return item&&$dataSkills.contains(item)
};
DataManager.isItem=function(item)
	{
	return item&&$dataItems.contains(item)
};
DataManager.isWeapon=function(item)
	{
	return item&&$dataWeapons.contains(item)
};
DataManager.isArmor=function(item)
	{
	return item&&$dataArmors.contains(item)
};
DataManager.createGameObjects=function()
	{
	$gameTemp=new Game_Temp();
	$gameSystem=new Game_System();
	$gameScreen=new Game_Screen();
	$gameTimer=new Game_Timer();
	$gameMessage=new Game_Message();
	$gameSwitches=new Game_Switches();
	$gameVariables=new Game_Variables();
	$gameSelfSwitches=new Game_SelfSwitches();
	$gameActors=new Game_Actors();
	$gameParty=new Game_Party();
	$gameTroop=new Game_Troop();
	$gameMap=new Game_Map();
	$gamePlayer=new Game_Player()
};
DataManager.setupNewGame=function()
	{
	this.createGameObjects();
	this.selectSavefileForNewGame();
	$gameParty.setupStartingMembers();
	$gamePlayer.reserveTransfer($dataSystem.startMapId,$dataSystem.startX,$dataSystem.startY);
	Graphics.frameCount=0
};
DataManager.setupBattleTest=function()
	{
	this.createGameObjects();
	$gameParty.setupBattleTest();
	BattleManager.setup($dataSystem.testTroopId,true,false);
	BattleManager.setBattleTest(true);
	BattleManager.playBattleBgm()
};
DataManager.setupEventTest=function()
	{
	this.createGameObjects();
	this.selectSavefileForNewGame();
	$gameParty.setupStartingMembers();
	$gamePlayer.reserveTransfer(-1,8,6);
	$gamePlayer.setTransparent(false)
};
DataManager.loadGlobalInfo=function()
	{
	var json;
	try
		{
		json=StorageManager.load(0)
	}
	catch(e)
		{
		console.error(e);
		return[]
	}
	if(json)
		{
		var globalInfo=JSON.parse(json);
		for(var i=1;
		i<=this.maxSavefiles();
		i++)
			{
			if(!StorageManager.exists(i))
				{
				delete globalInfo[i]
			}
		}
		return globalInfo
	}
	else
		{
		return[]
	}
};
DataManager.saveGlobalInfo=function(info)
	{
	StorageManager.save(0,JSON.stringify(info))
};
DataManager.isThisGameFile=function(savefileId)
	{
	var globalInfo=this.loadGlobalInfo();
	if(globalInfo&&globalInfo[savefileId])
		{
		if(StorageManager.isLocalMode())
			{
			return true
		}
		else
			{
			var savefile=globalInfo[savefileId];
			return(savefile.globalId===this._globalId&&savefile.title===$dataSystem.gameTitle)
		}
	}
	else
		{
		return false
	}
};
DataManager.isAnySavefileExists=function()
	{
	var globalInfo=this.loadGlobalInfo();
	if(globalInfo)
		{
		for(var i=1;
		i<globalInfo.length;
		i++)
			{
			if(this.isThisGameFile(i))
				{
				return true
			}
		}
	}
	return false
};
DataManager.latestSavefileId=function()
	{
	var globalInfo=this.loadGlobalInfo();
	var savefileId=1;
	var timestamp=0;
	if(globalInfo)
		{
		for(var i=1;
		i<globalInfo.length;
		i++)
			{
			if(this.isThisGameFile(i)&&globalInfo[i].timestamp>timestamp)
				{
				timestamp=globalInfo[i].timestamp;
				savefileId=i
			}
		}
	}
	return savefileId
};
DataManager.loadAllSavefileImages=function()
	{
	var globalInfo=this.loadGlobalInfo();
	if(globalInfo)
		{
		for(var i=1;
		i<globalInfo.length;
		i++)
			{
			if(this.isThisGameFile(i))
				{
				var info=globalInfo[i];
				this.loadSavefileImages(info)
			}
		}
	}
};
DataManager.loadSavefileImages=function(info)
	{
	if(info.characters)
		{
		for(var i=0;
		i<info.characters.length;
		i++)
			{
			ImageManager.loadCharacter(info.characters[i][0])
		}
	}
	if(info.faces)
		{
		for(var j=0;
		j<info.faces.length;
		j++)
			{
			ImageManager.loadFace(info.faces[j][0])
		}
	}
};
DataManager.maxSavefiles=function()
	{
	return 20
};
DataManager.saveGame=function(savefileId)
	{
	try
		{
		return this.saveGameWithoutRescue(savefileId)
	}
	catch(e)
		{
		console.error(e);
		try
			{
			StorageManager.remove(savefileId)
		}
		catch(e2)
			{
		}
		return false
	}
};
DataManager.loadGame=function(savefileId)
	{
	try
		{
		return this.loadGameWithoutRescue(savefileId)
	}
	catch(e)
		{
		console.error(e);
		return false
	}
};
DataManager.loadSavefileInfo=function(savefileId)
	{
	var globalInfo=this.loadGlobalInfo();
	return(globalInfo&&globalInfo[savefileId])?globalInfo[savefileId]:null
};
DataManager.lastAccessedSavefileId=function()
	{
	return this._lastAccessedId
};
DataManager.saveGameWithoutRescue=function(savefileId)
	{
	var json=JsonEx.stringify(this.makeSaveContents());
	if(json.length>=200000)
		{
		console.warn('Save data too big!')
	}
	StorageManager.save(savefileId,json);
	this._lastAccessedId=savefileId;
	var globalInfo=this.loadGlobalInfo()||[];
	globalInfo[savefileId]=this.makeSavefileInfo();
	this.saveGlobalInfo(globalInfo);
	return true
};
DataManager.loadGameWithoutRescue=function(savefileId)
	{
	var globalInfo=this.loadGlobalInfo();
	if(this.isThisGameFile(savefileId))
		{
		var json=StorageManager.load(savefileId);
		this.createGameObjects();
		this.extractSaveContents(JsonEx.parse(json));
		this._lastAccessedId=savefileId;
		return true
	}
	else
		{
		return false
	}
};
DataManager.selectSavefileForNewGame=function()
	{
	var globalInfo=this.loadGlobalInfo();
	this._lastAccessedId=1;
	if(globalInfo)
		{
		var numSavefiles=Math.max(0,globalInfo.length-1);
		if(numSavefiles<this.maxSavefiles())
			{
			this._lastAccessedId=numSavefiles+1
		}
		else
			{
			var timestamp=Number.MAX_VALUE;
			for(var i=1;
			i<globalInfo.length;
			i++)
				{
				if(!globalInfo[i])
					{
					this._lastAccessedId=i;
					break
				}
				if(globalInfo[i].timestamp<timestamp)
					{
					timestamp=globalInfo[i].timestamp;
					this._lastAccessedId=i
				}
			}
		}
	}
};
DataManager.makeSavefileInfo=function()
	{
	var info=
		{
	};
	info.globalId=this._globalId;
	info.title=$dataSystem.gameTitle;
	info.characters=$gameParty.charactersForSavefile();
	info.faces=$gameParty.facesForSavefile();
	info.playtime=$gameSystem.playtimeText();
	info.timestamp=Date.now();
	return info
};
DataManager.makeSaveContents=function()
	{
	var contents=
		{
	};
	contents.system=$gameSystem;
	contents.screen=$gameScreen;
	contents.timer=$gameTimer;
	contents.switches=$gameSwitches;
	contents.variables=$gameVariables;
	contents.selfSwitches=$gameSelfSwitches;
	contents.actors=$gameActors;
	contents.party=$gameParty;
	contents.map=$gameMap;
	contents.player=$gamePlayer;
	return contents
};
DataManager.extractSaveContents=function(contents)
	{
	$gameSystem=contents.system;
	$gameScreen=contents.screen;
	$gameTimer=contents.timer;
	$gameSwitches=contents.switches;
	$gameVariables=contents.variables;
	$gameSelfSwitches=contents.selfSwitches;
	$gameActors=contents.actors;
	$gameParty=contents.party;
	$gameMap=contents.map;
	$gamePlayer=contents.player
};
function ConfigManager()
	{
	throw new Error('This is a static class')
}
ConfigManager.alwaysDash=false;
ConfigManager.commandRemember=false;
Object.defineProperty(ConfigManager,'bgmVolume',
	{
	get:function()
		{
		return AudioManager._bgmVolume
	}
	,set:function(value)
		{
		AudioManager.bgmVolume=value
	}
	,configurable:true
}
);
Object.defineProperty(ConfigManager,'bgsVolume',
	{
	get:function()
		{
		return AudioManager.bgsVolume
	}
	,set:function(value)
		{
		AudioManager.bgsVolume=value
	}
	,configurable:true
}
);
Object.defineProperty(ConfigManager,'meVolume',
	{
	get:function()
		{
		return AudioManager.meVolume
	}
	,set:function(value)
		{
		AudioManager.meVolume=value
	}
	,configurable:true
}
);
Object.defineProperty(ConfigManager,'seVolume',
	{
	get:function()
		{
		return AudioManager.seVolume
	}
	,set:function(value)
		{
		AudioManager.seVolume=value
	}
	,configurable:true
}
);
ConfigManager.load=function()
	{
	var json;
	var config=
		{
	};
	try
		{
		json=StorageManager.load(-1)
	}
	catch(e)
		{
		console.error(e)
	}
	if(json)
		{
		config=JSON.parse(json)
	}
	this.applyData(config)
};
ConfigManager.save=function()
	{
	StorageManager.save(-1,JSON.stringify(this.makeData()))
};
ConfigManager.makeData=function()
	{
	var config=
		{
	};
	config.alwaysDash=this.alwaysDash;
	config.commandRemember=this.commandRemember;
	config.bgmVolume=this.bgmVolume;
	config.bgsVolume=this.bgsVolume;
	config.meVolume=this.meVolume;
	config.seVolume=this.seVolume;
	return config
};
ConfigManager.applyData=function(config)
	{
	this.alwaysDash=this.readFlag(config,'alwaysDash');
	this.commandRemember=this.readFlag(config,'commandRemember');
	this.bgmVolume=this.readVolume(config,'bgmVolume');
	this.bgsVolume=this.readVolume(config,'bgsVolume');
	this.meVolume=this.readVolume(config,'meVolume');
	this.seVolume=this.readVolume(config,'seVolume')
};
ConfigManager.readFlag=function(config,name)
	{
	return!!config[name]
};
ConfigManager.readVolume=function(config,name)
	{
	var value=config[name];
	if(value!==undefined)
		{
		return Number(value).clamp(0,100)
	}
	else
		{
		return 100
	}
};
function StorageManager()
	{
	throw new Error('This is a static class')
}
StorageManager.save=function(savefileId,json)
	{
	if(this.isLocalMode())
		{
		this.saveToLocalFile(savefileId,json)
	}
	else
		{
		this.saveToWebStorage(savefileId,json)
	}
};
StorageManager.load=function(savefileId)
	{
	if(this.isLocalMode())
		{
		return this.loadFromLocalFile(savefileId)
	}
	else
		{
		return this.loadFromWebStorage(savefileId)
	}
};
StorageManager.exists=function(savefileId)
	{
	if(this.isLocalMode())
		{
		return this.localFileExists(savefileId)
	}
	else
		{
		return this.webStorageExists(savefileId)
	}
};
StorageManager.remove=function(savefileId)
	{
	if(this.isLocalMode())
		{
		this.removeLocalFile(savefileId)
	}
	else
		{
		this.removeWebStorage(savefileId)
	}
};
StorageManager.isLocalMode=function()
	{
	return Utils.isNwjs()
};
StorageManager.saveToLocalFile=function(savefileId,json)
	{
	var data=LZString.compressToBase64(json);
	var fs=require('fs');
	var dirPath=this.localFileDirectoryPath();
	var filePath=this.localFilePath(savefileId);
	if(!fs.existsSync(dirPath))
		{
		fs.mkdirSync(dirPath)
	}
	fs.writeFileSync(filePath,data)
};
StorageManager.loadFromLocalFile=function(savefileId)
	{
	var data=null;
	var fs=require('fs');
	var filePath=this.localFilePath(savefileId);
	if(fs.existsSync(filePath))
		{
		data=fs.readFileSync(filePath,
			{
			encoding:'utf8'
		}
		)
	}
	return LZString.decompressFromBase64(data)
};
StorageManager.localFileExists=function(savefileId)
	{
	var fs=require('fs');
	return fs.existsSync(this.localFilePath(savefileId))
};
StorageManager.removeLocalFile=function(savefileId)
	{
	var fs=require('fs');
	var filePath=this.localFilePath(savefileId);
	if(fs.existsSync(filePath))
		{
		fs.unlinkSync(filePath)
	}
};
StorageManager.saveToWebStorage=function(savefileId,json)
	{
	var key=this.webStorageKey(savefileId);
	var data=LZString.compressToBase64(json);
	localStorage.setItem(key,data)
};
StorageManager.loadFromWebStorage=function(savefileId)
	{
	var key=this.webStorageKey(savefileId);
	var data=localStorage.getItem(key);
	return LZString.decompressFromBase64(data)
};
StorageManager.webStorageExists=function(savefileId)
	{
	var key=this.webStorageKey(savefileId);
	return!!localStorage.getItem(key)
};
StorageManager.removeWebStorage=function(savefileId)
	{
	var key=this.webStorageKey(savefileId);
	localStorage.removeItem(key)
};
StorageManager.localFileDirectoryPath=function()
	{
	var path=window.location.pathname.replace(/\/[^\/]*$/,'/save/');
	if(path.match(/^\/([A-Z]\:)/))
		{
		path=path.slice(1)
	}
	return decodeURIComponent(path)
};
StorageManager.localFilePath=function(savefileId)
	{
	var name;
	if(savefileId<0)
		{
		name='config.rpgsave'
	}
	else if(savefileId===0)
		{
		name='global.rpgsave'
	}
	else
		{
		name='file%1.rpgsave'.format(savefileId)
	}
	return this.localFileDirectoryPath()+name
};
StorageManager.webStorageKey=function(savefileId)
	{
	if(savefileId<0)
		{
		return'RPG Config'
	}
	else if(savefileId===0)
		{
		return'RPG Global'
	}
	else
		{
		return'RPG File%1'.format(savefileId)
	}
};
function ImageManager()
	{
	throw new Error('This is a static class')
}
ImageManager._cache=
	{
};
ImageManager.loadAnimation=function(filename,hue)
	{
	return this.loadBitmap('img/animations/',filename,hue,true)
};
ImageManager.loadBattleback1=function(filename,hue)
	{
	return this.loadBitmap('img/battlebacks1/',filename,hue,true)
};
ImageManager.loadBattleback2=function(filename,hue)
	{
	return this.loadBitmap('img/battlebacks2/',filename,hue,true)
};
ImageManager.loadEnemy=function(filename,hue)
	{
	return this.loadBitmap('img/enemies/',filename,hue,true)
};
ImageManager.loadCharacter=function(filename,hue)
	{
	return this.loadBitmap('img/characters/',filename,hue,false)
};
ImageManager.loadFace=function(filename,hue)
	{
	return this.loadBitmap('img/faces/',filename,hue,true)
};
ImageManager.loadParallax=function(filename,hue)
	{
	return this.loadBitmap('img/parallaxes/',filename,hue,true)
};
ImageManager.loadPicture=function(filename,hue)
	{
	return this.loadBitmap('img/pictures/',filename,hue,true)
};
ImageManager.loadSvActor=function(filename,hue)
	{
	return this.loadBitmap('img/sv_actors/',filename,hue,false)
};
ImageManager.loadSvEnemy=function(filename,hue)
	{
	return this.loadBitmap('img/sv_enemies/',filename,hue,true)
};
ImageManager.loadSystem=function(filename,hue)
	{
	return this.loadBitmap('img/system/',filename,hue,false)
};
ImageManager.loadTileset=function(filename,hue)
	{
	return this.loadBitmap('img/tilesets/',filename,hue,false)
};
ImageManager.loadTitle1=function(filename,hue)
	{
	return this.loadBitmap('img/titles1/',filename,hue,true)
};
ImageManager.loadTitle2=function(filename,hue)
	{
	return this.loadBitmap('img/titles2/',filename,hue,true)
};
ImageManager.loadBitmap=function(folder,filename,hue,smooth)
	{
	if(filename)
		{
		var path=folder+encodeURIComponent(filename)+'.png';
		var bitmap=this.loadNormalBitmap(path,hue||0);
		bitmap.smooth=smooth;
		return bitmap
	}
	else
		{
		return this.loadEmptyBitmap()
	}
};
ImageManager.loadEmptyBitmap=function()
	{
	if(!this._cache[null])
		{
		this._cache[null]=new Bitmap()
	}
	return this._cache[null]
};
ImageManager.loadNormalBitmap=function(path,hue)
	{
	var key=path+':'+hue;
	if(!this._cache[key])
		{
		var bitmap=Bitmap.load(path);
		bitmap.addLoadListener(function()
			{
			bitmap.rotateHue(hue)
		}
		);
		this._cache[key]=bitmap
	}
	return this._cache[key]
};
ImageManager.clear=function()
	{
	this._cache=
		{
	}
};
ImageManager.isReady=function()
	{
	for(var key in this._cache)
		{
		var bitmap=this._cache[key];
		if(bitmap.isError())
			{
			throw new Error('Failed to load: '+bitmap.url)
		}
		if(!bitmap.isReady())
			{
			return false
		}
	}
	return true
};
ImageManager.isObjectCharacter=function(filename)
	{
	var sign=filename.match(/^[\!\$]+/);
	return sign&&sign[0].contains('!')
};
ImageManager.isBigCharacter=function(filename)
	{
	var sign=filename.match(/^[\!\$]+/);
	return sign&&sign[0].contains('$')
};
ImageManager.isZeroParallax=function(filename)
	{
	return filename.charAt(0)==='!'
};
function AudioManager()
	{
	throw new Error('This is a static class')
}
AudioManager._bgmVolume=100;
AudioManager._bgsVolume=100;
AudioManager._meVolume=100;
AudioManager._seVolume=100;
AudioManager._currentBgm=null;
AudioManager._currentBgs=null;
AudioManager._bgmBuffer=null;
AudioManager._bgsBuffer=null;
AudioManager._meBuffer=null;
AudioManager._seBuffers=[];
AudioManager._staticBuffers=[];
AudioManager._replayFadeTime=0.5;
AudioManager._path='audio/';
Object.defineProperty(AudioManager,'bgmVolume',
	{
	get:function()
		{
		return this._bgmVolume
	}
	,set:function(value)
		{
		this._bgmVolume=value;
		this.updateBgmParameters(this._currentBgm)
	}
	,configurable:true
}
);
Object.defineProperty(AudioManager,'bgsVolume',
	{
	get:function()
		{
		return this._bgsVolume
	}
	,set:function(value)
		{
		this._bgsVolume=value;
		this.updateBgsParameters(this._currentBgs)
	}
	,configurable:true
}
);
Object.defineProperty(AudioManager,'meVolume',
	{
	get:function()
		{
		return this._meVolume
	}
	,set:function(value)
		{
		this._meVolume=value;
		this.updateMeParameters(this._currentMe)
	}
	,configurable:true
}
);
Object.defineProperty(AudioManager,'seVolume',
	{
	get:function()
		{
		return this._seVolume
	}
	,set:function(value)
		{
		this._seVolume=value
	}
	,configurable:true
}
);
AudioManager.playBgm=function(bgm,pos)
	{
	if(this.isCurrentBgm(bgm))
		{
		this.updateBgmParameters(bgm)
	}
	else
		{
		this.stopBgm();
		if(bgm.name)
			{
			this._bgmBuffer=this.createBuffer('bgm',bgm.name);
			this.updateBgmParameters(bgm);
			if(!this._meBuffer)
				{
				this._bgmBuffer.play(true,pos||0)
			}
		}
	}
	this.updateCurrentBgm(bgm,pos)
};
AudioManager.replayBgm=function(bgm)
	{
	if(this.isCurrentBgm(bgm))
		{
		this.updateBgmParameters(bgm)
	}
	else
		{
		this.playBgm(bgm,bgm.pos);
		if(this._bgmBuffer)
			{
			this._bgmBuffer.fadeIn(this._replayFadeTime)
		}
	}
};
AudioManager.isCurrentBgm=function(bgm)
	{
	return(this._currentBgm&&this._bgmBuffer&&this._currentBgm.name===bgm.name)
};
AudioManager.updateBgmParameters=function(bgm)
	{
	this.updateBufferParameters(this._bgmBuffer,this._bgmVolume,bgm)
};
AudioManager.updateCurrentBgm=function(bgm,pos)
	{
	this._currentBgm=
		{
		name:bgm.name,volume:bgm.volume,pitch:bgm.pitch,pan:bgm.pan,pos:pos
	}
};
AudioManager.stopBgm=function()
	{
	if(this._bgmBuffer)
		{
		this._bgmBuffer.stop();
		this._bgmBuffer=null;
		this._currentBgm=null
	}
};
AudioManager.fadeOutBgm=function(duration)
	{
	if(this._bgmBuffer&&this._currentBgm)
		{
		this._bgmBuffer.fadeOut(duration);
		this._currentBgm=null
	}
};
AudioManager.fadeInBgm=function(duration)
	{
	if(this._bgmBuffer&&this._currentBgm)
		{
		this._bgmBuffer.fadeIn(duration)
	}
};
AudioManager.playBgs=function(bgs,pos)
	{
	if(this.isCurrentBgs(bgs))
		{
		this.updateBgsParameters(bgs)
	}
	else
		{
		this.stopBgs();
		if(bgs.name)
			{
			this._bgsBuffer=this.createBuffer('bgs',bgs.name);
			this.updateBgsParameters(bgs);
			this._bgsBuffer.play(true,pos||0)
		}
	}
	this.updateCurrentBgs(bgs,pos)
};
AudioManager.replayBgs=function(bgs)
	{
	if(this.isCurrentBgs(bgs))
		{
		this.updateBgsParameters(bgs)
	}
	else
		{
		this.playBgs(bgs,bgs.pos);
		if(this._bgsBuffer)
			{
			this._bgsBuffer.fadeIn(this._replayFadeTime)
		}
	}
};
AudioManager.isCurrentBgs=function(bgs)
	{
	return(this._currentBgs&&this._bgsBuffer&&this._currentBgs.name===bgs.name)
};
AudioManager.updateBgsParameters=function(bgs)
	{
	this.updateBufferParameters(this._bgsBuffer,this._bgsVolume,bgs)
};
AudioManager.updateCurrentBgs=function(bgs,pos)
	{
	this._currentBgs=
		{
		name:bgs.name,volume:bgs.volume,pitch:bgs.pitch,pan:bgs.pan,pos:pos
	}
};
AudioManager.stopBgs=function()
	{
	if(this._bgsBuffer)
		{
		this._bgsBuffer.stop();
		this._bgsBuffer=null;
		this._currentBgs=null
	}
};
AudioManager.fadeOutBgs=function(duration)
	{
	if(this._bgsBuffer&&this._currentBgs)
		{
		this._bgsBuffer.fadeOut(duration);
		this._currentBgs=null
	}
};
AudioManager.fadeInBgs=function(duration)
	{
	if(this._bgsBuffer&&this._currentBgs)
		{
		this._bgsBuffer.fadeIn(duration)
	}
};
AudioManager.playMe=function(me)
	{
	this.stopMe();
	if(me.name)
		{
		if(this._bgmBuffer&&this._currentBgm)
			{
			this._currentBgm.pos=this._bgmBuffer.seek();
			this._bgmBuffer.stop()
		}
		this._meBuffer=this.createBuffer('me',me.name);
		this.updateMeParameters(me);
		this._meBuffer.play(false);
		this._meBuffer.addStopListener(this.stopMe.bind(this))
	}
};
AudioManager.updateMeParameters=function(me)
	{
	this.updateBufferParameters(this._meBuffer,this._meVolume,me)
};
AudioManager.fadeOutMe=function(duration)
	{
	if(this._meBuffer)
		{
		this._meBuffer.fadeOut(duration)
	}
};
AudioManager.stopMe=function()
	{
	if(this._meBuffer)
		{
		this._meBuffer.stop();
		this._meBuffer=null;
		if(this._bgmBuffer&&this._currentBgm&&!this._bgmBuffer.isPlaying())
			{
			this._bgmBuffer.play(true,this._currentBgm.pos);
			this._bgmBuffer.fadeIn(this._replayFadeTime)
		}
	}
};
AudioManager.playSe=function(se)
	{
	if(se.name)
		{
		this._seBuffers=this._seBuffers.filter(function(audio)
			{
			return audio.isPlaying()
		}
		);
		var buffer=this.createBuffer('se',se.name);
		this.updateSeParameters(buffer,se);
		buffer.play(false);
		this._seBuffers.push(buffer)
	}
};
AudioManager.updateSeParameters=function(buffer,se)
	{
	this.updateBufferParameters(buffer,this._seVolume,se)
};
AudioManager.stopSe=function()
	{
	this._seBuffers.forEach(function(buffer)
		{
		buffer.stop()
	}
	);
	this._seBuffers=[]
};
AudioManager.playStaticSe=function(se)
	{
	if(se.name)
		{
		this.loadStaticSe(se);
		for(var i=0;
		i<this._staticBuffers.length;
		i++)
			{
			var buffer=this._staticBuffers[i];
			if(buffer._reservedSeName===se.name)
				{
				buffer.stop();
				this.updateSeParameters(buffer,se);
				buffer.play(false);
				break
			}
		}
	}
};
AudioManager.loadStaticSe=function(se)
	{
	if(se.name&&!this.isStaticSe(se))
		{
		var buffer=this.createBuffer('se',se.name);
		buffer._reservedSeName=se.name;
		this._staticBuffers.push(buffer);
		if(this.shouldUseHtml5Audio())
			{
			Html5Audio.setStaticSe(buffer._url)
		}
	}
};
AudioManager.isStaticSe=function(se)
	{
	for(var i=0;
	i<this._staticBuffers.length;
	i++)
		{
		var buffer=this._staticBuffers[i];
		if(buffer._reservedSeName===se.name)
			{
			return true
		}
	}
	return false
};
AudioManager.stopAll=function()
	{
	this.stopMe();
	this.stopBgm();
	this.stopBgs();
	this.stopSe()
};
AudioManager.saveBgm=function()
	{
	if(this._currentBgm)
		{
		var bgm=this._currentBgm;
		return
			{
			name:bgm.name,volume:bgm.volume,pitch:bgm.pitch,pan:bgm.pan,pos:this._bgmBuffer?this._bgmBuffer.seek():0
		}
	}
	else
		{
		return this.makeEmptyAudioObject()
	}
};
AudioManager.saveBgs=function()
	{
	if(this._currentBgs)
		{
		var bgs=this._currentBgs;
		return
			{
			name:bgs.name,volume:bgs.volume,pitch:bgs.pitch,pan:bgs.pan,pos:this._bgsBuffer?this._bgsBuffer.seek():0
		}
	}
	else
		{
		return this.makeEmptyAudioObject()
	}
};
AudioManager.makeEmptyAudioObject=function()
	{
	return
		{
		name:'',volume:0,pitch:0
	}
};
AudioManager.createBuffer=function(folder,name)
	{
	var ext=this.audioFileExt();
	var url=this._path+folder+'/'+encodeURIComponent(name)+ext;
	if(this.shouldUseHtml5Audio()&&folder==='bgm')
		{
		Html5Audio.setup(url);
		return Html5Audio
	}
	else
		{
		return new WebAudio(url)
	}
};
AudioManager.updateBufferParameters=function(buffer,configVolume,audio)
	{
	if(buffer&&audio)
		{
		buffer.volume=configVolume*(audio.volume||0)/10000;
		buffer.pitch=(audio.pitch||0)/100;
		buffer.pan=(audio.pan||0)/100
	}
};
AudioManager.audioFileExt=function()
	{
	if(WebAudio.canPlayOgg()&&!Utils.isMobileDevice())
		{
		return'.ogg'
	}
	else
		{
		return'.m4a'
	}
};
AudioManager.shouldUseHtml5Audio=function()
	{
	return Utils.isAndroidChrome()
};
AudioManager.checkErrors=function()
	{
	this.checkWebAudioError(this._bgmBuffer);
	this.checkWebAudioError(this._bgsBuffer);
	this.checkWebAudioError(this._meBuffer);
	this._seBuffers.forEach(function(buffer)
		{
		this.checkWebAudioError(buffer)
	}
	.bind(this));
	this._staticBuffers.forEach(function(buffer)
		{
		this.checkWebAudioError(buffer)
	}
	.bind(this))
};
AudioManager.checkWebAudioError=function(webAudio)
	{
	if(webAudio&&webAudio.isError())
		{
		throw new Error('Failed to load: '+webAudio.url)
	}
};
function SoundManager()
	{
	throw new Error('This is a static class')
}
SoundManager.preloadImportantSounds=function()
	{
	this.loadSystemSound(0);
	this.loadSystemSound(1);
	this.loadSystemSound(2);
	this.loadSystemSound(3)
};
SoundManager.loadSystemSound=function(n)
	{
	if($dataSystem)
		{
		AudioManager.loadStaticSe($dataSystem.sounds[n])
	}
};
SoundManager.playSystemSound=function(n)
	{
	if($dataSystem)
		{
		AudioManager.playStaticSe($dataSystem.sounds[n])
	}
};
SoundManager.playCursor=function()
	{
	this.playSystemSound(0)
};
SoundManager.playOk=function()
	{
	this.playSystemSound(1)
};
SoundManager.playCancel=function()
	{
	this.playSystemSound(2)
};
SoundManager.playBuzzer=function()
	{
	this.playSystemSound(3)
};
SoundManager.playEquip=function()
	{
	this.playSystemSound(4)
};
SoundManager.playSave=function()
	{
	this.playSystemSound(5)
};
SoundManager.playLoad=function()
	{
	this.playSystemSound(6)
};
SoundManager.playBattleStart=function()
	{
	this.playSystemSound(7)
};
SoundManager.playEscape=function()
	{
	this.playSystemSound(8)
};
SoundManager.playEnemyAttack=function()
	{
	this.playSystemSound(9)
};
SoundManager.playEnemyDamage=function()
	{
	this.playSystemSound(10)
};
SoundManager.playEnemyCollapse=function()
	{
	this.playSystemSound(11)
};
SoundManager.playBossCollapse1=function()
	{
	this.playSystemSound(12)
};
SoundManager.playBossCollapse2=function()
	{
	this.playSystemSound(13)
};
SoundManager.playActorDamage=function()
	{
	this.playSystemSound(14)
};
SoundManager.playActorCollapse=function()
	{
	this.playSystemSound(15)
};
SoundManager.playRecovery=function()
	{
	this.playSystemSound(16)
};
SoundManager.playMiss=function()
	{
	this.playSystemSound(17)
};
SoundManager.playEvasion=function()
	{
	this.playSystemSound(18)
};
SoundManager.playMagicEvasion=function()
	{
	this.playSystemSound(19)
};
SoundManager.playReflection=function()
	{
	this.playSystemSound(20)
};
SoundManager.playShop=function()
	{
	this.playSystemSound(21)
};
SoundManager.playUseItem=function()
	{
	this.playSystemSound(22)
};
SoundManager.playUseSkill=function()
	{
	this.playSystemSound(23)
};
function TextManager()
	{
	throw new Error('This is a static class')
}
TextManager.basic=function(basicId)
	{
	return $dataSystem.terms.basic[basicId]||''
};
TextManager.param=function(paramId)
	{
	return $dataSystem.terms.params[paramId]||''
};
TextManager.command=function(commandId)
	{
	return $dataSystem.terms.commands[commandId]||''
};
TextManager.message=function(messageId)
	{
	return $dataSystem.terms.messages[messageId]||''
};
TextManager.getter=function(method,param)
	{
	return
		{
		get:function()
			{
			return this[method](param)
		}
		,configurable:true
	}
};
Object.defineProperty(TextManager,'currencyUnit',
	{
	get:function()
		{
		return $dataSystem.currencyUnit
	}
	,configurable:true
}
);
Object.defineProperties(TextManager,
	{
	level:TextManager.getter('basic',0),levelA:TextManager.getter('basic',1),hp:TextManager.getter('basic',2),hpA:TextManager.getter('basic',3),mp:TextManager.getter('basic',4),mpA:TextManager.getter('basic',5),tp:TextManager.getter('basic',6),tpA:TextManager.getter('basic',7),exp:TextManager.getter('basic',8),expA:TextManager.getter('basic',9),fight:TextManager.getter('command',0),escape:TextManager.getter('command',1),attack:TextManager.getter('command',2),guard:TextManager.getter('command',3),item:TextManager.getter('command',4),skill:TextManager.getter('command',5),equip:TextManager.getter('command',6),status:TextManager.getter('command',7),formation:TextManager.getter('command',8),save:TextManager.getter('command',9),gameEnd:TextManager.getter('command',10),options:TextManager.getter('command',11),weapon:TextManager.getter('command',12),armor:TextManager.getter('command',13),keyItem:TextManager.getter('command',14),equip2:TextManager.getter('command',15),optimize:TextManager.getter('command',16),clear:TextManager.getter('command',17),newGame:TextManager.getter('command',18),continue_:TextManager.getter('command',19),toTitle:TextManager.getter('command',21),cancel:TextManager.getter('command',22),buy:TextManager.getter('command',24),sell:TextManager.getter('command',25),alwaysDash:TextManager.getter('message','alwaysDash'),commandRemember:TextManager.getter('message','commandRemember'),bgmVolume:TextManager.getter('message','bgmVolume'),bgsVolume:TextManager.getter('message','bgsVolume'),meVolume:TextManager.getter('message','meVolume'),seVolume:TextManager.getter('message','seVolume'),possession:TextManager.getter('message','possession'),expTotal:TextManager.getter('message','expTotal'),expNext:TextManager.getter('message','expNext'),saveMessage:TextManager.getter('message','saveMessage'),loadMessage:TextManager.getter('message','loadMessage'),file:TextManager.getter('message','file'),partyName:TextManager.getter('message','partyName'),emerge:TextManager.getter('message','emerge'),preemptive:TextManager.getter('message','preemptive'),surprise:TextManager.getter('message','surprise'),escapeStart:TextManager.getter('message','escapeStart'),escapeFailure:TextManager.getter('message','escapeFailure'),victory:TextManager.getter('message','victory'),defeat:TextManager.getter('message','defeat'),obtainExp:TextManager.getter('message','obtainExp'),obtainGold:TextManager.getter('message','obtainGold'),obtainItem:TextManager.getter('message','obtainItem'),levelUp:TextManager.getter('message','levelUp'),obtainSkill:TextManager.getter('message','obtainSkill'),useItem:TextManager.getter('message','useItem'),criticalToEnemy:TextManager.getter('message','criticalToEnemy'),criticalToActor:TextManager.getter('message','criticalToActor'),actorDamage:TextManager.getter('message','actorDamage'),actorRecovery:TextManager.getter('message','actorRecovery'),actorGain:TextManager.getter('message','actorGain'),actorLoss:TextManager.getter('message','actorLoss'),actorDrain:TextManager.getter('message','actorDrain'),actorNoDamage:TextManager.getter('message','actorNoDamage'),actorNoHit:TextManager.getter('message','actorNoHit'),enemyDamage:TextManager.getter('message','enemyDamage'),enemyRecovery:TextManager.getter('message','enemyRecovery'),enemyGain:TextManager.getter('message','enemyGain'),enemyLoss:TextManager.getter('message','enemyLoss'),enemyDrain:TextManager.getter('message','enemyDrain'),enemyNoDamage:TextManager.getter('message','enemyNoDamage'),enemyNoHit:TextManager.getter('message','enemyNoHit'),evasion:TextManager.getter('message','evasion'),magicEvasion:TextManager.getter('message','magicEvasion'),magicReflection:TextManager.getter('message','magicReflection'),counterAttack:TextManager.getter('message','counterAttack'),substitute:TextManager.getter('message','substitute'),buffAdd:TextManager.getter('message','buffAdd'),debuffAdd:TextManager.getter('message','debuffAdd'),buffRemove:TextManager.getter('message','buffRemove'),actionFailure:TextManager.getter('message','actionFailure'),
}
);
function SceneManager()
	{
	throw new Error('This is a static class')
}
SceneManager._scene=null;
SceneManager._nextScene=null;
SceneManager._stack=[];
SceneManager._stopped=false;
SceneManager._sceneStarted=false;
SceneManager._exiting=false;
SceneManager._previousClass=null;
SceneManager._backgroundBitmap=null;
SceneManager._screenWidth=816;
SceneManager._screenHeight=624;
SceneManager._boxWidth=816;
SceneManager._boxHeight=624;
SceneManager.run=function(sceneClass)
	{
	try
		{
		this.initialize();
		this.goto(sceneClass);
		this.requestUpdate()
	}
	catch(e)
		{
		this.catchException(e)
	}
};
SceneManager.initialize=function()
	{
	this.initGraphics();
	this.checkFileAccess();
	this.initAudio();
	this.initInput();
	this.initNwjs();
	this.checkPluginErrors();
	this.setupErrorHandlers()
};
SceneManager.initGraphics=function()
	{
	var type=this.preferableRendererType();
	Graphics.initialize(this._screenWidth,this._screenHeight,type);
	Graphics.boxWidth=this._boxWidth;
	Graphics.boxHeight=this._boxHeight;
	Graphics.setLoadingImage('img/system/Loading.png');
	if(Utils.isOptionValid('showfps'))
		{
		Graphics.showFps()
	}
	if(type==='webgl')
		{
		this.checkWebGL()
	}
};
SceneManager.preferableRendererType=function()
	{
	if(Utils.isOptionValid('canvas'))
		{
		return'canvas'
	}
	else if(Utils.isOptionValid('webgl'))
		{
		return'webgl'
	}
	else if(this.shouldUseCanvasRenderer())
		{
		return'canvas'
	}
	else
		{
		return'auto'
	}
};
SceneManager.shouldUseCanvasRenderer=function()
	{
	return Utils.isMobileDevice()
};
SceneManager.checkWebGL=function()
	{
	if(!Graphics.hasWebGL())
		{
		throw new Error('Your browser does not support WebGL.')
	}
};
SceneManager.checkFileAccess=function()
	{
	if(!Utils.canReadGameFiles())
		{
		throw new Error('Your browser does not allow to read local files.')
	}
};
SceneManager.initAudio=function()
	{
	var noAudio=Utils.isOptionValid('noaudio');
	if(!WebAudio.initialize(noAudio)&&!noAudio)
		{
		throw new Error('Your browser does not support Web Audio API.')
	}
};
SceneManager.initInput=function()
	{
	Input.initialize();
	TouchInput.initialize()
};
SceneManager.initNwjs=function()
	{
	if(Utils.isNwjs())
		{
		var gui=require('nw.gui');
		var win=gui.Window.get();
		if(process.platform==='darwin'&&!win.menu)
			{
			var menubar=new gui.Menu(
				{
				type:'menubar'
			}
			);
			var option=
				{
				hideEdit:true,hideWindow:true
			};
			menubar.createMacBuiltin('Game',option);
			win.menu=menubar
		}
	}
};
SceneManager.checkPluginErrors=function()
	{
	PluginManager.checkErrors()
};
SceneManager.setupErrorHandlers=function()
	{
	window.addEventListener('error',this.onError.bind(this));
	document.addEventListener('keydown',this.onKeyDown.bind(this))
};
SceneManager.requestUpdate=function()
	{
	if(!this._stopped)
		{
		requestAnimationFrame(this.update.bind(this))
	}
};
SceneManager.update=function()
	{
	try
		{
		this.tickStart();
		this.updateInputData();
		this.updateMain();
		this.tickEnd()
	}
	catch(e)
		{
		this.catchException(e)
	}
};
SceneManager.terminate=function()
	{
	window.close()
};
SceneManager.onError=function(e)
	{
	console.error(e.message);
	console.error(e.filename,e.lineno);
	try
		{
		this.stop();
		Graphics.printError('Error',e.message);
		AudioManager.stopAll()
	}
	catch(e2)
		{
	}
};
SceneManager.onKeyDown=function(event)
	{
	if(!event.ctrlKey&&!event.altKey)
		{
		switch(event.keyCode)
			{
			case 116:if(Utils.isNwjs())
				{
				location.reload()
			}
			break;
			case 119:if(Utils.isNwjs()&&Utils.isOptionValid('test'))
				{
				require('nw.gui').Window.get().showDevTools()
			}
			break
		}
	}
};
SceneManager.catchException=function(e)
	{
	if(e instanceof Error)
		{
		Graphics.printError(e.name,e.message);
		console.error(e.stack)
	}
	else
		{
		Graphics.printError('UnknownError',e)
	}
	AudioManager.stopAll();
	this.stop()
};
SceneManager.tickStart=function()
	{
	Graphics.tickStart()
};
SceneManager.tickEnd=function()
	{
	Graphics.tickEnd()
};
SceneManager.updateInputData=function()
	{
	Input.update();
	TouchInput.update()
};
SceneManager.updateMain=function()
	{
	this.changeScene();
	this.updateScene();
	this.renderScene();
	this.requestUpdate()
};
SceneManager.changeScene=function()
	{
	if(this.isSceneChanging()&&!this.isCurrentSceneBusy())
		{
		if(this._scene)
			{
			this._scene.terminate();
			this._previousClass=this._scene.constructor
		}
		this._scene=this._nextScene;
		if(this._scene)
			{
			this._scene.create();
			this._nextScene=null;
			this._sceneStarted=false;
			this.onSceneCreate()
		}
		if(this._exiting)
			{
			this.terminate()
		}
	}
};
SceneManager.updateScene=function()
	{
	if(this._scene)
		{
		if(!this._sceneStarted&&this._scene.isReady())
			{
			this._scene.start();
			this._sceneStarted=true;
			this.onSceneStart()
		}
		if(this.isCurrentSceneStarted())
			{
			this._scene.update()
		}
	}
};
SceneManager.renderScene=function()
	{
	if(this.isCurrentSceneStarted())
		{
		Graphics.render(this._scene)
	}
	else if(this._scene)
		{
		this.onSceneLoading()
	}
};
SceneManager.onSceneCreate=function()
	{
	Graphics.startLoading()
};
SceneManager.onSceneStart=function()
	{
	Graphics.endLoading()
};
SceneManager.onSceneLoading=function()
	{
	Graphics.updateLoading()
};
SceneManager.isSceneChanging=function()
	{
	return this._exiting||!!this._nextScene
};
SceneManager.isCurrentSceneBusy=function()
	{
	return this._scene&&this._scene.isBusy()
};
SceneManager.isCurrentSceneStarted=function()
	{
	return this._scene&&this._sceneStarted
};
SceneManager.isNextScene=function(sceneClass)
	{
	return this._nextScene&&this._nextScene.constructor===sceneClass
};
SceneManager.isPreviousScene=function(sceneClass)
	{
	return this._previousClass===sceneClass
};
SceneManager.goto=function(sceneClass)
	{
	if(sceneClass)
		{
		this._nextScene=new sceneClass()
	}
	if(this._scene)
		{
		this._scene.stop()
	}
};
SceneManager.push=function(sceneClass)
	{
	this._stack.push(this._scene.constructor);
	this.goto(sceneClass)
};
SceneManager.pop=function()
	{
	if(this._stack.length>0)
		{
		this.goto(this._stack.pop())
	}
	else
		{
		this.exit()
	}
};
SceneManager.exit=function()
	{
	this.goto(null);
	this._exiting=true
};
SceneManager.clearStack=function()
	{
	this._stack=[]
};
SceneManager.stop=function()
	{
	this._stopped=true
};
SceneManager.prepareNextScene=function()
	{
	this._nextScene.prepare.apply(this._nextScene,arguments)
};
SceneManager.snap=function()
	{
	return Bitmap.snap(this._scene)
};
SceneManager.snapForBackground=function()
	{
	this._backgroundBitmap=this.snap();
	this._backgroundBitmap.blur()
};
SceneManager.backgroundBitmap=function()
	{
	return this._backgroundBitmap
};
function BattleManager()
	{
	throw new Error('This is a static class')
}
BattleManager.setup=function(troopId,canEscape,canLose)
	{
	this.initMembers();
	this._canEscape=canEscape;
	this._canLose=canLose;
	$gameTroop.setup(troopId);
	$gameScreen.onBattleStart();
	this.makeEscapeRatio()
};
BattleManager.initMembers=function()
	{
	this._phase='init';
	this._canEscape=false;
	this._canLose=false;
	this._battleTest=false;
	this._eventCallback=null;
	this._preemptive=false;
	this._surprise=false;
	this._actorIndex=-1;
	this._actionForcedBattler=null;
	this._mapBgm=null;
	this._mapBgs=null;
	this._actionBattlers=[];
	this._subject=null;
	this._action=null;
	this._targets=[];
	this._logWindow=null;
	this._statusWindow=null;
	this._spriteset=null;
	this._escapeRatio=0;
	this._escaped=false;
	this._rewards=
		{
	}
};
BattleManager.isBattleTest=function()
	{
	return this._battleTest
};
BattleManager.setBattleTest=function(battleTest)
	{
	this._battleTest=battleTest
};
BattleManager.setEventCallback=function(callback)
	{
	this._eventCallback=callback
};
BattleManager.setLogWindow=function(logWindow)
	{
	this._logWindow=logWindow
};
BattleManager.setStatusWindow=function(statusWindow)
	{
	this._statusWindow=statusWindow
};
BattleManager.setSpriteset=function(spriteset)
	{
	this._spriteset=spriteset
};
BattleManager.onEncounter=function()
	{
	this._preemptive=(Math.random()<this.ratePreemptive());
	this._surprise=(Math.random()<this.rateSurprise()&&!this._preemptive)
};
BattleManager.ratePreemptive=function()
	{
	return $gameParty.ratePreemptive($gameTroop.agility())
};
BattleManager.rateSurprise=function()
	{
	return $gameParty.rateSurprise($gameTroop.agility())
};
BattleManager.saveBgmAndBgs=function()
	{
	this._mapBgm=AudioManager.saveBgm();
	this._mapBgs=AudioManager.saveBgs()
};
BattleManager.playBattleBgm=function()
	{
	AudioManager.playBgm($gameSystem.battleBgm());
	AudioManager.stopBgs()
};
BattleManager.playVictoryMe=function()
	{
	AudioManager.playMe($gameSystem.victoryMe())
};
BattleManager.playDefeatMe=function()
	{
	AudioManager.playMe($gameSystem.defeatMe())
};
BattleManager.replayBgmAndBgs=function()
	{
	if(this._mapBgm)
		{
		AudioManager.replayBgm(this._mapBgm)
	}
	else
		{
		AudioManager.stopBgm()
	}
	if(this._mapBgs)
		{
		AudioManager.replayBgs(this._mapBgs)
	}
};
BattleManager.makeEscapeRatio=function()
	{
	this._escapeRatio=0.5*$gameParty.agility()/$gameTroop.agility()
};
BattleManager.update=function()
	{
	if(!this.isBusy()&&!this.updateEvent())
		{
		switch(this._phase)
			{
			case'start':this.startInput();
			break;
			case'turn':this.updateTurn();
			break;
			case'action':this.updateAction();
			break;
			case'turnEnd':this.updateTurnEnd();
			break;
			case'battleEnd':this.updateBattleEnd();
			break
		}
	}
};
BattleManager.updateEvent=function()
	{
	switch(this._phase)
		{
		case'start':case'turn':case'turnEnd':if(this.isActionForced())
			{
			this.processForcedAction();
			return true
		}
		else
			{
			return this.updateEventMain()
		}
	}
	return this.checkAbort()
};
BattleManager.updateEventMain=function()
	{
	$gameTroop.updateInterpreter();
	$gameParty.requestMotionRefresh();
	if($gameTroop.isEventRunning()||this.checkBattleEnd())
		{
		return true
	}
	$gameTroop.setupBattleEvent();
	if($gameTroop.isEventRunning()||SceneManager.isSceneChanging())
		{
		return true
	}
	return false
};
BattleManager.isBusy=function()
	{
	return($gameMessage.isBusy()||this._spriteset.isBusy()||this._logWindow.isBusy())
};
BattleManager.isInputting=function()
	{
	return this._phase==='input'
};
BattleManager.isInTurn=function()
	{
	return this._phase==='turn'
};
BattleManager.isTurnEnd=function()
	{
	return this._phase==='turnEnd'
};
BattleManager.isAborting=function()
	{
	return this._phase==='aborting'
};
BattleManager.isBattleEnd=function()
	{
	return this._phase==='battleEnd'
};
BattleManager.canEscape=function()
	{
	return this._canEscape
};
BattleManager.canLose=function()
	{
	return this._canLose
};
BattleManager.isEscaped=function()
	{
	return this._escaped
};
BattleManager.actor=function()
	{
	return this._actorIndex>=0?$gameParty.members()[this._actorIndex]:null
};
BattleManager.clearActor=function()
	{
	this.changeActor(-1,'')
};
BattleManager.changeActor=function(newActorIndex,lastActorActionState)
	{
	var lastActor=this.actor();
	this._actorIndex=newActorIndex;
	var newActor=this.actor();
	if(lastActor)
		{
		lastActor.setActionState(lastActorActionState)
	}
	if(newActor)
		{
		newActor.setActionState('inputting')
	}
};
BattleManager.startBattle=function()
	{
	this._phase='start';
	$gameSystem.onBattleStart();
	$gameParty.onBattleStart();
	$gameTroop.onBattleStart();
	this.displayStartMessages()
};
BattleManager.displayStartMessages=function()
	{
	$gameTroop.enemyNames().forEach(function(name)
		{
		$gameMessage.add(TextManager.emerge.format(name))
	}
	);
	if(this._preemptive)
		{
		$gameMessage.add(TextManager.preemptive.format($gameParty.name()))
	}
	else if(this._surprise)
		{
		$gameMessage.add(TextManager.surprise.format($gameParty.name()))
	}
};
BattleManager.startInput=function()
	{
	this._phase='input';
	$gameParty.makeActions();
	$gameTroop.makeActions();
	this.clearActor();
	if(this._surprise||!$gameParty.canInput())
		{
		this.startTurn()
	}
};
BattleManager.inputtingAction=function()
	{
	return this.actor()?this.actor().inputtingAction():null
};
BattleManager.selectNextCommand=function()
	{
	do
		{
		if(!this.actor()||!this.actor().selectNextCommand())
			{
			this.changeActor(this._actorIndex+1,'waiting');
			if(this._actorIndex>=$gameParty.size())
				{
				this.startTurn();
				break
			}
		}
	}
	while(!this.actor().canInput())
};
BattleManager.selectPreviousCommand=function()
	{
	do
		{
		if(!this.actor()||!this.actor().selectPreviousCommand())
			{
			this.changeActor(this._actorIndex-1,'undecided');
			if(this._actorIndex<0)
				{
				return
			}
		}
	}
	while(!this.actor().canInput())
};
BattleManager.refreshStatus=function()
	{
	this._statusWindow.refresh()
};
BattleManager.startTurn=function()
	{
	this._phase='turn';
	this.clearActor();
	$gameTroop.increaseTurn();
	this.makeActionOrders();
	$gameParty.requestMotionRefresh();
	this._logWindow.startTurn();
	this._subject=this.getNextSubject()
};
BattleManager.updateTurn=function()
	{
	$gameParty.requestMotionRefresh();
	if(this._subject)
		{
		this.processTurn()
	}
	else
		{
		this.endTurn()
	}
};
BattleManager.processTurn=function()
	{
	var subject=this._subject;
	var action=subject.currentAction();
	if(action)
		{
		action.prepare();
		if(action.isValid())
			{
			this.startAction()
		}
		subject.removeCurrentAction()
	}
	else
		{
		subject.onAllActionsEnd();
		this.refreshStatus();
		this._logWindow.displayAutoAffectedStatus(subject);
		this._logWindow.displayCurrentState(subject);
		this._logWindow.displayRegeneration(subject);
		this._subject=this.getNextSubject()
	}
};
BattleManager.endTurn=function()
	{
	this._phase='turnEnd';
	this._preemptive=false;
	this._surprise=false;
	this.allBattleMembers().forEach(function(battler)
		{
		battler.onTurnEnd();
		this.refreshStatus();
		this._logWindow.displayAutoAffectedStatus(battler);
		this._logWindow.displayRegeneration(battler)
	}
	,this)
};
BattleManager.updateTurnEnd=function()
	{
	this.startInput()
};
BattleManager.getNextSubject=function()
	{
	for(;;
	)
		{
		var battler=this._actionBattlers.shift();
		if(!battler)
			{
			return null
		}
		if(battler.isBattleMember()&&battler.isAlive())
			{
			return battler
		}
	}
};
BattleManager.allBattleMembers=function()
	{
	return $gameParty.members().concat($gameTroop.members())
};
BattleManager.makeActionOrders=function()
	{
	var battlers=[];
	if(!this._surprise)
		{
		battlers=battlers.concat($gameParty.members())
	}
	if(!this._preemptive)
		{
		battlers=battlers.concat($gameTroop.members())
	}
	battlers.forEach(function(battler)
		{
		battler.makeSpeed()
	}
	);
	battlers.sort(function(a,
		{
		return b.speed()-a.speed()
	}
	);
	this._actionBattlers=battlers
};
BattleManager.startAction=function()
	{
	var subject=this._subject;
	var action=subject.currentAction();
	var targets=action.makeTargets();
	this._phase='action';
	this._action=action;
	this._targets=targets;
	subject.useItem(action.item());
	this._action.applyGlobal();
	this.refreshStatus();
	this._logWindow.startAction(subject,action,targets)
};
BattleManager.updateAction=function()
	{
	var target=this._targets.shift();
	if(target)
		{
		this.invokeAction(this._subject,target)
	}
	else
		{
		this.endAction()
	}
};
BattleManager.endAction=function()
	{
	this._logWindow.endAction(this._subject);
	this._phase='turn'
};
BattleManager.invokeAction=function(subject,target)
	{
	this._logWindow.push('pushBaseLine');
	if(Math.random()<this._action.itemCnt(target))
		{
		this.invokeCounterAttack(subject,target)
	}
	else if(Math.random()<this._action.itemMrf(target))
		{
		this.invokeMagicReflection(subject,target)
	}
	else
		{
		this.invokeNormalAction(subject,target)
	}
	subject.setLastTarget(target);
	this._logWindow.push('popBaseLine');
	this.refreshStatus()
};
BattleManager.invokeNormalAction=function(subject,target)
	{
	var realTarget=this.applySubstitute(target);
	this._action.apply(realTarget);
	this._logWindow.displayActionResults(subject,realTarget)
};
BattleManager.invokeCounterAttack=function(subject,target)
	{
	var action=new Game_Action(target);
	action.setAttack();
	action.apply(subject);
	this._logWindow.displayCounter(target);
	this._logWindow.displayActionResults(subject,subject)
};
BattleManager.invokeMagicReflection=function(subject,target)
	{
	this._logWindow.displayReflection(target);
	this._action.apply(subject);
	this._logWindow.displayActionResults(subject,subject)
};
BattleManager.applySubstitute=function(target)
	{
	if(this.checkSubstitute(target))
		{
		var substitute=target.friendsUnit().substituteBattler();
		if(substitute&&target!==substitute)
			{
			this._logWindow.displaySubstitute(substitute,target);
			return substitute
		}
	}
	return target
};
BattleManager.checkSubstitute=function(target)
	{
	return target.isDying()&&!this._action.isCertainHit()
};
BattleManager.isActionForced=function()
	{
	return!!this._actionForcedBattler
};
BattleManager.forceAction=function(battler)
	{
	this._actionForcedBattler=battler;
	var index=this._actionBattlers.indexOf(battler);
	if(index>=0)
		{
		this._actionBattlers.splice(index,1)
	}
};
BattleManager.processForcedAction=function()
	{
	if(this._actionForcedBattler)
		{
		this._subject=this._actionForcedBattler;
		this._actionForcedBattler=null;
		this.startAction();
		this._subject.removeCurrentAction()
	}
};
BattleManager.abort=function()
	{
	this._phase='aborting'
};
BattleManager.checkBattleEnd=function()
	{
	if(this._phase)
		{
		if(this.checkAbort())
			{
			return true
		}
		else if($gameParty.isAllDead())
			{
			this.processDefeat();
			return true
		}
		else if($gameTroop.isAllDead())
			{
			this.processVictory();
			return true
		}
	}
	return false
};
BattleManager.checkAbort=function()
	{
	if($gameParty.isEmpty()||this.isAborting())
		{
		this.processAbort();
		return true
	}
	return false
};
BattleManager.processVictory=function()
	{
	$gameParty.removeBattleStates();
	$gameParty.performVictory();
	this.playVictoryMe();
	this.replayBgmAndBgs();
	this.makeRewards();
	this.displayVictoryMessage();
	this.displayRewards();
	this.gainRewards();
	this.endBattle(0)
};
BattleManager.processEscape=function()
	{
	$gameParty.removeBattleStates();
	$gameParty.performEscape();
	SoundManager.playEscape();
	var success=this._preemptive?true:(Math.random()<this._escapeRatio);
	if(success)
		{
		this.displayEscapeSuccessMessage();
		this._escaped=true;
		this.processAbort()
	}
	else
		{
		this.displayEscapeFailureMessage();
		this._escapeRatio+=0.1;
		$gameParty.clearActions();
		this.startTurn()
	}
	return success
};
BattleManager.processAbort=function()
	{
	this.replayBgmAndBgs();
	this.endBattle(1)
};
BattleManager.processDefeat=function()
	{
	this.displayDefeatMessage();
	this.playDefeatMe();
	if(this._canLose)
		{
		this.replayBgmAndBgs()
	}
	else
		{
		AudioManager.stopBgm()
	}
	this.endBattle(2)
};
BattleManager.endBattle=function(result)
	{
	this._phase='battleEnd';
	if(this._eventCallback)
		{
		this._eventCallback(result)
	}
	if(result===0)
		{
		$gameSystem.onBattleWin()
	}
	else if(this._escaped)
		{
		$gameSystem.onBattleEscape()
	}
};
BattleManager.updateBattleEnd=function()
	{
	if(this.isBattleTest())
		{
		AudioManager.stopBgm();
		SceneManager.exit()
	}
	else if($gameParty.isAllDead())
		{
		if(this._canLose)
			{
			$gameParty.reviveBattleMembers();
			SceneManager.pop()
		}
		else
			{
			SceneManager.goto(Scene_Gameover)
		}
	}
	else
		{
		SceneManager.pop()
	}
	this._phase=null
};
BattleManager.makeRewards=function()
	{
	this._rewards=
		{
	};
	this._rewards.gold=$gameTroop.goldTotal();
	this._rewards.exp=$gameTroop.expTotal();
	this._rewards.items=$gameTroop.makeDropItems()
};
BattleManager.displayVictoryMessage=function()
	{
	$gameMessage.add(TextManager.victory.format($gameParty.name()))
};
BattleManager.displayDefeatMessage=function()
	{
	$gameMessage.add(TextManager.defeat.format($gameParty.name()))
};
BattleManager.displayEscapeSuccessMessage=function()
	{
	$gameMessage.add(TextManager.escapeStart.format($gameParty.name()))
};
BattleManager.displayEscapeFailureMessage=function()
	{
	$gameMessage.add(TextManager.escapeStart.format($gameParty.name()));
	$gameMessage.add('\\.'+TextManager.escapeFailure)
};
BattleManager.displayRewards=function()
	{
	this.displayExp();
	this.displayGold();
	this.displayDropItems()
};
BattleManager.displayExp=function()
	{
	var exp=this._rewards.exp;
	if(exp>0)
		{
		var text=TextManager.obtainExp.format(exp,TextManager.exp);
		$gameMessage.add('\\.'+text)
	}
};
BattleManager.displayGold=function()
	{
	var gold=this._rewards.gold;
	if(gold>0)
		{
		$gameMessage.add('\\.'+TextManager.obtainGold.format(gold))
	}
};
BattleManager.displayDropItems=function()
	{
	var items=this._rewards.items;
	if(items.length>0)
		{
		$gameMessage.newPage();
		items.forEach(function(item)
			{
			$gameMessage.add(TextManager.obtainItem.format(item.name))
		}
		)
	}
};
BattleManager.gainRewards=function()
	{
	this.gainExp();
	this.gainGold();
	this.gainDropItems()
};
BattleManager.gainExp=function()
	{
	var exp=this._rewards.exp;
	$gameParty.allMembers().forEach(function(actor)
		{
		actor.gainExp(exp)
	}
	)
};
BattleManager.gainGold=function()
	{
	$gameParty.gainGold(this._rewards.gold)
};
BattleManager.gainDropItems=function()
	{
	var items=this._rewards.items;
	items.forEach(function(item)
		{
		$gameParty.gainItem(item,1)
	}
	)
};
function PluginManager()
	{
	throw new Error('This is a static class')
}
PluginManager._path='js/plugins/';
PluginManager._scripts=[];
PluginManager._errorUrls=[];
PluginManager._parameters=
	{
};
PluginManager.setup=function(plugins)
	{
	plugins.forEach(function(plugin)
		{
		if(plugin.status&&!this._scripts.contains(plugin.name))
			{
			this.setParameters(plugin.name,plugin.parameters);
			this.loadScript(plugin.name+'.js');
			this._scripts.push(plugin.name)
		}
	}
	,this)
};
PluginManager.checkErrors=function()
	{
	var url=this._errorUrls.shift();
	if(url)
		{
		throw new Error('Failed to load: '+url)
	}
};
PluginManager.parameters=function(name)
	{
	return this._parameters[name.toLowerCase()]||
		{
	}
};
PluginManager.setParameters=function(name,parameters)
	{
	this._parameters[name.toLowerCase()]=parameters
};
PluginManager.loadScript=function(name)
	{
	var url=this._path+name;
	var script=document.createElement('script');
	script.type='text/javascript';
	script.src=url;
	script.async=false;
	script.onerror=this.onError.bind(this);
	script._url=url;
	document.body.appendChild(script)
};
PluginManager.onError=function(e)
	{
	this._errorUrls.push(e.target._url)
};
 

 

 

 

rpg_windows.js

 

 

function Window_Base()
	{
	this.initialize.apply(this,arguments)
}
Window_Base.prototype=Object.create(Window.prototype);
Window_Base.prototype.constructor=Window_Base;
Window_Base.prototype.initialize=function(x,y,width,height)
	{
	Window.prototype.initialize.call(this);
	this.loadWindowskin();
	this.move(x,y,width,height);
	this.updatePadding();
	this.updateBackOpacity();
	this.updateTone();
	this.createContents();
	this._opening=false;
	this._closing=false;
	this._dimmerSprite=null
};
Window_Base._iconWidth=32;
Window_Base._iconHeight=32;
Window_Base._faceWidth=144;
Window_Base._faceHeight=144;
Window_Base.prototype.lineHeight=function()
	{
	return 36
};
Window_Base.prototype.standardFontFace=function()
	{
	if($gameSystem.isChinese())
		{
		return'SimHei, Heiti TC, sans-serif'
	}
	else if($gameSystem.isKorean())
		{
		return'Dotum, AppleGothic, sans-serif'
	}
	else
		{
		return'GameFont'
	}
};
Window_Base.prototype.standardFontSize=function()
	{
	return 28
};
Window_Base.prototype.standardPadding=function()
	{
	return 18
};
Window_Base.prototype.textPadding=function()
	{
	return 6
};
Window_Base.prototype.standardBackOpacity=function()
	{
	return 192
};
Window_Base.prototype.loadWindowskin=function()
	{
	this.windowskin=ImageManager.loadSystem('Window')
};
Window_Base.prototype.updatePadding=function()
	{
	this.padding=this.standardPadding()
};
Window_Base.prototype.updateBackOpacity=function()
	{
	this.backOpacity=this.standardBackOpacity()
};
Window_Base.prototype.contentsWidth=function()
	{
	return this.width-this.standardPadding()*2
};
Window_Base.prototype.contentsHeight=function()
	{
	return this.height-this.standardPadding()*2
};
Window_Base.prototype.fittingHeight=function(numLines)
	{
	return numLines*this.lineHeight()+this.standardPadding()*2
};
Window_Base.prototype.updateTone=function()
	{
	var tone=$gameSystem.windowTone();
	this.setTone(tone[0],tone[1],tone[2])
};
Window_Base.prototype.createContents=function()
	{
	this.contents=new Bitmap(this.contentsWidth(),this.contentsHeight());
	this.resetFontSettings()
};
Window_Base.prototype.resetFontSettings=function()
	{
	this.contents.fontFace=this.standardFontFace();
	this.contents.fontSize=this.standardFontSize();
	this.resetTextColor()
};
Window_Base.prototype.resetTextColor=function()
	{
	this.changeTextColor(this.normalColor())
};
Window_Base.prototype.update=function()
	{
	Window.prototype.update.call(this);
	this.updateTone();
	this.updateOpen();
	this.updateClose();
	this.updateBackgroundDimmer()
};
Window_Base.prototype.updateOpen=function()
	{
	if(this._opening)
		{
		this.openness+=32;
		if(this.isOpen())
			{
			this._opening=false
		}
	}
};
Window_Base.prototype.updateClose=function()
	{
	if(this._closing)
		{
		this.openness-=32;
		if(this.isClosed())
			{
			this._closing=false
		}
	}
};
Window_Base.prototype.open=function()
	{
	if(!this.isOpen())
		{
		this._opening=true
	}
	this._closing=false
};
Window_Base.prototype.close=function()
	{
	if(!this.isClosed())
		{
		this._closing=true
	}
	this._opening=false
};
Window_Base.prototype.isOpening=function()
	{
	return this._opening
};
Window_Base.prototype.isClosing=function()
	{
	return this._closing
};
Window_Base.prototype.show=function()
	{
	this.visible=true
};
Window_Base.prototype.hide=function()
	{
	this.visible=false
};
Window_Base.prototype.activate=function()
	{
	this.active=true
};
Window_Base.prototype.deactivate=function()
	{
	this.active=false
};
Window_Base.prototype.textColor=function(n)
	{
	var px=96+(n%8)*12+6;
	var py=144+Math.floor(n/8)*12+6;
	return this.windowskin.getPixel(px,py)
};
Window_Base.prototype.normalColor=function()
	{
	return this.textColor(0)
};
Window_Base.prototype.systemColor=function()
	{
	return this.textColor(16)
};
Window_Base.prototype.crisisColor=function()
	{
	return this.textColor(17)
};
Window_Base.prototype.deathColor=function()
	{
	return this.textColor(18)
};
Window_Base.prototype.gaugeBackColor=function()
	{
	return this.textColor(19)
};
Window_Base.prototype.hpGaugeColor1=function()
	{
	return this.textColor(20)
};
Window_Base.prototype.hpGaugeColor2=function()
	{
	return this.textColor(21)
};
Window_Base.prototype.mpGaugeColor1=function()
	{
	return this.textColor(22)
};
Window_Base.prototype.mpGaugeColor2=function()
	{
	return this.textColor(23)
};
Window_Base.prototype.mpCostColor=function()
	{
	return this.textColor(23)
};
Window_Base.prototype.powerUpColor=function()
	{
	return this.textColor(24)
};
Window_Base.prototype.powerDownColor=function()
	{
	return this.textColor(25)
};
Window_Base.prototype.tpGaugeColor1=function()
	{
	return this.textColor(28)
};
Window_Base.prototype.tpGaugeColor2=function()
	{
	return this.textColor(29)
};
Window_Base.prototype.tpCostColor=function()
	{
	return this.textColor(29)
};
Window_Base.prototype.pendingColor=function()
	{
	return this.windowskin.getPixel(120,120)
};
Window_Base.prototype.translucentOpacity=function()
	{
	return 160
};
Window_Base.prototype.changeTextColor=function(color)
	{
	this.contents.textColor=color
};
Window_Base.prototype.changePaintOpacity=function(enabled)
	{
	this.contents.paintOpacity=enabled?255:this.translucentOpacity()
};
Window_Base.prototype.drawText=function(text,x,y,maxWidth,align)
	{
	this.contents.drawText(text,x,y,maxWidth,this.lineHeight(),align)
};
Window_Base.prototype.textWidth=function(text)
	{
	return this.contents.measureTextWidth(text)
};
Window_Base.prototype.drawTextEx=function(text,x,y)
	{
	if(text)
		{
		var textState=
			{
			index:0,x:x,y:y,left:x
		};
		textState.text=this.convertEscapeCharacters(text);
		textState.height=this.calcTextHeight(textState,false);
		this.resetFontSettings();
		while(textState.index<textState.text.length)
			{
			this.processCharacter(textState)
		}
		return textState.x-x
	}
	else
		{
		return 0
	}
};
Window_Base.prototype.convertEscapeCharacters=function(text)
	{
	text=text.replace(/\\/g,'\x1b');
	text=text.replace(/\x1b\x1b/g,'\\');
	text=text.replace(/\x1bV\[(\d+)\]/gi,function()
		{
		return $gameVariables.value(parseInt(arguments[1]))
	}
	.bind(this));
	text=text.replace(/\x1bV\[(\d+)\]/gi,function()
		{
		return $gameVariables.value(parseInt(arguments[1]))
	}
	.bind(this));
	text=text.replace(/\x1bN\[(\d+)\]/gi,function()
		{
		return this.actorName(parseInt(arguments[1]))
	}
	.bind(this));
	text=text.replace(/\x1bP\[(\d+)\]/gi,function()
		{
		return this.partyMemberName(parseInt(arguments[1]))
	}
	.bind(this));
	text=text.replace(/\x1bG/gi,TextManager.currencyUnit);
	return text
};
Window_Base.prototype.actorName=function(n)
	{
	var actor=n>=1?$gameActors.actor(n):null;
	return actor?actor.name():''
};
Window_Base.prototype.partyMemberName=function(n)
	{
	var actor=n>=1?$gameParty.members()[n-1]:null;
	return actor?actor.name():''
};
Window_Base.prototype.processCharacter=function(textState)
	{
	switch(textState.text[textState.index])
		{
		case'\n':this.processNewLine(textState);
		break;
		case'\f':this.processNewPage(textState);
		break;
		case'\x1b':this.processEscapeCharacter(this.obtainEscapeCode(textState),textState);
		break;
		default:this.processNormalCharacter(textState);
		break
	}
};
Window_Base.prototype.processNormalCharacter=function(textState)
	{
	var c=textState.text[textState.index++];
	var w=this.textWidth(c);
	this.contents.drawText(c,textState.x,textState.y,w*2,textState.height);
	textState.x+=w
};
Window_Base.prototype.processNewLine=function(textState)
	{
	textState.x=textState.left;
	textState.y+=textState.height;
	textState.height=this.calcTextHeight(textState,false);
	textState.index++
};
Window_Base.prototype.processNewPage=function(textState)
	{
	textState.index++
};
Window_Base.prototype.obtainEscapeCode=function(textState)
	{
	textState.index++;
	var regExp=/^[\$\.\|\^!><\
		{
		\
	}
	\\]|^[A-Z]+/i;
	var arr=regExp.exec(textState.text.slice(textState.index));
	if(arr)
		{
		textState.index+=arr[0].length;
		return arr[0].toUpperCase()
	}
	else
		{
		return''
	}
};
Window_Base.prototype.obtainEscapeParam=function(textState)
	{
	var arr=/^\[\d+\]/.exec(textState.text.slice(textState.index));
	if(arr)
		{
		textState.index+=arr[0].length;
		return parseInt(arr[0].slice(1))
	}
	else
		{
		return''
	}
};
Window_Base.prototype.processEscapeCharacter=function(code,textState)
	{
	switch(code)
		{
		case'C':this.changeTextColor(this.textColor(this.obtainEscapeParam(textState)));
		break;
		case'I':this.processDrawIcon(this.obtainEscapeParam(textState),textState);
		break;
		case'
			{
			':this.makeFontBigger();
			break;
			case'
		}
		':this.makeFontSmaller();
		break
	}
};
Window_Base.prototype.processDrawIcon=function(iconIndex,textState)
	{
	this.drawIcon(iconIndex,textState.x+2,textState.y+2);
	textState.x+=Window_Base._iconWidth+4
};
Window_Base.prototype.makeFontBigger=function()
	{
	if(this.contents.fontSize<=96)
		{
		this.contents.fontSize+=12
	}
};
Window_Base.prototype.makeFontSmaller=function()
	{
	if(this.contents.fontSize>=24)
		{
		this.contents.fontSize-=12
	}
};
Window_Base.prototype.calcTextHeight=function(textState,all)
	{
	var lastFontSize=this.contents.fontSize;
	var textHeight=0;
	var lines=textState.text.slice(textState.index).split('\n');
	var maxLines=all?lines.length:1;
	for(var i=0;
	i<maxLines;
	i++)
		{
		var maxFontSize=this.contents.fontSize;
		var regExp=/\x1b[\
			{
			\
		}
		]/g;
		for(;;
		)
			{
			var array=regExp.exec(lines[i]);
			if(array)
				{
				if(array[0]==='\x1b
					{
					')
						{
						this.makeFontBigger()
					}
					if(array[0]==='\x1b
				}
				')
					{
					this.makeFontSmaller()
				}
				if(maxFontSize<this.contents.fontSize)
					{
					maxFontSize=this.contents.fontSize
				}
			}
			else
				{
				break
			}
		}
		textHeight+=maxFontSize+8
	}
	this.contents.fontSize=lastFontSize;
	return textHeight
};
Window_Base.prototype.drawIcon=function(iconIndex,x,y)
	{
	var bitmap=ImageManager.loadSystem('IconSet');
	var pw=Window_Base._iconWidth;
	var ph=Window_Base._iconHeight;
	var sx=iconIndex%16*pw;
	var sy=Math.floor(iconIndex/16)*ph;
	this.contents.blt(bitmap,sx,sy,pw,ph,x,y)
};
Window_Base.prototype.drawFace=function(faceName,faceIndex,x,y,width,height)
	{
	width=width||Window_Base._faceWidth;
	height=height||Window_Base._faceHeight;
	var bitmap=ImageManager.loadFace(faceName);
	var pw=Window_Base._faceWidth;
	var ph=Window_Base._faceHeight;
	var sw=Math.min(width,pw);
	var sh=Math.min(height,ph);
	var dx=Math.floor(x+Math.max(width-pw,0)/2);
	var dy=Math.floor(y+Math.max(height-ph,0)/2);
	var sx=faceIndex%4*pw+(pw-sw)/2;
	var sy=Math.floor(faceIndex/4)*ph+(ph-sh)/2;
	this.contents.blt(bitmap,sx,sy,sw,sh,dx,dy)
};
Window_Base.prototype.drawCharacter=function(characterName,characterIndex,x,y)
	{
	var bitmap=ImageManager.loadCharacter(characterName);
	var big=ImageManager.isBigCharacter(characterName);
	var pw=bitmap.width/(big?3:12);
	var ph=bitmap.height/(big?4:8);
	var n=characterIndex;
	var sx=(n%4*3+1)*pw;
	var sy=(Math.floor(n/4)*4)*ph;
	this.contents.blt(bitmap,sx,sy,pw,ph,x-pw/2,y-ph)
};
Window_Base.prototype.drawGauge=function(x,y,width,rate,color1,color2)
	{
	var fillW=Math.floor(width*rate);
	var gaugeY=y+this.lineHeight()-8;
	this.contents.fillRect(x,gaugeY,width,6,this.gaugeBackColor());
	this.contents.gradientFillRect(x,gaugeY,fillW,6,color1,color2)
};
Window_Base.prototype.hpColor=function(actor)
	{
	if(actor.isDead())
		{
		return this.deathColor()
	}
	else if(actor.isDying())
		{
		return this.crisisColor()
	}
	else
		{
		return this.normalColor()
	}
};
Window_Base.prototype.mpColor=function(actor)
	{
	return this.normalColor()
};
Window_Base.prototype.tpColor=function(actor)
	{
	return this.normalColor()
};
Window_Base.prototype.drawActorCharacter=function(actor,x,y)
	{
	this.drawCharacter(actor.characterName(),actor.characterIndex(),x,y)
};
Window_Base.prototype.drawActorFace=function(actor,x,y,width,height)
	{
	this.drawFace(actor.faceName(),actor.faceIndex(),x,y,width,height)
};
Window_Base.prototype.drawActorName=function(actor,x,y,width)
	{
	width=width||168;
	this.changeTextColor(this.hpColor(actor));
	this.drawText(actor.name(),x,y,width)
};
Window_Base.prototype.drawActorClass=function(actor,x,y,width)
	{
	width=width||168;
	this.resetTextColor();
	this.drawText(actor.currentClass().name,x,y,width)
};
Window_Base.prototype.drawActorNickname=function(actor,x,y,width)
	{
	width=width||270;
	this.resetTextColor();
	this.drawText(actor.nickname(),x,y,width)
};
Window_Base.prototype.drawActorLevel=function(actor,x,y)
	{
	this.changeTextColor(this.systemColor());
	this.drawText(TextManager.levelA,x,y,48);
	this.resetTextColor();
	this.drawText(actor.level,x+84,y,36,'right')
};
Window_Base.prototype.drawActorIcons=function(actor,x,y,width)
	{
	width=width||144;
	var icons=actor.allIcons().slice(0,Math.floor(width/Window_Base._iconWidth));
	for(var i=0;
	i<icons.length;
	i++)
		{
		this.drawIcon(icons[i],x+Window_Base._iconWidth*i,y+2)
	}
};
Window_Base.prototype.drawCurrentAndMax=function(current,max,x,y,width,color1,color2)
	{
	var labelWidth=this.textWidth('HP');
	var valueWidth=this.textWidth('0000');
	var slashWidth=this.textWidth('/');
	var x1=x+width-valueWidth;
	var x2=x1-slashWidth;
	var =x2-valueWidth;
	if(>=x+labelWidth)
		{
		this.changeTextColor(color1);
		this.drawText(current,,y,valueWidth,'right');
		this.changeTextColor(color2);
		this.drawText('/',x2,y,slashWidth,'right');
		this.drawText(max,x1,y,valueWidth,'right')
	}
	else
		{
		this.changeTextColor(color1);
		this.drawText(current,x1,y,valueWidth,'right')
	}
};
Window_Base.prototype.drawActorHp=function(actor,x,y,width)
	{
	width=width||186;
	var color1=this.hpGaugeColor1();
	var color2=this.hpGaugeColor2();
	this.drawGauge(x,y,width,actor.hpRate(),color1,color2);
	this.changeTextColor(this.systemColor());
	this.drawText(TextManager.hpA,x,y,44);
	this.drawCurrentAndMax(actor.hp,actor.mhp,x,y,width,this.hpColor(actor),this.normalColor())
};
Window_Base.prototype.drawActorMp=function(actor,x,y,width)
	{
	width=width||186;
	var color1=this.mpGaugeColor1();
	var color2=this.mpGaugeColor2();
	this.drawGauge(x,y,width,actor.mpRate(),color1,color2);
	this.changeTextColor(this.systemColor());
	this.drawText(TextManager.mpA,x,y,44);
	this.drawCurrentAndMax(actor.mp,actor.mmp,x,y,width,this.mpColor(actor),this.normalColor())
};
Window_Base.prototype.drawActorTp=function(actor,x,y,width)
	{
	width=width||96;
	var color1=this.tpGaugeColor1();
	var color2=this.tpGaugeColor2();
	this.drawGauge(x,y,width,actor.tpRate(),color1,color2);
	this.changeTextColor(this.systemColor());
	this.drawText(TextManager.tpA,x,y,44);
	this.changeTextColor(this.tpColor(actor));
	this.drawText(actor.tp,x+width-64,y,64,'right')
};
Window_Base.prototype.drawActorSimpleStatus=function(actor,x,y,width)
	{
	var lineHeight=this.lineHeight();
	var x2=x+180;
	var width2=Math.min(200,width-180-this.textPadding());
	this.drawActorName(actor,x,y);
	this.drawActorLevel(actor,x,y+lineHeight*1);
	this.drawActorIcons(actor,x,y+lineHeight*2);
	this.drawActorClass(actor,x2,y);
	this.drawActorHp(actor,x2,y+lineHeight*1,width2);
	this.drawActorMp(actor,x2,y+lineHeight*2,width2)
};
Window_Base.prototype.drawItemName=function(item,x,y,width)
	{
	width=width||312;
	if(item)
		{
		var iconBoxWidth=Window_Base._iconWidth+4;
		this.resetTextColor();
		this.drawIcon(item.iconIndex,x+2,y+2);
		this.drawText(item.name,x+iconBoxWidth,y,width-iconBoxWidth)
	}
};
Window_Base.prototype.drawCurrencyValue=function(value,unit,x,y,width)
	{
	var unitWidth=Math.min(80,this.textWidth(unit));
	this.resetTextColor();
	this.drawText(value,x,y,width-unitWidth-6,'right');
	this.changeTextColor(this.systemColor());
	this.drawText(unit,x+width-unitWidth,y,unitWidth,'right')
};
Window_Base.prototype.paramchangeTextColor=function(change)
	{
	if(change>0)
		{
		return this.powerUpColor()
	}
	else if(change<0)
		{
		return this.powerDownColor()
	}
	else
		{
		return this.normalColor()
	}
};
Window_Base.prototype.setBackgroundType=function(type)
	{
	if(type===0)
		{
		this.opacity=255
	}
	else
		{
		this.opacity=0
	}
	if(type===1)
		{
		this.showBackgroundDimmer()
	}
	else
		{
		this.hideBackgroundDimmer()
	}
};
Window_Base.prototype.showBackgroundDimmer=function()
	{
	if(!this._dimmerSprite)
		{
		this._dimmerSprite=new Sprite();
		this._dimmerSprite.bitmap=new Bitmap(0,0);
		this.addChildToBack(this._dimmerSprite)
	}
	var bitmap=this._dimmerSprite.bitmap;
	if(bitmap.width!==this.width||bitmap.height!==this.height)
		{
		this.refreshDimmerBitmap()
	}
	this._dimmerSprite.visible=true;
	this.updateBackgroundDimmer()
};
Window_Base.prototype.hideBackgroundDimmer=function()
	{
	if(this._dimmerSprite)
		{
		this._dimmerSprite.visible=false
	}
};
Window_Base.prototype.updateBackgroundDimmer=function()
	{
	if(this._dimmerSprite)
		{
		this._dimmerSprite.opacity=this.openness
	}
};
Window_Base.prototype.refreshDimmerBitmap=function()
	{
	if(this._dimmerSprite)
		{
		var bitmap=this._dimmerSprite.bitmap;
		var w=this.width;
		var h=this.height;
		var m=this.padding;
		var c1=this.dimColor1();
		var c2=this.dimColor2();
		bitmap.resize(w,h);
		bitmap.gradientFillRect(0,0,w,m,c2,c1,true);
		bitmap.fillRect(0,m,w,h-m*2,c1);
		bitmap.gradientFillRect(0,h-m,w,m,c1,c2,true);
		this._dimmerSprite.setFrame(0,0,w,h)
	}
};
Window_Base.prototype.dimColor1=function()
	{
	return'rgba(0, 0, 0, 0.6)'
};
Window_Base.prototype.dimColor2=function()
	{
	return'rgba(0, 0, 0, 0)'
};
Window_Base.prototype.canvasToLocalX=function(x)
	{
	var node=this;
	while(node)
		{
		x-=node.x;
		node=node.parent
	}
	return x
};
Window_Base.prototype.canvasToLocalY=function(y)
	{
	var node=this;
	while(node)
		{
		y-=node.y;
		node=node.parent
	}
	return y
};
function Window_Selectable()
	{
	this.initialize.apply(this,arguments)
}
Window_Selectable.prototype=Object.create(Window_Base.prototype);
Window_Selectable.prototype.constructor=Window_Selectable;
Window_Selectable.prototype.initialize=function(x,y,width,height)
	{
	Window_Base.prototype.initialize.call(this,x,y,width,height);
	this._index=-1;
	this._cursorFixed=false;
	this._cursorAll=false;
	this._stayCount=0;
	this._helpWindow=null;
	this._handlers=
		{
	};
	this._touching=false;
	this._scrollX=0;
	this._scrollY=0;
	this.deactivate()
};
Window_Selectable.prototype.index=function()
	{
	return this._index
};
Window_Selectable.prototype.cursorFixed=function()
	{
	return this._cursorFixed
};
Window_Selectable.prototype.setCursorFixed=function(cursorFixed)
	{
	this._cursorFixed=cursorFixed
};
Window_Selectable.prototype.cursorAll=function()
	{
	return this._cursorAll
};
Window_Selectable.prototype.setCursorAll=function(cursorAll)
	{
	this._cursorAll=cursorAll
};
Window_Selectable.prototype.maxCols=function()
	{
	return 1
};
Window_Selectable.prototype.maxItems=function()
	{
	return 0
};
Window_Selectable.prototype.spacing=function()
	{
	return 12
};
Window_Selectable.prototype.itemWidth=function()
	{
	return Math.floor((this.width-this.padding*2+this.spacing())/this.maxCols()-this.spacing())
};
Window_Selectable.prototype.itemHeight=function()
	{
	return this.lineHeight()
};
Window_Selectable.prototype.maxRows=function()
	{
	return Math.max(Math.ceil(this.maxItems()/this.maxCols()),1)
};
Window_Selectable.prototype.activate=function()
	{
	Window_Base.prototype.activate.call(this);
	this.reselect()
};
Window_Selectable.prototype.deactivate=function()
	{
	Window_Base.prototype.deactivate.call(this);
	this.reselect()
};
Window_Selectable.prototype.select=function(index)
	{
	this._index=index;
	this._stayCount=0;
	this.ensureCursorVisible();
	this.updateCursor();
	this.callUpdateHelp()
};
Window_Selectable.prototype.deselect=function()
	{
	this.select(-1)
};
Window_Selectable.prototype.reselect=function()
	{
	this.select(this._index)
};
Window_Selectable.prototype.row=function()
	{
	return Math.floor(this.index()/this.maxCols())
};
Window_Selectable.prototype.topRow=function()
	{
	return Math.floor(this._scrollY/this.itemHeight())
};
Window_Selectable.prototype.maxTopRow=function()
	{
	return Math.max(0,this.maxRows()-this.maxPageRows())
};
Window_Selectable.prototype.setTopRow=function(row)
	{
	var scrollY=row.clamp(0,this.maxTopRow())*this.itemHeight();
	if(this._scrollY!==scrollY)
		{
		this._scrollY=scrollY;
		this.refresh();
		this.updateCursor()
	}
};
Window_Selectable.prototype.resetScroll=function()
	{
	this.setTopRow(0)
};
Window_Selectable.prototype.maxPageRows=function()
	{
	var pageHeight=this.height-this.padding*2;
	return Math.floor(pageHeight/this.itemHeight())
};
Window_Selectable.prototype.maxPageItems=function()
	{
	return this.maxPageRows()*this.maxCols()
};
Window_Selectable.prototype.isHorizontal=function()
	{
	return this.maxPageRows()===1
};
Window_Selectable.prototype.bottomRow=function()
	{
	return Math.max(0,this.topRow()+this.maxPageRows()-1)
};
Window_Selectable.prototype.setBottomRow=function(row)
	{
	this.setTopRow(row-(this.maxPageRows()-1))
};
Window_Selectable.prototype.topIndex=function()
	{
	return this.topRow()*this.maxCols()
};
Window_Selectable.prototype.itemRect=function(index)
	{
	var rect=new Rectangle();
	var maxCols=this.maxCols();
	rect.width=this.itemWidth();
	rect.height=this.itemHeight();
	rect.x=index%maxCols*(rect.width+this.spacing())-this._scrollX;
	rect.y=Math.floor(index/maxCols)*rect.height-this._scrollY;
	return rect
};
Window_Selectable.prototype.itemRectForText=function(index)
	{
	var rect=this.itemRect(index);
	rect.x+=this.textPadding();
	rect.width-=this.textPadding()*2;
	return rect
};
Window_Selectable.prototype.setHelpWindow=function(helpWindow)
	{
	this._helpWindow=helpWindow;
	this.callUpdateHelp()
};
Window_Selectable.prototype.showHelpWindow=function()
	{
	if(this._helpWindow)
		{
		this._helpWindow.show()
	}
};
Window_Selectable.prototype.hideHelpWindow=function()
	{
	if(this._helpWindow)
		{
		this._helpWindow.hide()
	}
};
Window_Selectable.prototype.setHandler=function(symbol,method)
	{
	this._handlers[symbol]=method
};
Window_Selectable.prototype.isHandled=function(symbol)
	{
	return!!this._handlers[symbol]
};
Window_Selectable.prototype.callHandler=function(symbol)
	{
	if(this.isHandled(symbol))
		{
		this._handlers[symbol]()
	}
};
Window_Selectable.prototype.isOpenAndActive=function()
	{
	return this.isOpen()&&this.active
};
Window_Selectable.prototype.isCursorMovable=function()
	{
	return(this.isOpenAndActive()&&!this._cursorFixed&&!this._cursorAll&&this.maxItems()>0)
};
Window_Selectable.prototype.cursorDown=function(wrap)
	{
	var index=this.index();
	var maxItems=this.maxItems();
	var maxCols=this.maxCols();
	if(index<maxItems-maxCols||(wrap&&maxCols===1))
		{
		this.select((index+maxCols)%maxItems)
	}
};
Window_Selectable.prototype.cursorUp=function(wrap)
	{
	var index=this.index();
	var maxItems=this.maxItems();
	var maxCols=this.maxCols();
	if(index>=maxCols||(wrap&&maxCols===1))
		{
		this.select((index-maxCols+maxItems)%maxItems)
	}
};
Window_Selectable.prototype.cursorRight=function(wrap)
	{
	var index=this.index();
	var maxItems=this.maxItems();
	var maxCols=this.maxCols();
	if(maxCols>=2&&(index<maxItems-1||(wrap&&this.isHorizontal())))
		{
		this.select((index+1)%maxItems)
	}
};
Window_Selectable.prototype.cursorLeft=function(wrap)
	{
	var index=this.index();
	var maxItems=this.maxItems();
	var maxCols=this.maxCols();
	if(maxCols>=2&&(index>0||(wrap&&this.isHorizontal())))
		{
		this.select((index-1+maxItems)%maxItems)
	}
};
Window_Selectable.prototype.cursorPagedown=function()
	{
	var index=this.index();
	var maxItems=this.maxItems();
	if(this.topRow()+this.maxPageRows()<this.maxRows())
		{
		this.setTopRow(this.topRow()+this.maxPageRows());
		this.select(Math.min(index+this.maxPageItems(),maxItems-1))
	}
};
Window_Selectable.prototype.cursorPageup=function()
	{
	var index=this.index();
	if(this.topRow()>0)
		{
		this.setTopRow(this.topRow()-this.maxPageRows());
		this.select(Math.max(index-this.maxPageItems(),0))
	}
};
Window_Selectable.prototype.scrollDown=function()
	{
	if(this.topRow()+1<this.maxRows())
		{
		this.setTopRow(this.topRow()+1)
	}
};
Window_Selectable.prototype.scrollUp=function()
	{
	if(this.topRow()>0)
		{
		this.setTopRow(this.topRow()-1)
	}
};
Window_Selectable.prototype.update=function()
	{
	Window_Base.prototype.update.call(this);
	this.updateArrows();
	this.processCursorMove();
	this.processHandling();
	this.processWheel();
	this.processTouch();
	this._stayCount++
};
Window_Selectable.prototype.updateArrows=function()
	{
	var topRow=this.topRow();
	var maxTopRow=this.maxTopRow();
	this.downArrowVisible=maxTopRow>0&&topRow<maxTopRow;
	this.upArrowVisible=topRow>0
};
Window_Selectable.prototype.processCursorMove=function()
	{
	if(this.isCursorMovable())
		{
		var lastIndex=this.index();
		if(Input.isRepeated('down'))
			{
			this.cursorDown(Input.isTriggered('down'))
		}
		if(Input.isRepeated('up'))
			{
			this.cursorUp(Input.isTriggered('up'))
		}
		if(Input.isRepeated('right'))
			{
			this.cursorRight(Input.isTriggered('right'))
		}
		if(Input.isRepeated('left'))
			{
			this.cursorLeft(Input.isTriggered('left'))
		}
		if(!this.isHandled('pagedown')&&Input.isTriggered('pagedown'))
			{
			this.cursorPagedown()
		}
		if(!this.isHandled('pageup')&&Input.isTriggered('pageup'))
			{
			this.cursorPageup()
		}
		if(this.index()!==lastIndex)
			{
			SoundManager.playCursor()
		}
	}
};
Window_Selectable.prototype.processHandling=function()
	{
	if(this.isOpenAndActive())
		{
		if(this.isOkEnabled()&&this.isOkTriggered())
			{
			this.processOk()
		}
		else if(this.isCancelEnabled()&&this.isCancelTriggered())
			{
			this.processCancel()
		}
		else if(this.isHandled('pagedown')&&Input.isTriggered('pagedown'))
			{
			this.processPagedown()
		}
		else if(this.isHandled('pageup')&&Input.isTriggered('pageup'))
			{
			this.processPageup()
		}
	}
};
Window_Selectable.prototype.processWheel=function()
	{
	if(this.isOpenAndActive())
		{
		var threshold=20;
		if(TouchInput.wheelY>=threshold)
			{
			this.scrollDown()
		}
		if(TouchInput.wheelY<=-threshold)
			{
			this.scrollUp()
		}
	}
};
Window_Selectable.prototype.processTouch=function()
	{
	if(this.isOpenAndActive())
		{
		if(TouchInput.isTriggered()&&this.isTouchedInsideFrame())
			{
			this._touching=true;
			this.onTouch(true)
		}
		else if(TouchInput.isCancelled())
			{
			if(this.isCancelEnabled())
				{
				this.processCancel()
			}
		}
		if(this._touching)
			{
			if(TouchInput.isPressed())
				{
				this.onTouch(false)
			}
			else
				{
				this._touching=false
			}
		}
	}
	else
		{
		this._touching=false
	}
};
Window_Selectable.prototype.isTouchedInsideFrame=function()
	{
	var x=this.canvasToLocalX(TouchInput.x);
	var y=this.canvasToLocalY(TouchInput.y);
	return x>=0&&y>=0&&x<this.width&&y<this.height
};
Window_Selectable.prototype.onTouch=function(triggered)
	{
	var lastIndex=this.index();
	var x=this.canvasToLocalX(TouchInput.x);
	var y=this.canvasToLocalY(TouchInput.y);
	var hitIndex=this.hitTest(x,y);
	if(hitIndex>=0)
		{
		if(hitIndex===this.index())
			{
			if(triggered&&this.isTouchOkEnabled())
				{
				this.processOk()
			}
		}
		else if(this.isCursorMovable())
			{
			this.select(hitIndex)
		}
	}
	else if(this._stayCount>=10)
		{
		if(y<this.padding)
			{
			this.cursorUp()
		}
		else if(y>=this.height-this.padding)
			{
			this.cursorDown()
		}
	}
	if(this.index()!==lastIndex)
		{
		SoundManager.playCursor()
	}
};
Window_Selectable.prototype.hitTest=function(x,y)
	{
	if(this.isContentsArea(x,y))
		{
		var cx=x-this.padding;
		var cy=y-this.padding;
		var topIndex=this.topIndex();
		for(var i=0;
		i<this.maxPageItems();
		i++)
			{
			var index=topIndex+i;
			if(index<this.maxItems())
				{
				var rect=this.itemRect(index);
				var right=rect.x+rect.width;
				var bottom=rect.y+rect.height;
				if(cx>=rect.x&&cy>=rect.y&&cx<right&&cy<bottom)
					{
					return index
				}
			}
		}
	}
	return-1
};
Window_Selectable.prototype.isContentsArea=function(x,y)
	{
	var left=this.padding;
	var top=this.padding;
	var right=this.width-this.padding;
	var bottom=this.height-this.padding;
	return(x>=left&&y>=top&&x<right&&y<bottom)
};
Window_Selectable.prototype.isTouchOkEnabled=function()
	{
	return this.isOkEnabled()
};
Window_Selectable.prototype.isOkEnabled=function()
	{
	return this.isHandled('ok')
};
Window_Selectable.prototype.isCancelEnabled=function()
	{
	return this.isHandled('cancel')
};
Window_Selectable.prototype.isOkTriggered=function()
	{
	return Input.isRepeated('ok')
};
Window_Selectable.prototype.isCancelTriggered=function()
	{
	return Input.isRepeated('cancel')
};
Window_Selectable.prototype.processOk=function()
	{
	if(this.isCurrentItemEnabled())
		{
		this.playOkSound();
		this.updateInputData();
		this.deactivate();
		this.callOkHandler()
	}
	else
		{
		this.playBuzzerSound()
	}
};
Window_Selectable.prototype.playOkSound=function()
	{
	SoundManager.playOk()
};
Window_Selectable.prototype.playBuzzerSound=function()
	{
	SoundManager.playBuzzer()
};
Window_Selectable.prototype.callOkHandler=function()
	{
	this.callHandler('ok')
};
Window_Selectable.prototype.processCancel=function()
	{
	SoundManager.playCancel();
	this.updateInputData();
	this.deactivate();
	this.callCancelHandler()
};
Window_Selectable.prototype.callCancelHandler=function()
	{
	this.callHandler('cancel')
};
Window_Selectable.prototype.processPageup=function()
	{
	SoundManager.playCursor();
	this.updateInputData();
	this.deactivate();
	this.callHandler('pageup')
};
Window_Selectable.prototype.processPagedown=function()
	{
	SoundManager.playCursor();
	this.updateInputData();
	this.deactivate();
	this.callHandler('pagedown')
};
Window_Selectable.prototype.updateInputData=function()
	{
	Input.update();
	TouchInput.update()
};
Window_Selectable.prototype.updateCursor=function()
	{
	if(this._cursorAll)
		{
		var allRowsHeight=this.maxRows()*this.itemHeight();
		this.setCursorRect(0,0,this.contents.width,allRowsHeight);
		this.setTopRow(0)
	}
	else if(this.isCursorVisible())
		{
		var rect=this.itemRect(this.index());
		this.setCursorRect(rect.x,rect.y,rect.width,rect.height)
	}
	else
		{
		this.setCursorRect(0,0,0,0)
	}
};
Window_Selectable.prototype.isCursorVisible=function()
	{
	var row=this.row();
	return row>=this.topRow()&&row<=this.bottomRow()
};
Window_Selectable.prototype.ensureCursorVisible=function()
	{
	var row=this.row();
	if(row<this.topRow())
		{
		this.setTopRow(row)
	}
	else if(row>this.bottomRow())
		{
		this.setBottomRow(row)
	}
};
Window_Selectable.prototype.callUpdateHelp=function()
	{
	if(this.active&&this._helpWindow)
		{
		this.updateHelp()
	}
};
Window_Selectable.prototype.updateHelp=function()
	{
	this._helpWindow.clear()
};
Window_Selectable.prototype.setHelpWindowItem=function(item)
	{
	if(this._helpWindow)
		{
		this._helpWindow.setItem(item)
	}
};
Window_Selectable.prototype.isCurrentItemEnabled=function()
	{
	return true
};
Window_Selectable.prototype.drawAllItems=function()
	{
	var topIndex=this.topIndex();
	for(var i=0;
	i<this.maxPageItems();
	i++)
		{
		var index=topIndex+i;
		if(index<this.maxItems())
			{
			this.drawItem(index)
		}
	}
};
Window_Selectable.prototype.drawItem=function(index)
	{
};
Window_Selectable.prototype.clearItem=function(index)
	{
	var rect=this.itemRect(index);
	this.contents.clearRect(rect.x,rect.y,rect.width,rect.height)
};
Window_Selectable.prototype.redrawItem=function(index)
	{
	if(index>=0)
		{
		this.clearItem(index);
		this.drawItem(index)
	}
};
Window_Selectable.prototype.redrawCurrentItem=function()
	{
	this.redrawItem(this.index())
};
Window_Selectable.prototype.refresh=function()
	{
	if(this.contents)
		{
		this.contents.clear();
		this.drawAllItems()
	}
};
function Window_Command()
	{
	this.initialize.apply(this,arguments)
}
Window_Command.prototype=Object.create(Window_Selectable.prototype);
Window_Command.prototype.constructor=Window_Command;
Window_Command.prototype.initialize=function(x,y)
	{
	this.clearCommandList();
	this.makeCommandList();
	var width=this.windowWidth();
	var height=this.windowHeight();
	Window_Selectable.prototype.initialize.call(this,x,y,width,height);
	this.refresh();
	this.select(0);
	this.activate()
};
Window_Command.prototype.windowWidth=function()
	{
	return 240
};
Window_Command.prototype.windowHeight=function()
	{
	return this.fittingHeight(this.numVisibleRows())
};
Window_Command.prototype.numVisibleRows=function()
	{
	return Math.ceil(this.maxItems()/this.maxCols())
};
Window_Command.prototype.maxItems=function()
	{
	return this._list.length
};
Window_Command.prototype.clearCommandList=function()
	{
	this._list=[]
};
Window_Command.prototype.makeCommandList=function()
	{
};
Window_Command.prototype.addCommand=function(name,symbol,enabled,ext)
	{
	if(enabled===undefined)
		{
		enabled=true
	}
	if(ext===undefined)
		{
		ext=null
	}
	this._list.push(
		{
		name:name,symbol:symbol,enabled:enabled,ext:ext
	}
	)
};
Window_Command.prototype.commandName=function(index)
	{
	return this._list[index].name
};
Window_Command.prototype.commandSymbol=function(index)
	{
	return this._list[index].symbol
};
Window_Command.prototype.isCommandEnabled=function(index)
	{
	return this._list[index].enabled
};
Window_Command.prototype.currentData=function()
	{
	return this.index()>=0?this._list[this.index()]:null
};
Window_Command.prototype.isCurrentItemEnabled=function()
	{
	return this.currentData()?this.currentData().enabled:false
};
Window_Command.prototype.currentSymbol=function()
	{
	return this.currentData()?this.currentData().symbol:null
};
Window_Command.prototype.currentExt=function()
	{
	return this.currentData()?this.currentData().ext:null
};
Window_Command.prototype.findSymbol=function(symbol)
	{
	for(var i=0;
	i<this._list.length;
	i++)
		{
		if(this._list[i].symbol===symbol)
			{
			return i
		}
	}
	return-1
};
Window_Command.prototype.selectSymbol=function(symbol)
	{
	var index=this.findSymbol(symbol);
	if(index>=0)
		{
		this.select(index)
	}
	else
		{
		this.select(0)
	}
};
Window_Command.prototype.findExt=function(ext)
	{
	for(var i=0;
	i<this._list.length;
	i++)
		{
		if(this._list[i].ext===ext)
			{
			return i
		}
	}
	return-1
};
Window_Command.prototype.selectExt=function(ext)
	{
	var index=this.findExt(ext);
	if(index>=0)
		{
		this.select(index)
	}
	else
		{
		this.select(0)
	}
};
Window_Command.prototype.drawItem=function(index)
	{
	var rect=this.itemRectForText(index);
	var align=this.itemTextAlign();
	this.resetTextColor();
	this.changePaintOpacity(this.isCommandEnabled(index));
	this.drawText(this.commandName(index),rect.x,rect.y,rect.width,align)
};
Window_Command.prototype.itemTextAlign=function()
	{
	return'left'
};
Window_Command.prototype.isOkEnabled=function()
	{
	return true
};
Window_Command.prototype.callOkHandler=function()
	{
	var symbol=this.currentSymbol();
	if(this.isHandled(symbol))
		{
		this.callHandler(symbol)
	}
	else if(this.isHandled('ok'))
		{
		Window_Selectable.prototype.callOkHandler.call(this)
	}
	else
		{
		this.activate()
	}
};
Window_Command.prototype.refresh=function()
	{
	this.clearCommandList();
	this.makeCommandList();
	this.createContents();
	Window_Selectable.prototype.refresh.call(this)
};
function Window_HorzCommand()
	{
	this.initialize.apply(this,arguments)
}
Window_HorzCommand.prototype=Object.create(Window_Command.prototype);
Window_HorzCommand.prototype.constructor=Window_HorzCommand;
Window_HorzCommand.prototype.initialize=function(x,y)
	{
	Window_Command.prototype.initialize.call(this,x,y)
};
Window_HorzCommand.prototype.numVisibleRows=function()
	{
	return 1
};
Window_HorzCommand.prototype.maxCols=function()
	{
	return 4
};
Window_HorzCommand.prototype.itemTextAlign=function()
	{
	return'center'
};
function Window_Help()
	{
	this.initialize.apply(this,arguments)
}
Window_Help.prototype=Object.create(Window_Base.prototype);
Window_Help.prototype.constructor=Window_Help;
Window_Help.prototype.initialize=function(numLines)
	{
	var width=Graphics.boxWidth;
	var height=this.fittingHeight(numLines||2);
	Window_Base.prototype.initialize.call(this,0,0,width,height);
	this._text=''
};
Window_Help.prototype.setText=function(text)
	{
	if(this._text!==text)
		{
		this._text=text;
		this.refresh()
	}
};
Window_Help.prototype.clear=function()
	{
	this.setText('')
};
Window_Help.prototype.setItem=function(item)
	{
	this.setText(item?item.description:'')
};
Window_Help.prototype.refresh=function()
	{
	this.contents.clear();
	this.drawTextEx(this._text,this.textPadding(),0)
};
function Window_Gold()
	{
	this.initialize.apply(this,arguments)
}
Window_Gold.prototype=Object.create(Window_Base.prototype);
Window_Gold.prototype.constructor=Window_Gold;
Window_Gold.prototype.initialize=function(x,y)
	{
	var width=this.windowWidth();
	var height=this.windowHeight();
	Window_Base.prototype.initialize.call(this,x,y,width,height);
	this.refresh()
};
Window_Gold.prototype.windowWidth=function()
	{
	return 240
};
Window_Gold.prototype.windowHeight=function()
	{
	return this.fittingHeight(1)
};
Window_Gold.prototype.refresh=function()
	{
	var x=this.textPadding();
	var width=this.contents.width-this.textPadding()*2;
	this.contents.clear();
	this.drawCurrencyValue(this.value(),this.currencyUnit(),x,0,width)
};
Window_Gold.prototype.value=function()
	{
	return $gameParty.gold()
};
Window_Gold.prototype.currencyUnit=function()
	{
	return TextManager.currencyUnit
};
Window_Gold.prototype.open=function()
	{
	this.refresh();
	Window_Base.prototype.open.call(this)
};
function Window_MenuCommand()
	{
	this.initialize.apply(this,arguments)
}
Window_MenuCommand.prototype=Object.create(Window_Command.prototype);
Window_MenuCommand.prototype.constructor=Window_MenuCommand;
Window_MenuCommand.prototype.initialize=function(x,y)
	{
	Window_Command.prototype.initialize.call(this,x,y);
	this.selectLast()
};
Window_MenuCommand._lastCommandSymbol=null;
Window_MenuCommand.initCommandPosition=function()
	{
	this._lastCommandSymbol=null
};
Window_MenuCommand.prototype.windowWidth=function()
	{
	return 240
};
Window_MenuCommand.prototype.numVisibleRows=function()
	{
	return this.maxItems()
};
Window_MenuCommand.prototype.makeCommandList=function()
	{
	this.addMainCommands();
	this.addFormationCommand();
	this.addOriginalCommands();
	this.addOptionsCommand();
	this.addSaveCommand();
	this.addGameEndCommand()
};
Window_MenuCommand.prototype.addMainCommands=function()
	{
	var enabled=this.areMainCommandsEnabled();
	if(this.needsCommand('item'))
		{
		this.addCommand(TextManager.item,'item',enabled)
	}
	if(this.needsCommand('skill'))
		{
		this.addCommand(TextManager.skill,'skill',enabled)
	}
	if(this.needsCommand('equip'))
		{
		this.addCommand(TextManager.equip,'equip',enabled)
	}
	if(this.needsCommand('status'))
		{
		this.addCommand(TextManager.status,'status',enabled)
	}
};
Window_MenuCommand.prototype.addFormationCommand=function()
	{
	if(this.needsCommand('formation'))
		{
		var enabled=this.isFormationEnabled();
		this.addCommand(TextManager.formation,'formation',enabled)
	}
};
Window_MenuCommand.prototype.addOriginalCommands=function()
	{
};
Window_MenuCommand.prototype.addOptionsCommand=function()
	{
	if(this.needsCommand('options'))
		{
		var enabled=this.isOptionsEnabled();
		this.addCommand(TextManager.options,'options',enabled)
	}
};
Window_MenuCommand.prototype.addSaveCommand=function()
	{
	if(this.needsCommand('save'))
		{
		var enabled=this.isSaveEnabled();
		this.addCommand(TextManager.save,'save',enabled)
	}
};
Window_MenuCommand.prototype.addGameEndCommand=function()
	{
	var enabled=this.isGameEndEnabled();
	this.addCommand(TextManager.gameEnd,'gameEnd',enabled)
};
Window_MenuCommand.prototype.needsCommand=function(name)
	{
	var flags=$dataSystem.menuCommands;
	if(flags)
		{
		switch(name)
			{
			case'item':return flags[0];
			case'skill':return flags[1];
			case'equip':return flags[2];
			case'status':return flags[3];
			case'formation':return flags[4];
			case'save':return flags[5]
		}
	}
	return true
};
Window_MenuCommand.prototype.areMainCommandsEnabled=function()
	{
	return $gameParty.exists()
};
Window_MenuCommand.prototype.isFormationEnabled=function()
	{
	return $gameParty.size()>=2&&$gameSystem.isFormationEnabled()
};
Window_MenuCommand.prototype.isOptionsEnabled=function()
	{
	return true
};
Window_MenuCommand.prototype.isSaveEnabled=function()
	{
	return!DataManager.isEventTest()&&$gameSystem.isSaveEnabled()
};
Window_MenuCommand.prototype.isGameEndEnabled=function()
	{
	return true
};
Window_MenuCommand.prototype.processOk=function()
	{
	Window_MenuCommand._lastCommandSymbol=this.currentSymbol();
	Window_Command.prototype.processOk.call(this)
};
Window_MenuCommand.prototype.selectLast=function()
	{
	this.selectSymbol(Window_MenuCommand._lastCommandSymbol)
};
function Window_MenuStatus()
	{
	this.initialize.apply(this,arguments)
}
Window_MenuStatus.prototype=Object.create(Window_Selectable.prototype);
Window_MenuStatus.prototype.constructor=Window_MenuStatus;
Window_MenuStatus.prototype.initialize=function(x,y)
	{
	var width=this.windowWidth();
	var height=this.windowHeight();
	Window_Selectable.prototype.initialize.call(this,x,y,width,height);
	this._formationMode=false;
	this._pendingIndex=-1;
	this.loadImages();
	this.refresh()
};
Window_MenuStatus.prototype.windowWidth=function()
	{
	return Graphics.boxWidth-240
};
Window_MenuStatus.prototype.windowHeight=function()
	{
	return Graphics.boxHeight
};
Window_MenuStatus.prototype.maxItems=function()
	{
	return $gameParty.size()
};
Window_MenuStatus.prototype.itemHeight=function()
	{
	var clientHeight=this.height-this.padding*2;
	return Math.floor(clientHeight/this.numVisibleRows())
};
Window_MenuStatus.prototype.numVisibleRows=function()
	{
	return 4
};
Window_MenuStatus.prototype.loadImages=function()
	{
	$gameParty.members().forEach(function(actor)
		{
		ImageManager.loadFace(actor.faceName())
	}
	,this)
};
Window_MenuStatus.prototype.drawItem=function(index)
	{
	this.drawItemBackground(index);
	this.drawItemImage(index);
	this.drawItemStatus(index)
};
Window_MenuStatus.prototype.drawItemBackground=function(index)
	{
	if(index===this._pendingIndex)
		{
		var rect=this.itemRect(index);
		var color=this.pendingColor();
		this.changePaintOpacity(false);
		this.contents.fillRect(rect.x,rect.y,rect.width,rect.height,color);
		this.changePaintOpacity(true)
	}
};
Window_MenuStatus.prototype.drawItemImage=function(index)
	{
	var actor=$gameParty.members()[index];
	var rect=this.itemRect(index);
	this.changePaintOpacity(actor.isBattleMember());
	this.drawActorFace(actor,rect.x+1,rect.y+1,144,rect.height-2);
	this.changePaintOpacity(true)
};
Window_MenuStatus.prototype.drawItemStatus=function(index)
	{
	var actor=$gameParty.members()[index];
	var rect=this.itemRect(index);
	var x=rect.x+162;
	var y=rect.y+rect.height/2-this.lineHeight()*1.5;
	var width=rect.width-x-this.textPadding();
	this.drawActorSimpleStatus(actor,x,y,width)
};
Window_MenuStatus.prototype.processOk=function()
	{
	Window_Selectable.prototype.processOk.call(this);
	$gameParty.setMenuActor($gameParty.members()[this.index()])
};
Window_MenuStatus.prototype.isCurrentItemEnabled=function()
	{
	if(this._formationMode)
		{
		var actor=$gameParty.members()[this.index()];
		return actor&&actor.isFormationChangeOk()
	}
	else
		{
		return true
	}
};
Window_MenuStatus.prototype.selectLast=function()
	{
	this.select($gameParty.menuActor().index()||0)
};
Window_MenuStatus.prototype.formationMode=function()
	{
	return this._formationMode
};
Window_MenuStatus.prototype.setFormationMode=function(formationMode)
	{
	this._formationMode=formationMode
};
Window_MenuStatus.prototype.pendingIndex=function()
	{
	return this._pendingIndex
};
Window_MenuStatus.prototype.setPendingIndex=function(index)
	{
	var lastPendingIndex=this._pendingIndex;
	this._pendingIndex=index;
	this.redrawItem(this._pendingIndex);
	this.redrawItem(lastPendingIndex)
};
function Window_MenuActor()
	{
	this.initialize.apply(this,arguments)
}
Window_MenuActor.prototype=Object.create(Window_MenuStatus.prototype);
Window_MenuActor.prototype.constructor=Window_MenuActor;
Window_MenuActor.prototype.initialize=function()
	{
	Window_MenuStatus.prototype.initialize.call(this,0,0);
	this.hide()
};
Window_MenuActor.prototype.processOk=function()
	{
	if(!this.cursorAll())
		{
		$gameParty.setTargetActor($gameParty.members()[this.index()])
	}
	this.callOkHandler()
};
Window_MenuActor.prototype.selectLast=function()
	{
	this.select($gameParty.targetActor().index()||0)
};
Window_MenuActor.prototype.selectForItem=function(item)
	{
	var actor=$gameParty.menuActor();
	var action=new Game_Action(actor);
	action.setItemObject(item);
	this.setCursorFixed(false);
	this.setCursorAll(false);
	if(action.isForUser())
		{
		if(DataManager.isSkill(item))
			{
			this.setCursorFixed(true);
			this.select(actor.index())
		}
		else
			{
			this.selectLast()
		}
	}
	else if(action.isForAll())
		{
		this.setCursorAll(true);
		this.select(0)
	}
	else
		{
		this.selectLast()
	}
};
function Window_ItemCategory()
	{
	this.initialize.apply(this,arguments)
}
Window_ItemCategory.prototype=Object.create(Window_HorzCommand.prototype);
Window_ItemCategory.prototype.constructor=Window_ItemCategory;
Window_ItemCategory.prototype.initialize=function()
	{
	Window_HorzCommand.prototype.initialize.call(this,0,0)
};
Window_ItemCategory.prototype.windowWidth=function()
	{
	return Graphics.boxWidth
};
Window_ItemCategory.prototype.maxCols=function()
	{
	return 4
};
Window_ItemCategory.prototype.update=function()
	{
	Window_HorzCommand.prototype.update.call(this);
	if(this._itemWindow)
		{
		this._itemWindow.setCategory(this.currentSymbol())
	}
};
Window_ItemCategory.prototype.makeCommandList=function()
	{
	this.addCommand(TextManager.item,'item');
	this.addCommand(TextManager.weapon,'weapon');
	this.addCommand(TextManager.armor,'armor');
	this.addCommand(TextManager.keyItem,'keyItem')
};
Window_ItemCategory.prototype.setItemWindow=function(itemWindow)
	{
	this._itemWindow=itemWindow;
	this.update()
};
function Window_ItemList()
	{
	this.initialize.apply(this,arguments)
}
Window_ItemList.prototype=Object.create(Window_Selectable.prototype);
Window_ItemList.prototype.constructor=Window_ItemList;
Window_ItemList.prototype.initialize=function(x,y,width,height)
	{
	Window_Selectable.prototype.initialize.call(this,x,y,width,height);
	this._category='none';
	this._data=[]
};
Window_ItemList.prototype.setCategory=function(category)
	{
	if(this._category!==category)
		{
		this._category=category;
		this.refresh();
		this.resetScroll()
	}
};
Window_ItemList.prototype.maxCols=function()
	{
	return 2
};
Window_ItemList.prototype.spacing=function()
	{
	return 48
};
Window_ItemList.prototype.maxItems=function()
	{
	return this._data?this._data.length:1
};
Window_ItemList.prototype.item=function()
	{
	var index=this.index();
	return this._data&&index>=0?this._data[index]:null
};
Window_ItemList.prototype.isCurrentItemEnabled=function()
	{
	return this.isEnabled(this.item())
};
Window_ItemList.prototype.includes=function(item)
	{
	switch(this._category)
		{
		case'item':return DataManager.isItem(item)&&item.itypeId===1;
		case'weapon':return DataManager.isWeapon(item);
		case'armor':return DataManager.isArmor(item);
		case'keyItem':return DataManager.isItem(item)&&item.itypeId===2;
		default:return false
	}
};
Window_ItemList.prototype.needsNumber=function()
	{
	return true
};
Window_ItemList.prototype.isEnabled=function(item)
	{
	return $gameParty.canUse(item)
};
Window_ItemList.prototype.makeItemList=function()
	{
	this._data=$gameParty.allItems().filter(function(item)
		{
		return this.includes(item)
	}
	,this);
	if(this.includes(null))
		{
		this._data.push(null)
	}
};
Window_ItemList.prototype.selectLast=function()
	{
	var index=this._data.indexOf($gameParty.lastItem());
	this.select(index>=0?index:0)
};
Window_ItemList.prototype.drawItem=function(index)
	{
	var item=this._data[index];
	if(item)
		{
		var numberWidth=this.numberWidth();
		var rect=this.itemRect(index);
		rect.width-=this.textPadding();
		this.changePaintOpacity(this.isEnabled(item));
		this.drawItemName(item,rect.x,rect.y,rect.width-numberWidth);
		this.drawItemNumber(item,rect.x,rect.y,rect.width);
		this.changePaintOpacity(1)
	}
};
Window_ItemList.prototype.numberWidth=function()
	{
	return this.textWidth('000')
};
Window_ItemList.prototype.drawItemNumber=function(item,x,y,width)
	{
	if(this.needsNumber())
		{
		this.drawText(':',x,y,width-this.textWidth('00'),'right');
		this.drawText($gameParty.numItems(item),x,y,width,'right')
	}
};
Window_ItemList.prototype.updateHelp=function()
	{
	this.setHelpWindowItem(this.item())
};
Window_ItemList.prototype.refresh=function()
	{
	this.makeItemList();
	this.createContents();
	this.drawAllItems()
};
function Window_SkillType()
	{
	this.initialize.apply(this,arguments)
}
Window_SkillType.prototype=Object.create(Window_Command.prototype);
Window_SkillType.prototype.constructor=Window_SkillType;
Window_SkillType.prototype.initialize=function(x,y)
	{
	Window_Command.prototype.initialize.call(this,x,y);
	this._actor=null
};
Window_SkillType.prototype.windowWidth=function()
	{
	return 240
};
Window_SkillType.prototype.setActor=function(actor)
	{
	if(this._actor!==actor)
		{
		this._actor=actor;
		this.refresh();
		this.selectLast()
	}
};
Window_SkillType.prototype.numVisibleRows=function()
	{
	return 4
};
Window_SkillType.prototype.makeCommandList=function()
	{
	if(this._actor)
		{
		var skillTypes=this._actor.addedSkillTypes();
		skillTypes.sort(function(a,
			{
			return a-b
		}
		);
		skillTypes.forEach(function(stypeId)
			{
			var name=$dataSystem.skillTypes[stypeId];
			this.addCommand(name,'skill',true,stypeId)
		}
		,this)
	}
};
Window_SkillType.prototype.update=function()
	{
	Window_Command.prototype.update.call(this);
	if(this._skillWindow)
		{
		this._skillWindow.setStypeId(this.currentExt())
	}
};
Window_SkillType.prototype.setSkillWindow=function(skillWindow)
	{
	this._skillWindow=skillWindow;
	this.update()
};
Window_SkillType.prototype.selectLast=function()
	{
	var skill=this._actor.lastMenuSkill();
	if(skill)
		{
		this.selectExt(skill.stypeId)
	}
	else
		{
		this.select(0)
	}
};
function Window_SkillStatus()
	{
	this.initialize.apply(this,arguments)
}
Window_SkillStatus.prototype=Object.create(Window_Base.prototype);
Window_SkillStatus.prototype.constructor=Window_SkillStatus;
Window_SkillStatus.prototype.initialize=function(x,y,width,height)
	{
	Window_Base.prototype.initialize.call(this,x,y,width,height);
	this._actor=null
};
Window_SkillStatus.prototype.setActor=function(actor)
	{
	if(this._actor!==actor)
		{
		this._actor=actor;
		this.refresh()
	}
};
Window_SkillStatus.prototype.refresh=function()
	{
	this.contents.clear();
	if(this._actor)
		{
		var w=this.width-this.padding*2;
		var h=this.height-this.padding*2;
		var y=h/2-this.lineHeight()*1.5;
		var width=w-162-this.textPadding();
		this.drawActorFace(this._actor,0,0,144,h);
		this.drawActorSimpleStatus(this._actor,162,y,width)
	}
};
function Window_SkillList()
	{
	this.initialize.apply(this,arguments)
}
Window_SkillList.prototype=Object.create(Window_Selectable.prototype);
Window_SkillList.prototype.constructor=Window_SkillList;
Window_SkillList.prototype.initialize=function(x,y,width,height)
	{
	Window_Selectable.prototype.initialize.call(this,x,y,width,height);
	this._actor=null;
	this._stypeId=0;
	this._data=[]
};
Window_SkillList.prototype.setActor=function(actor)
	{
	if(this._actor!==actor)
		{
		this._actor=actor;
		this.refresh();
		this.resetScroll()
	}
};
Window_SkillList.prototype.setStypeId=function(stypeId)
	{
	if(this._stypeId!==stypeId)
		{
		this._stypeId=stypeId;
		this.refresh();
		this.resetScroll()
	}
};
Window_SkillList.prototype.maxCols=function()
	{
	return 2
};
Window_SkillList.prototype.spacing=function()
	{
	return 48
};
Window_SkillList.prototype.maxItems=function()
	{
	return this._data?this._data.length:1
};
Window_SkillList.prototype.item=function()
	{
	return this._data&&this.index()>=0?this._data[this.index()]:null
};
Window_SkillList.prototype.isCurrentItemEnabled=function()
	{
	return this.isEnabled(this._data[this.index()])
};
Window_SkillList.prototype.includes=function(item)
	{
	return item&&item.stypeId===this._stypeId
};
Window_SkillList.prototype.isEnabled=function(item)
	{
	return this._actor&&this._actor.canUse(item)
};
Window_SkillList.prototype.makeItemList=function()
	{
	if(this._actor)
		{
		this._data=this._actor.skills().filter(function(item)
			{
			return this.includes(item)
		}
		,this)
	}
	else
		{
		this._data=[]
	}
};
Window_SkillList.prototype.selectLast=function()
	{
	var skill;
	if($gameParty.inBattle())
		{
		skill=this._actor.lastBattleSkill()
	}
	else
		{
		skill=this._actor.lastMenuSkill()
	}
	var index=this._data.indexOf(skill);
	this.select(index>=0?index:0)
};
Window_SkillList.prototype.drawItem=function(index)
	{
	var skill=this._data[index];
	if(skill)
		{
		var costWidth=this.costWidth();
		var rect=this.itemRect(index);
		rect.width-=this.textPadding();
		this.changePaintOpacity(this.isEnabled(skill));
		this.drawItemName(skill,rect.x,rect.y,rect.width-costWidth);
		this.drawSkillCost(skill,rect.x,rect.y,rect.width);
		this.changePaintOpacity(1)
	}
};
Window_SkillList.prototype.costWidth=function()
	{
	return this.textWidth('000')
};
Window_SkillList.prototype.drawSkillCost=function(skill,x,y,width)
	{
	if(this._actor.skillTpCost(skill)>0)
		{
		this.changeTextColor(this.tpCostColor());
		this.drawText(this._actor.skillTpCost(skill),x,y,width,'right')
	}
	else if(this._actor.skillMpCost(skill)>0)
		{
		this.changeTextColor(this.mpCostColor());
		this.drawText(this._actor.skillMpCost(skill),x,y,width,'right')
	}
};
Window_SkillList.prototype.updateHelp=function()
	{
	this.setHelpWindowItem(this.item())
};
Window_SkillList.prototype.refresh=function()
	{
	this.makeItemList();
	this.createContents();
	this.drawAllItems()
};
function Window_EquipStatus()
	{
	this.initialize.apply(this,arguments)
}
Window_EquipStatus.prototype=Object.create(Window_Base.prototype);
Window_EquipStatus.prototype.constructor=Window_EquipStatus;
Window_EquipStatus.prototype.initialize=function(x,y)
	{
	var width=this.windowWidth();
	var height=this.windowHeight();
	Window_Base.prototype.initialize.call(this,x,y,width,height);
	this._actor=null;
	this._tempActor=null;
	this.refresh()
};
Window_EquipStatus.prototype.windowWidth=function()
	{
	return 312
};
Window_EquipStatus.prototype.windowHeight=function()
	{
	return this.fittingHeight(this.numVisibleRows())
};
Window_EquipStatus.prototype.numVisibleRows=function()
	{
	return 7
};
Window_EquipStatus.prototype.setActor=function(actor)
	{
	if(this._actor!==actor)
		{
		this._actor=actor;
		this.refresh()
	}
};
Window_EquipStatus.prototype.refresh=function()
	{
	this.contents.clear();
	if(this._actor)
		{
		this.drawActorName(this._actor,this.textPadding(),0);
		for(var i=0;
		i<6;
		i++)
			{
			this.drawItem(0,this.lineHeight()*(1+i),2+i)
		}
	}
};
Window_EquipStatus.prototype.setTempActor=function(tempActor)
	{
	if(this._tempActor!==tempActor)
		{
		this._tempActor=tempActor;
		this.refresh()
	}
};
Window_EquipStatus.prototype.drawItem=function(x,y,paramId)
	{
	this.drawParamName(x+this.textPadding(),y,paramId);
	if(this._actor)
		{
		this.drawCurrentParam(x+140,y,paramId)
	}
	this.drawRightArrow(x+188,y);
	if(this._tempActor)
		{
		this.drawNewParam(x+222,y,paramId)
	}
};
Window_EquipStatus.prototype.drawParamName=function(x,y,paramId)
	{
	this.changeTextColor(this.systemColor());
	this.drawText(TextManager.param(paramId),x,y,120)
};
Window_EquipStatus.prototype.drawCurrentParam=function(x,y,paramId)
	{
	this.resetTextColor();
	this.drawText(this._actor.param(paramId),x,y,48,'right')
};
Window_EquipStatus.prototype.drawRightArrow=function(x,y)
	{
	this.changeTextColor(this.systemColor());
	this.drawText('\u2192',x,y,32,'center')
};
Window_EquipStatus.prototype.drawNewParam=function(x,y,paramId)
	{
	var newValue=this._tempActor.param(paramId);
	var diffvalue=newValue-this._actor.param(paramId);
	this.changeTextColor(this.paramchangeTextColor(diffvalue));
	this.drawText(newValue,x,y,48,'right')
};
function Window_EquipCommand()
	{
	this.initialize.apply(this,arguments)
}
Window_EquipCommand.prototype=Object.create(Window_HorzCommand.prototype);
Window_EquipCommand.prototype.constructor=Window_EquipCommand;
Window_EquipCommand.prototype.initialize=function(x,y,width)
	{
	this._windowWidth=width;
	Window_HorzCommand.prototype.initialize.call(this,x,y)
};
Window_EquipCommand.prototype.windowWidth=function()
	{
	return this._windowWidth
};
Window_EquipCommand.prototype.maxCols=function()
	{
	return 3
};
Window_EquipCommand.prototype.makeCommandList=function()
	{
	this.addCommand(TextManager.equip2,'equip');
	this.addCommand(TextManager.optimize,'optimize');
	this.addCommand(TextManager.clear,'clear')
};
function Window_EquipSlot()
	{
	this.initialize.apply(this,arguments)
}
Window_EquipSlot.prototype=Object.create(Window_Selectable.prototype);
Window_EquipSlot.prototype.constructor=Window_EquipSlot;
Window_EquipSlot.prototype.initialize=function(x,y,width,height)
	{
	Window_Selectable.prototype.initialize.call(this,x,y,width,height);
	this._actor=null;
	this.refresh()
};
Window_EquipSlot.prototype.setActor=function(actor)
	{
	if(this._actor!==actor)
		{
		this._actor=actor;
		this.refresh()
	}
};
Window_EquipSlot.prototype.update=function()
	{
	Window_Selectable.prototype.update.call(this);
	if(this._itemWindow)
		{
		this._itemWindow.setSlotId(this.index())
	}
};
Window_EquipSlot.prototype.maxItems=function()
	{
	return this._actor?this._actor.equipSlots().length:0
};
Window_EquipSlot.prototype.item=function()
	{
	return this._actor?this._actor.equips()[this.index()]:null
};
Window_EquipSlot.prototype.drawItem=function(index)
	{
	if(this._actor)
		{
		var rect=this.itemRectForText(index);
		this.changeTextColor(this.systemColor());
		this.changePaintOpacity(this.isEnabled(index));
		this.drawText(this.slotName(index),rect.x,rect.y,138,this.lineHeight());
		this.drawItemName(this._actor.equips()[index],rect.x+138,rect.y);
		this.changePaintOpacity(true)
	}
};
Window_EquipSlot.prototype.slotName=function(index)
	{
	var slots=this._actor.equipSlots();
	return this._actor?$dataSystem.equipTypes[slots[index]]:''
};
Window_EquipSlot.prototype.isEnabled=function(index)
	{
	return this._actor?this._actor.isEquipChangeOk(index):false
};
Window_EquipSlot.prototype.isCurrentItemEnabled=function()
	{
	return this.isEnabled(this.index())
};
Window_EquipSlot.prototype.setStatusWindow=function(statusWindow)
	{
	this._statusWindow=statusWindow;
	this.callUpdateHelp()
};
Window_EquipSlot.prototype.setItemWindow=function(itemWindow)
	{
	this._itemWindow=itemWindow;
	this.update()
};
Window_EquipSlot.prototype.updateHelp=function()
	{
	Window_Selectable.prototype.updateHelp.call(this);
	this.setHelpWindowItem(this.item());
	if(this._statusWindow)
		{
		this._statusWindow.setTempActor(null)
	}
};
function Window_EquipItem()
	{
	this.initialize.apply(this,arguments)
}
Window_EquipItem.prototype=Object.create(Window_ItemList.prototype);
Window_EquipItem.prototype.constructor=Window_EquipItem;
Window_EquipItem.prototype.initialize=function(x,y,width,height)
	{
	Window_ItemList.prototype.initialize.call(this,x,y,width,height);
	this._actor=null;
	this._slotId=0
};
Window_EquipItem.prototype.setActor=function(actor)
	{
	if(this._actor!==actor)
		{
		this._actor=actor;
		this.refresh();
		this.resetScroll()
	}
};
Window_EquipItem.prototype.setSlotId=function(slotId)
	{
	if(this._slotId!==slotId)
		{
		this._slotId=slotId;
		this.refresh();
		this.resetScroll()
	}
};
Window_EquipItem.prototype.includes=function(item)
	{
	if(item===null)
		{
		return true
	}
	if(this._slotId<0||item.etypeId!==this._actor.equipSlots()[this._slotId])
		{
		return false
	}
	return this._actor.canEquip(item)
};
Window_EquipItem.prototype.isEnabled=function(item)
	{
	return true
};
Window_EquipItem.prototype.selectLast=function()
	{
};
Window_EquipItem.prototype.setStatusWindow=function(statusWindow)
	{
	this._statusWindow=statusWindow;
	this.callUpdateHelp()
};
Window_EquipItem.prototype.updateHelp=function()
	{
	Window_ItemList.prototype.updateHelp.call(this);
	if(this._actor&&this._statusWindow)
		{
		var actor=JsonEx.makeDeepCopy(this._actor);
		actor.forceChangeEquip(this._slotId,this.item());
		this._statusWindow.setTempActor(actor)
	}
};
Window_EquipItem.prototype.playOkSound=function()
	{
};
function Window_Status()
	{
	this.initialize.apply(this,arguments)
}
Window_Status.prototype=Object.create(Window_Selectable.prototype);
Window_Status.prototype.constructor=Window_Status;
Window_Status.prototype.initialize=function()
	{
	var width=Graphics.boxWidth;
	var height=Graphics.boxHeight;
	Window_Selectable.prototype.initialize.call(this,0,0,width,height);
	this.refresh();
	this.activate()
};
Window_Status.prototype.setActor=function(actor)
	{
	if(this._actor!==actor)
		{
		this._actor=actor;
		this.refresh()
	}
};
Window_Status.prototype.refresh=function()
	{
	this.contents.clear();
	if(this._actor)
		{
		var lineHeight=this.lineHeight();
		this.drawBlock1(lineHeight*0);
		this.drawHorzLine(lineHeight*1);
		this.drawBlock2(lineHeight*2);
		this.drawHorzLine(lineHeight*6);
		this.drawBlock3(lineHeight*7);
		this.drawHorzLine(lineHeight*13);
		this.drawBlock4(lineHeight*14)
	}
};
Window_Status.prototype.drawBlock1=function(y)
	{
	this.drawActorName(this._actor,6,y);
	this.drawActorClass(this._actor,192,y);
	this.drawActorNickname(this._actor,432,y)
};
Window_Status.prototype.drawBlock2=function(y)
	{
	this.drawActorFace(this._actor,12,y);
	this.drawBasicInfo(204,y);
	this.drawExpInfo(456,y)
};
Window_Status.prototype.drawBlock3=function(y)
	{
	this.drawParameters(48,y);
	this.drawEquipments(432,y)
};
Window_Status.prototype.drawBlock4=function(y)
	{
	this.drawProfile(6,y)
};
Window_Status.prototype.drawHorzLine=function(y)
	{
	var lineY=y+this.lineHeight()/2-1;
	this.contents.paintOpacity=48;
	this.contents.fillRect(0,lineY,this.contentsWidth(),2,this.lineColor());
	this.contents.paintOpacity=255
};
Window_Status.prototype.lineColor=function()
	{
	return this.normalColor()
};
Window_Status.prototype.drawBasicInfo=function(x,y)
	{
	var lineHeight=this.lineHeight();
	this.drawActorLevel(this._actor,x,y+lineHeight*0);
	this.drawActorIcons(this._actor,x,y+lineHeight*1);
	this.drawActorHp(this._actor,x,y+lineHeight*2);
	this.drawActorMp(this._actor,x,y+lineHeight*3)
};
Window_Status.prototype.drawParameters=function(x,y)
	{
	var lineHeight=this.lineHeight();
	for(var i=0;
	i<6;
	i++)
		{
		var paramId=i+2;
		var y2=y+lineHeight*i;
		this.changeTextColor(this.systemColor());
		this.drawText(TextManager.param(paramId),x,y2,160);
		this.resetTextColor();
		this.drawText(this._actor.param(paramId),x+160,y2,60,'right')
	}
};
Window_Status.prototype.drawExpInfo=function(x,y)
	{
	var lineHeight=this.lineHeight();
	var expTotal=TextManager.expTotal.format(TextManager.exp);
	var expNext=TextManager.expNext.format(TextManager.level);
	var value1=this._actor.currentExp();
	var value2=this._actor.nextRequiredExp();
	if(this._actor.isMaxLevel())
		{
		value1='-------';
		value2='-------'
	}
	this.changeTextColor(this.systemColor());
	this.drawText(expTotal,x,y+lineHeight*0,270);
	this.drawText(expNext,x,y+lineHeight*2,270);
	this.resetTextColor();
	this.drawText(value1,x,y+lineHeight*1,270,'right');
	this.drawText(value2,x,y+lineHeight*3,270,'right')
};
Window_Status.prototype.drawEquipments=function(x,y)
	{
	var equips=this._actor.equips();
	var count=Math.min(equips.length,this.maxEquipmentLines());
	for(var i=0;
	i<count;
	i++)
		{
		this.drawItemName(equips[i],x,y+this.lineHeight()*i)
	}
};
Window_Status.prototype.drawProfile=function(x,y)
	{
	this.drawTextEx(this._actor.profile(),x,y)
};
Window_Status.prototype.maxEquipmentLines=function()
	{
	return 6
};
function Window_Options()
	{
	this.initialize.apply(this,arguments)
}
Window_Options.prototype=Object.create(Window_Command.prototype);
Window_Options.prototype.constructor=Window_Options;
Window_Options.prototype.initialize=function()
	{
	Window_Command.prototype.initialize.call(this,0,0);
	this.updatePlacement()
};
Window_Options.prototype.windowWidth=function()
	{
	return 400
};
Window_Options.prototype.windowHeight=function()
	{
	return this.fittingHeight(Math.min(this.numVisibleRows(),12))
};
Window_Options.prototype.updatePlacement=function()
	{
	this.x=(Graphics.boxWidth-this.width)/2;
	this.y=(Graphics.boxHeight-this.height)/2
};
Window_Options.prototype.makeCommandList=function()
	{
	this.addGeneralOptions();
	this.addVolumeOptions()
};
Window_Options.prototype.addGeneralOptions=function()
	{
	this.addCommand(TextManager.alwaysDash,'alwaysDash');
	this.addCommand(TextManager.commandRemember,'commandRemember')
};
Window_Options.prototype.addVolumeOptions=function()
	{
	this.addCommand(TextManager.bgmVolume,'bgmVolume');
	this.addCommand(TextManager.bgsVolume,'bgsVolume');
	this.addCommand(TextManager.meVolume,'meVolume');
	this.addCommand(TextManager.seVolume,'seVolume')
};
Window_Options.prototype.drawItem=function(index)
	{
	var rect=this.itemRectForText(index);
	var statusWidth=this.statusWidth();
	var titleWidth=rect.width-statusWidth;
	this.resetTextColor();
	this.changePaintOpacity(this.isCommandEnabled(index));
	this.drawText(this.commandName(index),rect.x,rect.y,titleWidth,'left');
	this.drawText(this.statusText(index),titleWidth,rect.y,statusWidth,'right')
};
Window_Options.prototype.statusWidth=function()
	{
	return 120
};
Window_Options.prototype.statusText=function(index)
	{
	var symbol=this.commandSymbol(index);
	var value=this.getConfigValue(symbol);
	if(this.isVolumeSymbol(symbol))
		{
		return this.volumeStatusText(value)
	}
	else
		{
		return this.booleanStatusText(value)
	}
};
Window_Options.prototype.isVolumeSymbol=function(symbol)
	{
	return symbol.contains('Volume')
};
Window_Options.prototype.booleanStatusText=function(value)
	{
	return value?'ON':'OFF'
};
Window_Options.prototype.volumeStatusText=function(value)
	{
	return value+'%'
};
Window_Options.prototype.processOk=function()
	{
	var index=this.index();
	var symbol=this.commandSymbol(index);
	var value=this.getConfigValue(symbol);
	if(this.isVolumeSymbol(symbol))
		{
		value+=this.volumeOffset();
		if(value>100)
			{
			value=0
		}
		value=value.clamp(0,100);
		this.changeValue(symbol,value)
	}
	else
		{
		this.changeValue(symbol,!value)
	}
};
Window_Options.prototype.cursorRight=function(wrap)
	{
	var index=this.index();
	var symbol=this.commandSymbol(index);
	var value=this.getConfigValue(symbol);
	if(this.isVolumeSymbol(symbol))
		{
		value+=this.volumeOffset();
		value=value.clamp(0,100);
		this.changeValue(symbol,value)
	}
	else
		{
		this.changeValue(symbol,true)
	}
};
Window_Options.prototype.cursorLeft=function(wrap)
	{
	var index=this.index();
	var symbol=this.commandSymbol(index);
	var value=this.getConfigValue(symbol);
	if(this.isVolumeSymbol(symbol))
		{
		value-=this.volumeOffset();
		value=value.clamp(0,100);
		this.changeValue(symbol,value)
	}
	else
		{
		this.changeValue(symbol,false)
	}
};
Window_Options.prototype.volumeOffset=function()
	{
	return 20
};
Window_Options.prototype.changeValue=function(symbol,value)
	{
	var lastValue=this.getConfigValue(symbol);
	if(lastValue!==value)
		{
		this.setConfigValue(symbol,value);
		this.redrawItem(this.findSymbol(symbol));
		SoundManager.playCursor()
	}
};
Window_Options.prototype.getConfigValue=function(symbol)
	{
	return ConfigManager[symbol]
};
Window_Options.prototype.setConfigValue=function(symbol,volume)
	{
	ConfigManager[symbol]=volume
};
function Window_SavefileList()
	{
	this.initialize.apply(this,arguments)
}
Window_SavefileList.prototype=Object.create(Window_Selectable.prototype);
Window_SavefileList.prototype.constructor=Window_SavefileList;
Window_SavefileList.prototype.initialize=function(x,y,width,height)
	{
	Window_Selectable.prototype.initialize.call(this,x,y,width,height);
	this.activate();
	this._mode=null
};
Window_SavefileList.prototype.setMode=function(mode)
	{
	this._mode=mode
};
Window_SavefileList.prototype.maxItems=function()
	{
	return DataManager.maxSavefiles()
};
Window_SavefileList.prototype.maxVisibleItems=function()
	{
	return 5
};
Window_SavefileList.prototype.itemHeight=function()
	{
	var innerHeight=this.height-this.padding*2;
	return Math.floor(innerHeight/this.maxVisibleItems())
};
Window_SavefileList.prototype.drawItem=function(index)
	{
	var id=index+1;
	var valid=DataManager.isThisGameFile(id);
	var info=DataManager.loadSavefileInfo(id);
	var rect=this.itemRectForText(index);
	this.resetTextColor();
	if(this._mode==='load')
		{
		this.changePaintOpacity(valid)
	}
	this.drawFileId(id,rect.x,rect.y);
	if(info)
		{
		this.changePaintOpacity(valid);
		this.drawContents(info,rect,valid);
		this.changePaintOpacity(true)
	}
};
Window_SavefileList.prototype.drawFileId=function(id,x,y)
	{
	this.drawText(TextManager.file+' '+id,x,y,180)
};
Window_SavefileList.prototype.drawContents=function(info,rect,valid)
	{
	var bottom=rect.y+rect.height;
	if(rect.width>=420)
		{
		this.drawGameTitle(info,rect.x+192,rect.y,rect.width-192);
		if(valid)
			{
			this.drawPartyCharacters(info,rect.x+220,bottom-4)
		}
	}
	var lineHeight=this.lineHeight();
	var y2=bottom-lineHeight;
	if(y2>=lineHeight)
		{
		this.drawPlaytime(info,rect.x,y2,rect.width)
	}
};
Window_SavefileList.prototype.drawGameTitle=function(info,x,y,width)
	{
	if(info.title)
		{
		this.drawText(info.title,x,y,width)
	}
};
Window_SavefileList.prototype.drawPartyCharacters=function(info,x,y)
	{
	if(info.characters)
		{
		for(var i=0;
		i<info.characters.length;
		i++)
			{
			var data=info.characters[i];
			this.drawCharacter(data[0],data[1],x+i*48,y)
		}
	}
};
Window_SavefileList.prototype.drawPlaytime=function(info,x,y,width)
	{
	if(info.playtime)
		{
		this.drawText(info.playtime,x,y,width,'right')
	}
};
Window_SavefileList.prototype.playOkSound=function()
	{
};
function Window_ShopCommand()
	{
	this.initialize.apply(this,arguments)
}
Window_ShopCommand.prototype=Object.create(Window_HorzCommand.prototype);
Window_ShopCommand.prototype.constructor=Window_ShopCommand;
Window_ShopCommand.prototype.initialize=function(width,purchaseOnly)
	{
	this._windowWidth=width;
	this._purchaseOnly=purchaseOnly;
	Window_HorzCommand.prototype.initialize.call(this,0,0)
};
Window_ShopCommand.prototype.windowWidth=function()
	{
	return this._windowWidth
};
Window_ShopCommand.prototype.maxCols=function()
	{
	return 3
};
Window_ShopCommand.prototype.makeCommandList=function()
	{
	this.addCommand(TextManager.buy,'buy');
	this.addCommand(TextManager.sell,'sell',!this._purchaseOnly);
	this.addCommand(TextManager.cancel,'cancel')
};
function Window_ShopBuy()
	{
	this.initialize.apply(this,arguments)
}
Window_ShopBuy.prototype=Object.create(Window_Selectable.prototype);
Window_ShopBuy.prototype.constructor=Window_ShopBuy;
Window_ShopBuy.prototype.initialize=function(x,y,height,shopGoods)
	{
	var width=this.windowWidth();
	Window_Selectable.prototype.initialize.call(this,x,y,width,height);
	this._shopGoods=shopGoods;
	this._money=0;
	this.refresh();
	this.select(0)
};
Window_ShopBuy.prototype.windowWidth=function()
	{
	return 456
};
Window_ShopBuy.prototype.maxItems=function()
	{
	return this._data?this._data.length:1
};
Window_ShopBuy.prototype.item=function()
	{
	return this._data[this.index()]
};
Window_ShopBuy.prototype.setMoney=function(money)
	{
	this._money=money;
	this.refresh()
};
Window_ShopBuy.prototype.isCurrentItemEnabled=function()
	{
	return this.isEnabled(this._data[this.index()])
};
Window_ShopBuy.prototype.price=function(item)
	{
	return this._price[this._data.indexOf(item)]||0
};
Window_ShopBuy.prototype.isEnabled=function(item)
	{
	return(item&&this.price(item)<=this._money&&!$gameParty.hasMaxItems(item))
};
Window_ShopBuy.prototype.refresh=function()
	{
	this.makeItemList();
	this.createContents();
	this.drawAllItems()
};
Window_ShopBuy.prototype.makeItemList=function()
	{
	this._data=[];
	this._price=[];
	this._shopGoods.forEach(function(goods)
		{
		var item=null;
		switch(goods[0])
			{
			case 0:item=$dataItems[goods[1]];
			break;
			case 1:item=$dataWeapons[goods[1]];
			break;
			case 2:item=$dataArmors[goods[1]];
			break
		}
		if(item)
			{
			this._data.push(item);
			this._price.push(goods[2]===0?item.price:goods[3])
		}
	}
	,this)
};
Window_ShopBuy.prototype.drawItem=function(index)
	{
	var item=this._data[index];
	var rect=this.itemRect(index);
	var priceWidth=96;
	rect.width-=this.textPadding();
	this.changePaintOpacity(this.isEnabled(item));
	this.drawItemName(item,rect.x,rect.y,rect.width-priceWidth);
	this.drawText(this.price(item),rect.x+rect.width-priceWidth,rect.y,priceWidth,'right');
	this.changePaintOpacity(true)
};
Window_ShopBuy.prototype.setStatusWindow=function(statusWindow)
	{
	this._statusWindow=statusWindow;
	this.callUpdateHelp()
};
Window_ShopBuy.prototype.updateHelp=function()
	{
	this.setHelpWindowItem(this.item());
	if(this._statusWindow)
		{
		this._statusWindow.setItem(this.item())
	}
};
function Window_ShopSell()
	{
	this.initialize.apply(this,arguments)
}
Window_ShopSell.prototype=Object.create(Window_ItemList.prototype);
Window_ShopSell.prototype.constructor=Window_ShopSell;
Window_ShopSell.prototype.initialize=function(x,y,width,height)
	{
	Window_ItemList.prototype.initialize.call(this,x,y,width,height)
};
Window_ShopSell.prototype.isEnabled=function(item)
	{
	return item&&item.price>0
};
function Window_ShopNumber()
	{
	this.initialize.apply(this,arguments)
}
Window_ShopNumber.prototype=Object.create(Window_Selectable.prototype);
Window_ShopNumber.prototype.constructor=Window_ShopNumber;
Window_ShopNumber.prototype.initialize=function(x,y,height)
	{
	var width=this.windowWidth();
	Window_Selectable.prototype.initialize.call(this,x,y,width,height);
	this._item=null;
	this._max=1;
	this._price=0;
	this._number=1;
	this._currencyUnit=TextManager.currencyUnit;
	this.createButtons()
};
Window_ShopNumber.prototype.windowWidth=function()
	{
	return 456
};
Window_ShopNumber.prototype.number=function()
	{
	return this._number
};
Window_ShopNumber.prototype.setup=function(item,max,price)
	{
	this._item=item;
	this._max=Math.floor(max);
	this._price=price;
	this._number=1;
	this.placeButtons();
	this.updateButtonsVisiblity();
	this.refresh()
};
Window_ShopNumber.prototype.setCurrencyUnit=function(currencyUnit)
	{
	this._currencyUnit=currencyUnit;
	this.refresh()
};
Window_ShopNumber.prototype.createButtons=function()
	{
	var bitmap=ImageManager.loadSystem('ButtonSet');
	var buttonWidth=48;
	var buttonHeight=48;
	this._buttons=[];
	for(var i=0;
	i<5;
	i++)
		{
		var button=new Sprite_Button();
		var x=buttonWidth*i;
		var w=buttonWidth*(i===4?2:1);
		button.bitmap=bitmap;
		button.setColdFrame(x,0,w,buttonHeight);
		button.setHotFrame(x,buttonHeight,w,buttonHeight);
		button.visible=false;
		this._buttons.push(button);
		this.addChild(button)
	}
	this._buttons[0].setClickHandler(this.onButtonDown2.bind(this));
	this._buttons[1].setClickHandler(this.onButtonDown.bind(this));
	this._buttons[2].setClickHandler(this.onButtonUp.bind(this));
	this._buttons[3].setClickHandler(this.onButtonUp2.bind(this));
	this._buttons[4].setClickHandler(this.onButtonOk.bind(this))
};
Window_ShopNumber.prototype.placeButtons=function()
	{
	var numButtons=this._buttons.length;
	var spacing=16;
	var totalWidth=-spacing;
	for(var i=0;
	i<numButtons;
	i++)
		{
		totalWidth+=this._buttons[i].width+spacing
	}
	var x=(this.width-totalWidth)/2;
	for(var j=0;
	j<numButtons;
	j++)
		{
		var button=this._buttons[j];
		button.x=x;
		button.y=this.buttonY();
		x+=button.width+spacing
	}
};
Window_ShopNumber.prototype.updateButtonsVisiblity=function()
	{
	if(TouchInput.date>Input.date)
		{
		this.showButtons()
	}
	else
		{
		this.hideButtons()
	}
};
Window_ShopNumber.prototype.showButtons=function()
	{
	for(var i=0;
	i<this._buttons.length;
	i++)
		{
		this._buttons[i].visible=true
	}
};
Window_ShopNumber.prototype.hideButtons=function()
	{
	for(var i=0;
	i<this._buttons.length;
	i++)
		{
		this._buttons[i].visible=false
	}
};
Window_ShopNumber.prototype.refresh=function()
	{
	this.contents.clear();
	this.drawItemName(this._item,0,this.itemY());
	this.drawMultiplicationSign();
	this.drawNumber();
	this.drawTotalPrice()
};
Window_ShopNumber.prototype.drawMultiplicationSign=function()
	{
	var sign='\u00d7';
	var width=this.textWidth(sign);
	var x=this.cursorX()-width*2;
	var y=this.itemY();
	this.resetTextColor();
	this.drawText(sign,x,y,width)
};
Window_ShopNumber.prototype.drawNumber=function()
	{
	var x=this.cursorX();
	var y=this.itemY();
	var width=this.cursorWidth()-this.textPadding();
	this.resetTextColor();
	this.drawText(this._number,x,y,width,'right')
};
Window_ShopNumber.prototype.drawTotalPrice=function()
	{
	var total=this._price*this._number;
	var width=this.contentsWidth()-this.textPadding();
	this.drawCurrencyValue(total,this._currencyUnit,0,this.priceY(),width)
};
Window_ShopNumber.prototype.itemY=function()
	{
	return Math.round(this.contentsHeight()/2-this.lineHeight()*1.5)
};
Window_ShopNumber.prototype.priceY=function()
	{
	return Math.round(this.contentsHeight()/2+this.lineHeight()/2)
};
Window_ShopNumber.prototype.buttonY=function()
	{
	return Math.round(this.priceY()+this.lineHeight()*2.5)
};
Window_ShopNumber.prototype.cursorWidth=function()
	{
	var digitWidth=this.textWidth('0');
	return this.maxDigits()*digitWidth+this.textPadding()*2
};
Window_ShopNumber.prototype.cursorX=function()
	{
	return this.contentsWidth()-this.cursorWidth()-this.textPadding()
};
Window_ShopNumber.prototype.maxDigits=function()
	{
	return 2
};
Window_ShopNumber.prototype.update=function()
	{
	Window_Selectable.prototype.update.call(this);
	this.processNumberChange()
};
Window_ShopNumber.prototype.isOkTriggered=function()
	{
	return Input.isTriggered('ok')
};
Window_ShopNumber.prototype.playOkSound=function()
	{
};
Window_ShopNumber.prototype.processNumberChange=function()
	{
	if(this.isOpenAndActive())
		{
		if(Input.isRepeated('right'))
			{
			this.changeNumber(1)
		}
		if(Input.isRepeated('left'))
			{
			this.changeNumber(-1)
		}
		if(Input.isRepeated('up'))
			{
			this.changeNumber(10)
		}
		if(Input.isRepeated('down'))
			{
			this.changeNumber(-10)
		}
	}
};
Window_ShopNumber.prototype.changeNumber=function(amount)
	{
	var lastNumber=this._number;
	this._number=(this._number+amount).clamp(1,this._max);
	if(this._number!==lastNumber)
		{
		SoundManager.playCursor();
		this.refresh()
	}
};
Window_ShopNumber.prototype.updateCursor=function()
	{
	this.setCursorRect(this.cursorX(),this.itemY(),this.cursorWidth(),this.lineHeight())
};
Window_ShopNumber.prototype.onButtonUp=function()
	{
	this.changeNumber(1)
};
Window_ShopNumber.prototype.onButtonUp2=function()
	{
	this.changeNumber(10)
};
Window_ShopNumber.prototype.onButtonDown=function()
	{
	this.changeNumber(-1)
};
Window_ShopNumber.prototype.onButtonDown2=function()
	{
	this.changeNumber(-10)
};
Window_ShopNumber.prototype.onButtonOk=function()
	{
	this.processOk()
};
function Window_ShopStatus()
	{
	this.initialize.apply(this,arguments)
}
Window_ShopStatus.prototype=Object.create(Window_Base.prototype);
Window_ShopStatus.prototype.constructor=Window_ShopStatus;
Window_ShopStatus.prototype.initialize=function(x,y,width,height)
	{
	Window_Base.prototype.initialize.call(this,x,y,width,height);
	this._item=null;
	this._pageIndex=0;
	this.refresh()
};
Window_ShopStatus.prototype.refresh=function()
	{
	this.contents.clear();
	if(this._item)
		{
		var x=this.textPadding();
		this.drawPossession(x,0);
		if(this.isEquipItem())
			{
			this.drawEquipInfo(x,this.lineHeight()*2)
		}
	}
};
Window_ShopStatus.prototype.setItem=function(item)
	{
	this._item=item;
	this.refresh()
};
Window_ShopStatus.prototype.isEquipItem=function()
	{
	return DataManager.isWeapon(this._item)||DataManager.isArmor(this._item)
};
Window_ShopStatus.prototype.drawPossession=function(x,y)
	{
	var width=this.contents.width-this.textPadding()-x;
	var possessionWidth=this.textWidth('0000');
	this.changeTextColor(this.systemColor());
	this.drawText(TextManager.possession,x,y,width-possessionWidth);
	this.resetTextColor();
	this.drawText($gameParty.numItems(this._item),x,y,width,'right')
};
Window_ShopStatus.prototype.drawEquipInfo=function(x,y)
	{
	var members=this.statusMembers();
	for(var i=0;
	i<members.length;
	i++)
		{
		this.drawActorEquipInfo(x,y+this.lineHeight()*(i*2.4),members[i])
	}
};
Window_ShopStatus.prototype.statusMembers=function()
	{
	var start=this._pageIndex*this.pageSize();
	var end=start+this.pageSize();
	return $gameParty.members().slice(start,end)
};
Window_ShopStatus.prototype.pageSize=function()
	{
	return 4
};
Window_ShopStatus.prototype.maxPages=function()
	{
	return Math.floor(($gameParty.size()+this.pageSize()-1)/this.pageSize())
};
Window_ShopStatus.prototype.drawActorEquipInfo=function(x,y,actor)
	{
	var enabled=actor.canEquip(this._item);
	this.changePaintOpacity(enabled);
	this.resetTextColor();
	this.drawText(actor.name(),x,y,168);
	var item1=this.currentEquippedItem(actor,this._item.etypeId);
	if(enabled)
		{
		this.drawActorParamChange(x,y,actor,item1)
	}
	this.drawItemName(item1,x,y+this.lineHeight());
	this.changePaintOpacity(true)
};
Window_ShopStatus.prototype.drawActorParamChange=function(x,y,actor,item1)
	{
	var width=this.contents.width-this.textPadding()-x;
	var paramId=this.paramId();
	var change=this._item.params[paramId]-(item1?item1.params[paramId]:0);
	this.changeTextColor(this.paramchangeTextColor(change));
	this.drawText((change>0?'+':'')+change,x,y,width,'right')
};
Window_ShopStatus.prototype.paramId=function()
	{
	return DataManager.isWeapon(this._item)?2:3
};
Window_ShopStatus.prototype.currentEquippedItem=function(actor,etypeId)
	{
	var list=[];
	var equips=actor.equips();
	var slots=actor.equipSlots();
	for(var i=0;
	i<slots.length;
	i++)
		{
		if(slots[i]===etypeId)
			{
			list.push(equips[i])
		}
	}
	var paramId=this.paramId();
	var worstParam=Number.MAX_VALUE;
	var worstItem=null;
	for(var j=0;
	j<list.length;
	j++)
		{
		if(list[j]&&list[j].params[paramId]<worstParam)
			{
			worstParam=list[j].params[paramId];
			worstItem=list[j]
		}
	}
	return worstItem
};
Window_ShopStatus.prototype.update=function()
	{
	Window_Base.prototype.update.call(this);
	this.updatePage()
};
Window_ShopStatus.prototype.updatePage=function()
	{
	if(this.isPageChangeEnabled()&&this.isPageChangeRequested())
		{
		this.changePage()
	}
};
Window_ShopStatus.prototype.isPageChangeEnabled=function()
	{
	return this.visible&&this.maxPages()>=2
};
Window_ShopStatus.prototype.isPageChangeRequested=function()
	{
	if(Input.isTriggered('shift'))
		{
		return true
	}
	if(TouchInput.isTriggered()&&this.isTouchedInsideFrame())
		{
		return true
	}
	return false
};
Window_ShopStatus.prototype.isTouchedInsideFrame=function()
	{
	var x=this.canvasToLocalX(TouchInput.x);
	var y=this.canvasToLocalY(TouchInput.y);
	return x>=0&&y>=0&&x<this.width&&y<this.height
};
Window_ShopStatus.prototype.changePage=function()
	{
	this._pageIndex=(this._pageIndex+1)%this.maxPages();
	this.refresh();
	SoundManager.playCursor()
};
function Window_NameEdit()
	{
	this.initialize.apply(this,arguments)
}
Window_NameEdit.prototype=Object.create(Window_Base.prototype);
Window_NameEdit.prototype.constructor=Window_NameEdit;
Window_NameEdit.prototype.initialize=function(actor,maxLength)
	{
	var width=this.windowWidth();
	var height=this.windowHeight();
	var x=(Graphics.boxWidth-width)/2;
	var y=(Graphics.boxHeight-(height+this.fittingHeight(9)+8))/2;
	Window_Base.prototype.initialize.call(this,x,y,width,height);
	this._actor=actor;
	this._name=actor.name().slice(0,this._maxLength);
	this._index=this._name.length;
	this._maxLength=maxLength;
	this._defaultName=this._name;
	this.deactivate();
	this.refresh();
	ImageManager.loadFace(actor.faceName())
};
Window_NameEdit.prototype.windowWidth=function()
	{
	return 480
};
Window_NameEdit.prototype.windowHeight=function()
	{
	return this.fittingHeight(4)
};
Window_NameEdit.prototype.name=function()
	{
	return this._name
};
Window_NameEdit.prototype.restoreDefault=function()
	{
	this._name=this._defaultName;
	this._index=this._name.length;
	this.refresh();
	return this._name.length>0
};
Window_NameEdit.prototype.add=function(ch)
	{
	if(this._index<this._maxLength)
		{
		this._name+=ch;
		this._index++;
		this.refresh();
		return true
	}
	else
		{
		return false
	}
};
Window_NameEdit.prototype.back=function()
	{
	if(this._index>0)
		{
		this._index--;
		this._name=this._name.slice(0,this._index);
		this.refresh();
		return true
	}
	else
		{
		return false
	}
};
Window_NameEdit.prototype.faceWidth=function()
	{
	return 144
};
Window_NameEdit.prototype.charWidth=function()
	{
	var text=$gameSystem.isJapanese()?'\uff21':'A';
	return this.textWidth(text)
};
Window_NameEdit.prototype.left=function()
	{
	var nameCenter=(this.contentsWidth()+this.faceWidth())/2;
	var nameWidth=(this._maxLength+1)*this.charWidth();
	return Math.min(nameCenter-nameWidth/2,this.contentsWidth()-nameWidth)
};
Window_NameEdit.prototype.itemRect=function(index)
	{
	return
		{
		x:this.left()+index*this.charWidth(),y:54,width:this.charWidth(),height:this.lineHeight()
	}
};
Window_NameEdit.prototype.underlineRect=function(index)
	{
	var rect=this.itemRect(index);
	rect.x++;
	rect.y+=rect.height-4;
	rect.width-=2;
	rect.height=2;
	return rect
};
Window_NameEdit.prototype.underlineColor=function()
	{
	return this.normalColor()
};
Window_NameEdit.prototype.drawUnderline=function(index)
	{
	var rect=this.underlineRect(index);
	var color=this.underlineColor();
	this.contents.paintOpacity=48;
	this.contents.fillRect(rect.x,rect.y,rect.width,rect.height,color);
	this.contents.paintOpacity=255
};
Window_NameEdit.prototype.drawChar=function(index)
	{
	var rect=this.itemRect(index);
	this.resetTextColor();
	this.drawText(this._name[index]||'',rect.x,rect.y)
};
Window_NameEdit.prototype.refresh=function()
	{
	this.contents.clear();
	this.drawActorFace(this._actor,0,0);
	for(var i=0;
	i<this._maxLength;
	i++)
		{
		this.drawUnderline(i)
	}
	for(var j=0;
	j<this._name.length;
	j++)
		{
		this.drawChar(j)
	}
	var rect=this.itemRect(this._index);
	this.setCursorRect(rect.x,rect.y,rect.width,rect.height)
};
function Window_NameInput()
	{
	this.initialize.apply(this,arguments)
}
Window_NameInput.prototype=Object.create(Window_Selectable.prototype);
Window_NameInput.prototype.constructor=Window_NameInput;
Window_NameInput.LATIN1=['A','B','C','D','E','a','b','c','d','e','F','G','H','I','J','f','g','h','i','j','K','L','M','N','O','k','l','m','n','o','P','Q','R','S','T','p','q','r','s','t','U','V','W','X','Y','u','v','w','x','y','Z','[',']','^','_','z','
	{
	','
}
','|','~','0','1','2','3','4','!','#','$','%','&','5','6','7','8','9','(',')','*','+','-','/','=','@','<','>',':',';
',' ','Page','OK'];
Window_NameInput.LATIN2=['Ã','É','Ã','Ó','Ú','á','é','í','ó','ú','À','È','ÃŒ','Ã’','Ù','à ','è','ì','ò','ù','Â','Ê','ÃŽ','Ô','Û','â','ê','î','ô','û','Ä','Ë','Ã','Ö','Ãœ','ä','ë','ï','ö','ü','Ä€','Ä’','Ī','ÅŒ','Ū','Ä','Ä“','Ä«','Å','Å«','Ã','Ã…','Æ','Ç','Ã','ã','Ã¥','æ','ç','ð','Ñ','Õ','Ø','Å ','Å´','ñ','õ','ø','Å¡','ŵ','Ã','Ŷ','Ÿ','Ž','Þ','ý','ÿ','Å·','ž','þ','IJ','Å’','ij','Å“','ß','«','»',' ','Page','OK'];
Window_NameInput.RUSSIA=['Ð','Б','Ð’','Г','Д','а','б','в','г','д','Е','Ð','Ж','З','И','е','Ñ‘','ж','з','и','Й','К','Л','Ðœ','Ð','й','к','л','м','н','О','П','Ð ','С','Т','о','п','Ñ€','Ñ','Ñ‚','У','Ф','Ð¥','Ц','Ч','у','Ñ„','Ñ…','ц','ч','Ш','Щ','Ъ','Ы','Ь','ш','щ','ÑŠ','Ñ‹','ÑŒ','Э','Ю','Я','^','_','Ñ','ÑŽ','Ñ','%','&','0','1','2','3','4','(',')','*','+','-','5','6','7','8','9',':',';
',' ','','OK'];
Window_NameInput.JAPAN1=['ã‚','ã„','ã†','ãˆ','ãŠ','ãŒ','ãŽ','ã','ã’','ã”','ã‹','ã','ã','ã‘','ã“','ã–','ã˜','ãš','ãœ','ãž','ã•','ã—','ã™','ã›','ã','ã ','ã¢','ã¥','ã§','ã©','ãŸ','ã¡','ã¤','ã¦','ã¨','ã°','ã³','ã¶','ã¹','ã¼','ãª','ã«','ã¬','ã­','ã®','ã±','ã´','ã·','ãº','ã½','ã¯','ã²','ãµ','ã¸','ã»','ã','ãƒ','ã…','ã‡','ã‰','ã¾','ã¿','ã‚€','ã‚','ã‚‚','ã£','ゃ','ã‚…','ょ','ã‚Ž','ã‚„','ゆ','よ','ã‚','ã‚“','ー','~','・','ï¼','☆','ら','ã‚Š','ã‚‹','ã‚Œ','ã‚','ã‚”','ã‚’',' ','カナ','決定'];
Window_NameInput.JAPAN2=['ã‚¢','イ','ウ','エ','オ','ガ','ã‚®','ã‚°','ゲ','ã‚´','ã‚«','ã‚­','ク','ケ','コ','ザ','ジ','ズ','ゼ','ゾ','サ','ã‚·','ス','ã‚»','ソ','ダ','ヂ','ヅ','デ','ド','ã‚¿','ãƒ','ツ','テ','ト','ãƒ','ビ','ブ','ベ','ボ','ナ','ニ','ヌ','ãƒ','ノ','パ','ピ','プ','ペ','ãƒ','ãƒ','ヒ','フ','ヘ','ホ','ã‚¡','ã‚£','ã‚¥','ェ','ã‚©','マ','ミ','ム','メ','モ','ッ','ャ','ュ','ョ','ヮ','ヤ','ユ','ヨ','ワ','ン','ー','~','・','ï¼','☆','ラ','リ','ル','レ','ロ','ヴ','ヲ',' ','英数','決定'];
Window_NameInput.JAPAN3=['A','ï¼¢','ï¼£','D','ï¼¥','ï½','b','c','d','ï½…','F','G','H','I','J','f','g','h','i','j','K','L','ï¼­','ï¼®','O','k','l','ï½','n','ï½','ï¼°','ï¼±','ï¼²','ï¼³','ï¼´','ï½','q','ï½’','s','ï½”','ï¼µ','V','ï¼·','X','ï¼¹','u','ï½–','ï½—','x','ï½™','Z','ï¼»','ï¼½','ï¼¾','_','z','ï½›','ï½','|','~','ï¼','1','ï¼’','3','ï¼”','ï¼','#','$','ï¼…','&','5','ï¼–','ï¼—','8','ï¼™','(',')','*','+','ï¼','ï¼','ï¼','ï¼ ','<','>',':','ï¼›',' ','ã‹ãª','決定'];
Window_NameInput.prototype.initialize=function(editWindow)
	{
	var x=editWindow.x;
	var y=editWindow.y+editWindow.height+8;
	var width=editWindow.width;
	var height=this.windowHeight();
	Window_Selectable.prototype.initialize.call(this,x,y,width,height);
	this._editWindow=editWindow;
	this._page=0;
	this._index=0;
	this.refresh();
	this.updateCursor();
	this.activate()
};
Window_NameInput.prototype.windowHeight=function()
	{
	return this.fittingHeight(9)
};
Window_NameInput.prototype.table=function()
	{
	if($gameSystem.isJapanese())
		{
		return[Window_NameInput.JAPAN1,Window_NameInput.JAPAN2,Window_NameInput.JAPAN3]
	}
	else if($gameSystem.isRussian())
		{
		return[Window_NameInput.RUSSIA]
	}
	else
		{
		return[Window_NameInput.LATIN1,Window_NameInput.LATIN2]
	}
};
Window_NameInput.prototype.maxCols=function()
	{
	return 10
};
Window_NameInput.prototype.maxItems=function()
	{
	return 90
};
Window_NameInput.prototype.character=function()
	{
	return this._index<88?this.table()[this._page][this._index]:''
};
Window_NameInput.prototype.isPageChange=function()
	{
	return this._index===88
};
Window_NameInput.prototype.isOk=function()
	{
	return this._index===89
};
Window_NameInput.prototype.itemRect=function(index)
	{
	return
		{
		x:index%10*42+Math.floor(index%10/5)*24,y:Math.floor(index/10)*this.lineHeight(),width:42,height:this.lineHeight()
	}
};
Window_NameInput.prototype.refresh=function()
	{
	var table=this.table();
	this.contents.clear();
	this.resetTextColor();
	for(var i=0;
	i<90;
	i++)
		{
		var rect=this.itemRect(i);
		rect.x+=3;
		rect.width-=6;
		this.drawText(table[this._page][i],rect.x,rect.y,rect.width,'center')
	}
};
Window_NameInput.prototype.updateCursor=function()
	{
	var rect=this.itemRect(this._index);
	this.setCursorRect(rect.x,rect.y,rect.width,rect.height)
};
Window_NameInput.prototype.isCursorMovable=function()
	{
	return this.active
};
Window_NameInput.prototype.cursorDown=function(wrap)
	{
	if(this._index<80||wrap)
		{
		this._index=(this._index+10)%90
	}
};
Window_NameInput.prototype.cursorUp=function(wrap)
	{
	if(this._index>=10||wrap)
		{
		this._index=(this._index+80)%90
	}
};
Window_NameInput.prototype.cursorRight=function(wrap)
	{
	if(this._index%10<9)
		{
		this._index++
	}
	else if(wrap)
		{
		this._index-=9
	}
};
Window_NameInput.prototype.cursorLeft=function(wrap)
	{
	if(this._index%10>0)
		{
		this._index--
	}
	else if(wrap)
		{
		this._index+=9
	}
};
Window_NameInput.prototype.cursorPagedown=function()
	{
	this._page=(this._page+1)%this.table().length;
	this.refresh()
};
Window_NameInput.prototype.cursorPageup=function()
	{
	this._page=(this._page+this.table().length-1)%this.table().length;
	this.refresh()
};
Window_NameInput.prototype.processCursorMove=function()
	{
	var lastPage=this._page;
	Window_Selectable.prototype.processCursorMove.call(this);
	this.updateCursor();
	if(this._page!==lastPage)
		{
		SoundManager.playCursor()
	}
};
Window_NameInput.prototype.processHandling=function()
	{
	if(this.isOpen()&&this.active)
		{
		if(Input.isTriggered('shift'))
			{
			this.processJump()
		}
		if(Input.isRepeated('cancel'))
			{
			this.processBack()
		}
		if(Input.isRepeated('ok'))
			{
			this.processOk()
		}
	}
};
Window_NameInput.prototype.isCancelEnabled=function()
	{
	return true
};
Window_NameInput.prototype.processCancel=function()
	{
	this.processBack()
};
Window_NameInput.prototype.processJump=function()
	{
	if(this._index!==89)
		{
		this._index=89;
		SoundManager.playCursor()
	}
};
Window_NameInput.prototype.processBack=function()
	{
	if(this._editWindow.back())
		{
		SoundManager.playCancel()
	}
};
Window_NameInput.prototype.processOk=function()
	{
	if(this.character())
		{
		this.onNameAdd()
	}
	else if(this.isPageChange())
		{
		SoundManager.playOk();
		this.cursorPagedown()
	}
	else if(this.isOk())
		{
		this.onNameOk()
	}
};
Window_NameInput.prototype.onNameAdd=function()
	{
	if(this._editWindow.add(this.character()))
		{
		SoundManager.playOk()
	}
	else
		{
		SoundManager.playBuzzer()
	}
};
Window_NameInput.prototype.onNameOk=function()
	{
	if(this._editWindow.name()==='')
		{
		if(this._editWindow.restoreDefault())
			{
			SoundManager.playOk()
		}
		else
			{
			SoundManager.playBuzzer()
		}
	}
	else
		{
		SoundManager.playOk();
		this.callOkHandler()
	}
};
function Window_ChoiceList()
	{
	this.initialize.apply(this,arguments)
}
Window_ChoiceList.prototype=Object.create(Window_Command.prototype);
Window_ChoiceList.prototype.constructor=Window_ChoiceList;
Window_ChoiceList.prototype.initialize=function(messageWindow)
	{
	this._messageWindow=messageWindow;
	Window_Command.prototype.initialize.call(this,0,0);
	this.openness=0;
	this.deactivate();
	this._background=0
};
Window_ChoiceList.prototype.start=function()
	{
	this.updatePlacement();
	this.updateBackground();
	this.refresh();
	this.selectDefault();
	this.open();
	this.activate()
};
Window_ChoiceList.prototype.selectDefault=function()
	{
	this.select($gameMessage.choiceDefaultType())
};
Window_ChoiceList.prototype.updatePlacement=function()
	{
	var positionType=$gameMessage.choicePositionType();
	var messageY=this._messageWindow.y;
	this.width=this.windowWidth();
	this.height=this.windowHeight();
	switch(positionType)
		{
		case 0:this.x=0;
		break;
		case 1:this.x=(Graphics.boxWidth-this.width)/2;
		break;
		case 2:this.x=Graphics.boxWidth-this.width;
		break
	}
	if(messageY>=Graphics.boxHeight/2)
		{
		this.y=messageY-this.height
	}
	else
		{
		this.y=messageY+this._messageWindow.height
	}
};
Window_ChoiceList.prototype.updateBackground=function()
	{
	this._background=$gameMessage.choiceBackground();
	this.setBackgroundType(this._background)
};
Window_ChoiceList.prototype.windowWidth=function()
	{
	var width=this.maxChoiceWidth()+this.padding*2;
	return Math.min(width,Graphics.boxWidth)
};
Window_ChoiceList.prototype.numVisibleRows=function()
	{
	var messageY=this._messageWindow.y;
	var messageHeight=this._messageWindow.height;
	var centerY=Graphics.boxHeight/2;
	var choices=$gameMessage.choices();
	var numLines=choices.length;
	var maxLines=8;
	if(messageY<centerY&&messageY+messageHeight>centerY)
		{
		maxLines=4
	}
	if(numLines>maxLines)
		{
		numLines=maxLines
	}
	return numLines
};
Window_ChoiceList.prototype.maxChoiceWidth=function()
	{
	var maxWidth=96;
	var choices=$gameMessage.choices();
	for(var i=0;
	i<choices.length;
	i++)
		{
		var choiceWidth=this.textWidthEx(choices[i])+this.textPadding()*2;
		if(maxWidth<choiceWidth)
			{
			maxWidth=choiceWidth
		}
	}
	return maxWidth
};
Window_ChoiceList.prototype.textWidthEx=function(text)
	{
	return this.drawTextEx(text,0,this.contents.height)
};
Window_ChoiceList.prototype.contentsHeight=function()
	{
	return this.maxItems()*this.itemHeight()
};
Window_ChoiceList.prototype.makeCommandList=function()
	{
	var choices=$gameMessage.choices();
	for(var i=0;
	i<choices.length;
	i++)
		{
		this.addCommand(choices[i],'choice')
	}
};
Window_ChoiceList.prototype.drawItem=function(index)
	{
	var rect=this.itemRectForText(index);
	this.drawTextEx(this.commandName(index),rect.x,rect.y)
};
Window_ChoiceList.prototype.isCancelEnabled=function()
	{
	return $gameMessage.choiceCancelType()!==-1
};
Window_ChoiceList.prototype.isOkTriggered=function()
	{
	return Input.isTriggered('ok')
};
Window_ChoiceList.prototype.callOkHandler=function()
	{
	$gameMessage.onChoice(this.index());
	this._messageWindow.terminateMessage();
	this.close()
};
Window_ChoiceList.prototype.callCancelHandler=function()
	{
	$gameMessage.onChoice($gameMessage.choiceCancelType());
	this._messageWindow.terminateMessage();
	this.close()
};
function Window_NumberInput()
	{
	this.initialize.apply(this,arguments)
}
Window_NumberInput.prototype=Object.create(Window_Selectable.prototype);
Window_NumberInput.prototype.constructor=Window_NumberInput;
Window_NumberInput.prototype.initialize=function(messageWindow)
	{
	this._messageWindow=messageWindow;
	Window_Selectable.prototype.initialize.call(this,0,0,0,0);
	this._number=0;
	this._maxDigits=1;
	this.openness=0;
	this.createButtons();
	this.deactivate()
};
Window_NumberInput.prototype.start=function()
	{
	this._maxDigits=$gameMessage.numInputMaxDigits();
	this._number=$gameVariables.value($gameMessage.numInputVariableId());
	this._number=this._number.clamp(0,Math.pow(10,this._maxDigits)-1);
	this.updatePlacement();
	this.placeButtons();
	this.updateButtonsVisiblity();
	this.createContents();
	this.refresh();
	this.open();
	this.activate();
	this.select(0)
};
Window_NumberInput.prototype.updatePlacement=function()
	{
	var messageY=this._messageWindow.y;
	var spacing=8;
	this.width=this.windowWidth();
	this.height=this.windowHeight();
	this.x=(Graphics.boxWidth-this.width)/2;
	if(messageY>=Graphics.boxHeight/2)
		{
		this.y=messageY-this.height-spacing
	}
	else
		{
		this.y=messageY+this._messageWindow.height+spacing
	}
};
Window_NumberInput.prototype.windowWidth=function()
	{
	return this.maxCols()*this.itemWidth()+this.padding*2
};
Window_NumberInput.prototype.windowHeight=function()
	{
	return this.fittingHeight(1)
};
Window_NumberInput.prototype.maxCols=function()
	{
	return this._maxDigits
};
Window_NumberInput.prototype.maxItems=function()
	{
	return this._maxDigits
};
Window_NumberInput.prototype.spacing=function()
	{
	return 0
};
Window_NumberInput.prototype.itemWidth=function()
	{
	return 32
};
Window_NumberInput.prototype.createButtons=function()
	{
	var bitmap=ImageManager.loadSystem('ButtonSet');
	var buttonWidth=48;
	var buttonHeight=48;
	this._buttons=[];
	for(var i=0;
	i<3;
	i++)
		{
		var button=new Sprite_Button();
		var x=buttonWidth*[1,2,4][i];
		var w=buttonWidth*(i===2?2:1);
		button.bitmap=bitmap;
		button.setColdFrame(x,0,w,buttonHeight);
		button.setHotFrame(x,buttonHeight,w,buttonHeight);
		button.visible=false;
		this._buttons.push(button);
		this.addChild(button)
	}
	this._buttons[0].setClickHandler(this.onButtonDown.bind(this));
	this._buttons[1].setClickHandler(this.onButtonUp.bind(this));
	this._buttons[2].setClickHandler(this.onButtonOk.bind(this))
};
Window_NumberInput.prototype.placeButtons=function()
	{
	var numButtons=this._buttons.length;
	var spacing=16;
	var totalWidth=-spacing;
	for(var i=0;
	i<numButtons;
	i++)
		{
		totalWidth+=this._buttons[i].width+spacing
	}
	var x=(this.width-totalWidth)/2;
	for(var j=0;
	j<numButtons;
	j++)
		{
		var button=this._buttons[j];
		button.x=x;
		button.y=this.buttonY();
		x+=button.width+spacing
	}
};
Window_NumberInput.prototype.updateButtonsVisiblity=function()
	{
	if(TouchInput.date>Input.date)
		{
		this.showButtons()
	}
	else
		{
		this.hideButtons()
	}
};
Window_NumberInput.prototype.showButtons=function()
	{
	for(var i=0;
	i<this._buttons.length;
	i++)
		{
		this._buttons[i].visible=true
	}
};
Window_NumberInput.prototype.hideButtons=function()
	{
	for(var i=0;
	i<this._buttons.length;
	i++)
		{
		this._buttons[i].visible=false
	}
};
Window_NumberInput.prototype.buttonY=function()
	{
	var spacing=8;
	if(this._messageWindow.y>=Graphics.boxHeight/2)
		{
		return 0-this._buttons[0].height-spacing
	}
	else
		{
		return this.height+spacing
	}
};
Window_NumberInput.prototype.update=function()
	{
	Window_Selectable.prototype.update.call(this);
	this.processDigitChange()
};
Window_NumberInput.prototype.processDigitChange=function()
	{
	if(this.isOpenAndActive())
		{
		if(Input.isRepeated('up'))
			{
			this.changeDigit(true)
		}
		else if(Input.isRepeated('down'))
			{
			this.changeDigit(false)
		}
	}
};
Window_NumberInput.prototype.changeDigit=function(up)
	{
	var index=this.index();
	var place=Math.pow(10,this._maxDigits-1-index);
	var n=Math.floor(this._number/place)%10;
	this._number-=n*place;
	if(up)
		{
		n=(n+1)%10
	}
	else
		{
		n=(n+9)%10
	}
	this._number+=n*place;
	this.refresh();
	SoundManager.playCursor()
};
Window_NumberInput.prototype.isTouchOkEnabled=function()
	{
	return false
};
Window_NumberInput.prototype.isOkEnabled=function()
	{
	return true
};
Window_NumberInput.prototype.isCancelEnabled=function()
	{
	return false
};
Window_NumberInput.prototype.isOkTriggered=function()
	{
	return Input.isTriggered('ok')
};
Window_NumberInput.prototype.processOk=function()
	{
	SoundManager.playOk();
	$gameVariables.setValue($gameMessage.numInputVariableId(),this._number);
	this._messageWindow.terminateMessage();
	this.updateInputData();
	this.deactivate();
	this.close()
};
Window_NumberInput.prototype.drawItem=function(index)
	{
	var rect=this.itemRect(index);
	var align='center';
	var s=this._number.padZero(this._maxDigits);
	var c=s.slice(index,index+1);
	this.resetTextColor();
	this.drawText(c,rect.x,rect.y,rect.width,align)
};
Window_NumberInput.prototype.onButtonUp=function()
	{
	this.changeDigit(true)
};
Window_NumberInput.prototype.onButtonDown=function()
	{
	this.changeDigit(false)
};
Window_NumberInput.prototype.onButtonOk=function()
	{
	this.processOk();
	this.hideButtons()
};
function Window_EventItem()
	{
	this.initialize.apply(this,arguments)
}
Window_EventItem.prototype=Object.create(Window_ItemList.prototype);
Window_EventItem.prototype.constructor=Window_EventItem;
Window_EventItem.prototype.initialize=function(messageWindow)
	{
	this._messageWindow=messageWindow;
	var width=Graphics.boxWidth;
	var height=this.windowHeight();
	Window_ItemList.prototype.initialize.call(this,0,0,width,height);
	this.openness=0;
	this.deactivate();
	this.setHandler('ok',this.onOk.bind(this));
	this.setHandler('cancel',this.onCancel.bind(this))
};
Window_EventItem.prototype.windowHeight=function()
	{
	return this.fittingHeight(this.numVisibleRows())
};
Window_EventItem.prototype.numVisibleRows=function()
	{
	return 4
};
Window_EventItem.prototype.start=function()
	{
	this.refresh();
	this.updatePlacement();
	this.select(0);
	this.open();
	this.activate()
};
Window_EventItem.prototype.updatePlacement=function()
	{
	if(this._messageWindow.y>=Graphics.boxHeight/2)
		{
		this.y=0
	}
	else
		{
		this.y=Graphics.boxHeight-this.height
	}
};
Window_EventItem.prototype.includes=function(item)
	{
	var itypeId=$gameMessage.itemChoiceItypeId();
	return DataManager.isItem(item)&&item.itypeId===itypeId
};
Window_EventItem.prototype.isEnabled=function(item)
	{
	return true
};
Window_EventItem.prototype.onOk=function()
	{
	var item=this.item();
	var itemId=item?item.id:0;
	$gameVariables.setValue($gameMessage.itemChoiceVariableId(),itemId);
	this._messageWindow.terminateMessage();
	this.close()
};
Window_EventItem.prototype.onCancel=function()
	{
	$gameVariables.setValue($gameMessage.itemChoiceVariableId(),0);
	this._messageWindow.terminateMessage();
	this.close()
};
function Window_Message()
	{
	this.initialize.apply(this,arguments)
}
Window_Message.prototype=Object.create(Window_Base.prototype);
Window_Message.prototype.constructor=Window_Message;
Window_Message.prototype.initialize=function()
	{
	var width=this.windowWidth();
	var height=this.windowHeight();
	var x=(Graphics.boxWidth-width)/2;
	Window_Base.prototype.initialize.call(this,x,0,width,height);
	this.openness=0;
	this.initMembers();
	this.createSubWindows();
	this.updatePlacement()
};
Window_Message.prototype.initMembers=function()
	{
	this._background=0;
	this._positionType=2;
	this._waitCount=0;
	this._faceBitmap=null;
	this._textState=null;
	this.clearFlags()
};
Window_Message.prototype.subWindows=function()
	{
	return[this._goldWindow,this._choiceWindow,this._numberWindow,this._itemWindow]
};
Window_Message.prototype.createSubWindows=function()
	{
	this._goldWindow=new Window_Gold(0,0);
	this._goldWindow.x=Graphics.boxWidth-this._goldWindow.width;
	this._goldWindow.openness=0;
	this._choiceWindow=new Window_ChoiceList(this);
	this._numberWindow=new Window_NumberInput(this);
	this._itemWindow=new Window_EventItem(this)
};
Window_Message.prototype.windowWidth=function()
	{
	return Graphics.boxWidth
};
Window_Message.prototype.windowHeight=function()
	{
	return this.fittingHeight(this.numVisibleRows())
};
Window_Message.prototype.clearFlags=function()
	{
	this._showFast=false;
	this._lineShowFast=false;
	this._pauseSkip=false
};
Window_Message.prototype.numVisibleRows=function()
	{
	return 4
};
Window_Message.prototype.update=function()
	{
	this.checkToNotClose();
	Window_Base.prototype.update.call(this);
	while(!this.isOpening()&&!this.isClosing())
		{
		if(this.updateWait())
			{
			return
		}
		else if(this.updateLoading())
			{
			return
		}
		else if(this.updateInput())
			{
			return
		}
		else if(this.updateMessage())
			{
			return
		}
		else if(this.canStart())
			{
			this.startMessage()
		}
		else
			{
			this.startInput();
			return
		}
	}
};
Window_Message.prototype.checkToNotClose=function()
	{
	if(this.isClosing()&&this.isOpen())
		{
		if(this.doesContinue())
			{
			this.open()
		}
	}
};
Window_Message.prototype.canStart=function()
	{
	return $gameMessage.hasText()&&!$gameMessage.scrollMode()
};
Window_Message.prototype.startMessage=function()
	{
	this._textState=
		{
	};
	this._textState.index=0;
	this._textState.text=this.convertEscapeCharacters($gameMessage.allText());
	this.newPage(this._textState);
	this.updatePlacement();
	this.updateBackground();
	this.open()
};
Window_Message.prototype.updatePlacement=function()
	{
	this._positionType=$gameMessage.positionType();
	this.y=this._positionType*(Graphics.boxHeight-this.height)/2;
	this._goldWindow.y=this.y>0?0:Graphics.boxHeight-this._goldWindow.height
};
Window_Message.prototype.updateBackground=function()
	{
	this._background=$gameMessage.background();
	this.setBackgroundType(this._background)
};
Window_Message.prototype.terminateMessage=function()
	{
	this.close();
	this._goldWindow.close();
	$gameMessage.clear()
};
Window_Message.prototype.updateWait=function()
	{
	if(this._waitCount>0)
		{
		this._waitCount--;
		return true
	}
	else
		{
		return false
	}
};
Window_Message.prototype.updateLoading=function()
	{
	if(this._faceBitmap)
		{
		if(ImageManager.isReady())
			{
			this.drawMessageFace();
			this._faceBitmap=null;
			return false
		}
		else
			{
			return true
		}
	}
	else
		{
		return false
	}
};
Window_Message.prototype.updateInput=function()
	{
	if(this.isAnySubWindowActive())
		{
		return true
	}
	if(this.pause)
		{
		if(this.isTriggered())
			{
			Input.update();
			this.pause=false;
			if(!this._textState)
				{
				this.terminateMessage()
			}
		}
		return true
	}
	return false
};
Window_Message.prototype.isAnySubWindowActive=function()
	{
	return(this._choiceWindow.active||this._numberWindow.active||this._itemWindow.active)
};
Window_Message.prototype.updateMessage=function()
	{
	if(this._textState)
		{
		while(!this.isEndOfText(this._textState))
			{
			if(this.needsNewPage(this._textState))
				{
				this.newPage(this._textState)
			}
			this.updateShowFast();
			this.processCharacter(this._textState);
			if(!this._showFast&&!this._lineShowFast)
				{
				break
			}
			if(this.pause||this._waitCount>0)
				{
				break
			}
		}
		if(this.isEndOfText(this._textState))
			{
			this.onEndOfText()
		}
		return true
	}
	else
		{
		return false
	}
};
Window_Message.prototype.onEndOfText=function()
	{
	if(!this.startInput())
		{
		if(!this._pauseSkip)
			{
			this.startPause()
		}
		else
			{
			this.terminateMessage()
		}
	}
	this._textState=null
};
Window_Message.prototype.startInput=function()
	{
	if($gameMessage.isChoice())
		{
		this._choiceWindow.start();
		return true
	}
	else if($gameMessage.isNumberInput())
		{
		this._numberWindow.start();
		return true
	}
	else if($gameMessage.isItemChoice())
		{
		this._itemWindow.start();
		return true
	}
	else
		{
		return false
	}
};
Window_Message.prototype.isTriggered=function()
	{
	return(Input.isRepeated('ok')||Input.isRepeated('cancel')||TouchInput.isRepeated())
};
Window_Message.prototype.doesContinue=function()
	{
	return($gameMessage.hasText()&&!$gameMessage.scrollMode()&&!this.areSettingsChanged())
};
Window_Message.prototype.areSettingsChanged=function()
	{
	return(this._background!==$gameMessage.background()||this._positionType!==$gameMessage.positionType())
};
Window_Message.prototype.updateShowFast=function()
	{
	if(this.isTriggered())
		{
		this._showFast=true
	}
};
Window_Message.prototype.newPage=function(textState)
	{
	this.contents.clear();
	this.resetFontSettings();
	this.clearFlags();
	this.loadMessageFace();
	textState.x=this.newLineX();
	textState.y=0;
	textState.left=this.newLineX();
	textState.height=this.calcTextHeight(textState,false)
};
Window_Message.prototype.loadMessageFace=function()
	{
	this._faceBitmap=ImageManager.loadFace($gameMessage.faceName())
};
Window_Message.prototype.drawMessageFace=function()
	{
	this.drawFace($gameMessage.faceName(),$gameMessage.faceIndex(),0,0)
};
Window_Message.prototype.newLineX=function()
	{
	return $gameMessage.faceName()===''?0:168
};
Window_Message.prototype.processNewLine=function(textState)
	{
	this._lineShowFast=false;
	Window_Base.prototype.processNewLine.call(this,textState);
	if(this.needsNewPage(textState))
		{
		this.startPause()
	}
};
Window_Message.prototype.processNewPage=function(textState)
	{
	Window_Base.prototype.processNewPage.call(this,textState);
	if(textState.text[textState.index]==='\n')
		{
		textState.index++
	}
	textState.y=this.contents.height;
	this.startPause()
};
Window_Message.prototype.isEndOfText=function(textState)
	{
	return textState.index>=textState.text.length
};
Window_Message.prototype.needsNewPage=function(textState)
	{
	return(!this.isEndOfText(textState)&&textState.y+textState.height>this.contents.height)
};
Window_Message.prototype.processEscapeCharacter=function(code,textState)
	{
	switch(code)
		{
		case'$':this._goldWindow.open();
		break;
		case'.':this.startWait(15);
		break;
		case'|':this.startWait(60);
		break;
		case'!':this.startPause();
		break;
		case'>':this._lineShowFast=true;
		break;
		case'<':this._lineShowFast=false;
		break;
		case'^':this._pauseSkip=true;
		break;
		default:Window_Base.prototype.processEscapeCharacter.call(this,code,textState);
		break
	}
};
Window_Message.prototype.startWait=function(count)
	{
	this._waitCount=count
};
Window_Message.prototype.startPause=function()
	{
	this.startWait(10);
	this.pause=true
};
function Window_ScrollText()
	{
	this.initialize.apply(this,arguments)
}
Window_ScrollText.prototype=Object.create(Window_Base.prototype);
Window_ScrollText.prototype.constructor=Window_ScrollText;
Window_ScrollText.prototype.initialize=function()
	{
	var width=Graphics.boxWidth;
	var height=Graphics.boxHeight;
	Window_Base.prototype.initialize.call(this,0,0,width,height);
	this.opacity=0;
	this.hide();
	this._text='';
	this._allTextHeight=0
};
Window_ScrollText.prototype.update=function()
	{
	Window_Base.prototype.update.call(this);
	if($gameMessage.scrollMode())
		{
		if(this._text)
			{
			this.updateMessage()
		}
		if(!this._text&&$gameMessage.hasText())
			{
			this.startMessage()
		}
	}
};
Window_ScrollText.prototype.startMessage=function()
	{
	this._text=$gameMessage.allText();
	this.refresh();
	this.show()
};
Window_ScrollText.prototype.refresh=function()
	{
	var textState=
		{
		index:0
	};
	textState.text=this.convertEscapeCharacters(this._text);
	this.resetFontSettings();
	this._allTextHeight=this.calcTextHeight(textState,true);
	this.createContents();
	this.origin.y=-this.height;
	this.drawTextEx(this._text,this.textPadding(),1)
};
Window_ScrollText.prototype.contentsHeight=function()
	{
	return Math.max(this._allTextHeight,1)
};
Window_ScrollText.prototype.updateMessage=function()
	{
	this.origin.y+=this.scrollSpeed();
	if(this.origin.y>=this.contents.height)
		{
		this.terminateMessage()
	}
};
Window_ScrollText.prototype.scrollSpeed=function()
	{
	var speed=$gameMessage.scrollSpeed()/2;
	if(this.isFastForward())
		{
		speed*=this.fastForwardRate()
	}
	return speed
};
Window_ScrollText.prototype.isFastForward=function()
	{
	if($gameMessage.scrollNoFast())
		{
		return false
	}
	else
		{
		return(Input.isPressed('ok')||Input.isPressed('shift')||TouchInput.isPressed())
	}
};
Window_ScrollText.prototype.fastForwardRate=function()
	{
	return 3
};
Window_ScrollText.prototype.terminateMessage=function()
	{
	this._text=null;
	$gameMessage.clear();
	this.hide()
};
function Window_MapName()
	{
	this.initialize.apply(this,arguments)
}
Window_MapName.prototype=Object.create(Window_Base.prototype);
Window_MapName.prototype.constructor=Window_MapName;
Window_MapName.prototype.initialize=function()
	{
	var wight=this.windowWidth();
	var height=this.windowHeight();
	Window_Base.prototype.initialize.call(this,0,0,wight,height);
	this.opacity=0;
	this.contentsOpacity=0;
	this._showCount=0;
	this.refresh()
};
Window_MapName.prototype.windowWidth=function()
	{
	return 360
};
Window_MapName.prototype.windowHeight=function()
	{
	return this.fittingHeight(1)
};
Window_MapName.prototype.update=function()
	{
	Window_Base.prototype.update.call(this);
	if(this._showCount>0&&$gameMap.isNameDisplayEnabled())
		{
		this.updateFadeIn();
		this._showCount--
	}
	else
		{
		this.updateFadeOut()
	}
};
Window_MapName.prototype.updateFadeIn=function()
	{
	this.contentsOpacity+=16
};
Window_MapName.prototype.updateFadeOut=function()
	{
	this.contentsOpacity-=16
};
Window_MapName.prototype.open=function()
	{
	this.refresh();
	this._showCount=150
};
Window_MapName.prototype.close=function()
	{
	this._showCount=0
};
Window_MapName.prototype.refresh=function()
	{
	this.contents.clear();
	if($gameMap.displayName())
		{
		var width=this.contentsWidth();
		this.drawBackground(0,0,width,this.lineHeight());
		this.drawText($gameMap.displayName(),0,0,width,'center')
	}
};
Window_MapName.prototype.drawBackground=function(x,y,width,height)
	{
	var color1=this.dimColor1();
	var color2=this.dimColor2();
	this.contents.gradientFillRect(x,y,width/2,height,color2,color1);
	this.contents.gradientFillRect(x+width/2,y,width/2,height,color1,color2)
};
function Window_BattleLog()
	{
	this.initialize.apply(this,arguments)
}
Window_BattleLog.prototype=Object.create(Window_Selectable.prototype);
Window_BattleLog.prototype.constructor=Window_BattleLog;
Window_BattleLog.prototype.initialize=function()
	{
	var width=this.windowWidth();
	var height=this.windowHeight();
	Window_Selectable.prototype.initialize.call(this,0,0,width,height);
	this.opacity=0;
	this._lines=[];
	this._methods=[];
	this._waitCount=0;
	this._waitMode='';
	this._baseLineStack=[];
	this._spriteset=null;
	this.createBackBitmap();
	this.createBackSprite();
	this.refresh()
};
Window_BattleLog.prototype.setSpriteset=function(spriteset)
	{
	this._spriteset=spriteset
};
Window_BattleLog.prototype.windowWidth=function()
	{
	return Graphics.boxWidth
};
Window_BattleLog.prototype.windowHeight=function()
	{
	return this.fittingHeight(this.maxLines())
};
Window_BattleLog.prototype.maxLines=function()
	{
	return 10
};
Window_BattleLog.prototype.createBackBitmap=function()
	{
	this._backBitmap=new Bitmap(this.width,this.height)
};
Window_BattleLog.prototype.createBackSprite=function()
	{
	this._backSprite=new Sprite();
	this._backSprite.bitmap=this._backBitmap;
	this._backSprite.y=this.y;
	this.addChildToBack(this._backSprite)
};
Window_BattleLog.prototype.numLines=function()
	{
	return this._lines.length
};
Window_BattleLog.prototype.messageSpeed=function()
	{
	return 16
};
Window_BattleLog.prototype.isBusy=function()
	{
	return this._waitCount>0||this._waitMode||this._methods.length>0
};
Window_BattleLog.prototype.update=function()
	{
	if(!this.updateWait())
		{
		this.callNextMethod()
	}
};
Window_BattleLog.prototype.updateWait=function()
	{
	return this.updateWaitCount()||this.updateWaitMode()
};
Window_BattleLog.prototype.updateWaitCount=function()
	{
	if(this._waitCount>0)
		{
		this._waitCount-=this.isFastForward()?3:1;
		if(this._waitCount<0)
			{
			this._waitCount=0
		}
		return true
	}
	return false
};
Window_BattleLog.prototype.updateWaitMode=function()
	{
	var waiting=false;
	switch(this._waitMode)
		{
		case'effect':waiting=this._spriteset.isEffecting();
		break;
		case'movement':waiting=this._spriteset.isAnyoneMoving();
		break
	}
	if(!waiting)
		{
		this._waitMode=''
	}
	return waiting
};
Window_BattleLog.prototype.setWaitMode=function(waitMode)
	{
	this._waitMode=waitMode
};
Window_BattleLog.prototype.callNextMethod=function()
	{
	if(this._methods.length>0)
		{
		var method=this._methods.shift();
		if(method.name&&this[method.name])
			{
			this[method.name].apply(this,method.params)
		}
		else
			{
			throw new Error('Method not found: '+method.name)
		}
	}
};
Window_BattleLog.prototype.isFastForward=function()
	{
	return(Input.isLongPressed('ok')||Input.isPressed('shift')||TouchInput.isLongPressed())
};
Window_BattleLog.prototype.push=function(methodName)
	{
	var methodArgs=Array.prototype.slice.call(arguments,1);
	this._methods.push(
		{
		name:methodName,params:methodArgs
	}
	)
};
Window_BattleLog.prototype.clear=function()
	{
	this._lines=[];
	this._baseLineStack=[];
	this.refresh()
};
Window_BattleLog.prototype.wait=function()
	{
	this._waitCount=this.messageSpeed()
};
Window_BattleLog.prototype.waitForEffect=function()
	{
	this.setWaitMode('effect')
};
Window_BattleLog.prototype.waitForMovement=function()
	{
	this.setWaitMode('movement')
};
Window_BattleLog.prototype.addText=function(text)
	{
	this._lines.push(text);
	this.refresh();
	this.wait()
};
Window_BattleLog.prototype.pushBaseLine=function()
	{
	this._baseLineStack.push(this._lines.length)
};
Window_BattleLog.prototype.popBaseLine=function()
	{
	var baseLine=this._baseLineStack.pop();
	while(this._lines.length>baseLine)
		{
		this._lines.pop()
	}
};
Window_BattleLog.prototype.waitForNewLine=function()
	{
	var baseLine=0;
	if(this._baseLineStack.length>0)
		{
		baseLine=this._baseLineStack[this._baseLineStack.length-1]
	}
	if(this._lines.length>baseLine)
		{
		this.wait()
	}
};
Window_BattleLog.prototype.popupDamage=function(target)
	{
	target.startDamagePopup()
};
Window_BattleLog.prototype.performActionStart=function(subject,action)
	{
	subject.performActionStart(action)
};
Window_BattleLog.prototype.performAction=function(subject,action)
	{
	subject.performAction(action)
};
Window_BattleLog.prototype.performActionEnd=function(subject)
	{
	subject.performActionEnd()
};
Window_BattleLog.prototype.performDamage=function(target)
	{
	target.performDamage()
};
Window_BattleLog.prototype.performMiss=function(target)
	{
	target.performMiss()
};
Window_BattleLog.prototype.performRecovery=function(target)
	{
	target.performRecovery()
};
Window_BattleLog.prototype.performEvasion=function(target)
	{
	target.performEvasion()
};
Window_BattleLog.prototype.performMagicEvasion=function(target)
	{
	target.performMagicEvasion()
};
Window_BattleLog.prototype.performCounter=function(target)
	{
	target.performCounter()
};
Window_BattleLog.prototype.performReflection=function(target)
	{
	target.performReflection()
};
Window_BattleLog.prototype.performSubstitute=function(substitute,target)
	{
	substitute.performSubstitute(target)
};
Window_BattleLog.prototype.performCollapse=function(target)
	{
	target.performCollapse()
};
Window_BattleLog.prototype.showAnimation=function(subject,targets,animationId)
	{
	if(animationId<0)
		{
		this.showAttackAnimation(subject,targets)
	}
	else
		{
		this.showNormalAnimation(targets,animationId)
	}
};
Window_BattleLog.prototype.showAttackAnimation=function(subject,targets)
	{
	if(subject.isActor())
		{
		this.showActorAttackAnimation(subject,targets)
	}
	else
		{
		this.showEnemyAttackAnimation(subject,targets)
	}
};
Window_BattleLog.prototype.showActorAttackAnimation=function(subject,targets)
	{
	this.showNormalAnimation(targets,subject.attackAnimationId1(),false);
	this.showNormalAnimation(targets,subject.attackAnimationId2(),true)
};
Window_BattleLog.prototype.showEnemyAttackAnimation=function(subject,targets)
	{
	SoundManager.playEnemyAttack()
};
Window_BattleLog.prototype.showNormalAnimation=function(targets,animationId,mirror)
	{
	var animation=$dataAnimations[animationId];
	if(animation)
		{
		var delay=this.animationBaseDelay();
		var nextDelay=this.animationNextDelay();
		targets.forEach(function(target)
			{
			target.startAnimation(animationId,mirror,delay);
			delay+=nextDelay
		}
		)
	}
};
Window_BattleLog.prototype.animationBaseDelay=function()
	{
	return 8
};
Window_BattleLog.prototype.animationNextDelay=function()
	{
	return 12
};
Window_BattleLog.prototype.refresh=function()
	{
	this.drawBackground();
	this.contents.clear();
	for(var i=0;
	i<this._lines.length;
	i++)
		{
		this.drawLineText(i)
	}
};
Window_BattleLog.prototype.drawBackground=function()
	{
	var rect=this.backRect();
	var color=this.backColor();
	this._backBitmap.clear();
	this._backBitmap.paintOpacity=this.backPaintOpacity();
	this._backBitmap.fillRect(rect.x,rect.y,rect.width,rect.height,color);
	this._backBitmap.paintOpacity=255
};
Window_BattleLog.prototype.backRect=function()
	{
	return
		{
		x:0,y:this.padding,width:this.width,height:this.numLines()*this.lineHeight()
	}
};
Window_BattleLog.prototype.backColor=function()
	{
	return'#000000'
};
Window_BattleLog.prototype.backPaintOpacity=function()
	{
	return 64
};
Window_BattleLog.prototype.drawLineText=function(index)
	{
	var rect=this.itemRectForText(index);
	this.contents.clearRect(rect.x,rect.y,rect.width,rect.height);
	this.drawTextEx(this._lines[index],rect.x,rect.y,rect.width)
};
Window_BattleLog.prototype.startTurn=function()
	{
	this.push('wait')
};
Window_BattleLog.prototype.startAction=function(subject,action,targets)
	{
	var item=action.item();
	this.push('performActionStart',subject,action);
	this.push('waitForMovement');
	this.push('performAction',subject,action);
	this.push('showAnimation',subject,targets.clone(),item.animationId);
	this.displayAction(subject,item)
};
Window_BattleLog.prototype.endAction=function(subject)
	{
	this.push('waitForNewLine');
	this.push('clear');
	this.push('performActionEnd',subject)
};
Window_BattleLog.prototype.displayCurrentState=function(subject)
	{
	var stateText=subject.mostImportantStateText();
	if(stateText)
		{
		this.push('addText',subject.name()+stateText);
		this.push('wait');
		this.push('clear')
	}
};
Window_BattleLog.prototype.displayRegeneration=function(subject)
	{
	this.push('popupDamage',subject)
};
Window_BattleLog.prototype.displayAction=function(subject,item)
	{
	if(DataManager.isSkill(item))
		{
		if(item.message1)
			{
			this.push('addText',subject.name()+item.message1.format(item.name))
		}
		if(item.message2)
			{
			this.push('addText',item.message2.format(item.name))
		}
	}
	else
		{
		this.push('addText',TextManager.useItem.format(subject.name(),item.name))
	}
};
Window_BattleLog.prototype.displayCounter=function(target)
	{
	this.push('performCounter',target);
	this.push('addText',TextManager.counterAttack.format(target.name()))
};
Window_BattleLog.prototype.displayReflection=function(target)
	{
	this.push('performReflection',target);
	this.push('addText',TextManager.magicReflection.format(target.name()))
};
Window_BattleLog.prototype.displaySubstitute=function(substitute,target)
	{
	var substName=substitute.name();
	this.push('performSubstitute',substitute,target);
	this.push('addText',TextManager.substitute.format(substName,target.name()))
};
Window_BattleLog.prototype.displayActionResults=function(subject,target)
	{
	if(target.result().used)
		{
		this.push('pushBaseLine');
		this.displayCritical(target);
		this.push('popupDamage',target);
		this.push('popupDamage',subject);
		this.displayDamage(target);
		this.displayAffectedStatus(target);
		this.displayFailure(target);
		this.push('waitForNewLine');
		this.push('popBaseLine')
	}
};
Window_BattleLog.prototype.displayFailure=function(target)
	{
	if(target.result().isHit()&&!target.result().success)
		{
		this.push('addText',TextManager.actionFailure.format(target.name()))
	}
};
Window_BattleLog.prototype.displayCritical=function(target)
	{
	if(target.result().critical)
		{
		if(target.isActor())
			{
			this.push('addText',TextManager.criticalToActor)
		}
		else
			{
			this.push('addText',TextManager.criticalToEnemy)
		}
	}
};
Window_BattleLog.prototype.displayDamage=function(target)
	{
	if(target.result().missed)
		{
		this.displayMiss(target)
	}
	else if(target.result().evaded)
		{
		this.displayEvasion(target)
	}
	else
		{
		this.displayHpDamage(target);
		this.displayMpDamage(target);
		this.displayTpDamage(target)
	}
};
Window_BattleLog.prototype.displayMiss=function(target)
	{
	var fmt;
	if(target.result().physical)
		{
		fmt=target.isActor()?TextManager.actorNoHit:TextManager.enemyNoHit;
		this.push('performMiss',target)
	}
	else
		{
		fmt=TextManager.actionFailure
	}
	this.push('addText',fmt.format(target.name()))
};
Window_BattleLog.prototype.displayEvasion=function(target)
	{
	var fmt;
	if(target.result().physical)
		{
		fmt=TextManager.evasion;
		this.push('performEvasion',target)
	}
	else
		{
		fmt=TextManager.magicEvasion;
		this.push('performMagicEvasion',target)
	}
	this.push('addText',fmt.format(target.name()))
};
Window_BattleLog.prototype.displayHpDamage=function(target)
	{
	if(target.result().hpAffected)
		{
		if(target.result().hpDamage>0&&!target.result().drain)
			{
			this.push('performDamage',target)
		}
		if(target.result().hpDamage<0)
			{
			this.push('performRecovery',target)
		}
		this.push('addText',this.makeHpDamageText(target))
	}
};
Window_BattleLog.prototype.displayMpDamage=function(target)
	{
	if(target.isAlive()&&target.result().mpDamage!==0)
		{
		if(target.result().mpDamage<0)
			{
			this.push('performRecovery',target)
		}
		this.push('addText',this.makeMpDamageText(target))
	}
};
Window_BattleLog.prototype.displayTpDamage=function(target)
	{
	if(target.isAlive()&&target.result().tpDamage!==0)
		{
		if(target.result().tpDamage<0)
			{
			this.push('performRecovery',target)
		}
		this.push('addText',this.makeTpDamageText(target))
	}
};
Window_BattleLog.prototype.displayAffectedStatus=function(target)
	{
	if(target.result().isStatusAffected())
		{
		this.push('pushBaseLine');
		this.displayChangedStates(target);
		this.displayChangedBuffs(target);
		this.push('waitForNewLine');
		this.push('popBaseLine')
	}
};
Window_BattleLog.prototype.displayAutoAffectedStatus=function(target)
	{
	if(target.result().isStatusAffected())
		{
		this.displayAffectedStatus(target,null);
		this.push('clear')
	}
};
Window_BattleLog.prototype.displayChangedStates=function(target)
	{
	this.displayAddedStates(target);
	this.displayRemovedStates(target)
};
Window_BattleLog.prototype.displayAddedStates=function(target)
	{
	target.result().addedStateObjects().forEach(function(state)
		{
		var stateMsg=target.isActor()?state.message1:state.message2;
		if(state.id===target.deathStateId())
			{
			this.push('performCollapse',target)
		}
		if(stateMsg)
			{
			this.push('popBaseLine');
			this.push('pushBaseLine');
			this.push('addText',target.name()+stateMsg);
			this.push('waitForEffect')
		}
	}
	,this)
};
Window_BattleLog.prototype.displayRemovedStates=function(target)
	{
	target.result().removedStateObjects().forEach(function(state)
		{
		if(state.message4)
			{
			this.push('popBaseLine');
			this.push('pushBaseLine');
			this.push('addText',target.name()+state.message4)
		}
	}
	,this)
};
Window_BattleLog.prototype.displayChangedBuffs=function(target)
	{
	var result=target.result();
	this.displayBuffs(target,result.addedBuffs,TextManager.buffAdd);
	this.displayBuffs(target,result.addedDebuffs,TextManager.debuffAdd);
	this.displayBuffs(target,result.removedBuffs,TextManager.buffRemove)
};
Window_BattleLog.prototype.displayBuffs=function(target,buffs,fmt)
	{
	buffs.forEach(function(paramId)
		{
		this.push('popBaseLine');
		this.push('pushBaseLine');
		this.push('addText',fmt.format(target.name(),TextManager.param(paramId)))
	}
	,this)
};
Window_BattleLog.prototype.makeHpDamageText=function(target)
	{
	var result=target.result();
	var damage=result.hpDamage;
	var isActor=target.isActor();
	var fmt;
	if(damage>0&&result.drain)
		{
		fmt=isActor?TextManager.actorDrain:TextManager.enemyDrain;
		return fmt.format(target.name(),TextManager.hp,damage)
	}
	else if(damage>0)
		{
		fmt=isActor?TextManager.actorDamage:TextManager.enemyDamage;
		return fmt.format(target.name(),damage)
	}
	else if(damage<0)
		{
		fmt=isActor?TextManager.actorRecovery:TextManager.enemyRecovery;
		return fmt.format(target.name(),TextManager.hp,-damage)
	}
	else
		{
		fmt=isActor?TextManager.actorNoDamage:TextManager.enemyNoDamage;
		return fmt.format(target.name())
	}
};
Window_BattleLog.prototype.makeMpDamageText=function(target)
	{
	var result=target.result();
	var damage=result.mpDamage;
	var isActor=target.isActor();
	var fmt;
	if(damage>0&&result.drain)
		{
		fmt=isActor?TextManager.actorDrain:TextManager.enemyDrain;
		return fmt.format(target.name(),TextManager.mp,damage)
	}
	else if(damage>0)
		{
		fmt=isActor?TextManager.actorLoss:TextManager.enemyLoss;
		return fmt.format(target.name(),TextManager.mp,damage)
	}
	else if(damage<0)
		{
		fmt=isActor?TextManager.actorRecovery:TextManager.enemyRecovery;
		return fmt.format(target.name(),TextManager.mp,-damage)
	}
	else
		{
		return''
	}
};
Window_BattleLog.prototype.makeTpDamageText=function(target)
	{
	var result=target.result();
	var damage=result.tpDamage;
	var isActor=target.isActor();
	var fmt;
	if(damage>0)
		{
		fmt=isActor?TextManager.actorLoss:TextManager.enemyLoss;
		return fmt.format(target.name(),TextManager.tp,damage)
	}
	else if(damage<0)
		{
		fmt=isActor?TextManager.actorGain:TextManager.enemyGain;
		return fmt.format(target.name(),TextManager.tp,-damage)
	}
	else
		{
		return''
	}
};
function Window_PartyCommand()
	{
	this.initialize.apply(this,arguments)
}
Window_PartyCommand.prototype=Object.create(Window_Command.prototype);
Window_PartyCommand.prototype.constructor=Window_PartyCommand;
Window_PartyCommand.prototype.initialize=function()
	{
	var y=Graphics.boxHeight-this.windowHeight();
	Window_Command.prototype.initialize.call(this,0,y);
	this.openness=0;
	this.deactivate()
};
Window_PartyCommand.prototype.windowWidth=function()
	{
	return 192
};
Window_PartyCommand.prototype.numVisibleRows=function()
	{
	return 4
};
Window_PartyCommand.prototype.makeCommandList=function()
	{
	this.addCommand(TextManager.fight,'fight');
	this.addCommand(TextManager.escape,'escape',BattleManager.canEscape())
};
Window_PartyCommand.prototype.setup=function()
	{
	this.clearCommandList();
	this.makeCommandList();
	this.refresh();
	this.select(0);
	this.activate();
	this.open()
};
function Window_ActorCommand()
	{
	this.initialize.apply(this,arguments)
}
Window_ActorCommand.prototype=Object.create(Window_Command.prototype);
Window_ActorCommand.prototype.constructor=Window_ActorCommand;
Window_ActorCommand.prototype.initialize=function()
	{
	var y=Graphics.boxHeight-this.windowHeight();
	Window_Command.prototype.initialize.call(this,0,y);
	this.openness=0;
	this.deactivate();
	this._actor=null
};
Window_ActorCommand.prototype.windowWidth=function()
	{
	return 192
};
Window_ActorCommand.prototype.numVisibleRows=function()
	{
	return 4
};
Window_ActorCommand.prototype.makeCommandList=function()
	{
	if(this._actor)
		{
		this.addAttackCommand();
		this.addSkillCommands();
		this.addGuardCommand();
		this.addItemCommand()
	}
};
Window_ActorCommand.prototype.addAttackCommand=function()
	{
	this.addCommand(TextManager.attack,'attack',this._actor.canAttack())
};
Window_ActorCommand.prototype.addSkillCommands=function()
	{
	var skillTypes=this._actor.addedSkillTypes();
	skillTypes.sort(function(a,
		{
		return a-b
	}
	);
	skillTypes.forEach(function(stypeId)
		{
		var name=$dataSystem.skillTypes[stypeId];
		this.addCommand(name,'skill',true,stypeId)
	}
	,this)
};
Window_ActorCommand.prototype.addGuardCommand=function()
	{
	this.addCommand(TextManager.guard,'guard',this._actor.canGuard())
};
Window_ActorCommand.prototype.addItemCommand=function()
	{
	this.addCommand(TextManager.item,'item')
};
Window_ActorCommand.prototype.setup=function(actor)
	{
	this._actor=actor;
	this.clearCommandList();
	this.makeCommandList();
	this.refresh();
	this.selectLast();
	this.activate();
	this.open()
};
Window_ActorCommand.prototype.processOk=function()
	{
	if(this._actor)
		{
		if(ConfigManager.commandRemember)
			{
			this._actor.setLastCommandSymbol(this.currentSymbol())
		}
		else
			{
			this._actor.setLastCommandSymbol('')
		}
	}
	Window_Command.prototype.processOk.call(this)
};
Window_ActorCommand.prototype.selectLast=function()
	{
	if(this._actor&&ConfigManager.commandRemember)
		{
		this.selectSymbol(this._actor.lastCommandSymbol())
	}
	else
		{
		this.select(0)
	}
};
function Window_BattleStatus()
	{
	this.initialize.apply(this,arguments)
}
Window_BattleStatus.prototype=Object.create(Window_Selectable.prototype);
Window_BattleStatus.prototype.constructor=Window_BattleStatus;
Window_BattleStatus.prototype.initialize=function()
	{
	var width=this.windowWidth();
	var height=this.windowHeight();
	var x=Graphics.boxWidth-width;
	var y=Graphics.boxHeight-height;
	Window_Selectable.prototype.initialize.call(this,x,y,width,height);
	this.refresh();
	this.openness=0
};
Window_BattleStatus.prototype.windowWidth=function()
	{
	return Graphics.boxWidth-192
};
Window_BattleStatus.prototype.windowHeight=function()
	{
	return this.fittingHeight(this.numVisibleRows())
};
Window_BattleStatus.prototype.numVisibleRows=function()
	{
	return 4
};
Window_BattleStatus.prototype.maxItems=function()
	{
	return $gameParty.battleMembers().length
};
Window_BattleStatus.prototype.refresh=function()
	{
	this.contents.clear();
	this.drawAllItems()
};
Window_BattleStatus.prototype.drawItem=function(index)
	{
	var actor=$gameParty.battleMembers()[index];
	this.drawBasicArea(this.basicAreaRect(index),actor);
	this.drawGaugeArea(this.gaugeAreaRect(index),actor)
};
Window_BattleStatus.prototype.basicAreaRect=function(index)
	{
	var rect=this.itemRectForText(index);
	rect.width-=this.gaugeAreaWidth()+15;
	return rect
};
Window_BattleStatus.prototype.gaugeAreaRect=function(index)
	{
	var rect=this.itemRectForText(index);
	rect.x+=rect.width-this.gaugeAreaWidth();
	rect.width=this.gaugeAreaWidth();
	return rect
};
Window_BattleStatus.prototype.gaugeAreaWidth=function()
	{
	return 330
};
Window_BattleStatus.prototype.drawBasicArea=function(rect,actor)
	{
	this.drawActorName(actor,rect.x+0,rect.y,150);
	this.drawActorIcons(actor,rect.x+156,rect.y,rect.width-156)
};
Window_BattleStatus.prototype.drawGaugeArea=function(rect,actor)
	{
	if($dataSystem.optDisplayTp)
		{
		this.drawGaugeAreaWithTp(rect,actor)
	}
	else
		{
		this.drawGaugeAreaWithoutTp(rect,actor)
	}
};
Window_BattleStatus.prototype.drawGaugeAreaWithTp=function(rect,actor)
	{
	this.drawActorHp(actor,rect.x+0,rect.y,108);
	this.drawActorMp(actor,rect.x+123,rect.y,96);
	this.drawActorTp(actor,rect.x+234,rect.y,96)
};
Window_BattleStatus.prototype.drawGaugeAreaWithoutTp=function(rect,actor)
	{
	this.drawActorHp(actor,rect.x+0,rect.y,201);
	this.drawActorMp(actor,rect.x+216,rect.y,114)
};
function Window_BattleActor()
	{
	this.initialize.apply(this,arguments)
}
Window_BattleActor.prototype=Object.create(Window_BattleStatus.prototype);
Window_BattleActor.prototype.constructor=Window_BattleActor;
Window_BattleActor.prototype.initialize=function(x,y)
	{
	Window_BattleStatus.prototype.initialize.call(this);
	this.x=x;
	this.y=y;
	this.openness=255;
	this.hide()
};
Window_BattleActor.prototype.show=function()
	{
	this.select(0);
	Window_BattleStatus.prototype.show.call(this)
};
Window_BattleActor.prototype.hide=function()
	{
	Window_BattleStatus.prototype.hide.call(this);
	$gameParty.select(null)
};
Window_BattleActor.prototype.select=function(index)
	{
	Window_BattleStatus.prototype.select.call(this,index);
	$gameParty.select(this.actor())
};
Window_BattleActor.prototype.actor=function()
	{
	return $gameParty.members()[this.index()]
};
function Window_BattleEnemy()
	{
	this.initialize.apply(this,arguments)
}
Window_BattleEnemy.prototype=Object.create(Window_Selectable.prototype);
Window_BattleEnemy.prototype.constructor=Window_BattleEnemy;
Window_BattleEnemy.prototype.initialize=function(x,y)
	{
	this._enemies=[];
	var width=this.windowWidth();
	var height=this.windowHeight();
	Window_Selectable.prototype.initialize.call(this,x,y,width,height);
	this.refresh();
	this.hide()
};
Window_BattleEnemy.prototype.windowWidth=function()
	{
	return Graphics.boxWidth-192
};
Window_BattleEnemy.prototype.windowHeight=function()
	{
	return this.fittingHeight(this.numVisibleRows())
};
Window_BattleEnemy.prototype.numVisibleRows=function()
	{
	return 4
};
Window_BattleEnemy.prototype.maxCols=function()
	{
	return 2
};
Window_BattleEnemy.prototype.maxItems=function()
	{
	return this._enemies.length
};
Window_BattleEnemy.prototype.enemy=function()
	{
	return this._enemies[this.index()]
};
Window_BattleEnemy.prototype.enemyIndex=function()
	{
	var enemy=this.enemy();
	return enemy?enemy.index():-1
};
Window_BattleEnemy.prototype.drawItem=function(index)
	{
	this.resetTextColor();
	var name=this._enemies[index].name();
	var rect=this.itemRectForText(index);
	this.drawText(name,rect.x,rect.y,rect.width)
};
Window_BattleEnemy.prototype.show=function()
	{
	this.refresh();
	this.select(0);
	Window_Selectable.prototype.show.call(this)
};
Window_BattleEnemy.prototype.hide=function()
	{
	Window_Selectable.prototype.hide.call(this);
	$gameTroop.select(null)
};
Window_BattleEnemy.prototype.refresh=function()
	{
	this._enemies=$gameTroop.aliveMembers();
	Window_Selectable.prototype.refresh.call(this)
};
Window_BattleEnemy.prototype.select=function(index)
	{
	Window_Selectable.prototype.select.call(this,index);
	$gameTroop.select(this.enemy())
};
function Window_BattleSkill()
	{
	this.initialize.apply(this,arguments)
}
Window_BattleSkill.prototype=Object.create(Window_SkillList.prototype);
Window_BattleSkill.prototype.constructor=Window_BattleSkill;
Window_BattleSkill.prototype.initialize=function(x,y,width,height)
	{
	Window_SkillList.prototype.initialize.call(this,x,y,width,height);
	this.hide()
};
Window_BattleSkill.prototype.show=function()
	{
	this.selectLast();
	this.showHelpWindow();
	Window_SkillList.prototype.show.call(this)
};
Window_BattleSkill.prototype.hide=function()
	{
	this.hideHelpWindow();
	Window_SkillList.prototype.hide.call(this)
};
function Window_BattleItem()
	{
	this.initialize.apply(this,arguments)
}
Window_BattleItem.prototype=Object.create(Window_ItemList.prototype);
Window_BattleItem.prototype.constructor=Window_BattleItem;
Window_BattleItem.prototype.initialize=function(x,y,width,height)
	{
	Window_ItemList.prototype.initialize.call(this,x,y,width,height);
	this.hide()
};
Window_BattleItem.prototype.includes=function(item)
	{
	return $gameParty.canUse(item)
};
Window_BattleItem.prototype.show=function()
	{
	this.selectLast();
	this.showHelpWindow();
	Window_ItemList.prototype.show.call(this)
};
Window_BattleItem.prototype.hide=function()
	{
	this.hideHelpWindow();
	Window_ItemList.prototype.hide.call(this)
};
function Window_TitleCommand()
	{
	this.initialize.apply(this,arguments)
}
Window_TitleCommand.prototype=Object.create(Window_Command.prototype);
Window_TitleCommand.prototype.constructor=Window_TitleCommand;
Window_TitleCommand.prototype.initialize=function()
	{
	Window_Command.prototype.initialize.call(this,0,0);
	this.updatePlacement();
	this.openness=0;
	this.selectLast()
};
Window_TitleCommand._lastCommandSymbol=null;
Window_TitleCommand.initCommandPosition=function()
	{
	this._lastCommandSymbol=null
};
Window_TitleCommand.prototype.windowWidth=function()
	{
	return 240
};
Window_TitleCommand.prototype.updatePlacement=function()
	{
	this.x=(Graphics.boxWidth-this.width)/2;
	this.y=Graphics.boxHeight-this.height-96
};
Window_TitleCommand.prototype.makeCommandList=function()
	{
	this.addCommand(TextManager.newGame,'newGame');
	this.addCommand(TextManager.continue_,'continue',this.isContinueEnabled());
	this.addCommand(TextManager.options,'options')
};
Window_TitleCommand.prototype.isContinueEnabled=function()
	{
	return DataManager.isAnySavefileExists()
};
Window_TitleCommand.prototype.processOk=function()
	{
	Window_TitleCommand._lastCommandSymbol=this.currentSymbol();
	Window_Command.prototype.processOk.call(this)
};
Window_TitleCommand.prototype.selectLast=function()
	{
	if(Window_TitleCommand._lastCommandSymbol)
		{
		this.selectSymbol(Window_TitleCommand._lastCommandSymbol)
	}
	else if(this.isContinueEnabled())
		{
		this.selectSymbol('continue')
	}
};
function Window_GameEnd()
	{
	this.initialize.apply(this,arguments)
}
Window_GameEnd.prototype=Object.create(Window_Command.prototype);
Window_GameEnd.prototype.constructor=Window_GameEnd;
Window_GameEnd.prototype.initialize=function()
	{
	Window_Command.prototype.initialize.call(this,0,0);
	this.updatePlacement();
	this.openness=0;
	this.open()
};
Window_GameEnd.prototype.windowWidth=function()
	{
	return 240
};
Window_GameEnd.prototype.updatePlacement=function()
	{
	this.x=(Graphics.boxWidth-this.width)/2;
	this.y=(Graphics.boxHeight-this.height)/2
};
Window_GameEnd.prototype.makeCommandList=function()
	{
	this.addCommand(TextManager.toTitle,'toTitle');
	this.addCommand(TextManager.cancel,'cancel')
};
function Window_DebugRange()
	{
	this.initialize.apply(this,arguments)
}
Window_DebugRange.prototype=Object.create(Window_Selectable.prototype);
Window_DebugRange.prototype.constructor=Window_DebugRange;
Window_DebugRange.lastTopRow=0;
Window_DebugRange.lastIndex=0;
Window_DebugRange.prototype.initialize=function(x,y)
	{
	this._maxSwitches=Math.ceil(($dataSystem.switches.length-1)/10);
	this._maxVariables=Math.ceil(($dataSystem.variables.length-1)/10);
	var width=this.windowWidth();
	var height=this.windowHeight();
	Window_Selectable.prototype.initialize.call(this,x,y,width,height);
	this.refresh();
	this.setTopRow(Window_DebugRange.lastTopRow);
	this.select(Window_DebugRange.lastIndex);
	this.activate()
};
Window_DebugRange.prototype.windowWidth=function()
	{
	return 246
};
Window_DebugRange.prototype.windowHeight=function()
	{
	return Graphics.boxHeight
};
Window_DebugRange.prototype.maxItems=function()
	{
	return this._maxSwitches+this._maxVariables
};
Window_DebugRange.prototype.update=function()
	{
	Window_Selectable.prototype.update.call(this);
	if(this._editWindow)
		{
		this._editWindow.setMode(this.mode());
		this._editWindow.setTopId(this.topId())
	}
};
Window_DebugRange.prototype.mode=function()
	{
	return this.index()<this._maxSwitches?'switch':'variable'
};
Window_DebugRange.prototype.topId=function()
	{
	var index=this.index();
	if(index<this._maxSwitches)
		{
		return index*10+1
	}
	else
		{
		return(index-this._maxSwitches)*10+1
	}
};
Window_DebugRange.prototype.refresh=function()
	{
	this.createContents();
	this.drawAllItems()
};
Window_DebugRange.prototype.drawItem=function(index)
	{
	var rect=this.itemRectForText(index);
	var start;
	var text;
	if(index<this._maxSwitches)
		{
		start=index*10+1;
		text='S'
	}
	else
		{
		start=(index-this._maxSwitches)*10+1;
		text='V'
	}
	var end=start+9;
	text+=' ['+start.padZero(4)+'-'+end.padZero(4)+']';
	this.drawText(text,rect.x,rect.y,rect.width)
};
Window_DebugRange.prototype.isCancelTriggered=function()
	{
	return(Window_Selectable.prototype.isCancelTriggered()||Input.isTriggered('debug'))
};
Window_DebugRange.prototype.processCancel=function()
	{
	Window_Selectable.prototype.processCancel.call(this);
	Window_DebugRange.lastTopRow=this.topRow();
	Window_DebugRange.lastIndex=this.index()
};
Window_DebugRange.prototype.setEditWindow=function(editWindow)
	{
	this._editWindow=editWindow;
	this.update()
};
function Window_DebugEdit()
	{
	this.initialize.apply(this,arguments)
}
Window_DebugEdit.prototype=Object.create(Window_Selectable.prototype);
Window_DebugEdit.prototype.constructor=Window_DebugEdit;
Window_DebugEdit.prototype.initialize=function(x,y,width)
	{
	var height=this.fittingHeight(10);
	Window_Selectable.prototype.initialize.call(this,x,y,width,height);
	this._mode='switch';
	this._topId=1;
	this.refresh()
};
Window_DebugEdit.prototype.maxItems=function()
	{
	return 10
};
Window_DebugEdit.prototype.refresh=function()
	{
	this.contents.clear();
	this.drawAllItems()
};
Window_DebugEdit.prototype.drawItem=function(index)
	{
	var dataId=this._topId+index;
	var idText=dataId.padZero(4)+':';
	var idWidth=this.textWidth(idText);
	var statusWidth=this.textWidth('-00000000');
	var name=this.itemName(dataId);
	var status=this.itemStatus(dataId);
	var rect=this.itemRectForText(index);
	this.resetTextColor();
	this.drawText(idText,rect.x,rect.y,rect.width);
	rect.x+=idWidth;
	rect.width-=idWidth+statusWidth;
	this.drawText(name,rect.x,rect.y,rect.width);
	this.drawText(status,rect.x+rect.width,rect.y,statusWidth,'right')
};
Window_DebugEdit.prototype.itemName=function(dataId)
	{
	if(this._mode==='switch')
		{
		return $dataSystem.switches[dataId]
	}
	else
		{
		return $dataSystem.variables[dataId]
	}
};
Window_DebugEdit.prototype.itemStatus=function(dataId)
	{
	if(this._mode==='switch')
		{
		return $gameSwitches.value(dataId)?'[ON]':'[OFF]'
	}
	else
		{
		return String($gameVariables.value(dataId))
	}
};
Window_DebugEdit.prototype.setMode=function(mode)
	{
	if(this._mode!==mode)
		{
		this._mode=mode;
		this.refresh()
	}
};
Window_DebugEdit.prototype.setTopId=function(id)
	{
	if(this._topId!==id)
		{
		this._topId=id;
		this.refresh()
	}
};
Window_DebugEdit.prototype.currentId=function()
	{
	return this._topId+this.index()
};
Window_DebugEdit.prototype.update=function()
	{
	Window_Selectable.prototype.update.call(this);
	if(this.active)
		{
		if(this._mode==='switch')
			{
			this.updateSwitch()
		}
		else
			{
			this.updateVariable()
		}
	}
};
Window_DebugEdit.prototype.updateSwitch=function()
	{
	if(Input.isRepeated('ok'))
		{
		var switchId=this.currentId();
		SoundManager.playCursor();
		$gameSwitches.setValue(switchId,!$gameSwitches.value(switchId));
		this.redrawCurrentItem()
	}
};
Window_DebugEdit.prototype.updateVariable=function()
	{
	var variableId=this.currentId();
	var value=$gameVariables.value(variableId);
	if(typeof value==='number')
		{
		if(Input.isRepeated('right'))
			{
			value++
		}
		if(Input.isRepeated('left'))
			{
			value--
		}
		if(Input.isRepeated('pagedown'))
			{
			value+=10
		}
		if(Input.isRepeated('pageup'))
			{
			value-=10
		}
		if($gameVariables.value(variableId)!==value)
			{
			$gameVariables.setValue(variableId,value);
			SoundManager.playCursor();
			this.redrawCurrentItem()
		}
	}
};
 

 


 

Share this post


Link to post
Share on other sites

Non so se ci sono limiti di caratteri quindi per sicurezza metto qui altri script

 

 

 

rpg_sprites.js

 

 

function Sprite_Base()
	{
	this.initialize.apply(this,arguments)
}
Sprite_Base.prototype=Object.create(Sprite.prototype);
Sprite_Base.prototype.constructor=Sprite_Base;
Sprite_Base.prototype.initialize=function()
	{
	Sprite.prototype.initialize.call(this);
	this._animationSprites=[];
	this._effectTarget=this;
	this._hiding=false
};
Sprite_Base.prototype.update=function()
	{
	Sprite.prototype.update.call(this);
	this.updateVisibility();
	this.updateAnimationSprites()
};
Sprite_Base.prototype.hide=function()
	{
	this._hiding=true;
	this.updateVisibility()
};
Sprite_Base.prototype.show=function()
	{
	this._hiding=false;
	this.updateVisibility()
};
Sprite_Base.prototype.updateVisibility=function()
	{
	this.visible=!this._hiding
};
Sprite_Base.prototype.updateAnimationSprites=function()
	{
	if(this._animationSprites.length>0)
		{
		var sprites=this._animationSprites.clone();
		this._animationSprites=[];
		for(var i=0;
		i<sprites.length;
		i++)
			{
			var sprite=sprites[i];
			if(sprite.isPlaying())
				{
				this._animationSprites.push(sprite)
			}
			else
				{
				sprite.remove()
			}
		}
	}
};
Sprite_Base.prototype.startAnimation=function(animation,mirror,delay)
	{
	var sprite=new Sprite_Animation();
	sprite.setup(this._effectTarget,animation,mirror,delay);
	this._effectTarget.parent.addChild(sprite);
	this._animationSprites.push(sprite)
};
Sprite_Base.prototype.isAnimationPlaying=function()
	{
	return this._animationSprites.length>0
};
function Sprite_Button()
	{
	this.initialize.apply(this,arguments)
}
Sprite_Button.prototype=Object.create(Sprite.prototype);
Sprite_Button.prototype.constructor=Sprite_Button;
Sprite_Button.prototype.initialize=function()
	{
	Sprite.prototype.initialize.call(this);
	this._touching=false;
	this._coldFrame=null;
	this._hotFrame=null;
	this._clickHandler=null
};
Sprite_Button.prototype.update=function()
	{
	Sprite.prototype.update.call(this);
	this.updateFrame();
	this.processTouch()
};
Sprite_Button.prototype.updateFrame=function()
	{
	var frame;
	if(this._touching)
		{
		frame=this._hotFrame
	}
	else
		{
		frame=this._coldFrame
	}
	if(frame)
		{
		this.setFrame(frame.x,frame.y,frame.width,frame.height)
	}
};
Sprite_Button.prototype.setColdFrame=function(x,y,width,height)
	{
	this._coldFrame=new Rectangle(x,y,width,height)
};
Sprite_Button.prototype.setHotFrame=function(x,y,width,height)
	{
	this._hotFrame=new Rectangle(x,y,width,height)
};
Sprite_Button.prototype.setClickHandler=function(method)
	{
	this._clickHandler=method
};
Sprite_Button.prototype.callClickHandler=function()
	{
	if(this._clickHandler)
		{
		this._clickHandler()
	}
};
Sprite_Button.prototype.processTouch=function()
	{
	if(this.isActive())
		{
		if(TouchInput.isTriggered()&&this.isButtonTouched())
			{
			this._touching=true
		}
		if(this._touching)
			{
			if(TouchInput.isReleased()||!this.isButtonTouched())
				{
				this._touching=false;
				if(TouchInput.isReleased())
					{
					this.callClickHandler()
				}
			}
		}
	}
	else
		{
		this._touching=false
	}
};
Sprite_Button.prototype.isActive=function()
	{
	var node=this;
	while(node)
		{
		if(!node.visible)
			{
			return false
		}
		node=node.parent
	}
	return true
};
Sprite_Button.prototype.isButtonTouched=function()
	{
	var x=this.canvasToLocalX(TouchInput.x);
	var y=this.canvasToLocalY(TouchInput.y);
	return x>=0&&y>=0&&x<this.width&&y<this.height
};
Sprite_Button.prototype.canvasToLocalX=function(x)
	{
	var node=this;
	while(node)
		{
		x-=node.x;
		node=node.parent
	}
	return x
};
Sprite_Button.prototype.canvasToLocalY=function(y)
	{
	var node=this;
	while(node)
		{
		y-=node.y;
		node=node.parent
	}
	return y
};
function Sprite_Character()
	{
	this.initialize.apply(this,arguments)
}
Sprite_Character.prototype=Object.create(Sprite_Base.prototype);
Sprite_Character.prototype.constructor=Sprite_Character;
Sprite_Character.prototype.initialize=function(character)
	{
	Sprite_Base.prototype.initialize.call(this);
	this.initMembers();
	this.setCharacter(character)
};
Sprite_Character.prototype.initMembers=function()
	{
	this.anchor.x=0.5;
	this.anchor.y=1;
	this._character=null;
	this._balloonDuration=0;
	this._tilesetId=0;
	this._upperBody=null;
	this._lowerBody=null
};
Sprite_Character.prototype.setCharacter=function(character)
	{
	this._character=character
};
Sprite_Character.prototype.update=function()
	{
	Sprite_Base.prototype.update.call(this);
	this.updateBitmap();
	this.updateFrame();
	this.updatePosition();
	this.updateAnimation();
	this.updateBalloon();
	this.updateOther()
};
Sprite_Character.prototype.updateVisibility=function()
	{
	Sprite_Base.prototype.updateVisibility.call(this);
	if(this._character.isTransparent())
		{
		this.visible=false
	}
};
Sprite_Character.prototype.isTile=function()
	{
	return this._character.tileId>0
};
Sprite_Character.prototype.tilesetBitmap=function(tileId)
	{
	var tileset=$gameMap.tileset();
	var setNumber=5+Math.floor(tileId/256);
	return ImageManager.loadTileset(tileset.tilesetNames[setNumber])
};
Sprite_Character.prototype.updateBitmap=function()
	{
	if(this.isImageChanged())
		{
		this._tilesetId=$gameMap.tilesetId();
		this._tileId=this._character.tileId();
		this._characterName=this._character.characterName();
		this._characterIndex=this._character.characterIndex();
		if(this._tileId>0)
			{
			this.setTileBitmap()
		}
		else
			{
			this.setCharacterBitmap()
		}
	}
};
Sprite_Character.prototype.isImageChanged=function()
	{
	return(this._tilesetId!==$gameMap.tilesetId()||this._tileId!==this._character.tileId()||this._characterName!==this._character.characterName()||this._characterIndex!==this._character.characterIndex())
};
Sprite_Character.prototype.setTileBitmap=function()
	{
	this.bitmap=this.tilesetBitmap(this._tileId)
};
Sprite_Character.prototype.setCharacterBitmap=function()
	{
	this.bitmap=ImageManager.loadCharacter(this._characterName);
	this._isBigCharacter=ImageManager.isBigCharacter(this._characterName)
};
Sprite_Character.prototype.updateFrame=function()
	{
	if(this._tileId>0)
		{
		this.updateTileFrame()
	}
	else
		{
		this.updateCharacterFrame()
	}
};
Sprite_Character.prototype.updateTileFrame=function()
	{
	var pw=this.patternWidth();
	var ph=this.patternHeight();
	var sx=(Math.floor(this._tileId/128)%2*8+this._tileId%8)*pw;
	var sy=Math.floor(this._tileId%256/8)%16*ph;
	this.setFrame(sx,sy,pw,ph)
};
Sprite_Character.prototype.updateCharacterFrame=function()
	{
	var pw=this.patternWidth();
	var ph=this.patternHeight();
	var sx=(this.characterBlockX()+this.characterPatternX())*pw;
	var sy=(this.characterBlockY()+this.characterPatternY())*ph;
	this.updateHalfBodySprites();
	if(this._bushDepth>0)
		{
		var d=this._bushDepth;
		this._upperBody.setFrame(sx,sy,pw,ph-d);
		this._lowerBody.setFrame(sx,sy+ph-d,pw,d);
		this.setFrame(sx,sy,0,ph)
	}
	else
		{
		this.setFrame(sx,sy,pw,ph)
	}
};
Sprite_Character.prototype.characterBlockX=function()
	{
	if(this._isBigCharacter)
		{
		return 0
	}
	else
		{
		var index=this._character.characterIndex();
		return index%4*3
	}
};
Sprite_Character.prototype.characterBlockY=function()
	{
	if(this._isBigCharacter)
		{
		return 0
	}
	else
		{
		var index=this._character.characterIndex();
		return Math.floor(index/4)*4
	}
};
Sprite_Character.prototype.characterPatternX=function()
	{
	return this._character.pattern()
};
Sprite_Character.prototype.characterPatternY=function()
	{
	return(this._character.direction()-2)/2
};
Sprite_Character.prototype.patternWidth=function()
	{
	if(this._tileId>0)
		{
		return $gameMap.tileWidth()
	}
	else if(this._isBigCharacter)
		{
		return this.bitmap.width/3
	}
	else
		{
		return this.bitmap.width/12
	}
};
Sprite_Character.prototype.patternHeight=function()
	{
	if(this._tileId>0)
		{
		return $gameMap.tileHeight()
	}
	else if(this._isBigCharacter)
		{
		return this.bitmap.height/4
	}
	else
		{
		return this.bitmap.height/8
	}
};
Sprite_Character.prototype.updateHalfBodySprites=function()
	{
	if(this._bushDepth>0)
		{
		this.createHalfBodySprites();
		this._upperBody.bitmap=this.bitmap;
		this._upperBody.visible=true;
		this._upperBody.y=-this._bushDepth;
		this._lowerBody.bitmap=this.bitmap;
		this._lowerBody.visible=true;
		this._upperBody.setBlendColor(this.getBlendColor());
		this._lowerBody.setBlendColor(this.getBlendColor());
		this._upperBody.setColorTone(this.getColorTone());
		this._lowerBody.setColorTone(this.getColorTone())
	}
	else if(this._upperBody)
		{
		this._upperBody.visible=false;
		this._lowerBody.visible=false
	}
};
Sprite_Character.prototype.createHalfBodySprites=function()
	{
	if(!this._upperBody)
		{
		this._upperBody=new Sprite();
		this._upperBody.anchor.x=0.5;
		this._upperBody.anchor.y=1;
		this.addChild(this._upperBody)
	}
	if(!this._lowerBody)
		{
		this._lowerBody=new Sprite();
		this._lowerBody.anchor.x=0.5;
		this._lowerBody.anchor.y=1;
		this._lowerBody.opacity=128;
		this.addChild(this._lowerBody)
	}
};
Sprite_Character.prototype.updatePosition=function()
	{
	this.x=this._character.screenX();
	this.y=this._character.screenY();
	this.z=this._character.screenZ()
};
Sprite_Character.prototype.updateAnimation=function()
	{
	this.setupAnimation();
	if(!this.isAnimationPlaying())
		{
		this._character.endAnimation()
	}
	if(!this.isBalloonPlaying())
		{
		this._character.endBalloon()
	}
};
Sprite_Character.prototype.updateOther=function()
	{
	this.opacity=this._character.opacity();
	this.blendMode=this._character.blendMode();
	this._bushDepth=this._character.bushDepth()
};
Sprite_Character.prototype.setupAnimation=function()
	{
	if(this._character.animationId()>0)
		{
		var animation=$dataAnimations[this._character.animationId()];
		this.startAnimation(animation,false,0);
		this._character.startAnimation()
	}
};
Sprite_Character.prototype.setupBalloon=function()
	{
	if(this._character.balloonId()>0)
		{
		this.startBalloon();
		this._character.startBalloon()
	}
};
Sprite_Character.prototype.startBalloon=function()
	{
	if(!this._balloonSprite)
		{
		this._balloonSprite=new Sprite_Balloon()
	}
	this._balloonSprite.setup(this._character.balloonId());
	this.parent.addChild(this._balloonSprite)
};
Sprite_Character.prototype.updateBalloon=function()
	{
	this.setupBalloon();
	if(this._balloonSprite)
		{
		this._balloonSprite.x=this.x;
		this._balloonSprite.y=this.y-this.height;
		if(!this._balloonSprite.isPlaying())
			{
			this.endBalloon()
		}
	}
};
Sprite_Character.prototype.endBalloon=function()
	{
	if(this._balloonSprite)
		{
		this.parent.removeChild(this._balloonSprite);
		this._balloonSprite=null
	}
};
Sprite_Character.prototype.isBalloonPlaying=function()
	{
	return!!this._balloonSprite
};
function Sprite_Battler()
	{
	this.initialize.apply(this,arguments)
}
Sprite_Battler.prototype=Object.create(Sprite_Base.prototype);
Sprite_Battler.prototype.constructor=Sprite_Battler;
Sprite_Battler.prototype.initialize=function(battler)
	{
	Sprite_Base.prototype.initialize.call(this);
	this.initMembers();
	this.setBattler(battler)
};
Sprite_Battler.prototype.initMembers=function()
	{
	this.anchor.x=0.5;
	this.anchor.y=1;
	this._battler=null;
	this._damages=[];
	this._homeX=0;
	this._homeY=0;
	this._offsetX=0;
	this._offsetY=0;
	this._targetOffsetX=NaN;
	this._targetOffsetY=NaN;
	this._movementDuration=0;
	this._selectionEffectCount=0
};
Sprite_Battler.prototype.setBattler=function(battler)
	{
	this._battler=battler
};
Sprite_Battler.prototype.setHome=function(x,y)
	{
	this._homeX=x;
	this._homeY=y;
	this.updatePosition()
};
Sprite_Battler.prototype.update=function()
	{
	Sprite_Base.prototype.update.call(this);
	if(this._battler)
		{
		this.updateMain();
		this.updateAnimation();
		this.updateDamagePopup();
		this.updateSelectionEffect()
	}
	else
		{
		this.bitmap=null
	}
};
Sprite_Battler.prototype.updateVisibility=function()
	{
	Sprite_Base.prototype.updateVisibility.call(this);
	if(!this._battler||!this._battler.isSpriteVisible())
		{
		this.visible=false
	}
};
Sprite_Battler.prototype.updateMain=function()
	{
	if(this._battler.isSpriteVisible())
		{
		this.updateBitmap();
		this.updateFrame()
	}
	this.updateMove();
	this.updatePosition()
};
Sprite_Battler.prototype.updateBitmap=function()
	{
};
Sprite_Battler.prototype.updateFrame=function()
	{
};
Sprite_Battler.prototype.updateMove=function()
	{
	if(this._movementDuration>0)
		{
		var d=this._movementDuration;
		this._offsetX=(this._offsetX*(d-1)+this._targetOffsetX)/d;
		this._offsetY=(this._offsetY*(d-1)+this._targetOffsetY)/d;
		this._movementDuration--;
		if(this._movementDuration===0)
			{
			this.onMoveEnd()
		}
	}
};
Sprite_Battler.prototype.updatePosition=function()
	{
	this.x=this._homeX+this._offsetX;
	this.y=this._homeY+this._offsetY
};
Sprite_Battler.prototype.updateAnimation=function()
	{
	this.setupAnimation()
};
Sprite_Battler.prototype.updateDamagePopup=function()
	{
	this.setupDamagePopup();
	if(this._damages.length>0)
		{
		for(var i=0;
		i<this._damages.length;
		i++)
			{
			this._damages[i].update()
		}
		if(!this._damages[0].isPlaying())
			{
			this.parent.removeChild(this._damages[0]);
			this._damages.shift()
		}
	}
};
Sprite_Battler.prototype.updateSelectionEffect=function()
	{
	var target=this._effectTarget;
	if(this._battler.isSelected())
		{
		this._selectionEffectCount++;
		if(this._selectionEffectCount%30<15)
			{
			target.setBlendColor([255,255,255,64])
		}
		else
			{
			target.setBlendColor([0,0,0,0])
		}
	}
	else if(this._selectionEffectCount>0)
		{
		this._selectionEffectCount=0;
		target.setBlendColor([0,0,0,0])
	}
};
Sprite_Battler.prototype.setupAnimation=function()
	{
	while(this._battler.isAnimationRequested())
		{
		var data=this._battler.shiftAnimation();
		var animation=$dataAnimations[data.animationId];
		var mirror=data.mirror;
		var delay=animation.position===3?0:data.delay;
		this.startAnimation(animation,mirror,delay)
	}
};
Sprite_Battler.prototype.setupDamagePopup=function()
	{
	if(this._battler.isDamagePopupRequested())
		{
		if(this._battler.isSpriteVisible())
			{
			var sprite=new Sprite_Damage();
			sprite.x=this.x+this.damageOffsetX();
			sprite.y=this.y+this.damageOffsetY();
			sprite.setup(this._battler);
			this._damages.push(sprite);
			this.parent.addChild(sprite)
		}
		this._battler.clearDamagePopup();
		this._battler.clearResult()
	}
};
Sprite_Battler.prototype.damageOffsetX=function()
	{
	return 0
};
Sprite_Battler.prototype.damageOffsetY=function()
	{
	return 0
};
Sprite_Battler.prototype.startMove=function(x,y,duration)
	{
	if(this._targetOffsetX!==x||this._targetOffsetY!==y)
		{
		this._targetOffsetX=x;
		this._targetOffsetY=y;
		this._movementDuration=duration;
		if(duration===0)
			{
			this._offsetX=x;
			this._offsetY=y
		}
	}
};
Sprite_Battler.prototype.onMoveEnd=function()
	{
};
Sprite_Battler.prototype.isEffecting=function()
	{
	return false
};
Sprite_Battler.prototype.isMoving=function()
	{
	return this._movementDuration>0
};
Sprite_Battler.prototype.inHomePosition=function()
	{
	return this._offsetX===0&&this._offsetY===0
};
function Sprite_Actor()
	{
	this.initialize.apply(this,arguments)
}
Sprite_Actor.prototype=Object.create(Sprite_Battler.prototype);
Sprite_Actor.prototype.constructor=Sprite_Actor;
Sprite_Actor.MOTIONS=
	{
	walk:
		{
		index:0,loop:true
	}
	,wait:
		{
		index:1,loop:true
	}
	,chant:
		{
		index:2,loop:true
	}
	,guard:
		{
		index:3,loop:true
	}
	,damage:
		{
		index:4,loop:false
	}
	,evade:
		{
		index:5,loop:false
	}
	,thrust:
		{
		index:6,loop:false
	}
	,swing:
		{
		index:7,loop:false
	}
	,missile:
		{
		index:8,loop:false
	}
	,skill:
		{
		index:9,loop:false
	}
	,spell:
		{
		index:10,loop:false
	}
	,item:
		{
		index:11,loop:false
	}
	,escape:
		{
		index:12,loop:true
	}
	,victory:
		{
		index:13,loop:true
	}
	,dying:
		{
		index:14,loop:true
	}
	,abnormal:
		{
		index:15,loop:true
	}
	,sleep:
		{
		index:16,loop:true
	}
	,dead:
		{
		index:17,loop:true
	}
};
Sprite_Actor.prototype.initialize=function(battler)
	{
	Sprite_Battler.prototype.initialize.call(this,battler);
	this.moveToStartPosition()
};
Sprite_Actor.prototype.initMembers=function()
	{
	Sprite_Battler.prototype.initMembers.call(this);
	this._battlerName='';
	this._motion=null;
	this._motionCount=0;
	this._pattern=0;
	this.createShadowSprite();
	this.createWeaponSprite();
	this.createMainSprite();
	this.createStateSprite()
};
Sprite_Actor.prototype.createMainSprite=function()
	{
	this._mainSprite=new Sprite_Base();
	this._mainSprite.anchor.x=0.5;
	this._mainSprite.anchor.y=1;
	this.addChild(this._mainSprite);
	this._effectTarget=this._mainSprite
};
Sprite_Actor.prototype.createShadowSprite=function()
	{
	this._shadowSprite=new Sprite();
	this._shadowSprite.bitmap=ImageManager.loadSystem('Shadow2');
	this._shadowSprite.anchor.x=0.5;
	this._shadowSprite.anchor.y=0.5;
	this._shadowSprite.y=-2;
	this.addChild(this._shadowSprite)
};
Sprite_Actor.prototype.createWeaponSprite=function()
	{
	this._weaponSprite=new Sprite_Weapon();
	this.addChild(this._weaponSprite)
};
Sprite_Actor.prototype.createStateSprite=function()
	{
	this._stateSprite=new Sprite_StateOverlay();
	this.addChild(this._stateSprite)
};
Sprite_Actor.prototype.setBattler=function(battler)
	{
	Sprite_Battler.prototype.setBattler.call(this,battler);
	var changed=(battler!==this._actor);
	if(changed)
		{
		this._actor=battler;
		if(battler)
			{
			this.setActorHome(battler.index())
		}
		this.startEntryMotion();
		this._stateSprite.setup(battler)
	}
};
Sprite_Actor.prototype.moveToStartPosition=function()
	{
	this.startMove(300,0,0)
};
Sprite_Actor.prototype.setActorHome=function(index)
	{
	this.setHome(600+index*32,280+index*48)
};
Sprite_Actor.prototype.update=function()
	{
	Sprite_Battler.prototype.update.call(this);
	this.updateShadow();
	if(this._actor)
		{
		this.updateMotion()
	}
};
Sprite_Actor.prototype.updateShadow=function()
	{
	this._shadowSprite.visible=!!this._actor
};
Sprite_Actor.prototype.updateMain=function()
	{
	Sprite_Battler.prototype.updateMain.call(this);
	if(this._actor.isSpriteVisible()&&!this.isMoving())
		{
		this.updateTargetPosition()
	}
};
Sprite_Actor.prototype.setupMotion=function()
	{
	if(this._actor.isMotionRequested())
		{
		this.startMotion(this._actor.motionType());
		this._actor.clearMotion()
	}
};
Sprite_Actor.prototype.setupWeaponAnimation=function()
	{
	if(this._actor.isWeaponAnimationRequested())
		{
		this._weaponSprite.setup(this._actor.weaponImageId());
		this._actor.clearWeaponAnimation()
	}
};
Sprite_Actor.prototype.startMotion=function(motionType)
	{
	var newMotion=Sprite_Actor.MOTIONS[motionType];
	if(this._motion!==newMotion)
		{
		this._motion=newMotion;
		this._motionCount=0;
		this._pattern=0
	}
};
Sprite_Actor.prototype.updateTargetPosition=function()
	{
	if(this._actor.isInputting()||this._actor.isActing())
		{
		this.stepForward()
	}
	else if(this._actor.canMove()&&BattleManager.isEscaped())
		{
		this.retreat()
	}
	else if(!this.inHomePosition())
		{
		this.stepBack()
	}
};
Sprite_Actor.prototype.updateBitmap=function()
	{
	Sprite_Battler.prototype.updateBitmap.call(this);
	var name=this._actor.battlerName();
	if(this._battlerName!==name)
		{
		this._battlerName=name;
		this._mainSprite.bitmap=ImageManager.loadSvActor(name)
	}
};
Sprite_Actor.prototype.updateFrame=function()
	{
	Sprite_Battler.prototype.updateFrame.call(this);
	var bitmap=this._mainSprite.bitmap;
	if(bitmap)
		{
		var motionIndex=this._motion?this._motion.index:0;
		var pattern=this._pattern<3?this._pattern:1;
		var cw=bitmap.width/9;
		var ch=bitmap.height/6;
		var cx=Math.floor(motionIndex/6)*3+pattern;
		var cy=motionIndex%6;
		this._mainSprite.setFrame(cx*cw,cy*ch,cw,ch)
	}
};
Sprite_Actor.prototype.updateMotion=function()
	{
	this.setupMotion();
	this.setupWeaponAnimation();
	if(this._actor.isMotionRefreshRequested())
		{
		this.refreshMotion();
		this._actor.clearMotion()
	}
	this.updateMotionCount()
};
Sprite_Actor.prototype.updateMotionCount=function()
	{
	if(this._motion&&++this._motionCount>=this.motionSpeed())
		{
		if(this._motion.loop)
			{
			this._pattern=(this._pattern+1)%4
		}
		else if(this._pattern<2)
			{
			this._pattern++
		}
		else
			{
			this.refreshMotion()
		}
		this._motionCount=0
	}
};
Sprite_Actor.prototype.motionSpeed=function()
	{
	return 12
};
Sprite_Actor.prototype.refreshMotion=function()
	{
	var actor=this._actor;
	if(actor)
		{
		var stateMotion=actor.stateMotionIndex();
		if(actor.isInputting()||actor.isActing())
			{
			this.startMotion('walk')
		}
		else if(stateMotion===3)
			{
			this.startMotion('dead')
		}
		else if(stateMotion===2)
			{
			this.startMotion('sleep')
		}
		else if(actor.isChanting())
			{
			this.startMotion('chant')
		}
		else if(actor.isGuard()||actor.isGuardWaiting())
			{
			this.startMotion('guard')
		}
		else if(stateMotion===1)
			{
			this.startMotion('abnormal')
		}
		else if(actor.isDying())
			{
			this.startMotion('dying')
		}
		else if(actor.isUndecided())
			{
			this.startMotion('walk')
		}
		else
			{
			this.startMotion('wait')
		}
	}
};
Sprite_Actor.prototype.startEntryMotion=function()
	{
	if(this._actor&&this._actor.canMove())
		{
		this.startMotion('walk');
		this.startMove(0,0,30)
	}
	else if(!this.isMoving())
		{
		this.refreshMotion();
		this.startMove(0,0,0)
	}
};
Sprite_Actor.prototype.stepForward=function()
	{
	this.startMove(-48,0,12)
};
Sprite_Actor.prototype.stepBack=function()
	{
	this.startMove(0,0,12)
};
Sprite_Actor.prototype.retreat=function()
	{
	this.startMove(300,0,30)
};
Sprite_Actor.prototype.onMoveEnd=function()
	{
	Sprite_Battler.prototype.onMoveEnd.call(this);
	if(!BattleManager.isBattleEnd())
		{
		this.refreshMotion()
	}
};
Sprite_Actor.prototype.damageOffsetX=function()
	{
	return-32
};
Sprite_Actor.prototype.damageOffsetY=function()
	{
	return 0
};
function Sprite_Enemy()
	{
	this.initialize.apply(this,arguments)
}
Sprite_Enemy.prototype=Object.create(Sprite_Battler.prototype);
Sprite_Enemy.prototype.constructor=Sprite_Enemy;
Sprite_Enemy.prototype.initialize=function(battler)
	{
	Sprite_Battler.prototype.initialize.call(this,battler)
};
Sprite_Enemy.prototype.initMembers=function()
	{
	Sprite_Battler.prototype.initMembers.call(this);
	this._enemy=null;
	this._appeared=false;
	this._battlerName='';
	this._battlerHue=0;
	this._effectType=null;
	this._effectDuration=0;
	this._shake=0;
	this.createStateIconSprite()
};
Sprite_Enemy.prototype.createStateIconSprite=function()
	{
	this._stateIconSprite=new Sprite_StateIcon();
	this.addChild(this._stateIconSprite)
};
Sprite_Enemy.prototype.setBattler=function(battler)
	{
	Sprite_Battler.prototype.setBattler.call(this,battler);
	this._enemy=battler;
	this.setHome(battler.screenX(),battler.screenY());
	this._stateIconSprite.setup(battler)
};
Sprite_Enemy.prototype.update=function()
	{
	Sprite_Battler.prototype.update.call(this);
	if(this._enemy)
		{
		this.updateEffect();
		this.updateStateSprite()
	}
};
Sprite_Enemy.prototype.updateBitmap=function()
	{
	Sprite_Battler.prototype.updateBitmap.call(this);
	var name=this._enemy.battlerName();
	var hue=this._enemy.battlerHue();
	if(this._battlerName!==name||this._battlerHue!==hue)
		{
		this._battlerName=name;
		this._battlerHue=hue;
		this.loadBitmap(name,hue);
		this.initVisibility()
	}
};
Sprite_Enemy.prototype.loadBitmap=function(name,hue)
	{
	if($gameSystem.isSideView())
		{
		this.bitmap=ImageManager.loadSvEnemy(name,hue)
	}
	else
		{
		this.bitmap=ImageManager.loadEnemy(name,hue)
	}
};
Sprite_Enemy.prototype.updateFrame=function()
	{
	Sprite_Battler.prototype.updateFrame.call(this);
	var frameHeight=this.bitmap.height;
	if(this._effectType==='bossCollapse')
		{
		frameHeight=this._effectDuration
	}
	this.setFrame(0,0,this.bitmap.width,frameHeight)
};
Sprite_Enemy.prototype.updatePosition=function()
	{
	Sprite_Battler.prototype.updatePosition.call(this);
	this.x+=this._shake
};
Sprite_Enemy.prototype.updateStateSprite=function()
	{
	this._stateIconSprite.y=-Math.round((this.bitmap.height+40)*0.9);
	if(this._stateIconSprite.y<20-this.y)
		{
		this._stateIconSprite.y=20-this.y
	}
};
Sprite_Enemy.prototype.initVisibility=function()
	{
	this._appeared=this._enemy.isAlive();
	if(!this._appeared)
		{
		this.opacity=0
	}
};
Sprite_Enemy.prototype.setupEffect=function()
	{
	if(this._appeared&&this._enemy.isEffectRequested())
		{
		this.startEffect(this._enemy.effectType());
		this._enemy.clearEffect()
	}
	if(!this._appeared&&this._enemy.isAlive())
		{
		this.startEffect('appear')
	}
	else if(this._appeared&&this._enemy.isHidden())
		{
		this.startEffect('disappear')
	}
};
Sprite_Enemy.prototype.startEffect=function(effectType)
	{
	this._effectType=effectType;
	switch(this._effectType)
		{
		case'appear':this.startAppear();
		break;
		case'disappear':this.startDisappear();
		break;
		case'whiten':this.startWhiten();
		break;
		case'blink':this.startBlink();
		break;
		case'collapse':this.startCollapse();
		break;
		case'bossCollapse':this.startBossCollapse();
		break;
		case'instantCollapse':this.startInstantCollapse();
		break
	}
	this.revertToNormal()
};
Sprite_Enemy.prototype.startAppear=function()
	{
	this._effectDuration=16;
	this._appeared=true
};
Sprite_Enemy.prototype.startDisappear=function()
	{
	this._effectDuration=32;
	this._appeared=false
};
Sprite_Enemy.prototype.startWhiten=function()
	{
	this._effectDuration=16
};
Sprite_Enemy.prototype.startBlink=function()
	{
	this._effectDuration=20
};
Sprite_Enemy.prototype.startCollapse=function()
	{
	this._effectDuration=32;
	this._appeared=false
};
Sprite_Enemy.prototype.startBossCollapse=function()
	{
	this._effectDuration=this.bitmap.height;
	this._appeared=false
};
Sprite_Enemy.prototype.startInstantCollapse=function()
	{
	this._effectDuration=16;
	this._appeared=false
};
Sprite_Enemy.prototype.updateEffect=function()
	{
	this.setupEffect();
	if(this._effectDuration>0)
		{
		this._effectDuration--;
		switch(this._effectType)
			{
			case'whiten':this.updateWhiten();
			break;
			case'blink':this.updateBlink();
			break;
			case'appear':this.updateAppear();
			break;
			case'disappear':this.updateDisappear();
			break;
			case'collapse':this.updateCollapse();
			break;
			case'bossCollapse':this.updateBossCollapse();
			break;
			case'instantCollapse':this.updateInstantCollapse();
			break
		}
		if(this._effectDuration===0)
			{
			this._effectType=null
		}
	}
};
Sprite_Enemy.prototype.isEffecting=function()
	{
	return this._effectType!==null
};
Sprite_Enemy.prototype.revertToNormal=function()
	{
	this._shake=0;
	this.blendMode=0;
	this.opacity=255;
	this.setBlendColor([0,0,0,0])
};
Sprite_Enemy.prototype.updateWhiten=function()
	{
	var alpha=128-(16-this._effectDuration)*10;
	this.setBlendColor([255,255,255,alpha])
};
Sprite_Enemy.prototype.updateBlink=function()
	{
	this.opacity=(this._effectDuration%10<5)?255:0
};
Sprite_Enemy.prototype.updateAppear=function()
	{
	this.opacity=(16-this._effectDuration)*16
};
Sprite_Enemy.prototype.updateDisappear=function()
	{
	this.opacity=256-(32-this._effectDuration)*10
};
Sprite_Enemy.prototype.updateCollapse=function()
	{
	this.blendMode=Graphics.BLEND_ADD;
	this.setBlendColor([255,128,128,128]);
	this.opacity*=this._effectDuration/(this._effectDuration+1)
};
Sprite_Enemy.prototype.updateBossCollapse=function()
	{
	this._shake=this._effectDuration%2*4-2;
	this.blendMode=Graphics.BLEND_ADD;
	this.opacity*=this._effectDuration/(this._effectDuration+1);
	this.setBlendColor([255,255,255,255-this.opacity]);
	if(this._effectDuration%20===19)
		{
		SoundManager.playBossCollapse2()
	}
};
Sprite_Enemy.prototype.updateInstantCollapse=function()
	{
	this.opacity=0
};
Sprite_Enemy.prototype.damageOffsetX=function()
	{
	return 0
};
Sprite_Enemy.prototype.damageOffsetY=function()
	{
	return-8
};
function Sprite_Animation()
	{
	this.initialize.apply(this,arguments)
}
Sprite_Animation.prototype=Object.create(Sprite.prototype);
Sprite_Animation.prototype.constructor=Sprite_Animation;
Sprite_Animation._checker1=
	{
};
Sprite_Animation._checker2=
	{
};
Sprite_Animation.prototype.initialize=function()
	{
	Sprite.prototype.initialize.call(this);
	this.initMembers()
};
Sprite_Animation.prototype.initMembers=function()
	{
	this._target=null;
	this._animation=null;
	this._mirror=false;
	this._delay=0;
	this._rate=4;
	this._duration=0;
	this._flashColor=[0,0,0,0];
	this._flashDuration=0;
	this._screenFlashDuration=0;
	this._hidingDuration=0;
	this._bitmap1=null;
	this._bitmap2=null;
	this._cellSprites=[];
	this._screenFlashSprite=null;
	this._duplicated=false;
	this.z=8
};
Sprite_Animation.prototype.setup=function(target,animation,mirror,delay)
	{
	this._target=target;
	this._animation=animation;
	this._mirror=mirror;
	this._delay=delay;
	if(this._animation)
		{
		this.remove();
		this.setupRate();
		this.setupDuration();
		this.loadBitmaps();
		this.createSprites()
	}
};
Sprite_Animation.prototype.remove=function()
	{
	if(this._target.parent.removeChild(this))
		{
		this._target.setBlendColor([0,0,0,0]);
		this._target.show()
	}
};
Sprite_Animation.prototype.setupRate=function()
	{
	this._rate=4
};
Sprite_Animation.prototype.setupDuration=function()
	{
	this._duration=this._animation.frames.length*this._rate+1
};
Sprite_Animation.prototype.update=function()
	{
	Sprite.prototype.update.call(this);
	this.updateMain();
	this.updateFlash();
	this.updateScreenFlash();
	this.updateHiding();
	Sprite_Animation._checker1=
		{
	};
	Sprite_Animation._checker2=
		{
	}
};
Sprite_Animation.prototype.updateFlash=function()
	{
	if(this._flashDuration>0)
		{
		var d=this._flashDuration--;
		this._flashColor[3]*=(d-1)/d;
		this._target.setBlendColor(this._flashColor)
	}
};
Sprite_Animation.prototype.updateScreenFlash=function()
	{
	if(this._screenFlashDuration>0)
		{
		var d=this._screenFlashDuration--;
		if(this._screenFlashSprite)
			{
			this._screenFlashSprite.x=-this.absoluteX();
			this._screenFlashSprite.y=-this.absoluteY();
			this._screenFlashSprite.opacity*=(d-1)/d;
			this._screenFlashSprite.visible=(this._screenFlashDuration>0)
		}
	}
};
Sprite_Animation.prototype.absoluteX=function()
	{
	var x=0;
	var object=this;
	while(object)
		{
		x+=object.x;
		object=object.parent
	}
	return x
};
Sprite_Animation.prototype.absoluteY=function()
	{
	var y=0;
	var object=this;
	while(object)
		{
		y+=object.y;
		object=object.parent
	}
	return y
};
Sprite_Animation.prototype.updateHiding=function()
	{
	if(this._hidingDuration>0)
		{
		this._hidingDuration--;
		if(this._hidingDuration===0)
			{
			this._target.show()
		}
	}
};
Sprite_Animation.prototype.isPlaying=function()
	{
	return this._duration>0
};
Sprite_Animation.prototype.loadBitmaps=function()
	{
	var name1=this._animation.animation1Name;
	var name2=this._animation.animation2Name;
	var hue1=this._animation.animation1Hue;
	var hue2=this._animation.animation2Hue;
	this._bitmap1=ImageManager.loadAnimation(name1,hue1);
	this._bitmap2=ImageManager.loadAnimation(name2,hue2)
};
Sprite_Animation.prototype.isReady=function()
	{
	return ImageManager.isReady()
};
Sprite_Animation.prototype.createSprites=function()
	{
	if(!Sprite_Animation._checker2[this._animation])
		{
		this.createCellSprites();
		if(this._animation.position===3)
			{
			Sprite_Animation._checker2[this._animation]=true
		}
		this.createScreenFlashSprite()
	}
	if(Sprite_Animation._checker1[this._animation])
		{
		this._duplicated=true
	}
	else
		{
		this._duplicated=false;
		if(this._animation.position===3)
			{
			Sprite_Animation._checker1[this._animation]=true
		}
	}
};
Sprite_Animation.prototype.createCellSprites=function()
	{
	this._cellSprites=[];
	for(var i=0;
	i<16;
	i++)
		{
		var sprite=new Sprite();
		sprite.anchor.x=0.5;
		sprite.anchor.y=0.5;
		this._cellSprites.push(sprite);
		this.addChild(sprite)
	}
};
Sprite_Animation.prototype.createScreenFlashSprite=function()
	{
	this._screenFlashSprite=new ScreenSprite();
	this.addChild(this._screenFlashSprite)
};
Sprite_Animation.prototype.updateMain=function()
	{
	if(this.isPlaying()&&this.isReady())
		{
		if(this._delay>0)
			{
			this._delay--
		}
		else
			{
			this._duration--;
			this.updatePosition();
			if(this._duration%this._rate===0)
				{
				this.updateFrame()
			}
		}
	}
};
Sprite_Animation.prototype.updatePosition=function()
	{
	if(this._animation.position===3)
		{
		this.x=this.parent.width/2;
		this.y=this.parent.height/2
	}
	else
		{
		this.x=this._target.x;
		this.y=this._target.y;
		if(this._animation.position===0)
			{
			this.y-=this._target.height
		}
		else if(this._animation.position===1)
			{
			this.y-=this._target.height/2
		}
	}
};
Sprite_Animation.prototype.updateFrame=function()
	{
	if(this._duration>0)
		{
		var frameIndex=this.currentFrameIndex();
		this.updateAllCellSprites(this._animation.frames[frameIndex]);
		this._animation.timings.forEach(function(timing)
			{
			if(timing.frame===frameIndex)
				{
				this.processTimingData(timing)
			}
		}
		,this)
	}
};
Sprite_Animation.prototype.currentFrameIndex=function()
	{
	return(this._animation.frames.length-Math.floor((this._duration+this._rate-1)/this._rate))
};
Sprite_Animation.prototype.updateAllCellSprites=function(frame)
	{
	for(var i=0;
	i<this._cellSprites.length;
	i++)
		{
		var sprite=this._cellSprites[i];
		if(i<frame.length)
			{
			this.updateCellSprite(sprite,frame[i])
		}
		else
			{
			sprite.visible=false
		}
	}
};
Sprite_Animation.prototype.updateCellSprite=function(sprite,cell)
	{
	var pattern=cell[0];
	if(pattern>=0)
		{
		var sx=pattern%5*192;
		var sy=Math.floor(pattern%100/5)*192;
		sprite.bitmap=pattern<100?this._bitmap1:this._bitmap2;
		sprite.setFrame(sx,sy,192,192);
		sprite.x=cell[1];
		sprite.y=cell[2];
		if(this._mirror)
			{
			sprite.x*=-1
		}
		sprite.rotation=cell[4]*Math.PI/180;
		sprite.scale.x=cell[3]/100;
		if(cell[5]===(this._mirror?0:1))
			{
			sprite.scale.x*=-1
		}
		sprite.scale.y=cell[3]/100;
		sprite.opacity=cell[6];
		sprite.blendMode=cell[7];
		sprite.visible=this._target.visible
	}
	else
		{
		sprite.visible=false
	}
};
Sprite_Animation.prototype.processTimingData=function(timing)
	{
	var duration=timing.flashDuration*this._rate;
	switch(timing.flashScope)
		{
		case 1:this.startFlash(timing.flashColor,duration);
		break;
		case 2:this.startScreenFlash(timing.flashColor,duration);
		break;
		case 3:this.startHiding(duration);
		break
	}
	if(!this._duplicated&&timing.se)
		{
		AudioManager.playSe(timing.se)
	}
};
Sprite_Animation.prototype.startFlash=function(color,duration)
	{
	this._flashColor=color.clone();
	this._flashDuration=duration
};
Sprite_Animation.prototype.startScreenFlash=function(color,duration)
	{
	this._screenFlashDuration=duration;
	if(this._screenFlashSprite)
		{
		this._screenFlashSprite.setColor(color[0],color[1],color[2]);
		this._screenFlashSprite.opacity=color[3]
	}
};
Sprite_Animation.prototype.startHiding=function(duration)
	{
	this._hidingDuration=duration;
	this._target.hide()
};
function Sprite_Damage()
	{
	this.initialize.apply(this,arguments)
}
Sprite_Damage.prototype=Object.create(Sprite.prototype);
Sprite_Damage.prototype.constructor=Sprite_Damage;
Sprite_Damage.prototype.initialize=function()
	{
	Sprite.prototype.initialize.call(this);
	this._duration=90;
	this._flashColor=[0,0,0,0];
	this._flashDuration=0;
	this._damageBitmap=ImageManager.loadSystem('Damage')
};
Sprite_Damage.prototype.setup=function(target)
	{
	var result=target.result();
	if(result.missed||result.evaded)
		{
		this.createMiss()
	}
	else if(result.hpAffected)
		{
		this.createDigits(0,result.hpDamage)
	}
	else if(target.isAlive()&&result.mpDamage!==0)
		{
		this.createDigits(2,result.mpDamage)
	}
	if(result.critical)
		{
		this.setupCriticalEffect()
	}
};
Sprite_Damage.prototype.setupCriticalEffect=function()
	{
	this._flashColor=[255,0,0,160];
	this._flashDuration=60
};
Sprite_Damage.prototype.digitWidth=function()
	{
	return this._damageBitmap?this._damageBitmap.width/10:0
};
Sprite_Damage.prototype.digitHeight=function()
	{
	return this._damageBitmap?this._damageBitmap.height/5:0
};
Sprite_Damage.prototype.createMiss=function()
	{
	var w=this.digitWidth();
	var h=this.digitHeight();
	var sprite=this.createChildSprite();
	sprite.setFrame(0,4*h,4*w,h);
	sprite.dy=0
};
Sprite_Damage.prototype.createDigits=function(baseRow,value)
	{
	var string=Math.abs(value).toString();
	var row=baseRow+(value<0?1:0);
	var w=this.digitWidth();
	var h=this.digitHeight();
	for(var i=0;
	i<string.length;
	i++)
		{
		var sprite=this.createChildSprite();
		var n=Number(string[i]);
		sprite.setFrame(n*w,row*h,w,h);
		sprite.x=(i-(string.length-1)/2)*w;
		sprite.dy=-i
	}
};
Sprite_Damage.prototype.createChildSprite=function()
	{
	var sprite=new Sprite();
	sprite.bitmap=this._damageBitmap;
	sprite.anchor.x=0.5;
	sprite.anchor.y=1;
	sprite.y=-40;
	sprite.ry=sprite.y;
	this.addChild(sprite);
	return sprite
};
Sprite_Damage.prototype.update=function()
	{
	Sprite.prototype.update.call(this);
	if(this._duration>0)
		{
		this._duration--;
		for(var i=0;
		i<this.children.length;
		i++)
			{
			this.updateChild(this.children[i])
		}
	}
	this.updateFlash();
	this.updateOpacity()
};
Sprite_Damage.prototype.updateChild=function(sprite)
	{
	sprite.dy+=0.5;
	sprite.ry+=sprite.dy;
	if(sprite.ry>=0)
		{
		sprite.ry=0;
		sprite.dy*=-0.6
	}
	sprite.y=Math.round(sprite.ry);
	sprite.setBlendColor(this._flashColor)
};
Sprite_Damage.prototype.updateFlash=function()
	{
	if(this._flashDuration>0)
		{
		var d=this._flashDuration--;
		this._flashColor[3]*=(d-1)/d
	}
};
Sprite_Damage.prototype.updateOpacity=function()
	{
	if(this._duration<10)
		{
		this.opacity=255*this._duration/10
	}
};
Sprite_Damage.prototype.isPlaying=function()
	{
	return this._duration>0
};
function Sprite_StateIcon()
	{
	this.initialize.apply(this,arguments)
}
Sprite_StateIcon.prototype=Object.create(Sprite.prototype);
Sprite_StateIcon.prototype.constructor=Sprite_StateIcon;
Sprite_StateIcon.prototype.initialize=function()
	{
	Sprite.prototype.initialize.call(this);
	this.initMembers();
	this.loadBitmap()
};
Sprite_StateIcon._iconWidth=32;
Sprite_StateIcon._iconHeight=32;
Sprite_StateIcon.prototype.initMembers=function()
	{
	this._battler=null;
	this._iconIndex=0;
	this._animationCount=0;
	this._animationIndex=0;
	this.anchor.x=0.5;
	this.anchor.y=0.5
};
Sprite_StateIcon.prototype.loadBitmap=function()
	{
	this.bitmap=ImageManager.loadSystem('IconSet');
	this.setFrame(0,0,0,0)
};
Sprite_StateIcon.prototype.setup=function(battler)
	{
	this._battler=battler
};
Sprite_StateIcon.prototype.update=function()
	{
	Sprite.prototype.update.call(this);
	this._animationCount++;
	if(this._animationCount>=this.animationWait())
		{
		this.updateIcon();
		this.updateFrame();
		this._animationCount=0
	}
};
Sprite_StateIcon.prototype.animationWait=function()
	{
	return 40
};
Sprite_StateIcon.prototype.updateIcon=function()
	{
	var icons=[];
	if(this._battler&&this._battler.isAlive())
		{
		icons=this._battler.allIcons()
	}
	if(icons.length>0)
		{
		this._animationIndex++;
		if(this._animationIndex>=icons.length)
			{
			this._animationIndex=0
		}
		this._iconIndex=icons[this._animationIndex]
	}
	else
		{
		this._animationIndex=0;
		this._iconIndex=0
	}
};
Sprite_StateIcon.prototype.updateFrame=function()
	{
	var pw=Sprite_StateIcon._iconWidth;
	var ph=Sprite_StateIcon._iconHeight;
	var sx=this._iconIndex%16*pw;
	var sy=Math.floor(this._iconIndex/16)*ph;
	this.setFrame(sx,sy,pw,ph)
};
function Sprite_StateOverlay()
	{
	this.initialize.apply(this,arguments)
}
Sprite_StateOverlay.prototype=Object.create(Sprite_Base.prototype);
Sprite_StateOverlay.prototype.constructor=Sprite_StateOverlay;
Sprite_StateOverlay.prototype.initialize=function()
	{
	Sprite_Base.prototype.initialize.call(this);
	this.initMembers();
	this.loadBitmap()
};
Sprite_StateOverlay.prototype.initMembers=function()
	{
	this._battler=null;
	this._overlayIndex=0;
	this._animationCount=0;
	this._pattern=0;
	this.anchor.x=0.5;
	this.anchor.y=1
};
Sprite_StateOverlay.prototype.loadBitmap=function()
	{
	this.bitmap=ImageManager.loadSystem('States');
	this.setFrame(0,0,0,0)
};
Sprite_StateOverlay.prototype.setup=function(battler)
	{
	this._battler=battler
};
Sprite_StateOverlay.prototype.update=function()
	{
	Sprite_Base.prototype.update.call(this);
	this._animationCount++;
	if(this._animationCount>=this.animationWait())
		{
		this.updatePattern();
		this.updateFrame();
		this._animationCount=0
	}
};
Sprite_StateOverlay.prototype.animationWait=function()
	{
	return 8
};
Sprite_StateOverlay.prototype.updatePattern=function()
	{
	this._pattern++;
	this._pattern%=8;
	if(this._battler)
		{
		this._overlayIndex=this._battler.stateOverlayIndex()
	}
};
Sprite_StateOverlay.prototype.updateFrame=function()
	{
	if(this._overlayIndex>0)
		{
		var w=96;
		var h=96;
		var sx=this._pattern*w;
		var sy=(this._overlayIndex-1)*h;
		this.setFrame(sx,sy,w,h)
	}
	else
		{
		this.setFrame(0,0,0,0)
	}
};
function Sprite_Weapon()
	{
	this.initialize.apply(this,arguments)
}
Sprite_Weapon.prototype=Object.create(Sprite_Base.prototype);
Sprite_Weapon.prototype.constructor=Sprite_Weapon;
Sprite_Weapon.prototype.initialize=function()
	{
	Sprite_Base.prototype.initialize.call(this);
	this.initMembers()
};
Sprite_Weapon.prototype.initMembers=function()
	{
	this._weaponImageId=0;
	this._animationCount=0;
	this._pattern=0;
	this.anchor.x=0.5;
	this.anchor.y=1;
	this.x=-16
};
Sprite_Weapon.prototype.setup=function(weaponImageId)
	{
	this._weaponImageId=weaponImageId;
	this._animationCount=0;
	this._pattern=0;
	this.loadBitmap();
	this.updateFrame()
};
Sprite_Weapon.prototype.update=function()
	{
	Sprite_Base.prototype.update.call(this);
	this._animationCount++;
	if(this._animationCount>=this.animationWait())
		{
		this.updatePattern();
		this.updateFrame();
		this._animationCount=0
	}
};
Sprite_Weapon.prototype.animationWait=function()
	{
	return 12
};
Sprite_Weapon.prototype.updatePattern=function()
	{
	this._pattern++;
	if(this._pattern>=3)
		{
		this._weaponImageId=0
	}
};
Sprite_Weapon.prototype.loadBitmap=function()
	{
	var pageId=Math.floor((this._weaponImageId-1)/12)+1;
	if(pageId>=1)
		{
		this.bitmap=ImageManager.loadSystem('Weapons'+pageId)
	}
	else
		{
		this.bitmap=ImageManager.loadSystem('')
	}
};
Sprite_Weapon.prototype.updateFrame=function()
	{
	if(this._weaponImageId>0)
		{
		var index=(this._weaponImageId-1)%12;
		var w=96;
		var h=64;
		var sx=(Math.floor(index/6)*3+this._pattern)*w;
		var sy=Math.floor(index%6)*h;
		this.setFrame(sx,sy,w,h)
	}
	else
		{
		this.setFrame(0,0,0,0)
	}
};
Sprite_Weapon.prototype.isPlaying=function()
	{
	return this._weaponImageId>0
};
function Sprite_Balloon()
	{
	this.initialize.apply(this,arguments)
}
Sprite_Balloon.prototype=Object.create(Sprite_Base.prototype);
Sprite_Balloon.prototype.constructor=Sprite_Balloon;
Sprite_Balloon.prototype.initialize=function()
	{
	Sprite_Base.prototype.initialize.call(this);
	this.initMembers();
	this.loadBitmap()
};
Sprite_Balloon.prototype.initMembers=function()
	{
	this._balloonId=0;
	this._duration=0;
	this.anchor.x=0.5;
	this.anchor.y=1;
	this.z=7
};
Sprite_Balloon.prototype.loadBitmap=function()
	{
	this.bitmap=ImageManager.loadSystem('Balloon');
	this.setFrame(0,0,0,0)
};
Sprite_Balloon.prototype.setup=function(balloonId)
	{
	this._balloonId=balloonId;
	this._duration=8*this.speed()+this.waitTime()
};
Sprite_Balloon.prototype.update=function()
	{
	Sprite_Base.prototype.update.call(this);
	if(this._duration>0)
		{
		this._duration--;
		if(this._duration>0)
			{
			this.updateFrame()
		}
	}
};
Sprite_Balloon.prototype.updateFrame=function()
	{
	var w=48;
	var h=48;
	var sx=this.frameIndex()*w;
	var sy=(this._balloonId-1)*h;
	this.setFrame(sx,sy,w,h)
};
Sprite_Balloon.prototype.speed=function()
	{
	return 8
};
Sprite_Balloon.prototype.waitTime=function()
	{
	return 12
};
Sprite_Balloon.prototype.frameIndex=function()
	{
	var index=(this._duration-this.waitTime())/this.speed();
	return 7-Math.max(Math.floor(index),0)
};
Sprite_Balloon.prototype.isPlaying=function()
	{
	return this._duration>0
};
function Sprite_Picture()
	{
	this.initialize.apply(this,arguments)
}
Sprite_Picture.prototype=Object.create(Sprite.prototype);
Sprite_Picture.prototype.constructor=Sprite_Picture;
Sprite_Picture.prototype.initialize=function(pictureId)
	{
	Sprite.prototype.initialize.call(this);
	this._pictureId=pictureId;
	this._pictureName='';
	this.update()
};
Sprite_Picture.prototype.picture=function()
	{
	return $gameScreen.picture(this._pictureId)
};
Sprite_Picture.prototype.update=function()
	{
	Sprite.prototype.update.call(this);
	this.updateBitmap();
	if(this.visible)
		{
		this.updateOrigin();
		this.updatePosition();
		this.updateScale();
		this.updateTone();
		this.updateOther()
	}
};
Sprite_Picture.prototype.updateBitmap=function()
	{
	var picture=this.picture();
	if(picture)
		{
		var pictureName=picture.name();
		if(this._pictureName!==pictureName)
			{
			this._pictureName=pictureName;
			this.loadBitmap()
		}
		this.visible=true
	}
	else
		{
		this._pictureName='';
		this.bitmap=null;
		this.visible=false
	}
};
Sprite_Picture.prototype.updateOrigin=function()
	{
	var picture=this.picture();
	if(picture.origin()===0)
		{
		this.anchor.x=0;
		this.anchor.y=0
	}
	else
		{
		this.anchor.x=0.5;
		this.anchor.y=0.5
	}
};
Sprite_Picture.prototype.updatePosition=function()
	{
	var picture=this.picture();
	this.x=Math.floor(picture.x());
	this.y=Math.floor(picture.y())
};
Sprite_Picture.prototype.updateScale=function()
	{
	var picture=this.picture();
	this.scale.x=picture.scaleX()/100;
	this.scale.y=picture.scaleY()/100
};
Sprite_Picture.prototype.updateTone=function()
	{
	var picture=this.picture();
	if(picture.tone())
		{
		this.setColorTone(picture.tone())
	}
	else
		{
		this.setColorTone([0,0,0,0])
	}
};
Sprite_Picture.prototype.updateOther=function()
	{
	var picture=this.picture();
	this.opacity=picture.opacity();
	this.blendMode=picture.blendMode();
	this.rotation=picture.angle()*Math.PI/180
};
Sprite_Picture.prototype.loadBitmap=function()
	{
	this.bitmap=ImageManager.loadPicture(this._pictureName)
};
function Sprite_Timer()
	{
	this.initialize.apply(this,arguments)
}
Sprite_Timer.prototype=Object.create(Sprite.prototype);
Sprite_Timer.prototype.constructor=Sprite_Timer;
Sprite_Timer.prototype.initialize=function()
	{
	Sprite.prototype.initialize.call(this);
	this._seconds=0;
	this.createBitmap();
	this.update()
};
Sprite_Timer.prototype.createBitmap=function()
	{
	this.bitmap=new Bitmap(96,48);
	this.bitmap.fontSize=32
};
Sprite_Timer.prototype.update=function()
	{
	Sprite.prototype.update.call(this);
	this.updateBitmap();
	this.updatePosition();
	this.updateVisibility()
};
Sprite_Timer.prototype.updateBitmap=function()
	{
	if(this._seconds!==$gameTimer.seconds())
		{
		this._seconds=$gameTimer.seconds();
		this.redraw()
	}
};
Sprite_Timer.prototype.redraw=function()
	{
	var text=this.timerText();
	var width=this.bitmap.width;
	var height=this.bitmap.height;
	this.bitmap.clear();
	this.bitmap.drawText(text,0,0,width,height,'center')
};
Sprite_Timer.prototype.timerText=function()
	{
	var min=Math.floor(this._seconds/60)%60;
	var sec=this._seconds%60;
	return min.padZero(2)+':'+sec.padZero(2)
};
Sprite_Timer.prototype.updatePosition=function()
	{
	this.x=Graphics.width-this.bitmap.width;
	this.y=0
};
Sprite_Timer.prototype.updateVisibility=function()
	{
	this.visible=$gameTimer.isWorking()
};
function Sprite_Destination()
	{
	this.initialize.apply(this,arguments)
}
Sprite_Destination.prototype=Object.create(Sprite.prototype);
Sprite_Destination.prototype.constructor=Sprite_Destination;
Sprite_Destination.prototype.initialize=function()
	{
	Sprite.prototype.initialize.call(this);
	this.createBitmap();
	this._frameCount=0
};
Sprite_Destination.prototype.update=function()
	{
	Sprite.prototype.update.call(this);
	if($gameTemp.isDestinationValid())
		{
		this.updatePosition();
		this.updateAnimation();
		this.visible=true
	}
	else
		{
		this._frameCount=0;
		this.visible=false
	}
};
Sprite_Destination.prototype.createBitmap=function()
	{
	var tileWidth=$gameMap.tileWidth();
	var tileHeight=$gameMap.tileHeight();
	this.bitmap=new Bitmap(tileWidth,tileHeight);
	this.bitmap.fillAll('white');
	this.anchor.x=0.5;
	this.anchor.y=0.5;
	this.blendMode=Graphics.BLEND_ADD
};
Sprite_Destination.prototype.updatePosition=function()
	{
	var tileWidth=$gameMap.tileWidth();
	var tileHeight=$gameMap.tileHeight();
	var x=$gameTemp.destinationX();
	var y=$gameTemp.destinationY();
	this.x=($gameMap.adjustX(x)+0.5)*tileWidth;
	this.y=($gameMap.adjustY(y)+0.5)*tileHeight
};
Sprite_Destination.prototype.updateAnimation=function()
	{
	this._frameCount++;
	this._frameCount%=20;
	this.opacity=(20-this._frameCount)*6;
	this.scale.x=1+this._frameCount/20;
	this.scale.y=this.scale.x
};
function Spriteset_Base()
	{
	this.initialize.apply(this,arguments)
}
Spriteset_Base.prototype=Object.create(Sprite.prototype);
Spriteset_Base.prototype.constructor=Spriteset_Base;
Spriteset_Base.prototype.initialize=function()
	{
	Sprite.prototype.initialize.call(this);
	this.setFrame(0,0,Graphics.width,Graphics.height);
	this._tone=[0,0,0,0];
	this.opaque=true;
	this.createLowerLayer();
	this.createToneChanger();
	this.createUpperLayer();
	this.update()
};
Spriteset_Base.prototype.createLowerLayer=function()
	{
	this.createBaseSprite()
};
Spriteset_Base.prototype.createUpperLayer=function()
	{
	this.createPictures();
	this.createTimer();
	this.createScreenSprites()
};
Spriteset_Base.prototype.update=function()
	{
	Sprite.prototype.update.call(this);
	this.updateScreenSprites();
	this.updateToneChanger();
	this.updatePosition()
};
Spriteset_Base.prototype.createBaseSprite=function()
	{
	this._baseSprite=new Sprite();
	this._baseSprite.setFrame(0,0,this.width,this.height);
	this._blackScreen=new ScreenSprite();
	this._blackScreen.opacity=255;
	this.addChild(this._baseSprite);
	this._baseSprite.addChild(this._blackScreen)
};
Spriteset_Base.prototype.createToneChanger=function()
	{
	if(Graphics.isWebGL())
		{
		this.createWebGLToneChanger()
	}
	else
		{
		this.createCanvasToneChanger()
	}
};
Spriteset_Base.prototype.createWebGLToneChanger=function()
	{
	var margin=48;
	var width=Graphics.width+margin*2;
	var height=Graphics.height+margin*2;
	this._toneFilter=new ToneFilter();
	this._baseSprite.filters=[this._toneFilter];
	this._baseSprite.filterArea=new Rectangle(-margin,-margin,width,height)
};
Spriteset_Base.prototype.createCanvasToneChanger=function()
	{
	this._toneSprite=new ToneSprite();
	this.addChild(this._toneSprite)
};
Spriteset_Base.prototype.createPictures=function()
	{
	var width=Graphics.boxWidth;
	var height=Graphics.boxHeight;
	var x=(Graphics.width-width)/2;
	var y=(Graphics.height-height)/2;
	this._pictureContainer=new Sprite();
	this._pictureContainer.setFrame(x,y,width,height);
	for(var i=1;
	i<=$gameScreen.maxPictures();
	i++)
		{
		this._pictureContainer.addChild(new Sprite_Picture(i))
	}
	this.addChild(this._pictureContainer)
};
Spriteset_Base.prototype.createTimer=function()
	{
	this._timerSprite=new Sprite_Timer();
	this.addChild(this._timerSprite)
};
Spriteset_Base.prototype.createScreenSprites=function()
	{
	this._flashSprite=new ScreenSprite();
	this._fadeSprite=new ScreenSprite();
	this.addChild(this._flashSprite);
	this.addChild(this._fadeSprite)
};
Spriteset_Base.prototype.updateScreenSprites=function()
	{
	var color=$gameScreen.flashColor();
	this._flashSprite.setColor(color[0],color[1],color[2]);
	this._flashSprite.opacity=color[3];
	this._fadeSprite.opacity=255-$gameScreen.brightness()
};
Spriteset_Base.prototype.updateToneChanger=function()
	{
	var tone=$gameScreen.tone();
	if(!this._tone.equals(tone))
		{
		this._tone=tone.clone();
		if(Graphics.isWebGL())
			{
			this.updateWebGLToneChanger()
		}
		else
			{
			this.updateCanvasToneChanger()
		}
	}
};
Spriteset_Base.prototype.updateWebGLToneChanger=function()
	{
	var tone=this._tone;
	this._toneFilter.reset();
	this._toneFilter.adjustTone(tone[0],tone[1],tone[2]);
	this._toneFilter.adjustSaturation(-tone[3])
};
Spriteset_Base.prototype.updateCanvasToneChanger=function()
	{
	var tone=this._tone;
	this._toneSprite.setTone(tone[0],tone[1],tone[2],tone[3])
};
Spriteset_Base.prototype.updatePosition=function()
	{
	var screen=$gameScreen;
	var scale=screen.zoomScale();
	this.scale.x=scale;
	this.scale.y=scale;
	this.x=Math.round(-screen.zoomX()*(scale-1));
	this.y=Math.round(-screen.zoomY()*(scale-1));
	this.x+=Math.round(screen.shake())
};
function Spriteset_Map()
	{
	this.initialize.apply(this,arguments)
}
Spriteset_Map.prototype=Object.create(Spriteset_Base.prototype);
Spriteset_Map.prototype.constructor=Spriteset_Map;
Spriteset_Map.prototype.initialize=function()
	{
	Spriteset_Base.prototype.initialize.call(this)
};
Spriteset_Map.prototype.createLowerLayer=function()
	{
	Spriteset_Base.prototype.createLowerLayer.call(this);
	this.createParallax();
	this.createTilemap();
	this.createCharacters();
	this.createShadow();
	this.createDestination();
	this.createWeather()
};
Spriteset_Map.prototype.update=function()
	{
	Spriteset_Base.prototype.update.call(this);
	this.updateTileset();
	this.updateParallax();
	this.updateTilemap();
	this.updateShadow();
	this.updateWeather()
};
Spriteset_Map.prototype.hideCharacters=function()
	{
	for(var i=0;
	i<this._characterSprites.length;
	i++)
		{
		var sprite=this._characterSprites[i];
		if(!sprite.isTile())
			{
			sprite.hide()
		}
	}
};
Spriteset_Map.prototype.createParallax=function()
	{
	this._parallax=new TilingSprite();
	this._parallax.move(0,0,Graphics.width,Graphics.height);
	this._baseSprite.addChild(this._parallax)
};
Spriteset_Map.prototype.createTilemap=function()
	{
	this._tilemap=new Tilemap();
	this._tilemap.tileWidth=$gameMap.tileWidth();
	this._tilemap.tileHeight=$gameMap.tileHeight();
	this._tilemap.setData($gameMap.width(),$gameMap.height(),$gameMap.data());
	this._tilemap.horizontalWrap=$gameMap.isLoopHorizontal();
	this._tilemap.verticalWrap=$gameMap.isLoopVertical();
	this.loadTileset();
	this._baseSprite.addChild(this._tilemap)
};
Spriteset_Map.prototype.loadTileset=function()
	{
	this._tileset=$gameMap.tileset();
	if(this._tileset)
		{
		var tilesetNames=this._tileset.tilesetNames;
		for(var i=0;
		i<tilesetNames.length;
		i++)
			{
			this._tilemap.bitmaps[i]=ImageManager.loadTileset(tilesetNames[i])
		}
		this._tilemap.flags=$gameMap.tilesetFlags();
		this._tilemap.refresh()
	}
};
Spriteset_Map.prototype.createCharacters=function()
	{
	this._characterSprites=[];
	$gameMap.events().forEach(function(event)
		{
		this._characterSprites.push(new Sprite_Character(event))
	}
	,this);
	$gameMap.vehicles().forEach(function(vehicle)
		{
		this._characterSprites.push(new Sprite_Character(vehicle))
	}
	,this);
	$gamePlayer.followers().reverseEach(function(follower)
		{
		this._characterSprites.push(new Sprite_Character(follower))
	}
	,this);
	this._characterSprites.push(new Sprite_Character($gamePlayer));
	for(var i=0;
	i<this._characterSprites.length;
	i++)
		{
		this._tilemap.addChild(this._characterSprites[i])
	}
};
Spriteset_Map.prototype.createShadow=function()
	{
	this._shadowSprite=new Sprite();
	this._shadowSprite.bitmap=ImageManager.loadSystem('Shadow1');
	this._shadowSprite.anchor.x=0.5;
	this._shadowSprite.anchor.y=1;
	this._shadowSprite.z=6;
	this._tilemap.addChild(this._shadowSprite)
};
Spriteset_Map.prototype.createDestination=function()
	{
	this._destinationSprite=new Sprite_Destination();
	this._destinationSprite.z=9;
	this._tilemap.addChild(this._destinationSprite)
};
Spriteset_Map.prototype.createWeather=function()
	{
	this._weather=new Weather();
	this.addChild(this._weather)
};
Spriteset_Map.prototype.updateTileset=function()
	{
	if(this._tileset!==$gameMap.tileset())
		{
		this.loadTileset()
	}
};
Spriteset_Map.prototype.updateParallax=function()
	{
	if(this._parallaxName!==$gameMap.parallaxName())
		{
		this._parallaxName=$gameMap.parallaxName();
		this._parallax.bitmap=ImageManager.loadParallax(this._parallaxName)
	}
	if(this._parallax.bitmap)
		{
		this._parallax.origin.x=$gameMap.parallaxOx();
		this._parallax.origin.y=$gameMap.parallaxOy()
	}
};
Spriteset_Map.prototype.updateTilemap=function()
	{
	this._tilemap.origin.x=$gameMap.displayX()*$gameMap.tileWidth();
	this._tilemap.origin.y=$gameMap.displayY()*$gameMap.tileHeight()
};
Spriteset_Map.prototype.updateShadow=function()
	{
	var airship=$gameMap.airship();
	this._shadowSprite.x=airship.shadowX();
	this._shadowSprite.y=airship.shadowY();
	this._shadowSprite.opacity=airship.shadowOpacity()
};
Spriteset_Map.prototype.updateWeather=function()
	{
	this._weather.type=$gameScreen.weatherType();
	this._weather.power=$gameScreen.weatherPower();
	this._weather.origin.x=$gameMap.displayX()*$gameMap.tileWidth();
	this._weather.origin.y=$gameMap.displayY()*$gameMap.tileHeight()
};
function Spriteset_Battle()
	{
	this.initialize.apply(this,arguments)
}
Spriteset_Battle.prototype=Object.create(Spriteset_Base.prototype);
Spriteset_Battle.prototype.constructor=Spriteset_Battle;
Spriteset_Battle.prototype.initialize=function()
	{
	Spriteset_Base.prototype.initialize.call(this);
	this._battlebackLocated=false
};
Spriteset_Battle.prototype.createLowerLayer=function()
	{
	Spriteset_Base.prototype.createLowerLayer.call(this);
	this.createBackground();
	this.createBattleField();
	this.createBattleback();
	this.createEnemies();
	this.createActors()
};
Spriteset_Battle.prototype.createBackground=function()
	{
	this._backgroundSprite=new Sprite();
	this._backgroundSprite.bitmap=SceneManager.backgroundBitmap();
	this._baseSprite.addChild(this._backgroundSprite)
};
Spriteset_Battle.prototype.update=function()
	{
	Spriteset_Base.prototype.update.call(this);
	this.updateActors();
	this.updateBattleback()
};
Spriteset_Battle.prototype.createBattleField=function()
	{
	var width=Graphics.boxWidth;
	var height=Graphics.boxHeight;
	var x=(Graphics.width-width)/2;
	var y=(Graphics.height-height)/2;
	this._battleField=new Sprite();
	this._battleField.setFrame(x,y,width,height);
	this._battleField.x=x;
	this._battleField.y=y;
	this._baseSprite.addChild(this._battleField)
};
Spriteset_Battle.prototype.createBattleback=function()
	{
	var margin=32;
	var x=-this._battleField.x-margin;
	var y=-this._battleField.y-margin;
	var width=Graphics.width+margin*2;
	var height=Graphics.height+margin*2;
	this._back1Sprite=new TilingSprite();
	this._back2Sprite=new TilingSprite();
	this._back1Sprite.bitmap=this.battleback1Bitmap();
	this._back2Sprite.bitmap=this.battleback2Bitmap();
	this._back1Sprite.move(x,y,width,height);
	this._back2Sprite.move(x,y,width,height);
	this._battleField.addChild(this._back1Sprite);
	this._battleField.addChild(this._back2Sprite)
};
Spriteset_Battle.prototype.updateBattleback=function()
	{
	if(!this._battlebackLocated)
		{
		this.locateBattleback();
		this._battlebackLocated=true
	}
};
Spriteset_Battle.prototype.locateBattleback=function()
	{
	var width=this._battleField.width;
	var height=this._battleField.height;
	var sprite1=this._back1Sprite;
	var sprite2=this._back2Sprite;
	sprite1.origin.x=sprite1.x+(sprite1.bitmap.width-width)/2;
	sprite2.origin.x=sprite1.y+(sprite2.bitmap.width-width)/2;
	if($gameSystem.isSideView())
		{
		sprite1.origin.y=sprite1.x+sprite1.bitmap.height-height;
		sprite2.origin.y=sprite1.y+sprite2.bitmap.height-height
	}
};
Spriteset_Battle.prototype.battleback1Bitmap=function()
	{
	return ImageManager.loadBattleback1(this.battleback1Name())
};
Spriteset_Battle.prototype.battleback2Bitmap=function()
	{
	return ImageManager.loadBattleback2(this.battleback2Name())
};
Spriteset_Battle.prototype.battleback1Name=function()
	{
	if(BattleManager.isBattleTest())
		{
		return $dataSystem.battleback1Name
	}
	else if($gameMap.battleback1Name())
		{
		return $gameMap.battleback1Name()
	}
	else if($gameMap.isOverworld())
		{
		return this.overworldBattleback1Name()
	}
	else
		{
		return''
	}
};
Spriteset_Battle.prototype.battleback2Name=function()
	{
	if(BattleManager.isBattleTest())
		{
		return $dataSystem.battleback2Name
	}
	else if($gameMap.battleback2Name())
		{
		return $gameMap.battleback2Name()
	}
	else if($gameMap.isOverworld())
		{
		return this.overworldBattleback2Name()
	}
	else
		{
		return''
	}
};
Spriteset_Battle.prototype.overworldBattleback1Name=function()
	{
	if($gamePlayer.isInVehicle())
		{
		return this.shipBattleback1Name()
	}
	else
		{
		return this.normalBattleback1Name()
	}
};
Spriteset_Battle.prototype.overworldBattleback2Name=function()
	{
	if($gamePlayer.isInVehicle())
		{
		return this.shipBattleback2Name()
	}
	else
		{
		return this.normalBattleback2Name()
	}
};
Spriteset_Battle.prototype.normalBattleback1Name=function()
	{
	return(this.terrainBattleback1Name(this.autotileType(1))||this.terrainBattleback1Name(this.autotileType(0))||this.defaultBattleback1Name())
};
Spriteset_Battle.prototype.normalBattleback2Name=function()
	{
	return(this.terrainBattleback2Name(this.autotileType(1))||this.terrainBattleback2Name(this.autotileType(0))||this.defaultBattleback2Name())
};
Spriteset_Battle.prototype.terrainBattleback1Name=function(type)
	{
	switch(type)
		{
		case 24:case 25:return'Wasteland';
		case 26:case 27:return'DirtField';
		case 32:case 33:return'Desert';
		case 34:return'Lava1';
		case 35:return'Lava2';
		case 40:case 41:return'Snowfield';
		case 42:return'Clouds';
		case 4:case 5:return'PoisonSwamp';
		default:return null
	}
};
Spriteset_Battle.prototype.terrainBattleback2Name=function(type)
	{
	switch(type)
		{
		case 20:case 21:return'Forest';
		case 22:case 30:case 38:return'Cliff';
		case 24:case 25:case 26:case 27:return'Wasteland';
		case 32:case 33:return'Desert';
		case 34:case 35:return'Lava';
		case 40:case 41:return'Snowfield';
		case 42:return'Clouds';
		case 4:case 5:return'PoisonSwamp'
	}
};
Spriteset_Battle.prototype.defaultBattleback1Name=function()
	{
	return'Grassland'
};
Spriteset_Battle.prototype.defaultBattleback2Name=function()
	{
	return'Grassland'
};
Spriteset_Battle.prototype.shipBattleback1Name=function()
	{
	return'Ship'
};
Spriteset_Battle.prototype.shipBattleback2Name=function()
	{
	return'Ship'
};
Spriteset_Battle.prototype.autotileType=function(z)
	{
	return $gameMap.autotileType($gamePlayer.x,$gamePlayer.y,z)
};
Spriteset_Battle.prototype.createEnemies=function()
	{
	var enemies=$gameTroop.members();
	var sprites=[];
	for(var i=0;
	i<enemies.length;
	i++)
		{
		sprites[i]=new Sprite_Enemy(enemies[i])
	}
	sprites.sort(this.compareEnemySprite.bind(this));
	for(var j=0;
	j<sprites.length;
	j++)
		{
		this._battleField.addChild(sprites[j])
	}
	this._enemySprites=sprites
};
Spriteset_Battle.prototype.compareEnemySprite=function(a,
	{
	if(a.y!==b.y)
		{
		return a.y-b.y
	}
	else
		{
		return b.spriteId-a.spriteId
	}
};
Spriteset_Battle.prototype.createActors=function()
	{
	this._actorSprites=[];
	for(var i=0;
	i<$gameParty.maxBattleMembers();
	i++)
		{
		this._actorSprites[i]=new Sprite_Actor();
		this._battleField.addChild(this._actorSprites[i])
	}
};
Spriteset_Battle.prototype.updateActors=function()
	{
	var members=$gameParty.battleMembers();
	for(var i=0;
	i<this._actorSprites.length;
	i++)
		{
		this._actorSprites[i].setBattler(members[i])
	}
};
Spriteset_Battle.prototype.battlerSprites=function()
	{
	return this._enemySprites.concat(this._actorSprites)
};
Spriteset_Battle.prototype.isAnimationPlaying=function()
	{
	return this.battlerSprites().some(function(sprite)
		{
		return sprite.isAnimationPlaying()
	}
	)
};
Spriteset_Battle.prototype.isEffecting=function()
	{
	return this.battlerSprites().some(function(sprite)
		{
		return sprite.isEffecting()
	}
	)
};
Spriteset_Battle.prototype.isAnyoneMoving=function()
	{
	return this.battlerSprites().some(function(sprite)
		{
		return sprite.isMoving()
	}
	)
};
Spriteset_Battle.prototype.isBusy=function()
	{
	return this.isAnimationPlaying()||this.isAnyoneMoving()
};
 

 

 

 

Script di terze parti, presumibilmente.

 

libs/lz-string.js

 

 

var LZString = {
    _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
    _f: String.fromCharCode,
    compressToBase64: function(e) {
        if (e == null) return "";
        var t = "";
        var n, r, i, s, o, u, a;
        var f = 0;
        e = LZString.compress(e);
        while (f < e.length * 2) {
            if (f % 2 == 0) {
                n = e.charCodeAt(f / 2) >> 8;
                r = e.charCodeAt(f / 2) & 255;
                if (f / 2 + 1 < e.length) i = e.charCodeAt(f / 2 + 1) >> 8;
                else i = NaN
            } else {
                n = e.charCodeAt((f - 1) / 2) & 255;
                if ((f + 1) / 2 < e.length) {
                    r = e.charCodeAt((f + 1) / 2) >> 8;
                    i = e.charCodeAt((f + 1) / 2) & 255
                } else r = i = NaN
            }
            f += 3;
            s = n >> 2;
            o = (n & 3) << 4 | r >> 4;
            u = (r & 15) << 2 | i >> 6;
            a = i & 63;
            if (isNaN(r)) {
                u = a = 64
            } else if (isNaN(i)) {
                a = 64
            }
            t = t + LZString._keyStr.charAt(s) + LZString._keyStr.charAt(o) + LZString._keyStr.charAt(u) + LZString._keyStr.charAt(a)
        }
        return t
    },
    decompressFromBase64: function(e) {
        if (e == null) return "";
        var t = "",
            n = 0,
            r, i, s, o, u, a, f, l, c = 0,
            h = LZString._f;
        e = e.replace(/[^A-Za-z0-9\+\/\=]/g, "");
        while (c < e.length) {
            u = LZString._keyStr.indexOf(e.charAt(c++));
            a = LZString._keyStr.indexOf(e.charAt(c++));
            f = LZString._keyStr.indexOf(e.charAt(c++));
            l = LZString._keyStr.indexOf(e.charAt(c++));
            i = u << 2 | a >> 4;
            s = (a & 15) << 4 | f >> 2;
            o = (f & 3) << 6 | l;
            if (n % 2 == 0) {
                r = i << 8;
                if (f != 64) {
                    t += h(r | s)
                }
                if (l != 64) {
                    r = o << 8
                }
            } else {
                t = t + h(r | i);
                if (f != 64) {
                    r = s << 8
                }
                if (l != 64) {
                    t += h(r | o)
                }
            }
            n += 3
        }
        return LZString.decompress(t)
    },
    compressToUTF16: function(e) {
        if (e == null) return "";
        var t = "",
            n, r, i, s = 0,
            o = LZString._f;
        e = LZString.compress(e);
        for (n = 0; n < e.length; n++) {
            r = e.charCodeAt(n);
            switch (s++) {
                case 0:
                    t += o((r >> 1) + 32);
                    i = (r & 1) << 14;
                    break;
                case 1:
                    t += o(i + (r >> 2) + 32);
                    i = (r & 3) << 13;
                    break;
                case 2:
                    t += o(i + (r >> 3) + 32);
                    i = (r & 7) << 12;
                    break;
                case 3:
                    t += o(i + (r >> 4) + 32);
                    i = (r & 15) << 11;
                    break;
                case 4:
                    t += o(i + (r >> 5) + 32);
                    i = (r & 31) << 10;
                    break;
                case 5:
                    t += o(i + (r >> 6) + 32);
                    i = (r & 63) << 9;
                    break;
                case 6:
                    t += o(i + (r >> 7) + 32);
                    i = (r & 127) << 8;
                    break;
                case 7:
                    t += o(i + (r >> 8) + 32);
                    i = (r & 255) << 7;
                    break;
                case 8:
                    t += o(i + (r >> 9) + 32);
                    i = (r & 511) << 6;
                    break;
                case 9:
                    t += o(i + (r >> 10) + 32);
                    i = (r & 1023) << 5;
                    break;
                case 10:
                    t += o(i + (r >> 11) + 32);
                    i = (r & 2047) << 4;
                    break;
                case 11:
                    t += o(i + (r >> 12) + 32);
                    i = (r & 4095) << 3;
                    break;
                case 12:
                    t += o(i + (r >> 13) + 32);
                    i = (r & 8191) << 2;
                    break;
                case 13:
                    t += o(i + (r >> 14) + 32);
                    i = (r & 16383) << 1;
                    break;
                case 14:
                    t += o(i + (r >> 15) + 32, (r & 32767) + 32);
                    s = 0;
                    break
            }
        }
        return t + o(i + 32)
    },
    decompressFromUTF16: function(e) {
        if (e == null) return "";
        var t = "",
            n, r, i = 0,
            s = 0,
            o = LZString._f;
        while (s < e.length) {
            r = e.charCodeAt(s) - 32;
            switch (i++) {
                case 0:
                    n = r << 1;
                    break;
                case 1:
                    t += o(n | r >> 14);
                    n = (r & 16383) << 2;
                    break;
                case 2:
                    t += o(n | r >> 13);
                    n = (r & 8191) << 3;
                    break;
                case 3:
                    t += o(n | r >> 12);
                    n = (r & 4095) << 4;
                    break;
                case 4:
                    t += o(n | r >> 11);
                    n = (r & 2047) << 5;
                    break;
                case 5:
                    t += o(n | r >> 10);
                    n = (r & 1023) << 6;
                    break;
                case 6:
                    t += o(n | r >> 9);
                    n = (r & 511) << 7;
                    break;
                case 7:
                    t += o(n | r >> 8);
                    n = (r & 255) << 8;
                    break;
                case 8:
                    t += o(n | r >> 7);
                    n = (r & 127) << 9;
                    break;
                case 9:
                    t += o(n | r >> 6);
                    n = (r & 63) << 10;
                    break;
                case 10:
                    t += o(n | r >> 5);
                    n = (r & 31) << 11;
                    break;
                case 11:
                    t += o(n | r >> 4);
                    n = (r & 15) << 12;
                    break;
                case 12:
                    t += o(n | r >> 3);
                    n = (r & 7) << 13;
                    break;
                case 13:
                    t += o(n | r >> 2);
                    n = (r & 3) << 14;
                    break;
                case 14:
                    t += o(n | r >> 1);
                    n = (r & 1) << 15;
                    break;
                case 15:
                    t += o(n | r);
                    i = 0;
                    break
            }
            s++
        }
        return LZString.decompress(t)
    },
    compressToUint8Array: function(e) {
        var t = LZString.compress(e);
        var n = new Uint8Array(t.length * 2);
        for (var r = 0, i = t.length; r < i; r++) {
            var s = t.charCodeAt(r);
            n[r * 2] = s >>> 8;
            n[r * 2 + 1] = s % 256
        }
        return n
    },
    decompressFromUint8Array: function(e) {
        if (e === null || e === undefined) {
            return LZString.decompress(e)
        } else {
            var t = new Array(e.length / 2);
            for (var n = 0, r = t.length; n < r; n++) {
                t[n] = e[n * 2] * 256 + e[n * 2 + 1]
            }
            return LZString.decompress(String.fromCharCode.apply(null, t))
        }
    },
    compressToEncodedURIComponent: function(e) {
        return LZString.compressToBase64(e).replace(/=/g, "$").replace(/\//g, "-")
    },
    decompressFromEncodedURIComponent: function(e) {
        if (e) e = e.replace(/$/g, "=").replace(/-/g, "/");
        return LZString.decompressFromBase64(e)
    },
    compress: function(e) {
        if (e == null) return "";
        var t, n, r = {},
            i = {},
            s = "",
            o = "",
            u = "",
            a = 2,
            f = 3,
            l = 2,
            c = "",
            h = 0,
            p = 0,
            d, v = LZString._f;
        for (d = 0; d < e.length; d += 1) {
            s = e.charAt(d);
            if (!Object.prototype.hasOwnProperty.call(r, s)) {
                r[s] = f++;
                i[s] = true
            }
            o = u + s;
            if (Object.prototype.hasOwnProperty.call(r, o)) {
                u = o
            } else {
                if (Object.prototype.hasOwnProperty.call(i, u)) {
                    if (u.charCodeAt(0) < 256) {
                        for (t = 0; t < l; t++) {
                            h = h << 1;
                            if (p == 15) {
                                p = 0;
                                c += v(h);
                                h = 0
                            } else {
                                p++
                            }
                        }
                        n = u.charCodeAt(0);
                        for (t = 0; t < 8; t++) {
                            h = h << 1 | n & 1;
                            if (p == 15) {
                                p = 0;
                                c += v(h);
                                h = 0
                            } else {
                                p++
                            }
                            n = n >> 1
                        }
                    } else {
                        n = 1;
                        for (t = 0; t < l; t++) {
                            h = h << 1 | n;
                            if (p == 15) {
                                p = 0;
                                c += v(h);
                                h = 0
                            } else {
                                p++
                            }
                            n = 0
                        }
                        n = u.charCodeAt(0);
                        for (t = 0; t < 16; t++) {
                            h = h << 1 | n & 1;
                            if (p == 15) {
                                p = 0;
                                c += v(h);
                                h = 0
                            } else {
                                p++
                            }
                            n = n >> 1
                        }
                    }
                    a--;
                    if (a == 0) {
                        a = Math.pow(2, l);
                        l++
                    }
                    delete i[u]
                } else {
                    n = r[u];
                    for (t = 0; t < l; t++) {
                        h = h << 1 | n & 1;
                        if (p == 15) {
                            p = 0;
                            c += v(h);
                            h = 0
                        } else {
                            p++
                        }
                        n = n >> 1
                    }
                }
                a--;
                if (a == 0) {
                    a = Math.pow(2, l);
                    l++
                }
                r[o] = f++;
                u = String(s)
            }
        }
        if (u !== "") {
            if (Object.prototype.hasOwnProperty.call(i, u)) {
                if (u.charCodeAt(0) < 256) {
                    for (t = 0; t < l; t++) {
                        h = h << 1;
                        if (p == 15) {
                            p = 0;
                            c += v(h);
                            h = 0
                        } else {
                            p++
                        }
                    }
                    n = u.charCodeAt(0);
                    for (t = 0; t < 8; t++) {
                        h = h << 1 | n & 1;
                        if (p == 15) {
                            p = 0;
                            c += v(h);
                            h = 0
                        } else {
                            p++
                        }
                        n = n >> 1
                    }
                } else {
                    n = 1;
                    for (t = 0; t < l; t++) {
                        h = h << 1 | n;
                        if (p == 15) {
                            p = 0;
                            c += v(h);
                            h = 0
                        } else {
                            p++
                        }
                        n = 0
                    }
                    n = u.charCodeAt(0);
                    for (t = 0; t < 16; t++) {
                        h = h << 1 | n & 1;
                        if (p == 15) {
                            p = 0;
                            c += v(h);
                            h = 0
                        } else {
                            p++
                        }
                        n = n >> 1
                    }
                }
                a--;
                if (a == 0) {
                    a = Math.pow(2, l);
                    l++
                }
                delete i[u]
            } else {
                n = r[u];
                for (t = 0; t < l; t++) {
                    h = h << 1 | n & 1;
                    if (p == 15) {
                        p = 0;
                        c += v(h);
                        h = 0
                    } else {
                        p++
                    }
                    n = n >> 1
                }
            }
            a--;
            if (a == 0) {
                a = Math.pow(2, l);
                l++
            }
        }
        n = 2;
        for (t = 0; t < l; t++) {
            h = h << 1 | n & 1;
            if (p == 15) {
                p = 0;
                c += v(h);
                h = 0
            } else {
                p++
            }
            n = n >> 1
        }
        while (true) {
            h = h << 1;
            if (p == 15) {
                c += v(h);
                break
            } else p++
        }
        return c
    },
    decompress: function(e) {
        if (e == null) return "";
        if (e == "") return null;
        var t = [],
            n, r = 4,
            i = 4,
            s = 3,
            o = "",
            u = "",
            a, f, l, c, h, p, d, v = LZString._f,
            m = {
                string: e,
                val: e.charCodeAt(0),
                position: 32768,
                index: 1
            };
        for (a = 0; a < 3; a += 1) {
            t[a] = a
        }
        l = 0;
        h = Math.pow(2, 2);
        p = 1;
        while (p != h) {
            c = m.val & m.position;
            m.position >>= 1;
            if (m.position == 0) {
                m.position = 32768;
                m.val = m.string.charCodeAt(m.index++)
            }
            l |= (c > 0 ? 1 : 0) * p;
            p <<= 1
        }
        switch (n = l) {
            case 0:
                l = 0;
                h = Math.pow(2, 8);
                p = 1;
                while (p != h) {
                    c = m.val & m.position;
                    m.position >>= 1;
                    if (m.position == 0) {
                        m.position = 32768;
                        m.val = m.string.charCodeAt(m.index++)
                    }
                    l |= (c > 0 ? 1 : 0) * p;
                    p <<= 1
                }
                d = v(l);
                break;
            case 1:
                l = 0;
                h = Math.pow(2, 16);
                p = 1;
                while (p != h) {
                    c = m.val & m.position;
                    m.position >>= 1;
                    if (m.position == 0) {
                        m.position = 32768;
                        m.val = m.string.charCodeAt(m.index++)
                    }
                    l |= (c > 0 ? 1 : 0) * p;
                    p <<= 1
                }
                d = v(l);
                break;
            case 2:
                return ""
        }
        t[3] = d;
        f = u = d;
        while (true) {
            if (m.index > m.string.length) {
                return ""
            }
            l = 0;
            h = Math.pow(2, s);
            p = 1;
            while (p != h) {
                c = m.val & m.position;
                m.position >>= 1;
                if (m.position == 0) {
                    m.position = 32768;
                    m.val = m.string.charCodeAt(m.index++)
                }
                l |= (c > 0 ? 1 : 0) * p;
                p <<= 1
            }
            switch (d = l) {
                case 0:
                    l = 0;
                    h = Math.pow(2, 8);
                    p = 1;
                    while (p != h) {
                        c = m.val & m.position;
                        m.position >>= 1;
                        if (m.position == 0) {
                            m.position = 32768;
                            m.val = m.string.charCodeAt(m.index++)
                        }
                        l |= (c > 0 ? 1 : 0) * p;
                        p <<= 1
                    }
                    t[i++] = v(l);
                    d = i - 1;
                    r--;
                    break;
                case 1:
                    l = 0;
                    h = Math.pow(2, 16);
                    p = 1;
                    while (p != h) {
                        c = m.val & m.position;
                        m.position >>= 1;
                        if (m.position == 0) {
                            m.position = 32768;
                            m.val = m.string.charCodeAt(m.index++)
                        }
                        l |= (c > 0 ? 1 : 0) * p;
                        p <<= 1
                    }
                    t[i++] = v(l);
                    d = i - 1;
                    r--;
                    break;
                case 2:
                    return u
            }
            if (r == 0) {
                r = Math.pow(2, s);
                s++
            }
            if (t[d]) {
                o = t[d]
            } else {
                if (d === i) {
                    o = f + f.charAt(0)
                } else {
                    return null
                }
            }
            u += o;
            t[i++] = f + o.charAt(0);
            r--;
            f = o;
            if (r == 0) {
                r = Math.pow(2, s);
                s++
            }
        }
    }
};
if (typeof module !== "undefined" && module != null) {
    module.exports = LZString
} 

 

 

 

libs/pixi.js

 

 

/**
 * @license
 * pixi.js - v2.2.9
 * Copyright (c) 2012-2014, Mat Groves
 * http://goodboydigital.com/
 *
 * Compiled: 2015-04-08
 *
 * pixi.js is licensed under the MIT License.
 * http://www.opensource.org/licenses/mit-license.php
 */
/**
 * @author Mat Groves http://matgroves.com/ @Doormat23
 */

(function(){

    var root = this;

/**
 * @author Mat Groves http://matgroves.com/ @Doormat23
 */

/**
 * The [pixi.js](http://www.pixijs.com/'>http://www.pixijs.com/) module/namespace.
 *
 * @module PIXI
 */

/**
 * Namespace-class for [pixi.js](http://www.pixijs.com/'>http://www.pixijs.com/).
 *
 * Contains assorted static properties and enumerations.
 *
 * @class PIXI
 * @static
 */
var PIXI = PIXI || {};

/**
 * @property {Number} WEBGL_RENDERER
 * @protected
 * @static
 */
PIXI.WEBGL_RENDERER = 0;
/**
 * @property {Number} CANVAS_RENDERER
 * @protected
 * @static
 */
PIXI.CANVAS_RENDERER = 1;

/**
 * Version of pixi that is loaded.
 * @property {String} VERSION
 * @static
 */
PIXI.VERSION = "v2.2.9";

/**
 * Various blend modes supported by pixi. IMPORTANT - The WebGL renderer only supports the NORMAL, ADD, MULTIPLY and SCREEN blend modes.
 * @property {Object} blendModes
 * @property {Number} blendModes.NORMAL
 * @property {Number} blendModes.ADD
 * @property {Number} blendModes.MULTIPLY
 * @property {Number} blendModes.SCREEN
 * @property {Number} blendModes.OVERLAY
 * @property {Number} blendModes.DARKEN
 * @property {Number} blendModes.LIGHTEN
 * @property {Number} blendModes.COLOR_DODGE
 * @property {Number} blendModes.COLOR_BURN
 * @property {Number} blendModes.HARD_LIGHT
 * @property {Number} blendModes.SOFT_LIGHT
 * @property {Number} blendModes.DIFFERENCE
 * @property {Number} blendModes.EXCLUSION
 * @property {Number} blendModes.HUE
 * @property {Number} blendModes.SATURATION
 * @property {Number} blendModes.COLOR
 * @property {Number} blendModes.LUMINOSITY
 * @static
 */
PIXI.blendModes = {
    NORMAL:0,
    ADD:1,
    MULTIPLY:2,
    SCREEN:3,
    OVERLAY:4,
    DARKEN:5,
    LIGHTEN:6,
    COLOR_DODGE:7,
    COLOR_BURN:8,
    HARD_LIGHT:9,
    SOFT_LIGHT:10,
    DIFFERENCE:11,
    EXCLUSION:12,
    HUE:13,
    SATURATION:14,
    COLOR:15,
    LUMINOSITY:16
};

/**
 * The scale modes that are supported by pixi.
 *
 * The DEFAULT scale mode affects the default scaling mode of future operations.
 * It can be re-assigned to either LINEAR or NEAREST, depending upon suitability.
 *
 * @property {Object} scaleModes
 * @property {Number} scaleModes.DEFAULT=LINEAR
 * @property {Number} scaleModes.LINEAR Smooth scaling
 * @property {Number} scaleModes.NEAREST Pixelating scaling
 * @static
 */
PIXI.scaleModes = {
    DEFAULT:0,
    LINEAR:0,
    NEAREST:1
};

// used to create uids for various pixi objects..
PIXI._UID = 0;

if(typeof(Float32Array) != 'undefined')
{
    PIXI.Float32Array = Float32Array;
    PIXI.Uint16Array = Uint16Array;

    // Uint32Array and ArrayBuffer only used by WebGL renderer
    // We can suppose that if WebGL is supported then typed arrays are supported too
    // as they predate WebGL support for all browsers:
    // see typed arrays support: http://caniuse.com/#search=TypedArrays
    // see WebGL support: http://caniuse.com/#search=WebGL
    PIXI.Uint32Array = Uint32Array;
    PIXI.ArrayBuffer = ArrayBuffer;
}
else
{
    PIXI.Float32Array = Array;
    PIXI.Uint16Array = Array;
}

// interaction frequency
PIXI.INTERACTION_FREQUENCY = 30;
PIXI.AUTO_PREVENT_DEFAULT = true;

/**
 * @property {Number} PI_2
 * @static
 */
PIXI.PI_2 = Math.PI * 2;

/**
 * @property {Number} RAD_TO_DEG
 * @static
 */
PIXI.RAD_TO_DEG = 180 / Math.PI;

/**
 * @property {Number} DEG_TO_RAD
 * @static
 */
PIXI.DEG_TO_RAD = Math.PI / 180;

/**
 * @property {String} RETINA_PREFIX
 * @protected
 * @static
 */
PIXI.RETINA_PREFIX = "@2x";
//PIXI.SCALE_PREFIX "@x%%";

/**
 * If true the default pixi startup (console) banner message will be suppressed.
 *
 * @property {Boolean} dontSayHello
 * @default false
 * @static
 */
PIXI.dontSayHello = false;

/**
 * The default render options if none are supplied to
 * {{#crossLink "WebGLRenderer"}}{{/crossLink}} or {{#crossLink "CanvasRenderer"}}{{/crossLink}}.
 *
 * @property {Object} defaultRenderOptions
 * @property {Object} defaultRenderOptions.view=null
 * @property {Boolean} defaultRenderOptions.transparent=false
 * @property {Boolean} defaultRenderOptions.antialias=false
 * @property {Boolean} defaultRenderOptions.preserveDrawingBuffer=false
 * @property {Number} defaultRenderOptions.resolution=1
 * @property {Boolean} defaultRenderOptions.clearBeforeRender=true
 * @property {Boolean} defaultRenderOptions.autoResize=false
 * @static
 */
PIXI.defaultRenderOptions = {
    view:null,
    transparent:false,
    antialias:false,
    preserveDrawingBuffer:false,
    resolution:1,
    clearBeforeRender:true,
    autoResize:false
}

PIXI.sayHello = function (type)
{
    if(PIXI.dontSayHello)return;

    if ( navigator.userAgent.toLowerCase().indexOf('chrome') > -1 )
    {
        var args = [
            '%c %c %c Pixi.js ' + PIXI.VERSION + ' - ' + type + '  %c ' + ' %c ' + ' http://www.pixijs.com/'>http://www.pixijs.com/  %c %c ♥%c♥%c♥ ',
            'background: #ff66a5',
            'background: #ff66a5',
            'color: #ff66a5; background: #030307;',
            'background: #ff66a5',
            'background: #ffc3dc',
            'background: #ff66a5',
            'color: #ff2424; background: #fff',
            'color: #ff2424; background: #fff',
            'color: #ff2424; background: #fff'
        ];

        console.log.apply(console, args);
    }
    else if (window['console'])
    {
        console.log('Pixi.js ' + PIXI.VERSION + ' - http://www.pixijs.com/'>http://www.pixijs.com/');
    }

    PIXI.dontSayHello = true;
};

/**
 * @author Mat Groves http://matgroves.com/ @Doormat23
 */

/**
 * The Point object represents a location in a two-dimensional coordinate system, where x represents the horizontal axis and y represents the vertical axis.
 *
 * @class Point
 * @constructor
 * @param x {Number} position of the point on the x axis
 * @param y {Number} position of the point on the y axis
 */
PIXI.Point = function(x, y)
{
    /**
     * @property x
     * @type Number
     * @default 0
     */
    this.x = x || 0;

    /**
     * @property y
     * @type Number
     * @default 0
     */
    this.y = y || 0;
};

/**
 * Creates a clone of this point
 *
 * @method clone
 * @return {Point} a copy of the point
 */
PIXI.Point.prototype.clone = function()
{
    return new PIXI.Point(this.x, this.y);
};

/**
 * Sets the point to a new x and y position.
 * If y is omitted, both x and y will be set to x.
 *
 * @method set
 * @param [x=0] {Number} position of the point on the x axis
 * @param [y=0] {Number} position of the point on the y axis
 */
PIXI.Point.prototype.set = function(x, y)
{
    this.x = x || 0;
    this.y = y || ( (y !== 0) ? this.x : 0 ) ;
};

// constructor
PIXI.Point.prototype.constructor = PIXI.Point;
/**
 * @author Mat Groves http://matgroves.com/
 */

/**
 * the Rectangle object is an area defined by its position, as indicated by its top-left corner point (x, y) and by its width and its height.
 *
 * @class Rectangle
 * @constructor
 * @param x {Number} The X coordinate of the upper-left corner of the rectangle
 * @param y {Number} The Y coordinate of the upper-left corner of the rectangle
 * @param width {Number} The overall width of this rectangle
 * @param height {Number} The overall height of this rectangle
 */
PIXI.Rectangle = function(x, y, width, height)
{
    /**
     * @property x
     * @type Number
     * @default 0
     */
    this.x = x || 0;

    /**
     * @property y
     * @type Number
     * @default 0
     */
    this.y = y || 0;

    /**
     * @property width
     * @type Number
     * @default 0
     */
    this.width = width || 0;

    /**
     * @property height
     * @type Number
     * @default 0
     */
    this.height = height || 0;

    /**
     * The type of the object, should be one of the Graphics type consts, PIXI.Graphics.RECT in this case
     * @property type
     * @type Number
     * @default 0
     */
};

/**
 * Creates a clone of this Rectangle
 *
 * @method clone
 * @return {Rectangle} a copy of the rectangle
 */
PIXI.Rectangle.prototype.clone = function()
{
    return new PIXI.Rectangle(this.x, this.y, this.width, this.height);
};

/**
 * Checks whether the x and y coordinates given are contained within this Rectangle
 *
 * @method contains
 * @param x {Number} The X coordinate of the point to test
 * @param y {Number} The Y coordinate of the point to test
 * @return {Boolean} Whether the x/y coordinates are within this Rectangle
 */
PIXI.Rectangle.prototype.contains = function(x, y)
{
    if(this.width <= 0 || this.height <= 0)
        return false;

    var x1 = this.x;
    if(x >= x1 && x <= x1 + this.width)
    {
        var y1 = this.y;

        if(y >= y1 && y <= y1 + this.height)
        {
            return true;
        }
    }

    return false;
};

// constructor
PIXI.Rectangle.prototype.constructor = PIXI.Rectangle;

PIXI.EmptyRectangle = new PIXI.Rectangle(0,0,0,0);
/**
 * @author Adrien Brault <[email protected]>
 */

/**
 * @class Polygon
 * @constructor
 * @param points* {Array(Point)|Array(Number)|Point...|Number...} This can be an array of Points that form the polygon,
 *      a flat array of numbers that will be interpreted as [x,y, x,y, ...], or the arguments passed can be
 *      all the points of the polygon e.g. `new PIXI.Polygon(new PIXI.Point(), new PIXI.Point(), ...)`, or the
 *      arguments passed can be flat x,y values e.g. `new PIXI.Polygon(x,y, x,y, x,y, ...)` where `x` and `y` are
 *      Numbers.
 */
PIXI.Polygon = function(points)
{
    //if points isn't an array, use arguments as the array
    if(!(points instanceof Array))points = Array.prototype.slice.call(arguments);

    //if this is a flat array of numbers, convert it to points
    if(points[0] instanceof PIXI.Point)
    {
        var p = [];
        for(var i = 0, il = points.length; i < il; i++)
        {
            p.push(points[i].x, points[i].y);
        }

        points = p;
    }

    this.closed = true;

    /**
     * An array of the points of this polygon
     * @property points
     * @type Array(Point)|Array(Number)
     *
     */
    this.points = points;

    /**
     * The type of the object, should be one of the Graphics type consts, PIXI.Graphics.POLY in this case
     * @property type
     * @type Number
     * @default 0
     */
};

/**
 * Creates a clone of this polygon
 *
 * @method clone
 * @return {Polygon} a copy of the polygon
 */
PIXI.Polygon.prototype.clone = function()
{
    var points = this.points.slice();
    return new PIXI.Polygon(points);
};

/**
 * Checks whether the x and y coordinates passed to this function are contained within this polygon
 *
 * @method contains
 * @param x {Number} The X coordinate of the point to test
 * @param y {Number} The Y coordinate of the point to test
 * @return {Boolean} Whether the x/y coordinates are within this polygon
 */
PIXI.Polygon.prototype.contains = function(x, y)
{
    var inside = false;

    // use some raycasting to test hits
    // https://github.com/substack/point-in-polygon/blob/master/index.js
    var length = this.points.length / 2;

    for(var i = 0, j = length - 1; i < length; j = i++)
    {
        var xi = this.points[i * 2], yi = this.points[i * 2 + 1],
            xj = this.points[j * 2], yj = this.points[j * 2 + 1],
            intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);

        if(intersect) inside = !inside;
    }

    return inside;
};

// constructor
PIXI.Polygon.prototype.constructor = PIXI.Polygon;

/**
 * @author Chad Engler <[email protected]>
 */

/**
 * The Circle object can be used to specify a hit area for displayObjects
 *
 * @class Circle
 * @constructor
 * @param x {Number} The X coordinate of the center of this circle
 * @param y {Number} The Y coordinate of the center of this circle
 * @param radius {Number} The radius of the circle
 */
PIXI.Circle = function(x, y, radius)
{
    /**
     * @property x
     * @type Number
     * @default 0
     */
    this.x = x || 0;

    /**
     * @property y
     * @type Number
     * @default 0
     */
    this.y = y || 0;

    /**
     * @property radius
     * @type Number
     * @default 0
     */
    this.radius = radius || 0;

    /**
     * The type of the object, should be one of the Graphics type consts, PIXI.Graphics.CIRC in this case
     * @property type
     * @type Number
     * @default 0
     */
};

/**
 * Creates a clone of this Circle instance
 *
 * @method clone
 * @return {Circle} a copy of the Circle
 */
PIXI.Circle.prototype.clone = function()
{
    return new PIXI.Circle(this.x, this.y, this.radius);
};

/**
 * Checks whether the x and y coordinates given are contained within this circle
 *
 * @method contains
 * @param x {Number} The X coordinate of the point to test
 * @param y {Number} The Y coordinate of the point to test
 * @return {Boolean} Whether the x/y coordinates are within this Circle
 */
PIXI.Circle.prototype.contains = function(x, y)
{
    if(this.radius <= 0)
        return false;

    var dx = (this.x - x),
        dy = (this.y - y),
        r2 = this.radius * this.radius;

    dx *= dx;
    dy *= dy;

    return (dx + dy <= r2);
};

/**
* Returns the framing rectangle of the circle as a PIXI.Rectangle object
*
* @method getBounds
* @return {Rectangle} the framing rectangle
*/
PIXI.Circle.prototype.getBounds = function()
{
    return new PIXI.Rectangle(this.x - this.radius, this.y - this.radius, this.radius * 2, this.radius * 2);
};

// constructor
PIXI.Circle.prototype.constructor = PIXI.Circle;

/**
 * @author Chad Engler <[email protected]>
 */

/**
 * The Ellipse object can be used to specify a hit area for displayObjects
 *
 * @class Ellipse
 * @constructor
 * @param x {Number} The X coordinate of the center of the ellipse
 * @param y {Number} The Y coordinate of the center of the ellipse
 * @param width {Number} The half width of this ellipse
 * @param height {Number} The half height of this ellipse
 */
PIXI.Ellipse = function(x, y, width, height)
{
    /**
     * @property x
     * @type Number
     * @default 0
     */
    this.x = x || 0;

    /**
     * @property y
     * @type Number
     * @default 0
     */
    this.y = y || 0;

    /**
     * @property width
     * @type Number
     * @default 0
     */
    this.width = width || 0;

    /**
     * @property height
     * @type Number
     * @default 0
     */
    this.height = height || 0;


    /**
     * The type of the object, should be one of the Graphics type consts, PIXI.Graphics.ELIP in this case
     * @property type
     * @type Number
     * @default 0
     */
};

/**
 * Creates a clone of this Ellipse instance
 *
 * @method clone
 * @return {Ellipse} a copy of the ellipse
 */
PIXI.Ellipse.prototype.clone = function()
{
    return new PIXI.Ellipse(this.x, this.y, this.width, this.height);
};

/**
 * Checks whether the x and y coordinates given are contained within this ellipse
 *
 * @method contains
 * @param x {Number} The X coordinate of the point to test
 * @param y {Number} The Y coordinate of the point to test
 * @return {Boolean} Whether the x/y coords are within this ellipse
 */
PIXI.Ellipse.prototype.contains = function(x, y)
{
    if(this.width <= 0 || this.height <= 0)
        return false;

    //normalize the coords to an ellipse with center 0,0
    var normx = ((x - this.x) / this.width),
        normy = ((y - this.y) / this.height);

    normx *= normx;
    normy *= normy;

    return (normx + normy <= 1);
};

/**
* Returns the framing rectangle of the ellipse as a PIXI.Rectangle object
*
* @method getBounds
* @return {Rectangle} the framing rectangle
*/
PIXI.Ellipse.prototype.getBounds = function()
{
    return new PIXI.Rectangle(this.x - this.width, this.y - this.height, this.width, this.height);
};

// constructor
PIXI.Ellipse.prototype.constructor = PIXI.Ellipse;

/**
 * @author Mat Groves http://matgroves.com/
 */

/**
 * The Rounded Rectangle object is an area defined by its position and has nice rounded corners, as indicated by its top-left corner point (x, y) and by its width and its height.
 *
 * @class RoundedRectangle
 * @constructor
 * @param x {Number} The X coordinate of the upper-left corner of the rounded rectangle
 * @param y {Number} The Y coordinate of the upper-left corner of the rounded rectangle
 * @param width {Number} The overall width of this rounded rectangle
 * @param height {Number} The overall height of this rounded rectangle
 * @param radius {Number} Controls the radius of the rounded corners
 */
PIXI.RoundedRectangle = function(x, y, width, height, radius)
{
    /**
     * @property x
     * @type Number
     * @default 0
     */
    this.x = x || 0;

    /**
     * @property y
     * @type Number
     * @default 0
     */
    this.y = y || 0;

    /**
     * @property width
     * @type Number
     * @default 0
     */
    this.width = width || 0;

    /**
     * @property height
     * @type Number
     * @default 0
     */
    this.height = height || 0;

    /**
     * @property radius
     * @type Number
     * @default 20
     */
    this.radius = radius || 20;

    /**
     * The type of the object, should be one of the Graphics type consts, PIXI.Graphics.RRECT in this case
     * @property type
     * @type Number
     * @default 0
     */
};

/**
 * Creates a clone of this Rounded Rectangle
 *
 * @method clone
 * @return {RoundedRectangle} a copy of the rounded rectangle
 */
PIXI.RoundedRectangle.prototype.clone = function()
{
    return new PIXI.RoundedRectangle(this.x, this.y, this.width, this.height, this.radius);
};

/**
 * Checks whether the x and y coordinates given are contained within this Rounded Rectangle
 *
 * @method contains
 * @param x {Number} The X coordinate of the point to test
 * @param y {Number} The Y coordinate of the point to test
 * @return {Boolean} Whether the x/y coordinates are within this Rounded Rectangle
 */
PIXI.RoundedRectangle.prototype.contains = function(x, y)
{
    if(this.width <= 0 || this.height <= 0)
        return false;

    var x1 = this.x;
    if(x >= x1 && x <= x1 + this.width)
    {
        var y1 = this.y;

        if(y >= y1 && y <= y1 + this.height)
        {
            return true;
        }
    }

    return false;
};

// constructor
PIXI.RoundedRectangle.prototype.constructor = PIXI.RoundedRectangle;


/**
 * @author Mat Groves http://matgroves.com/ @Doormat23
 */

/**
 * The Matrix class is now an object, which makes it a lot faster,
 * here is a representation of it :
 * | a | b | tx|
 * | c | d | ty|
 * | 0 | 0 | 1 |
 *
 * @class Matrix
 * @constructor
 */
PIXI.Matrix = function()
{
    /**
     * @property a
     * @type Number
     * @default 1
     */
    this.a = 1;

    /**
     * @property b
     * @type Number
     * @default 0
     */
    this.b = 0;

    /**
     * @property c
     * @type Number
     * @default 0
     */
    this.c = 0;

    /**
     * @property d
     * @type Number
     * @default 1
     */
    this.d = 1;

    /**
     * @property tx
     * @type Number
     * @default 0
     */
    this.tx = 0;

    /**
     * @property ty
     * @type Number
     * @default 0
     */
    this.ty = 0;
};

/**
 * Creates a Matrix object based on the given array. The Element to Matrix mapping order is as follows:
 *
 * a = array[0]
 * b = array[1]
 * c = array[3]
 * d = array[4]
 * tx = array[2]
 * ty = array[5]
 *
 * @method fromArray
 * @param array {Array} The array that the matrix will be populated from.
 */
PIXI.Matrix.prototype.fromArray = function(array)
{
    this.a = array[0];
    this.b = array[1];
    this.c = array[3];
    this.d = array[4];
    this.tx = array[2];
    this.ty = array[5];
};

/**
 * Creates an array from the current Matrix object.
 *
 * @method toArray
 * @param transpose {Boolean} Whether we need to transpose the matrix or not
 * @return {Array} the newly created array which contains the matrix
 */
PIXI.Matrix.prototype.toArray = function(transpose)
{
    if(!this.array) this.array = new PIXI.Float32Array(9);
    var array = this.array;

    if(transpose)
    {
        array[0] = this.a;
        array[1] = this.b;
        array[2] = 0;
        array[3] = this.c;
        array[4] = this.d;
        array[5] = 0;
        array[6] = this.tx;
        array[7] = this.ty;
        array[8] = 1;
    }
    else
    {
        array[0] = this.a;
        array[1] = this.c;
        array[2] = this.tx;
        array[3] = this.b;
        array[4] = this.d;
        array[5] = this.ty;
        array[6] = 0;
        array[7] = 0;
        array[8] = 1;
    }

    return array;
};

/**
 * Get a new position with the current transformation applied.
 * Can be used to go from a child's coordinate space to the world coordinate space. (e.g. rendering)
 *
 * @method apply
 * @param pos {Point} The origin
 * @param [newPos] {Point} The point that the new position is assigned to (allowed to be same as input)
 * @return {Point} The new point, transformed through this matrix
 */
PIXI.Matrix.prototype.apply = function(pos, newPos)
{
    newPos = newPos || new PIXI.Point();

    newPos.x = this.a * pos.x + this.c * pos.y + this.tx;
    newPos.y = this.b * pos.x + this.d * pos.y + this.ty;

    return newPos;
};

/**
 * Get a new position with the inverse of the current transformation applied.
 * Can be used to go from the world coordinate space to a child's coordinate space. (e.g. input)
 *
 * @method applyInverse
 * @param pos {Point} The origin
 * @param [newPos] {Point} The point that the new position is assigned to (allowed to be same as input)
 * @return {Point} The new point, inverse-transformed through this matrix
 */
PIXI.Matrix.prototype.applyInverse = function(pos, newPos)
{
    newPos = newPos || new PIXI.Point();

    var id = 1 / (this.a * this.d + this.c * -this.;

    newPos.x = this.d * id * pos.x + -this.c * id * pos.y + (this.ty * this.c - this.tx * this.d) * id;
    newPos.y = this.a * id * pos.y + -this.b * id * pos.x + (-this.ty * this.a + this.tx * this. * id;

    return newPos;
};

/**
 * Translates the matrix on the x and y.
 *
 * @method translate
 * @param {Number} x
 * @param {Number} y
 * @return {Matrix} This matrix. Good for chaining method calls.
 **/
PIXI.Matrix.prototype.translate = function(x, y)
{
    this.tx += x;
    this.ty += y;

    return this;
};

/**
 * Applies a scale transformation to the matrix.
 *
 * @method scale
 * @param {Number} x The amount to scale horizontally
 * @param {Number} y The amount to scale vertically
 * @return {Matrix} This matrix. Good for chaining method calls.
 **/
PIXI.Matrix.prototype.scale = function(x, y)
{
    this.a *= x;
    this.d *= y;
    this.c *= x;
    this.b *= y;
    this.tx *= x;
    this.ty *= y;

    return this;
};


/**
 * Applies a rotation transformation to the matrix.
 * @method rotate
 * @param {Number} angle The angle in radians.
 * @return {Matrix} This matrix. Good for chaining method calls.
 **/
PIXI.Matrix.prototype.rotate = function(angle)
{
    var cos = Math.cos( angle );
    var sin = Math.sin( angle );

    var a1 = this.a;
    var c1 = this.c;
    var tx1 = this.tx;

    this.a = a1 * cos-this.b * sin;
    this.b = a1 * sin+this.b * cos;
    this.c = c1 * cos-this.d * sin;
    this.d = c1 * sin+this.d * cos;
    this.tx = tx1 * cos - this.ty * sin;
    this.ty = tx1 * sin + this.ty * cos;

    return this;
};

/**
 * Appends the given Matrix to this Matrix.
 *
 * @method append
 * @param {Matrix} matrix
 * @return {Matrix} This matrix. Good for chaining method calls.
 */
PIXI.Matrix.prototype.append = function(matrix)
{
    var a1 = this.a;
    var b1 = this.b;
    var c1 = this.c;
    var d1 = this.d;

    this.a  = matrix.a * a1 + matrix.b * c1;
    this.b  = matrix.a * b1 + matrix.b * d1;
    this.c  = matrix.c * a1 + matrix.d * c1;
    this.d  = matrix.c * b1 + matrix.d * d1;

    this.tx = matrix.tx * a1 + matrix.ty * c1 + this.tx;
    this.ty = matrix.tx * b1 + matrix.ty * d1 + this.ty;

    return this;
};

/**
 * Resets this Matix to an identity (default) matrix.
 *
 * @method identity
 * @return {Matrix} This matrix. Good for chaining method calls.
 */
PIXI.Matrix.prototype.identity = function()
{
    this.a = 1;
    this.b = 0;
    this.c = 0;
    this.d = 1;
    this.tx = 0;
    this.ty = 0;

    return this;
};

PIXI.identityMatrix = new PIXI.Matrix();

/**
 * @author Mat Groves http://matgroves.com/ @Doormat23
 */

/**
 * The base class for all objects that are rendered on the screen.
 * This is an abstract class and should not be used on its own rather it should be extended.
 *
 * @class DisplayObject
 * @constructor
 */
PIXI.DisplayObject = function()
{
    /**
     * The coordinate of the object relative to the local coordinates of the parent.
     *
     * @property position
     * @type Point
     */
    this.position = new PIXI.Point();

    /**
     * The scale factor of the object.
     *
     * @property scale
     * @type Point
     */
    this.scale = new PIXI.Point(1,1);//{x:1, y:1};

    /**
     * The pivot point of the displayObject that it rotates around
     *
     * @property pivot
     * @type Point
     */
    this.pivot = new PIXI.Point(0,0);

    /**
     * The rotation of the object in radians.
     *
     * @property rotation
     * @type Number
     */
    this.rotation = 0;

    /**
     * The opacity of the object.
     *
     * @property alpha
     * @type Number
     */
    this.alpha = 1;

    /**
     * The visibility of the object.
     *
     * @property visible
     * @type Boolean
     */
    this.visible = true;

    /**
     * This is the defined area that will pick up mouse / touch events. It is null by default.
     * Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)
     *
     * @property hitArea
     * @type Rectangle|Circle|Ellipse|Polygon
     */
    this.hitArea = null;

    /**
     * This is used to indicate if the displayObject should display a mouse hand cursor on rollover
     *
     * @property buttonMode
     * @type Boolean
     */
    this.buttonMode = false;

    /**
     * Can this object be rendered
     *
     * @property renderable
     * @type Boolean
     */
    this.renderable = false;

    /**
     * [read-only] The display object container that contains this display object.
     *
     * @property parent
     * @type DisplayObjectContainer
     * @readOnly
     */
    this.parent = null;

    /**
     * [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.
     *
     * @property stage
     * @type Stage
     * @readOnly
     */
    this.stage = null;

    /**
     * [read-only] The multiplied alpha of the displayObject
     *
     * @property worldAlpha
     * @type Number
     * @readOnly
     */
    this.worldAlpha = 1;

    /**
     * [read-only] Whether or not the object is interactive, do not toggle directly! use the `interactive` property
     *
     * @property _interactive
     * @type Boolean
     * @readOnly
     * @private
     */
    this._interactive = false;

    /**
     * This is the cursor that will be used when the mouse is over this object. To enable this the element must have interaction = true and buttonMode = true
     *
     * @property defaultCursor
     * @type String
     *
    */
    this.defaultCursor = 'pointer';

    /**
     * [read-only] Current transform of the object based on world (parent) factors
     *
     * @property worldTransform
     * @type Matrix
     * @readOnly
     * @private
     */
    this.worldTransform = new PIXI.Matrix();

    /**
     * cached sin rotation and cos rotation
     *
     * @property _sr
     * @type Number
     * @private
     */
    this._sr = 0;

    /**
     * cached sin rotation and cos rotation
     *
     * @property _cr
     * @type Number
     * @private
     */
    this._cr = 1;

    /**
     * The area the filter is applied to like the hitArea this is used as more of an optimisation
     * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle
     *
     * @property filterArea
     * @type Rectangle
     */
    this.filterArea = null;//new PIXI.Rectangle(0,0,1,1);

    /**
     * The original, cached bounds of the object
     *
     * @property _bounds
     * @type Rectangle
     * @private
     */
    this._bounds = new PIXI.Rectangle(0, 0, 1, 1);

    /**
     * The most up-to-date bounds of the object
     *
     * @property _currentBounds
     * @type Rectangle
     * @private
     */
    this._currentBounds = null;

    /**
     * The original, cached mask of the object
     *
     * @property _currentBounds
     * @type Rectangle
     * @private
     */
    this._mask = null;

    /**
     * Cached internal flag.
     *
     * @property _cacheAsBitmap
     * @type Boolean
     * @private
     */
    this._cacheAsBitmap = false;

    /**
     * Cached internal flag.
     *
     * @property _cacheIsDirty
     * @type Boolean
     * @private
     */
    this._cacheIsDirty = false;


    /*
     * MOUSE Callbacks
     */

    /**
     * A callback that is used when the users mouse rolls over the displayObject
     * @method mouseover
     * @param interactionData {InteractionData}
     */

    /**
     * A callback that is used when the users mouse leaves the displayObject
     * @method mouseout
     * @param interactionData {InteractionData}
     */

    //Left button
    /**
     * A callback that is used when the users clicks on the displayObject with their mouse's left button
     * @method click
     * @param interactionData {InteractionData}
     */

    /**
     * A callback that is used when the user clicks the mouse's left button down over the sprite
     * @method mousedown
     * @param interactionData {InteractionData}
     */

    /**
     * A callback that is used when the user releases the mouse's left button that was over the displayObject
     * for this callback to be fired, the mouse's left button must have been pressed down over the displayObject
     * @method mouseup
     * @param interactionData {InteractionData}
     */

    /**
     * A callback that is used when the user releases the mouse's left button that was over the displayObject but is no longer over the displayObject
     * for this callback to be fired, the mouse's left button must have been pressed down over the displayObject
     * @method mouseupoutside
     * @param interactionData {InteractionData}
     */

    //Right button
    /**
     * A callback that is used when the users clicks on the displayObject with their mouse's right button
     * @method rightclick
     * @param interactionData {InteractionData}
     */

    /**
     * A callback that is used when the user clicks the mouse's right button down over the sprite
     * @method rightdown
     * @param interactionData {InteractionData}
     */

    /**
     * A callback that is used when the user releases the mouse's right button that was over the displayObject
     * for this callback to be fired the mouse's right button must have been pressed down over the displayObject
     * @method rightup
     * @param interactionData {InteractionData}
     */

    /**
     * A callback that is used when the user releases the mouse's right button that was over the displayObject but is no longer over the displayObject
     * for this callback to be fired, the mouse's right button must have been pressed down over the displayObject
     * @method rightupoutside
     * @param interactionData {InteractionData}
     */

    /*
     * TOUCH Callbacks
     */

    /**
     * A callback that is used when the users taps on the sprite with their finger
     * basically a touch version of click
     * @method tap
     * @param interactionData {InteractionData}
     */

    /**
     * A callback that is used when the user touches over the displayObject
     * @method touchstart
     * @param interactionData {InteractionData}
     */

    /**
     * A callback that is used when the user releases a touch over the displayObject
     * @method touchend
     * @param interactionData {InteractionData}
     */

    /**
     * A callback that is used when the user releases the touch that was over the displayObject
     * for this callback to be fired, The touch must have started over the sprite
     * @method touchendoutside
     * @param interactionData {InteractionData}
     */
};

// constructor
PIXI.DisplayObject.prototype.constructor = PIXI.DisplayObject;

/**
 * Indicates if the sprite will have touch and mouse interactivity. It is false by default
 *
 * @property interactive
 * @type Boolean
 * @default false
 */
Object.defineProperty(PIXI.DisplayObject.prototype, 'interactive', {
    get: function() {
        return this._interactive;
    },
    set: function(value) {
        this._interactive = value;

        // TODO more to be done here..
        // need to sort out a re-crawl!
        if(this.stage)this.stage.dirty = true;
    }
});

/**
 * [read-only] Indicates if the sprite is globally visible.
 *
 * @property worldVisible
 * @type Boolean
 */
Object.defineProperty(PIXI.DisplayObject.prototype, 'worldVisible', {
    get: function() {
        var item = this;

        do
        {
            if(!item.visible)return false;
            item = item.parent;
        }
        while(item);

        return true;
    }
});

/**
 * Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it.
 * In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping.
 * To remove a mask, set this property to null.
 *
 * @property mask
 * @type Graphics
 */
Object.defineProperty(PIXI.DisplayObject.prototype, 'mask', {
    get: function() {
        return this._mask;
    },
    set: function(value) {

        if(this._mask)this._mask.isMask = false;
        this._mask = value;
        if(this._mask)this._mask.isMask = true;
    }
});

/**
 * Sets the filters for the displayObject.
 * * IMPORTANT: This is a webGL only feature and will be ignored by the canvas renderer.
 * To remove filters simply set this property to 'null'
 * @property filters
 * @type Array(Filter)
 */
Object.defineProperty(PIXI.DisplayObject.prototype, 'filters', {

    get: function() {
        return this._filters;
    },

    set: function(value) {

        if(value)
        {
            // now put all the passes in one place..
            var passes = [];
            for (var i = 0; i < value.length; i++)
            {
                var filterPasses = value[i].passes;
                for (var j = 0; j < filterPasses.length; j++)
                {
                    passes.push(filterPasses[j]);
                }
            }

            // TODO change this as it is legacy
            this._filterBlock = {target:this, filterPasses:passes};
        }

        this._filters = value;
    }
});

/**
 * Set if this display object is cached as a bitmap.
 * This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects.
 * To remove simply set this property to 'null'
 * @property cacheAsBitmap
 * @type Boolean
 */
Object.defineProperty(PIXI.DisplayObject.prototype, 'cacheAsBitmap', {

    get: function() {
        return  this._cacheAsBitmap;
    },

    set: function(value) {

        if(this._cacheAsBitmap === value)return;

        if(value)
        {
            this._generateCachedSprite();
        }
        else
        {
            this._destroyCachedSprite();
        }

        this._cacheAsBitmap = value;
    }
});

/*
 * Updates the object transform for rendering
 *
 * @method updateTransform
 * @private
 */
PIXI.DisplayObject.prototype.updateTransform = function()
{
    // create some matrix refs for easy access
    var pt = this.parent.worldTransform;
    var wt = this.worldTransform;

    // temporary matrix variables
    var a, b, c, d, tx, ty;

    // so if rotation is between 0 then we can simplify the multiplication process..
    if(this.rotation % PIXI.PI_2)
    {
        // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes
        if(this.rotation !== this.rotationCache)
        {
            this.rotationCache = this.rotation;
            this._sr = Math.sin(this.rotation);
            this._cr = Math.cos(this.rotation);
        }

        // get the matrix values of the displayobject based on its transform properties..
        a  =  this._cr * this.scale.x;
        b  =  this._sr * this.scale.x;
        c  = -this._sr * this.scale.y;
        d  =  this._cr * this.scale.y;
        tx =  this.position.x;
        ty =  this.position.y;

        // check for pivot.. not often used so geared towards that fact!
        if(this.pivot.x || this.pivot.y)
        {
            tx -= this.pivot.x * a + this.pivot.y * c;
            ty -= this.pivot.x * b + this.pivot.y * d;
        }

        // concat the parent matrix with the objects transform.
        wt.a  = a  * pt.a + b  * pt.c;
        wt.b  = a  * pt.b + b  * pt.d;
        wt.c  = c  * pt.a + d  * pt.c;
        wt.d  = c  * pt.b + d  * pt.d;
        wt.tx = tx * pt.a + ty * pt.c + pt.tx;
        wt.ty = tx * pt.b + ty * pt.d + pt.ty;


    }
    else
    {
        // lets do the fast version as we know there is no rotation..
        a  = this.scale.x;
        d  = this.scale.y;

        tx = this.position.x - this.pivot.x * a;
        ty = this.position.y - this.pivot.y * d;

        wt.a  = a  * pt.a;
        wt.b  = a  * pt.b;
        wt.c  = d  * pt.c;
        wt.d  = d  * pt.d;
        wt.tx = tx * pt.a + ty * pt.c + pt.tx;
        wt.ty = tx * pt.b + ty * pt.d + pt.ty;
    }

    // multiply the alphas..
    this.worldAlpha = this.alpha * this.parent.worldAlpha;
};

// performance increase to avoid using call.. (10x faster)
PIXI.DisplayObject.prototype.displayObjectUpdateTransform = PIXI.DisplayObject.prototype.updateTransform;

/**
 * Retrieves the bounds of the displayObject as a rectangle object
 *
 * @method getBounds
 * @param matrix {Matrix}
 * @return {Rectangle} the rectangular bounding area
 */
PIXI.DisplayObject.prototype.getBounds = function(matrix)
{
    matrix = matrix;//just to get passed js hinting (and preserve inheritance)
    return PIXI.EmptyRectangle;
};

/**
 * Retrieves the local bounds of the displayObject as a rectangle object
 *
 * @method getLocalBounds
 * @return {Rectangle} the rectangular bounding area
 */
PIXI.DisplayObject.prototype.getLocalBounds = function()
{
    return this.getBounds(PIXI.identityMatrix);///PIXI.EmptyRectangle();
};

/**
 * Sets the object's stage reference, the stage this object is connected to
 *
 * @method setStageReference
 * @param stage {Stage} the stage that the object will have as its current stage reference
 */
PIXI.DisplayObject.prototype.setStageReference = function(stage)
{
    this.stage = stage;
    if(this._interactive)this.stage.dirty = true;
};

/**
 * Useful function that returns a texture of the displayObject object that can then be used to create sprites
 * This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.
 *
 * @method generateTexture
 * @param resolution {Number} The resolution of the texture being generated
 * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values
 * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used to generate the texture.
 * @return {Texture} a texture of the graphics object
 */
PIXI.DisplayObject.prototype.generateTexture = function(resolution, scaleMode, renderer)
{
    var bounds = this.getLocalBounds();

    var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution);

    PIXI.DisplayObject._tempMatrix.tx = -bounds.x;
    PIXI.DisplayObject._tempMatrix.ty = -bounds.y;

    renderTexture.render(this, PIXI.DisplayObject._tempMatrix);

    return renderTexture;
};

/**
 * Generates and updates the cached sprite for this object.
 *
 * @method updateCache
 */
PIXI.DisplayObject.prototype.updateCache = function()
{
    this._generateCachedSprite();
};

/**
 * Calculates the global position of the display object
 *
 * @method toGlobal
 * @param position {Point} The world origin to calculate from
 * @return {Point} A point object representing the position of this object
 */
PIXI.DisplayObject.prototype.toGlobal = function(position)
{
    // don't need to u[date the lot
    this.displayObjectUpdateTransform();
    return this.worldTransform.apply(position);
};

/**
 * Calculates the local position of the display object relative to another point
 *
 * @method toLocal
 * @param position {Point} The world origin to calculate from
 * @param [from] {DisplayObject} The DisplayObject to calculate the global position from
 * @return {Point} A point object representing the position of this object
 */
PIXI.DisplayObject.prototype.toLocal = function(position, from)
{
     //
    if (from)
    {
        position = from.toGlobal(position);
    }

    // don't need to u[date the lot
    this.displayObjectUpdateTransform();
    return this.worldTransform.applyInverse(position);
};

/**
 * Internal method.
 *
 * @method _renderCachedSprite
 * @param renderSession {Object} The render session
 * @private
 */
PIXI.DisplayObject.prototype._renderCachedSprite = function(renderSession)
{
    this._cachedSprite.worldAlpha = this.worldAlpha;

    if(renderSession.gl)
    {
        PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession);
    }
    else
    {
        PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession);
    }
};

/**
 * Internal method.
 *
 * @method _generateCachedSprite
 * @private
 */
PIXI.DisplayObject.prototype._generateCachedSprite = function()
{
    this._cacheAsBitmap = false;
    var bounds = this.getLocalBounds();

    if(!this._cachedSprite)
    {
        var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0);//, renderSession.renderer);

        this._cachedSprite = new PIXI.Sprite(renderTexture);
        this._cachedSprite.worldTransform = this.worldTransform;
    }
    else
    {
        this._cachedSprite.texture.resize(bounds.width | 0, bounds.height | 0);
    }

    //REMOVE filter!
    var tempFilters = this._filters;
    this._filters = null;

    this._cachedSprite.filters = tempFilters;

    PIXI.DisplayObject._tempMatrix.tx = -bounds.x;
    PIXI.DisplayObject._tempMatrix.ty = -bounds.y;

    this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true);

    this._cachedSprite.anchor.x = -( bounds.x / bounds.width );
    this._cachedSprite.anchor.y = -( bounds.y / bounds.height );

    this._filters = tempFilters;

    this._cacheAsBitmap = true;
};

/**
* Destroys the cached sprite.
*
* @method _destroyCachedSprite
* @private
*/
PIXI.DisplayObject.prototype._destroyCachedSprite = function()
{
    if(!this._cachedSprite)return;

    this._cachedSprite.texture.destroy(true);

    // TODO could be object pooled!
    this._cachedSprite = null;
};

/**
* Renders the object using the WebGL renderer
*
* @method _renderWebGL
* @param renderSession {RenderSession}
* @private
*/
PIXI.DisplayObject.prototype._renderWebGL = function(renderSession)
{
    // OVERWRITE;
    // this line is just here to pass jshinting 
    renderSession = renderSession;
};

/**
* Renders the object using the Canvas renderer
*
* @method _renderCanvas
* @param renderSession {RenderSession}
* @private
*/
PIXI.DisplayObject.prototype._renderCanvas = function(renderSession)
{
    // OVERWRITE;
    // this line is just here to pass jshinting 
    renderSession = renderSession;
};


PIXI.DisplayObject._tempMatrix = new PIXI.Matrix();

/**
 * The position of the displayObject on the x axis relative to the local coordinates of the parent.
 *
 * @property x
 * @type Number
 */
Object.defineProperty(PIXI.DisplayObject.prototype, 'x', {
    get: function() {
        return  this.position.x;
    },
    set: function(value) {
        this.position.x = value;
    }
});

/**
 * The position of the displayObject on the y axis relative to the local coordinates of the parent.
 *
 * @property y
 * @type Number
 */
Object.defineProperty(PIXI.DisplayObject.prototype, 'y', {
    get: function() {
        return  this.position.y;
    },
    set: function(value) {
        this.position.y = value;
    }
});

/**
 * @author Mat Groves http://matgroves.com/ @Doormat23
 */

/**
 * A DisplayObjectContainer represents a collection of display objects.
 * It is the base class of all display objects that act as a container for other objects.
 *
 * @class DisplayObjectContainer
 * @extends DisplayObject
 * @constructor
 */
PIXI.DisplayObjectContainer = function()
{
    PIXI.DisplayObject.call( this );

    /**
     * [read-only] The array of children of this container.
     *
     * @property children
     * @type Array(DisplayObject)
     * @readOnly
     */
    this.children = [];

    // fast access to update transform..

};

// constructor
PIXI.DisplayObjectContainer.prototype = Object.create( PIXI.DisplayObject.prototype );
PIXI.DisplayObjectContainer.prototype.constructor = PIXI.DisplayObjectContainer;


/**
 * The width of the displayObjectContainer, setting this will actually modify the scale to achieve the value set
 *
 * @property width
 * @type Number
 */
Object.defineProperty(PIXI.DisplayObjectContainer.prototype, 'width', {
    get: function() {
        return this.scale.x * this.getLocalBounds().width;
    },
    set: function(value) {

        var width = this.getLocalBounds().width;

        if(width !== 0)
        {
            this.scale.x = value / width;
        }
        else
        {
            this.scale.x = 1;
        }


        this._width = value;
    }
});

/**
 * The height of the displayObjectContainer, setting this will actually modify the scale to achieve the value set
 *
 * @property height
 * @type Number
 */
Object.defineProperty(PIXI.DisplayObjectContainer.prototype, 'height', {
    get: function() {
        return  this.scale.y * this.getLocalBounds().height;
    },
    set: function(value) {

        var height = this.getLocalBounds().height;

        if(height !== 0)
        {
            this.scale.y = value / height ;
        }
        else
        {
            this.scale.y = 1;
        }

        this._height = value;
    }
});

/**
 * Adds a child to the container.
 *
 * @method addChild
 * @param child {DisplayObject} The DisplayObject to add to the container
 * @return {DisplayObject} The child that was added.
 */
PIXI.DisplayObjectContainer.prototype.addChild = function(child)
{
    return this.addChildAt(child, this.children.length);
};

/**
 * Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown
 *
 * @method addChildAt
 * @param child {DisplayObject} The child to add
 * @param index {Number} The index to place the child in
 * @return {DisplayObject} The child that was added.
 */
PIXI.DisplayObjectContainer.prototype.addChildAt = function(child, index)
{
    if(index >= 0 && index <= this.children.length)
    {
        if(child.parent)
        {
            child.parent.removeChild(child);
        }

        child.parent = this;

        this.children.splice(index, 0, child);

        if(this.stage)child.setStageReference(this.stage);

        return child;
    }
    else
    {
        throw new Error(child + 'addChildAt: The index '+ index +' supplied is out of bounds ' + this.children.length);
    }
};

/**
 * Swaps the position of 2 Display Objects within this container.
 *
 * @method swapChildren
 * @param child {DisplayObject}
 * @param child2 {DisplayObject}
 */
PIXI.DisplayObjectContainer.prototype.swapChildren = function(child, child2)
{
    if(child === child2) {
        return;
    }

    var index1 = this.getChildIndex(child);
    var index2 = this.getChildIndex(child2);

    if(index1 < 0 || index2 < 0) {
        throw new Error('swapChildren: Both the supplied DisplayObjects must be a child of the caller.');
    }

    this.children[index1] = child2;
    this.children[index2] = child;

};

/**
 * Returns the index position of a child DisplayObject instance
 *
 * @method getChildIndex
 * @param child {DisplayObject} The DisplayObject instance to identify
 * @return {Number} The index position of the child display object to identify
 */
PIXI.DisplayObjectContainer.prototype.getChildIndex = function(child)
{
    var index = this.children.indexOf(child);
    if (index === -1)
    {
        throw new Error('The supplied DisplayObject must be a child of the caller');
    }
    return index;
};

/**
 * Changes the position of an existing child in the display object container
 *
 * @method setChildIndex
 * @param child {DisplayObject} The child DisplayObject instance for which you want to change the index number
 * @param index {Number} The resulting index number for the child display object
 */
PIXI.DisplayObjectContainer.prototype.setChildIndex = function(child, index)
{
    if (index < 0 || index >= this.children.length)
    {
        throw new Error('The supplied index is out of bounds');
    }
    var currentIndex = this.getChildIndex(child);
    this.children.splice(currentIndex, 1); //remove from old position
    this.children.splice(index, 0, child); //add at new position
};

/**
 * Returns the child at the specified index
 *
 * @method getChildAt
 * @param index {Number} The index to get the child from
 * @return {DisplayObject} The child at the given index, if any.
 */
PIXI.DisplayObjectContainer.prototype.getChildAt = function(index)
{
    if (index < 0 || index >= this.children.length)
    {
        throw new Error('getChildAt: Supplied index '+ index +' does not exist in the child list, or the supplied DisplayObject must be a child of the caller');
    }
    return this.children[index];

};

/**
 * Removes a child from the container.
 *
 * @method removeChild
 * @param child {DisplayObject} The DisplayObject to remove
 * @return {DisplayObject} The child that was removed.
 */
PIXI.DisplayObjectContainer.prototype.removeChild = function(child)
{
    var index = this.children.indexOf( child );
    if(index === -1)return;

    return this.removeChildAt( index );
};

/**
 * Removes a child from the specified index position.
 *
 * @method removeChildAt
 * @param index {Number} The index to get the child from
 * @return {DisplayObject} The child that was removed.
 */
PIXI.DisplayObjectContainer.prototype.removeChildAt = function(index)
{
    var child = this.getChildAt( index );
    if(this.stage)
        child.removeStageReference();

    child.parent = undefined;
    this.children.splice( index, 1 );
    return child;
};

/**
* Removes all children from this container that are within the begin and end indexes.
*
* @method removeChildren
* @param beginIndex {Number} The beginning position. Default value is 0.
* @param endIndex {Number} The ending position. Default value is size of the container.
*/
PIXI.DisplayObjectContainer.prototype.removeChildren = function(beginIndex, endIndex)
{
    var begin = beginIndex || 0;
    var end = typeof endIndex === 'number' ? endIndex : this.children.length;
    var range = end - begin;

    if (range > 0 && range <= end)
    {
        var removed = this.children.splice(begin, range);
        for (var i = 0; i < removed.length; i++) {
            var child = removed[i];
            if(this.stage)
                child.removeStageReference();
            child.parent = undefined;
        }
        return removed;
    }
    else if (range === 0 && this.children.length === 0)
    {
        return [];
    }
    else
    {
        throw new Error( 'removeChildren: Range Error, numeric values are outside the acceptable range' );
    }
};

/*
 * Updates the transform on all children of this container for rendering
 *
 * @method updateTransform
 * @private
 */
PIXI.DisplayObjectContainer.prototype.updateTransform = function()
{
    if(!this.visible)return;

    this.displayObjectUpdateTransform();

    //PIXI.DisplayObject.prototype.updateTransform.call( this );

    if(this._cacheAsBitmap)return;

    for(var i=0,j=this.children.length; i<j; i++)
    {
        this.children[i].updateTransform();
    }
};

// performance increase to avoid using call.. (10x faster)
PIXI.DisplayObjectContainer.prototype.displayObjectContainerUpdateTransform = PIXI.DisplayObjectContainer.prototype.updateTransform;

/**
 * Retrieves the bounds of the displayObjectContainer as a rectangle. The bounds calculation takes all visible children into consideration.
 *
 * @method getBounds
 * @return {Rectangle} The rectangular bounding area
 */
PIXI.DisplayObjectContainer.prototype.getBounds = function()
{
    if(this.children.length === 0)return PIXI.EmptyRectangle;

    // TODO the bounds have already been calculated this render session so return what we have

    var minX = Infinity;
    var minY = Infinity;

    var maxX = -Infinity;
    var maxY = -Infinity;

    var childBounds;
    var childMaxX;
    var childMaxY;

    var childVisible = false;

    for(var i=0,j=this.children.length; i<j; i++)
    {
        var child = this.children[i];

        if(!child.visible)continue;

        childVisible = true;

        childBounds = this.children[i].getBounds();

        minX = minX < childBounds.x ? minX : childBounds.x;
        minY = minY < childBounds.y ? minY : childBounds.y;

        childMaxX = childBounds.width + childBounds.x;
        childMaxY = childBounds.height + childBounds.y;

        maxX = maxX > childMaxX ? maxX : childMaxX;
        maxY = maxY > childMaxY ? maxY : childMaxY;
    }

    if(!childVisible)
        return PIXI.EmptyRectangle;

    var bounds = this._bounds;

    bounds.x = minX;
    bounds.y = minY;
    bounds.width = maxX - minX;
    bounds.height = maxY - minY;

    // TODO: store a reference so that if this function gets called again in the render cycle we do not have to recalculate
    //this._currentBounds = bounds;

    return bounds;
};

/**
 * Retrieves the non-global local bounds of the displayObjectContainer as a rectangle. The calculation takes all visible children into consideration.
 *
 * @method getLocalBounds
 * @return {Rectangle} The rectangular bounding area
 */
PIXI.DisplayObjectContainer.prototype.getLocalBounds = function()
{
    var matrixCache = this.worldTransform;

    this.worldTransform = PIXI.identityMatrix;

    for(var i=0,j=this.children.length; i<j; i++)
    {
        this.children[i].updateTransform();
    }

    var bounds = this.getBounds();

    this.worldTransform = matrixCache;

    return bounds;
};

/**
 * Sets the containers Stage reference. This is the Stage that this object, and all of its children, is connected to.
 *
 * @method setStageReference
 * @param stage {Stage} the stage that the container will have as its current stage reference
 */
PIXI.DisplayObjectContainer.prototype.setStageReference = function(stage)
{
    this.stage = stage;
    if(this._interactive)this.stage.dirty = true;

    for(var i=0,j=this.children.length; i<j; i++)
    {
        var child = this.children[i];
        child.setStageReference(stage);
    }
};

/**
 * Removes the current stage reference from the container and all of its children.
 *
 * @method removeStageReference
 */
PIXI.DisplayObjectContainer.prototype.removeStageReference = function()
{

    for(var i=0,j=this.children.length; i<j; i++)
    {
        var child = this.children[i];
        child.removeStageReference();
    }

    if(this._interactive)this.stage.dirty = true;

    this.stage = null;
};

/**
* Renders the object using the WebGL renderer
*
* @method _renderWebGL
* @param renderSession {RenderSession}
* @private
*/
PIXI.DisplayObjectContainer.prototype._renderWebGL = function(renderSession)
{
    if(!this.visible || this.alpha <= 0)return;

    if(this._cacheAsBitmap)
    {
        this._renderCachedSprite(renderSession);
        return;
    }

    var i,j;

    if(this._mask || this._filters)
    {

        // push filter first as we need to ensure the stencil buffer is correct for any masking
        if(this._filters)
        {
            renderSession.spriteBatch.flush();
            renderSession.filterManager.pushFilter(this._filterBlock);
        }

        if(this._mask)
        {
            renderSession.spriteBatch.stop();
            renderSession.maskManager.pushMask(this.mask, renderSession);
            renderSession.spriteBatch.start();
        }

        // simple render children!
        for(i=0,j=this.children.length; i<j; i++)
        {
            this.children[i]._renderWebGL(renderSession);
        }

        renderSession.spriteBatch.stop();

        if(this._mask)renderSession.maskManager.popMask(this._mask, renderSession);
        if(this._filters)renderSession.filterManager.popFilter();

        renderSession.spriteBatch.start();
    }
    else
    {
        // simple render children!
        for(i=0,j=this.children.length; i<j; i++)
        {
            this.children[i]._renderWebGL(renderSession);
        }
    }
};

/**
* Renders the object using the Canvas renderer
*
* @method _renderCanvas
* @param renderSession {RenderSession}
* @private
*/
PIXI.DisplayObjectContainer.prototype._renderCanvas = function(renderSession)
{
    if(this.visible === false || this.alpha === 0)return;

    if(this._cacheAsBitmap)
    {

        this._renderCachedSprite(renderSession);
        return;
    }

    if(this._mask)
    {
        renderSession.maskManager.pushMask(this._mask, renderSession);
    }

    for(var i=0,j=this.children.length; i<j; i++)
    {
        var child = this.children[i];
        child._renderCanvas(renderSession);
    }

    if(this._mask)
    {
        renderSession.maskManager.popMask(renderSession);
    }
};

/**
 * @author Mat Groves http://matgroves.com/ @Doormat23
 */

/**
 * The Sprite object is the base for all textured objects that are rendered to the screen
 *
 * @class Sprite
 * @extends DisplayObjectContainer
 * @constructor
 * @param texture {Texture} The texture for this sprite
 *
 * A sprite can be created directly from an image like this :
 * var sprite = new PIXI.Sprite.fromImage('assets/image.png');
 * yourStage.addChild(sprite);
 * then obviously don't forget to add it to the stage you have already created
 */
PIXI.Sprite = function(texture)
{
    PIXI.DisplayObjectContainer.call( this );

    /**
     * The anchor sets the origin point of the texture.
     * The default is 0,0 this means the texture's origin is the top left
     * Setting than anchor to 0.5,0.5 means the textures origin is centered
     * Setting the anchor to 1,1 would mean the textures origin points will be the bottom right corner
     *
     * @property anchor
     * @type Point
     */
    this.anchor = new PIXI.Point();

    /**
     * The texture that the sprite is using
     *
     * @property texture
     * @type Texture
     */
    this.texture = texture || PIXI.Texture.emptyTexture;

    /**
     * The width of the sprite (this is initially set by the texture)
     *
     * @property _width
     * @type Number
     * @private
     */
    this._width = 0;

    /**
     * The height of the sprite (this is initially set by the texture)
     *
     * @property _height
     * @type Number
     * @private
     */
    this._height = 0;

    /**
     * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect.
     *
     * @property tint
     * @type Number
     * @default 0xFFFFFF
     */
    this.tint = 0xFFFFFF;

    /**
     * The blend mode to be applied to the sprite. Set to PIXI.blendModes.NORMAL to remove any blend mode.
     *
     * @property blendMode
     * @type Number
     * @default PIXI.blendModes.NORMAL;
     */
    this.blendMode = PIXI.blendModes.NORMAL;

    /**
     * The shader that will be used to render the texture to the stage. Set to null to remove a current shader.
     *
     * @property shader
     * @type AbstractFilter
     * @default null
     */
    this.shader = null;

    if(this.texture.baseTexture.hasLoaded)
    {
        this.onTextureUpdate();
    }
    else
    {
        this.texture.on( 'update', this.onTextureUpdate.bind(this) );
    }

    this.renderable = true;

};

// constructor
PIXI.Sprite.prototype = Object.create( PIXI.DisplayObjectContainer.prototype );
PIXI.Sprite.prototype.constructor = PIXI.Sprite;

/**
 * The width of the sprite, setting this will actually modify the scale to achieve the value set
 *
 * @property width
 * @type Number
 */
Object.defineProperty(PIXI.Sprite.prototype, 'width', {
    get: function() {
        return this.scale.x * this.texture.frame.width;
    },
    set: function(value) {
        this.scale.x = value / this.texture.frame.width;
        this._width = value;
    }
});

/**
 * The height of the sprite, setting this will actually modify the scale to achieve the value set
 *
 * @property height
 * @type Number
 */
Object.defineProperty(PIXI.Sprite.prototype, 'height', {
    get: function() {
        return  this.scale.y * this.texture.frame.height;
    },
    set: function(value) {
        this.scale.y = value / this.texture.frame.height;
        this._height = value;
    }
});

/**
 * Sets the texture of the sprite
 *
 * @method setTexture
 * @param texture {Texture} The PIXI texture that is displayed by the sprite
 */
PIXI.Sprite.prototype.setTexture = function(texture)
{
    this.texture = texture;
    this.cachedTint = 0xFFFFFF;
};

/**
 * When the texture is updated, this event will fire to update the scale and frame
 *
 * @method onTextureUpdate
 * @param event
 * @private
 */
PIXI.Sprite.prototype.onTextureUpdate = function()
{
    // so if _width is 0 then width was not set..
    if(this._width)this.scale.x = this._width / this.texture.frame.width;
    if(this._height)this.scale.y = this._height / this.texture.frame.height;

    //this.updateFrame = true;
};

/**
* Returns the bounds of the Sprite as a rectangle. The bounds calculation takes the worldTransform into account.
*
* @method getBounds
* @param matrix {Matrix} the transformation matrix of the sprite
* @return {Rectangle} the framing rectangle
*/
PIXI.Sprite.prototype.getBounds = function(matrix)
{
    var width = this.texture.frame.width;
    var height = this.texture.frame.height;

    var w0 = width * (1-this.anchor.x);
    var w1 = width * -this.anchor.x;

    var h0 = height * (1-this.anchor.y);
    var h1 = height * -this.anchor.y;

    var worldTransform = matrix || this.worldTransform ;

    var a = worldTransform.a;
    var b = worldTransform.b;
    var c = worldTransform.c;
    var d = worldTransform.d;
    var tx = worldTransform.tx;
    var ty = worldTransform.ty;

    var maxX = -Infinity;
    var maxY = -Infinity;

    var minX = Infinity;
    var minY = Infinity;

    if(b === 0 && c === 0)
    {
        // scale may be negative!
        if(a < 0)a *= -1;
        if(d < 0)d *= -1;

        // this means there is no rotation going on right? RIGHT?
        // if thats the case then we can avoid checking the bound values! yay
        minX = a * w1 + tx;
        maxX = a * w0 + tx;
        minY = d * h1 + ty;
        maxY = d * h0 + ty;
    }
    else
    {
        var x1 = a * w1 + c * h1 + tx;
        var y1 = d * h1 + b * w1 + ty;

        var x2 = a * w0 + c * h1 + tx;
        var y2 = d * h1 + b * w0 + ty;

        var  = a * w0 + c * h0 + tx;
        var y3 = d * h0 + b * w0 + ty;

        var x4 =  a * w1 + c * h0 + tx;
        var y4 =  d * h0 + b * w1 + ty;

        minX = x1 < minX ? x1 : minX;
        minX = x2 < minX ? x2 : minX;
        minX =  < minX ?  : minX;
        minX = x4 < minX ? x4 : minX;

        minY = y1 < minY ? y1 : minY;
        minY = y2 < minY ? y2 : minY;
        minY = y3 < minY ? y3 : minY;
        minY = y4 < minY ? y4 : minY;

        maxX = x1 > maxX ? x1 : maxX;
        maxX = x2 > maxX ? x2 : maxX;
        maxX =  > maxX ?  : maxX;
        maxX = x4 > maxX ? x4 : maxX;

        maxY = y1 > maxY ? y1 : maxY;
        maxY = y2 > maxY ? y2 : maxY;
        maxY = y3 > maxY ? y3 : maxY;
        maxY = y4 > maxY ? y4 : maxY;
    }

    var bounds = this._bounds;

    bounds.x = minX;
    bounds.width = maxX - minX;

    bounds.y = minY;
    bounds.height = maxY - minY;

    // store a reference so that if this function gets called again in the render cycle we do not have to recalculate
    this._currentBounds = bounds;

    return bounds;
};

/**
* Renders the object using the WebGL renderer
*
* @method _renderWebGL
* @param renderSession {RenderSession}
* @private
*/
PIXI.Sprite.prototype._renderWebGL = function(renderSession)
{
    // if the sprite is not visible or the alpha is 0 then no need to render this element
    if(!this.visible || this.alpha <= 0)return;

    var i,j;

    // do a quick check to see if this element has a mask or a filter.
    if(this._mask || this._filters)
    {
        var spriteBatch =  renderSession.spriteBatch;

        // push filter first as we need to ensure the stencil buffer is correct for any masking
        if(this._filters)
        {
            spriteBatch.flush();
            renderSession.filterManager.pushFilter(this._filterBlock);
        }

        if(this._mask)
        {
            spriteBatch.stop();
            renderSession.maskManager.pushMask(this.mask, renderSession);
            spriteBatch.start();
        }

        // add this sprite to the batch
        spriteBatch.render(this);

        // now loop through the children and make sure they get rendered
        for(i=0,j=this.children.length; i<j; i++)
        {
            this.children[i]._renderWebGL(renderSession);
        }

        // time to stop the sprite batch as either a mask element or a filter draw will happen next
        spriteBatch.stop();

        if(this._mask)renderSession.maskManager.popMask(this._mask, renderSession);
        if(this._filters)renderSession.filterManager.popFilter();

        spriteBatch.start();
    }
    else
    {
        renderSession.spriteBatch.render(this);

        // simple render children!
        for(i=0,j=this.children.length; i<j; i++)
        {
            this.children[i]._renderWebGL(renderSession);
        }

    }
};

/**
* Renders the object using the Canvas renderer
*
* @method _renderCanvas
* @param renderSession {RenderSession}
* @private
*/
PIXI.Sprite.prototype._renderCanvas = function(renderSession)
{
    // If the sprite is not visible or the alpha is 0 then no need to render this element
    if (this.visible === false || this.alpha === 0 || this.texture.crop.width <= 0 || this.texture.crop.height <= 0) return;

    if (this.blendMode !== renderSession.currentBlendMode)
    {
        renderSession.currentBlendMode = this.blendMode;
        renderSession.context.globalCompositeOperation = PIXI.blendModesCanvas[renderSession.currentBlendMode];
    }

    if (this._mask)
    {
        renderSession.maskManager.pushMask(this._mask, renderSession);
    }

    //  Ignore null sources
    if (this.texture.valid)
    {
        var resolution = this.texture.baseTexture.resolution / renderSession.resolution;

        renderSession.context.globalAlpha = this.worldAlpha;

         //  If smoothingEnabled is supported and we need to change the smoothing property for this texture
        if (renderSession.smoothProperty && renderSession.scaleMode !== this.texture.baseTexture.scaleMode)
        {
            renderSession.scaleMode = this.texture.baseTexture.scaleMode;
            renderSession.context[renderSession.smoothProperty] = (renderSession.scaleMode === PIXI.scaleModes.LINEAR);
        }

        //  If the texture is trimmed we offset by the trim x/y, otherwise we use the frame dimensions
        var dx = (this.texture.trim) ? this.texture.trim.x - this.anchor.x * this.texture.trim.width : this.anchor.x * -this.texture.frame.width;
        var dy = (this.texture.trim) ? this.texture.trim.y - this.anchor.y * this.texture.trim.height : this.anchor.y * -this.texture.frame.height;

        //  Allow for pixel rounding
        if (renderSession.roundPixels)
        {
            renderSession.context.setTransform(
                this.worldTransform.a,
                this.worldTransform.b,
                this.worldTransform.c,
                this.worldTransform.d,
                (this.worldTransform.tx * renderSession.resolution) | 0,
                (this.worldTransform.ty * renderSession.resolution) | 0);

            dx = dx | 0;
            dy = dy | 0;
        }
        else
        {
            renderSession.context.setTransform(
                this.worldTransform.a,
                this.worldTransform.b,
                this.worldTransform.c,
                this.worldTransform.d,
                this.worldTransform.tx * renderSession.resolution,
                this.worldTransform.ty * renderSession.resolution);
        }




        if (this.tint !== 0xFFFFFF)
        {
            if (this.cachedTint !== this.tint)
            {
                this.cachedTint = this.tint;

                //  TODO clean up caching - how to clean up the caches?
                this.tintedTexture = PIXI.CanvasTinter.getTintedTexture(this, this.tint);
            }

            renderSession.context.drawImage(
                                this.tintedTexture,
                                0,
                                0,
                                this.texture.crop.width,
                                this.texture.crop.height,
                                dx / resolution,
                                dy / resolution,
                                this.texture.crop.width / resolution,
                                this.texture.crop.height / resolution);
        }
        else
        {
            renderSession.context.drawImage(
                                this.texture.baseTexture.source,
                                this.texture.crop.x,
                                this.texture.crop.y,
                                this.texture.crop.width,
                                this.texture.crop.height,
                                dx / resolution,
                                dy / resolution,
                                this.texture.crop.width / resolution,
                                this.texture.crop.height / resolution);
        }
    }

    // OVERWRITE
    for (var i = 0, j = this.children.length; i < j; i++)
    {
        this.children[i]._renderCanvas(renderSession);
    }

    if (this._mask)
    {
        renderSession.maskManager.popMask(renderSession);
    }
};

// some helper functions..

/**
 *
 * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId
 * The frame ids are created when a Texture packer file has been loaded
 *
 * @method fromFrame
 * @static
 * @param frameId {String} The frame Id of the texture in the cache
 * @return {Sprite} A new Sprite using a texture from the texture cache matching the frameId
 */
PIXI.Sprite.fromFrame = function(frameId)
{
    var texture = PIXI.TextureCache[frameId];
    if(!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache' + this);
    return new PIXI.Sprite(texture);
};

/**
 *
 * Helper function that creates a sprite that will contain a texture based on an image url
 * If the image is not in the texture cache it will be loaded
 *
 * @method fromImage
 * @static
 * @param imageId {String} The image url of the texture
 * @return {Sprite} A new Sprite using a texture from the texture cache matching the image id
 */
PIXI.Sprite.fromImage = function(imageId, crossorigin, scaleMode)
{
    var texture = PIXI.Texture.fromImage(imageId, crossorigin, scaleMode);
    return new PIXI.Sprite(texture);
};

/**
 * @author Mat Groves http://matgroves.com/
 */

/**
 * The SpriteBatch class is a really fast version of the DisplayObjectContainer
 * built solely for speed, so use when you need a lot of sprites or particles.
 * And it's extremely easy to use :

    var container = new PIXI.SpriteBatch();

    stage.addChild(container);

    for(var i  = 0; i < 100; i++)
    {
        var sprite = new PIXI.Sprite.fromImage("myImage.png");
        container.addChild(sprite);
    }
 * And here you have a hundred sprites that will be renderer at the speed of light
 *
 * @class SpriteBatch
 * @constructor
 * @param texture {Texture}
 */

//TODO RENAME to PARTICLE CONTAINER?
PIXI.SpriteBatch = function(texture)
{
    PIXI.DisplayObjectContainer.call( this);

    this.textureThing = texture;

    this.ready = false;
};

PIXI.SpriteBatch.prototype = Object.create(PIXI.DisplayObjectContainer.prototype);
PIXI.SpriteBatch.prototype.constructor = PIXI.SpriteBatch;

/*
 * Initialises the spriteBatch
 *
 * @method initWebGL
 * @param gl {WebGLContext} the current WebGL drawing context
 */
PIXI.SpriteBatch.prototype.initWebGL = function(gl)
{
    // TODO only one needed for the whole engine really?
    this.fastSpriteBatch = new PIXI.WebGLFastSpriteBatch(gl);

    this.ready = true;
};

/*
 * Updates the object transform for rendering
 *
 * @method updateTransform
 * @private
 */
PIXI.SpriteBatch.prototype.updateTransform = function()
{
    // TODO don't need to!
    this.displayObjectUpdateTransform();
    //  PIXI.DisplayObjectContainer.prototype.updateTransform.call( this );
};

/**
* Renders the object using the WebGL renderer
*
* @method _renderWebGL
* @param renderSession {RenderSession}
* @private
*/
PIXI.SpriteBatch.prototype._renderWebGL = function(renderSession)
{
    if(!this.visible || this.alpha <= 0 || !this.children.length)return;

    if(!this.ready)this.initWebGL( renderSession.gl );

    if(this.fastSpriteBatch.gl !== renderSession.gl) this.fastSpriteBatch.setContext(renderSession.gl);

    renderSession.spriteBatch.stop();

    renderSession.shaderManager.setShader(renderSession.shaderManager.fastShader);

    this.fastSpriteBatch.begin(this, renderSession);
    this.fastSpriteBatch.render(this);

    renderSession.spriteBatch.start();

};

/**
* Renders the object using the Canvas renderer
*
* @method _renderCanvas
* @param renderSession {RenderSession}
* @private
*/
PIXI.SpriteBatch.prototype._renderCanvas = function(renderSession)
{
    if(!this.visible || this.alpha <= 0 || !this.children.length)return;

    var context = renderSession.context;
    context.globalAlpha = this.worldAlpha;

    this.displayObjectUpdateTransform();

    var transform = this.worldTransform;
    // alow for trimming

    var isRotated = true;

    for (var i = 0; i < this.children.length; i++) {

        var child = this.children[i];

        if(!child.visible)continue;

        var texture = child.texture;
        var frame = texture.frame;

        context.globalAlpha = this.worldAlpha * child.alpha;

        if(child.rotation % (Math.PI * 2) === 0)
        {
            if(isRotated)
            {
                context.setTransform(transform.a, transform.b, transform.c, transform.d, transform.tx, transform.ty);
                isRotated = false;
            }

            // this is the fastest  way to optimise! - if rotation is 0 then we can avoid any kind of setTransform call
            context.drawImage(texture.baseTexture.source,
                                 frame.x,
                                 frame.y,
                                 frame.width,
                                 frame.height,
                                 ((child.anchor.x) * (-frame.width * child.scale.x) + child.position.x  + 0.5) | 0,
                                 ((child.anchor.y) * (-frame.height * child.scale.y) + child.position.y  + 0.5) | 0,
                                 frame.width * child.scale.x,
                                 frame.height * child.scale.y);
        }
        else
        {
            if(!isRotated)isRotated = true;

            child.displayObjectUpdateTransform();

            var childTransform = child.worldTransform;

            // allow for trimming

            if (renderSession.roundPixels)
            {
                context.setTransform(childTransform.a, childTransform.b, childTransform.c, childTransform.d, childTransform.tx | 0, childTransform.ty | 0);
            }
            else
            {
                context.setTransform(childTransform.a, childTransform.b, childTransform.c, childTransform.d, childTransform.tx, childTransform.ty);
            }

            context.drawImage(texture.baseTexture.source,
                                 frame.x,
                                 frame.y,
                                 frame.width,
                                 frame.height,
                                 ((child.anchor.x) * (-frame.width) + 0.5) | 0,
                                 ((child.anchor.y) * (-frame.height) + 0.5) | 0,
                                 frame.width,
                                 frame.height);


        }

       // context.restore();
    }

//    context.restore();
};

/**
 * @author Mat Groves http://matgroves.com/ @Doormat23
 */

/**
 * A MovieClip is a simple way to display an animation depicted by a list of textures.
 *
 * @class MovieClip
 * @extends Sprite
 * @constructor
 * @param textures {Array(Texture)} an array of {Texture} objects that make up the animation
 */
PIXI.MovieClip = function(textures)
{
    PIXI.Sprite.call(this, textures[0]);

    /**
     * The array of textures that make up the animation
     *
     * @property textures
     * @type Array(Texture)
     */
    this.textures = textures;

    /**
     * The speed that the MovieClip will play at. Higher is faster, lower is slower
     *
     * @property animationSpeed
     * @type Number
     * @default 1
     */
    this.animationSpeed = 1;

    /**
     * Whether or not the movie clip repeats after playing.
     *
     * @property loop
     * @type Boolean
     * @default true
     */
    this.loop = true;

    /**
     * Function to call when a MovieClip finishes playing
     *
     * @property onComplete
     * @type Function
     */
    this.onComplete = null;

    /**
     * [read-only] The MovieClips current frame index (this may not have to be a whole number)
     *
     * @property currentFrame
     * @type Number
     * @default 0
     * @readOnly
     */
    this.currentFrame = 0;

    /**
     * [read-only] Indicates if the MovieClip is currently playing
     *
     * @property playing
     * @type Boolean
     * @readOnly
     */
    this.playing = false;
};

// constructor
PIXI.MovieClip.prototype = Object.create( PIXI.Sprite.prototype );
PIXI.MovieClip.prototype.constructor = PIXI.MovieClip;

/**
* [read-only] totalFrames is the total number of frames in the MovieClip. This is the same as number of textures
* assigned to the MovieClip.
*
* @property totalFrames
* @type Number
* @default 0
* @readOnly
*/
Object.defineProperty( PIXI.MovieClip.prototype, 'totalFrames', {
    get: function() {

        return this.textures.length;
    }
});

/**
 * Stops the MovieClip
 *
 * @method stop
 */
PIXI.MovieClip.prototype.stop = function()
{
    this.playing = false;
};

/**
 * Plays the MovieClip
 *
 * @method play
 */
PIXI.MovieClip.prototype.play = function()
{
    this.playing = true;
};

/**
 * Stops the MovieClip and goes to a specific frame
 *
 * @method gotoAndStop
 * @param frameNumber {Number} frame index to stop at
 */
PIXI.MovieClip.prototype.gotoAndStop = function(frameNumber)
{
    this.playing = false;
    this.currentFrame = frameNumber;
    var round = (this.currentFrame + 0.5) | 0;
    this.setTexture(this.textures[round % this.textures.length]);
};

/**
 * Goes to a specific frame and begins playing the MovieClip
 *
 * @method gotoAndPlay
 * @param frameNumber {Number} frame index to start at
 */
PIXI.MovieClip.prototype.gotoAndPlay = function(frameNumber)
{
    this.currentFrame = frameNumber;
    this.playing = true;
};

/*
 * Updates the object transform for rendering
 *
 * @method updateTransform
 * @private
 */
PIXI.MovieClip.prototype.updateTransform = function()
{
    this.displayObjectContainerUpdateTransform();

    if(!this.playing)return;

    this.currentFrame += this.animationSpeed;

    var round = (this.currentFrame + 0.5) | 0;

    this.currentFrame = this.currentFrame % this.textures.length;

    if(this.loop || round < this.textures.length)
    {
        this.setTexture(this.textures[round % this.textures.length]);
    }
    else if(round >= this.textures.length)
    {
        this.gotoAndStop(this.textures.length - 1);
        if(this.onComplete)
        {
            this.onComplete();
        }
    }
};

/**
 * A short hand way of creating a movieclip from an array of frame ids
 *
 * @static
 * @method fromFrames
 * @param frames {Array} the array of frames ids the movieclip will use as its texture frames
 * @return {MovieClip}
 */
PIXI.MovieClip.fromFrames = function(frames)
{
    var textures = [];

    for (var i = 0; i < frames.length; i++)
    {
        textures.push(new PIXI.Texture.fromFrame(frames[i]));
    }

    return new PIXI.MovieClip(textures);
};

/**
 * A short hand way of creating a movieclip from an array of image ids
 *
 * @static
 * @method fromImages
 * @param frames {Array} the array of image ids the movieclip will use as its texture frames
 * @return {MovieClip}
 */
PIXI.MovieClip.fromImages = function(images)
{
    var textures = [];

    for (var i = 0; i < images.length; i++)
    {
        textures.push(new PIXI.Texture.fromImage(images[i]));
    }

    return new PIXI.MovieClip(textures);
};

/**
 * @author Mat Groves http://matgroves.com/ @Doormat23
 */

/**
 * A target and pass info object for filters.
 *
 * @class FilterBlock
 * @constructor
 */
PIXI.FilterBlock = function()
{
    /**
     * The visible state of this FilterBlock.
     *
     * @property visible
     * @type Boolean
     */
    this.visible = true;

    /**
     * The renderable state of this FilterBlock.
     *
     * @property renderable
     * @type Boolean
     */
    this.renderable = true;
};

PIXI.FilterBlock.prototype.constructor = PIXI.FilterBlock;

/**
 * @author Mat Groves http://matgroves.com/ @Doormat23
 * Modified by Tom Slezakowski http://www.tomslezakowski.com @TomSlezakowski (24/03/2014) - Added dropShadowColor.
 */

/**
 * A Text Object will create a line or multiple lines of text. To split a line you can use '\n' in your text string,
 * or add a wordWrap property set to true and and wordWrapWidth property with a value in the style object.
 *
 * @class Text
 * @extends Sprite
 * @constructor
 * @param text {String} The copy that you would like the text to display
 * @param [style] {Object} The style parameters
 * @param [style.font] {String} default 'bold 20px Arial' The style and size of the font
 * @param [style.fill='black'] {String|Number} A canvas fillstyle that will be used on the text e.g 'red', '#00FF00'
 * @param [style.align='left'] {String} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text
 * @param [style.stroke] {String|Number} A canvas fillstyle that will be used on the text stroke e.g 'blue', '#FCFF00'
 * @param [style.strokeThickness=0] {Number} A number that represents the thickness of the stroke. Default is 0 (no stroke)
 * @param [style.wordWrap=false] {Boolean} Indicates if word wrap should be used
 * @param [style.wordWrapWidth=100] {Number} The width at which text will wrap, it needs wordWrap to be set to true
 * @param [style.dropShadow=false] {Boolean} Set a drop shadow for the text
 * @param [style.dropShadowColor='#000000'] {String} A fill style to be used on the dropshadow e.g 'red', '#00FF00'
 * @param [style.dropShadowAngle=Math.PI/4] {Number} Set a angle of the drop shadow
 * @param [style.dropShadowDistance=5] {Number} Set a distance of the drop shadow
 * @param [style.lineJoin='miter'] {String} The lineJoin property sets the type of corner created, it can resolve spiked text issue. Default is 'miter' (creates a sharp corner).
 */
PIXI.Text = function(text, style)
{
    /**
     * The canvas element that everything is drawn to
     *
     * @property canvas
     * @type HTMLCanvasElement
     */
    this.canvas = document.createElement('canvas');

    /**
     * The canvas 2d context that everything is drawn with
     * @property context
     * @type CanvasRenderingContext2D
     */
    this.context = this.canvas.getContext('2d');

    /**
     * The resolution of the canvas.
     * @property resolution
     * @type Number
     */
    this.resolution = 1;

    PIXI.Sprite.call(this, PIXI.Texture.fromCanvas(this.canvas));

    this.setText(text);
    this.setStyle(style);

};

// constructor
PIXI.Text.prototype = Object.create(PIXI.Sprite.prototype);
PIXI.Text.prototype.constructor = PIXI.Text;

/**
 * The width of the Text, setting this will actually modify the scale to achieve the value set
 *
 * @property width
 * @type Number
 */
Object.defineProperty(PIXI.Text.prototype, 'width', {
    get: function() {

        if(this.dirty)
        {
            this.updateText();
            this.dirty = false;
        }


        return this.scale.x * this.texture.frame.width;
    },
    set: function(value) {
        this.scale.x = value / this.texture.frame.width;
        this._width = value;
    }
});

/**
 * The height of the Text, setting this will actually modify the scale to achieve the value set
 *
 * @property height
 * @type Number
 */
Object.defineProperty(PIXI.Text.prototype, 'height', {
    get: function() {

        if(this.dirty)
        {
            this.updateText();
            this.dirty = false;
        }


        return  this.scale.y * this.texture.frame.height;
    },
    set: function(value) {
        this.scale.y = value / this.texture.frame.height;
        this._height = value;
    }
});

/**
 * Set the style of the text
 *
 * @method setStyle
 * @param [style] {Object} The style parameters
 * @param [style.font='bold 20pt Arial'] {String} The style and size of the font
 * @param [style.fill='black'] {Object} A canvas fillstyle that will be used on the text eg 'red', '#00FF00'
 * @param [style.align='left'] {String} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text
 * @param [style.stroke='black'] {String} A canvas fillstyle that will be used on the text stroke eg 'blue', '#FCFF00'
 * @param [style.strokeThickness=0] {Number} A number that represents the thickness of the stroke. Default is 0 (no stroke)
 * @param [style.wordWrap=false] {Boolean} Indicates if word wrap should be used
 * @param [style.wordWrapWidth=100] {Number} The width at which text will wrap
 * @param [style.dropShadow=false] {Boolean} Set a drop shadow for the text
 * @param [style.dropShadowColor='#000000'] {String} A fill style to be used on the dropshadow e.g 'red', '#00FF00'
 * @param [style.dropShadowAngle=Math.PI/4] {Number} Set a angle of the drop shadow
 * @param [style.dropShadowDistance=5] {Number} Set a distance of the drop shadow
 * @param [style.lineJoin='miter'] {String} The lineJoin property sets the type of corner created, it can resolve spiked text issue. Default is 'miter' (creates a sharp corner).
 * @param [style.lineHeight] {number} Line height of the text
 */
PIXI.Text.prototype.setStyle = function(style)
{
    style = style || {};
    style.font = style.font || 'bold 20pt Arial';
    style.fill = style.fill || 'black';
    style.align = style.align || 'left';
    style.stroke = style.stroke || 'black'; //provide a default, see: https://github.com/GoodBoyDigital/pixi.js/issues/136
    style.strokeThickness = style.strokeThickness || 0;
    style.wordWrap = style.wordWrap || false;
    style.wordWrapWidth = style.wordWrapWidth || 100;

    style.dropShadow = style.dropShadow || false;
    style.dropShadowAngle = style.dropShadowAngle || Math.PI / 6;
    style.dropShadowDistance = style.dropShadowDistance || 4;
    style.dropShadowColor = style.dropShadowColor || 'black';
    style.lineJoin = style.lineJoin || 'miter';
    style.lineHeight = style.lineHeight || false;

    this.style = style;
    this.dirty = true;
};

/**
 * Set the copy for the text object. To split a line you can use '\n'.
 *
 * @method setText
 * @param text {String} The copy that you would like the text to display
 */
PIXI.Text.prototype.setText = function(text)
{
    this.text = text.toString() || ' ';
    this.dirty = true;
};

/**
 * Renders text and updates it when needed
 *
 * @method updateText
 * @private
 */
PIXI.Text.prototype.updateText = function()
{
    this.texture.baseTexture.resolution = this.resolution;

    this.context.font = this.style.font;

    var outputText = this.text;

    // word wrap
    // preserve original text
    if(this.style.wordWrap)outputText = this.wordWrap(this.text);

    //split text into lines
    var lines = outputText.split(/(?:\r\n|\r|\n)/);

    //calculate text width
    var lineWidths = [];
    var maxLineWidth = 0;
    var fontProperties = this.determineFontProperties(this.style.font);
    for (var i = 0; i < lines.length; i++)
    {
        var lineWidth = this.context.measureText(lines[i]).width;
        lineWidths[i] = lineWidth;
        maxLineWidth = Math.max(maxLineWidth, lineWidth);
    }

    var width = maxLineWidth + this.style.strokeThickness;
    if(this.style.dropShadow)width += this.style.dropShadowDistance;

    this.canvas.width = ( width + this.context.lineWidth ) * this.resolution;

    //calculate text height
    var lineHeight = this.style.lineHeight || fontProperties.fontSize + this.style.strokeThickness;

    var height = lineHeight * lines.length;
    if(this.style.dropShadow)height += this.style.dropShadowDistance;

    this.canvas.height = height * this.resolution;

    this.context.scale( this.resolution, this.resolution);

    if(navigator.isCocoonJS) this.context.clearRect(0,0,this.canvas.width,this.canvas.height);

    // used for debugging..
    //this.context.fillStyle ="#FF0000"
    //this.context.fillRect(0, 0, this.canvas.width,this.canvas.height);

    this.context.font = this.style.font;
    this.context.strokeStyle = this.style.stroke;
    this.context.lineWidth = this.style.strokeThickness;
    this.context.textBaseline = 'alphabetic';
    this.context.lineJoin = this.style.lineJoin;

    var linePositionX;
    var linePositionY;

    if(this.style.dropShadow)
    {
        this.context.fillStyle = this.style.dropShadowColor;

        var xShadowOffset = Math.sin(this.style.dropShadowAngle) * this.style.dropShadowDistance;
        var yShadowOffset = Math.cos(this.style.dropShadowAngle) * this.style.dropShadowDistance;

        for (i = 0; i < lines.length; i++)
        {
            linePositionX = this.style.strokeThickness / 2;
            linePositionY = (this.style.strokeThickness / 2 + i * lineHeight) + fontProperties.ascent;

            if(this.style.align === 'right')
            {
                linePositionX += maxLineWidth - lineWidths[i];
            }
            else if(this.style.align === 'center')
            {
                linePositionX += (maxLineWidth - lineWidths[i]) / 2;
            }

            if(this.style.fill)
            {
                this.context.fillText(lines[i], linePositionX + xShadowOffset, linePositionY + yShadowOffset);
            }

          //  if(dropShadow)
        }
    }

    //set canvas text styles
    this.context.fillStyle = this.style.fill;

    //draw lines line by line
    for (i = 0; i < lines.length; i++)
    {
        linePositionX = this.style.strokeThickness / 2;
        linePositionY = (this.style.strokeThickness / 2 + i * lineHeight) + fontProperties.ascent;

        if(this.style.align === 'right')
        {
            linePositionX += maxLineWidth - lineWidths[i];
        }
        else if(this.style.align === 'center')
        {
            linePositionX += (maxLineWidth - lineWidths[i]) / 2;
        }

        if(this.style.stroke && this.style.strokeThickness)
        {
            this.context.strokeText(lines[i], linePositionX, linePositionY);
        }

        if(this.style.fill)
        {
            this.context.fillText(lines[i], linePositionX, linePositionY);
        }

      //  if(dropShadow)
    }

    this.updateTexture();
};

/**
 * Updates texture size based on canvas size
 *
 * @method updateTexture
 * @private
 */
PIXI.Text.prototype.updateTexture = function()
{
    this.texture.baseTexture.width = this.canvas.width;
    this.texture.baseTexture.height = this.canvas.height;
    this.texture.crop.width = this.texture.frame.width = this.canvas.width;
    this.texture.crop.height = this.texture.frame.height = this.canvas.height;

    this._width = this.canvas.width;
    this._height = this.canvas.height;

    // update the dirty base textures
    this.texture.baseTexture.dirty();
};

/**
* Renders the object using the WebGL renderer
*
* @method _renderWebGL
* @param renderSession {RenderSession}
* @private
*/
PIXI.Text.prototype._renderWebGL = function(renderSession)
{
    if(this.dirty)
    {
        this.resolution = renderSession.resolution;

        this.updateText();
        this.dirty = false;
    }

    PIXI.Sprite.prototype._renderWebGL.call(this, renderSession);
};

/**
* Renders the object using the Canvas renderer
*
* @method _renderCanvas
* @param renderSession {RenderSession}
* @private
*/
PIXI.Text.prototype._renderCanvas = function(renderSession)
{
    if(this.dirty)
    {
        this.resolution = renderSession.resolution;

        this.updateText();
        this.dirty = false;
    }

    PIXI.Sprite.prototype._renderCanvas.call(this, renderSession);
};

/**
* Calculates the ascent, descent and fontSize of a given fontStyle
*
* @method determineFontProperties
* @param fontStyle {Object}
* @private
*/
PIXI.Text.prototype.determineFontProperties = function(fontStyle)
{
    var properties = PIXI.Text.fontPropertiesCache[fontStyle];

    if(!properties)
    {
        properties = {};

        var canvas = PIXI.Text.fontPropertiesCanvas;
        var context = PIXI.Text.fontPropertiesContext;

        context.font = fontStyle;

        var width = Math.ceil(context.measureText('|Mq').width);
        var baseline = Math.ceil(context.measureText('M').width);
        var height = 2 * baseline;

        baseline = baseline * 1.4 | 0;

        canvas.width = width;
        canvas.height = height;

        context.fillStyle = '#f00';
        context.fillRect(0, 0, width, height);

        context.font = fontStyle;

        context.textBaseline = 'alphabetic';
        context.fillStyle = '#000';
        context.fillText('|MÉq', 0, baseline);

        var imagedata = context.getImageData(0, 0, width, height).data;
        var pixels = imagedata.length;
        var line = width * 4;

        var i, j;

        var idx = 0;
        var stop = false;

        // ascent. scan from top to bottom until we find a non red pixel
        for(i = 0; i < baseline; i++)
        {
            for(j = 0; j < line; j += 4)
            {
                if(imagedata[idx + j] !== 255)
                {
                    stop = true;
                    break;
                }
            }
            if(!stop)
            {
                idx += line;
            }
            else
            {
                break;
            }
        }

        properties.ascent = baseline - i;

        idx = pixels - line;
        stop = false;

        // descent. scan from bottom to top until we find a non red pixel
        for(i = height; i > baseline; i--)
        {
            for(j = 0; j < line; j += 4)
            {
                if(imagedata[idx + j] !== 255)
                {
                    stop = true;
                    break;
                }
            }
            if(!stop)
            {
                idx -= line;
            }
            else
            {
                break;
            }
        }

        properties.descent = i - baseline;
        //TODO might need a tweak. kind of a temp fix!
        properties.descent += 6;
        properties.fontSize = properties.ascent + properties.descent;

        PIXI.Text.fontPropertiesCache[fontStyle] = properties;
    }

    return properties;
};

/**
 * Applies newlines to a string to have it optimally fit into the horizontal
 * bounds set by the Text object's wordWrapWidth property.
 *
 * @method wordWrap
 * @param text {String}
 * @private
 */
PIXI.Text.prototype.wordWrap = function(text)
{
    // Greedy wrapping algorithm that will wrap words as the line grows longer
    // than its horizontal bounds.
    var result = '';
    var lines = text.split('\n');
    for (var i = 0; i < lines.length; i++)
    {
        var spaceLeft = this.style.wordWrapWidth;
        var words = lines[i].split(' ');
        for (var j = 0; j < words.length; j++)
        {
            var wordWidth = this.context.measureText(words[j]).width;
            var wordWidthWithSpace = wordWidth + this.context.measureText(' ').width;
            if(j === 0 || wordWidthWithSpace > spaceLeft)
            {
                // Skip printing the newline if it's the first word of the line that is
                // greater than the word wrap width.
                if(j > 0)
                {
                    result += '\n';
                }
                result += words[j];
                spaceLeft = this.style.wordWrapWidth - wordWidth;
            }
            else
            {
                spaceLeft -= wordWidthWithSpace;
                result += ' ' + words[j];
            }
        }

        if (i < lines.length-1)
        {
            result += '\n';
        }
    }
    return result;
};

/**
* Returns the bounds of the Text as a rectangle. The bounds calculation takes the worldTransform into account.
*
* @method getBounds
* @param matrix {Matrix} the transformation matrix of the Text
* @return {Rectangle} the framing rectangle
*/
PIXI.Text.prototype.getBounds = function(matrix)
{
    if(this.dirty)
    {
        this.updateText();
        this.dirty = false;
    }

    return PIXI.Sprite.prototype.getBounds.call(this, matrix);
};

/**
 * Destroys this text object.
 *
 * @method destroy
 * @param destroyBaseTexture {Boolean} whether to destroy the base texture as well
 */
PIXI.Text.prototype.destroy = function(destroyBaseTexture)
{
    // make sure to reset the the context and canvas.. dont want this hanging around in memory!
    this.context = null;
    this.canvas = null;

    this.texture.destroy(destroyBaseTexture === undefined ? true : destroyBaseTexture);
};

PIXI.Text.fontPropertiesCache = {};
PIXI.Text.fontPropertiesCanvas = document.createElement('canvas');
PIXI.Text.fontPropertiesContext = PIXI.Text.fontPropertiesCanvas.getContext('2d');

/**
 * @author Mat Groves http://matgroves.com/ @Doormat23
 */

/**
 * A BitmapText object will create a line or multiple lines of text using bitmap font. To split a line you can use '\n', '\r' or '\r\n' in your string.
 * You can generate the fnt files using
 * http://www.angelcode.com/products/bmfont/ for windows or
 * http://www.bmglyph.com/ for mac.
 *
 * @class BitmapText
 * @extends DisplayObjectContainer
 * @constructor
 * @param text {String} The copy that you would like the text to display
 * @param style {Object} The style parameters
 * @param style.font {String} The size (optional) and bitmap font id (required) eq 'Arial' or '20px Arial' (must have loaded previously)
 * @param [style.align='left'] {String} Alignment for multiline text ('left', 'center' or 'right'), does not affect single line text
 */
PIXI.BitmapText = function(text, style)
{
    PIXI.DisplayObjectContainer.call(this);

    /**
     * [read-only] The width of the overall text, different from fontSize,
     * which is defined in the style object
     *
     * @property textWidth
     * @type Number
     * @readOnly
     */
    this.textWidth = 0;

    /**
     * [read-only] The height of the overall text, different from fontSize,
     * which is defined in the style object
     *
     * @property textHeight
     * @type Number
     * @readOnly
     */
    this.textHeight = 0;

    /**
     * @property _pool
     * @type Array
     * @private
     */
    this._pool = [];

    this.setText(text);
    this.setStyle(style);
    this.updateText();

    /**
     * The dirty state of this object.
     * @property dirty
     * @type Boolean
     */
    this.dirty = false;
};

// constructor
PIXI.BitmapText.prototype = Object.create(PIXI.DisplayObjectContainer.prototype);
PIXI.BitmapText.prototype.constructor = PIXI.BitmapText;

/**
 * Set the text string to be rendered.
 *
 * @method setText
 * @param text {String} The text that you would like displayed
 */
PIXI.BitmapText.prototype.setText = function(text)
{
    this.text = text || ' ';
    this.dirty = true;
};

/**
 * Set the style of the text
 * style.font {String} The size (optional) and bitmap font id (required) eq 'Arial' or '20px Arial' (must have loaded previously)
 * [style.align='left'] {String} Alignment for multiline text ('left', 'center' or 'right'), does not affect single lines of text
 *
 * @method setStyle
 * @param style {Object} The style parameters, contained as properties of an object
 */
PIXI.BitmapText.prototype.setStyle = function(style)
{
    style = style || {};
    style.align = style.align || 'left';
    this.style = style;

    var font = style.font.split(' ');
    this.fontName = font[font.length - 1];
    this.fontSize = font.length >= 2 ? parseInt(font[font.length - 2], 10) : PIXI.BitmapText.fonts[this.fontName].size;

    this.dirty = true;
    this.tint = style.tint;
};

/**
 * Renders text and updates it when needed
 *
 * @method updateText
 * @private
 */
PIXI.BitmapText.prototype.updateText = function()
{
    var data = PIXI.BitmapText.fonts[this.fontName];
    var pos = new PIXI.Point();
    var prevCharCode = null;
    var chars = [];
    var maxLineWidth = 0;
    var lineWidths = [];
    var line = 0;
    var scale = this.fontSize / data.size;

    for(var i = 0; i < this.text.length; i++)
    {
        var charCode = this.text.charCodeAt(i);

        if(/(?:\r\n|\r|\n)/.test(this.text.charAt(i)))
        {
            lineWidths.push(pos.x);
            maxLineWidth = Math.max(maxLineWidth, pos.x);
            line++;

            pos.x = 0;
            pos.y += data.lineHeight;
            prevCharCode = null;
            continue;
        }

        var charData = data.chars[charCode];

        if(!charData) continue;

        if(prevCharCode && charData.kerning[prevCharCode])
        {
            pos.x += charData.kerning[prevCharCode];
        }

        chars.push({texture:charData.texture, line: line, charCode: charCode, position: new PIXI.Point(pos.x + charData.xOffset, pos.y + charData.yOffset)});
        pos.x += charData.xAdvance;

        prevCharCode = charCode;
    }

    lineWidths.push(pos.x);
    maxLineWidth = Math.max(maxLineWidth, pos.x);

    var lineAlignOffsets = [];

    for(i = 0; i <= line; i++)
    {
        var alignOffset = 0;
        if(this.style.align === 'right')
        {
            alignOffset = maxLineWidth - lineWidths[i];
        }
        else if(this.style.align === 'center')
        {
            alignOffset = (maxLineWidth - lineWidths[i]) / 2;
        }
        lineAlignOffsets.push(alignOffset);
    }

    var lenChildren = this.children.length;
    var lenChars = chars.length;
    var tint = this.tint || 0xFFFFFF;

    for(i = 0; i < lenChars; i++)
    {
        var c = i < lenChildren ? this.children[i] : this._pool.pop(); // get old child if have. if not - take from pool.

        if (c) c.setTexture(chars[i].texture); // check if got one before.
        else c = new PIXI.Sprite(chars[i].texture); // if no create new one.

        c.position.x = (chars[i].position.x + lineAlignOffsets[chars[i].line]) * scale;
        c.position.y = chars[i].position.y * scale;
        c.scale.x = c.scale.y = scale;
        c.tint = tint;
        if (!c.parent) this.addChild(c);
    }

    // remove unnecessary children.
    // and put their into the pool.
    while(this.children.length > lenChars)
    {
        var child = this.getChildAt(this.children.length - 1);
        this._pool.push(child);
        this.removeChild(child);
    }

    this.textWidth = maxLineWidth * scale;
    this.textHeight = (pos.y + data.lineHeight) * scale;
};

/**
 * Updates the transform of this object
 *
 * @method updateTransform
 * @private
 */
PIXI.BitmapText.prototype.updateTransform = function()
{
    if(this.dirty)
    {
        this.updateText();
        this.dirty = false;
    }

    PIXI.DisplayObjectContainer.prototype.updateTransform.call(this);
};

PIXI.BitmapText.fonts = {};

/**
 * @author Mat Groves http://matgroves.com/ @Doormat23
 */

/**
 * Holds all information related to an Interaction event
 *
 * @class InteractionData
 * @constructor
 */
PIXI.InteractionData = function()
{
    /**
     * This point stores the global coords of where the touch/mouse event happened
     *
     * @property global
     * @type Point
     */
    this.global = new PIXI.Point();

    /**
     * The target Sprite that was interacted with
     *
     * @property target
     * @type Sprite
     */
    this.target = null;

    /**
     * When passed to an event handler, this will be the original DOM Event that was captured
     *
     * @property originalEvent
     * @type Event
     */
    this.originalEvent = null;
};

/**
 * This will return the local coordinates of the specified displayObject for this InteractionData
 *
 * @method getLocalPosition
 * @param displayObject {DisplayObject} The DisplayObject that you would like the local coords off
 * @param [point] {Point} A Point object in which to store the value, optional (otherwise will create a new point)
 * param [globalPos] {Point} A Point object containing your custom global coords, optional (otherwise will use the current global coords)
 * @return {Point} A point containing the coordinates of the InteractionData position relative to the DisplayObject
 */
PIXI.InteractionData.prototype.getLocalPosition = function(displayObject, point, globalPos)
{
    var worldTransform = displayObject.worldTransform;
    var global = globalPos ? globalPos : this.global;

    // do a cheeky transform to get the mouse coords;
    var a00 = worldTransform.a, a01 = worldTransform.c, a02 = worldTransform.tx,
        a10 = worldTransform.b, a11 = worldTransform.d, a12 = worldTransform.ty,
        id = 1 / (a00 * a11 + a01 * -a10);

    point = point || new PIXI.Point();

    point.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id;
    point.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;

    // set the mouse coords...
    return point;
};

// constructor
PIXI.InteractionData.prototype.constructor = PIXI.InteractionData;

/**
 * @author Mat Groves http://matgroves.com/ @Doormat23
 */

 /**
 * The interaction manager deals with mouse and touch events. Any DisplayObject can be interactive
 * if its interactive parameter is set to true
 * This manager also supports multitouch.
 *
 * @class InteractionManager
 * @constructor
 * @param stage {Stage} The stage to handle interactions
 */
PIXI.InteractionManager = function(stage)
{
    /**
     * A reference to the stage
     *
     * @property stage
     * @type Stage
     */
    this.stage = stage;

    /**
     * The mouse data
     *
     * @property mouse
     * @type InteractionData
     */
    this.mouse = new PIXI.InteractionData();

    /**
     * An object that stores current touches (InteractionData) by id reference
     *
     * @property touches
     * @type Object
     */
    this.touches = {};

    /**
     * @property tempPoint
     * @type Point
     * @private
     */
    this.tempPoint = new PIXI.Point();

    /**
     * @property mouseoverEnabled
     * @type Boolean
     * @default
     */
    this.mouseoverEnabled = true;

    /**
     * Tiny little interactiveData pool !
     *
     * @property pool
     * @type Array
     */
    this.pool = [];

    /**
     * An array containing all the iterative items from the our interactive tree
     * @property interactiveItems
     * @type Array
     * @private
     */
    this.interactiveItems = [];

    /**
     * Our canvas
     * @property interactionDOMElement
     * @type HTMLCanvasElement
     * @private
     */
    this.interactionDOMElement = null;

    //this will make it so that you don't have to call bind all the time

    /**
     * @property onMouseMove
     * @type Function
     */
    this.onMouseMove = this.onMouseMove.bind( this );

    /**
     * @property onMouseDown
     * @type Function
     */
    this.onMouseDown = this.onMouseDown.bind(this);

    /**
     * @property onMouseOut
     * @type Function
     */
    this.onMouseOut = this.onMouseOut.bind(this);

    /**
     * @property onMouseUp
     * @type Function
     */
    this.onMouseUp = this.onMouseUp.bind(this);

    /**
     * @property onTouchStart
     * @type Function
     */
    this.onTouchStart = this.onTouchStart.bind(this);

    /**
     * @property onTouchEnd
     * @type Function
     */
    this.onTouchEnd = this.onTouchEnd.bind(this);

    /**
     * @property onTouchCancel
     * @type Function
     */
    this.onTouchCancel = this.onTouchCancel.bind(this);

    /**
     * @property onTouchMove
     * @type Function
     */
    this.onTouchMove = this.onTouchMove.bind(this);

    /**
     * @property last
     * @type Number
     */
    this.last = 0;

    /**
     * The css style of the cursor that is being used
     * @property currentCursorStyle
     * @type String
     */
    this.currentCursorStyle = 'inherit';

    /**
     * Is set to true when the mouse is moved out of the canvas
     * @property mouseOut
     * @type Boolean
     */
    this.mouseOut = false;

    /**
     * @property resolution
     * @type Number
     */
    this.resolution = 1;

    // used for hit testing
    this._tempPoint = new PIXI.Point();
};

// constructor
PIXI.InteractionManager.prototype.constructor = PIXI.InteractionManager;

/**
 * Collects an interactive sprite recursively to have their interactions managed
 *
 * @method collectInteractiveSprite
 * @param displayObject {DisplayObject} the displayObject to collect
 * @param iParent {DisplayObject} the display object's parent
 * @private
 */
PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject, iParent)
{
    var children = displayObject.children;
    var length = children.length;

    // make an interaction tree... {item.__interactiveParent}
    for (var i = length - 1; i >= 0; i--)
    {
        var child = children[i];

        // push all interactive bits
        if (child._interactive)
        {
            iParent.interactiveChildren = true;
            //child.__iParent = iParent;
            this.interactiveItems.push(child);

            if (child.children.length > 0) {
                this.collectInteractiveSprite(child, child);
            }
        }
        else
        {
            child.__iParent = null;
            if (child.children.length > 0)
            {
                this.collectInteractiveSprite(child, iParent);
            }
        }

    }
};

/**
 * Sets the target for event delegation
 *
 * @method setTarget
 * @param target {WebGLRenderer|CanvasRenderer} the renderer to bind events to
 * @private
 */
PIXI.InteractionManager.prototype.setTarget = function(target)
{
    this.target = target;
    this.resolution = target.resolution;

    // Check if the dom element has been set. If it has don't do anything.
    if (this.interactionDOMElement !== null) return;

    this.setTargetDomElement (target.view);
};

/**
 * Sets the DOM element which will receive mouse/touch events. This is useful for when you have other DOM
 * elements on top of the renderers Canvas element. With this you'll be able to delegate another DOM element
 * to receive those events
 *
 * @method setTargetDomElement
 * @param domElement {DOMElement} the DOM element which will receive mouse and touch events
 * @private
 */
PIXI.InteractionManager.prototype.setTargetDomElement = function(domElement)
{
    this.removeEvents();

    if (window.navigator.msPointerEnabled)
    {
        // time to remove some of that zoom in ja..
        domElement.style['-ms-content-zooming'] = 'none';
        domElement.style['-ms-touch-action'] = 'none';
    }

    this.interactionDOMElement = domElement;

    domElement.addEventListener('mousemove',  this.onMouseMove, true);
    domElement.addEventListener('mousedown',  this.onMouseDown, true);
    domElement.addEventListener('mouseout',   this.onMouseOut, true);

    // aint no multi touch just yet!
    domElement.addEventListener('touchstart', this.onTouchStart, true);
    domElement.addEventListener('touchend', this.onTouchEnd, true);
    domElement.addEventListener('touchleave', this.onTouchCancel, true);
    domElement.addEventListener('touchcancel', this.onTouchCancel, true);
    domElement.addEventListener('touchmove', this.onTouchMove, true);

    window.addEventListener('mouseup',  this.onMouseUp, true);
};

/**
 * @method removeEvents
 * @private
 */
PIXI.InteractionManager.prototype.removeEvents = function()
{
    if (!this.interactionDOMElement) return;

    this.interactionDOMElement.style['-ms-content-zooming'] = '';
    this.interactionDOMElement.style['-ms-touch-action'] = '';

    this.interactionDOMElement.removeEventListener('mousemove',  this.onMouseMove, true);
    this.interactionDOMElement.removeEventListener('mousedown',  this.onMouseDown, true);
    this.interactionDOMElement.removeEventListener('mouseout',   this.onMouseOut, true);

    // aint no multi touch just yet!
    this.interactionDOMElement.removeEventListener('touchstart', this.onTouchStart, true);
    this.interactionDOMElement.removeEventListener('touchend', this.onTouchEnd, true);
    this.interactionDOMElement.removeEventListener('touchleave', this.onTouchCancel, true);
    this.interactionDOMElement.removeEventListener('touchcancel', this.onTouchCancel, true);
    this.interactionDOMElement.removeEventListener('touchmove', this.onTouchMove, true);

    this.interactionDOMElement = null;

    window.removeEventListener('mouseup',  this.onMouseUp, true);
};

/**
 * updates the state of interactive objects
 *
 * @method update
 * @private
 */
PIXI.InteractionManager.prototype.update = function()
{
    if (!this.target) return;

    // frequency of 30fps??
    var now = Date.now();
    var diff = now - this.last;
    diff = (diff * PIXI.INTERACTION_FREQUENCY ) / 1000;
    if (diff < 1) return;
    this.last = now;

    var i = 0;

    // ok.. so mouse events??
    // yes for now 
    // OPTIMISE - how often to check??
    if (this.dirty)
    {
        this.rebuildInteractiveGraph();
    }

    // loop through interactive objects!
    var length = this.interactiveItems.length;
    var cursor = 'inherit';
    var over = false;

    for (i = 0; i < length; i++)
    {
        var item = this.interactiveItems[i];

        // OPTIMISATION - only calculate every time if the mousemove function exists..
        // OK so.. does the object have any other interactive functions?
        // hit-test the clip!
       // if (item.mouseover || item.mouseout || item.buttonMode)
       // {
        // ok so there are some functions so lets hit test it..
        item.__hit = this.hitTest(item, this.mouse);
        this.mouse.target = item;
        // ok so deal with interactions..
        // looks like there was a hit!
        if (item.__hit && !over)
        {
            if (item.buttonMode) cursor = item.defaultCursor;

            if (!item.interactiveChildren)
            {
                over = true;
            }

            if (!item.__isOver)
            {
                if (item.mouseover)
                {
                    item.mouseover (this.mouse);
                }
                item.__isOver = true;
            }
        }
        else
        {
            if (item.__isOver)
            {
                // roll out!
                if (item.mouseout)
                {
                    item.mouseout (this.mouse);
                }
                item.__isOver = false;
            }
        }
    }

    if (this.currentCursorStyle !== cursor)
    {
        this.currentCursorStyle = cursor;
        this.interactionDOMElement.style.cursor = cursor;
    }
};

/**
 * @method rebuildInteractiveGraph
 * @private
 */
PIXI.InteractionManager.prototype.rebuildInteractiveGraph = function()
{
    this.dirty = false;

    var len = this.interactiveItems.length;

    for (var i = 0; i < len; i++) {
        this.interactiveItems[i].interactiveChildren = false;
    }

    this.interactiveItems = [];

    if (this.stage.interactive)
    {
        this.interactiveItems.push(this.stage);
    }

    // Go through and collect all the objects that are interactive..
    this.collectInteractiveSprite(this.stage, this.stage);
};

/**
 * Is called when the mouse moves across the renderer element
 *
 * @method onMouseMove
 * @param event {Event} The DOM event of the mouse moving
 * @private
 */
PIXI.InteractionManager.prototype.onMouseMove = function(event)
{
    if (this.dirty)
    {
        this.rebuildInteractiveGraph();
    }

    this.mouse.originalEvent = event;

    // TODO optimize by not check EVERY TIME! maybe half as often? //
    var rect = this.interactionDOMElement.getBoundingClientRect();

    this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width) / this.resolution;
    this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height) / this.resolution;

    var length = this.interactiveItems.length;

    for (var i = 0; i < length; i++)
    {
        var item = this.interactiveItems[i];

        // Call the function!
        if (item.mousemove)
        {
            item.mousemove(this.mouse);
        }
    }
};

/**
 * Is called when the mouse button is pressed down on the renderer element
 *
 * @method onMouseDown
 * @param event {Event} The DOM event of a mouse button being pressed down
 * @private
 */
PIXI.InteractionManager.prototype.onMouseDown = function(event)
{
    if (this.dirty)
    {
        this.rebuildInteractiveGraph();
    }

    this.mouse.originalEvent = event;

    if (PIXI.AUTO_PREVENT_DEFAULT)
    {
        this.mouse.originalEvent.preventDefault();
    }

    // loop through interaction tree...
    // hit test each item! ->
    // get interactive items under point??
    //stage.__i
    var length = this.interactiveItems.length;

    var e = this.mouse.originalEvent;
    var isRightButton = e.button === 2 || e.which === 3;
    var downFunction = isRightButton ? 'rightdown' : 'mousedown';
    var clickFunction = isRightButton ? 'rightclick' : 'click';
    var buttonIsDown = isRightButton ? '__rightIsDown' : '__mouseIsDown';
    var isDown = isRightButton ? '__isRightDown' : '__isDown';

    // while
    // hit test
    for (var i = 0; i < length; i++)
    {
        var item = this.interactiveItems[i];

        if (item[downFunction] || item[clickFunction])
        {
            item[buttonIsDown] = true;
            item.__hit = this.hitTest(item, this.mouse);

            if (item.__hit)
            {
                //call the function!
                if (item[downFunction])
                {
                    item[downFunction](this.mouse);
                }
                item[isDown] = true;

                // just the one!
                if (!item.interactiveChildren) break;
            }
        }
    }
};

/**
 * Is called when the mouse is moved out of the renderer element
 *
 * @method onMouseOut
 * @param event {Event} The DOM event of a mouse being moved out
 * @private
 */
PIXI.InteractionManager.prototype.onMouseOut = function(event)
{
    if (this.dirty)
    {
        this.rebuildInteractiveGraph();
    }

    this.mouse.originalEvent = event;

    var length = this.interactiveItems.length;

    this.interactionDOMElement.style.cursor = 'inherit';

    for (var i = 0; i < length; i++)
    {
        var item = this.interactiveItems[