//MindWand complex - Onfall scenario - Foeman module: Onfall ver constraints - Marker Size opt [Obs] //`"Onfall ver"s denote constraints; but "Onfall rev"s denote coding updates/ corrections //`rev arySiz & util arys' #elms //`sep lblWd,Ht map side offset vars from lbl ltr dim vars import java.awt.*; //incorpg Graphics class import java.awt.event.*; //incorpg KeyListener/Adapter,ActionListener/Event classes public class fmnX0Ap extends Panel{ static final int N=-1,O=0,I=1,X=10,C=100,M=1000,Asc0=+'0'; //note shorthand for (int)'0' int x1=I,x2,x3,x4,x5,x6,x7,y1=I,y2,y3,y4,y5,y6,y7; //var lvl 1 routines' constants static final int Sho4th=I,UseOpt=2,EncRev=3,OneRnd=4,EndGam=5; //var lvl 2 routines' constants static final int ChgBd=I,MakFig=2,ChkIni=3,ChkRea=4,SidMov=5,ProAct=6, PikAct=7,ExeAct=8,EndRnd=9; //var lvl 3 routines' constants static final int MacMov=I,UsrMov=2,MacAct=3,UsrAct=4,UseItm=5,BadUse=6, DoItm=7,DoWpn=8,DoSpl=9; //var lvl 4 routines' constants static final int PikAlt=1,RdyItm=2,BakOff=3; //`?,TrySv=4 //var lvl 5 routines' constants static final int PikFig=I,ChkPfl=2,TryMov=3; //var lvl 6 routines' constants static final int AtkVs=I,HitVs=2; //var lvl 7 routines' constants static final int Rol=I,Rpt=2; static final Color StdHue[]={ Color.black,Color.magenta,Color.red,Color.orange,Color.yellow, Color.green,Color.cyan,Color.blue,Color.lightGray,Color.white }; //StdHue[] int hues[]={O,O,3,9,O,O,O,6,7,I,2}; //hue() fnc's indirect ref sto static final int BdBkg=I,BdBdr=2,BrfFgd=3,BrfBkg=4,LblFgd=5,LblBkg=6, MapBkg=7,MapFgd=8,HexCsr=9,FigInd=X; /*`unused - for custom colors static final Color newHue[]={ new Color(200,200,C).brighter() //bright khaki }; //newHue[] //*/ int newSid,sidCnt; int newFig,optSrc,optTgt,optItm,movSrc,movTgt,atkSrc,atkTgt,atkItm,atkAmo,itmPri; //vals= ary elm#s int tgtPos,tgtArc,srcPos,srcArc,optTyp,optDic,movTyp,movFac,atkTyp,atkRng; static final int All=N,Cre=O,Adv=I,Foe=2,Pty=3,Any=4,Sid=5, Set=X,Out=20; //nxtFig(), `rdmFig() args static final int Ega=N; //isBy() args (incl others abv) //`? static final int By=O; //rdmFig() arg Font ltr,lbl; //& FontMetrics class instance ltrSiz obj int ltrPt,lblPt,typHt; int vuWd,vuHt,vuLnY,bdWd,bdHt,ioWd,ioHt,zonWd,lblWd,lblHt,bdrWd=I; int pflLft,pflTop,pflHt,pflWd; int mapWd,mapHt,mapTop,mapBtm,mapLft,mapRht,mapTopMar,mapLftMar; //hexAsp= C* [tan(30 deg) or 1/sqr(3)= .57]: hexside-to-height ratio at 1:1 display fmt int hlfHexSid,hlfHexHt,hexSid,hexWd,hexHt,hexAsp=57; //hlfHexSid max= 20 in dimVu() static final int HexTicX=19,HexTicY=22; int minLftMar,minTopMar; //`?n*hlfHexSid int topMapCol=I,topMapRow=I,mapColWd,mapRowHt; int areColWd,areRowHt,eqRows; int losDst,losStp,losRis,losRun,losDrp,losTri,losRol,losCol,losRow; int losCoo,losAlt,altStp,SsStp; //side- splitting LOS typ spc chk dst boolean isVj; //vertex- joining LOS typ int radCol,radRow,radCnt,radDst,radLft,radRgt,radStp,radCoo; int atPth,toPth,atHub,toHub,pthFac,pthStp,pthDir,prjDst,prjMp; int dieFac=-6; //set to dfa die type (6 faces: 0..5) //int clikX=50,clikY=50; //`opt mouse cap boolean isDon,isNo1; //`?isMac //utility vars char a$,A$; boolean isa1,isa2,isb2,isa3,isb3,isc3,isa4,isb4,isc4,isa5,isb5,isa6,isb6,isc6,isa7,isb7, isA3,isB3,isC3,isA4,isB4,isC4,isD4,isA5,isB5,isA6,isB6,isA7,isB7,isA8,isB8,isA9,isB9; int a1,b1,c1,d1,e1,f1,g1; int a2,b2,c2,d2,e2,f2,g2,h2,i2; int a3,b3,c3,d3,e3,f3,g3,h3,i3,j3,k3,l3,m3; int a4,b4,c4,d4,e4,f4,g4,h4; int a5,b5,c5,d5,e5,f5,g5,h5,i5,j5,k5,l5,m5; int a6,b6,c6,d6,e6,f6,g6,h6,i6,j6,k6,l6,m6; int a7,b7,c7,d7,e7,f7,g7,h7,i7,j7; int A3,B3,C3,D3,E3,F3,G3,H3,I3,J3,K3,L3,M3,N3,O3,P3,Q3,R3,S3,T3,U3; int A4,B4,C4,D4,E4,F4,G4,H4,I4,J4,K4,L4,M4; int A5,B5,C5,D5,E5,F5,G5,H5,I5,J5,K5,L5,M5,N5,O5,P5,Q5; int A6,B6,C6,D6,E6,F6,G6,H6,I6,J6,K6,L6; int A7,B7,C7,D7,E7,F7,G7,H7,I7; int A8,B8,C8,D8,E8,F8,G8,H8,I8,J8,K8,L8,M8,N8,O8,P8; int A9,B9,C9,D9,E9,F9,G9,H9,I9,J9; int A0,B0; StringBuffer a1$=new StringBuffer(); StringBuffer a2$=new StringBuffer(); StringBuffer a3$=new StringBuffer(); StringBuffer b3$=new StringBuffer(); StringBuffer a4$=new StringBuffer(); StringBuffer b4$=new StringBuffer(); StringBuffer c4$=new StringBuffer(); StringBuffer a5$=new StringBuffer(); StringBuffer b5$=new StringBuffer(); StringBuffer a6$=new StringBuffer(); StringBuffer b6$=new StringBuffer(); StringBuffer c6$=new StringBuffer(); StringBuffer a7$=new StringBuffer(); StringBuffer b7$=new StringBuffer(); StringBuffer c7$=new StringBuffer(); StringBuffer A3$=new StringBuffer(); StringBuffer B3$=new StringBuffer(); // StringBuffer C3$=new StringBuffer(); //`test ln movPth() StringBuffer A4$=new StringBuffer(); StringBuffer B4$=new StringBuffer(); StringBuffer A5$=new StringBuffer(); StringBuffer B5$=new StringBuffer(); StringBuffer A6$=new StringBuffer(); StringBuffer A7$=new StringBuffer(); StringBuffer B7$=new StringBuffer(); StringBuffer C7$=new StringBuffer(); StringBuffer D7$=new StringBuffer(); StringBuffer E7$=new StringBuffer(); StringBuffer A8$=new StringBuffer(); StringBuffer B8$=new StringBuffer(); StringBuffer C8$=new StringBuffer(); StringBuffer A9$=new StringBuffer(); StringBuffer B9$=new StringBuffer(); StringBuffer A0$=new StringBuffer(); StringBuffer inp$=new StringBuffer(); //KeyListener user inp $ StringBuffer die$=new StringBuffer(); //dic() dice result listg $ StringBuffer are$=new StringBuffer(); //area $ `?set as 2 chr lg StringBuffer wdHt$=new StringBuffer(); //aggreg ares' rect dims StringBuffer notHex$=new StringBuffer(); //aggreg ares' off-map coos StringBuffer areNot$=new StringBuffer(); //are's off-map coos StringBuffer areDta$=new StringBuffer(); //aggreg ares' dta: fmt= ",Aa1..,Ab4.. static final int IniSid=I; StringBuffer enFro$=new StringBuffer(); //opp figs' fro hexes to avoid StringBuffer pthMov$=new StringBuffer(); //mac figs' mov dirs rcd StringBuffer whyEnd$=new StringBuffer(); //endGam() reason msg //small util int arys // int z1Siz=C,z1[]=new int[z1Siz+I]; //rout lvl1 util ary `test ln int z2Siz=X,z2[]=new int[z2Siz+I]; //rout lvl2 util ary int z3Siz=X,z3[]=new int[z3Siz+I]; //rout lvl3 util ary int z4Siz=X,z4[]=new int[z4Siz+I]; //rout lvl4 util ary int z5Siz=X,z5[]=new int[z5Siz+I]; //rout lvl5 util ary `z5Siz lmt chkPfl() itms #lns int z6Siz=X,z6[]=new int[z6Siz+I]; //rout lvl6 util ary int Z3Siz=X,Z3[]=new int[Z3Siz+I]; //sbr lvl3 util ary static final int BigFig=4; int Z4Siz=BigFig+X,Z4[]=new int[Z4Siz+I]; //sbr lvl4 util ary static final int Src=I,Tgt=BigFig+I,Stk=(BigFig<3;hth:-2T012323-2>3C012334-1>3,reg,4,3"); //`?FigAtk fld as pc:npc:bst eq(a1++,"Elf,100,797+(8);,arms,reg,4,3"); //`?bows+: sep ety eq(a1++,"Dwarf,100,977+(8):,arms,reg,3,3"); eq(a1++,"Halfling,75,688+(8):,arms,reg,3,2"); eq(a1++,"Orc,100,776+(:):,arms:-2A011223irrg;hth:-2A012323-2>3,reg,4,3"); eq(a1++,"Goblin,50,666+(:):,arms,reg,3,1"); /*` eq(a1++,"Wolf,50,5;4+221<,4/6-3*2T012012-3>2bound L012123-2>2snap C000123-2>0rip,reg,3,1"); eq(a1++,"Giantess,300,A86+7328,4,reg,5,5"); eq(a1++,"Dragonspawn,400,D=8+(4)6,4,reg,5,6"); eq(a1++,"Wall,150,0,0,nil,4,8"); eq(a1++,"Shadow,10,0,0,nil,4,9"); eq(a1++,"Fire,20,0,0,nil,4,10"); generic figures `?using frag stats `test lns eq(a1++,"dog,50,3,4,nil,3,0"); eq(a1++,"man,100,3,4,reg,4,1"); eq(a1++,"steed,200,3,4,reg,4,2"); eq(a1++,"giant,300,3,4,reg,5,3"); eq(a1++,"dragon,400,3,4,reg,5,4"); eq(a1++,"sidewall,50,3,4,nil,4,5"); eq(a1++,"wall,100,3,4,nil,4,6"); //*/ itmPoo=a1; /*` tlnItm=a1; eq(a1++,"Tracker,known,tln,mem,lrn,1ea,0,0,0,0"); splItm=a1; eq(a1++,"Aid,known,spl,mem,lrn,1ea,0,0,0,0"); mscItm=a1; eq(a1++,"Heirloom,magic,artifact,1hand,trove,uni,0,0,0,0"); eqpItm=a1; eq(a1++,"Smeared Poison- Numbing,norm,psn,1hand,trove,mul,0,0,0,0"); //*/ wpnItm=a1; unsCat=a1; eq(a1++,"Unarmed,cdn,wpn,1hand,self,1ea,16,0,adj+hth,-3T012012-3>2"); eq(a1++,"Rock,norm,wpn,1hand,prov,mul,9,6,adj+hrl,-3T010123-2>1"); eq(a1++,"Club,norm,wpn,1hand,prov,mul,6,6,adj+hrl,-2T012234-1>2"); //` eq(a1++,"Arms,crude,wpn,1hand,local,acu,0,5,adj+hrl,per"); hilCat=a1; //` eq(a1++,"Main-gauche,std,wpn,1hand,local,mul,4,7,adj+ofh+hth,-2T012323-2>3"); eq(a1++,"Dagger,std,wpn,1hand,local,mul,4,4,adj+hrl+hth,-2T012323-2>3"); eq(a1++,"Rapier,std,wpn,1hand,local,mul,7,5,adj+jab,-3T012365+2=4"); eq(a1++,"Cutlass,std,wpn,1hand,local,mul,8,6,adj,-2T012145-2=3"); eq(a1++,"Shortsword,std,wpn,1hand,local,mul,10,7,adj+hth,-3T012346+1=5"); eq(a1++,"Broadsword,std,wpn,1hand,local,mul,12,8,adj,-2T002345-1=1"); eq(a1++,"Langsword,std,wpn,1hand,local,mul,13,8,adj+jb2,-2T012445+1=3"); eq(a1++,"Greatsword,std,wpn,2hand,local,mul,15,9,adj+jab,-1T001235-1<5"); hafCat=a1; //` eq(a1++,"Net,std,wpn,1hand,local,mul,6,2,adj+ofh+jab+hrl,-3T0154327->1"); eq(a1++,"Whip,std,wpn,1hand,local,mul,6,2,adj+jab,-3T0154327->1"); eq(a1++,"Staff,std,wpn,2hand,local,mul,8,4,adj+jab,-3T312345+3=0"); eq(a1++,"Hammer,std,wpn,1hand,local,mul,10,6,adj+hrl,-2T012335-1=4"); eq(a1++,"Mace,std,wpn,1hand,local,mul,11,7,adj+hrl,-2T011345-1=2"); eq(a1++,"Axe,std,wpn,1hand,local,mul,13,8,adj+hrl,-2T122345+1<2"); eq(a1++,"Flail,std,wpn,1hand,local,mul,14,8,adj+jb2,-2T014345+2=2"); eq(a1++,"Battleaxe,std,wpn,2hand,local,mul,15,9,adj+jab,-1T012325-2=4"); //` eq(a1++,"Cleaver,orcish,wpn,1hand,trove,mul,10,6,adj+hrl,-2T012334-1>3C014345+2=2"); polCat=a1; //` eq(a1++,"Poker,std,wpn,1hand,local,mul,5,2,adj+ofh+msl:Picket,-2T001234-1>0"); eq(a1++,"Picket,std,wpn,1hand,local,mul,5,1,adj+hrl,-2T001234-1>0"); eq(a1++,"Javelin,std,wpn,1hand,local,mul,7,3,adj+jb2+hrl,-2T3210453-<4"); eq(a1++,"Spear,std,wpn,1hand,local,mul,9,5,adj+jb2+hrl,-2T012245-1=3"); eq(a1++,"Bipole,std,wpn,1hand,local,mul,10,6,adj+jb2+hrl,-3T0126549->2"); eq(a1++,"Lance,std,wpn,2hand,local,mul,12,7,adj+jab,-3T123445+1<4"); eq(a1++,"Halberd,std,wpn,2hand,local,mul,13,8,adj+jab,-2T013345+1=2"); eq(a1++,"Pikeaxe,std,wpn,2hand,local,mul,15,9,adj+jab,-1T012334-1>3"); mslCat=a1; //` eq(a1++,"Blowgun,std,wpn,1hand,local,mul,7,2,msl:Dart+ofh,-3T022345+1=1"); //`?crude/ pecu eq(a1++,"Sling,std,wpn,1hand,local,mul,7,1,msl:Stone,-3T022345+1=1"); eq(a1++,"Smallbow,std,wpn,2hand,local,mul,9,1,msl:Arrow,-2T012344-1=5"); //Aro pmt std or crude eq(a1++,"Horsebow,std,wpn,2hand,local,mul,11,1,msl:Arrow,-2T0125438->2"); // " eq(a1++,"Longbow,std,wpn,2hand,local,mul,12,2,msl:Arrow,-2T001345-1<3"); // " eq(a1++,"Lt Crossbow,std,wpn,2hand,local,mul,14,3,msl:Bolt+rld10,-2T123345+1<3"); eq(a1++,"Hv Crossbow,std,wpn,2hand,local,mul,15,4,msl:Bolt+rld15,-1T012343-2=5"); eq(a1++,"Matchlock,std,wpn,2hand,local,mul,16,4,msl:Shot+rld20,-3T012356+1>3"); //` eq(a1++,"Bow,crude,wpn,2hand,prov,acu,7,1,msl:Arrow+rld05,per"); //Aro pmt std or crude amoCat=a1; //` eq(a1++,"Picket,,&amo,,,,,,,"); //` eq(a1++,"Dart,std,amo,1hand,local,acu,8,1,hth,-4T010123-2>1"); //Blowgun amo eq(a1++,"Stone,std,amo,1hand,local,acu,8,1,0,0"); //Sling amo `?Fnc as Rock vs as Shot eq(a1++,"Arrow,std,amo,1hand,local,acu,8,1,hth+hrl,-4T010123-2>1"); eq(a1++,"Bolt,std,amo,1hand,local,acu,8,1,hth+hrl,-4T010123-2>1"); //Crossbow amo eq(a1++,"Shot,std,amo,1hand,local,acu,8,1,0,0"); //Matchlock amo //` eq(a1++,"Arrow,crude,amo,1hand,prov,acu,8,1,hth+hrl,-4T010123-2>1"); defItm=a1; shdCat=a1; //`?-> 2dhand rdy no penalty eq(a1++,"Defend opt,cdn,opt,1hand,self,1ea,0,per,-0-0,041"); //` eq(a1++,"Main-gauche,,&shd,,,,,,-0-0,022"); //` eq(a1++,"Net,,&shd,,,,,,-0-0,022"); //` eq(a1++,"Poker,,&shd,,,,,,-0-0,022"); //` eq(a1++,"Blowgun,,&shd,,,,,,-0-0,022"); eq(a1++,"Sm Shield,std,shd,1hand,local,mul,0,10,-0-0,121"); //`?ST req ff eq(a1++,"Lg Shield,std,shd,1hand,local,mul,0,15,-1-0,14."); //` eq(a1++,"Shield,crude,shd,1hand,prov,acu,0,5,per,per"); //` eq(a1++,"Partial Armor,std,amr,body,local,mul,0,10,-0-2,024"); //`max #pcs rdy=3 amrCat=a1; eq(a1++,"Cloth Armor,std,amr,body,local,1of,0,15,-1-0,141"); //`?ST req ff eq(a1++,"Leather Armor,std,amr,body,local,1of,0,20,-2-2,221"); eq(a1++,"Chainmail Armor,std,amr,body,local,1of,0,25,-3-2,24."); eq(a1++,"Half-Plate Armor,std,amr,body,local,1of,0,30,-4-4,34."); eq(a1++,"Full Plate Armor,std,amr,body,local,1of,0,35,-5-4,34-"); //` eq(a1++,"Armor,crude,amr,body,prov,acu,0,5,per,per"); //`? booItm=a1; //booster itm fxItm=a1; eq(a1++,"StMod,cdn,fx,nil,mod,mul,0,0,0,0"); //mods: Opn= xpi rnd#, Bon= mod, Id= deriv eq(a1++,"DxMod,cdn,fx,nil,mod,mul,0,0,0,0"); eq(a1++,"IqMod,cdn,fx,nil,mod,mul,0,0,0,0"); eq(a1++,"WpnPr,cdn,fx,nil,mod,1ea,0,0,0,0"); //` eq(a1++,"Unbal,cdn,fx,nil,sta,1ea,0,0,0,0"); //`Onfall ver unused //` eq(a1++,"Clinc,cdn,fx,nil,sta,mul,0,0,0,0"); eq(a1++,"RdIcd,cdn,fx,nil,sta,acu,0,0,0,0"); //exh dmg pts to be incidental to eo rnd //` eq(a1++,"TnIcd,cdn,fx,nil,sta,acu,0,0,0,0"); //exh dmg pts to be incidental to eo trn (eo enc) figEnd=figGrp=a1; //`see sample data blw itmEnd=itmGrp=figGrp+FigMax; //ini all Grp elms as empty for(a1=figGrp;a1<=arySiz;a1++) eq(a1,Fre$); /*`sample data a1=figGrp; // eq(a1++,"aTrov,trv,Aa,101"); //`?..,000,0,00 if(false){ //`test lns (fmt for cmt when within /*) eq(a1++,"sidew,Fea,Aa,109,331,6,77"); eq(a1++,"sidew,Fea,Aa,109,531,6,77"); eq(a1++,"sidew,Fea,Aa,209,531,6,77"); eq(a1++,"sidew,Fea,Aa,209,131,6,77"); eq(a1++,"sidew,Fea,Aa,110,131,6,77"); eq(a1++,"sidew,Fea,Aa,110,631,6,77"); eq(a1++,"sidew,Fea,Aa,210,131,6,77"); eq(a1++,"sidew,Fea,Aa,210,631,6,77"); eq(a1++,"man,Bst,Aa,1206,531,2,30"); eq(a1++,"steed,Bst,Aa,1306,331,3,80"); eq(a1++,"steed,Bst,Aa,1406,131,3,80"); eq(a1++,"giant,Bst,Aa,705,331,4,80"); eq(a1++,"drago,Bst,Aa,1005,331,5,80"); } //if(false eq(a1++,"Orc,Adv,Aa,307,631,2,30,Ardir,1110,:>8,H1,0,10,0000,307,00000,00,,000,"); eq(a1++,"Orc,Bst,Aa,704,431,2,50,B11,2200,9=7,B3,0,10,0000,704,00000,00,,000,"); eq(a1++,"Orc,Bst,Aa,708,331,2,80,B12,3300,9=7,H3,0,10,0000,708,00000,00,,000,"); a1=itmGrp; eq(a1++,"Ardir,Shortsword,wpn,belt,,,Id'd,8"); eq(a1++,"B11,Club,wpn,1thand,,,Id'd,8"); eq(a1++,"B12,Dagger,wpn,belt,,,Id'd,8"); eq(a1++,"B12,Smeared Poison- Numbing,psn,1thand,,,Id'd,8"); eq(a1++,"B12,Sm Shield,amr,2dhand,,,Id'd,8"); eq(a1++,"B12,Tracker,tln,mem,,,Id'd,8"); eq(a1++,"1,2,3,4,5,6,7,8"); itmEnd=a1; //1st empty ary elm$ //*/ //`vuSqHt-=2; //Note sho4th() cmt re loop action on setSize() in bdSiz() when placed in same case eq(wdHt$,"My,5,5,-1,Aa,21,11,-1"); eq(notHex$,"My,101,201,-1,Aa,-1"); //*` eq(wdHt$,"My,5,5,-1,Aa,15,9,-1"); //`Melee map cfg eq(notHex$,"My,101,201,-1,Aa,101,102,103,104,105,201,202,301,302,401,402,501,502," +"601,609,701,702,801,809,901,909,1001,1009,1101,1109,1208,1209,1301,1309," +"1408,1409,1501,1506,1507,1508,1509,-1"); //*/ areColWd=mapColWd=21; areRowHt=mapRowHt=11; hlfHexSid=5; //max= 20 in dimVu() //hlfHexSid=7; //`r&d vuLnY=-2; bdSiz(false); //no repaint() hexFit(); } //fmnX0Ap() constructor mth public void paint(Graphics g){ this.requestFocusInWindow(); //permit keybd detect by KeyListener reTrd(); } //paint mth - will automatically restore keybd focus, if lost public void reTrd(){ shoBd(); shoMap(); shoFrc(); if(x7>O){ if(y7>I) y7--; } else //`?lvl lmt if(x6>O){ if(y6>I) y6--; } else if(x5>O){ if(y5>I) y5--; } else if(x4>O){ if(y4>I) y4--; } else if(x3>O){ if(y3>I) y3--; } else if(x2>O){ if(y2>I) y2--; } else if(y1>I) y1--; go(); } //reTrd mth public void keyIn(){ isKey=true; Graphics g=getGraphics(); //clear lin$ (prompt+input): FontMetrics ltrSiz=g.getFontMetrics(ltr); /*`limit chk A8=txtY-typHt*3/4; B8=ltrSiz.stringWidth(str(lin$).substring(txtCodLg)); C8=typHt; if(A8+C8>bdHt) C8=C8-(A8+C8-bdHt); //*/ A8=ltrSiz.stringWidth(str(lin$).substring(txtCodLg)); g.setColor(hue(BrfBkg)); g.fillRect(txtX,txtY-typHt*3/4,A8,typHt-I); if(isLin){ if(key7$=='\n' || key7$=='\b' && inp$.length()==argLg){ isLin=false; eq(lin$,str(lin$).substring(argLg)); if(txtTyp==4) inpVal=str(lin$).equals("")?O:Integer.parseInt(str(lin$)); //Enter alone= 0 } //if(key7$=='\n' else{ if(key7$=='\b') inp$.setLength(Math.max(argLg,inp$.length()-I)); else if(txtTyp!=4 || "0123456789".indexOf(key7$)>=O) inp$.append(key7$); eq(lin$,inp$); g.setColor(hue(BrfFgd)); g.setFont(ltr); g.drawString(str(lin$).substring(txtCodLg),txtX,txtY); } //else(key7$=='\n' } //if(isLin if(txtTyp==2){ if(key7$=='+') //allow keypad alt for Bksp key7$='\b'; inpVal=key7$=='\n'?O:+key7$-Asc0; } //if(txtTyp==2 key1$=key2$=key3$=key4$=key5$=key6$='?'; //`?lvl lmt if(x7==O) if(x6>O) key6$=key7$; else if(x5>O) key5$=key7$; else if(x4>O) key4$=key7$; else if(x3>O) key3$=key7$; else if(x2>O) key2$=key7$; else key1$=key7$; if(!isLin) go(); } //keyIn mth public void go(){ //director/ switchboard routine: all keybd inp (and repaint()) is sent here - //these are those routines (x#; vs subroutines X#) that accept key input //var lvl 7 routines (note: reverse ordering of x7..x1 cond hierarchy is significant) if(x7==Rol) rol(O,O,O); else if(x7==Rpt) rpt(""); else //var lvl 6 routines if(x6==AtkVs) atkVs(); else if(x6==HitVs) hitVs(); else //var lvl 5 routines if(x5==PikFig) pikFig(); else if(x5==ChkPfl) chkPfl(O,O); else if(x5==TryMov) tryMov(); else //var lvl 4 routines if(x4==PikAlt) pikAlt(); else if(x4==RdyItm) rdyItm(); else if(x4==BakOff) bakOff(); else //var lvl 3 routines if(x3==MacMov) macMov(); else if(x3==UsrMov) usrMov(); else if(x3==MacAct) macAct(); else if(x3==UsrAct) usrAct(); else if(x3==UseItm) useItm(); else if(x3==BadUse) badUse(); else if(x3==DoItm) doItm(); else if(x3==DoWpn) doWpn(); else if(x3==DoSpl) doSpl(); else //var lvl 2 routines if(x2==ChgBd) chgBd(); else if(x2==MakFig) makFig(); else if(x2==ChkIni) chkIni(); else if(x2==ChkRea) chkRea(); else if(x2==SidMov) sidMov(); else if(x2==ProAct) proAct(); else if(x2==PikAct) pikAct(); else if(x2==ExeAct) exeAct(); else if(x2==EndRnd) endRnd(); else //var lvl 1 routines if(x1==Sho4th) sho4th(); else if(x1==UseOpt) useOpt(); else if(x1==EncRev) encRev(); else if(x1==OneRnd) oneRnd(); else endGam(); } //go mth - keybd inp is accepted/ listened for here; at called rout's rtn //var lvl 1 routines public void sho4th(){ if(x1!=Sho4th) y1=I; Graphics g=getGraphics(); switch(y1){ case I: x1=Sho4th; //if(true){ useOpt(); return; } //`test ln /*` // pflLoc[I]=I; //flg to sho stats dpy in rht sid of map spc (see bdSiz()) //vuSqHt-=2; //`test ln: (viz init()) Note loop action on setSize() in bdSiz() when placed in same case bdSiz(); //Note setSize() chgd params causes repaint() hexFit(); shoBd(); shoMap(); //*/ //a1=I; b1=404; //placement hex `test ln y1++; /*` atPth=404; toPth=202; eq(enFro$,",304,403,402,"); b1=movPth(atPth,toPth,1); atHub=C3; toHub=D3; for(a1=1;a1<=b1;a1++) txt("12"+a1+pthHex(a1)); txt("111dst= "+b1+", atPth="+atPth+", atHub="+atHub+", toHub="+toHub+", toPth="+toPth); mrkHex(atPth,-3); mrkHex(303,-2); g.setColor(StdHue[0]); g.drawLine(hexCtr(atPth),D9,hexCtr(atHub),D9); g.drawLine(hexCtr(atHub),D9,hexCtr(toHub),D9); g.drawLine(hexCtr(toHub),D9,hexCtr(toPth),D9); txt("231ok"); return; //*/ //isa1=false; a1=1; isa1&=(a1=2)>0; txt("211a1="+a1); return; //`test ln //txt("113arc="+objArc(505,705)+'/'+E8); //`test ln //txt("211hit a key "+Math.sqrt(3)); return; //`test ln //txt("121-3/2="+(-3/2)); //`test ln //txt("311at,to: "); return; //`test ln //a1=0; txt("211prob.s for #dice (1..9): "); return; //`test ln case 2: /*calc %s for #dice `redef z1Siz=C in Init() `test lns if(a1==0) a1=inpVal; for(b1=0;b1<=5*a1;b1++) z1[b1]=0; //% cnts for(b1=1;b1<=a1+1;b1++) z3[b1]=0; //die faces b1=0; //#rolls cntr while(z3[a1+1]==0){ //`note: stats only - roll dice unordered System.arraycopy(z3,1,z5,1,a1); //` c1=0; for(d1=1;d1<=a1;d1++) if(z5[d1]==5) c1++; //alterations for Task roll //` while(c1-->0) for(d1=a1;d1>0;d1--) if(z5[d1]<5 && z5[d1]>0){ z5[d1]++; break; } //`alt: while(c1-->0) for(d1=a1;d1>0;d1--) if(z5[d1]<5 && z5[d1]>0) z5[d1]++; ++b1; c1=0; for(d1=1;d1<=a1;d1++) c1+=z5[d1]; z1[c1]++; //incr % for roll c1=1; while(++z3[c1]>5) z3[c1++]=0; //nxt roll (ascending) } //while(z3[a1+1]==0 g.setColor(StdHue[0]); g.fillRect(1,1,ioWd-1,vuHt-1); d1=15;e1=1; f1=1; g1=0; for(c1=0;c1<=5*a1;c1++){ if(e1>d1){ e1=1; f1+=2; } //if(e1>d1 g1+=z1[c1]; txt("1"+(char)(+' '+e1)+f1+" "+c1+": "+z1[c1]); txt("1"+(char)(+' '+e1++)+(f1+1)+" "+(M*g1/b1)); } //for(c1=0; if(true){ y1++; txt("211#rolls= "+b1); return; } //*/ /*` if(true){ //`test lns a1=str(lin$).indexOf(','); b1=Integer.parseInt(str(lin$).substring(0,a1)); c1=Integer.parseInt(str(lin$).substring(a1+1)); shoMap(); mrkHex(b1,-8); //mrkHex(radHex(radIni(b1,c1)),3); //for(a1=2;a1<=radCnt;a1++) mrkHex(radHex(a1),3); eq(a1$,"alts:"); losIni(b1,c1); for(a1=1;a1<=losDst;a1++){ mrkHex(losHex(a1),-3); if(losCoo!=losAlt){ mrkHex(losAlt,-2); a1$.append(" "+losAlt); } } g.setColor(StdHue[0]); g.drawLine(hexCtr(b1),D9,hexCtr(c1),D9); y1--; //`txt("211"+hexAzi(b1,c1)+" / "+E9+" / "+F9); txt("211"+a1$); return;} //*/ //` drwMag=basMag<<2; /*` // drw(0,0,"50;50@2:50;0_0;50_-50;0_0;-50_"); //`test ln // drw(200,0,"50;50@2:3?25;25_-50;0_25;-25_0;10_"); //`test ln drwArg[QtrCtr]=250; drwArg[QtrCtr+I]=100; drwArg[QtrLft]=300; drwArg[QtrLft+I]=50; drwArg[QtrApx]=200; drwArg[QtrApx+I]=50; drwArg[QtrRht]=200; drwArg[QtrRht+I]=150; g.setColor(StdHue[2]); //g.fillRect(hexCtr(104),D9,I,I); //`test ln g.drawLine(hexCtr(104),D9,hexCtr(507),D9); //`test ln g.setColor(StdHue[O]); g.drawRect(200,50,100,100); //*/ /*` hexQtr(b1,a1); // drw(200,50,"8:"+str(a1$)); //`test ln drw(O,O,"2:["+str(a1$)+"]4:]"); //`test ln // drw(O,O,"[1?"+str(a1$)+']'); //`test ln //*/ shoBd(); shoMap(); shoFrc(); a1=vuWd>>2; b1=vuHt>>3; c1=vuWd-(a1<<1); d1=vuHt-(b1<<1); g.setColor(StdHue[0]); g.fillRect(a1,b1,c1,d1); g.setColor(StdHue[3]); g.drawRect(a1,b1,c1,d1); /*`txt dpy/inp rgn bdrs g.setColor(StdHue[2]); g.drawRect(0,vuHt,ioWd/3,typHt); g.drawRect(ioWd/3,vuHt,ioWd*2/3,vuHt); //*/ eq(xsB,"8,7,130,90,100,100,1,8,2,205,90,100,100,1"); //both imgs' dta for(c1=O;c1<8;c1+=7){ drwArg[QtrCtr]=val(xsB,c1+3); drwArg[QtrCtr+I]=val(xsB,c1+4); drwArg[QtrLft]=drwArg[QtrCtr]+(a1=val(xsB,c1+5)/2); drwArg[QtrLft+I]=drwArg[QtrCtr+I]-(b1=val(xsB,c1+6)/2); drwArg[QtrApx]=drwArg[QtrCtr]-a1; drwArg[QtrApx+I]=drwArg[QtrLft+I]; drwArg[QtrRht]=drwArg[QtrApx]; drwArg[QtrRht+I]=drwArg[QtrCtr+I]+b1; // g.drawRect(drwArg[QtrCtr]-a1,drwArg[QtrCtr+I]-b1,a1<6) for(b1=1;b1<13;b1++) Z5[b1+c1]++; else Z5[c1]=12;} a1$.setLength(b1=0); for(a1=1;a1<25;a1++){ a1$.append(""+(c1=Z5[a1])+','); b1+=a1*c1; } txt("111"+str(a1$)+"avg:"+(b1/144)+'.'+(b1%144*C/144)); //*/ y1++; //` fitStr(ChkBrf$,hlfSqSid-1,zonWd<<1); txt("222 ick: Bksp, re: *, start: Enter"); //rol(5,Hit,Usr); //`test ln (in cjn w nxt cas tst ln) return; case 3: //y1++; txt("221roll="+a5$); return; case 4: if(inpVal!=O){y1-=2; sho4th(); return;} //`test ln /*` //`for(c1=O;c1<7;c1++) clrHex(wayHex(b1,c1)); if(++a1<7){ y1--; sho4th(); return; } //`test ln //*/ if(key1$!='\b'){ y1+=key1$=='\n'?2:1; sho4th(); return; } //if(key1$!='\b' a1=vuWd>>2; b1=vuHt>>3; c1=vuWd-(a1<<1); d1=vuHt-(b1<<1); g.setColor(StdHue[0]); g.fillRect(a1,b1,c1,d1); g.setColor(StdHue[3]); g.drawRect(a1,b1,c1,d1); zonWd=hlfHexSid; txt("1)BChasing dragons with plastic"); txt("1*Cswords.."); zonWd=a1; y1--; txt("222 hit a key"); return; case 4: a1=b1=0; c1=vuWd; d1=vuHt; g.setColor(StdHue[0]); g.fillRect(a1,b1,c1,d1); g.setColor(StdHue[3]); g.drawRect(a1,b1,c1,d1); ltr=new Font("SanSerif",Font.PLAIN,ltrPt-I); g.setFont(ltr); a1=zonWd; zonWd=hlfHexSid; vuHt++; //shift txt lns down 1 pxl txt("1"+(char)(+' '-1) +"2Game for 1 or more player(s) vs computer or opponent."); txt("1 2For playtest comments visit playhob.com."); txt("1!2Files arc: fmnX0.zip - contains all files below."); txt("1\"2Rules: fmnX0Md.rtf or .pdf (p&p), fmnX0Op.rtf (app)."); txt("1#2Game: fmnX0Ap.java (code)/ fmnX0Ex.jar (exe)."); // txt("1$2"); txt("1%2This code can't affect the integrity of your files (no"); txt("1&2storage option). It's practically guaranteed this playtest"); txt("1'2code has errors: don't be surprised. Playtesters are"); txt("1(2genuinely appreciated but not compensated. OK to alter"); txt("1)2the program for your own use, at your own risk."); // txt("1*2"); txt("1+2A redevelopment of Metagaming's '70s- era microgames,"); txt("1-2not approved by author Steve Jackson, nor copyright"); txt("1.2holder: elements used without permission."); // txt("1/2"); vuHt--; //rcl std dim txt("10@Copyright 2019 by Droll"); ltr=new Font("SanSerif",Font.PLAIN,ltrPt); g.setFont(ltr); //carries over to io font zonWd=a1; y1-=2; txt("222 hit a key"); return; case 5: useOpt(); } //switch(y1 } //sho4th mth public void useOpt(){ if(x1!=UseOpt) y1=I; switch(y1){ case I: x1=UseOpt; isDib=true; //alow for opt rev -> brf "[figNam] on move/ watch/ defensive" //if(true){ y1+=6; useOpt(); return; } //`test ln //eq(a1$,dic(6,"test")); //`test ln y1++; case 2: //for(b1=I;b1<4;b1++) txt("1"+b1+"1(counting): "+a1++); //`test ln //mrkHex(202,rdm(2)); //`test ln y1+=2; //`mod for y1-- in paint() chgBd(); return; case 3: if(a2!=b2){ //_2s of chgBd() y1--; useOpt(); return; } //if(a2!=b2 y1++; case 4: y1++; //` rpt("211Require figures\' observation? 0) no 1) yes: "); //` return; inpVal=O; //`Onfall ver case 5: isObs=inpVal==I; isHid=isSee=false; //isObs=isSee=true; //`test ln y1++; makFig(); return; case 6: y1++; //chkPfl(a2,2); return; //`test ln: a2 of makFig() //txt("211isBy(a2,a2)="+isBy(a2,a2)); return; //`test ln case 7: encRev(); } //switch(y1 } //useOpt mth public void encRev(){ if(x1!=EncRev) y1=I; switch(y1){ case I: x1=EncRev; trnCnt++; eq(are$,"Aa"); //area$ (="Arena") eq(areNot$,areOut(notHex$)); eq(xsA,areOut(wdHt$)); dimVu(areColWd=val(xsA,2),areRowHt=val(xsA,3),vuHt,vuWd); mapTop=vuHt-mapHt>>I; //mapWd,Ht of dimVu() mapLft=vuWd-mapWd>>I; areDta$.append(","+str(are$)+"0"); //iniSid bstNam=X*(bstNam/X+I); //beg w B11 (B1 etc rsv) `dpy'd names ("B1..0") repeat if >10 per area y1++; //txt("011"); for(a1=0;a1<3;a1++) txt("1"+(a1+1)+"1"+z1$[figGrp+a1]); return; //`test ln case 2: /*` eq(xsB,"105,1,205,1,306,1,403,2,503,2,508,3,509,3,1101,3,1102,3,1003,1,1104,1," +"1108,1,1208,1,1110,3,1111,3,1703,3,1704,3,1709,2,1808,2,1906,1,2006,1,2107,1,x"); a1=I; while(wrd(xsB,a1++).charAt(O)!='x') addFig("Wall,Fea,@"+Div$+str(A9$)+Div$+wrd(xsB,a1++)+"3,6,77"); //A9$ of wrd() // addFig("Wall,Fea,@"+Div$+str(A9$)+Div$+wrd(xsB,a1++)+"3,6,7/"); //`alt test ln addFig("Fire,Fea,@,705,33,6,11"); addFig("Shadow,Fea,@,604,33,6,88"); addItm(-707,locItm(itmPoo,"Rock","wpn")); //a1=C7; //`test ln: C7 of addItm() //*/ eq(xsA,"109,108,209,208"); c1=O; for(b1=figGrp;b1N) && wrd(b1,FigCla).equals("Adv") && ++c1<5) wrdIn(b1,FigCoo,wrd(xsA,c1)); } //for(b1=figGrp; shoBd(); shoMap(); y1++; case 3: /*prefig'd `r&d wrdIn(vacSid(),SidId,"Computer"); //note: alt form vs blw addFig("Goblin,Bst,@,1502,22,1,50,,"+B5+",91307,H00,0,mr"); //B5 of vacSid() digIn(a1=A6,FigCtl,FigPla,Mac); //`test ln //digIn(A6,FigOri,FigPst,I); //`test ln addItm(A6,locItm(itmPoo,"Club","wpn")); //A6 of addFig() wrdIn(elmNum,ItmLoc,"1thand"); //elmNum of addItm() addItm(A6,locItm(itmPoo,"Dagger","wpn")); // wrdIn(elmNum,ItmLoc,"2dhand"); //elmNum of addItm() if(false){ //`test lns addItm(A6,locItm(itmPoo,"Sm Shield","shd")); wrdIn(elmNum,ItmLoc,"2dhand"); //elmNum of addItm() addItm(A6,locItm(itmPoo,"Blowgun","wpn")); // wrdIn(elmNum,ItmLoc,"1thand"); addItm(A6,locItm(itmPoo,"Dart","amo")); addTo(elmNum,ItmBon,1); addItm(A6,locItm(itmPoo,"Chainmail","amr")); wrdIn(elmNum,ItmLoc,"body"); } //if( //addItm(A6,locItm(fxItm,"Unbal","fx")); //`test ln if(false){ //`test lns addItm(A6,locItm(itmPoo,"Smallbow","wpn")); wrdIn(elmNum,ItmLoc,"2dhand"); //elmNum of addItm() addItm(A6,locItm(itmPoo,"Arrow","amo")); addTo(elmNum,ItmBon,1); //elmNum of addItm() addItm(A6,-locItm(itmPoo,"Arrow","amo")); //no acu wrdIn(elmNum,ItmCla,"+amo"); //elmNum of addItm() wrdIn(c1=elmNum,ItmBon,"+1"); } //if( if(false){ //`test lns genBst(vacSid()); wrdIn(A5,SidId,"Adjutant"); //_5s of genBst() valIn(C5,FigCoo,802); digIn(C5,FigOri,FigFac,2); digIn(C5,FigCtl,FigPla,Usr); //`test ln } //if( if(false){ //`test lns // addFig("Orc,Bst,@,708,33,1,80,,"+wrd(vacSid(),SidVal)+",111307,H10,0,mr"); addFig("Orc,Bst,@,1402,23,1,80,,"+wrd(vacSid(),SidVal)+",101307,H00,0,mr"); wrdIn(A5,SidId,"Adjutant"); //_5s of vacSid() digIn(b1=A6,FigCtl,FigPla,Usr); //`test ln addItm(A6,locItm(itmPoo,"Dagger","wpn")); //A6 of addFig() wrdIn(elmNum,ItmLoc,"1thand"); //elmNum of addItm() addItm(A6,locItm(itmPoo,"Greatsword","wpn")); addItm(A6,locItm(itmPoo,"Smeared Poison- Numbing","psn")); addItm(A6,locItm(itmPoo,"Sm Shield","shd")); wrdIn(elmNum,ItmLoc,"2dhand"); addItm(A6,locItm(itmPoo,"Tracker","tln")); } //if( //givItm(b1,c1,I); //`test ln if(false){ //`test lns //addFig("Orc,Bst,@,203,53,1,40,,"+wrd(vacSid(),SidVal)+",91307,B00,0,mr"); addFig("Giantess,Bst,@,405,44,3,90,,"+wrd(vacSid(),SidVal)+",91307,B00,0,mr"); wrdIn(A5,SidId,"Side4"); //_5s of vacSid() digIn(A6,FigCtl,FigPla,Usr); addFig("Dragonspawn,Bst,@,1206,24,3,40,,"+wrd(A5,SidVal)+",91307,B00,0,mr"); digIn(A6,FigCtl,FigPla,Usr); } //if( //*/ //sidCnt=sidPoo-locElm(sidPoo,SidId,Fre$); //`unnec: set by vacSid() calls /*alt: if init() sample data used `test lns sidCnt=3; b1=sidPoo; eq(b1++,"Player,I,O,O"); eq(b1++,"Computer,2,O,O"); eq(b1++,"Adjutant,3,O,O"); a1=O; //ini figs' multi-pos flds while(nxtFig(are$,Any)!=a1 && (a1>O || (a1=newFig)>O)){ //newFig, isNo1 of nxtFig() // wrdIn(newFig,FigOri,""+dig(newFig,FigOri,FigFac)+"31"); wrdIn(newFig,FigCtl,wrd(sid(newFig),SidVal)+str(A9$)+(B7==I?'1':'0')+'0'); wrdIn(newFig,FigHit,"0000"); wrdIn(newFig,FigMov,"00000"); wrdIn(newFig,FigSta,"00"); wrdIn(newFig,FigAct,"000"); } //while(nxtFig(are$,Any)!=a1 && if(isNo1) return; //*/ if(true){ //dfa cfg genBst(vacSid()); wrdIn(A5,SidId,"Computer"); //_5s of genBst() //newSid=A5; //test ln valIn(C5,FigCoo,1502); digIn(a1=C5,FigOri,FigFac,2); //valIn(figGrp,FigCoo,1303); digIn(figGrp,FigOri,FigFac,2); //`test ln reloc Pla fig // eq(a1$,"B"+bstNam); //bstNam of addFig() of genBst() `test lns //while(locElm(locElm(itmGrp,ItmOwn,str(a1$))+I,ItmOwn,str(a1$))>O) //lv Unarmed itm // eq(elmNum,Fre$); //elmNum of locElm() //digIn(C5,FigCtl,FigPla,Usr); //`test ln } //if( y1++; //txt("011"); for(a1=0;a1<3;a1++) txt("1"+(a1+1)+"1"+z1$[figGrp+a1]); return; //`test ln case 4: txt("011"); //valIn(a1,FigCoo,b1=1007); digIn(a1,FigOri,FigFac,2); //`test ln //valIn(a2,FigCoo,907); digIn(a2,FigOri,FigFac,6); //`test ln //a3=modMa(a1); txt("131movPth: "+movPth(b1,wayHex(b1,5),a1)+", hub: "+C3+", Q3: " +Q3+", F3(fac test): " +F3); //`test ln //` shoFrc(); shoObs(locElm(figGrp,FigCla,"Adv")); //`test ln //if(true){ oneRnd(); return; } //`test ln //txt("121"+z1$[A6]); //`test ln //txt("121"+losHex(losIni(406,203))); //`test ln //txt("123figGrp="+figGrp+"; figEnd="+figEnd+"; itmGrp="+itmGrp); //`test ln //txt("134itmEnd="+itmEnd+"; arySiz="+arySiz); //`test ln //txt("131Phy: "+dig(a1,FigHit,FigPhy)+", Exh: "+dig(a1,FigHit,FigExh)); //`test ln y1++; //y1=6; //end rou `test ln txt("121opp "+wrd(pri(a1),FigTyp)+", Gra="+dig(a1,FigRtg,FigGra)); //txt("131wpns="+has(a1,"","wpn")+" #="+E7); //`test ln eq(a1$,"(Description of encounter & opponents.)"); if(!isHid) eq(a1$,"Hit a key to see profile of opponent."); //`test ln txt("211"+a1$); return; case 5: y1++; //atkSrc=a1; pikFig(); return; //`test ln //atkSrc=locElm(figGrp,FigCla,"Bst"); pikItm(); return; //`?pikItm() test ln //chkPfl(locElm(figGrp,FigCla,"Bst"),N); return; //`test ln: prv opp itm subs if(!isHid){ chkPfl(a1,O); return; } //`test ln case 6: oneRnd(); //`alt: b1=dig(a1,FigChr,FigST); addTo(a1,FigHit,FigPhy,b1); endGam(); //`test ln } //switch(y1 } //encRev mth public void oneRnd(){ if(x1!=OneRnd) y1=I; switch(y1){ case I: x1=OneRnd; rndCnt=O; y1++; case 2: //rnds cyc (cases 2:..7:) rndCnt++; //new rnd setgs y1++; chkIni(); return; case 3: y1++; chkRea(); return; case 4: y1++; sidMov(); return; case 5: y1++; proAct(); //all figs choose ini opts for rnd (to max modDX `?automate, vs usr/macAct) return; case 6: //segs cyc (case 6: go() recalls here aft pik/exeAct(), til no unacted) a1=O; //ini compos# tly for sides elim if(!(isNo1 || nxtFig(are$,Any)==O || isNo1 //isNo1 of proAct() || nxtFig() || isDon || rndCnt>DrwDur)){ for(newSid=sidPoo;newSidO){ //any unacted: incl fig elim eo gam cdns chk if(nxtOrd()>O) //sel unacted unpolled hi modDx newFig pikAct(); //poll newFig's opt/ #dic for seg & rcd hi #dic dibFig `?vic cdn chk else exeAct(); //dibFig acts, -> unpoll all unacted for nxt seg return; } //if(a1==O && } //if(!(isNo1 || y1++; case 7: if(isNo1 || isDon || rndCnt>DrwDur || a1>O){ //any sid elim endGam(); //`chk for gam ovr/ if area fin return; } //if(isNo1 || y1=2; endRnd(); } //switch(y1 } //oneRnd mth public void endGam(){ if(x1!=EndGam) y1=I; switch(y1){ case I: x1=EndGam; //`eo gam cdns chk; else clr are$ of opp -> nxt opn are$ y1++; case 2: b1=figGrp; //ini for nxt cas y1++; txt("011"); if(whyEnd$.length()O?"no opp left" //any sid elim: a1 of oneRnd() :(rndCnt>DrwDur?"draw duration":""))); txt("211done "+whyEnd$); return; case 3: for(c1=b1;c1O && dig(c1,FigHit,FigExh)>O){ b1=c1+I; addTo(c1,FigHit,FigExh,-(B9+I>>I)); //B9 of dig() rpt("211"+figNam(c1)+" recovers "+(-D7) //D7 of addTo() +" [transient] exhaustion."); return; //acts as break } //if(modSt(c1)>O && y1++; case 4: y1++; chkPfl(locElm(figGrp,FigCla,"Adv"),O); return; case 5: bstNam=O; //`rst cri are vars pre replay y1++; txt("211[ Close and use Java to rerun. ]"); return; } //switch(y1 } //endGam mth //var lvl 2 routines public void chgBd(){ if(x2!=ChgBd) y2=I; switch(y2){ case I: x2=ChgBd; y2++; case 2: y2++; //txt("011"); //`txt("111new colors (fg,bk): bd-brf-map"); txt("112new hlfHexSid (now= "+hlfHexSid+") Ent: Ok"); txt("422 ="); return; case 3: a2=inpVal<2?hlfHexSid:inpVal; b2=hlfHexSid; hlfHexSid=a2; x2=O; bdSiz(a2!=b2); //repaint() unless inpVal=hlfHexSid hexFit(); //paint() -> reTrd() -> go() -> useOpt()/ caller <- rtn here if(a2==b2) reTrd(); } //switch(y2 } //chgBd mth public void makFig(){ if(x2!=MakFig) y2=I; switch(y2){ case I: x2=MakFig; eq(are$,"My"); //area $ (Armory) /*prefig `r&d addFig("Human,Adv,@,303,53,1,30,Tyq,"+wrd(vacSid(),SidVal)+",101608,H00,0,fl"); wrdIn(A5,SidId,"Player"); //A5 of vacSid() digIn(a2=A6,FigRtg,FigLvl,2); //A6 of addFig() valIn(A6,FigEp,17); addItm(A6,locItm(itmPoo,"Unarmed","wpn")); addItm(A6,locItm(itmPoo,"Dagger","wpn")); if(true){ addItm(A6,locItm(itmPoo,"Cutlass","wpn")); wrdIn(elmNum,ItmLoc,"1thand"); //elmNum of addItm() addItm(A6,locItm(itmPoo,"Smallbow","wpn")); addItm(A6,locItm(itmPoo,"Arrow","amo")); addTo(elmNum,ItmBon,AmoLod); //elmNum of addItm() addItm(A6,locItm(itmPoo,"Lg Shield","shd")); wrdIn(elmNum,ItmLoc,"2dhand"); //elmNum of addItm() addItm(A6,b2=locItm(itmPoo,"Cloth","amr")); wrdIn(elmNum,ItmLoc,wrd(b2,ItmRdy)); //elmNum of addItm() if(false){ addItm(A6,locItm(itmPoo,"Main-gauche","wpn")); } //if( } //if( if(false){ addFig("Orc,Adv,@,0,53,1,40,Ardir,"+wrd(A5,SidVal)+",91308,H00,0,mr"); addItm(A6,locItm(itmPoo,"Hammer","wpn")); //A6 of addFig() wrdIn(elmNum,ItmLoc,"1thand"); //elmNum of addItm() addItm(A6,locItm(itmPoo,"Sm Shield","shd")); wrdIn(elmNum,ItmLoc,"2dhand"); //elmNum of addItm() } //if( if(true){ y2+=15; makFig(); return; } //*/ eq(areNot$,areOut(notHex$)); eq(xsA,areOut(wdHt$)); dimVu(areColWd=val(xsA,2),areRowHt=val(xsA,3),vuHt,vuWd); mapTop=vuHt-mapHt>>I; //mapWd,Ht of dimVu() mapLft=vuWd-mapWd>>I; shoBd(); shoMap(); //if(true){ valIn(a2=locElm(figGrp,FigNam,"Ardir"),FigCoo,303); y2+=14; makFig(); return; } //`test ln wrdIn(newSid=vacSid(),SidId,"Player"); //note: alt form vs blw y2++; case 2: y2++; txt("011"); //for(a1=0;a1<3;a1++) txt("1"+(a1+1)+"1"+z1$[figGrp+a1]); return; //`test ln //* txt("113- In The Armory -"); txt("131 0) Human 1) Elf 2) Dwarf 3) Halfling 4) Orc 5) Goblin"); txt("221Choose your figure's race: "); return; //*/ case 3: addFig(wrd(b2=figPoo+(inpVal5?O:inpVal),FigTyp) +",Adv,@,303,5"+(val(b2,FigHiP)-I)+",1,30,nam,"+wrd(newSid,SidVal) +",101010,H00,0,mr"); //digIn(A6,FigMov,FigMp,X); digIn(A6,FigMov,FigDir,N); //`test ln: mkr vu shoFig(a2=A6); //A6 of addFig() y2++; txt("011"); rpt("211Your "+wrd(b2,FigTyp)+"'s gender: 0) male 1) female "); return; case 4: a$=(isa2=inpVal!=I)?'m':'f'; y2++; eq(a2$,isa2?"His":"Her"); rpt("211"+str(a2$)+" handedness: 0) right 1) left "); return; case 5: wrdIn(a2,FigGen,""+a$+(inpVal!=I?'r':'l')); y2++; rpt("311"+str(a2$)+" name: "); return; case 6: eq(a2$,lin$); if(a2$.length()9?O:inpVal); isa2=E9>O; //E9 of digIn() y2++; c2=dig(b2,FigAtr,AtrAd)+E9; if("Elf,Dwarf".indexOf(wrd(b2,FigTyp))>N) c2-=2; d2=dig(b2,FigAtr,MinST); if(wrd(b2,FigTyp).equals("Dwarf")) d2+=2; i2=wrd(b2,FigTyp).equals("Orc")?d2+I:d2; //`Onfall mod: min IQ 7 rpt("411"+str(a2$)+"'s ST"+(isa2?": ":" ("+i2+".." //` +(g2=dig("@;A9A@",b2-figPoo))+"): "); +(g2=dig("@;A9??",b2-figPoo))+"): ")); //`Onfall mod: min IQ 7 return; case 9: if(inpVal>I)); //`test ln z2[FigST]=isa2?inpVal:Math.min(g2,Math.max(inpVal,i2)); //z2[FigST]=9; //`test ln c2-=z2[FigST]-d2; y2++; e2=dig(b2,FigAtr,MinDX); if(wrd(b2,FigTyp).equals("Elf")) e2+=2; f2=dig(b2,FigAtr,MinIQ); i2=f2>d2 && z2[FigST]>=f2?z2[FigST]-f2+I:O; //min req IQ adn i2+=f2+i2<7?7-(f2+i2):O; //`Onfall mod: min IQ 7 rpt("411"+str(a2$)+"'s DX"+(isa2?": ":" ("+(g2=e2>f2 && c2>O?e2+(c2+I>>I):e2)+".." +(h2=d2>e2?Math.min(z2[FigST]-I,c2-i2+e2):c2-i2+e2)+"): ")); return; case X: if(inpValO){ addItm(-val(a2,FigCoo),itmElm); //instance chosen poo typ to coo holder if(Math.max(itmCat(B7),B8)==amoCat) //B7,elmNum of addItm(); B8 of itmCat() addTo(elmNum,ItmBon,AmoLod); /*`alt: if(AmoCod$.indexOf(wrd(g5=elmNum,ItmCod))>N) //elmNum of addItm() addTo(g5,ItmBon,24); if(takItm(a5,g5)){ //*/ if(isa2=takItm(a2,c2=elmNum)){ givItm(a2,c2,All); if(c2!=elmNum) //elmNum of givItm() eq(c2,Fre$); //rmv loose coo itm (`wo clr'g all coo) if(wrd(itmElm,ItmRng).startsWith("msl:")){ //`Onfall ver eq(die$,str(A9$)+'+'); //`Onfall ver addItm(a2,locElm(amoCat,ItmTyp,die$.substring(4,die$.indexOf("+")))); //`Onfall ver addTo(elmNum,ItmBon,AmoLod); //`Onfall ver } //if(wrd(itmElm, } //if(isa2=takItm(a2, } //if(itmElm>O y2++; txt("011"); if(itmElm>O) if(isa2){ chkPfl(a2,-I); return; } //if(isa2 else{ eq(c2,Fre$); //rmv loose coo itm (`wo clr'g coo) txt("131 [ "+str(A6$)+" ]"); //A6$= err msg of takItm() } //else(isa2 case 14: y2++; //`txt("133isArm(a2)_B7="+isArm(a2)+'_'+(B7>=itmGrp?wrd(pri(B7),ItmTyp):"0")); //`test ln txt("111Bsp, 0) take more 1) drop item(s) in hands"); txt("2212) rearm 3) begin anew 4) enter arena"); return; case 15: if(inpVal==O || key2$=='\b'){ y2-=3; makFig(); return; } //if(inpVal==O || if(inpVal==I){ for(c2=itmGrp;c2N) eq(z1$[c2],Fre$); y2--; chkPfl(a2,-I); return; } //if(inpVal==I while(locElm(itmGrp,ItmOwn,"@")>O) //`alt: for(b2=itmGrp;b2O) eq(elmNum,Fre$); //elmNum of locElm() y2-=inpVal==3?13:4; inpVal=val(a2,FigEp); //ini for rearm recyc makFig(); return; } //if(inpVal<4 y2++; case 16: tlyIq(a2); //asg FigIqU,F x2=O; go(); } //switch(y2 } //makFig mth public void chkIni(){ //=begRnd if(x2!=ChkIni) y2=I; switch(y2){ case I: x2=ChkIni; y2++; case 2: y2++; txt("011"); txt("115trn "+trnCnt+", rnd "+rndCnt); b2=dig(areDta$,str(areDta$).indexOf(","+are$)+are$.length()+IniSid); //b2=2; //`test ln for(a2=sidPoo;a2O){ //sid's fig(s) in are$ c2=dig(dic(I,"side "+d2+" ini"),O); //c2=rdm(dieFac); //`test ln rpl: just for speed //if(a2==sidPoo) c2=7; //`test ln if(b2==d2){ txt("131"+wrd(a2,SidId)+" +1="+(++c2)); //+1 ini bon for 1st mvd sid of prev rnd try{ //delay Thread.sleep(500); } //try catch(InterruptedException e){ }; //catch(InterruptedException } //if(b2==d2 digIn(a2,SidIni,SidDie,c2); digIn(a2,SidIni,SidSeq,O); } //for(a2=sidPoo; case 3: x2=O; go(); } //switch(y2 } //chkIni mth public void chkRea(){ if(x2!=ChkRea) y2=I; switch(y2){ case I: x2=ChkRea; y2++; case 2: y2++; txt("011"); txt("115trn "+trnCnt+", rnd "+rndCnt); for(a2=sidPoo;a2=X) //rst act flg addTo(a2,FigAct,FigDic,-X); wrdIn(a2,FigOgn,wrd(a2,FigCoo)); //set pre Rtr blw digIn(a2,FigMov,FigHlt,Mv0); //act as flg for Rtr mov nxt wrdIn(a2,FigPth," "); } //if(isAni(a2) && y2++; case 2: movTyp=Rtr; //msg/ prompt for Force(d) Retreats: bakOff() arg for(a2=figGrp;a2Lyg && isEgd(a2) && dig(a2,FigMov,FigHlt)==Mv0){ //flg rev by bakOff() blw c2=O; for(b2=I;b2<=C4;b2++) //_4s of isEgd() if(wrd(Z4[b2],FigObj).equals("+"+a2) //`?&& FigAct= Strike/Jab && dig(Z4[b2],FigHit,FigDmg)N && B9!=N+PivDir //B9 of dig() && dig(Z4[b2],FigMov,FigHlt)==Mv0){ //jus 1 per Src (as flg set blw) c2=Z4[b2]; break; //`?prv to pik src fig w hi/lo seq } //if(wrd(Z4[b2],FigObj).equals( if(c2>O){ movTgt=a2; //mover digIn(optSrc=movSrc=c2,FigMov,FigHlt,Mvd); //chooser bakOff(); //if Tgt moved, tryMov() flgs Tgt FigHlt as Mvd return; //rcl thi cas } //if(c2>O } //if(isAni(a2) && for(a2=figGrp;a2=c2){ //`Onfall rev {} addItm(a2,locItm(itmPoo,"DxMod","fx")); //modDx() chk on rd of wd'g wrdIn(elmNum,ItmLoc,"wd"); //elmNum of addItm() valIn(elmNum,ItmOpn,rndCnt); valIn(elmNum,ItmBon,-2); } //if(dig(a2,FigHit,FigDmg)>=c2 digIn(a2,FigHit,FigDmg,O); //`?or, aft mov pha } //if(isAni(a2) && f2=O; //sid mov seq ord hldr y2++; case 3: y2++; txt("111Sides' initiative rolls"); //rvw b2=O; for(a2=sidPoo;a2O && dig(newSid,SidIni,SidSeq)==f2) //sid- by- sid end of mov upk for(a2=figGrp;a2PivDir-2?PivDir:O); if(c2PivDir-2) //rmv Piv digIn(a2,FigMov,FigDir,B9-PivDir); digIn(a2,FigMov,FigMma,modMa(a2)); //rcd eff MA valIn(a2,FigOgn,val(a2,FigCoo)); //rst beg hex } //if(b2N for(c2=sidPoo;c2N //e2= #sides >1 w mov opt [>N dmy] && ((d2=dig(c2,SidIni,SidDie))>b2 || d2==b2 && dig(dic(I,"Ini tie; d"+(dieFac=++g2)),O)<2)){ //`alt: || d2==b2 && rdm(++g2)<2)){ if(d2>b2) g2=I; //reset #sides tied for initiative a2=c2; b2=d2; } //if(dig(c2,SidIni,SidSeq)==O && isa2=false; if(a2(val(pri(g2),FigSiz)+99)/C || !isEgd(g2))){ //E9 of hexDst() i2=g2; c2=h2; //all opp egd= C } //if(isAni(g2) && } //if(isAni(d2) && if(isa2){ //if any usr- ctld fig(s) -> usr(s) spc ord y2+=5; sidMov(); return; } //if(isa2 y2++; case 5: //sid of all mac- ctld figs: mac cho either move now, or wait y2++; d2=isb2 || (c2>I>=c2-I)?O:I; //`?elb/ rdmz || rdm(6) loo to macMov(); or wait -> rtn to case 4: e2=O; while(d2O || (e2=newFig)>O) //newFig, isNo1, C3 of nxtFig() && (dig(newFig,FigMov,FigHlt)==Hlt //`?|| FigDic>X, unl act dur mov gets Hlt || dig(newFig,FigSta,FigSeq)>MovCyc)); //loo in cdn if(isNo1){ y2+=7; sidMov(); return; } //if(isNo1 if(d2>O || C3MovCyc){ y2-=3; sidMov(); return; } //if(d2>O || y2++; optSrc=newFig; macMov(); return; case 8: //[`?/ aut cho quit sid -> wrapup prv las case] y2--; //if(true){ txt("011"); rpt("211[ "+figNam(optSrc)+(e3==Hlt?" stopped" //:(dig(optSrc,FigMov,FigHlt)==Hlt || dig(optSrc,FigSta,FigSeq)>MovCyc?" ended" //:" holding"))+". ]"); } else //`test ln sidMov(); return; case 9: //sid incl usr- ctld figs: usr cho either move now, or wait shoObs(locDig(-figGrp,FigCtl,FigOpr,b2)); //`?-locDig() [vs rules] y2++; txt("211Move "+wrd(a2,SidId)+" side "+(isb2?"now.":"0) now 1) later: ")); return; case X: d2=isb2 || inpVal!=I?O:I; digIn(a2,SidIni,SidSeq,d2O){ y2-=6; sidMov(); return; } //if(d2>O newSid=a2; //ini for nxtFig(,Pty) y2++; case 11: //txt("011"); txt("115Ok: "+(newFigO || (e2=newFig)>O) //newFig, isNo1, C3 of nxtFig() && dig(newFig,FigMov,FigHlt)==Hlt); //loo in cdn if(isNo1){ y2+=3; sidMov(); return; } //if(isNo1 if(C3Mv0 -> no rsm cap y2-=7; sidMov(); return; } //if(dig(newFig, y2++; case 12: y2++; txt("011"); txt("121 Quit this side: Bksp"); txt("211move 0) "+figNam(newFig)+" 1) other: "); return; case 13: if(key2$!='\b'){ y2-=2; if(inpVal==I) sidMov(); else if(dig(optSrc=newFig,FigCtl,FigPla)==Mac) macMov(); //nb is lmt'd to MovCyc #tries -> Hlt else usrMov(); return; } //if(key2$!='\b' y2-=9; //inp= Bsp sidMov(); return; case 14: /*`alt: vs case 4: sid- by- sid eo mov upk for(a2=figGrp;a2PivDir-2?PivDir:O); shoFig(a2); } //if(dig(a2,FigMov,FigStp)PivDir-2) digIn(a2,FigMov,FigDir,B9-PivDir); digIn(a2,FigMov,FigMma,modMa(a2)); } //if(b2O && isBy(a2,Foe)) && c2>I){ System.arraycopy(Z5,I,z2,I,e2=C5); //_5s of isBy() for(f2=I;f2<=e2;f2++) if(canHit(a2,Math.abs(z2[f2])) && K5>tgtPos){ //_5s,B7 of canHit() g2=N5==Jab?6:8; if(N5==Sk1 || c2Sde?4:O); //modDX of modDx() } //if(isb2= if(!isb2 && canHit(a2,E5)){ //E5 of isBy() e2=N5==Hrl?4:(N5==Jab?6:8); //_5s,B7 of canHit() if(c2>(N5==Hrl?I:2); atkItm=B7; } //if(c2modDX ] atkTyp=c2 Dfd,Wch,etc in mac/usrPik() //`Rdy jst prv max pot modDX: Rdy atkItm=0 her digIn(a2,FigAct,FigPro,atkTyp); valIn(a2,FigPrj,dig(a2,FigAct,FigOn)==Aim?val(a2,FigObj):(atkTgtO || (a2=newFig)>O)){ //newFig, isNo1 of nxtFig() if(dig(newFig,FigAct,FigDic)optSrc) macAct(); else usrAct(); return; case 3: //FigOn =zro post atk opts' Aim bon apl in exeAct() if(!(isa2=dig(a2,FigAct,FigOn)==Aim)) digIn(a2,FigAct,FigSnc,rndCnt); d2=dig(a2,FigAct,FigDo); //ff rd qua isb2=dig(a2,FigMov,FigMp)<=(dig(a2,FigMov,FigMma)+5)/6; if(isa2 && (d2==Mov || d2==Rdy //|| !isb2 || b2!=val(a2,FigObj)) //`adv ver: Dfd ok `if MP qua for Wch || d2==Dfd)) //`Onfall ver || d2==Dfd digIn(a2,FigAct,FigOn,O); if(!isa2 && isb2 && (d2==Wch || d2==Dfd && false)) //`Onfall ver && false digIn(a2,FigAct,FigOn,Aim); //`alt: Aim qua c2==O && y2++; if(isa2!=(dig(a2,FigAct,FigOn)==Aim)){ txt("011"); rpt("211"+figNam(a2)+(isa2?" quits":" begins") +" aiming at "+figNam(isa2?b2:val(a2,FigObj))+'.'); return; } //if(isa2!= case 4: if(isa3){ //if opt unchgd: isa3 (cmps a2 to optSrc), opt_s of mac/usrAct() //optTyp=Sk1; //`test ln //`?if(optDic0) isa2=true; //`validate opt if(isa2 && optDicdibDic || optDic==dibDic && ordDX>dibDX)){ /*`no call for - seq just shows seq of dic choice if(dibFig>O && dig(dibFig,FigSta,FigSeq)>O){ digIn(a2,FigSta,FigSeq,B9); //B9 of dig() digIn(dibFig,FigSta,FigSeq,O); } //if(dibFig>O && //*/ dibDX=ordDX; dibDic=optDic; dibFig=a2; } //isa2 && } //if(isa3 x2=O; go(); //poll others unacted/ chosen: bak to nxtOrd() in oneRnd() } //switch(y2 } //pikAct mth public void exeAct(){ //uses dibFig= actor if(x2!=ExeAct) y2=I; switch(y2){ case I: x2=ExeAct; txt("011"); y2++; case 2: atkSrc=dibFig; srcCoo=val(atkSrc,FigCoo); atkTyp=dig(atkSrc,FigAct,FigDo); atkTgt=val(atkSrc,FigObj); //`?chk<0/ cdn isAni() atkItm=val(atkSrc,FigItm); //if(isArm(atkSrc)) valIn(atkSrc,FigItm,atkItm=B7); //B7 of isArm() `test ln tgtCoo=atkTgtDfd) && atkTgt>O && canHit(atkSrc,atkTgt)){ tgtCoo=H5; //_5s of canHit() srcPos=D5; atkRng=L5; tgtArc=J5; } //if((isa2= if(isa2 && tgtCooO && atkTgt!=atkSrc) && dig(atkTgt,FigAct,FigDic)<=X; if(isb2 && dig(atkTgt,FigAct,FigDo)==Dfd){ //mrk defender acted // isb2=canSee(atkTgt,atkSrc); //`?not req for Ddg if(isb2 && (atkTyp==Hrl || atkTyp==Fr1) && (isb2=!isEgd(atkTgt) && canDdg(atkTgt,atkSrc))) digIn(atkTgt,FigAct,FigDo,Ddg); //`?allow refusal if >1 opp if(isb2&=dig(atkTgt,FigAct,FigDo)==Ddg || canSee(atkTgt,atkSrc)){ addTo(atkTgt,FigAct,FigDic,dig(atkTgt,FigAct,FigDic)O?"engaged":"off-line "+C7) //C4 of isEgd(), C7 of canDdg() +" target Dodge vs this attack. (hit a key)"); return; } //if(isa2 && if(isa2 && dig(atkTgt,FigAct,FigDo)==Dfd && !canSee(atkTgt,atkSrc)){ rpt("211No target Defend vs unseen attack. (hit a key)"); return; } //if(isa2 && case 3: //isDef option to use Defend/Dodge in response y2++; //if(false){ rpt("211atkTgt= "+atkTgt+"; atkSrc= "+atkSrc); return; } //`test ln if(isDef && isb2){ txt("211Tgt use Defend? 0) no 1) yes: "); return; } //if(isDef && case 4: if(isDef && isb2 && inpVal==I){ digIn(atkTgt,FigAct,FigDo,Dfd); //`or Ddg addTo(atkTgt,FigAct,FigDic,dig(atkTgt,FigAct,FigDic)Dfd && atkItm==O){ //`?&& !isArm(atkSrc) chkPfl(atkSrc,2); //`?pikItm() return; } //if(isb2= case 6: //`?validate itm if(isb2) valIn(atkSrc,FigItm,atkItm=itmElm); y2++; case 7: y2++; if(atkTyp==Rdy){ txt("011"); c2=modDx(atkSrc,atkTgt); eq(a2$,(isa2=dig(atkSrc,FigCtl,FigPla)==Mac) && isHid?"?":""+c2); isb2=dig(b2=atkSrc,FigMov,FigStp) doItm(), doWpn(), atkVs(), hitVs() } //else(atkTyp==Rdy && return; case X: atkSrc=dibFig; //can chg in opn if(atkTyp==Rdy && !isa2) valIn(atkSrc,FigItm,isb2?(itmElm>O && isRdy(itmElm)?itmElm :(isArm(atkSrc)?B7:O)):itmElm); isa2=atkTyp Ddg cap prv as cas 2: B9 of dig() addTo(atkSrc,FigAct,FigDic,a2); //mrk src acted digIn(atkSrc,FigSta,FigSeq,++seqCnt); } //if(!isa2 && clrFig(atkSrc); //evn of Rdy, etc plcFig(atkSrc); y2++; /*`?opt: if (atkSrc took no dmg yet this rnd) if(dig(atkSrc,FigCtl,FigPla)==Usr && atkTypO && atkTyp!=Wch && (atkTyp!=Dfd || dig(atkSrc,FigMov,FigMp)>(dig(atkSrc,FigMov,FigMma)+5)/6)) digIn(atkSrc,FigAct,FigOn,O); //zro Aim flg y2++; case 12: b2=dibDic=dibFig=dibDX=optSrc=O; while(nxtFig(are$,Any+Set)!=b2 && (b2>O || (b2=newFig)>O)){ //newFig of nxtFig() digIn(newFig,FigAct,FigDic,O); //zro unacted (dic< X) #dic if(!freHnd(newFig) && isA8) //2hd grip reverts: _8s,_9s of freHnd() wrdIn(D8,ItmLoc,wrd(D8,ItmLoc).substring(O,C9-I)); //"1t","2dhand"-s: C9 of wrd() } //while(nxtFig(are$,Any+Set)!=b2 && x2=O; go(); //rtns isNo1 of nxtFig() to oneRnd() if no actv adv } //switch(y2 } //exeAct mth public void endRnd(){ //`?incorp endTrn() [cmp w endGam()] if(x2!=EndRnd) y2=I; switch(y2){ case I: x2=EndRnd; txt("011"); y2++; case 2: y2++; //`?alt: Power Spells choice as orig [NO: see proAct() beg Action pha] case 3: for(a2=itmGrp;a2O && C9O){ if((b2=locElm(figGrp,FigNam,wrd(a2,ItmOwn)))>O && dig(b2,FigHit,FigExh)>O){ addTo(a2,ItmBon,N); if(D7O){ rpt("211"+a2$); return; } //if(a2$.length()>O case 4: y2++; txt("211rnd end"); return; case 5: //`?incorp endTrn() x2=O; go(); } //switch(y2 } //endRnd mth //var lvl 3 routines public void macMov(){ //mov Mac- ctld fig: uses newSid, optSrc of sidMov() if(x3!=MacMov) y3=I; switch(y3){ case I: x3=MacMov; txt("011"); if(!isAcq(optSrc)) txt("111 "+wrd(newSid,SidId)+" side moving. (wait)"); a3$.setLength(O); //ini msg$ eq(pthMov$,wrd(optSrc,FigPth)); //rcl mov dirs rcd movTyp=N; //ini as na for cdn chk movCnt=(c3=dig(optSrc,FigMov,FigHlt))1) for in- rd acq cont chkObs(optSrc,O); System.arraycopy(Z4,I,z3,I,d3=B4); //en cnt: _4s of chkObs() if(isa3=(e3=val(optSrc,FigPrj))>=figGrp && dig(optSrc,FigSta,FigSeq)>I) //Prj asn blw & cas 6: for(c3=I;c3<=d3;c3++) isa3&=z3[c3]!=e3; //if(d3O) z3[d3=I]=elmNum; //`test ln: chg unObs opp to Obs if(isa3) z3[++d3]=e3; e3=C; if(d3>O) //tak lst prj en, or pik nea actv obs en as tgt for(c3=I;c3<=d3;c3++) if(isFoe(z3[c3],optSrc) && isUp(z3[c3]) && hexDst(f3=val(z3[c3],FigCoo),srcCoo)O){ //stand if at lower pst digIn(optSrc,FigOri,FigPst,e3=B9+c3); //B9 of dig() movPnt+=c3; clrFig(optSrc); plcFig(optSrc); eq(xsA,Pst$); rpt("211"+figNam(optSrc)+" rises to "+wrd(xsA,e3)+"ing."); return; } //if((c3= case 4: enFro$.setLength(O); //ini cfg for movPth() use for(c3=I;c3<=d3;c3++) //opt to avoid en Fro hexes if(isFoe(z3[c3],optSrc) && !hav(z3[c3],"Unbal","fx")) enFro$.append(Div$).append(mapFro(z3[c3])); if(enFro$.length()>O) //fmt for movPth() use enFro$.append(Div$); if(optTgt=a3){ if(optTgt==O && movPth(srcCoo,tgtCoo,optSrc)){ b3=Math.min(a3-movPnt,prjDst=E3); //_3s of movPth() `prjMp=F3 y3+=2; //stp pth to tgt coo } //if(optTgt==O && else y3+=7; //Hlt & exi //rpt("211b3="+b3+" prjDst="+prjDst+" tgtCoo="+tgtCoo); //`test ln: rpl nxt ln macMov(); return; } //if(optTgt 1 stp bwd plot prjDst=C; //ini nea tgt dst atkTyp=atkRng=srcArc=tgtPos=O; //ini dst, ofs, fac & sde hldrs do{ //pik tgt fig, trc a pth to tgt hex while(k3>I && ((b3=(a3+(k3=Math.max(I,k3-2))-I)/k3-movPnt)X || !isB7)) //isa3=prf Fr1 || Rdy || (c3=str(A7$).indexOf("hrl"))N && hav(optSrc,"","wpn") && E7<2)))); //E7 of hav() c3=optTgt==optSrc?O //prv for standoff dst :(isArm(optSrc) && isMsl(D7) && k3==8?12 //_7s of isArm() :(k3==6 && isA7 && (str(A7$).indexOf("jab")>N || str(A7$).indexOf("jb2")>N)?I :(k3==4 && (!isA7 || isa3)?12 //Rdy :(k3==4 && isA7 && str(A7$).indexOf("hrl")>N?4:O)))); //k3=I; b3=a3-movPnt; c3=0; //`test ln e3=O; while(++e3<=d3 && (optTgt==optSrc || isFoe(z3[e3],optSrc))){ //may pik nea tgt oth thn FigPrj isa3=dig(z3[e3],FigMov,FigHlt)==Hlt || c3>X; //ie || Fr1 or Rdy isc3=isArm(z3[e3]) && isMsl(D7); mapFro(z3[e3]); eq(b3$,B7$); //FigFro ptn$: _7s of mapFro() l3=C7; //B7$ lg m3=D7; //tgt fac System.arraycopy(Z7,I,z4,I,E7); //`?g3=E7 unnec: can sub z4[0] j3=O; //ini tgt hex ary idx for(f3=O;f3'a' && rdm(2)<(isb3?2:I)?'d':a$) //prv for bwd stp: to acq/ avd :(optTgt!=z3[e3] || E3-movCnt>b3?prjDst>E3 //`?sub F3 vs E3: _3s of movPth() || prjDst==E3 && (b3+(isa3?c3:O)>atkTyp+atkRng //prv for msl, hrl use && (E3-movCnt<=b3+(isa3?c3:O) || rdm(6)atkTyp+atkRng && b3>atkTyp && rdm(6)<7) //% mov in :(prjDst-movCnt>atkTyp+atkRng || tgtPos<+a$ || tgtPos==+a$ && (isc3 || srcArc'a' && prjDst>E3)) //`?&& E3-movCnt<=b3 && (k3>I || isa3 && prjDst-movCnt>atkTyp+atkRng && (atkTyp==a3 || tgtPos<+'b') && tgtPos<+a$))) //&& false || dig(SidCyc$,i3)==1 //`test ln ){ //if(tgtPos>O) mrkHex(tgtCoo,-1); mrkHex(B3,-2); //`test ln optTgt=z3[e3]; tgtPos=+a$; atkTyp=b3; atkRng=isa3?c3:O; tgtCoo=B3; //mad + as arg in movPth() atHub=C3; toHub=D3; prjDst=E3; //icl +movCnt: `prjMp=F3: icl +movPnt srcArc=Q3; //eq(pthMov$,C3$); //`test ln } //if(isHex(toCoo= //else mrkHex(toCoo,tgtPos++); //`test ln } //for(f3=O; } //while(++e3<=d3 && }while(optTgt!=optSrc && k3>I); //`? && b3 trm on 1st cap opt txt("035"); prjDst-=movCnt; //rev to stp dst for jst thi cal tgtPos-=+'`'; //0,Fro,Sde,Rea [`?,Sam] b3=atkTyp; c3=atkRng; //`?if(b3+c3O) b3=Math.min(prjMp,!isArm(optSrc)?a3+3>>2:(isMsl(D7)?a3+7>>3:a3+I>>I)-movPnt); if(optTgt!=optSrc && (isb3 || movCnt>I //_5s of isBy() && dig(A3,FigMov,FigHlt)>3 //D7 of isArm() && prjDst>atkTyp && prjDst+I<=atkTyp+atkRng && movPnt>3 //_7s of isArm() && (dig(newSid,SidIni,SidSeq)>I || prjDst<=g3+I>>I)){//use Alt opt(s): msl amo relod chk eq(b3$,A8$); //msl amo typ$: _8s of isMsl() k3=D8; //amo rld rtg //k3=O; //`test ln if(val(f3=B7,ItmOpn)O) //B7 of hav() //`exp: spcf chk, vs isB7 of isArm() - ?if F7>1, pik amo itm frm Z7[] ary if(rndCnt<2 || true || AvgRld>O //`Onfall ver || true && seq(dic(3,"try load")).length()>O && B8+val(l3,ItmOpn)>=k3){ //B8 of seq() valIn(f3,ItmOpn,l3); valIn(l3,ItmOpn,O); clrFig(optSrc); plcFig(optSrc); rpt("211"+figNam(optSrc)+" reloads "+wrd(h3,ItmTyp) +(rndCnt<2 && AvgRld>O?": rd1 auto":"")); return; } //if(rndCnt<2 || else{ valIn(f3,ItmOpn,B8); addTo(l3,ItmOpn,B8); m3=(b3=(a3+3>>2)-movPnt)+movPnt; //prv for Rdy rpt("231[ Reloading delayed. ]"); return; } //else(rndCnt<2 || } //if(isArm(optSrc) && case 7: //recyc ety aft mov stp, w fal thr fro abv too f3=dig(optSrc,FigMov,FigDir); a3=modMa(optSrc); if(isa3=isEgd(optSrc)) //any adj or hth ega fig System.arraycopy(Z4,I,z3,I,z3[O]=C4); //_4s of isEgd() if(a3>O && movPnt>=a3 || f3I) //MP>=MA, bwd mov: no piv opt digIn(optSrc,FigMov,FigHlt,Hlt); isb3=(e3=dig(optSrc,FigMov,FigHlt))==Hlt || b3O && (isA4 || isa3 && dig(optSrc,FigMov,FigEgd)>O); //egd -> must stop isc3=isa3 && movCnt>I //opp hex ety try for Pus only && (movCntO; //chk for spc mov(s) cap g3=isArm(optTgt) && isMsl(D7)?I:O; //l3=I3; //`test ln if(!isa3 && d3tgtPos //_5s of isBy() || !isc3 && prjDst>b3) //`?isBy() intg w if(isEgd(optSrc abv || movPnt>=m3 || !isA5 && prjDst>b3 && prjDst+I-j3 mov to nxt cas || g3>O && prjDst>b3 && movPnt==a3+I>>I && canDdg(optSrc,optTgt) || g3b3 && movCnt>O && dig(optTgt,FigMov,FigHlt)>I)<3))){ //lmt clo rng vul y3+=(isa3=e3N && g3>O && prjDst>b3 && b3>=(k3=a3+I>>I) && movPnt+DdgOff==k3) //`?&& val(pri(optSrc),FigSiz)<200 for(k3=I;k3<4;k3++){ h3=SidCyc$.indexOf(wrd(optSrc,FigOri).charAt(FigFac),I); e3=dig(SidCyc$,h3+(k3<2?O:(k3>2?(e3O && isHex(wayHex(h3,e3))?C9:O; //C9 of isHex() if(h3>O && hexDst(h3,tgtCoo)<=hexDst(atCoo,tgtCoo) && losOff(val(optTgt,FigCoo),val(optSrc,FigOgn),h3)>=DdgOff){ atPth=atCoo; atHub=h3; j3=I; break; } //if(h3>O && } //for(k3=I; y3++; //rpt("125 dir="+f3+" h3="+h3); return; //`test ln case 8: y3++; movSrc=optSrc; if(isa3){ //do for spc mov System.arraycopy(Z3,I,z3,I,d3=I3); //poss tgt lis: _3s of movQlf(), note d3 coord w usrMov() movTgt=D3; movTyp=E3; bakOff(); } //if(isa3 else{ //mak reg mov toCoo=d3O?g3:(f3O) for(d3=I;d3<=z3[O];d3++) //shift stays adj, not nec egd isc3&=!isB4 && isBy(-toCoo,z3[d3]) && F5>O; //F5 of isBy() if(cooOcc(atCoo,Foe) || e3>O && !isc3) movTyp=isA6?DHh:Dis; //isA6 of cooOcc() `mul hex req upg tryMov(); //`if =bwd stp -> pref Hlt if(`movCnt>0 & unfav dst, fac to en } //else(isa3 return; case 9: movCnt=(d3=dig(optSrc,FigMov,FigHlt))==Mv0?O:dig(optSrc,FigMov,FigStp); movPnt=d3==Mv0?O:dig(optSrc,FigMov,FigMp); if(isa3 || isa5) pthMov$.append(hexDst(i3,atCoo)!=I?"?":""+hexWay(i3,atCoo)); //txt("036"); txt("136"+movCnt); //`test ln //mrkHex(toCoo=wayHex(atCoo,7-movFac),F9==atHub || F9==toHub?-2:-3); //`test ln //mrkHex(i3,i3==atHub || i3==toHub?-2:-3); //`test ln i3=atCoo; //`? if(!isAcq(optSrc)) txt("111 "+wrd(newSid,SidId)+" side moving. (wait)"); //`? isa3&=movTyp!=Pus; //mus hlt if(!isa3 && isa5){ //isa5, a5$ of tryMov() try{ //delay Thread.sleep(500); } //try catch(InterruptedException e){ }; //catch(InterruptedException j3++; y3-=2; macMov(); return; } //if(!isa3 && y3++; if(!isa5 || movTyp==Piv){ //pause: `?nec || Piv txt("011"); rpt("211"+(!isa5?"Move not made: ":"")+a5$); return; } //if(!isa5 || case X: txt("116chk Piv"); //`test ln y3++; //`?alt: dtm nea rot dir -> while(!canSee([all nea])) -> asn movFac d3=isBy(optSrc,Foe) && H5>O?I5:(E5>O && (isAcq(E5) || optTgt==E5)?E5:O); //_5s of isBy if(isa3=d3>O && (e3=isA5 && H5>O?D5:J5)!=Sam //cdn for Pivot: not dur acq/ avo calls seq && (optTgt!=optSrc && (a3O) || dig(optSrc,FigSta,FigSeq)>=MovCyc) && !(canSee(optSrc,d3) & isCmn(3,c3=E5)) && isB5 && (I5>I || e3!=Fro //_5s of canSee() || dig(d3,FigMov,FigHlt)11 || modIQ>9)){ //modIQ of modDx() c3%=X; d3=dig(optSrc,FigOri,FigFac); e3=SidCyc$.indexOf(A$,I); //A$ of dig() c3=a3a3+I>>I || isEgd(optSrc) //poss==1, >0 ?dig(SidCyc$,e3+(c3<3?I:N)) //`?opt (& if c3=4): trn twd shd sid :facRot(d3,c3); toCoo=atCoo; movSrc=optSrc; movFac=c3; movTyp=Piv; tryMov(); return; } //if(isa3= //`? else isa3=; //`?evl as hlt flg case 11: //evl las fig mov `?& flg if hlt if(isa3 && isa5){ //rcd piv: isa3 of `?case 5: or (`?7: &) 8: pthMov$.append("/"+movFac); eq(a3$,a5$); //a5$ of tryMov() } //if(isa3 && if(dig(optSrc,FigMov,FigHlt)O || dig(optSrc,FigSta,FigSeq)>=MovCyc) && (isa3 || isb3 //`? || optTgt!=optSrc && (atCoo==tgtCoo || movPnt>=m3 || prjDst>b3 && dig(optTgt,FigMov,FigHlt)=MovCyc; if(isAcq(optSrc)) if(isa3) //nml use: `test ln (if cmt out) { //`test ln txt("121 Now halted."); if(a3$.length()>O) txt("124 "+"[ "+str(a3$)+" ]"); //txt("134>"+b3$); //`test ln (diagnostic) txt("131 dirs="+pthMov$); //txt("126a:"+a3+" b:"+b3); //`test ln txt("211"+figNam(optSrc)+" moved "+movCnt +(isa3?" total":"")+" hex"+(movCnt!=I?"es":"") +", & used "+movPnt+" MP."+(isa3?"":" [ cyc "+dig(optSrc,FigSta,FigSeq)+" ]")); return; } //if( `test ln case 13: if(dig(optSrc,FigMov,FigHlt)>Mv0){ //see Mv0 exi chk beg sidMov() digIn(optSrc,FigMov,FigStp,movCnt); digIn(optSrc,FigMov,FigMp,movPnt); wrdIn(optSrc,FigPth,pthMov$.toString()); } //if(dig(optSrc,FigMov,FigHlt)>Mv0 addTo(optSrc,FigSta,FigSeq,I); //MovCyc cmp cnt x3=O; go(); } //switch(y3 } //macMov mth public void usrMov(){ //mov Usr- ctld fig: uses optSrc, newSid of sidMov() if(x3!=UsrMov) y3=I; switch(y3){ case I: x3=UsrMov; movTyp=N; a3$.setLength(O); //ini msg$ j3=I; //flg for ini pikAlt() call //j3=O; //`test ln y3++; case 2: //cyc ety aft mov stp movCnt=(d3=dig(optSrc,FigMov,FigHlt))==Mv0?O:dig(optSrc,FigMov,FigStp); movPnt=d3==Mv0?O:dig(optSrc,FigMov,FigMp); y3++; if(isa3=movQlf(optSrc)>O){ //chk for spc mov(s) cap System.arraycopy(Z3,I,z3,I,d3=I3); //poss tgt lis: _3s of movQlf(), note d3 coord w usrMov() movSrc=optSrc; movTgt=D3; movTyp=E3; bakOff(); return; } //if(isa3= case 3: //ety aft bakOff() rtn atCoo=val(optSrc,FigCoo); //chg by tryMov() of bakOff() shoObs(movCntStp && (movTyp==Hth || b4==optSrc) || movTyp==Piv){ //`?or, allow rebuffed Pus to mov/ chg fac if not egd/ Aback digIn(optSrc,FigMov,FigHlt,Hlt); y3+=8; //*`?rol() now pau for all SVs if(movTyp==Piv && a3$.length()>O) rpt("224[ "+str(a3$)+" ]"); else //*/ usrMov(); return; } //if(isa3 && b3=I; //ini for inp prompt //b3=movTyp==Piv?O:I; //ini for inp prompt `?alt [vs skip abv] =0 if isa3 & isa3=true; //ini for no go err msg y3++; case 4: //cyc ety aft bad, failed mov try (!isa3= no go here) /*` if(movCntO && a3$.length()=PivDir-I?PivDir:O); //B9 of dig() a3=modMa(optSrc); isa3=isEgd(optSrc); //any adj or hth ega fig System.arraycopy(Z4,I,z3,I,i3=C4); //egd fig lis: _4s of isEgd() if(movCnt>I && c3O && movPnt>=a3) b3=O; //hit a key flg: >1st bwd mov, full MP -> no piv isb3=b3O && (isA4 || isa3 && dig(optSrc,FigMov,FigEgd)>O); isc3=movCnt=a3){ //MA lmt isb3=true; //piv flg digIn(optSrc,FigMov,FigMp,movPnt=a3); //`?pmt xs } //if(movPnt>=a3 /*` if(isb3 && isc3 && b3modIq(optSrc)+2 || j7>=4*a7?2:(d7>modIQ?I:O); //_7s of rol() if(e3>O){ addItm(optSrc,locItm(itmPoo,"DxMod","fx")); addTo(elmNum,ItmBon,-e3); //elmNum of addItm() valIn(elmNum,ItmOpn,rndCnt); } //if(e3>O eq(a3$,"[ pivot DX-"+e3+" ]"); } //if(isb3 && //*/ y3++; if(j3>O){ txt("011"); if(a3$.length()>O) txt("124[ "+str(a3$)+" ]"); else if(b3>O) shoWay(); txt("131MA/use="+a3+'/'+movPnt+": #steps="+movCnt //+" dir:"+dig(optSrc,FigMov,FigDir) //`test ln +(movCnt>O?" - prev: "+(c3O?"lin#"+c3:"fwd")):"")); txt("121 on "+(atCooO else j3=inpVal=dig(key3$='A'); //aut pikAlt() pre beg mov case 6: g3="AaPp".indexOf(key3$)>N?7:inpVal; a3$.setLength(O); movTyp=Stp; //dfa for tryMov() e3=dig(optSrc,FigOri,FigFac); if(b37)){ if(b3 may resume mov digIn(optSrc,FigMov,FigHlt,Hlt); y3+=5; usrMov(); return; } //if(b36){ y3--; if(key3$=='A' || key3$=='a'){ atkSrc=optSrc; pikAlt(); } //if(key3$=='A' || else if(key3$=='P' || key3$=='p') chkPfl(optSrc,O); else{ //vol stay isb3=true; b3=c3I?O:I; //chk if pmt piv aft hlt usrMov(); } //else(key3$=='P' || return; } //if(g3a3+I>>I) && Math.abs((f3=SidCyc$.indexOf(""+e3,I))-SidCyc$.indexOf(""+g3,f3-I))!=I){ eq(a3$,"1 side only"); y3--; usrMov(); return; } //if((isa3 || else movTyp=Piv; toCoo=isb3?atCoo:wayHex(atCoo,g3); //`no piv rev req for multi-hex figs (head hex unchgd) if(isb3=isc3) for(d3=I;d3<=i3;d3++) //shift stays adj, not nec egd isc3&=!isB4 && isBy(-toCoo,z3[d3]) && F5>O; //F5 of isBy() isb3&=!isc3; //disengaging flg isc3=atCoo==toCoo || arcPos(optSrc,toCoo)==Fro || c3O && d7>h3){ //d7 of rol() isa3=false; //bad mov msg flg y3-=5; rpt("211HTH Disengage SV failed [ hit a key ]"); return; } //if(isb3 && //*/ if((isb3=movTyp==Stp && movPnt>I && cooOcc(toCoo,Foe)) && movFac==e3 && false) //`Onfall ver && false movTyp=Pus; if(isb3 && movCntMv0){ //see Mvg set end pikAlt(), Mv0 exi chk beg sidMov() digIn(optSrc,FigMov,FigStp,movCnt); digIn(optSrc,FigMov,FigMp,movPnt); } //if(dig(optSrc,FigMov,FigHlt)>Mv0 x3=O; go(); } //switch(y3 } //usrMov mth public void macAct(){ //rev or exe Mac- ctld fig act: uses newFig thr pikAct() of nxtOrd() chk in oneRnd(), //dib_ [as ref] vars of pikAct() if(x3!=MacAct) y3=I; switch(y3){ case I: x3=MacAct; txt("011"); optTgt=b3=val(newFig,FigObj); //sto opt chg flg vals: newFig of pikAct() if((a3=dig(newFig,FigAct,FigDo))==O){ //ini as proAct() dfa digIn(newFig,FigAct,FigDo,a3=dig(newFig,FigAct,FigPro)); valIn(newFig,FigObj,optTgt=b3=val(newFig,FigPrj)); } //if((a3= optItm=c3=val(newFig,FigItm); //optSrc 0'd eo proAct(): & chkd -> set in mac/usrAct if(optSrc==newFig){ //rtn to sam fig in ord aft any mDX rev for opt cho //txt("126[sam ord]"); //`test ln optTyp=a3; //flg as opt cho w no opt chg y3+=6; //pik #dic macAct(); return; } //if(newFig==optSrc optSrc=newFig; optTyp=O; //ini as no opt cho flg y3++; //eq(xsA,ActOpt$); rpt("211tgt:"+(optTgt>=figGrp?figNam(optTgt):"0")+" cap:"+(a3>0?wrd(xsA,a3):"0")); return; //`test ln case 2: d3=dig(optSrc,FigMov,FigMp); e3=dig(optSrc,FigMov,FigMma); h3=(isa3=isBy(optSrc,Foe) && I5>O && d3>I)?I5 :(E5>O && d3>2?E5 //_5s of isBy() :(optTgt>O && optTgt!=optSrc?optTgt:O)); //`?priority to proAct() asn if(isb3=h3>O && canSee(optSrc,h3)){ atkRng=I5; //_5s of canSee() srcPos=arcPos(optSrc,G5); srcArc=G6; //G6 of arcPos() } //if(isb3= a3$.setLength(O); //Alt opts if(isb3 && d3>I && isArm(optSrc) //-> only 1 poss C7/ I7 shd: els hld MP for wpn/ shd Rdy && shdArc(optSrc)>N){ //>N= prv for reOdr: _7s of shdArc() f3=Lwr-I; //ini sta chg flg g3=wrd(pri(Z7[I]),ItmTyp).indexOf("Shield")>N?Z7[I]:Z7[E7]; if(C7>O && isa3 && (G7==Cvr && srcPos==Fro || srcArc!=3 && isCmn(C7,srcArc))) f3=Lwr; else if(I7>O && (!isa3 || isCmn(3,srcArc) || !isCmn(I7,srcArc))) f3=isa3 || rdm(6)<7?Odr:Cvr; //`req shdArc/ dist adl cdn if(f3>=Lwr && false){ //`Onfall ver && false valIn(g3,ItmOpn,f3); a3$.append(figNam(optSrc)+(f3==Lwr?" lowers ":(f3==Odr?" orders ":" covers ")) +wrd(pri(g3),ItmTyp)+'.'); addTo(optSrc,FigMov,FigMp,I); d3++; } //if(f3>=Lwr } //if(isb3 && if(isb3 && atkRng==I && d3<(e3+5)/6 && isArm(optSrc) //drp itm if nec && wrd(D7,ItmRng).indexOf("jb2")>N && !freHnd(optSrc) && !isA8){ //_7s of isArm() givItm(-val(optSrc,FigCoo),f3=C8==B7?D8:C8,All); //_8s of freHnd() a3$.append((a3$.length()>O?",":"") +figNam(optSrc)+" drops "+wrd(pri(f3),ItmTyp)+'.'); } //if(isb3 && atkRng==I && isc3=freHnd(optSrc) && ((f3=B8)==I || rdm(6)<4); //B8 of freHnd() if(isb3 && isc3 && srcPos==Fro //vs srcPos=Sam && isArm(optSrc) && wrd(D7,ItmRdy).equals("1hand") //_7s of isArm() && (f3!=I || wrd(D7,ItmRng).indexOf("ofh")O?",":"") //eg msg Drop shd, -> atk 2hd +figNam(optSrc)+" doubles "+wrd(D7,ItmTyp)+" grip."); } //if(isb3 && isc3 y3++; if(a3$.length()>O && isAcq(optSrc)){ clrFig(optSrc); plcFig(optSrc); rpt("211"+a3$); return; } //if(a3$.length()>O && case 3: //chk/ flg for opt chg - incl any Alt opt adl MP use f3=has(optSrc,"","wpn") && E7>I?Z7[E7]:O; //2d rdy wpn: _7s of has() g3=O; for(i3=I;i3<=F7;i3++) //..or unrdy wpns (for Hrl dci) if(pri(Z7[LasRdy+i3])hilCat+I || rdm(6)<7) && (g3=A8)>O) //_8s of pri() break; optItm=B7; //lst wpn -> poss msl rdy or not //`txt("111"+(optItm>0?wrd(pri(optItm),ItmTyp):"none")); //`test ln if(canHit(optSrc,h3) && (N5!=Sk1 || d3>I) //_5s of canHit() && (N5!=Hrl || d3>2 && f3+g3>O) && (N5!=Jab || d3>3)){ optTyp=N5; optTgt=B5; optItm=B7; //_7s of isArm() of canHit() if(isA7 && C7>I && D5==Fro) //pik prf rdy wpn: ie D5!=Sam on N5=Sk1, & std arc qua for(i3=F7;i3<=C7;i3++) if((f3=Z7[i3])!=B7) if((j3=val(pri(f3),ItmReq)-val(D7,ItmReq))<=O //throwaway && (isc3=wrd(B8,ItmRng).indexOf("hrl")>N) && d3<=e3+3>>2 //B8 of pri() && wrd(f3,ItmLoc).equals("1thand") && (optTyp=Hrl)>O || j3O && optTyp==Sk1 && wrd(B8,ItmRng).indexOf("adj")>N) optItm=f3; } //if(canHit(optSrc, tgtPos=K5; srcCoo=M5; tgtCoo=isA5?H5:(isb3?val(h3,FigCoo):O); atkRng=isb3?hexDst(srcCoo,tgtCoo):C; srcPos=arcPos(optSrc,tgtCoo); srcArc=G6; //G6 of arcPos() y3++; //`eq(xsA,ActOpt$); rpt("212tgt:"+(isb3?figNam(h3):"0")+" cap:"+(optTyp>0?wrd(xsA,optTyp):(isA5?"no":"0")) //` +" atk:"+(optTyp>0)+" itm:"+(optItm>0?wrd(pri(optItm),ItmTyp):"none"+" rng:"+atkRng)); return; //`test ln case 4: //`?adl Alt opts txt("011"); //`test ln y3++; isb3=optItm==B7 && isA7 && isMsl(g3=D7); //only msl in hds, or can lod (if oth) if(isb3 && val(f3=optItm,ItmOpn)>3){ eq(a3$,A8$); //msl amo typ$: _8s of isMsl() h3=D8; //amo rld rtg //h3=O; //`test ln if(!isEgd(optSrc) && hav(optSrc,cut(a3$),"amo") && (i3=B7)>O) //B7 of hav() //`=spcf chk, vs isB7 of isArm() - ?if F7>1, pik amo itm frm Z7[] ary if(rndCnt<2 || true || AvgRld>O //`Onfall ver || true && seq(dic(3,"try load")).length()>O && B8+val(i3,ItmOpn)>=h3){ //B8 of seq() valIn(optItm=f3,ItmOpn,i3); valIn(i3,ItmOpn,O); clrFig(optSrc); //`?Lwr ofh shd on lod plcFig(optSrc); rpt("211"+figNam(optSrc)+" reloads "+wrd(g3,ItmTyp) +(rndCnt<2 && AvgRld>O?": rd1 auto":"")); return; } //if(rndCnt<2 || else{ valIn(f3,ItmOpn,B8); addTo(i3,ItmOpn,B8); txt("131[ Reloading delayed. ]"); //`?use rpt() her too } //else(rndCnt<2 || else optTyp=O; } //if(isb3 && case 5: if(optTyp>Dfd && optTypO && (G7==Cvr //_7s of shdArc() || (g3=C7)>O && srcPos==Fro && !isCmn(3,srcArc) && isCmn(g3,srcArc))) optTyp=O; //dny atk thr shd i3=j3=k3=N; //prp for Rdy chks if(hav(optSrc,"","wpn")) for(h3=LasRdy+I;h3<=LasRdy+F7;h3++) //_7s of hav() if((l3=pri(Z7[h3])-Math.max(itmCat(itmPri=B8),B8))>=k3 && B8=itmGrp?wrd(pri(j3),ItmTyp):"x")); //`test ln if(optTyp==Hrl && E7<2 && (i3>2){ /*`1h [=Sling] msl w oth wpn (poss to reload nxt trn) - ?incl ofh /shd - ?opt for Dfd w msl wpn for(f3=I;f3<=E7;f3++) //_7s of hav() if(pri(Z7[f3])-Math.max(itmCat(B8),B8)>I && B82d itm in subcat, N){ optTyp=Rdy; optTgt=optSrc; //=tak of slf optItm=j3; //`nb all mac Rdy opts her !=mslCat } //if(j3>N } //if(optTyp>2){ f3=optTyp>O && optItm>=itmGrp?optItm:(isArm(optSrc)?B7:O); g3=f3>=itmGrp?pri(f3)-Math.max(itmCat(h3=B8),B8):O; //B8 of pri(), itmCat() isa3=f3=g3 && g3<(optTyp==Sk1?2:C)){ //wee atk itm `?g3<2 optTyp=Rdy; optTgt=optSrc; //tak of slf optItm=j3; } //if(isa3 && isa3=optTyp!=Rdy || pri(optItm)-Math.max(itmCat(B8),B8)<2; //wee own itm if(isa3 && locDuo(itmGrp,ItmOwn,cnvCoo(f3=val(optSrc,FigCoo)),ItmCla,"wpn")>O && pri(g3=elmNum) tak of ngh if(optTyp!=Rdy && freHnd(optSrc) && (f3=Math.max(C8,D8))>=itmGrp //_8s of freHnd() && (B8&I)>O && wrd(pri(f3),ItmRdy).equals("1hand")){ optTyp=Rdy; optTgt=optSrc; //chg hnd optItm=f3; } //if(optTyp!=Rdy && freHnd( } //if((optTyp!=Rdy && d3< newSid=sid(optSrc); //ini for Foe arg chk f3=O; while(locFig(are$,Foe+Set)!=f3 && (newFig=D4)>O && (f3>O || (f3=D4)>O) //D4 of locFig() && !canHit(g3=newFig,optSrc)); //loo in cdn h3=N5; //_5s of canHit() if(optTyp>I && f3>O && isA5 //threatened // && (modDx(optSrc,I)<8 || false) //`?=no atk/ rdy cap (viz abv) && ((isb3=!isEgd(optSrc) && canDdg(optSrc,g3)) //out of no-Ddg zon (`?of newFig) || (isArm(optSrc) || C7>O || has(optSrc,"^"+ItmTyp,"Shield") && (h3==Sk1 || h3==Jab)) && true)){ //`?=en in Fro optTyp=Dfd; if(!isb3) optItm=B7; //B7 of isArm() or has() optTgt=d3 asgn opt if(optTypO && optTyp!=Rdy && (!isRdy(optItm) || E8!=optSrc)) optItm=O; digIn(optSrc,FigAct,FigDo,optTyp); valIn(optSrc,FigObj,optTgt); valIn(optSrc,FigItm,optItm); y3++; case 7: isa3=optTyp==a3 && optTgt==b3 && optItm==c3; //isa3 use in pikAct() optDic=isa3?(optTyp==Wch?I:(optTyp==Mov || optTyp==Dfd?(isDib?OptDib:X) :Math.min(AvgHit,Math.max(optTyp==Rdy?3:ordDX>>I,MinHit)))):O; //pik #dic if opt unchgd y3++; case 8: y3++; //`if(isa3) //|| true //|| optTyp==Rdy) //`test ln if(isAcq(optSrc)){ txt("121"+(isa3?" #dic= "+(!isDib && (optTyp==Mov || optTyp==Dfd)?"auto":""+optDic) :" at modDX "+modDx(optSrc,I)) //->dibDX if most +(optItm>O?" with "+wrd(pri(optItm),ItmTyp).toLowerCase():"")+'.'); if(!isa3) txt("131 ("+str(B4$)+')'); //B4$ of modDx() eq(xsB,ActOpt$); //nb arcPos() of modDx() uses xsA txt("211"+figNam(optSrc)+" ordDX= "+ordDX+", " +(isa3?"choos":"prepar")+"es to "+wrd(xsB,optTyp)); return; } //if(isAcq(optSrc if(isa3){ //els not acq txt("211 "+figNam(optSrc)+" has chosen an action."); return; } //if(isa3 case 9: x3=O; go(); } //switch(y3 } //macAct mth public void usrAct(){ //rev or exe Usr- ctld fig act: uses newFig,dib_ [as ref] vars of pikAct() if(x3!=UsrAct) y3=I; switch(y3){ case I: x3=UsrAct; //optSrc 0'd eo proAct(): & chkd -> set in mac/usrAct if(optSrc==(a3=newFig)){ //don't req verif of inp, if sam fig aft modDX rev: newFig of pikAct() isa3=true; //flg for no opt chg //txt("126[sam ord]"); //`test ln y3+=X; //pik #dic usrAct(); return; } //if(optSrc== if((optTyp=dig(optSrc=a3,FigAct,FigDo))==O){ digIn(optSrc,FigAct,FigDo,optTyp=dig(optSrc,FigAct,FigPro)); valIn(optSrc,FigObj,optTgt=val(optSrc,FigPrj)); } //if((optTyp= atkSrc=O; //ini for pikAlt() modDX chg chk nxt cas a3$.setLength(O); //ini pikAlt() rtn msg y3++; case 2: if(atkSrc==optSrc && !isa4){ //isa4 of pikAlt() optSrc=O; y3+=11; //rou exi: recalc nxtOrd() fig usrAct(); return; } //if(atkSrc==optSrc && shoObs(optSrc); System.arraycopy(Z3,I,z3,I,c3=B3); //_3s of shoObs() y3++; txt("011"); //txt("136"+dig(locElm(figGrp,FigNam,"Ardir"),FigSta,FigSeq)+'-' //+dig(locElm(figGrp,FigNam,"B11"),FigSta,FigSeq)+'-' //+dig(locElm(figGrp,FigNam,"B12"),FigSta,FigSeq)); //`test ln eq(xsB,ActOpt$); //arcPos() of modDx() use xsA for(b3=I;b3O)?" [ "+str(a3$).substring(O,Math.min(a3$.length(),9))+" ] P)":"")); txt("136"+(isb3?"":"P)rofile")); txt("211"+figNam(optSrc)+" opt [viz "+wrd(xsB,optTyp)+" tgt: " +(val(optSrc,FigObj)>O?figNam(C9):(C9 case 2: chk a3$.setLength(O); //clr rtn msg [eg of pikAlt()] if((b3=(isa3=inpVal==O)?optTyp:inpVal)Use){ y3--; if(key3$=='A' || key3$=='a'){ atkSrc=optSrc; pikAlt(); } //if(key3$=='A' || else if(key3$=='P' || key3$=='p') chkPfl(optSrc,O); else usrAct(); return; } //if((b3= eq(b3$,wrd(xsB,b3)); d3=b3==Mov?I:(b3==Sk1 || b3==Dfd?2:(b3==Rdy || b3==Hrl?4 :(b3==Wch || b3==Jab?6:8))); if(isb3=(e3=dig(optSrc,FigMov,FigMp))>(dig(optSrc,FigMov,FigMma)+d3-I)/d3 && d3>I) eq(a3$,"can't "+str(b3$)+" after use of "+e3+" MP"); if(!isb3 && (isb3=b3>Dfd && b3O && G7==Cvr)) //G7 of shdArc() eq(a3$,"can't "+str(b3$)+" through Covering shield"); if(isb3){ y3--; rpt("211[ "+str(a3$)+" ]"); return; } //if(isb3 if(!isa3) digIn(optSrc,FigAct,FigDo,optTyp=b3); isb3=val(optSrc,FigObj)Rdy && optTyp(dig(optSrc,FigMov,FigMma)+5)/6 || !canSee(optSrc,optTgt))) //prv to Aim valIn(optSrc,FigObj,optTgt=optSrc); if(isa3 || optTyp==Mov || optTyp==Dfd || optTyp==Rdy && optTgt==optSrc || optTypO) && isa3; if(inpVal>I){ /*`validate coo tgt or cyc to case: 4 y3--; usrAct(); return; //*/ valIn(optSrc,FigObj,optTgt=-inpVal); //no prefix (`?or '+') if fig tgt, vs coo isb3=false; } //if(inpVal>I y3++; if(isb3){ atkSrc=optSrc; pikFig(); return; } //if(isb3 case 6: if(isb3) valIn(optSrc,FigObj,optTgt=b5); //b5 of pikFig() d3=optTyp==Wch || optTyp==Dfd && optTgt!=optSrc?I:O; if(isb3=d3>O || optTyp>Dfd && optTypO?canSee(optSrc,optTgt):canHit(optSrc,optTgt)); tgtCoo=d3>O?(G5>O?G5:Z5[I]):H5; //_5s of canSee/canHit() srcPos=arcPos(optSrc,tgtCoo); srcArc=G6; //G6 of arcPos() if(isb3=isc3) eq(a3$,"can't "+str(b3$)+" at hex "+(tgtCooO && (G7==Cvr //_7s of shdArc() && srcPos==Fro || !isCmn(3,srcArc) && isCmn(C7,srcArc))) eq(a3$,"can't "+str(b3$)+" through shield side"); } //if(isb3= if(isb3){ y3-=4; txt("011"); //txt("121dst="+L5+"; pos="+srcPos+"; arc="+srcArc); //`test ln rpt("211 [ "+str(a3$)+" ]"); return; } //if(isb3 y3++; case 7: optItm=val(optSrc,FigItm); //dfa =prev itm cho, asn by proAct(), or non cho //`smart chk skip if no alt itm per sel opt/tgt -> [alt: isb3=true; case 9:] case X: //`&& val(optSrc,FigItm)>O && (optTyp!=Sk1 || has(optSrc,"","wpn") && E7<2) //E7 of has() isb3=optTyp>Dfd //opts reqg itm - Dfd as Ddg req no itm || optTyp==Dfd && isEgd(optSrc); //`?cod for Dfd (eg vs Jab) wo itm -> inval in hitVs() if(isc3=!(isRdy(optItm) && E8==optSrc)) //E8 of isRdy() optItm=O; //`vs =0, validate optTyp [Sk1, Jab, Fr1] by FigItm [wpn]; or use canHit(,optTgt) if(isb3 && !isc3){ //`Onfall rev {} d3=isArm(optSrc)?C7:O; //_7s of isArm() if(isb3=d3>I || d3==I && optItm!=B7) optItm=B7; } //if(isb3 && y3++; case 8: y3++; inpVal=O; if(isb3){ //`? || !isa3 (Ok opt not pikd) txt("011"); txt("111ref item = "+(optItmO) && optItmO && !isRdy(optItm=itmElm); //itmElm of chkPfl() itmPri=optItm>O?pri(optItm):O; isb3=optItm>O && !(itmCat(itmPri)==wpnItm || B8==shdCat && optTyp==Dfd) || isb3; //B8 of itmCat() `Onfall rev eq(a3$,optItm>O?wrd(itmPri,ItmRng):""); d3=isMsl(itmPri) && optTyp==Fr1 && val(optItm,ItmOpn)N?HrlRng:I)); //isA8 of isMsl() f3=canSee(optSrc,val(optSrc,FigObj))?I5:C; //I5 of canSee() isb3|=e3>I && e3Dfd || optTyp==Rdy)){ //recalc nxtOrd() pre #dic, or no #dice dcl req txt("011"); //txt("121FigAct: "+wrd(optSrc,FigAct)); //`test ln //txt("131mDX "+modDx(optSrc,I)+", mST "+modST+", J5= "+J5+", C4= "+(C4-figGrp)+", ordDX "+ordDX); //`test ln //txt("136"+dig(locElm(figGrp,FigNam,"Ardir"),FigSta,FigSeq)+'-' //+dig(locElm(figGrp,FigNam,"B11"),FigSta,FigSeq)+'-' //+dig(locElm(figGrp,FigNam,"B12"),FigSta,FigSeq)); //`test ln if(dibFig>O && canSee(optSrc,dibFig)){ eq(b3$,dibDic>I?"dice":"die"); txt("121 "+figNam(dibFig)+" of modDX "+dibDX+" chose "+dibDic+' '+str(b3$)+'.'); if(ordDX>dibDX) txt("131 But you now have priority for "+dibDic+' '+str(b3$)+" with modDX "+ordDX); } //if(dibFig>O && txt("211"+figNam(optSrc)+" #dice: "); return; } //if(isa3 && case 12: if(isa3) optDic=isb3?(inpVal>=MinHit && inpVal0) doSpl(); else if(b3==spiItm) doSpi(); else if(b3==potItm) doPot(); else if(b3==dvcItm) doDvc(); else{ x3=0; //rout rtn go(); } //else(b3==dvcItm //*/ isa3=itmCat(itmPri=pri(atkItm))==wpnItm; //`?&& B8!=amoCat if(isa3) doWpn(); } //switch(y3 } //doItm mth public void doWpn(){ //call for any atkCmp==Cbt atk - uses: itmPri, all atk_ vars; no _2s passed if(x3!=DoWpn) y3=I; switch(y3){ case I: x3=DoWpn; a3=atkSrc; //`?nec b3=B8; //subcat: _8s of itmCat() of doItm() eq(a3$,wrd(a3,FigNam)); isa3=modIq(a3)>WpnIQ && xsIQ>O; //xsIQ of modIq() isa3=dig(a3,FigHit,FigIUx)<(wrd(a3,FigTyp).startsWith("Half")?2:I); //`Onfall ver isb3=dig(a3,FigCtl,FigPla)==Usr; y3++; case 2: txt("011"); atkAmo=atkTyp==Fr1 && val(atkItm,ItmOpn)>=itmGrp?C9:O; //C9 of val() if(atkTyp==Fr1 && atkAmoI && rdm(6)<6?I:O)O || atkTyp==Hrl){ givItm(-tgtCoo,atkAmo>O?atkAmo:atkItm,I); if(atkAmo>O) valIn(atkItm,ItmOpn,O); } //if(atkAmo>O || y3++; case 7: x3=0; //rout rtn go(); } //switch(y3 } //doWpn mth public void doSpl(){ if(x3!=DoSpl) y3=I; switch(y3){ case I: x3=DoSpl; y3++; case 2: x3=0; //rout rtn go(); } //switch(y3 } //doSpl mth //var lvl 4 routines public void pikAlt(){ //uses atkSrc, d3: `?lvl 4 for itmElm sel & valid fro usrAct() pre rdy/useItm() if(x4!=PikAlt) y4=I; switch(y4){ case I: x4=PikAlt; a4=atkSrc; //`?usr- ctl figs only eq(a3$,"no alts"); //dfa msg bak to usrMov/Act() b4=O; //MP cost acm g4=modMa(a4); h4=C3O?pri(atkItm):O; //*/ y4++; case 2: txt("011"); y4++; e4=val(pri(a4),FigHiP)-I; //nml pst if(isb4=(d4=dig(a4,FigOri,FigPst))O)){ a3$.setLength(O); txt("011"); if(E7>I){ //_7s of has() d4=3*(val(Z7[2],ItmOpn)+I); txt("131"+wrd(Z7[2],ItmCod) +' '+wrd(Z7[2],ItmLoc).substring(O,2) +' '+"lowordcov".substring(d4,d4+3) +" 5) drop 6) lower 7) order 8) cover: "); } //if(E7>I d4=3*(val(Z7[I],ItmOpn)+I); txt("121"+wrd(Z7[I],ItmCod) +' '+wrd(Z7[I],ItmLoc).substring(O,2) +' '+"lowordcov".substring(d4,d4+3) +" 1) drop 2) lower 3) order 4) cover: "); txt("2110) end shield chgs - "+figNam(a4)+" MP used= "+(h4+b4)); return; } //if(isb4=has( case 5: if(isb4&=inpVal>O && inpVal<=4*E7){ d4=Z7[inpVal>4?2:I]; e4=inpVal>4?inpVal-4:inpVal; if(e4==I){ //shield dropped isa4&=!wrd(d4,ItmCod).startsWith("Lg"); //modDX chg rtn flg givItm(-val(a4,FigCoo),d4,All); } //if(e4==I else if(e4!=val(d4,ItmOpn)-3 //$ary elm fld cod Lwr,Odr,Cvr && false){ //`Onfall ver valIn(d4,ItmOpn,e4-3); b4=I; //MP+ 1 max } //if(e4!=val(d4,ItmOpn)-3 y4--; pikAlt(); return; } //if(isb4= y4++; case 6: clrFig(a4); //`?sho shd ind chg (ofh lod Lwr) plcFig(a4); if(isb4=!isEgd(a4) && has(a4,"","wpn")){ //reload msl wpn(s) System.arraycopy(Z7,I,z4,I,d4=E7); e4=isMsl(pri(z4[I])) && val(z4[I],ItmOpn)O){ a3$.setLength(O); txt("011"); if(rndCnt<2 && AvgRld>O) txt("121 [ Rd1 auto ]"); rpt("211Reload 0) none 1) "+wrd(pri(z4[I]),ItmTyp) +(d4>I?" 2) "+wrd(pri(z4[2]),ItmTyp):"")); return; } //if(isb4&= case 7: y4++; if(isb4&=inpVal>O && inpVal<=d4){ //pik msl amo e4=z4[inpVal]; chkPfl(a4,2); return; } //if(isb4&= case 8: if(isb4){ if(itmElm>O //itmElm of chkPfl() && wrd(pri(itmElm),ItmTyp).equals(isMsl(pri(e4))?str(A8$):"")){ //_8s of isMsl() f4=D8; //f4=O; //`test ln if(rndCnt<2 || true || AvgRld>O //`Onfall ver || true && seq(dic(3,"try load")).length()>O && B8+val(itmElm,ItmOpn)>=f4){ //B8 of seq() valIn(e4,ItmOpn,itmElm); valIn(itmElm,ItmOpn,O); while(isRdy(itmElm) && isB8) //isB8 of isRdy() makRdy(a4,itmElm); //unrdy lod amo (prv if in hnd) } //if(rndCnt<2 || else{ valIn(e4,ItmOpn,B8); addTo(itmElm,ItmOpn,B8); } //else(rndCnt<2 || } //if(itmElm>O && y4-=2; if(itmElm>O) rpt("211"+wrd(pri(e4),ItmTyp) +(val(itmElm,ItmOpn)>O?" reload req "+f4+"; now "+D7+'.' //D7 of addTo() :" loaded.")+" [ hit a key ]"); else pikAlt(); return; } //if(isb4 y4++; case 9: y4++; isb4=freHnd(a4); isc4=isA8; //_8s of freHnd() isb4=x3==UsrAct && (d4=Math.max(C8,D8))>O && (isb4 && itmCat((itmPri=pri(d4)))==wpnItm && (B8==unsCat || B8==hilCat || B8==hafCat || B8==polCat) //B8 of ItmCat() && wrd(itmPri,ItmRdy).equals("1hand") || isc4); //`?|| wrd(d4,ItmTyp).equals("Arrow") if(isb4){ //opt to tog 2hd grip a3$.setLength(O); txt("011"); txt("211Double "+wrd(itmPri,ItmTyp)+" grip (atk DX-1)? 0) no 1) yes: "); return; } //if(isb4 case X: isb4&=inpVal==(isc4?O:I); if(isb4) //tog 1hd/ 2hd grip wrdIn(d4,ItmLoc,wrd(d4,ItmLoc) .substring(O,C9+inpVal-I)+(isc4?"":"s")); //C9 of wrd() isa4&=!isb4; y4++; case 11: y4++; if(b4>O){ //prv for opts w MP cost if((c4=dig(a4,FigMov,FigHlt)) beg mov if not yet digIn(a4,FigMov,FigMma,g4); valIn(a4,FigOgn,val(a4,FigCoo)); //`?or, set in begRnd() digIn(a4,FigMov,FigEgd,isEgd(a4) || D4>O?I:O); //D4 of isEgd() if(c4O){ makRdy(atkSrc,elmNum); //swap w 2dh: elmNum of locDuo() makRdy(atkSrc,B7); //put awy fro 2dh: B7 of makRdy() } //if(isa4 && if(isa4 && locDuo(itmGrp,ItmOwn,str(a4$),ItmLoc,"1thand")>O) makRdy(atkSrc,elmNum); //swap w 2dh: elmNum of locDuo() b4=locDuo(itmGrp,ItmOwn,str(a4$),ItmLoc,"2dhand"); //flg for itm in 2dh isb4=b4==itmElm || wrd(pri(itmElm),ItmRdy).equals("2hand"); if(isa4 && b4>O && (isb4 || wrd(pri(b4),ItmRdy).equals("2hand"))){ //|| els makRdy(,itmElm) mov 2h itm to 1th makRdy(atkSrc,b4); //put awy fro 2dh b4=O; } //if(isa4 && b4>O && if(isa4) if(a4==atkSrc) makRdy(atkSrc,itmElm); //rdy to 1th if 1hd itm, or 2dh if 2hd itm else givItm(atkSrc,itmElm,All); //cal makRdy() if(isa4 && !isb4 && b4O?B7:D7); //_7s of hav() if(B7==itmElm && hav(atkSrc,"","wpn")) //B7 of makRdy() if((F7>O?B7:D7)==itmElm) //"&shd"- typ wpn: _7s of hav() wrdIn(itmElm,ItmLoc,"1thand"); //rtns to 1th if no oth else makRdy(atkSrc,B7); //put unrdy wpn into 1th } //if(isa4 && !isb4 && if(isa4 && -val(atkSrc,FigObj)==val(atkSrc,FigCoo)) digIn(atkSrc,FigOri,FigPst,Crg); y4+=7; txt("011"); eq(b4$,(isc4=locDuo(itmGrp,ItmOwn,str(a4$),ItmLoc,"1thand")O) b4$.append((isc4?"":", ")+"2nd hand: "+wrd(pri(elmNum),ItmTyp)); txt("121"+b4$); eq(b4$,isa4?figNam(atkSrc)+" readies "+wrd(pri(itmElm),ItmTyp) +(a4!=atkSrc?" from "+figNam(atkSrc)+'.':".") :"Can't Ready item now: aborted."); rpt("211"+b4$); return; } //if(dig(atkSrc,FigCtl,FigPla)==Mac y4++; case 3: y4++; txt("011"); txt("121 Bsp) quit"); txt("211Take from 0) self 1) neighbor 2) pick up 3) drop: "); return; case 4: if(key4$=='\b'){ y4+=5; rdyItm(); return; } //if(key4$=='\b' atkTgt=(a4=inpVal)==I?O:(a4==2?-val(atkSrc,FigCoo):atkSrc); //atkTgt=atkSrc; //`test ln y4++; isa4=a4==I; //flg to tak itm fro oth fig if(isa4){ pikFig(); return; } //if(isa4 case 5: if(isa4) atkTgt=b5; //b5 of pikFig() if(atkTgt==atkSrc && has(atkSrc,"Unarm","wpn")) wrdIn(B7,ItmLoc,wrd(pri(B7),ItmSrc)); //aut unrdy: B7 of has() y4++; case 6: y4++; chkPfl(atkTgt,a4==O?-I:2); return; case 7: //`?key7$=='\b' is only exit from chkPfl(,-I): key7$,itmElm of chkPfl() if(a4>O && itmElm>=itmGrp) givItm(a4==3?-val(atkSrc,FigCoo):atkSrc,itmElm,All); //cal makRdy() y4-=a4==O?4:I; a4=O; rdyItm(); return; //`? y4++; case 8: y4++; /*` //`? c4=isRdy(b4=itmElm)?I:O; txt("011"); if(c4>O){ eq(xsA,UnRdy$); for(d4=I;d4<9;d4++) txt("1"+(X*(d4/7+2)+(d4-1)%6+1)+""+d4+": "+wrd(xsA,d4)); } //if(c4>O txt("211readying "+wrd(pri(itmElm),ItmTyp)+" (hit a key)"); return; //*/ case 9: x4=O; go(); } //switch(y4 } //rdyItm mth public void bakOff(){ //uses: movSrc= sbj/ acting fig, movTgt= obj/ opp fig, //_3s of usr/macMov(), incl z3[]= Z3[] poss tgt lis of movQlf(), //movTyp= Force Retreat, (Charge In, Shield Rush compos#), (Push Back, Attempt HTH compos#) if(x4!=BakOff) y4=I; switch(y4){ case I: x4=BakOff; isa4=dig(movSrc,FigCtl,FigPla)==Usr; a4=movSrc; //ini chooser b4=movTgt; //ini mover eq(b4$,""); //`Onfall rev //if(movTyp==Rtr){ isa4=false; y4+=13; rpt("211Quitting bakOff()."); return; } //`test ln y4++; //txt("011"); rpt("211bakOff(): movTyp="+movTyp); return; //`test ln case 2: if(movTyp==Pus || movTyp==Hth){ y4+=4; //jmp to tgt SV, allows vol bakOff(); return; } //if(movTyp==Pus || y4++; if(isa4){ txt("011"); eq(xsA,BakTyp$); txt("211"+figNam(a4)+' '+wrd(xsA,movTyp%X) +" on "+figNam(b4)+"? 0) no 1) yes: "); return; } //if(isa4 case 3: if((isa4?inpVal:I)!=I){ //`?Mac auto yes [or chk 2nd cho] y4+=(movTyp/=X)>O?N:11; //recyc/ rou exi if(movTyp==O) isa4=false; //rtn val //if(movTyp==O) rpt("211Quitting bakOff()."); else //`test ln bakOff(); return; } //if((isa4? if((movTyp%=X)!=Rus || d3<2){ //_3s of usr/macMov() y4+=3; //jmp to tgt SV, allows vol bakOff(); return; } //if((movTyp%=X)!=Rus || y4++; case 4: y4++; txt("011"); for(c4=I;c4<=d3;c4++) txt("12"+c4+""+c4+") "+wrd(z3[c4],FigCoo)); txt("211Choose Shield Rush target's hex: "); return; case 5: if((c4=inpVal)d3){ y4--; //redo bakOff(); return; } //if((c4=inpVal b4=movTgt=z3[c4]; y4++; case 6: txt("011"); eq(xsA,BakTyp$); txt("111"+figNam(movSrc)+' '+wrd(xsA,movTyp)); isc4=false; //dfa ini flg for vol mov c4=N; //ini Mac ai mov dir SidCyc$ idx mod (for case 10:) y4++; if((isa4=(d4=dig(movTgt,FigCtl,FigPla))==Usr) && movTyp!=Rtr){ txt("221"+(figNam(movTgt))+(movTyp==Hth?" in HTH":" to move") +" voluntarily? "+(movTyp==Hth && movCnt>3?"[ auto eject ] ":"") +"0) no 1) yes: "); return; } //if((isa4= case 7: if((e4=isa4 && movTyp!=Rtr?inpVal:O)==I || movTyp==Rtr){ //`?Mac auto SV isa4=false; y4+=2; //skip SV bakOff(); return; } //if((e4=isa4 && tgtPos=arcPos(movTgt,f4=val(movSrc,FigCoo)); if(tgtPos==Sam) //bak trk (hex ety) sid tgtPos=arcPos(movTgt,wayHex(f4,7-dig(movSrc,FigOri,FigFac))); g4=tgtPos==Fro?O:tgtPos==Sde?2:4; h4=movTyp-I<HthRng //aut eje || dig(movSrc,FigMov,FigMp)>dig(movSrc,FigMov,FigMma)+I>>I)) eq(a4$,(isa4=true)?" [ over moved ]":""); //dmy alt isc4=true; //flg for invol mov y4++; txt("011"); txt("211SV of "+d4+" vs "+f4+(isa4?" succeeds.":" fails"+str(a4$)+'.')); return; case 9: if(!isa4 && movTyp==Hth || false){ //`|| no (evict) mov req y4+=5; //rou exi if(movTyp==Hth){ //`calc hth pst lvl & reset figs' pst if nec /*`V1 if(isEgd(movTgt) && isB4 && isBy(movSrc,Ega)) //_4s of isEgd() for(e4=I;e4<=C5;e4++) //_5s of isBy() if(Z5[e4]Rtr && (e4==I || isa4)) a4=movTgt; //rev chooser if(movTyp>Rtr && isa4) //`? if(!(isa4=movTyp==Pus || movTyp!=Hth && (e4==I || !isa4)) && movTyp>Rtr) //no tgt mov b4=movSrc; //rev mover eq(xsA,BakTyp$); eq(a4$,figNam(b4)+' '+wrd(xsA,movTyp)); h4=O; //hex blocked msg flg y4++; case X: y4++; txt("011"); if(isb4=dig(a4,FigCtl,FigPla)==Usr){ txt("211"+(h4>O?"[no dir "+h4+"] ":"")+str(a4$)+" move dir (0=cancel): "); return; } //if(isb4= e4=(7-dig(b4,FigOri,FigFac)); // `Mac eval req h4=c4>4?O:dig(SidCyc$,SidCyc$.indexOf(""+e4,I)+c4++); //circ try: c4=-1..4 //h4=2; //`test ln txt("211"+str(a4$)+" move "+(h4==O?"aborted.":"dir "+h4+" try.")); return; case 11: if(isb4) h4=inpVal; toCoo=wayHex(tgtCoo=val(b4,FigCoo),h4); e4=arcPos(b4,toCoo); f4=dig(b4,FigMov,FigDir)>N && B9!=PivDir-I && e4>Fro?7-h4:h4; //B9 of dog() if(h4>O && !toOk(b4,toCoo,f4)){ y4--; bakOff(); return; } //if(h4>O && y4++; c4=movSrc; //sto src,tgt d4=movTgt; if(h4>O){ movSrc=b4; movFac=f4; tryMov(); return; } //if(h4>O case 12: isa4=isa5 && h4>O && b4==d4; //isa4 rtn val set: isa5 of tryMov() isb4=isa5 && h4>O && movTyp>Stp && movTypO){ rpt("211"+str(a4$)+" not made: "+str(a5$)+'.'); return; } //if(!isa5 && /*`opt unused in `Onfall ver if(isa5 && h4>O && isc4 && movTyp>Rtr){ addItm(b4,locItm(fxItm,"Unbal","fx")); valIn(elmNum,ItmOpn,rndCnt); //elmNum of addItm() } //if(isa5 && //*/ g4=b4==c4?d4:c4; if(isb4 && dig(g4,FigCtl,FigPla)==Usr){ rpt("211Follow up? 0) no 1) yes: "); return; } //if(isb4 && if(isb4){ //Mac eval f4=g4==c4?d4:c4; h4=isBy(g4,f4)?O:I; //`req adn ai //h4=I; //`test ln rpt("211"+figNam(g4)+(h4Rtr && movTyp!=Pus) digIn(movSrc,FigMov,FigHlt,Hlt); //trm mov if(movTyp==Rtr && dig(movTgt,FigAct,FigOn)==Aim){ //zro any Aim flg `Onfall rev {} digIn(movTgt,FigAct,FigOn,O); eq(b4$,figNam(movTgt)+"\'s Aiming aborted"); } //if(movTyp==Rtr y4++; //`Onfall rev {} if(b4$.length()>O){ //`Onfall rev {} rpt("211"+str(b4$)+'.'); return; } //if(b4$.length()>O case 15: x4=O; go(); } //switch(y4 } //bakOff mth rtns: a4 (chooser fig), b4 (mover fig), isa4 (did orig movTgt fig mov?) //var lvl 5 routines public void pikFig(){ //uses: atkSrc if(x5!=PikFig) y5=I; switch(y5){ case I: x5=PikFig; chkObs(a5=newFig=atkSrc,O); while((b5=locFig(are$,Any+Out))>O && a5!=(newFig=b5) && !isAcq(b5)); //`?&& !canSee(a5,b5) y5++; case 2: txt("011"); y5++; if(a5==b5){ txt("211No targets observable (hit a key). "); return; } //if(a5==b5 case 3: if(false && a5==b5){ //`opt lns y5+=2; pikFig(); return; } //if(a5==b5 mrkHex(c5=val(b5,FigCoo),hues[HexCsr]); shoFig(b5); y5++; txt("211"+figNam(b5)+" @"+c5+" = 0) tgt other) nxt: "); return; case 4: clrHex(c5); //`?mrkHex(c5,hues[MapFgd]); shoFrc(); if(inpVal!=O){ //` do newFig=b5=locFig(are$,Any+Out); //` while(a5==(newFig=b5) || !canSee(a5,b5)); y5--; pikFig(); return; } //if(inpVal!=O y5++; case 5: x5=O; go(); } //switch(y5 } //pikFig mth rtns: b5 (pikd fig) public void chkPfl(int elm,int vlu){ //elm=elm# of figGrp: pfl fig to rcv/ hav itms //<0: sho hex '@'# contents [multihex fig may only pick up itms in its "head" hex], //vlu= -3, (`?-2,) -1: lis as fol, but cyc on cho //0: sho all fig itms, 1: sho fig matl itms for rdy, //2: sho fig wpn/ magi itms for use, 3: sho stock itms if(x5!=ChkPfl) y5=I; switch(y5){ case I: x5=ChkPfl; a5=elm; b5=Math.abs(m5=vlu); c5=vuHt+(vuHt>>3)>>I; //stat/ map dpy ht: aprx= vuHt*9/16 e5=(vuHt-c5)/typHt; //#itm dpy lns //e5=2; //`test ln f5=vuWd/3; h5=-(vuHt+vuLnY)/typHt; //stats top -lin i5=-e5; //itms top -lin l5=hlfHexSid; /*`opt bdr Graphics g=getGraphics(); g.setColor(hue(MapBkg)); g.fillRect(f5,O,vuWd-f5,c5); g.setColor(hue(BdBdr)); g.drawLine(O,c5,vuWd,c5); g.drawLine(f5,O,f5,c5); //*/ dimVu(mapColWd,mapRowHt,c5+vuLnY,vuWd-f5); //+vuLnY due to txt() mod for inv lis upshift mapTop=vuHt-e5*typHt-mapHt>>I; //mapWd,Ht of dimVu() mapLft=f5+(vuWd-f5-mapWd>>I); y5++; case 2: shoBd(); //` g5=hues[BdBdr]; //` hues[BdBdr]=hues[MapBkg]; shoMap(); //` hues[BdBdr]=g5; shoFrc(); //`?shoObs(a5) d5=(isa5=b5==3)?wpnItm:itmGrp; z5[I]=g5=O; //ini z5[I] for sam pg chk, g5 for loo ctl (ie< d5) eq(a5$,cut(a5O //,I,= ItmTyp/Own of Poo/Grp && (!isa5 || d5C || || b5==I && (isRdy(d5) && !str(A8$).equals("mem") || !isA8 && isB8) //_8s of isRdy() || b5==2 && itmCat(pri(d5))!=tlnItm && A8!=fxItm //A8 of itmCat() || b5==3 && "Unarmed,Cleaver,Defend opt".indexOf(wrd(d5,ItmTyp))=(isa5?fxItm:itmEnd)){ //nxt beg itm plc hld d5=isa5?wpnItm:itmGrp; break; } //if(isb5= } //while(c5<=e5 if(c5>e5){ d5=locElm(z5[c5=e5]+I,I,str(a5$))>O?elmNum:itmEnd; //elmNum of locElm() if(itmElm==z5[I]) //no scn chg: ie '<' at top isb5=d5>(g5=isa5?fxItm:itmEnd); //ie isb5=false } //if(c5>e5 }while(!isb5 && d5=fxItm && isa5) //,I,= ItmTyp/Own of Poo/Grp d5=O; if(d5>O && d5!=g5 && (b5==3 || b5O && isb5=d5==g5; if(d5++==O || isb5 || d5>=(isa5?fxItm:itmEnd)) //nxt beg itm plc hld if(f5==(d5=isa5?wpnItm:itmGrp) || isb5) break; } //while(c5=figGrp) shoFig(a5); txt("0"+dig(h5+I)+"192"); //clr fig dta txt("1"+dig(h5+I)+'1'+(a5-M?"0":"")+(-a5)+": "+a5$:figNam(a5))); if(a5>=figGrp){ isb5=isSee || !isHid || dig(a5,FigCtl,FigPla)==Usr; eq(b5$,wrd(a5,FigRtg).charAt(FigSpc)=='H'?"hero":(A$=='W'?"wizard":"")); txt("1"+dig(h5+2)+'1'+(wrd(a5,FigGen).charAt(FigSex)=='m'?"male":"female") +(b5$.length()O?" e"+B9:"")); txt("1"+dig(h5+5)+"1 IQ "+(isb5?""+(g5=dig(a5,FigChr,FigIQ)) +(g5==modIQ?"":" ("+(modIQ-g5)+')'):"unk") +((g5=xsIQ/X)>O?" u"+g5:" ") +((k5=xsIQ%X)>O?(g5>O?"/":"")+"f"+k5:"")); eq(xsA,Pst$); eq(b5$,wrd(xsA,dig(a5,FigOri,FigPst))+"\'g"); //`?plc aft DX 12 (10) stg/ crg/ lyg txt("1"+dig(h5+6)+"1 MA "+(isb5?""+modMa(a5):"unk")+" "+b5$); //`?MA 10 (8) txt("1"+dig(h5+7)+"1 ep "+wrd(a5,FigEp)); } //if(a5>=figGrp //txt("1 1"+a5$); for(g5=+'$';g5<=+'0';g5++) txt("1"+((char)g5)+"1FyFyFyFy"); //`test ln //nthDiv(z1$[a5],FigNam); txt("1*1"+z1$[a5].toString().substring(O,begDiv)); txt("1+1"+z1$[a5]).toString().substring(begDiv)); //`test ln //txt("1*1"+z1$[sidPoo]); //`test ln txt("1"+dig(i5)+"1 " +"looking readyingpicking taking ".substring(8*b5,8*b5+8)); txt("0"+dig(i5+I)+'1'); //clr itm list for(g5=I;g5<=c5;g5++){ //dpy up to cur scn/pg of itms in inv are k5=pri(j5=z5[g5]); //k5=0 for b5=3 switch(b5){ case O: eq(b5$,z1$[j5].substring(nthDiv(z1$[j5],ItmCod))); //skips ItmOwn fld break; case I: eq(b5$,wrd(k5,ItmTyp).substring(O,Math.min(C9,X)) //C9 of wrd() +(isMsl(k5)?" ("+(val(j5,ItmOpn)>=itmGrp?'+':'-')+')':"")+Div$ +(wrd(j5,ItmCla).charAt(O)!='=' && val(j5,ItmBon)>O ?"+"+C9:wrd(j5,ItmBon)) //C9 of val() +Div$+(isRdy(j5) && isB8?"*":"") //vu flg if rdy +(isA8 && (wrd(k5,ItmRdy).equals("2hand") //isA8 of isRdy() || wrd(j5,ItmLoc).endsWith("hands"))?"hands" //ie "1t/2dhands" :wrd(j5,ItmLoc)) +Div$+wrd(j5,ItmId)); //+Div$+wrd(j5,ItmCnd) vs `Onfall ver break; case 2: eq(b5$,wrd(k5,ItmTyp).substring(O,Math.min(C9,X)) //C9 of wrd() +(isMsl(k5)?" ("+(val(j5,ItmOpn)>=itmGrp?'+':'-')+')':"")+Div$ +(wrd(j5,ItmCla).charAt(O)!='=' && val(j5,ItmBon)>O ?"+"+C9:wrd(j5,ItmBon)) //C9 of val() +Div$+(k5>=mscItm && k5O?""+Div$+"ST "+C9+(C9N?"offhand":wrd(j5,ItmRdy)) +Div$+insStr(wrd(j5,ItmFnc).substring(O,Math.min(C9,9)),2," "):"") //C9 of wrd() +("shd,amr".indexOf(wrd(j5,ItmCla))>N?"" +Div$+"DX-"+dig(j5,ItmRng,I)+" MA-"+dig(j5,ItmRng,3) +Div$+"Pr: "+dig(j5,ItmFnc,O)+" Rt: "+dig(j5,ItmFnc,I)+" Bl: "+Math.abs(dig(j5,ItmFnc,2)):"")); } //switch(b5 a$=dig(i5+g5); if(isa5){ eq(xsB,b5$); txt("1"+a$+"1 "+wrd(xsB,I)); txt("1"+a$+'3'+wrd(xsB,2)); //`alt: txt("1"+a$+"5"+wrd(xsB,3)); txt("1"+a$+"4 "+wrd(xsB,3)); } //if(isa5 else txt("1"+a$+"1 "+b5$); } //for(g5=I; txt("011"); txt("111"+"chkrdyuseacq".substring(3*b5,3*b5+3) +"- Bsp: quit, Ent: "+(b5==O?"null":"pick") //`?rdy, take, drop: vs pick //` +" oth: scan (<: up)"); +", =/-: view, oth: scan (<: up)"); //`test ln key7$='?'; //ini for nxt cas y5++; case 5: a$="<,8".indexOf(key7$)>N?'<':key7$; //key7$ of keyIn() [of key Listener] of txt("2"+..) inp if(a$!='\b' && a$!='\n'){ if(a$!='?'){ txt("021"); //clr any msg if(a$=='=' || a$=='-' || (f5+=a$=='<'?N:I)c5){ if(a$=='=' && (isAre(newFig=a5) || true) //`?dny hex typ/ oth are figs && locFig(are$,Any+Out)!=a5) //dfa of ,Any+Out) eq(a5$,wrd(a5=newFig=D4,FigNam)); //D4 of locFig() `?=newFig nec if(a$=='-' && ++b5>3) b5=O; if(f5c5 && c5>O?2:3; //`?a$!='=' && a$!='-' && ( if no if(sht cir) use abv chkPfl(O,O); return; } //if(a$=='=' || } //if(a$!='?' txt("2"+dig(i5+f5)+"1>"); //(mov itm ptr pre) inp return; //rcl this case } //if(a$!='\b' && if(m5=figGrp?a5:atkSrc,z5[f5]); //`Onfall ver if just chkg hex, set atkSrc=-srcCoo //`dpl: if(wrd(B7,ItmCla).substring(I).equals("shd")) shoFig(a5); //B7 of makRdy() y5--; } //if(b5==I if(b5==3){ //eqp itm -> rcl this cas addItm(-val(a5,FigCoo),z5[f5]); //instance chosen poo typ to coo holder if(Math.max(itmCat(B7),B8)==amoCat) //B7,elmNum of addItm(); B8 of itmCat() //`alt: if(AmoCod$.indexOf(wrd(g5=elmNum,ItmCod))>N) addTo(elmNum,ItmBon,AmoLod); if(takItm(a5,g5=elmNum)){ givItm(a5,g5,All); if(g5!=elmNum) //elmNum of givItm() eq(g5,Fre$); //rmv loose coo itm (`wo clr'g all coo) txt("121OK: "+figNam(a5) +" takes "+wrd(z5[f5],ItmTyp) //`ind mults "(xn)" usg takItm() dta +" "+wrd(A9,ItmCla)); //A9 of wrd(z5[f5],) } //if(takItm(a5,g5 else{ eq(g5,Fre$); //rmv loose coo itm (`wo clr'g coo) txt("121"+A6$); //A6$= err msg of takItm() } //else(takItm(a5,g5 } //if(b5==3 key7$='?'; //itm ptr unmvd (for this cas rcl) chkPfl(O,O); return; } //if(m5c5 || m5>I; //mapWd,Ht of dimVu() mapLft=vuWd-mapWd>>I; shoBd(); shoMap(); shoFrc(); x5=O; go(); } //switch(y5 } //chkPfl mth public void tryMov(){ //uses: movSrc,Fac,Typ; at,toCoo if(x5!=TryMov) y5=I; switch(y5){ case I: x5=TryMov; a5$.setLength(O); h5=arcPos(movSrc,toCoo); i5=h5==Sam?O:G6; //G6 of arcPos() j5=O; //adn MP (>1) y5++; //eq(xsA,"Stp,Rtr,Chg,Rus,Pus,Hth,DHh,Dis,Piv"); //`test ln //rpt("222try "+figNam(movSrc)+" typ "+wrd(xsA,movTyp%X+I)+" to "+toCoo // +" fac "+movFac+" dir "+dig(movSrc,FigMov,FigDir)); return; //`test ln case 2: //chk dest hex(es) if(!(isa5=toOk(movSrc,toCoo,movFac) //mov mad rtn flg || isB5 && (movTyp%X==Pus || movTyp%X==Hth))) //_5s of toOk() eq(a5$,(!isB5?"No":"Blocked")+" To hex."); d5=O; //#toCoo(s) occs `w pst> Lyg if(isa5){ //tly dest occs for Pus, Hth for(a5=I;a5<=D5;a5++) //=fig's to- hex map if(cooOcc(Z5[a5],Liv)) for(b5=I;b5<=B6;b5++) //_6s of cooOcc() if(Z6[b5]!=movSrc && dig(Z6[b5],FigOri,FigPst)>Lyg){ isb5=true; for(c5=I;c5<=d5;c5++) if(z5[c5]==Z6[b5]) isb5=false; if(isb5) z5[++d5]=Z6[b5]; } //if(Z6[b5]!=movSrc && if(!(isa5=d50 -> occ hex ety -> chk egd -> hth if #opp if(movTyp==Hth && !isa4 || false){ //`|| no mov req y4+=5; //rou exi if(movTyp==Hth){ if(isEgd(movSrc) && isB4) //`calc hth pst lvl & reset figs' pst if nec for(e4=I;e4<=C4;e4++) //_4s of isEgd() digIn(Z4[e4],FigOri,FigPst,Lyg); digIn(movSrc,FigOri,FigPst,c4=isB4?Lyg:dig(movSrc,FigOri,FigPst)); rpt("211"+figNam(movSrc)+" now in HTH at pst "+c4); } //if(movTyp==Hth && else bakOff(); return; } //if(!isa4 && //*/ if(!isa5){ //mov not mad y5+=7; tryMov(); return; } //if(!isa5 y5++; if(d5>O){ //MP pen for en Fro ety try [can be Piv by mul hex fig] mapFig(movSrc); //atCoo map System.arraycopy(Z7,I,Z4,I,e5=E7); //_7s of mapFig() isb5=false; f5=O; //ini max opp fig Siz for(a5=I;a5<=d5;a5++){ mapFig(z5[a5]); for(b5=I;b5<=E7;b5++) //_7s of mapFig() for(c5=I;c5<=D5;c5++) if(Z7[b5]==Z5[c5] && !hav(z5[a5],"Unbal","fx") && arcPos(z5[a5],Z4[c5])==Fro){ isb5=true; f5=Math.max(f5,val(pri(z5[a5]),FigSiz)); } //if(Z7[b5]==Z5[c5] && } //for(a5=I; if(isb5){ txt("011"); j5+=a5=Math.max(O,dig(dic(I,"MP pen"),O) -Math.max(O,(val(pri(movSrc),FigSiz)+99)/C-(f5+99)/C)); rpt("211"+figNam(movSrc)+" adds MP+"+a5+" for Fro ety."); return; } //if(isb5 } //if(d5>O case 3: b5=modDx(movSrc,O); g5=modST; //modST of modDx() isa5=isEgd(movSrc) || D4>O; //_4s of isEgd() System.arraycopy(Z4,I,z5,I,c5=C4); y5++; if(isb5=movTyp==DHh){ d5=O; e5=dig(movSrc,FigOri,FigPst); for(f5=I;f5<=c5;f5++) if(movSrc!=z5[f5] && atCoo==val(z5[f5],FigCoo) && e5==dig(z5[f5],FigOri,FigPst)) d5=Math.max(d5,modSt(z5[f5])*(isFoe(z5[f5],movSrc)?I:O)); //hi opp ST //`alt d5+=modSt(z5[f5])*(isFoe(z5[f5],movSrc)?I:O); //tot opp ST `?I:N d5=Math.max(I,b5+(g5-d5+(g5d5){ //_7s of rol() eq(a5$,"HTH Disengage SV failed"); isa5=false; //mov not made digIn(movSrc,FigMov,FigHlt,Hlt); y5+=5; tryMov(); return; } //if(isb5&= y5++; case 5: if(movTyp!=Rtr){ if(dig(movSrc,FigMov,FigHlt)O && d5=b3) y5++; if(isa3){ c3=4; rol(c3,Sav,a3); return; } //if(isa3 if(!isA4 && (C4 hlt or cyc atCoo=toCoo; y5++; case 7: y5++; if(isb5=movTyp==Piv){ addTo(movSrc,FigMov,FigDir,PivDir); //flg fig as piv'd if(isb5=(d5=dig(movSrc,FigMov,FigMma))d5+I>>I){ txt("011"); eq(b5$,modIq(movSrc)>O && isHid && dig(movSrc,FigCtl,FigPla)==Mac?"?" :""+modIQ); //modIQ of modIq() txt("125(vs modIQ "+str(b5$)+')'); rol(isa5?4:3,modIQ,movSrc); //`?underm=3, overm=5, else=4 return; } //if(isb5=(d5= } //if(isb5=movTyp==Piv case 8: isa5=true; //mov made [`?, no hlt] y5++; //`?rpt() her vs !isa5 if(isb5){ //`SV fail -> add pen fx & msg to rpt() d5=d7>modIQ+2 || !isa7?2:(d7>modIQ?I:O); //_7s of rol() if(d5>O){ addItm(movSrc,locItm(itmPoo,"DxMod","fx")); addTo(elmNum,ItmBon,-d5); //elmNum of addItm() valIn(elmNum,ItmOpn,rndCnt); wrdIn(elmNum,ItmLoc,"pv"); } //if(d5>O eq(a5$,"Pivot DX-"+d5); //usrMov() a3$=a5$ } //if(isb5 case 9: x5=O; go(); } //switch(y5 } //tryMov mth rtns: //var lvl 6 routines public void atkVs(){ //uses: atkSrc,Tgt,Typ (Typs< Sk1 res at exeAct()) [`?if spec, atkItm] if(x6!=AtkVs) y6=I; switch(y6){ case I: x6=AtkVs; eq(a6$,figNam(atkSrc)); eq(xsA,ActOpt$); eq(b6$,wrd(xsA,atkTyp)); /*`test lns _6=getPst(atkSrc); setAtk(Cbt,Una); isb6=isArm(atkSrc); //wpn atk rdy chk //`alt: isb6=has(atkSrc,"","wpn"); //wpn atk rdy chk if(isb6){ atkItm=B7; //B7 of isArm() //`alt: atkItm=D7; //D7 of has() } //if(isb6 //*/ a6=pri(atkItm=val(atkSrc,FigItm)); //`?req valid itm chk [abv?] d6=modDx(atkSrc,atkTgt); if(isa6=F4>O){ //_4s, _5s of modDx(), canHit() atCoo=M5; toCoo=H5; srcPos=D5; srcArc=E5; tgtArc=J5; tgtPos=K5; atkRng=L5; } //if(isa6= /*`?traps, etc else{ tgtPos=arcPos(atkTgt,atCoo=val(atkSrc,FigCoo)); //min bon (if rng tossup) for atkr head hex toCoo=C6; //nea tgt hex: _6s of arcPos() atkRng=D6; tgtArc=G6; } //else(F4>O //*/ y6++; case 2: y6+=isa6?I:4; txt("011"); txt("111"+str(a6$)+' '+str(b6$)+(isa6?"":" [ can't hit ]")); txt("221 modDX "+d6+": "+str(B4$)); return; case 3: y6++; txt("011"); txt("115modDX "+d6); b6=dig(atkTgt,FigAct,FigDo)==Dfd && atkRng<2 && tgtPos==Fro || B9==Ddg && atkRng>I?Def:Hit; //B9 of dig() c6=atkSrc; //c6=Usr; //`test ln rol(dibDic,b6,c6); return; case 4: b6=d7; //rcd hit rol tot: _7s of rol() c6=e7; //rcd hit rol #dic eq(c6$,str(b7$)+(!str(a7$).equals(str(b7$))?", mod: "+str(a7$):"")); //`Onfall rev //eq(a7$,"0134"); b6=8; c6=4; j7=8; f7=O; //`test ln isb6=j7<=dibDic && f7>O; //critical hit flg isc6=!isa7 && dig(atkSrc,FigMov,FigStp) 0 e6=N; //ini for msg flg if(false && hav(atkSrc,"WpnPr","fx") && modIq(atkSrc)>O) //xsIQ rev `Onfall ver false && if(((e6=isa6?(c6<5?2:(c6<6?I:O)):I)>I || C5O) //`upg ver req cdn mod addTo(atkSrc,FigHit,FigIFx,I); else addTo(atkSrc,FigHit,FigIUx,e6); y6++; case 5: y6++; txt("011"); //if(isA7) txt("121xsIQ was "+C5+'/'+D5+"; now "+(modIq(atkSrc)>O?""+C5+'/'+D5:"")); //of hav() `test ln if(!isa7) txt("131 [ "+(isc6?"no ":"")+"auto miss ]"); if(e6>N) txt("133WpnPr use cost xsIQ-"+e6); txt("121 sum "+b6+" (vs modDX "+(isHid && dig(atkSrc,FigCtl,FigPla)==Mac?"?":""+d6)+')'); txt("211"+str(a6$)+' '+str(b6$)+" roll "+str(c6$)); //`Onfall rev return; case 6: y6++; txt("011"); if(isc6=hav(atkSrc,"WpnPr","fx")){ //`Onfall ver txt("111 Wpn Prof talent SV:"); //`Onfall ver rol(isa6?3:4,modIq(atkSrc),atkSrc); //`Onfall ver return; //`Onfall ver } //if(hav(atkSrc,"WpnPr" case 7: y6++; txt("011"); if(isc6){ //`Onfall ver if(isc6=d7>modIQ) //`Onfall ver: 7s of rol(), modIQ of modIq() addTo(atkSrc,FigHit,FigIUx,I); //`Onfall ver if(isc6 && E7==I && wrd(pri(atkSrc),FigTyp).equals("Halfling")) //E7 of addTo() txt("121 (but Halfling gets 1 free pass)"); //`Onfall ver txt("211Wpn Prof SV "+(isc6?"failed.":"passed.")); //`Onfall ver return; //`Onfall ver } //if(isc6 case 8: x6=O; if(isa6) hitVs(); else go(); } //switch(y6 } //atkVs mth public void hitVs(){ //uses: atkSrc,Itm, a6 (atkItm itmPoo elm), b6, c6, d6, isb6, c6$ of atkVs(); //`Onfall rev //atk_s of atkVs(); at,toCoo; (?tgt/)srcArc/Pos //`Onfall rev if(x6!=HitVs) y6=I; switch(y6){ case I: x6=HitVs; //totBlk=z6[O]=z6[z6Siz]=dmg5s=O; //`?reloc her ordDX=d6; eq(b6$,str(c6$).substring(c6$.length()-c6)); //=mod hit roll //`Onfall rev y6++; case 2: isa6=c6 dmg/ 2 blw eq(a6$,wrd(a6,ItmFnc)); //`?chk a6>0 if(atkTyp>=Sk1 && atkTyp=Sk2) //wpn atk c6+=(a6$.charAt(O)=='-'?N:I)*dig(a6$,I); //wpn's #dmg dic txt("011"); if(c6>I; //`Onfall rev incl {} reloc c6$.append(" jab"); } //if(atkTyp==Jab if((isc6=wrd(a6,ItmTyp).equals("Blowgun") && tgtPos==Fro) || wrd(atkItm,ItmLoc).equals("2dhand") && !wrd(a6,ItmRdy).equals("2hand") && wrd(a6,ItmRng).indexOf("ofh")>I; //`Onfall rev incl {} reloc c6$.append(isc6?" blo":" ofh"); } //if((isc6= if(d6>dmgDic) c6$.append(" "+dmgDic+"d"); d6=Math.min(d6,dmgDic); //#hi dic in lim per ST & hit rerolls //`Onfall rev eq(b6$,str(a7$).substring(c6-d6)); //dic digits in asc'g seq; _7s of rol() //`Onfall rev c6=d6; //`Onfall rev /*`alt: [viz pre rol() case 3:] if(atkTyp==Jab){ c6-=d6=c6>>I; eq(b6$,str(b6$).substring(d6)); c6$.append(" jab"); } //if(atkTyp==Jab //*/ dmg5s=O; for(g6=O;g6e6) e6=B9; //B9 of dig() } //if(a6$.charAt( if(atkTyp==Sk1 && wrd(atkItm,ItmLoc).endsWith("hands") //Top die 2-hands bon && dig(b6$,c6-I)!=(d6=Math.min(e6,dig(b6$,c6-I)+I))){ digIn(b6$,c6-I,d6); c6$.append(" 2hd"); } //if(atkTyp==Sk1 && if(isb6){ //Top die critical hit bon digIn(b6$,c6-I,dig(b6$,c6-I)unsCat; //B8 of itmCat() if(isc6 && c6>I && wrd(atkSrc,FigCla).equals("Adv") //2nd die adv bon && wrd(atkItm,ItmCla).charAt(O)!='+' && dig(b6$,c6-2)<=lowHit){ digIn(b6$,A9,B9+2); //`,dig(b6$,A9)+2) if not 1st such mod: _9s of dig() c6$.append(" adv"); } //if(isc6 && d6=O; //ini mod mad flg: req ST Cup/Low dic mod if((f6=val(a6,ItmReq))>O && f6!=(g6=dig(atkSrc,FigChr,FigST) +(wrd(pri(atkSrc),FigTyp).equals("Orc")?I:O))){ if(f6>g6) //wpn req ST> fig's pen for(h6=(i6=c6-(f6-g6>4?I:2));h6>=Math.max(O,i6-(f6-g6+I>>I));h6--){ d6+=dig(b6$,h6); digIn(b6$,h6,Math.max(O,B9-2)); //B9 of dig() } //for(h6=(i6=c6- else //wpn req ST< fig's bon for(h6=(i6=O);h6>I);h6++){ d6+=5-dig(b6$,h6); digIn(b6$,h6,Math.min(5,B9+I)); //B9 of dig() } //for(h6=(i6=O if(h6!=i6 && d6!=O) c6$.append(" st"+(f6>g6?'-':'+')); } //if((f6=val(a6, if(hav(atkSrc,"WpnPr","fx")){ //Low die prof bon digIn(b6$,O,dig(b6$,O)+((B9&I)>O?I:2)); //B9 of dig() c6$.append(" prf"); } //if(hav(atkSrc, /*`opt: if(isc6 && dibDic ea die/ 2 `?incl uns/crude for(e6=O;e6>I); c6$.append(" <"+AvgHit+'i'); } //if(isc6 && //*/ if(isa6 && false){ //fin #Hit dice< AvgHit -> ea mod die/ 2 `?&& isc6`Onfall ver && false d6=O; //ini mod mad flg for(e6=O;e6>I); d6+=f6<2?O:I; } //for(e6=O; if(d6>O) c6$.append(" <"+AvgHit+'h'); } //if(isa6 d6=O; //sum dmg dic g6=N; for(e6=O;e6 1s g6=e6; else{ digIn(b6$,g6,f6=I); g6=N; c6$.append(" 00"); } //else(g6unsCat && B8O?", mod: "+str(b6$)+';'+str(c6$):"")); return; case 5: totBlk=z6[O]=z6[z6Siz]=O; //ini Rtg fx, Dfd opt itm, shd/itm for ret chk c6$.setLength(O); //Dfd itm, ofh wpn(s), Shield(s) stop dmg isc6=tgtPos==Fro; isb6=dig(atkTgt,FigAct,FigDo)==Dfd && (atkTyp==Sk1 || atkTyp==Jab) && isc6; isc6=B9==Ddg && atkRng>I && isc6; //B9 of dig() if(isCmn(tgtArc,shdArc(atkTgt)) //prp to chk if atk vs any qua shd/ itm sde || isc6 && C7>O //Ddg shd(s) as Cvr: _7s of shdArc() || isb6 && (E7>O || val(atkTgt,FigItm)>O)){ //Dfd itm (if shd as Cvr) System.arraycopy(Z7,I,z6,I,g6=E7); //shd itms rdy if(isa6=isb6 && val(atkTgt,FigItm)>O){ //add non shd Dfd itm to lis ary z6[O]=C9; //ref Dfd opt itm: C9 of val() for(h6=I;h6<=g6;h6++) isa6&=z6[h6]!=z6[O]; if(isa6) z6[++g6]=z6[O]; } //if(isa6= isa6=wrd(atkTgt,FigGen).charAt(FigHnd)=='r'; for(h6=I;h6<=g6;h6++){ //viz ea shd- typ itm e6=wrd(pri(f6=z6[h6]),ItmRng).indexOf("ofh"); //`?prv for ofh Cvr arc on Dfd if(d6>O && (g6<2 || isc6 && e6shdCat && val(f6,ItmOpn)==Cvr //B8 of pri() || isCmn(tgtArc,30+(isa6!=wrd(f6,ItmLoc).startsWith("1thand")?I:5))) //poss 1thands && (e6N?wrd(f6,ItmCod):"Defen"); //"ofh" &shd prv //*/ i6=e6>N && val(f6,ItmOpn)>=itmGrp?N //msl- typ ofh w amo lod :Math.min(d6,dig(pri(f6,"shd")>O?B8:l6,ItmFnc,ItmPrt)); //B8 of amp'd pri() if(d6>i6 && i6>N && dig(f6==z6[O]?l6:B8,ItmFnc,ItmRtg)>=ordDX-b6){ //def itm Rtg fncs //`?Onfall rev >= if(j6>-5){ //cdn ok? if((m6=dig(B8>O?B8:l6,ItmFnc,ItmBlk))2?I:-m6; //Blk of lg shd i6+=(m6=Math.min(d6-i6,m6)); //stp adn dmg totBlk+=m6; } //if(j6>-5 while(j6>-X && false && dig(dic(I,"chk dgra"),O)>(j6i6 && d6-=(i6=Math.max(O,i6)); //rdu tot dmg c6$.append(wrd(pri(f6),ItmTyp)+" stops "+i6+" damage."+Div$); if(j6!=k6){ c6$.append(str(A9$)+" Condition now "+j6+'.'+Div$); //A9$ of wrd() valIn(f6,ItmCnd,j6); } //if(j6!=k6 if(j6>-X && (z6[z6Siz]==O || str(A9$).indexOf("Shield")>N)) z6[z6Siz]=f6; //reten chk itm } //if(d6>O && } //for(h6=I; if(c6>2 && false) //shd Cvr & Rtg fnc -> 3rd die as exh `Onfall ver && false for(h6=I;h6<=g6;h6++) if(pri(z6[h6])>shdCat && (isb6 || isc6 || val(B8,ItmOpn)==Cvr) //B8 of pri() && dig(B8,ItmFnc,ItmRtg)>=ordDX-b6){ //def itm Rtg fncs //`Onfall rev >= digIn(b6$,c6-2,dig(b6$,c6-2)+dig(b6$,c6-3)); //`?nec: see cas 7 alt blw digIn(b6$,c6-3,O); c6$.append(" Shield Cover rtg: die 3= exh."+Div$); break; } //if(pri(z6[h6] } //if(isCmn(tgtArc, y6++; //txt("011"); rpt("211srcArc="+srcArc+"; tgtArc="+tgtArc+"; shdArc="+shdArc(atkTgt)); return; //`test ln /*` if(c6$.length()>O){ txt("011"); rpt("211"+c6$); return; } //if(c6$.length()>O //*/ case 6: //` c6$.setLength(O); //`note poss Shield Cover alt abv if(d6>O && has(atkTgt,"","amr")){ //Armor stp dmg e6=dig(l6=pri(f6=D7),ItmFnc,ItmRtg); //_7s of has() if(E7>I){ //prv for mul Partial amr System.arraycopy(Z7,I,z6,I,g6=E7); e6+=g6-I; f6=z6[dig(dic(I,"pick pc"),O)/(5-g6)+I]; } //if(E7>I j6=k6=val(f6,ItmCnd); i6=Math.min(d6,dig(l6,ItmFnc,ItmPrt)); if(d6>i6 && e6>=ordDX-b6){ //def itm Rtg fncs //`Onfall rev >= if(j6>-5){ //cdn ok? if((m6=dig(l6,ItmFnc,ItmBlk))2?I:-m6; //Blk of metal amr i6+=(m6=Math.min(d6-i6,m6)); //stp adn dmg totBlk+=m6; } //if(j6>-5 while(j6>-X && false && dig(dic(I,"chk dgra"),O)>(j6i6 && c6$.append(wrd(l6,ItmTyp)+" stops "+i6+" damage."+Div$); if(j6!=k6){ c6$.append(str(A9$)+" Condition now "+j6+'.'+Div$); //A9$ of wrd() valIn(f6,ItmCnd,j6); } //if(j6!=k6 d6-=i6; //rdu tot dmg } //if(d6>O && y6++; if(c6$.length()>O){ txt("011"); rpt("211"+c6$); return; } //if(c6$.length()>O case 7: e6=O; //rdu dmg dic in seq per rdu d6 f6=b6$.length(); for(g6=O;g6d6) digIn(b6$,g6,h6=Math.max(O,d6-e6)); e6+=h6; } //for(g6=O; i6=wrd(pri(atkTgt),FigTyp).equals("Dwarf")?N:O; //unc at 0 i6=dig(atkTgt,FigChr,FigST)-dig(atkTgt,FigHit,FigPhy) -dig(atkTgt,FigHit,FigExh)-i6; z6[FigPhy]=z6[FigExh]=O; //ini phy, exh hits cnt isa6=itmCat(a6)!=wpnItm || B8==unsCat //B8 of itmCat() || wrd(a6,ItmNat).equals("crude"); for(g6=I;g6<=f6;g6++) //atkTgt fig tak dmg per die if(i6>I && (h6=dig(b6$,f6-g6))>O){ //hlt if unc e6=g6==2 || isa6 && g6>I //`?alt: || g6==3 && c6$.indexOf("Shield Cover")>N ?FigExh:FigPhy; //die dmg as phy/exh if(e6==FigExh && h6>=i6) h6=i6-I; i6-=h6; z6[e6]+=h6; addTo(atkTgt,FigHit,e6,h6); } //if(i6>I && c6$.setLength(O); if((e6=dmg5s-totBlk)>O && z6[FigPhy]+z6[FigExh]=i6) e6=i6-I; i6-=e6; z6[FigExh]+=e6; addTo(atkTgt,FigHit,FigExh,e6); if(e6>O) c6$.append("("+e6+" by 5s) "); } //if((e6=dmg5s- if((e6=z6[FigPhy]+z6[FigExh])>O){ addTo(atkTgt,FigHit,FigDmg,e6); if(hexDst(atCoo,toCoo)==I) //`?&& val(atkSrc,FigObj)==atkTgt) wrdIn(atkSrc,FigObj,(dig(atkSrc,FigAct,FigDo)==Sk1?"+":"")+atkTgt); //flg dmg to adj tgt if(isa6=wrd(atkSrc,FigCla).equals("Adv")) addTo(atkSrc,FigEp,f6=Math.max(z6[FigPhy], (dig(atkTgt,FigRtg,FigGra)+3>>2)*(z6[FigPhy]+(z6[FigExh]+I>>I)) +(i6<2?dig(atkTgt,FigChr,FigDX):O) //i6 Dwarf adj abv -dig(atkSrc,FigRtg,FigLvl))); } //if((e6=z6[FigPhy]+ y6++; case 8: y6++; if(e6>O){ if(z6[FigExh]>2){ addItm(atkTgt,locItm(fxItm,"RdIcd","fx")); addTo(elmNum,ItmBon,z6[FigExh]-2); //elmNum of addItm() wrdIn(elmNum,ItmLoc,"regain"); } //if(z6[FigExh]>2 txt("011"); if(isa6) txt("124"+figNam(atkSrc)+" gains "+f6+" ep."); if(i6<2){ txt("121 [ falls "+(i6O case 9: y6++; if(e6>4 && !hav(atkTgt,"DxMod","by")){ //`Onfall rev {} addItm(atkTgt,locItm(itmPoo,"DxMod","fx")); wrdIn(elmNum,ItmCla,"by"); //chg to fx in sidMov(), elmNum of addItm() wrdIn(elmNum,ItmLoc,"ow"); valIn(elmNum,ItmOpn,rndCnt+I); valIn(elmNum,ItmBon,-2); } //if(e6>4 && f6=z6[z6Siz]; //shd, or else offhnd wpn, Dfd itm opp g6=wrd(a6,ItmRng).indexOf("ofh"); //offhnd wpn atk `?incl Clinc % if(isc6=atkTyp==Sk1 && i6>I && dmg5s>O && (f6>O || g6>N)){ //shd ret/ drp wpn SV if(f6N && (true || !str(A9$).equals("1thand"))) //`?qlf tgt itm `test ln true || f6=Z7[h6]; h6=modSt(atkTgt); txt("011"); txt("111"+wrd(pri(f6),ItmTyp)+" item retention: modST= "+h6); rol(c6+I,h6,atkTgt); return; } //if(isc6= case X: y6++; //isa7=false; //`test ln if(isc6 && !(isa7 && d7<=h6)){ //_7s of rol() givItm(-val(atkTgt,FigCoo),f6,All); eq(a6$,wrd(C6,ItmTyp)+" dropped."); //C6 of givItm() clrFig(atkTgt); plcFig(atkTgt); rpt("221"+a6$); return; } //if(isc6 && case 11: x6=O; go(); } //switch(y6 } //hitVs mth //var lvl 7 routines public void rol(int num,int typ,int elm){ //uses: atkItm if Mac ctl on Hit,Def args //calling rout may txt("124" eg req score) & if not Hit nor Def txt("111") if(x7!=Rol) y7=I; switch(y7){ case I: x7=Rol; a7=num; //#dic to rol b7=typ; //typ of rol being made: Reg, Hit, Def, Sav (no ep calc) or SV's req score (min 4) c7=elm; //roller's figGrp elm, or Mac/Usr cst for ctl [`?: when typ> Reg] eq(b7$,seq(dic(a7,"RegHitDef SV".substring(3*Math.min(3,b7),3*Math.min(3,b7)+3)))); //rcd unmod roll //if(b7==Def){ b7$.setLength(O); eq(b7$,seq(b7$.append("000"))); } //`test ln g7=B8; //rol tot: B8 of seq() eq(a7$,b7$); if(b7==Def) for(d7=O;d7O && b7>=Sav && c7>=figGrp && wrd(pri(c7),FigTyp).equals("Goblin")){ //`Onfall rev eq(c7$," (Goblin)"); //`Onfall rev digIn(a7$,d7,--e7); //Goblin rac SV bon eq(a7$,seq(a7$)); g7--; } //if((e7= isa7=g7=Sav; //can't reroll isb7|=b7>=Sav; //`Onfall ver if(!isb7 && b7>=Sav && (c7=Sav){ y7+=isb7?5:3; rol(O,O,O); return; } //if(isb7 || y7++; case 2: if(a7$.charAt(g7)!=(a$='0')){ y7+=4; rol(O,O,O); return; } //if(a7$.charAt(g7)!=(a$ h7=g7; //ini #pot reroll zeroes in seq cntr while(++h7=itmGrp && atkItm=e7?Math.min(h7,B9-e7+I) //B9 of dig() :(modDX-d7>I)*h7+rdm(2))?O :Math.max((modDX-d7)/i7,h7-rdm(-2))); //Hit,Def mac eval case 3: txt("011"); if((i7=Math.min(inpVal,h7))>O){ eq(b7$,seq(b7$.append(dic(i7,"reroll")))); eq(a7$,seq(a7$.append(die$))); //die$ of dic() d7=B8; //B8 of seq() e7+=i7; f7++; g7+=h7; y7--; } //if(i7>O else y7+=3; rol(O,O,O); return; case 4: y7++; //`alt: txt("011"); txt("111 dice in seq: "+str(a7$)+" = "+d7); //`?txt("031"); txt("131 dice in seq: "+str(a7$)+" sum "+d7); a$=a7$.charAt(h7=a7-I); while(h7>O && a$==a7$.charAt(--h7)); //loo in cdn txt("221Redo one "+(a$=a7$.charAt(h7))+"? 0) no 1) yes: "); return; case 5: //`? txt("011"); if(inpVal==I){ digIn(a7$,h7,dig(dic(I,"redo"),O)); eq(a7$,seq(a7$)); d7=B8; //B8 of seq() f7++; } //if(inpVal==I else a$='?'; y7++; case 6: y7++; if(b7>=Sav){ //`&& !isObs ||.. isa7=d7Sav; isb7&=a7>3 && b7<=3*a7; //`SV ep req lmt txt("116(hit a key)"); if(isb7 && c7>=figGrp && wrd(c7,FigCla).equals("Adv")){ addTo(c7,FigEp,g7=!isa7 || d7>b7?-(d7>b7?d7-b7+I>>I:a7):b7-d7); txt("021"); txt("121"+figNam(c7)+(g7=Sav case 7: x7=O; go(); } //switch(y7 } //rol mth - rtns isa7 (no auto miss), a7$ (final #dic digs in seq), b7$ (unmod dic as rolled) //d7 (sum total), e7 (final #dic), f7 (#reroll stages), j7 (1st roll sum), a7 (1st roll #dic) public void rpt(String dta$){ if(x7!=Rpt) y7=I; switch(y7){ case I: x7=Rpt; eq(a7$,dta$); a7=a7$.length(); eq(b7$,str(a7$).substring(O,txtCodLg)); b7=txtCodLg; //substring begpos tracker d7=O; //prefix space on alt msgs flg ini y7++; case 2: c7=str(a7$).indexOf(Div$,b7); //substring endpos tracker if(c7O) insStr(A3$,F3,F3+I,""); //`?use deleteCharAt() } //for(E3=O; wrdIn(D3,G3,str(A3$)); if(isStp || isTdr){ isStp=isTdr=false; //rtnCoo=O; `?nec rmvFea(rtnCoo); //fea$ asgnd in chkMov() } //if(isStp || shoMap(); //`while(hav(trvFig,"","")) eq(elmNum,Fre$); x5=x4=x3=x2=O; x1=EndGam; y1=I; txt("011"); txt("211 no active adv - loc cleared"); } //if(locFig(str(are$), //*/ else if((C3=locFig(A3$,B3))>O) newFig=C3; return C3; //`also acts as rtn to endGam()/txt() calls abv: forced placement } //nxtFig mth - rtns C3, newFig if C3>0 public int nxtOrd(){ //`?use nxtFig() A3=O; //ini nxt act fig ordDX=N; //ini modDX val nxt to act `?=0 note modDx()>0 cdn blw C3=C; //ini undic fig min seq# F3=G3=H3=yetPik=yetAct=O; //ini max seq#, undic min seq# des fig, max act seq#, #unpik,act figs for(B3=figGrp;B3F3) F3=D3; //max seq#: for 1st seg 0 asgns (see sbr end) if(isA3=dig(B3,FigAct,FigDic)O && D3 O (in 1st seg: only= F3 max seq#'s) } //if(D3>O && } //if(isAni(B3) && isA3=G3>O; //chkg prev seq'd fig's opt vs seq0 fig (flg for tiebkr rolls) for(B3=figGrp;B3O){ //`nb opt's mDX /*`alt: C3=O; //ini max fac bon hldr `use isBy(Tgt) for(D3=figGrp;D3O && F6>Fro) //_6s of arcPos() C3=Math.max(C3,F6>Sde?4:2); modDX+=C3; //*/ if(modDX>ordDX || modDX==ordDX //so A3>0 && ((C3=dig(A3,FigSta,FigSeq))>=(D3=dig(B3,FigSta,FigSeq)) && (D3>O || !isA3 && C3O && C3ordDX) E3=I; //reset #figs tied for act A3=B3; ordDX=modDX; } //if(modDX>ordDX || } //if(isAni(B3) && if(A3>O){ newFig=A3; if(isA3 && A3!=G3) //pending (min undic seq) fig G3 pikd opt to dec modDX< A3's new max digIn(G3,FigSta,FigSeq,O); //0 prv for A3 seq# asgn & rev DX recalc of G3's seq# if(dig(A3,FigSta,FigSeq)==O) digIn(A3,FigSta,FigSeq,++F3); //rcd fig rel seq (not nec sequential) } //if(A3>O return A3; } //nxtOrd mth - rtns newFig=A3, ordDX, yetAct (#unact figs) public void movFig(int elm,int to,int vlu){ //uses: A3=elm; B3=to; C3=vlu; //fac in to hex E3=N; //Pla vu: flg whi figs are acq by Pla figs for(D3=figGrp;D3O){ //if on map E3=N; //Pla vu: flg if mov fig is acq by Pla figs for(D3=figGrp;D3O } //movFig mth public void shoFrc(){ E3=N; //Pla vu: flg whi figs are acq by Pla figs for(D3=figGrp;D3 calc angle- typ view arc (vs side- typ) chkObs(A3,O); System.arraycopy(Z4,I,Z3,I,B3=B4); //_4s of chkObs() E3=E4; //abs(A3) for(C3=figGrp;C3 hex not checked M3=elm; //figPoo elm: for req passage wid for pth, idv Mp use & end fac clc if(isA3=B3>I)-movPnt; //a3, movPnt of macMov() for(G3=I;G3<=N3;G3++){ //at radDst if(E3 rev (as aux vars) in chkPth() pthStp=dig(M3,FigMov,FigHlt)Fro?4 U3=cooOcc(wayHex(U3=isA3?losHex(losDst-I):B3,pthFac),Foe)?3 :(cooOcc(wayHex(U3,dig(SidCyc$, P3=SidCyc$.indexOf(""+pthFac,I)-I)),Foe) || cooOcc(wayHex(U3,dig(SidCyc$,P3+2)),Foe)?2:I); //min 1 >Q3 (ini 0) //or, wayHex(losHex(losDst-(isA3?I:O)), //`alt: isC3=cooOcc(wayHex(B3,objArc(L3!=B3?L3:(I3!=B3?I3:A3),B3)%X),Foe); P3=pthStp; //P3=G3+J3+hexDst(I3,L3); //`test ln //`alt fnc: O3=Math.min(O3,P3); //min clr dst if((E3>O3 || U3==Q3) && E3>P3 || U3>Q3 && P3<=O3){ //`?(F3>Z3[I]+Z3[2]+D4); && !isB3 C3=I3; //atHub D3=L3; //toHub E3=P3; //prjDst F3=Z3[I]+Z3[2]+(L3==B3?O:D4); //prjMp: D4 of chkPth() //F3=pthFac; //`test ln //eq(C3$,""+str(A3$)+str(B3$)+(L3==B3?"*":"/"+str(B4$))); //`test ln: `?chk C3$ req Q3=U3; } //if((E3>O3 || } //if(chkPth(L3, } //if(isHex(L3= } //for(K3=O; } //for(J3=I; } //if((isHex(I3= } //for(H3=I; } //for(G3=I; //`? hexBlk=_3; //rcl sto val //` txt("035"); return isA3=E3>I; //B9 of dig() isC3=(F3=dig(A3,FigMov,FigHlt))==Mvg && isB3; isA3=(J3=dig(A3,FigMov,FigStp))>O //nb may be of prev rd: not rst til 1st mv stp && !hav(A3,"Unbal","fx") && C3>N && C3I){ //_6s of cooOcc() System.arraycopy(Z6,I,Z3,I,I3=B6); for(G3=I;G3<=I3;G3++) if(isFoe(Z3[G3],A3)){ //`? && dig(Z3[G3],FigOri,FigPst)>Lyg D3=Z3[G3]; //flg w any qua tgt if(isA3 && isC3 && J3<=HthRng) //`?<=(Mma+3)/4 E3=Hth; //Pus poss if Hth unused in bakOff() if(isA3 && isC3 && C3>O && dig(D3,FigOri,FigPst)>Lyg) E3=X*E3+Pus; if(E3>O) break; } //if(isFoe(Z3[G3],A3 if(F3==Mvg && E3O){ //mvd to opp hex wo qlf `?or in aly hex & Hltd E3=Hth; //Hth to bakOff() as dfa arg for aut eje digIn(A3,FigMov,FigStp,Math.max(J3,HthRng+I)); //flg val for aut eje: `?use oth } //if(F3==Mvg && } //if(cooOcc(K3= isC3=F3==Mv0 || isB3; //ie can qlf at beg of mov wo mvg if(E3O && C3I //chk Chg Mov qua && dig(A3,FigAct,FigDid)==Mov //`adv: dig(A3,FigSta,FigWas)==Moved && cooOcc(G3,Liv)){ //`?,Atk vs canHit() blw System.arraycopy(Z6,I,Z3,I,I3=B6); //_6s of cooOcc() for(H3=I;H3<=I3;H3++) if(isFoe(Z3[H3],A3) && canHit(A3,A6) && I5>=Lyg){ //A6 of isFoe(), _5s of canHit() `?any pst D3=B5; E3=Chg; break; } //if(isFoe(Z3[H3],A3) && } //if(C3>O && if(J3==I && isBy(A3,Foe) && has(A3,"^"+ItmTyp,"Shield")){ //chk for Shd Rus qual F3=E7>I?135:((wrd(A3,FigGen).charAt(FigHnd)=='r') //_7s of has() `>add Cvr cdn !=wrd(D7,ItmLoc).equals("1thand")?31:35); System.arraycopy(Z5,I,Z3,I,I3=C5); //_5s of isBy() H3=I; while(H3<=I3) //chk Z3[], pare unqua tgts if(canHit(A3,Math.abs(Z3[H3])) && I5>Lyg //_5s of canHit() && hexDst(val(A3,FigOgn),H5)==2 && isCmn(E5,F3)){ D3=B5; //flg w any qua tgt E3=X*E3+Rus; H3++; } //if(canHit(A3, else Z3[H3]=Z3[I3--]; } //if(J3==I && } //if(E3O && (E3==Hth || E3/X==Hth || E3%X==Hth)?Hth:O; //`Onfall ver: disable all but return E3; } //movQlf mth rtns: D3 (`), E3 (`), Z3[] (`), I3 (Z3[] elm cnt) public int modMa(int elm){ if(z1$[A3=elm].charAt(O)==Fre0$) return modMA=-C; isA3=isEgd(A3); B3=elmNum; //_4s, elmNum= pri(A3) of isEgd() /*`V1 modMA=isA4 || isA3 && G4>Fro && (G4Fro?2:(dig(A3,FigOri,FigPst)3 && has(A3,"","amr")) if(!wrd(pri(B7),ItmNat).equals("crude")) //_7s of has() if(!wrd(B8,ItmTyp).startsWith("Partial") || E7!=2) //B8 of pri() modMA-=dig(wrd(B8,ItmRng),3); //`?too spec viz Partial elm, charAt pos if(isA3 && !isA4 && G4>I; if(dig(A3,FigMov,FigDir)2 modMA=modMA+I>>I; return (C3=dig(A3,FigMov,FigHlt))I) modDX-=++D4; B4$.append("ar-"+D4+' '); } //if(has(A4, if(has(A4,"","shd")) for(C4=I;C4<=E7;C4++) //_7s of has() if(pri(Z7[C4],"shd")>O && dig(B8,ItmRng,I)>O){ //prv for amped cla: B8 of pri() modDX-=B9; //B9 of dig() B4$.append("sh-"+B9+' '); } //if(pri(Z7[C4],"shd")>O && eq(A4$,cut(wrd(A4,FigNam))); elmNum=itmGrp; //mods while(elmNumO){ if(str(A4$).equals(wrd(elmNum,ItmOwn))){ modDX+=(C4=val(elmNum,ItmBon)); B4$.append(wrd(elmNum,ItmLoc)+(C4>O?"+":"")+C4+' '); } //if(str(A4$).equals( elmNum++; } //while(elmNumO?val(A4,FigObj):O; if(H4O) I4=val(A4,FigPrj); C4=B4!=I?B4:(H4>O?Math.max(O,I4) :(isBy(A4,Foe)?I5:Math.max(O,E5))); //_5s of isBy() `adl Aim/ Use (-)hex tgt if(B4!=O && C4>O && A4!=C4){ //"optional" modifiers if(canHit(A4,C4)){ //atk mods F4=H5; //coo rtn val as flg for modDX incl of tgt hit mods if(D5==Sam || K5==Rea || K5==Sde){ //_5s of canHit() modDX+=E4=K5==Rea?4:2; //`Onfall rev B4$.append("sd+"+E4+' '); } //if(D5==Sam || if(N5==Hrl || N5==Fr1 || N5==Fr2){ //`&& [MP<= req] `?&& (H4>(N5==Hrl?I:2)); B4$.append("rg-"+D4+' '); if(val(pri(C4),FigSiz)I){ //"functional" modifiers if(A4==B4 && H4==Rdy){ //`vs B4<0 pickup modDX+=4; B4$.append("ry+4 "); } //if(A4==B4 && if(H4==Sk1 && !freHnd(A4) && isA8){ //isA8 of freHnd() modDX--; //1hd wpn used 2hd: DX- only in atk B4$.append("hd-1 "); } //if(H4==Sk1 && } //if(B4=G4){ //"personal" modifier modDX-=2; B4$.append("dg-2 "); //-2 fx for tp= hit>4 in hitVs() } //if(modIq(A4) calc angle- typ view arc (vs side- typ) F4=vlu; //0= zro all figs' obs sta, 1= hld figs' cur obs sta E4=Math.abs(A4); if(F4=Out?B4-Out: (B4>=Set?B4-Set:B4); D4=H4=newFig=figEnd?figGrp:newFig+I; C4=I; do{ while(D4=Out || isUp(D4); if(B4==Any+Out || B4==Any && isB4) break; if(isAni(D4) && (F4==Adv && B9>I || F4==Cre && B9<2 //B9 of isAni() || F4==Sid && sid(D4)!=newSid)) isA4=false; else //`need chk of ctl for Cre & Adv isA4=isB4 && (F4 X= acted status } //if(isA4 if(!isA4) D4++; } //else(!isA4 }while(C4<3 && !isA4); if(C4>2) D4=O; return D4; } //locFig mth public boolean isEgd(int elm){ A4=elm; K4=newSid; //sto for rcl newSid=sid(A4); isB4=false; //ini HTH flg C4=B4=M4=G4=O; //ini #figs egd, #figs (in 1- hex equivs) egd: tot, & HTH, A4 sid to egd fig L4=dig(A4,FigOri,FigPst); if(isBy(A4,Ega)){ G4=D5; //(,Ega) -> D5= A4 sid to egd fig w Rea/Sid/Fro prec for(D4=I;D4<=C5;D4++){ //C5=#en figs A4's in Fro of: _5s of isBy() E4=Math.abs(Z5[D4]); isC4=!hav(E4,"Unbal","fx") && (L4Lyg); //isC4=L4Lyg; //`test ln //isC4=isC4 && dig(E4,FigMov,FigDir)>N && B9!=N+PivDir; //`test ln //isC4=isC4 && dig(E4,FigMov,FigMp)<=dig(E4,FigMov,FigMma)+I>>I; //`test ln //`?alt: if((isD4=D5==Sam && L4==dig(E4,FigOri,FigPst)) || isC4){ //allow walkover: `nuisance cre/ no fro hexes if((isD4=Z5[D4]Lyg); //A7 of hav() if((isD4=D5==Sam && L4==dig(A7,FigOri,FigPst)) || isC4){ //allow walkover: `nuisance cre/ no fro hexes B4+=val(pri(A7),FigSiz); if(isD4){ M4+=C9; //C9 of val() isB4=true; } //if(isD4 Z4[++Z4[O]+J4]=A7; //sto aft sbj fig coo(s) } //if((isD4= } //for(D4=I; } //for(I4=I; //*/ /*`alt: (isBy(coo,Foe) var) mapFig(A4); J4=E7; //sbj fig siz (in unit hexes): _7s of mapFig() System.arraycopy(Z7,I,Z4,I,J4); //does dual duty: egd figs lis aft J4 for(I4=I;I4<=J4;I4++){ C4=Z4[I4]; //sbj hex (-es of multi- hex fig) if(isBy(C4,Foe)) for(D4=I;D4<=C5;D4++){ //_5s of isBy() for(E4=J4+I;E4<=J4+Z4[O];E4++) if(Z5[D4]==Z4[E4]) //a fig prev lstd as egd w sbj break; if(E4<=J4+Z4[O]) continue; isC4=!hav(Z5[D4],"Unbal","fx") && (L4Lyg); //A7 of hav() mapFig(A7); isA4=wrd(B7,FigFro).equals("reg"); //_7s of mapFig() eq(A4$,isA4?"5aaaa":str(A9$)); //A9$ of wrd() F4=O; for(E4=I;E4<=(isA4?I:E7);E4++) //?only 1 "head" hex to chk if(hexDst(C4,Z7[E4])<2) //poss ega'g hex of fig in or adj to sbj hex F4++; //opp #head/ fro hexes on/ adj to fig hex(es) `?useful qty if(F4>O){ F4=isA4 && E7<3?4:A4$.length(); G4=O; //ini Z7[] idx for(E4=O;E4'0' && A$<'7'){ G4++; H4=+A$-Asc0; //nxt dig() interf w A$ H4=facRot(dig(A7,FigOri,FigFac),H4); H4=D8-I; //D8 of facRot() } //if(A$>'0' && else{ H4++; if((isD4=Z7[G4]==C4 && L4==dig(A7,FigOri,FigPst)) //allow walkover: `nuisance cre/ no fro hexes || isC4 && A$=='a' && wayHex(Z7[G4],dig(SidCyc$,H4))==C4){ B4+=val(B7,FigSiz); if(isD4){ M4+=C9; //C9 of val() isB4=true; } //if(isD4 Z4[++Z4[O]+J4]=A7; //sto aft sbj fig coo(s) break; } //if((isD4= } //else(A$>'0' && } //for(E4=O; } //if(F4>O } //for(D4=I; } //for(I4=I; D4=M4; //comb siz of opp figs at HTH pst lvl rtn val E4=O; //ini comb siz of aly figs at HTH pst lvl rtn val if(isB4) for(F4=figGrp;F4=(F4=val(pri(A4),FigSiz)); //over- matched in HTH? isB4=D4-E4>O; //over- matched in HTH? //`?alt: isA4=B4-Math.min(D4,E4)>=F4; //matched overall? isA4=B4>=(F4=val(pri(A4),FigSiz)); //matched overall? newSid=K4; //rcl sto val return C4>O; } //isEgd mth - rtns B4 (equiv #1-hex figs egd), C4 (#figs egd), Z4[] (lst of egd figs), //isB4 (fig egd in HTH flg), D4,E4 (comb siz of opp, aly figs at HTH pst lvl), F4, elmNum of pri(), //G4 (egd fig to Rea/Sid/Fro prec) public void clrFig(int elm){ //uses: `dpys any adj figs: ?incorp isObs/canSee() A4=elm; mapFig(A4); C4=D7; //_7s of mapFig() E4=F4=E7; //F4 tly of coos added to Z4[] for upd System.arraycopy(Z7,I,Z4,I,E4); for(B4=I;B4<=E4;B4++) //any siz: rcd fig coos if(isHex(Z4[B4])) Z4[++F4]=C9; //C9 of isHex() if(E4==F4) //fig not on scr return; //*`alt: if clrHex() use pgn- typ jst in- bds clr eq(xsA,DmyFig$); //clr any out- hex lap (hth dmy mkr) `(of jst hea hex) wrdIn(xsA,FigAre,str(are$)); valIn(xsA,FigCoo,val(A4,FigCoo)); valIn(xsA,FigHue,X*hues[MapBkg]+hues[MapBkg]); for(B4=I;B4<4;B4++){ digIn(xsA,FigOri,FigFac,B4); shoFig(xsA); } //for(B4=I; //*/ /*` if(E4<3){ //clr any out- bdr lap eq(A4$,wrd(A4,FigHue)); //sto fig's hues G4=hues[FigInd]; valIn(A4,FigHue,X*hues[MapBkg]+hues[MapBkg]); hues[FigInd]=hues[MapBkg]; shoFig(A4); wrdIn(A4,FigHue,str(A4$)); //rcl fig's hues hues[FigInd]=G4; } //if(E4<3 //alt: isA4=C4>2 && C4<5; for(B4=E4+I;B4<=F4;B4++) if(areNot$.charAt(3)!='-' || ((D4=Z4[B4]/C)==topMapCol || D4==mapColWd-topMapCol+I) && (E4<2 || isA4) || ((D4=Z4[B4]%C)==topMapRow || D4==mapRowHt-topMapRow+I) && (E4<2 || !isA4)){ ..break; } //if(areNot$.charAt(3)!='-' || //*/ if(E4==2){ //siz 2 for(B4=N;B4<2;B4+=2) //rcd overdrawn hexes if(isHex(wayHex(Z4[I],7-dig(SidCyc$,SidCyc$.indexOf(""+C4,I)+B4)))) Z4[++F4]=C9; //C9 of isHex() } //if(E4==2 for(B4=E4+I;B4<=F4;B4++) //any siz: rmv sbj fig clrHex(Z4[B4]); if(E4==I){ //siz 1 for(B4=I;B4<7;B4++) //rcd poss lap coos if(isHex(wayHex(Z4[I],B4))) //all adj prv for lap mkrs //` if(B4!=C4 && B4!=7-C4 && isHex(wayHex(Z4[I],B4))) Z4[++F4]=C9; //C9 of isHex() } //if(E4==I valIn(A4,FigCoo,O); //alt coo loc to excl from cooOcc() calls blw for(B4=E4+I;B4<=F4;B4++){ //any siz: rpl occs of clrd hexes G4=O; if(cooOcc(Z4[B4],All)){ H4=B6; //_6s of cooOcc() System.arraycopy(Z6,I,Z4,F4+I,H4); for(D4=F4+I;D4<=F4+H4;D4++) if(!isAni(Z4[D4])) shoFig(Z4[D4]); //plc Feas else if(Z4[D4]!=A4 && isAcq(Z4[D4])) G4=Z4[D4]; //rcd (`?last) actor (to top stk) } //if(cooOcc(Z4[B4], eq(A4$,cnvCoo(Z4[B4])); elmNum=itmGrp-I; //plc coo- own itms while(++elmNumO) shoItm(elmNum); if(G4>O) //plc figs after Feas & itms plcFig(G4); //one fig-> chks all at loc } //for(B4=E4+I; valIn(A4,FigCoo,Z4[I]); //rcl coo loc /*`non cooOcc() alts: eq(A4$,wrd(A4,FigAre)); for(D4=figGrp;D4 hex not checked A4=elm; //siz 1..4; or figPoo elm: for idv Mp use //`cod req upd for siz> 1 (isBy() for ega, & see blw)`vals 1..4= Mov arg to cooOcc(); `?elab w vals for oth cooOcc() args, vs All usg blw isA4=true; //`asn her jst nec for dst= 0 losIni(B4=at,Math.abs(to)); //note ini asgs: ` C4=losDst+(to chk tgt hex too: los_s of losIni() D4=O; //ini pth MP cost E4=A4N || pthDirN?I4:7-I4; //txt("13"+losStp+""+losCoo+':'+losAlt); //`test ln //B4$.append(pthFac); //`test ln if(!(isA4=(++pthStp<2 || pthDir>N || A41st stp disallowed, as well as backup halt if(E4>2){ //fig Siz det: 1..4 `multihex fig mov [clearance, & ahead/ aside/ rotate typ] chk //isA4=false; break; //`test ln } //if(E4>2 D4+=I; //`trr MP cost [?of cooOcc()] acu B4=H4; losStp++; } //while(losStp calc angle- typ fire arc (vs side- typ) B5=vlu; //tgt fig if(B5==O || B5>O && (B5=figEnd || z1$[B5].charAt(O)==Fre0$)) return isA5=false; isA5=canSee(A5,B5); C5=G5; //nea vis tgt hex: _5s of canSee() //E5= src head hex to C5 arc, F5= tgt siz in hexes G5=D5==Sam?O:I5; //D5= src's foremost sde to tgt [canSee() nec Fro/Sam], I5= dst to tgt H5=val(B5,FigCoo); //tgt fig head hex mapFig(Math.abs(A5)); //for chk of multihex fig trample/ arc M5=Z7[I]; //head hex dfa src coo [also rtnd in Z5[1] exc blw]: _7s of mapFig() isB5=(I5=dig(B5,FigOri,FigPst))==Lyg && G5C){ forLbl: for(P5=2;P5<=F5;P5++) for(Q5=I;Q5<=E7;Q5++) if(isB5=Z5[P5]==Z7[Q5]) break forLbl; } //if(!isB5 && Z5[I]=O; //if !isA5 rtnd= flg for !isAni() [if !isA9], or !canSee(); vs !canHit() if(!(isA5=isAni(B5) && (isA5 || isB5))) return isA5; //=false: rtns isA9 of isAni() J5=O; //[asg to O5] >0 rtnd= flg for seen specs rpld by better hit specs System.arraycopy(Z7,I,Z5,I,P5=E7); if(isB5 || D5==Sam) //det tgt pos (poss sde bon) for atkr K5=Rea; //tgt-to-src sde pos= Trampling or Hth else{ K5=Fro; //also spec rearmost tgt-to-src sde pos/ hitable hex for(Q5=I;Q5<=P5;Q5++) //prv for better hit cap of nonhead src hexes, or Fro tgt arcs outside src's vu if((N5=arcPos(B5,Z5[Q5]))>K5 && (O5=G6)>O && arcPos(A5,C6)==Fro){ //_6s of arcPos(B5,) //`unnec D5=Fro; J5=O5; //tgt-to-src arc K5=N5; //tgt-to-src pos L5=hexDst(M5=Z5[Q5],H5=B6); //B6 of arcPos(+/-A5,) } //if((L5= } //else(isB5 if((O5=J5) Lyg isA5=D5==Sam || shdArc(Math.abs(A5))N?Sk1 //Sam-> Unarm :(isA7 && L5<3 && (str(A5$).indexOf("jab")>N || str(A5$).indexOf("jb2")>N && (freHnd(A7) || isA8))?Jab //A9$ of wrd(), isA8 of freHnd() :(isA7 && str(A5$).indexOf("msl")>N //`?chk lod amo cap && L5<=(wrd(D7,ItmTyp).equals("Blowgun")?HrlRng:MslRng)?Fr1 :(isA7 && str(A5$).indexOf("hrl")>N && L5<=HrlRng?Hrl:O)))); if(isA7 && N5==Sk1) //poss rev of B7, N5 for(P5=F7;P5<=C7;P5++) //prf mel vs msl wpn if(wrd(pri(Z7[P5]),ItmRng).indexOf("adj")>N) B7=Z7[P5]; //`Onfall rev if(isA7 && D5==Sam) //prf Hth cap wpn for(P5=I;P5<=C7;P5++) if(wrd(pri(Z7[P5]),ItmRng).indexOf("hth")>N){ N5=Sk1; //vs Jab dfa abv B7=Z7[P5]; } //if(wrd(pri(Z7[P5]), if(isA7 && N5==O && L5<=HrlRng) //chk ofh Hrl cap //`Onfall rev for(P5=F7;P5<=C7;P5++) if(wrd(pri(Z7[P5]),ItmRng).indexOf("hrl")>N){ N5=Hrl; B7=Z7[P5]; } //if(wrd(pri(Z7[P5]), //`alt N5=isA7 && N5==O?(L5<=HrlRng && str(B5$).indexOf("hrl")>N?Hrl:O):O; isA5&=N5>O; //N5 cap= how src can hit tgt if in Sam/ Fro fac return isA5|=isB5; //D5==Sam && !isB5 -> in Hth } //canHit mth - rtns isA5, isB5 (trample cap), D5 (Fro- most srcPos), E5 (srcArc), //F5 (tgt fig hex siz), H5 (tgtCoo), I5 (tgt fig pst), J5 (src-rel tgtArc(s)), //K5 (Rea- most tgtPos), L5 (tgt rng), M5 (srcCoo), N5 (atk typ), O5 (=0 flg for seen tgt use) //Z5[] (src fig coo map: Z5[1]=0 flg for tgt unseen), _7s of isArm() public boolean canSee(int elm,int vlu){ //calls chkLos(at,to) at lvl 5 - uses: hexBlk //for canHit() qua - Obs qua incorp isBy(x,y) || canSee(x,y) A5=elm; //src fig: <0 -> chk only fwd-V vu cone, vs any Fro dir los B5=vlu; //<0 -> tgt hex, else tgt fig // C5=num; //`?addl qua for See cap: any adj, poss Invis, in dark.. if(B5==O || B5>O && (B5=figEnd || z1$[B5].charAt(O)==Fre0$)) return isA5=false; if(B5>O){ mapFig(B5); System.arraycopy(Z7,I,Z5,I,F5=E7); //_7s of mapFig() } //if(B5>O else Z5[F5=I]=-B5; G5=H5=O; //ini vis tgt hex [rtn val for canHit()], #vis hexes cnt I5=C; //ini nea vis tgt hex dst for(J5=I;J5<=F5;J5++){ //rel to A5's head hex only D5=arcPos(val(pri(Math.abs(A5)),FigSiz)>=300?A8:A5,Z5[J5]); //A8 of pri() E5=G6; //A8/ abs usg= any Fro cfg only for 3/4- hex figs, _6s of arcPos() if((D5==Sam || (A5>O?D5==Fro:isCmn(E5,13))) //hlt/mvg obsvr qua && chkLos(C6,Z5[J5])){ //`?poss 2 figs in sam/ adj hex (D6<2) can't see ea oth H5++; if(losDstO){ D5=K5; E5=L5; } //if(isA5= return isA5; //in (1 head hex's) front view (angle or side type) arc & unblkd LOS path //canSee() doesn't treat adj figs as auto vis [ref canHit() ] } //canSee mth - rtns isA5, losCoo (1st blkg hex fro src to fin tgt hex if !isA5), //D5 (Fro- most pos of tgt from src), E5 (src's rel src head-to-G5 dir/vu arc(s)), //F5 (tgt siz in hexes), G5 (tgt hex), H5 (tgt fig #hexes vis), I5 (G5 dst), Z5[] (tgt coo map) public boolean chkLos(int at,int to){ //uses: hexBlk `ass Fea in hex -> no ani cap/ vis thru hex isA5=true; losIni(at,to); //note ini asg: A9..D9= at, to cols & rows in hexDst() while(losStp at hex, else src fig B5=vlu; //Ega, Foe, Pty, Any, figGrp elm `?nec: +Set, Out (or chk in callg cod)/ isUp, Op blw C5=D5=E5=G5=M5=N5=O; //ini rtn val; chk hex's max fac bon/ adj tgt fig, ega'g fig(s) tot siz if(A5>O){ mapFig(A5); System.arraycopy(Z7,I,Z5,Src,H5=E7); //_7s of mapFig() } //if(A5>O else{ Z5[Src]=-A5; H5=I; } //else(A5>O for(I5=Src;I5O?A5:newSid)) && (B5==Foe || B5==Ega) || !isB5 && B5==Pty || B5>=figGrp && B5==Z5[L5] || B5==Any)){ isA5=false; //chk prev lst'd for(F5=Lis;F5D5){ //`?if(B5!=Ega && : for E5 incl as Z5[] elm D5=F6; //pik adj fig, w prec to at hex fig's Rea/Sde/Fro: F6 of arcPos() (vs =O5 if A5<0) E5=Z5[L5]; P5=wayHex(Z5[I5],J5); } //if(A5O && isB5 && O5>M5 && arcPos(A5,val(Z5[L5],FigCoo))==Fro){ M5=O5; //pik adj fig, w prec to hit its Rea/Sde/Fro N5=Z5[L5]; } //if(A5>O && } //if((A5=figGrp && B5==I5 || B5==Any || (isA5=isFoe(I5,A5>O?A5:newSid)) && (B5==Foe || B5==Ega) || !isA5 && B5==Pty)){ mapFig(I5); System.arraycopy(Z7,I,Z5,Tgt,J5=E7); //_7s of mapFig() for(H5=Tgt;H51 (F5) fig's (E5) nea sde O5=K5; //chk tgt in (Fro) of A5 (=rev of pos of adj fig D5) } //if((L5= } //for(H5=I; } //if((A51 (F5) fig (E5) return isA5=C5>O; } //isBy mth - rtns: isA5 (adj qual?), C5 (#rng0..1 figs), //D5 (A5's sde twd en [Fro..Sam max fac bon for adj (Ega) to any at fig, exc A5<0= M5 (if egd)]), //E5 (D5 bon's fig if C5>0; else closest qual fig), F5 (rng to E5), G5 (tot siz of ega figs), //H5 (adj en's [best hit bon] sde twd A5), I5 (H5 bon's fig), J5 (A5's sde twd rng>1 fig), P5 (E5's mkr's adj hex), //Z5[] (list of C5 figs: Sam flg -) public int modIq(int elm){ if(z1$[A5=elm].charAt(O)==Fre0$) return modIQ=-C; B5=dig(pri(A5),FigAtr,FigIQ); C5=wrd(B8,FigTyp).equals("Dwarf")?I:O; //B8 of pri() modIQ=(isA5=modSt(A5)>I-C5)?dig(A5,FigChr,FigIQ):B5; //basal IQ if(isA5 && modST+C5<4) modIQ-=4-modST-C5; C5=dig(A5,FigChr,FigIqU)-dig(A5,FigHit,FigIUx); //Unused IQ- (pts spent) eq(A5$,cut(wrd(A5,FigNam))); elmNum=itmGrp; //mods while(elmNumO){ if(str(A5$).equals(wrd(elmNum,ItmOwn))) modIQ+=val(elmNum,ItmBon); elmNum++; } //while(elmNumZ5[FigIQ]+2 && Z5[FigIQ]-F5E5 && Z5[FigST]==Z5[FigDX]+I || Z5[FigST]+2F5 || Z5[FigST]+I13 || wrd(G5,ItmFnc).startsWith("-3"))) G5=H5; while(I5<15); //`G5=locItm(itmPoo,"Picket","wpn"); //`test ln addItm(C5,G5); J5=elmNum; //elmNum of addItm() //`wrdIn(J5,ItmLoc,"1thand"); //`test ln isA5=wrd(G5,ItmRdy).equals("2hand"); H5=O; if(wrd(G5,ItmRng).indexOf("hrl")O){ addItm(C5,elmNum); //elmNum of locDuo() addTo(elmNum,ItmBon,AmoLod); //elmNum of addItm() } //if(isMsl(H5) && } //if(wrd(G5,ItmRng).indexOf("hrl")O && rdm(6)<5?H5:G5,ItmRdy).equals("2hand"); //`L5=H5; isA5=isB5=true; //`test ln wrdIn(M5=L5==H5?K5:J5,ItmLoc,isB5?"2dhand":"1thand"); I5=K5=O; if(!isA5){ if(D5<12 && E5>11 && rdm(3)<3){ J5=hilCat-I; while(++J5N && rdm(++K5)<2) I5=J5; } //if(D5<12 && else if(isB5 || rdm(2)<2) I5=locElm(shdCat,ItmTyp,D5<9 || E5<12?"Sm Sh":"Lg Sh"); if(I5>O){ addItm(C5,I5); if(!isB5) wrdIn(elmNum,ItmLoc,"2dhand"); //elmNum of addItm() } //if(I5>O } //if(!isA5 if(I5O){ wrdIn(elmNum,ItmLoc,((J5=isMsl(L5)?2:rdm(2))<2?"1t":"2d")+"hand"); //elmNum of locDuo() if(J5<2) wrdIn(M5,ItmLoc,"2dhand"); } //if(I5O) //pot as lau addItm(C5,elmNum); //elmNum of locItm() J5=K5=O; L5=E5-(wrd(G5,ItmFnc).startsWith("-3")?2:O) -(I5>O && wrd(I5,ItmTyp).startsWith("Lg Sh")?I:O); if(D5X){ eq(B5$,L5>13 && rdm(6)<4?"Chain":(L5>11 && rdm(6)<5?"Leath":((K5=rdm(2))<2?"Cloth":"Parti"))); if(K5<2){ //`Onfall ver //eq(B5$,"Parti"); //`test ln J5=locElm(defItm,ItmTyp,str(B5$)); K5=K5<2?I:rdm(3); for(L5=I;L5<=K5;L5++){ addItm(C5,J5); wrdIn(elmNum,ItmLoc,wrd(J5,ItmRdy)); //elmNum of addItm() } //for(L5=I; } //`Onfall ver } //if(D5O) shoItm(elmNum); //*/ // if(isHex(Z5[C5]) && cooOcc(C9,Liv) && B6>O){ //`test ln //` if(isHex(Z5[C5]) && cooOcc(C9,Liv) && (F5=B6)>I){ //C9 of isHex(), _6s of cooOcc() G5=O; //ini stk mkr req for(D5=B5+I;D5<=B5+F5;D5++) if(A5!=Z5[D5] && isAni(Z5[D5]) && isAcq(Z5[D5])){ //wait to sho A5 on top of any stk (fin ln) if(isObs && isSee && dig(Z5[D5],FigOri,FigObs)O){ //sho stkd figs mkr (as all other figs masked by A5 fig) eq(xsA,DmyFig$); wrdIn(xsA,FigAre,str(are$)); valIn(xsA,FigCoo,Z5[C5]); digIn(xsA,FigOri,FigFac,E5>4?3:E5+2); shoFig(xsA); } //if(G5>O //` } //if(isHex(Z5[C5]) && } //for(C5=I; if(isObs && isSee && dig(A5,FigOri,FigObs) 1 break; valIn(A5,FigCoo,F5); //rcl at coo, fac digIn(A5,FigOri,FigFac,G5); return isA5; } //toOk mth rtns: Z5[] (fig's to coo, fac map), D5 (map #hexes), isB5 (hexes Ok), //Z6[] (figs in hex of cooOcc(Mov) exit (on !isA5 rtn)) public int vacSid(){ //`_5 lvl for conven only; could mov to _6 or _7 A5=sidPoo; //1st unini sid elm (=ff last ini), or unpop preexi sid elm while(z1$[A5].charAt(O)!=Fre0$ && locElm(figGrp,FigCtl,wrd(A5,SidVal))>O) A5++; //note: locElm chks re FigSid dig B5=A5-sidPoo+I; //packed, and numbered in SidVal order w sidPoo elm= SidVal 1 if(isA5=z1$[A5].charAt(O)==Fre0$) eq(A5,"Side"+B5+Div$+(sidCnt=B5)+Div$+"01"+Div$+'0'); return A5; } //vacSid mth rtns: A5 (sidPoo grp elm), B5 (SidVal), isA5 (new elm was ini), sidCnt public void shoMap(){ //uses: mapLft/Top/Wd/Ht Graphics g=getGraphics(); g.setColor(hue(MapBkg)); g.fillRect(mapLft,mapTop,mapWd,mapHt); g.setColor(hue(BdBdr)); g.drawRect(mapLft,mapTop,mapWd,mapHt); hexGrd(); eq(xsA,areNot$); A5=I; while(val(xsA,++A5)>C){ clrHex(-(B5=C9)); //C9 of val() for(C5=I;C5<7;C5++) if(isHex(wayHex(B5,C5))) clrHex(C9); //C9 of isHex() } //while(val(xsA,++A5)>O hexLbl(); for(A5=itmGrp;A5>I,pgnY[O]+pgnY[3]>>I, //pgn_[]s of drw() pgnX[I]+pgnX[2]>>I,pgnY[I]+pgnY[2]>>I); //fig Lyg pst ind if(isA6) g.drawLine(pgnX[I],pgnY[I],pgnX[3],pgnY[3]); //fig unc ind if(modST<(wrd(G6,FigTyp).equals("Dwarf")?O:I)) //modST of isUp() g.drawLine(pgnX[O],pgnY[O],pgnX[2],pgnY[2]); //fig xpi ind } //if(isA6 || if(!isB6){ //add fig run/bwd ind(s) eq(xsB,z1$[figFwd+val(G6,FigShp)].toString()); if(dig(A6,FigMov,FigMp)>O && B9>dig(A6,FigMov,FigMma)+I>>I) //B9 of dig() drw(O,O,"-1:["+wrd(xsB,I)+']'+hues[FigInd]+":]"); if(dig(A6,FigMov,FigDir)==N || B9==N+PivDir) //B9 of dig() drw(O,O,"-1:["+wrd(xsB,2)+']'+hues[FigInd]+":]"); /*`alt: //`if(dig(A6,FigMov,FigDir)=N+PivDir?20:O)==N){ //B9 of dig() hexQtr(B6,7-C6); eq(A6$,z1$[figImg+(val(G6,FigSiz)+50)/C]); //`req rev for frac siz >1 drw(O,O,"-1:["+str(A6$)+']'+hues[FigInd]+":]"); //add fig bak mov ind //` drw(O,O,""+hues[FigInd]+":["+str(A6$)+"]"); //filled } //if(dig(A6,FigMov,FigDir //*/ /*`? if(hav(A6,"Unbal","fx")){ //add fig Off Balance ind g.setColor(hue(FigInd)); g.drawOval(D6-hlfHexSid/2,E6-hlfHexSid/2,hlfHexSid,hlfHexSid); } //if(hav(A6,"Unbal" //*/ } //if(!isB6 //if(true){ B7=531; //`test ln [rpl nxt ln] if(!isB6 && shdArc(A6)>O){ //add fig shd hnd ind eq(xsB,z1$[figGua+val(G6,FigShp)].toString()); for(F6=I;F6<3;F6++) if(isCmn(B7,F6==I?I:5)) //B7 of shdArc() drw(O,O,"-1:["+wrd(xsB,F6)+']'+hues[FigInd]+":]"); /*`alt: [not neat] g.setColor(hue(FigInd)); for(J6=I;J6<=5;J6+=4) if(isCmn(B7,J6)){ //B7 of shdArc() H6=(3*pgnX[F6=J6<5?O:I]+D6)/4; I6=(3*pgnY[F6]+E6)/4; g.drawLine(H6,I6,(3*H6+(3*pgnX[F6=J6<5?I:O]+D6)/4)/4, (3*I6+(3*pgnY[F6]+E6)/4)/4); g.drawLine(H6,I6,((3*pgnX[F6=J6<5?3:2]+D6)/4+H6)/2, ((3*pgnY[F6]+E6)/4+I6)/2); } //if(isCmn(B7, //*/ } //if(!isB6 && } //if(isAni(A6) eq(A6$,z1$[figShp+val(G6,FigShp)]); F6=dig(wrd(A6,FigHue),I); drw(O,O,"-1:["+str(A6$)+']'+F6+":]"); //mkr outline in fgd hue eq(A6$,z1$[figImg+val(A6,FigImg)]); qtrMul=16; drw(O,O,""+F6+":["+str(A6$)+']'); //img in fgd hue qtrMul=I; //`if vu part map opt && fig only partially on map -> resto/ clr map edge } //shoFig mth - rtns B6(FigCoo), C6(FigFac), D6(hex ctr X), E6(hex ctr Y), G6(pri(A6)) public boolean isOp(int elm){ //`isAni() chk by clg rou return !(has(elm,"Oop","fx") || has(A7,"Shk","fx")); //note ini asgn A7=elm } //isOp mth public boolean isUp(int elm){ //`isAni() chk by clg rou return !(modSt(elm)<(wrd(pri(A6),FigTyp).equals("Dwarf")?I:2) || has(A6,"Swn","fx")); //note ini asgn A6=elm } //isUp mth public int modSt(int elm){ if(z1$[A6=elm].charAt(O)==Fre0$) return modST=-C; modST=dig(A6,FigChr,FigST); //basal ST modST-=dig(A6,FigHit,FigPhy)+dig(A9$,FigExh); //A9$ of dig() //`?dyn (heal poss) - rdm dur FigDmg prv see sidMov() case 2: eq(A6$,cut(wrd(A6,FigNam))); elmNum=itmGrp; //mods while(elmNumO){ if(str(A6$).equals(wrd(elmNum,ItmOwn))) modST+=val(elmNum,ItmBon); elmNum++; } //while(elmNumWpnIQ) //E9 of digIn() addTo(A6,FigChr,FigIqU,D9-WpnIQ); if(wrd(xsA,FigTyp).equals("Halfling")) addTo(A6,FigChr,FigIqF,I); //`?and addTo(A6,FigChr,FigIqU,N) //*/ if(wrd(pri(A6),FigTyp).equals("Halfling")) digIn(A6,FigChr,FigIqF,I); if(dig(A6,FigChr,FigIQ)>WpnIQ) digIn(A6,FigChr,FigIqU,B9-WpnIQ-dig(A6,FigChr,FigIqF)); //B9 of dig() } //tlyIq mth public void bdSiz(boolean flg){ isA6=flg; //to call repaint() dimMap(); /*`sq vs hex bd siz bdWd=vuWd=vuSqWd*sqWd; vuHt=vuSqHt*sqHt; bdHt=vuHt+ioHt+I; //+1 -> txt descenders don't hit btm bdr ioWd=bdWd; zonWd=ioWd/6; isB6=pflLoc[I]>O; //`rev for any SSDs' locs mapSqWd=vuSqWd; if(isB6) mapSqWd>>=I; mapSqHt=vuSqHt; mapWd=mapSqWd*sqWd; //`?+(isB6?O:2); mapHt=mapSqHt*sqHt; //*/ ltrPt=mapHt/16-I; //ltrPt--; //`test ln //` ltrPt=Math.max(hexHt*2/3,I); ltr=new Font("SanSerif",Font.PLAIN,ltrPt); typHt=ltrPt+I; ioHt=3*typHt; //`4*typHt for 4-line i/o (also see txtY in txt()) vuHt=mapHt; bdWd=vuWd=mapWd; bdHt=vuHt+ioHt+2; ioWd=bdWd; zonWd=ioWd/6; //` setSize(bdWd+I,bdHt+I); //calls repaint but only operative for applets, //and only actually resizes in Appletviewer if(isA6) repaint(); //alternative to setSize() (req -> manl Resizable) for apps } //bdSiz mth public void shoBd(){ //paint()-external graphics mth call forces complete redraw in AWT; // vs only clipping regions previously obscured by other windows Graphics g=getGraphics(); g.setColor(hue(BdBkg)); g.fillRect(O,O,bdWd,bdHt); g.setColor(hue(BdBdr)); g.drawRect(O,O,bdWd,bdHt); g.drawRect(O,vuHt,ioWd,ioHt+2); } //shoBd mth public void addFig(String dta$){ //eg. addFig("Orc,Adv,@,307,63,1,30,Ardir,"+wrd(vacSid(),SidVal)+",101408,H10,0,mr"); //FigTyp,Cla,Are,Coo,Ori[->+0/1],Img,Hue,Nam,Ctl[->+n+Usr/Mac],Chr,Rtg,Ep,Gen eq(xsA,dta$); if((A6=locElm(figGrp,FigTyp,Fre$))==O) if(figEnd>=itmGrp) return; else A6=elmNum=figEnd++; //elmNum of locElm() eq(A6$,wrd(xsA,FigCla)); B6="BA".indexOf(A6$.charAt(O)); eq(A6$,cut(wrd(xsA,FigTyp))+Div$+str(A6$)+Div$ +(wrd(xsA,FigAre).charAt(O)=='@'?str(are$):str(A9$))+Div$ //A9$ of wrd() +wrd(xsA,FigCoo)+Div$+wrd(xsA,FigOri)+(B6>N?'0':'1')+Div$ +wrd(xsA,FigImg)+Div$+wrd(xsA,FigHue)); eq(A6,A6$); if(B6O?str(A9$):"B"+(++bstNam))+Div$ //A9$ of wrd() +wrd(xsA,FigCtl)+str(A9$)+(B6>O?Usr:Mac) //A9$ of wrd() +"0,00000,"+wrd(xsA,FigRtg)+Div$+wrd(xsA,FigEp)+Div$ //+Ctl (fin),Chr,.. +wrd(xsA,FigGen)+Div$ +"000000,"+wrd(xsA,FigCoo)+Div$ //+Hit,Ogn, +"000000,05000,0,0000000,0,0,0,0"); //+Mov,Sta,Sbj,Act,Obj,Prj,Itm,Pth C6=val(xsA,FigChr); digIn(A6,FigChr,FigST,C6/(X*M)); digIn(A6,FigChr,FigDX,C6/C%C); digIn(A6,FigChr,FigIQ,C6%C); digIn(A6,FigRtg,FigGra,gra(A6)); } //else(B6O; } //isHth mth rtns: true if figs of dif (unallied, opr) sids at sam pst lvl in hex, //isA6,B6,C6,Z6[] of cooOcc(), D6 (compos of all hth psts) public boolean cooOcc(int at,int vlu){ //uses: are$ (coo's containing area dsg), newSid (re Foe arg) A6=at; G6=vlu; //All, Mov, Foe, Liv typ occs; [opt: See, Atk vs Mov, Fly into/ thru hex cap] isA6=false; //ini rtn vals B6=C6=O; isB6=G6!=Foe && G6!=Mov; for(D6=figGrp;D6=200){ //`?eff: && Math.abs(A6/C-D6/C)<3 && Math.abs(A6%C-D6%C)<3 F6=dig(C6,FigOri,FigFac); if(wayHex(D6,7-F6)==A6 || E6>=300 && wayHex(D6,dig(SidCyc$,SidCyc$.indexOf(""+C9)+I))==A6 || E6>=400 && wayHex(F9,7-F6)==A6) //_9s of wayHex()s isA6=true; } //if(!isA6 && if(isA6) Z6[++B6]=C6; //*/ //`if(E6>=100 && dig(C6,FigOri,FigPst)>I) break; //`NO: items/fx/nui cre.. allowed //`if(wrd(C6,FigCla).equals("Fea")) break; //`NO: (secret) doors.. allowed } //if(isAni(D6 else if(G6!=Liv && val(D6,FigCoo)==A6 && wrd(D6,FigCla).equals("Fea")){ //`not incl trv.. Z6[++B6]=D6; if(C6O) && !wrd(E6=Z6[I],FigCla).equals("Fea")) for(D6=I;D6<=B6;D6++) //note any Fea in Z6[1] (`?nec: for chkLos() sbrs) if(wrd(Z6[D6],FigCla).equals("Fea")){ Z6[I]=Z6[D6]; Z6[D6]=E6; break; } //if(wrd(Z6[ return isA6|=B6>O && (G6!=Mov || C6>Lyg); } //cooOcc mth rtns: B6(#occs), Z6[](list of occs: [0] unused), C6(hi pst in hex) public int arcPos(int elm,int vlu){ //`?nec chk for blkd los -> rtn 0 (vs canSee/Hit()?) A6=elm; //fig for pos: <0 -> calc angle- typ arc (vs side- typ) B6=vlu; //tgt hex if(isA6=A6(E6=I)){ //E6= hex of multihex fig mapFig(A6); for(G6=2;G6<=F6;G6++) if(hexDst(Z7[G6],B6)I){ G6=O; while(++G6'6'); //loo in cdn } //if(E6>I J6=G6=facArc(dig(A6,FigOri,FigFac),objArc(isA6?-C6:C6,B6)); //txt("131A6$="+str(A6$)+", facArc="+G6+", objArc="+objArc(C6,B6)+"/"+E8 // +", idx="+SidCyc$.indexOf(A6$.charAt(F6))); //`test ln K6=Rea; //ini best pos hldr do{ //prv to cho best pos whn vtx- joi los I6=F6; L6=SidCyc$.indexOf(A6$.charAt(I6++)); while(dig(SidCyc$,L6++)!=J6%X) I6++; K6=Math.min(+A6$.charAt(I6)-+'a'+Fro,K6); /*`alt A$=A6$.charAt(I6); if(K6==Sde && A$=='c') break; K6=A$=='a'?Fro:(A$=='b'?Sde:Rea); if(K6==Fro) break; //*/ }while((J6/=X)>O); return F6=K6; } //arcPos mth - rtns A6,B6,C6,D6,E6, F6 ([`?0,] Fro,Sde,Rea,Sam best vu pos), //G6 (facArc() val 1..6(+1..6) rel sid/ang arc(s)), Z7[] fig mkr coo(s) ary public boolean isFoe(int elm,int vlu){ A6=elm; //figGrp elm B6=vlu; //figGrp or sidPoo elm C6=sid(A6); //opr sidPoo elm D6=B7; //opr SidVal: _7s of sid() E6=C7>O?val(C7,SidVal):O; //aly SidVal return isA6=B6=0; isB6=str(C6$).indexOf("ammo")>=0; if(A6!=trvChr && (isA6 || isB6)){ chkWpn(A6); if(isA6 && (Z7[9]<1 || Z7[3]<1 && str(B6$).indexOf("Bow")<0) || isB6 && Z7[8]<1) //Z7[]s of chkWpn() eq(A6$,"Sbj overloaded"); } //if(isA6 || if(D6>=bstCat && (WpnCod$.indexOf(wrd(D6,ChrWp1).charAt(2))<0 || wrd(D6,ChrTyp).equals("Manticore") || C6$.charAt(0)!='=')) eq(A6$,"Beasts using normal weapons only"); isA6=wrd(C6,ItmRep).equals("uni"); //1ea/uni fxs prev chkd; & nxt if((isA6 || wrd(C6,ItmRep).equals("1ea")) && hav(isA6?-A6:A6,str(B6$),str(C6$))) eq(A6$,"Can't have more than 1"); if(x1!=PikPty && wrd(C6,ItmRdy).equals("nil")) eq(A6$,"Item immaterial"); return isA6=A6$.length()<1; //*/ return true; } //takItm mth - rtns isA6 (cap of take), A6$ (error msg) public void givItm(int elm,int vlu,int num){ //`incorps rmvItm() sbr on A6=0 `?nec -> z1$[] grb clt A6=elm; //gains transferred itm `<0= (are$) coo to plc in B6=vlu; //itmGrp elm G6=num; //# to give, or All w cond.s here elmNum=O; if(false) //`?exi cdns return; eq(A6$,A6E6?E6:G6; if(A6>O && Math.max(itmCat(C6),B8)==amoCat){ //B8 of itmCat() //` chkWpn/ isArm(A6); //Z7[8] of chkWpn()= #amo can take F6=Math.min(F6,(AmoLod<O && addTo(B6,ItmBon,-F6); addTo(D6,ItmBon,F6); if(isB6=F6==E6) eq(B6,Fre$); //del source itm } //if(isA6 else //ItmRep= mul wrdIn(B6,ItmOwn,str(A6$)); wrdIn(H6=isA6?D6:B6,ItmLoc,A6O){ valIn(B6,ItmOpn,O); //mus unrdy xfrd amo -> reload [`?prv in lodg] (or drop & lod fro slf) if(I6>=itmGrp) givItm(A6,I6,I); //lod amo chg hnd (recur call) } //if(isMsl(C6) && } //givItm mth - rtns elmNum= elm# of (las, if lod amo) itm rcvd //var lvl 7 subroutines public boolean isArm(int elm){ //`may incl Drag calc [see fmn_mdl.rtf] A7=elm; isB7=hav(A7,"","amo"); //`isB7 not mod by has() if(LasRdy+F7F7;C7--) Z7[C7]=Z7[C7-I]; Z7[isA8?F7++:F7]=B7; } //if(isMsl(pri(Z7[D7])) || if((C7=E7)>F7 && wrd(Z7[F7+I],ItmLoc).equals("1thand") //2x 1hd nonmsl wpns && wrd(pri(Z7[F7+I]),ItmRng).indexOf("ofh")=itmGrp || .. if(isA7=Z7[G7]>O && str(A8$).startsWith(wrd(Z7[G7],ItmCod))) //A8$ of isMsl() `? && val(Z7[G7],ItmBon)>O break; while(!isA7 && ++H7<=C7); if(!isA7) //no msl wpns w amo B7=Z7[(isA7=C7>=F7)?F7:I]; //1st reg/ofh, or 1st unusable msl wo amo E7=Math.max(itmCat(D7=pri(B7)),B8); //B8 of itmCat for(I7=I;I7<=C7;I7++) A7$.append(wrd(pri(Z7[I7]),ItmRng)+'/'); } //if(isA7 //rtns isA7 (wpn usable), isB7 (hav(A7,"","amo")), B7 (isA7?rdy:unrdy wpn - if msl= hav amo), //C7 (#wpns in hnd), D7 (pri(B7)), E7 (D7 cat), F7 (see nxt ln), G7 (Z7[] elm of amo for msl B7), //H7 (Z7[] elm of msl B7), A7$ (comp of held wpns' rng caps), //Z7[1..(F7-1)=rdy nonadj msls; F7..C7=rdy regs -> ofhs; LasRdy+1..(Z7Siz or 1st 0 elm)=unrdy & amos] /*`mod arh cod eq(A7$,cut(wrd(A7,FigNam))); Z7[I]=Z7[2]=B7=C7=E7=F7=G7=O; D7=itmGrp; while(D7<=itmEnd && locElm(D7,ItmOwn,str(A7$))>O){ D7=elmNum; itmCat(H7=pri(D7)); I7=B8; //B8 of itmCat() //` if(wrd(H7,ItmTyp).indexOf("Arrow")>=O){ //`finds =/+/* aro if(wrd(D7,ItmCla).indexOf("amo")>=O){ //finds =/+/* amo B7++; isA7=wrd(H7,ItmRep).equals("acu"); F7+=isA7?val(D7,ItmBon):I; if(C7=O){ //finds =/+/* wpn Z7[++E7]=D7; //wpns held (slots filled) if(I7==mslCat) G7++; //# of bows held } //if(wrd(D7,ItmCla).indexOf("wpn D7++; } //while(D7<=itmEnd && Z7[4]=B7; Z7[5]=C7; Z7[6]=isB7?O:I; Z7[7]=F7; //`?safety chk: E7=Math.min(O,E7); G7=Math.min(2,G7); D7=(F7+11)/12; //(+11 to round up) #slots covered by arrows E7=2-E7; Z7[3]=E7-Math.max(O,D7-G7); Z7[8]=12*(E7+G7)-F7; Z7[9]=E7; //*/ return isA7; } //isArm `arh (viz chkWpn mth) rtns Z7[1] 1st wpn elm, [2] 2nd wpn elm, [3] #non-Bow wpns can take, //[4] arrow #elms, [5] ord, or 1st mag arrow elm, [6] 0/1 [5]= ord/mag, //[7] #arrows held, [8] #arrows can take, [9] #Bows can take= #slots open public void shoItm(int elm){ A7=elm; if(z1$[A7].charAt(O)!='@' || !wrd(A7,ItmOwn).substring(I,3).equals(str(are$))) return; B7=dig(A9$,3); //A9$ of wrd() C7=dig(A9$,4); Graphics g=getGraphics(); g.setColor(StdHue[O]); g.drawLine(hexCtr(C*B7+C7)-hlfHexSid,D9-hlfHexSid,C9+hlfHexSid,D9+hlfHexSid); g.drawLine(C9+hlfHexSid,D9-hlfHexSid,C9-hlfHexSid,D9+hlfHexSid); //_9s of hexCtr() } //shoItm sbr mth- rtns B7, C7 public StringBuffer dic(int num,String dta$){ //uses: dieFac `?incorp as arg A7=num; //<0= append call roll to existing die$ eq(A7$,dta$); B7=Math.abs(A7); if(A7>=O) die$.setLength(O); if(A7==O) return die$; txt("034"); txt("134"+str(A7$)+":"); for(C7=O;C79 /*`alt E7=rdm(3)+3; //# of rolling face changes for dice for(C7=I;C7N) F7=F7Lwr) //shd not lowered `?opt: G7 vs F7 asm Cvr w 1= Cvr w all B7=B7>C || F7==Cvr || B7!=H7 && B7>O?135:H7; //shds & ofh wpns if(wrd(pri(Z7[D7]),ItmTyp).indexOf("Shield")>N) if(F7>Lwr) C7=C7>C || F7==Cvr || C7!=H7 && C7>O?135:H7; //jst shds else I7=I7>C || I7!=H7 && I7>O?135:H7; } //for(D7=I; } //if(has(A7, else B7=C7=I7=O; //_7s chgd by has() return B7; } //shdArc mth - rtns B7 (shd- typ fig arcs= (1)3(1/5)), C7 (shds eff arcs), E7 (#shd- typ itms of has()), //G7 (max of Lwr/Odr/Cvr), I7 (shds rdy arcs: incl Lwr), Z7[] (itm lst of has()) public StringBuffer mapFro(int elm){ A7=elm; //figGrp elm for fro hex map A7$.setLength(O); B7=O; //#Fro hexes if(dig(A7,FigOri,FigPst)==Lyg) //isAni,Are,Up,Op() call from callg lvl return A7$; mapFig(A7); eq(B7$,wrd(B7,FigFro)); //_7s of mapFig() if(str(B7$).equals("reg")){ eq(xsA,RegFro$); eq(B7$,wrd(xsA,E7)); } //if(str(B7$ B7=O; C7=B7$.length(); E7=O; //fig hex# for(F7=O;F7I) A7$.append(Div$); A7$.append(wayHex(Z7[E7],facRot(D7,dig(SidCyc$,F7-G7+H7)))); } //if(A$=='a } //for(F7=O; return A7$; } //mapFro mth - rtns public boolean canDdg(int elm,int vlu){ mapFig(elm); //tgt figGrp elm: note ini asn =A7 of mapFig() B7=vlu; //src " C7=C; F7=val(A7,FigOgn); G7=val(B7,FigCoo); //src fig head hex for(D7=I;D7<=E7;D7++) //Z7[], E7 of mapFig() C7=Math.min(C7,losOff(G7,F7,Z7[D7])); return isA7=C7>=DdgOff; } //canDdg mth: rtns public void mapFig(int elm){ //uses: A7=elm; B7=pri(A7); C7=val(A7,FigCoo); D7=dig(A7,FigOri,FigFac); E7=(val(B7,FigSiz)+99)/C; //sbj fig siz in unit hexes (so fig siz 1..100=1, etc.) //`for(F7=I;F7<=E7;F7++) Z7[F7]=O; //`?suc elms unchgd; use for cmps: or F7<=Z7Siz // Z7[O]=E7; //`?nec Z7[I]=C7; F7=7-D7; for(G7=2;G7<=E7;G7++) Z7[G7]=wayHex(Z7[G7-I],G7!=3?F7 :dig(SidCyc$,3+((F7&I)>O?N:I)*(F7>>I))); //adj to hex2 ccw around head //`alt: dig(SidCyc$,SidCyc$.indexOf(""+F7)+I) /*`alt: I7=I; Z7[I7]=C7; if(I7>=E7) return; G7=7-D7; //prov for 2,3,4- hex figs F7=wayHex(C7,G7); Z7[++I7]=F7; //refl from fac //`alt clrHex(wayHex(C7,dig(SidCyc$,SidCyc$.indexOf((char)(Asc0+E7))+I))); //`alt clrHex(wayHex(F7,dig(SidCyc$,3+((E7&I)=E7) return; J7=G7>>I; //prov for 3,4- hex figs if((G7&I)>O) J7=-J7; H7=wayHex(F7,dig(SidCyc$,3+J7)); Z7[++I7]=H7; if(I7>=E7) return; Z7[++I7]=wayHex(H7,G7); //prov for 4- hex figs //*/ } //mapFig mth public void addItm(int elm,int vlu){ //typ$ arg call: addItm(own,locItm(itmPoo,"typ","cla")) A7=elm; //gains new itm: <0= coo owned eg. -2003 -> @AaD3 B7=vlu; //itmPoo elm: <0= don't acu acu- typ itm if(!(isA7=B7>O)) B7=-B7; if(B7=figGrp) return; eq(A7$,A7O; //note ini asgn: A7= elm, A7$= typ$, B8$= cla$ //hav(srcChr,"Axe","wpn") finds 1st readied, or last unreadied elm (using l to r eval) } //hav mth public boolean has(int elm,String typ$,String cla$){ //db ary chk suite: has() - isRdy() - pri() - locItm() - locElm() - val/wrd() - nthDiv() A7=elm; eq(A7$,typ$); //`note "^"+dig(n) (ie +char) cur usg eq(B7$,cla$); B7=A7>O?A7: //pos chr arg -> chk chr itms only (A7>HasEmy?-A7: //neg chr arg, but HasEmy not added -> chk all on chr sid (--A7= +A7) -A7+HasEmy); //neg chr arg w HasEmy added -> chk all on chr opp sid (--A7= +A7) eq(C7$,""+Div$); if(A7>HasEmy) C7$.append(cut(wrd(B7,FigNam))); if(A7O){ //find remaining chr in this coo if(elmNum!=B7 && str(E7$).indexOf(wrd(elmNum,FigCtl).charAt(FigOpr))>=O) //if another on same side C7$.append(Div$).append(cut(wrd(elmNum,FigNam))); elmNum++; } //while(elmNumO && A7$.charAt(O)=='^'){ //chk pri(itm)s' fld; w rdy cap eg. hav(n,"^"+ItmNat,"magic") for(C7=itmGrp;C7N && wrd(pri(C7),dig(A7$,I)).indexOf(str(B7$))>N){ //`mod'd for partial ety B7=C7; if(isRdy(C7)){ if(D7==O) D7=C7; if(E7O && `{} req by Javac viz nxt else aft ifs else{ C7=itmGrp; //use of C7 vs elmNum directly due to pri() in isRdy() while(C7O){ C7=elmNum; //elmNum of locItm() [mod'd: "amped" cla rcd prv] if(str(C7$).indexOf(Div$+wrd(C7,ItmOwn)+Div$)>N) if(isRdy(B7=C7)){ if(D7==O) D7=B7; if(E7O && elmNum=B7; lasRdy=LasRdy; return isA7=D7>O; //B7=elmNum val avail (see hav()) } //has mth - rtns B7=elmNum (last qual elm; rdy or not), D7 (first qual rdy elm), //E7 (#rdy itms), F7 (#unrdy itms), Z7[] (itm ary, sep by lasRdy) public boolean cooItm(int elm){ //`lvl prv for pri() - may be called by cooOcc() A7=elm; //-1 (<0)= chk all are$ coos; else one desig are$ map coo eq(A7$,"@"+are$); //chk all area coos if(A7>O) //chk spec area coo A7$.append(dig(A7/C)).append(dig(A7%C)); B7=O; //ini loc itm cnt elmNum=itmGrp-I; while(B7O) Z7[++B7]=elmNum; //elmNum of locElm() return isA7=B7>O; } //cooItm mth public int sid(int elm){ A7=elm; eq(A7$,wrd(A7,FigCtl)); B7=dig(A7$,FigOpr); //opr SidVal E7=dig(A7$,FigSid); //A9$ of dig/wrd() C7=dig(A7$,FigAly)>O?locElm(sidPoo,SidVal,""+B9):O; //B9 of dig() D7=locElm(sidPoo,SidVal,""+E7); return B7==E7?elmNum:locElm(sidPoo,SidVal,""+B7); //elmNum of locElm } //sid mth - rtns elmNum (sidPoo opr sid; vs ogn sid), B7 (opr sid val), C7 (aly elm, or 0), //D7 (ogn sid), E7 (ogn sid val) /*`rpl by canHit() calg isArm() public boolean isJab(int elm){ //fig can make a 2- hex rng Jab atk A7=elm; //figGrp elm isA7=freHnd(A7); isB7=isA8; //_8s of freHnd() isA7=C8>=itmGrp && itmCat(C7=pri(B7=C8))==wpnItm && (D7=B8)D7+I && isB7 //_8s of itmCat() || false); return isA7; } //isJab mth //*/ public void mrkHex(int at,int vlu){ A7=vlu; //<0 -> outline hex, but don't fill reHex(at); Graphics g=getGraphics(); g.setColor(StdHue[Math.abs(A7)]); if(A7>N) g.fillPolygon(pgnX,pgnY,vtxCnt); //pgnX[] & pgnY[] arys of reHex() `?nec outline only g.drawPolygon(pgnX,pgnY,vtxCnt); //pgnX[] & pgnY[] arys of reHex() } //mrkHex mth rtns: (none) public void shoWay(){ A7=vuHt; //sto vuHt+=bdrWd; txt("116 3"); txt("136 4"); vuHt+=typHt>>I; txt("116 1 5"); txt("126 2 6"); vuHt-=typHt/3; txt("126 *"); vuHt=A7; //rcl } //shoWay mth public String figNam(int elm){ //condenses bst names from bstNam var eg. "B142" to "B2" A7=elm; if(A7=figEnd || z1$[A7].charAt(O)==Fre0$) return ""; eq(A7$,wrd(A7,FigNam)); //`?general truncate of overly-long names return dig(A7$,B7=Math.min(I,C7=C9-I))>O && B9 hex `?req in cas of pot upg: eg makRdy(A7,Wpn/ Any) B7=vlu; //itm elm>= itmGrp: if cur rdy -> unrdy/ switch 1 loc eq(B7$,wrd(B7,ItmLoc)); //item's present location if(A7<=O) //admin only: call from givItm() `?if(wrd(B7,ItmOwn).charAt(O)=='@' //`?nec eq(A7$,"floor"); wrdIn(B7,ItmLoc,str(A7$)); return; eq(C7$,cut(wrd(A7,FigNam))); if(!wrd(B7,ItmOwn).equals(str(C7$))) //`Onfall ver takg fro hex floor wrdIn(B7,ItmOwn,str(C7$)); //note: cut("1t/2dhand" & locDuo(.."1t/2dhand") also find "1t/2dhands" if(cut(B7$).equals(cut("2dhand"))){ //now in 2dh -> unready itm eq(A7$,wrd(pri(B7),ItmCla).substring(A$<'a'?I:O)); //A$ of wrd() isA7=wrd(B8,ItmRdy).equals("2hand") || "shd,amr".indexOf(str(A7$))>N; //B8 of pri() eq(A7$,isA7?(str(A7$).equals("amr")?"body":"back"):"belt"); valIn(B7,ItmOpn,O); //any sta nul `?if(); ?or, lv amo itm in 2dhand } //if(cut(B7$).equals(cut("2dhand" else{ //rdy itm: w displacement of any existing itm if(cut(B7$).equals(cut("1thand"))){ //now in 1th -> switch hands eq(A7$,"2dhand"); if(locDuo(itmGrp,ItmOwn,str(C7$),ItmLoc,"2dhand")>O) wrdIn(elmNum,ItmLoc,"1thand"); //elmNum of locDuo() } //if(cut(B7$).equals(cut("1thand" else{ if(locDuo(itmGrp,ItmOwn,str(C7$),ItmLoc,"2dhand")>O) //now unheld -> disp 2dh if(wrd(pri(C7=elmNum),ItmRdy).equals("2hand") //disp 2h itm into 1th: elmNum of locDuo() && locDuo(itmGrp,ItmOwn,str(C7$),ItmLoc,"1thand")O){ eq(A7$,"2dhand"); if(locDuo(itmGrp,ItmOwn,str(C7$),ItmLoc,"2dhand")>O){ //disp 2dh itm to unrdy isA7=wrd(pri(elmNum),ItmRdy).equals("2hand") //elmNum of locDuo() || "shd,amr".indexOf(wrd(B8,ItmCla) //B8 of pri() .substring(A$<'a'?I:O))>N; //A$ of wrd() wrdIn(C7,ItmLoc,isA7?"back":"belt"); } //if(locDuo(itmGrp,ItmOwn,str(C7$),ItmLoc,"2dhand")>O } //if(locDuo(itmGrp,ItmOwn,str(C7$),ItmLoc,"1thand")>O } //else(cut(B7$).equals(cut("1thand" } //else(cut(B7$).equals(cut("2dhand" wrdIn(B7,ItmLoc,str(A7$)); if(locDuo(itmGrp,ItmOwn,str(C7$),ItmLoc,"1thand")>O) if(wrd(pri(C7=elmNum),ItmRdy).equals("2hand") //elmNum of locDuo() && locDuo(itmGrp,ItmOwn,str(C7$),ItmLoc,"2dhand")A7 || mapWd>B7) && --hlfHexSid>I); //mapHt.Wd of dimMap() hexFit(); } //dimVu sbr mth //var lvl 8 subroutines public boolean isRdy(int elm){ //db ary chk suite: has() - isRdy() - pri() - locItm() - locElm() - val/wrd() - nthDiv() A8=elm; //unchgd by pri(), A8$ chgd by locElm() in locDuo() if(A8=itmEnd || z1$[A8].charAt(O)==Fre0$ || (E8=locElm(figGrp,FigNam,wrd(A8,ItmOwn)))N) isA8=G8==I //`?call freHnd() || G8==2 && locDuo(itmGrp,ItmOwn,wrd(A8,ItmOwn), ItmLoc,F8==I?"2dhand":"1thand")-7) txtY-=2; //so inv lns & '>' csr del don't ovrun ioTop div lin if(B8' csr del don't ovrun ioTop div lin //..also note assoc chkPfl()'s dimVu(,,arg-2) mod to lmt map ht /*`test lns if(B8<-6) txtY-=typHt*3/4; else if(B83?typHt*dig(lin$,3):(B84?zonWd*dig(lin$,4):ioWd-txtX; g.setColor(hue(BrfBkg)); g.fillRect(txtX,txtY,B8,C8); //`?-> redraw bdr for that whole area (which area: deter by line#) //`g.setColor(StdHue[bdBdr]); //`g.drawRect(areaBdrx,areay,areawd,areaht); return; } //if(txtTyp==O else{ g.setColor(hue(BrfFgd)); g.setFont(ltr); g.drawString(str(lin$).substring(txtCodLg),txtX,txtY); if(txtTyp==5){ //display in pseudo bold type g.drawString(str(lin$).substring(txtCodLg),txtX+I,txtY); txtTyp=I; } //if(txtTyp==5 } //else (txtTyp==O isKey=false; if(txtTyp==2){ key7$=key6$=key5$=key4$=key3$=key2$=key1$='0'; //`dfa vals, in case of mouse click - nec? inpVal=O; //ini for KeyListener } //if(txtTyp==2 else if(txtTyp>2) isLin=true; //decl as false, & leaves keyTyped() false } //txt mth public boolean freHnd(int elm){ //prv only for 1t/2dhand (no 3d..etc.hand) A8=elm; //figGrp elm B8=3; //ini rtn val C8=D8=O; //ini any itm in 1t & 2d hnd isA8=false; //ini 2 hnd use of 1 hnd wpn flg eq(A8$,cut(wrd(A8,FigNam))); for(E8=itmGrp;E8<=itmEnd;E8++) if(wrd(E8,ItmOwn).equals(str(A8$)) && wrd(E8,ItmLoc).indexOf("hand")>N){ if(str(A9$).equals("1thand")) //_9s of wrd() C8=E8; else D8=E8; isA8=A9$.charAt(C9-I)=='s'; if((B8=(isA8 || dig(A9$,O)==B8?O:3-B9))O; } //freHnd mth - rtns B8 (0..3= neither, 1t, 2d, or both hands free), C8 (itm in 1th) //D8 (itm in 2dh or both), isA8 (A8 using 1 hnd wpn w both hnds) public int itmCat(int elm){ A8=elm; //elm within itmPoo //if A8=itmPoo && C8==O){ if(A8==fxItm || A8==defItm || A8==wpnItm || A8==eqpItm || A8==mscItm || A8==splItm || A8==tlnItm) C8=A8; if(B8==O && (A8==amrCat || A8==shdCat || A8==amoCat || A8==mslCat || A8==polCat || A8==hafCat || A8==hilCat || A8==unsCat)) B8=A8; A8--; } //while(A8>=itmPoo && return A8=C8; } //itmCat mth rtns A8 (gen cat), B8 (sub cat) public int gra(int elm){ C8=pri(elm); //figGrp elm for gra calc: note ini asg A8= elm in pri() B8=O; if(!isAni(A8)) return B8; for(D8=FigST;D8<=FigIQ;D8++) B8+=Math.max(O,dig(A8,FigChr,D8)-6); B8+=Math.max(O,dig(C8,FigAtr,BasMv)-6); return B8; } //gra mth - rtns /*`?nec public int par(int elm){ //"parent" (unAmped) itm elm locator A8=elm; B8=itmPoo; while((B8=locElm(B8,ItmTyp,wrd(A8,C8)))>O && wrd(B8,ItmCla).charAt(O)=='&') B8++; return B8; } //pri mth - rtns B8=elmNum of locElm() //*/ public int pri(int elm,String dta$){ //prv for loc of itms w amped classes //db ary chk suite: has() - isRdy() - pri() - locItm() - locElm() - val/wrd() - nthDiv() A8=elm; eq(B8$,dta$); return B8=locItm(itmPoo,wrd(A8,ItmCod),str(B8$))>O?elmNum :locItm(itmPoo,wrd(A8,ItmCod),"&"+B8$); } //pri mth - rtns B8=elmNum of locItm() public int pri(int elm){ //"primal" elm locator //db ary chk suite: has() - isRdy() - pri() - locItm() - locElm() - val/wrd() - nthDiv() A8=elm; return B8=A8>=itmGrp ?locItm(itmPoo,wrd(A8,ItmCod),wrd(A8,ItmCla).substring(A$<'a'?I:O)) //A$ of wrd() :locElm(figPoo,FigTyp,wrd(A8,FigTyp)); } //pri mth - rtns B8=elmNum of locItm/Elm() public int locDuo(int elm,int num,String obj$,int vlu,String dta$){ elmNum=elm; //`nec? asgns finagled due to _Elm() calls D8=vlu; eq(B8$,dta$); while(locElm(elmNum,num,obj$)>O){ //ini asgns C8=num, A8$=obj$ if(wrd(elmNum,D8).startsWith(str(B8$))) break; if(++elmNum>endElm) return elmNum=O; } //while(locElm(elmNum, return elmNum; //=0 if obj$ not found of locElm() } //locDuo mth public int locItm(int elm,String typ$,String cla$){ //db ary chk suite: has() - isRdy() - pri() - locItm() - locElm() - val/wrd() - nthDiv() elmNum=elm; C8=elmNumO){ //note ini asgn A8$=typ$, C8 unchgd in locElm() //.indexOf allows for generic class; eg. (=/+/*) "wpn" if(wrd(elmNum,ItmCla).indexOf(str(B8$))>N) break; if(elmNum>=itmGrp){ //"amped" cla rcd prv eq(C8$,wrd(elmNum,ItmCod)); for(D8=unsCat;D8=itmGrp if(++elmNum>endElm) //endElm of locElm() return elmNum=O; } //while(locElm(elmNum, return elmNum; //=0 if obj$ not found of locElm() } //locItm mth public int locElm(int elm,int nth,String obj$){ //`A8 used in pri() //db ary chk suite: pri() - locElm() - val/wrd() - nthDiv() begElm=elm; //<0= ckg figGrp for isAni() figs only C8=nth; eq(A8$,obj$); //may be "" due to .startsWith() blw if(!(isA8=begElm>O)) begElm=-begElm; elmNum=O; //dfa val for none found endElm=begElm>=itmGrp?itmEnd-I: (begElm>=figGrp?figEnd-I: (begElm>=itmPoo?figGrp-I: itmPoo-I)); isB8=endElm!=figEnd-I; //chk figs' are$ for(B8=begElm;B8<=endElm;B8++) if((isA8 || isAni(B8)) && (isB8 || isAre(B8)) && wrd(B8,C8).startsWith(str(A8$))){ elmNum=B8; break; } //if((isA8 || return elmNum; } //locElm mth - rtns elmNum `?endElm public int locDig(int elm,int nth,int vlu,int num){ //`A8 used in pri() //db ary chk suite: pri() - loc`Wrd/Dig() - val/wrd() - nthDiv() begElm=elm; //(for figGrp) -elm= chk Ani figs only; >0= chk all are$ figs C8=nth; D8=vlu; E8=num; if(!(isA8=begElm>O)) begElm=-begElm; elmNum=O; //dfa val for none found endElm=begElm>=itmGrp?itmEnd-I: (begElm>=figGrp?figEnd-I: (begElm>=itmPoo?figGrp-I: itmPoo-I)); isB8=endElm!=figEnd-I; //chk are$ if figs for(B8=begElm;B8<=endElm;B8++) if((isA8 || isAni(B8)) && (isB8 || isAre(B8)) && dig(B8,C8,D8)==E8){ elmNum=B8; break; } //if((isA8 || return elmNum; } //locDig mth - rtns elmNum `?endElm public void hexFit(){ //uses: hlfHexSid,hexAsp,mapWd/Ht,minLftMar/TopMar,bdrWd, //areColWd/RowHt,mapColWd/RowHt,topMapCol/HexRow mapColWd=(mapWd-hlfHexSid-I-minLftMar-(bdrWd<hlfHexHt?N:O; topMapCol=Math.min(topMapCol,areColWd-mapColWd+I); //adj col numbering for clipping topMapCol=Math.max(topMapCol,I); /*`?what should be the std for clipping [for a vu section of map w a set hlfHexSid] if(topMapRow+mapRowHt>=areRowHt) //clip lower map edge at row areRowHt if((topMapCol&I)>O) if(eqRows==O){ mapRowHt--; eqRows--; } //if(eqRows==O else eqRows=O; eqRows=N; //`test ln //*/ topMapRow=Math.min(topMapRow,areRowHt-mapRowHt+I); //adj row numbering for clipping topMapRow=Math.max(topMapRow,I); mapLftMar=Math.max(minLftMar,(mapWd-(bdrWd<>I); //+1)/2=rnd spc to lft mapTopMar=Math.max(minTopMar,(mapHt-(bdrWd<>I); mapLftMar+=hlfHexSid>>2; //for out-hex pcs mapTopMar+=hlfHexSid>>2; } //hexFig mth - rtns: hlfHexHt,hexSid/Ht,mapColWd/RowHt,eqRows, //topMapCol/Row,mapLftMar/TopMar public void hexGrd(){ //uses: hlfHexSid/Ht,hexSid/Ht,hexAsp,mapLft/Top/Wd/Ht, //minLftMar/TopMar,mapLftMar/TopMar Graphics g=getGraphics(); g.setColor(hue(MapFgd)); A8=mapColWd&I; //col cutoff cfg B8=A8|eqRows; //" C8=mapRowHt+I; //map btm row locator H8=hlfHexSid+mapLftMar+mapLft+bdrWd; //lft margin space (in pix) I8=mapTopMar+mapTop+bdrWd; //top margin space (in pix) J8=O; //ini alt cols flg //draw grid in col stacks, lft to rht for(G8=I;G8<=mapColWd;G8++){ K8=(J8&hlfHexHt)+I8; //1st hex in row beg ht (in pix) L8=G8^mapColWd|B8; //chk if not last col //draw col stack: sides 1-3-5, or closures for(F8=I;F8<=mapRowHt-(J8&eqRows);F8++){ M8=K8+hexHt; //set current hex btm loc (in pix) N8=F8^mapRowHt; //chk if not last row //on last col, close side 6 if(G8==mapColWd && (N8|A8)>O) g.drawLine(H8+hexWd,K8+hlfHexHt,H8+hexSid,M8); //on 1st col, close side 2; all others, set vertex 2/1 O8=H8-hlfHexSid; P8=K8+hlfHexHt; if(G8==I) g.drawLine(H8,M8,O8,P8); //on map btm, invert sides 1-3-5 to close sides 2-4-6 if(F8==C8) K8=M8; //draw sides 1,3 - inverted for map btm g.drawLine(O8,P8,H8,K8); O8=H8+hexSid; P8=K8; g.drawLine(H8,K8,O8,P8); //draw side 5 - inverted for map btm - duplicates final side 6 on eqRows K8=M8-hexHt; if((L8|N8)!=O) g.drawLine(O8,P8,O8+hlfHexSid,K8+hlfHexHt); //step down to nxt hex in row if(N8>O) K8+=hexHt; } //for(F8=I; //on btm hex of alt cols (those not closed by inversion abv), close side 4 if(J8==O) g.drawLine(H8,M8,O8,M8); //O8=H8+hexSid of prior for() H8+=hexWd; J8=~J8; } //for(G8=I; } //hexGrd mth - rtns: mapColWd/RowHt,eqRows,HlfHexHt, //mapTopMar/LftMar public void hexLbl(){ //uses: hlfHexSid/Ht,hexSidmapLft/Top,mapColWd/RowHt, //mapTopMar/lftMar,topMapCol/Row Graphics g=getGraphics(); g.setFont(lbl); g.setColor(hue(LblFgd)); //label cols (across top of map) //` E8=hlfHexSid-I; //`partic appl //` A8=mapLft+bdrWd+mapLftMar+hexSid-E8; //`partic appl A8=mapLft+bdrWd+mapLftMar+hlfHexSid; //`generic appl - see bdSiz() too D8=mapTop+mapTopMar; //D8=mapTop+mapTopMar-(mapTopMar-(lblHt-I)>>I); //`test ln D8-=hlfHexSid>>2; //for out-hex pcs for(F8=O;F8<=mapColWd-I;F8++){ B8=A8+F8*hexWd; C8=D8+(F8&I)*hlfHexHt; eq(A8$,"0"+(F8+topMapCol)); g.drawString(str(A8$).substring(A8$.length()-2),B8,C8); } //for(F8=O; //label rows (down left side of map) D8=topMapCol&I; A8=mapTop+bdrWd+mapTopMar+hlfHexHt*(D8+I)-hlfHexHt/4; D8=(I-D8)*eqRows; //` E8=mapLftMar-2*E8; //`partic appl E8=mapLft+Math.max(bdrWd+I,mapLftMar-lblWd); //`generic appl - see bdSiz() too E8-=hlfHexSid>>2; //for out-hex pcs for(F8=O;F8<=mapRowHt-I-D8;F8++){ B8=A8+F8*hexHt; eq(A8$,"0"+(F8+topMapRow)); g.drawString(str(A8$).substring(A8$.length()-2),E8,B8); } //for(F8=O; } //hexLbl mth public void hexQtr(int at,int num){ //uses C2,D2 (scrn Hor,Ver pix coo of hex ctr),HlfHexSid,HlfHexHt, //QtrFac,` //gives coos of 3 corner pts for qtr'g; from hex ctr as x,y in order: apx-lft-rht A8=num; //fig's hexside facing: 1..6 drwArg[QtrCtr]=hexCtr(at); drwArg[QtrCtr+I]=D9; //D9 of hexCtr() B8=6*(A8-I); for(C8=O;C8<6;C8++){ if((C8&I)>O){ D8=drwArg[QtrCtr+I]; E8=hlfHexHt; } //if((C8&I)>O else{ D8=drwArg[QtrCtr]; E8=hlfHexSid; //E8=hlfHexSid+hlfHexSid/((qtrLftDiv-2)/2); //`test ln } //else((C8&I)>O F8=dig(QtrTbl$,B8+C8); drwArg[QtrApx+C8]=F8*E8+D8; /*` Graphics g=getGraphics(); g.setColor(StdHue[2]); //`vis verif test'g only if((C8&I)>O) g.drawRect(drwArg[QtrApx+C8-I],drwArg[QtrApx+C8],I,I); //*/ } //for(C8=O; } //hexQtr mth - rtns ` public void clrHex(int at){ //at< 0 -> no are map hex at coo reHex(Math.abs(at)); isA8=at>O; Graphics g=getGraphics(); g.setColor(hue(MapBkg)); //`isA8?MapBkg:BdBkg //g.setColor(StdHue[3]); //`test ln /*`alt: NO - out of hex bds; lap col lbl E8=(hexSid<>3; g.fillRect(A8-hexSid,B8-hlfHexHt,E8,hexHt+I); //inc ecc mod (see blw) g.fillRect(A8-hlfHexSid,B8-hexSid-F8,hexSid+I,E8+(F8<I?O:(C8<3?N:I); pgnY[C8]=E8*hlfHexHt+B8; if(D8>O) E8+=C8<3?2:-2; pgnX[C8]=E8*hlfHexSid+A8; } //for(C8=O; vtxCnt=6; } //reHex mth rtns: pgnX[],pgnY[] public int facRot(int vlu,int num){ //uses: SidCyc$ A8=vlu; //sbj fig's facing= 1..6 B8=num; //fig sid# rel to facing, to be translated as abs map sid# if(B8==O) return C8=O; D8=SidCyc$.indexOf(dig(A8)); D8+=SidCyc$.indexOf(dig(B8)); if(D8>5) D8-=6; //pos on 1st plc of byt in $ return C8=dig(SidCyc$,D8); } //facRot mth - rtns C8 (hex's map sid corr to occ fig's fac rel sid) public int facArc(int vlu,int num){ //uses: SidCyc$ A8=vlu; //sbj fig's facing= 1..6 B8=num; //abs map dir bearing(s) to be translated as sbj fig relative bearing(s) if(A8==3 || B8==O) //no adjustment req return C8=B8; C8=O; //ini rtn val D8=B8; //poss composite rep of 1 or 2 overlapped arcs eg. 13= arc 1 & arc 3 E8=6-SidCyc$.indexOf(dig(A8)); while(D8>O){ F8=D8%X; D8/=X; G8=F8==A8?3:dig(SidCyc$,E8+SidCyc$.indexOf(dig(F8))); C8=X*C8+G8; } //while(D8>O eq(A8$,""+C8); return C8; } //facArc mth - rtns C8 (translates sbj fig side(s), or arc wedge(s), rel to facing) public int objArc(int at,int to){ A8=at; //if <0, calc (split side) angle (firing) arc; else (whole) side (shield) arc B8=to; C8=O; //ini rtn val if(!(isA8=A8>O)) A8=-A8; if(A8==B8) return C8; //`?or calc iaw prior hex pos D8=losHex(losIni(A8,B8)); if(isA8){ //calc side arc E8=hexWay(A8,D8); //`A9..E9 rev if(!isVj) //not vertex- joining path: isVj of losIni() return C8=E8; } //if(isA8 if(isA9 && F9!=O && G9<=O) //_9s (of hexDst()) of losIni() C8=F9=O) C8=X*C8+(F9O?C8:C8-2)); return C8; //poss compound rep of 1 or 2 overlapped arcs eg. 13= arc 1 & arc 3 } //objArc mth - rtns C8 (eg shield) side or (eg firing) arc hex wedge(s) in abs map orientation, //D8 (at's adj hex of LOS) public StringBuffer seq(StringBuffer dta$){ eq(A8$,dta$); //lis of dic faces to be reordered from low to high B8$.setLength(O); A8=A8$.length(); B8=C8=O; //ini dic tot, die low fac do{ isA8=false; for(D8=O;D89 } //if(dig(A8$,D8)==C8 else isA8|=C8N); //loo in cdn return z1$[xsA].toString().substring(B8,begDiv); //begDiv of val() } //areOut mth - rtns $ of comma delim flds aft are$ hdr: "Aa,101,..202," public int losOff(int at,int to,int vlu){ //loc offset fro spec LOS: req at,to dst> 1 A8=at; //LOS beg hex B8=to; //LOS end hex C8=vlu; //tgt loc hex losIni(A8,B8); D8=C; //ini tgt dst fro LOS for(E8=I;E8=itmPoo && (B8=wrd(A8,ItmRng).indexOf("msl"))>N)){ if((C8=str(A9$).indexOf('+',B8+=4))N?X*dig(A9$,D8+3)+dig(A9$,D8+4):Math.abs(AvgRld); } //if(isA8= return isA8; } //isMsl mth rtns: isA8, A9$, A8$, B8, C8, D8 (rld val) //var lvl 9 subroutines public void drw(int col,int row,String dta$){ //Draw & Quarter sbr - uses: lstHue F9=col; //ini LPR (last pt ref'd) pix coo G9=row; Graphics g=getGraphics(); A9=dta$.length(); B9=O; //ini $ pos tracker C9=NumArg; //ini arg ary elm while(B9N) //-1 -> just load pgnX,Y[] on qtrg g.setColor(StdHue[drwHue]); //`?g.setColor(hue(D9)) cap break; case '[': vtxCnt=O; qtrLftGrd=qtrLftDiv>>I; //center start pt qtrRhtGrd=qtrRhtDiv>>I; qtrLftRun=qtrMul*(drwArg[QtrLft]-drwArg[QtrApx]); qtrLftRis=qtrMul*(drwArg[QtrLft+I]-drwArg[QtrApx+I]); qtrRhtRun=qtrMul*(drwArg[QtrRht]-drwArg[QtrApx]); qtrRhtRis=qtrMul*(drwArg[QtrRht+I]-drwArg[QtrApx+I]); isQtr=true; break; case ']': if(drwHue>N) if(isQtr) g.fillPolygon(pgnX,pgnY,vtxCnt); //pgnX[] & pgnY[] arys else g.drawPolygon(pgnX,pgnY,vtxCnt); isQtr=false; break; case '?': drwRot=D9; break; default: //opns which may be affected by qtr'g or rot'n E9=drwArg[NumArg+I]; //holder for 2nd arg's val if(isQtr){ //chk qtr'g in effect D9+=qtrLftGrd; //conv args 1&2 to qtr'd pix calcs E9+=qtrRhtGrd; if(A$!='^'){ //drw (qtr'd) lin wo LPR upd cod qtrLftGrd=D9; qtrRhtGrd=E9; } //if(A$!='^' D9-=qtrLftDiv>>I; E9-=qtrRhtDiv>>I; H9=D9*qtrLftRun/qtrLftDiv; I9=D9*qtrLftRis/qtrLftDiv; D9=drwArg[QtrCtr]+(E9*qtrRhtRun/qtrRhtDiv+H9)/qtrMul; E9=drwArg[QtrCtr+I]+(E9*qtrRhtRis/qtrRhtDiv+I9)/qtrMul; pgnX[vtxCnt]=D9; pgnY[vtxCnt]=E9; vtxCnt++; break; //`or, else(isQtr){rot, mag & add} } //if(isQtr if(drwRot>O){ H9=I9=I-(drwRot>>I<O){ I9=-I9; J9=D9; //swap X,Y D9=E9; E9=J9; } //if((drwRot&I)>O D9*=H9; E9*=I9; } //if(drwRot>O //` D9=D9*drwMag/basMag; //` E9=E9*drwMag/basMag; D9+=F9; //abs pix pos calc'd from rel offset read E9+=G9; switch(A$){ case '^': //LPR unchg'd if(drwHue>N) g.drawLine(F9,G9,D9,E9); break; case '_': if(drwHue>N) g.drawLine(F9,G9,D9,E9); //falls thru to '@' case '@': //mov LPR F9=D9; G9=E9; break; /*`unnec case '=': //LPR unchg'd, dims comp for Java's fillRect() discrep if(drwHue>N) g.fillRect(Math.min(D9,F9),Math.min(E9,G9),Math.abs(D9-F9)+I,Math.abs(E9-G9)+I); break; case '<': //LPR unchg'd if(drwHue>N) g.drawOval(Math.min(D9,F9),Math.min(E9,G9),Math.abs(D9-F9),Math.abs(E9-G9)); break; //*/ } //switch(A$ } //switch(A$ B9++; } //else(A$<='9' } //while(B9>I); //_9s of hexDst() losRun=G9; losDrp=(B9<O?O:E9-I; //0,1 flg isVj=F9==O && (J9&I)2?(G92 //`opt: SsStp=E9; //clc #hexes inc for chk of poss side- splitting LOS //`opt: while(!isVj && (E9&I)>=I)%22); //loo in cdn return losStp=I; //ini as 1st LOS hex } //losIni mth public int losHex(int num){ //interpolate hex col & row at step - uses: all los_ vars of losIni() //nb. row comp dsn & LOS impl copyright reg 9/26/94 by H. Trump: used under license losStp=num; //losHex(O)=ori hex, (1)=1st los hex adj to ori, ..(losDst)=tgt hex //`alt: losAlt=O; //flg for tossup hex: either vertex- joining or side- splitting LOS //`alt: if((losDst&I)O:losStp%SsStp bogus result on all losDst of 1 & some odd losCol=(losStp*losRun+losTri-losAlt)/losDst; losRow=losCol&I; losRow+=(losStp*losRis-losRol-losAlt)/losDst+losDrp+(losRow^I)>>I; losAlt=C*losCol+losRow; //`alt: } //if((losDst&I)>I; //or ..+1-losRow>>.. losCoo=C*losCol+losRow; //`alt: if(losAltO?A9+I&I:O); H9=sgn(F9)*(J9+E9>>I)+B9; //row# on wedge bound at C9 (when F9!=O) isA9=Math.abs(F9)>=Math.abs(H9-B9); //to hex outside/on wedge bound (") I9=isA9?Math.abs(D9-H9):O; //also=0 (on bound) if isA9 terms = return E9=J9+I9; } //hexDst mth public int radIni(int at,int vlu){ //hex radius scan radDst=vlu; //>=0 radCol=at/C; radRow=at%C; radLft=radDst+(radDst>O?I:O); radRgt=(radCnt=6*radDst)-radLft; return radStp=radDst>O?I:O; //ini as 1st radius hex } //radIni mth public int radHex(int num){ radStp=num; //any #0..(6*radDst) of radCnt seq at radDst radius A9=Math.max(radLft,Math.min(radStp,radRgt+I)); A9=radCol-radDst+(A9-radLft+I>>I); C9=Math.abs(A9-radCol); B9=radRow-radDst+(C9+(A9&I)>>I)+(radStp>O && radStp<=radLft?radStp-I :(radStp>radRgt?radStp-I-radRgt:((radStp+radLft&I)>I; if(hlfHexSid==2 || hlfHexSid==3) hlfHexHt--; hexHt=hlfHexHt<>I; if(hlfHexSid==2 || hlfHexSid==3) A9--; mapHt=(A9<>I; //for out-hex pcs mapHt+=hlfHexSid>>I; /*`generic appl - see hexLbl() too hexSid=hlfHexSid<>I; if(hlfHexSid==2 || hlfHexSid==3) hlfHexHt--; hexHt=hlfHexHt<4) lblHt=lblHt*5/6; minLftMar=lblWd; minTopMar=lblHt; //*/ } //dimMap mth - rtns: public boolean isAcq(int elm){ return dig(elm,FigOri,FigObs)>O || !isObs || isSee; //A9,B9 of dig() } //isAcq mth rtns: B9 of dig() [used by shoObs()] public boolean isAni(int elm){ A9=elm; B9=A9>=figGrp && A9N; } //isAni mth rtns: B9 public boolean isAre(int elm){ A9=elm; //figGrp or itmGrp idx B9=N; //dfa non- coo return (isA9=z1$[A9].charAt(O)!=Fre0$) && (A9>=itmGrp?wrd(A9,ItmOwn).substring(1,3) //coo- own are$ loc :wrd(A9,FigAre)).equals(str(are$)) && (B9=A9>=itmGrp?C*dig(A9$,3)+dig(A9$,4) //A9$ of wrd() :val(A9,FigCoo))>O; } //isAre mth public void digIn(int elm,int nth,int loc,int num){ eq(B9$,z1$[A9=elm]); digIn(B9$,nthDiv(B9$,nth)+loc,num); //note ini asgn B9=nth eq(A9,B9$); } //digIn mth rtns C9 of nthDiv(), D9, E9, A$ of digIn() blw public void digIn(StringBuffer dta$,int loc,int num){ D9=loc; dta$.setCharAt(D9,dig(num)); } //digIn mth public char dig(int num){ E9=num; return A$=(char)((E9<-3?E9-I:E9)+Asc0); //don't use ',': all <= get -1 (see dig(String dta$,) blw) } //dig mth w String arg public int dig(int elm,int nth,int loc){ //db ary chk suite: pri() - locElm() - `dig/val/wrd() - nthDiv() return wrd(elm,nth).length()O?A9$.charAt(O):Div$; //C9 of nthDiv() return str(A9$); } //wrd mth - rtns C9 (fld lg) of nthDiv(), A$ (beg chr) public int nthDiv(StringBuffer dta$,int nth){ //db ary chk suite: pri() - locElm() - val/wrd() - nthDiv() B9=nth; //1st field nth= 1 begDiv=O; for(C9=B9;C9>O;C9--){ endDiv=str(dta$).indexOf(Div$,begDiv); if(C9>I) if(endDiv==N) ;//note error of nth>#Divs else begDiv=endDiv+I; } //for(C9=B9; if(endDiv==N) endDiv=dta$.length(); C9=endDiv-begDiv; //len of sub return begDiv; } //nthDiv mth - rtns C9 (length of field substring) public boolean isHex(int at){ A9=at/C; B9=at%C; C9=at; isA9=!(A9areColWd || B9areRowHt) //isA9= within area && str(areNot$).indexOf(""+Div$+C9+Div$)O && D9<=mapColWd //col on scrn && (E9>I && E9O || F9==G9) //has 1st col's ptrn, or corner col odd (per col shift req) || E9==mapRowHt //if hex may be on btm scrn row && (F9O && eqRowsmapRowHt (per EqRows fill-in) } //isHex mth public int wayHex(int at,int to){ //to (way)= 0..6 A9=at/C; B9=at%C; C9=to; if(C94?I:O); //cnv way to coo F9=C9-I&I; G9=A9&I; E9=B9+F9-G9; if(C9-G9==3) E9+=(F9<>I; } //hexWay mth - rtns side #1..6 dir from at to to /*` public int hexAzi(int at,int to){ A9=at/C-I; B9=to/C-I; C9=HexTicY*(at%C-I); if((A9&I)>O) C9+=HexTicY/2; D9=HexTicY*(to%C-I); if((B9&I)>O) D9+=HexTicY/2; A9=HexTicX*(B9-A9); B9=-(D9-C9); //neg: since rows numbered top down, vs std quad Y axis //`?E9=X*(int)Math.toDegrees(Math.atan2(B9,A9)); //`?Java eqv: NO //set quad= 0..3 as azi rot factor IAW +/- rise/run C9=B9 1 `?mov btw B9= & D9= blw A9=Math.abs(A9); //strip signs to calc slope in 1st quad (+rise,+run) B9=Math.abs(B9); //` if(A9>O) //`?unnec //` D9=(int)(X*(Math.atan((double)B9/A9)*45/Math.atan(I))); D9=(int)(X*Math.toDegrees(Math.atan((double)B9/A9))); //Java eqv //` else //` D9=900; if((C9&I)>O) D9=900-D9; D9+=900*C9; //resto to aprp quad return D9; } //hexAzi mth - rtns: D9(0..3599 ccw from 3o'clk) //*/ public int hexCtr(int at){ //uses: hlf/hexHt,hexSid/Wd,mapLft/Top(Mar),topMapCol/Row,bdrWd A9=at/C; B9=at%C; F9=B9-topMapRow; G9=(topMapCol&I)>O?A9+I&I:-(A9&I); //mod for rows' col shift in nonstatic scrn edge ptn D9=mapTopMar+mapTop+bdrWd+F9*hexHt+G9*hlfHexHt+hlfHexHt; //ctr pt Y of map hex E9=A9-topMapCol; return C9=mapLftMar+mapLft+bdrWd+E9*hexWd+hexSid; //ctr pt X of map hex } //hexCtr mth rtns C9, w D9 avail (scrn Hor,Ver pix coo) public int rdm(int num){ A9=num; isA9=A9O){ D9=B9; E9=C9%X; while(D9>O){ if(D9%X==E9) return true; D9/=X; } //while(D9>O C9/=X; } //while(C9>O return false; } //isCmn mth //var lvl 0 subroutines public int sgn(int num){ A0=num; return B0=A0O?I:O); } //sgn mth Color hue(int vlu){ return StdHue[hues[vlu]]; } //hue mth public String cut(StringBuffer dta$){ return cut(str(dta$)); } //cut mth public String cut(String dta$){ return dta$.substring(O,Math.min(dta$.length(),TagLg)); } //cut mth public void insStr(StringBuffer sbj$,int at,StringBuffer dta$){ insStr(sbj$,at,at,dta$); } //insStr mth public void insStr(StringBuffer sbj$,int at,String dta$){ insStr(sbj$,at,at,dta$); } //insStr mth public String insStr(String sbj$,int at,String dta$){ return at String utilities: public void eq(int elm,StringBuffer obj$){ eq(elm,str(obj$)); } //eq mth w int (array elm) arg public void eq(int elm,String obj$){ z1$[elm]=new StringBuffer(obj$); //` eq(z1$[elm],obj$); //gen odd NullPointerExceptions } //eq mth w int (array elm) arg public void eq(StringBuffer sbj$,StringBuffer obj$){ eq(sbj$,str(obj$)); } //eq mth w StringBuffer arg public void eq(StringBuffer sbj$,String obj$){ sbj$.setLength(O); sbj$.append(obj$); /* eq(a1$,"Wonderful"); eq(a1$,cut(a1$)); //note: eq() mth's sbj$.setLength(O) has no bad effect on obj$ arg calcs txt("153"+a1$); //shows "Wonde" //*/ } //eq mth w String arg public String str(StringBuffer sbj$){ //When used without assigning= a String var, doesn't alloc mry to copy Buffer, //just refs existing Buffer (per API detail: Implementation advice) for efficiency. return sbj$.toString(); } //str mth - cnv bfr to str: allows for str-only opns on bfr contents } //fmnX0Ap cla