📄 ti.java
字号:
/*计时器*/
import java.util.TimerTask;
public class TI extends TimerTask
{
MGC m;
int type;//延迟的类型。
int s;//攻击动作的序号
int n;//当前被攻击的精灵序号
int j;
public TI(MGC g,int i)
{
this.m=g;
this.type=i;
this.s=1;
this.n=0;
}
public void run()
{
if(MGC.running)
{
switch(type)
{
case -2://天气
m.isWeather=true;
if(n%1000==0)
{
s=m.rR(4);
m.snow=new int[15][10];
for(int i=0;i<m.snow.length;i++)
for(int j=0;j<m.snow[0].length;j++)
m.snow[i][j]=30000;
}
if(n==60000)
n=0;
n++;
m.repaint();
break;
case 13://切换场景
s++;
if(s==12)
m.change=false;
m.repaint();
break;
case 10://回血
switch(s)
{
case 1:
m.spic0=m.spic[5];
m.sx=16;
m.sy=144;
m.repaint();
break;
case 2:
m.sy=128;
m.repaint();
break;
case 3:
m.sy=144;
m.repaint();
break;
case 4:
m.sy=128;
m.l+=(m.le*m.le+10*m.le+60)*15*m.s[9]/100;
if(m.l>m.lm)
m.l=m.lm;
m.spi[0].l=m.l;
m.repaint();
break;
case 5:
m.spic0=null;
m.an=4;
m.repaint();
m.cancelATW();
break;
default:
break;
}
s++;
break;
case 11://回气
switch(s)
{
case 1:
m.spic0=m.spic[4];
m.sx=16;
m.sy=144;
m.repaint();
break;
case 2:
m.sy=128;
m.repaint();
break;
case 3:
m.sy=144;
m.repaint();
break;
case 4:
m.sy=128;
m.m+=m.mm*20*m.s[10]/100;
if(m.m>m.mm)
m.m=m.mm;
m.repaint();
break;
case 5:
m.spic0=null;
m.an=4;
m.repaint();
m.cancelATW();
break;
default:
break;
}
s++;
break;
case 8://战斗中攻击顺序的切换
if(m.atm&&!m.am&&m.atw==null)//在战斗场景中,没有战斗菜单并且没有攻击行为的情况下
{
int i;
/*先判断战斗的结果*/
for(i=4;i<8;i++)
{
if(m.spi[i]!=null)
break;
}
if(i==8)//战斗胜利
{
if(!m.win)
{
if(!m.pm)
{
m.win=true;
m.showW=true;
m.update=true;
m.atm=false;
if(GM.playOn)
{
GM.sc.stopSound(m.attack);
m.map=GM.sc.createPlayer("/1.mid",1000);
GM.sc.playSound(m.map);
}
for(int k=1;k<4;k++)
m.spi[k]=null;
if(m.tran)
{
m.tran=!m.tran;
m.lm=m.le*m.le+10*m.le+60;
m.l=m.l-m.l*10*m.s[8]/(100+10*m.s[8])>m.lm?m.lm:(m.l-m.l*10*m.s[8]/(100+10*m.s[8]));
m.d=5*m.le+2;
m.D=m.d+m.addPd+m.addPdP*m.d/100;
}
m.repaint();
}
}
}
else//主角阵亡
{
if(m.l==0)
{
if(!m.pm)
{
m.die=true;
m.atm=false;
if(GM.playOn)
{
GM.sc.stopSound(m.attack);
m.map=GM.sc.createPlayer("/1.mid",1000);
GM.sc.playSound(m.map);
}
for(int k=1;k<8;k++)
m.spi[k]=null;
if(m.tran)
{
m.tran=!m.tran;
m.lm=m.le*m.le+10*m.le+60;
m.l=m.l-m.l*10*m.s[8]/(100+10*m.s[8])>m.lm?m.lm:(m.l-m.l*10*m.s[8]/(100+10*m.s[8]));
m.d=5*m.le+2;
m.D=m.d+m.d*m.addPdP/100+m.addPd;
}
m.repaint();
}
}
else
/*下面是对攻击顺序的切换*/
if(m.an<3&&m.an>0)
{
if(m.spi[m.an]!=null)
m.sat(m.an+20);
else
m.an=m.an==2?1:0;
}
else
if(m.an==0)
{
m.am=true;
/*判断隐身的回合数*/
if(m.t)
{
m.count++;
if(m.count==1+m.s[6])
m.t=!m.t;
}
else
if(m.tran)
{
m.count++;
if(m.count>m.s[8])
{
m.tran=!m.tran;
m.lm=m.le*m.le+10*m.le+60;
m.l=m.l*80/100>m.lm?m.lm:m.l*80/100;
m.spi[0].l=m.l;
m.spi[0].d=5*m.le+2;
m.d=m.spi[0].d;
}
}
m.repaint();
}
else
{
while(m.an<8)
{
if(m.spi[m.an]!=null)
{
m.sat(12);
break;
}
else
m.an++;
}
if(m.an>7)
m.an=2;
}
}
}
break;
case 9://敌人攻击
if(s==1)
{
for(int i=3;i>=0;i--)
{
if(m.spi[i]!=null)
{
if((i==0&&!m.t)||i!=0)
{
m.spi[j].x=m.spi[i].x+16;
m.spi[j].y=m.spi[i].y/32*32;
m.spi[j].p++;
if(i!=0&&m.spi[j].lv==15)
m.spi[i].l-=2*m.spi[j].d;
else
m.spi[i].l-=m.spi[j].d;
if(m.spi[i].l<0)
m.spi[i].l=0;
m.l=m.spi[0].l;
if(i==3&&m.spi[j].lv!=15)
m.spi[j].l-=m.spi[j].d*10*m.s[5]/100;
if(m.spi[j].l<0)
m.spi[j].l=0;
m.repaint();
n=i;
break;
}
else
s=4;
}
}
}
else
if(s==2)
{
m.spi[n].x-=5;
if(n==0)
m.spi[0].p=141;
m.repaint();
}
else
if(s==3)
{
m.spi[n].x+=5;
m.spi[j].x=128;
m.spi[j].y=(j-4)*32+((m.spi[j].lv-1)/3==1?15:0)+64;
m.spi[j].p--;
if(n==0)
{
if(!m.tran)
m.spi[0].p=130;
else
m.spi[0].p=150;
}
if(m.spi[n].l==0)
m.spi[n]=null;
if(m.spi[j].l==0)
{
if(m.spi[0].l>0)
{
m.sn+=100*m.spi[j].lv*m.spi[j].lv/m.le;
m.nn+=4*m.spi[j].lv*m.spi[j].lv;
}
m.spi[j]=null;
}
m.repaint();
}
else
{
m.an++;
if(m.an>7)
m.an=2;
m.repaint();
m.cancelATW();
}
s++;
break;
case 7:
m.move();
break;
case 4://火球攻击
switch(s)
{
case 1:
for(int i=0;i<4;i++)
{
if(m.spi[i+4]!=null)
{
m.sx=m.spi[i+4].x;
m.sy=m.spi[i+4].y-16;
m.spic0=m.spic[3];
m.repaint();
n=i;
break;
}
}
break;
case 2:
m.sy+=8;
m.repaint();
break;
case 3:
m.sy+=8;
m.spic0=m.spic[0];
m.repaint();
break;
case 4:
m.sy-=2;
m.repaint();
break;
case 5:
m.sy+=2;
if(m.spi[n+4].lv!=15)
m.spi[n+4].l-=(5*m.s[0]*m.s[0]+15)*(100+m.stealB)/100;
if(m.spi[n+4].l<0)
m.spi[n+4].l=0;
m.repaint();
break;
case 6:
m.spic0=null;
if(m.spi[n+4].l==0)
{
m.sn+=100*m.spi[n+4].lv*m.spi[n+4].lv/m.le;
m.nn+=4*m.spi[n+4].lv*m.spi[n+4].lv;
m.spi[n+4]=null;
}
m.repaint();
break;
case 7:
m.an=4;
m.repaint();
m.cancelATW();
break;
default:
break;
}
s++;
break;
case 5://落星攻击
s++;
m.repaint();
break;
case 6://风残攻击
s++;
m.repaint();
break;
default://普通攻击
if(s==1)
{
for(int i=0;i<4;i++)
{
if(m.spi[i+4]!=null)
{
m.spi[type].x=m.spi[i+4].x-16;
m.spi[type].y=m.spi[i+4].y;
m.spi[type].p++;
if(type==0)
{
if(m.spi[i+4].l<m.D)
m.l+=m.spi[i+4].l*m.stealB/100;
else
m.l+=m.D*m.stealB/100;
if(m.l>m.lm)
m.l=m.lm;
m.spi[0].l=m.l;
}
m.spi[i+4].l-=m.spi[type].d;
if(m.spi[i+4].l<0)
m.spi[i+4].l=0;
m.repaint();
n=i;
break;
}
}
}
else
if(s==2)
{
m.spi[n+4].x+=5;
m.repaint();
}
else
if(s==3)
{
m.spi[n+4].x-=5;
m.spi[type].x=16;
m.spi[type].y=96-32*type+(type==1?16:0)+64;
m.spi[type].p--;
if(m.spi[n+4].l==0)
{
m.sn+=100*m.spi[n+4].lv*m.spi[n+4].lv/m.le;
m.nn+=4*m.spi[n+4].lv*m.spi[n+4].lv;
m.spi[n+4]=null;
}
m.repaint();
}
else
{
m.an--;
if(m.an<0)
m.an=4;
m.repaint();
m.cancelATW();
}
s++;
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -