Vai al contenuto

Rilevato Ad-Blocker. Per favore disabilita il tuo adblocker quando navighi su makerando.com - Non c'è nessun annuncio invasivo.

  • 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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

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

ghghg la penso pure io così

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Fatemi sapere come è la demo son dal telefono adesso e non posso testare con mano.

Anche perché ci mette una vita ad aprire la pagina del preorder, come minimo fra un po il sito collassa per le visite in contemporanea XD

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

 

 

//=============================================================================
// 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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

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()
		}
	}
};
 

 


 

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

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