シミュレータ - (2008/03/13 (木) 16:55:10) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
#ja(){{
<HTML>
<HEAD>
<SCRIPT Language="JavaScript">
sellrate = 75;
fkind = new Array(32);
fkind[0] = new Array("チルノ" , 80 , 57 , 952 , 2584 , 68 , 120 , 60 , 22 , 9 , 11, 5 , 9 , 5 , "1" , "9-9" , " " , "根性" , "凍結");
fkind[1] = new Array("てゐ" , 90 , 56 , 980 , 2660 , 70 , 130 , 70 , 24 , 11 , 13 , 5 , 12 , 6 , "1" , "7-8" , "幸運" , "回避" , "加速");
fkind[2] = new Array("橙" , 95 , 57 , 1008 , 2736 , 72 , 140 , 65 , 24 , 12 , 12 , 5 , 11 , 6 , "1" , "8-11" , " " , "回避" , "加速");
fkind[3] = new Array("穣子" , 110 , 55 , 1020 , 3230 , 85 , 120 , 62 , 25 , 11 , 11 , 5 , 11 , 5 , "1" , "6-8" , "幸運" , " " , "根性");
fkind[4] = new Array("中国" , 120 , 55 , 1040 , 2400 , 80 , 170 , 72 , 22 , 10 , 14 , 6 , 12 , 6 , "1" , "6-8" , "根性" , " " , "自爆");
fkind[5] = new Array("雛" , 140 , 54 , 1155 , 3780 , 105 , 160 , 71 , 22 , 9 , 13 , 6 , 12 , 6 , "1" , "8-9" , "無効" , "混乱" , "猛毒");
fkind[6] = new Array("慧音" , 200 , 47 , 1120 , 3920 , 140 , 200 , 75 , 25 , 11 , 14 , 6 , 13 , 6 , "1" , "7-9" , "回避" , "反射" , "回復");
fkind[7] = new Array("幽香" , 260 , 48 , 960 , 3840 , 160 , 210 , 68 , 38 , 11 , 13 , 5 , 11 , 6 , "1" , "6-7" , "範囲" , " " , "反射");
fkind[8] = new Array("小町" , 260 , 46 , 960 , 3840 , 160 , 210 , 75 , 32 , 13 , 12 , 6 , 12 , 5 , "1" , "8-10" , "必殺" , " " , "加速");
fkind[9] = new Array("妖夢" , 280 , 46 , 1020 , 3740 , 170 , 170 , 60 , 24 , 8 , 13 , 5 , 12 , 6 , "1" , "4-24" , "必殺" , "回避" , "反射");
fkind[10] = new Array("萃香" , 370 , 43 , 1080 , 3600 , 180 , 400 , 160 , 34 , 14 , 1 , 1 , 1 , 2 , "1" , "6-8" , "分裂" , "範囲" , " ");
fkind[11] = new Array("フラン" , 390 , 43 , 1080 , 3600 , 180 , 160 , 80 , 31 , 14 , 8 , 4 , 13 , 6 , "1" , "8-12" , "吸血" , "蝙蝠" , "範囲");
fkind[12] = new Array("妹紅" , 420 , 46 , 1140 , 3990 , 190 , 300 , 125 , 30 , 15 , 1 , 2 , 2 , 1 , "1" , "6-10" , "自爆" , "再生" , "範囲");
fkind[13] = new Array("メディ" , 132 , 52 , 1080 , 3456 , 108 , 110 , 40 , 23 , 8 , 6 , 3 , 14 , 8 , "5" , "6-0" , "猛毒" , " " , "人形");
fkind[14] = new Array("アリス" , 180 , 48 , 1040 , 3250 , 130 , 90 , 40 , 28 , 8 , 5 , 3 , 15 , 7 , "5" , "4-0" , "人形" , "人形" , "人形");
fkind[15] = new Array("鈴仙" , 186 , 48 , 1300 , 3510 , 130 , 110 , 50 , 38 , 11 , 6 , 3 , 15 , 6 , "5" , "5-0" , "混乱" , "範囲" , "反射");
fkind[16] = new Array("咲夜" , 190 , 47 , 1040 , 3250 , 130 , 120 , 40 , 30 , 8 , 4 , 2 , 14 , 7 , "5" , "5-0" , "遅延" , "反射" , "貫通");
fkind[17] = new Array("藍" , 200 , 47 , 1040 , 3510 , 130 , 130 , 48 , 26 , 10 , 6 , 3 , 15 , 7 , "5" , "5-0" , "反射" , "結界" , "無効");
fkind[18] = new Array("にとり" , 260 , 45 , 1120 , 3840 , 160 , 160 , 40 , 20 , 6 , 5 , 5 , 16 , 5 , "5" , "5-0" , " " , "反射" , " ");
fkind[19] = new Array("永琳" , 300 , 44 , 900 , 3780 , 180 , 200 , 88 , 24 , 8 , 1 , 1 , 2 , 1 , "2-5" , "3-0" , "回復" , "再生" , "必殺");
fkind[20] = new Array("魔理沙" , 300 , 45 , 1080 , 3960 , 180 , 120 , 28 , 56 , 18 , 4 , 4 , 8 , 3 , "3" , "10-0" , "範囲" , "回避" , "加速");
fkind[21] = new Array("レミリ" , 370 , 43 , 1080 , 3600 , 180 , 150 , 40 , 34 , 8 , 2 , 2 , 12 , 5 , "3-7" , "3-0" , "貫通" , "蝙蝠" , "範囲");
fkind[22] = new Array("映姫" , 390 , 44 , 1140 , 3990 , 190 , 180 , 38 , 28 , 9 , 2 , 4 , 15 , 5 , "3-7" , "4-0" , "貫通" , "反射" , "威圧");
fkind[23] = new Array("紫" , 420, 43 , 1080 , 3780 , 180 , 200 , 64 , 28 , 10 , 3 , 2 , 11 , 6 , "4" , "4-0" , "境界" , "結界" , "威圧");
fkind[24] = new Array("神奈子" , 450 , 43 , 1200 , 4200 , 200 , 200 , 48 , 28 , 8 , 5 , 3 , 12 , 4 , "3-7" , "2-0" , "範囲" , "威圧" , "無効");
fkind[25] = new Array("諏訪子" , 450 , 43 , 1200 , 5000 , 200 , 220 , 35 , 28 , 7 , 5 , 3 , 10 , 5 , "5" , "4-0" , "範囲" , "反射" , "威圧");
fkind[26] = new Array("パチュ" , 260 , 45 , 1078 , 3542 , 154 , 200 , 50 , 38 , 13 , 12 , 5 , 6 , 3 , "3" , "5-1" , "範囲" , "無効" , " ");
fkind[27] = new Array("文" , 260 , 47 , 960 , 3840 , 160 , 150 , 60 , 25 , 8 , 8 , 3 , 4 , 3 , "2" , "8-0" , "範囲" , " " , "貫通");
fkind[28] = new Array("霊夢" , 300 , 43 , 1080 , 3600 , 180 , 220 , 42 , 30 , 11 , 13 , 7 , 7 , 3 , "3" , "6-2" , "範囲" , "無効" , "結界");
fkind[29] = new Array("早苗" , 336 , 44 , 1110 , 4070 , 185 , 230 , 40 , 30 , 11 , 10 , 6 , 10 , 3 , "3" , "7-1" , "反射" , "結界" , "回復");
fkind[30] = new Array("幽々子" , 390 , 43 , 1080 , 3780 , 180 , 270 , 86 , 40 , 9 , 9 , 4 , 6 , 2 , "3" , "3-1" , "範囲" , " " , "反魂");
fkind[31] = new Array("輝夜" , 440 , 46 , 1140 , 3990 , 190 , 260 , 120 , 38 , 16 , 2 , 2 , 1 , 1 , "3" , "1-1" , "範囲" , "再生" , " ");
function calc(){
mdiff = new Array(16);
mdiff[0] = new Array(65 , 85 , 55);
mdiff[1] = new Array(75 , 90 , 60);
mdiff[2] = new Array(80 , 90 , 65);
mdiff[3] = new Array(85 , 95 , 70);
mdiff[4] = new Array(25 , 65 , 25);
mdiff[5] = new Array(30 , 70 , 30);
mdiff[6] = new Array(35 , 75 , 40);
mdiff[7] = new Array(45 , 80 , 45);
mdiff[8] = new Array(65 , 70 , 65);
mdiff[9] = new Array(75 , 85 , 70);
mdiff[10] = new Array(80 , 85 , 70);
mdiff[11] = new Array(85 ,100 , 70);
mdiff[12] = new Array(65 , 85 , 50);
mdiff[13] = new Array(75 , 90 , 50);
mdiff[14] = new Array(80 , 90 , 50);
mdiff[15] = new Array(85 , 95 , 55);
mdiffstr = new Array(2);
mdiffstr[0] = new Array("通常","大群","盗人","TD");
mdiffstr[1] = new Array("Easy","Normal","Hard","Lunatic");
modenum = parseInt(document.all.mode.value,10);
diffnum = parseInt(document.all.difficulty.value,10);
mdiff[0] = mdiff[modenum * 4 + diffnum];
kindnum = document.all.kind.value;
sta = new Array();
for(i = 0 ; i < ((kindnum == 2) ? 6 : 13) ; i++){
sta[i] = fkind[i + kindnum * 13]
}
ave = new Array(6);
ave[0] = new Array(191.5 , 80.2 , 27.1 , 11.3 , 10.4 , 4.69 , 10.0 , 5.07);//近接
ave[1] = new Array(153.0 , 46.0 , 30.0 , 9.15 , 4.15 , 2.92 , 12.2 , 5.30);//弾幕
ave[2] = new Array(221.6 , 66.3 , 33.5 , 11.3 , 9.00 , 4.50 , 5.66 , 2.50);//飛行
ave[3] = new Array(0 , 0 , 0 , 0);
ave[4] = new Array(0 , 0 , 0 , 0);
ave[5] = new Array(0 , 0 , 0 , 0);
stnum = Math.floor(parseInt(document.all.tags("INPUT")(0).value,10));
honum = Math.floor(parseInt(document.all.tags("INPUT")(1).value,10));
lvnum = Math.floor(parseInt(document.all.tags("INPUT")(2).value,10));
sortnum = document.all.sort.value;
if(isNaN(lvnum) || isNaN(stnum) || isNaN(honum)){
alert("半角数字で入力してください");
return;
}else if(lvnum < 1){
alert("LVが異常");
return;
}
datastr = "<BR><SPAN style='font-size:70%;'>「対○」項目は、対応種の全ユニットの平均ステを持った同Lvの仮想敵に対する<BR>(撃破に必要な攻撃回数 / 撃破される被攻撃回数)。※ただし、射程距離やスキル等は勘案に入っていない</SPAN><BR>初期<SPAN style='font-size:130%;'>"+ stnum +"</SPAN>人、LvUp毎に<SPAN style='font-size:130%;'>"+ honum +"</SPAN>人購入して、Lv<SPAN style='font-size:130%;'>" + lvnum + "</SPAN>(" + (stnum+honum*(lvnum-1)) + "人)の状態\n<BR><TABLE border='1' cellpadding='1' cellspacing='1'>\n<THEAD><TR><TH>名前<TH>値段<TH>LvUp<TH>総コスト<TH>HP<TH>攻撃<TH>防御<TH>弾防<TH>対近<TH>対弾<TH>対空<TH>射程<TH>移動<TH>能力</TR></THEAD>\n<COL class='name'><COL class='cost'><COL class='lvup'><COL class='allcost'><COL class='hp'><COL class='atk'><COL class='def'><COL class='bdef'><COL class='vskin'><COL class='vsdan'><COL class='vshik'><COL class='range'><COL class='move'><COL class='skill'><TBODY>";
lvnum--;
dat = new Array(((kindnum == 2) ? 6 : 13));
for( i = 0 ; i < dat.length ; i++){
dat[i] = new Array(13);
}
for( i = 0 ; i < dat.length ; i++){
for( j = 0 ; j < 4 ; j++){
if(j == 0){
dat[i].hp = dat[i][j+4] = sta[i][j*2+6] + sta[i][j*2+7] * lvnum;
}else if(j == 1){
dat[i].atk = dat[i][j+4] = sta[i][j*2+6] + sta[i][j*2+7] * lvnum;
}else if(j == 2){
dat[i].def = dat[i][j+4] = sta[i][j*2+6] + sta[i][j*2+7] * lvnum;
}else if(j == 3){
dat[i].bdef = dat[i][j+4] = sta[i][j*2+6] + sta[i][j*2+7] * lvnum;
}
dat[i][j+4] += "<SPAN class='adi'>>" + (sta[i][j*2+6] + sta[i][j*2+7] * (lvnum + 1)) + "</SPAN>"
}
for(m = 0 ; m < 3 ; m++){
for(l = 0 ; l < 4 ; l++){
ave[m+3][l] = Math.round((ave[m][2*l] + ave[m][2*l+1] * lvnum) * mdiff[0][(l != 3) ? l : 2] / 100);
}
}
for(k = 0 ; k < 3 ; k++){
dat[i][k+8] = Math.ceil(ave[k+3][0] / ( (sta[i][8] + sta[i][9] * lvnum) - ( !kindnum ? ave[k+3][2] : ave[k+3][3]) ) ) + "/";
sttemp = sta[i][10+Math.round(k/2)*2] + sta[i][11+Math.round(k/2)*2] * lvnum;
if((ave[k+3][1] - sttemp) > 0){
dat[i][k+8] += Math.ceil( (sta[i][6] + sta[i][7] * lvnum) / ( ave[k+3][1] - sttemp));
}else{
dat[i][k+8] += "∞";
}
}
allcost = sta[i][1] * stnum;
nowcost = sta[i][1];
memnum = stnum;
for( l = 0 ; l < lvnum ; l++ ){
nowcost = cap99(Math.floor(nowcost + nowcost * sta[i][2] / 100));
allcost += honum * nowcost;
lvupcost = cap99(sta[i][3] + sta[i][4] * l + memnum * sta[i][5]);
memnum += honum;
allcost += lvupcost;
}
dat[i][0] = sta[i][0];
dat[i].nowcost = dat[i][1] = nowcost;
nextcost = cap99(Math.floor(nowcost + nowcost * sta[i][2] / 100));
dat[i][1] += "<BR><SPAN class='adi'>" + nextcost + "</SPAN>";
dat[i].lvup = dat[i][2] = cap99(sta[i][3] + sta[i][4] * lvnum + memnum * sta[i][5]);
nextlvcost = cap99(sta[i][3] + sta[i][4] * (lvnum + 1) + (memnum + honum) * sta[i][5]);
dat[i][2] += "<BR><SPAN class='adi'>" + nextlvcost + "</SPAN>";
dat[i].allcost = dat[i][3] = allcost;
dat[i][11] = sta[i][14];
dat[i][12] = sta[i][15];
dat[i][13] = sta[i][16] + ((lvnum > 1) ? ("/" + sta[i][17]) : "") + ((lvnum > 4) ? ("/" + sta[i][18]) : "");
}
for( i = 0 ; i < dat.length ; i++){
datastr += "<TR>\n";
dat.sort(mysort);
for( m = 0 ; m < 14 ; m++){
datastr += "<TD>" + dat[i][m];
}
datastr += "</TR>\n"
}
for(i = 0 ; i < 3 ; i++){
datastr += "<TR>\n";
if(i == 0){
datastr += "<TD colspan='4' class='none'>仮想近接";
}else if(i == 1){
datastr += "<TD colspan='4' class='none'>仮想弾幕";
}else if(i == 2){
datastr += "<TD colspan='4' class='none'>仮想飛行";
}
datastr += "<TD>" + ave[i+3][0] + "<SPAN class='adi'>>" + Math.round(ave[i+3][0] + ave[i][1]) + "</SPAN><TD>" + ave[i+3][1] + "<SPAN class='adi'>>" + Math.round(ave[i+3][1] + ave[i][3]) + "</SPAN><TD>" + ave[i+3][2] + "<SPAN class='adi'>>" + Math.round(ave[i+3][2] + ave[i][5]) + "</SPAN><TD>" + ave[i+3][3] + "<SPAN class='adi'>>" + Math.round(ave[i+3][3] + ave[i][7]) + "</SPAN>";
if(!i){
datastr += "<TD colspan='6' rowspan='3' class='none' style='text-align:center;'>" + mdiffstr[0][modenum] + " / " + mdiffstr[1][diffnum] + "</TR>\n"
}
}
datastr += "</TBODY></TABLE>\n"
with(parent.bottom.document){
clear();
open("text/html");
write("<HTML><HEAD><LINK href='./style.css' rel='stylesheet' type='text/css'></HEAD><BODY><CENTER>"+datastr+"<BR><BR><A href='../index.html' target='_top'>TOPへ戻る</A></CENTER></BODY></HTML>");
close();
}
}
function mysort(a, b){
revnum = document.all.tags("INPUT")(3).checked;
if(sortnum == 0){
return (b.hp - a.hp) * (revnum ? -1 : 1);
}else if(sortnum == 1){
return (b.atk - a.atk) * (revnum ? -1 : 1);
}else if(sortnum == 2){
return (b.def - a.def) * (revnum ? -1 : 1);
}else if(sortnum == 3){
return (b.bdef - a.bdef) * (revnum ? -1 : 1);
}else if(sortnum == 4){
return (b.nowcost - a.nowcost) * (revnum ? -1 : 1);
}else if(sortnum == 5){
return (b.lvup - a.lvup) * (revnum ? -1 : 1);
}else if(sortnum == 6){
return (b.allcost - a.allcost) * (revnum ? -1 : 1);
}
}
function cap99(numb){
if(numb > 999999){
return 999999;
}else{
return numb;
}
}
function changelv(flag){
nowlv = parseInt(document.all.tags("INPUT")(2).value,10);
flag ? nowlv++ : nowlv--;
if(isNaN(nowlv) || nowlv < 1){
alert("Lvが異常");
}else{
document.all.tags("INPUT")(2).value = nowlv;
calc();
}
}
function farm(){
ifmoney = new Array(19);
ifnum = new Array(19);
mem = Math.floor(parseInt(document.all.tags("INPUT")(7).value,10));
nowlv = Math.floor(parseInt(document.all.tags("INPUT")(8).value,10));
money = Math.floor(parseInt(document.all.tags("INPUT")(9).value,10));
toplv= Math.floor(parseInt(document.all.tags("INPUT")(10).value,10));
fmoney = money;
uk = document.all.farmkind.value;
if(!nowlv){
mem = nowlv;
nowlv = 1;
}
flv = nowlv;
nowcost = fkind[uk][1];
for(i = 0 ; i < (nowlv-1) ; i++){
nowcost = cap99(Math.floor(nowcost + nowcost * fkind[uk][2] / 100));
}
nextlvc = fkind[uk][3] + fkind[uk][4] * (nowlv - 1) + fkind[uk][5] * mem;
lvupc = 0;
divnum = 0;
datastr = "<BR>\n現在<SPAN style='font-size:130%;'>"+ mem +"</SPAN>人、Lv<SPAN style='font-size:130%;'>"+ nowlv +"</SPAN>、所持金" + pcomma(money) + "開始で" + fkind[uk][0] + "を養殖<BR><BR>\n";
if(isNaN(mem) || isNaN(nowlv) || isNaN(money)){
alert("半角数字で入力してください");
return;
}else if((mem < 0) || (nowlv < 0) || (money < 0)){
alert("どれかがマイナス数値です?");
return;
}else if((mem == 0) && (nowlv > 1)){
alert("人が居ないのにLvが上がってますよ?");
return;
}
if(toplv >= nowlv){
nextc = cap99(Math.floor(nowcost + nowcost * fkind[uk][2] / 100));
sac = nextc - nowcost;
while(sac < fkind[uk][5]){//Lvアップのコスト上昇>人数係数なら、そのLvまでジャンプ
nowlv++;
nowcost = nextc;
nextc = cap99(Math.floor(nextc + nextc * fkind[uk][2] / 100));
sac = nextc - nowcost;
}
if((nowlv - flv)){//上記処理で1Lv以上アップした時
if(!mem){
money -= fkind[uk][1];
mem = 1;
datastr += "Lv1の時に1人購入して、Lv" + nowlv + "までレベルアップ<BR>\n";
}else{
datastr += "Lv" + flv + "は買い足さずに、Lv" + nowlv + "までレベルアップ<BR>\n";
}
tlvupc = 0;
for(j = 0 ; j < (nowlv - flv); j++){
tlvupc += fkind[uk][3] + fkind[uk][4] * (j + flv - 1);
}
money -= (tlvupc + fkind[uk][5] * (nowlv - flv) * mem);
}
for(j = 0 ; j < (toplv - nowlv); j++){//上記処理後、目標Lvまでのレベルアップコスト試算
lvupc += fkind[uk][3] + fkind[uk][4] * (j + nowlv - 1);
}
money -= lvupc + fkind[uk][5] * mem * (toplv - nowlv);
if(checkm(money)){
money = -money;
alert(money + "円不足で\nLv" + toplv + "にすら行けませんよ!");
return;
}
tempc = fkind[uk][1];//目標Lvの売値を算出
for(i = 0 ; i < (toplv - 1) ; i++){
tempc = cap99(Math.floor(tempc + tempc * fkind[uk][2] / 100));
}
if(nowcost < Math.floor(tempc * sellrate / 100)){//目標Lvでの売値が今の買値より高い時、目標Lvまでのコストを引いた後何人買えるか
divnum = Math.floor(money / (nowcost + fkind[uk][5] * (toplv - nowlv)))
}else{
divnum = 0;
}
if(!mem && !divnum){//Lv1スタートで一人も居ない上に、目標Lvの売値が今の買値より安かった時
money -= fkind[uk][1];
divnum = 1;
if(toplv == 1){
money -= fkind[uk][3];
toplv = 2;
}
// alert("mem=" + mem + "\ntoplv=" + toplv + "\nnowlv=" + nowlv + "\nflv=" + flv + "\nnowcost=" + nowcost + "\nsell=" + Math.floor(nowcost * sellrate / 100) + "\ndivnum=" + divnum + "\nmoney=" + money + "\nnextlvc=" + nextlvc);
datastr += "Lv1の時に一人購入して、Lv" + toplv + "までレベルアップ<BR>\n";
}
if(checkm(divnum)){
money = -money;
alert(money + "円不足で\nLv" + toplv + "にすら行けませんよ!");
return;
}
money -= ((fkind[uk][5] * (toplv - nowlv) + nowcost) * divnum);
if(checkm(money)){
money = -money;
alert(money + "円不足で\nLv" + toplv + "にすら行けませんよ!");
return;
}
mem += divnum;
for(i = 0 ; i < toplv - nowlv ; i++){
nowcost = cap99(Math.floor(nowcost + nowcost * fkind[uk][2] / 100));
}
if(divnum && !(lvupc <= 0)){
datastr += "Lv" + nowlv + "の時に" + (mem) + "人まで(" + divnum + "人)購入して、Lv" + toplv + "までレベルアップ<BR>\n";
}else if(!(lvupc <= 0)){
datastr += "開始時に一人も購入せずに、Lv" + toplv + "までレベルアップ<BR>\n";
}
nowlv = toplv;
nextlvc = fkind[uk][3] + fkind[uk][4] * (nowlv - 1) + fkind[uk][5] * mem;
}
datastr += "<TABLE cellpadding='0' cellspacing='0' style='text-align:right;' border='0'>\n";
while( mem >= 0 ){
ifnum[nowlv-toplv] = mem;
ifmoney[nowlv-toplv] = money + Math.floor(nowcost * sellrate / 100) * mem;
if(Math.floor(nowcost * sellrate / 100) >= 99999){
money += 99999 * mem;
datastr += "</TABLE>\nここで残り" + mem + "人全て売って終了<BR>\n最終金額は" + pcomma(money) + "円(" + pcomma(money - fmoney) + "円増加)ちなみに…<BR><BR>\n";
mem = -1;
if(flv < toplv + 1){
flv = toplv;
}
for(j = 0 ; j < (nowlv - flv) ; j++){
if(!j){
datastr += "<TABLE cellpadding='0' cellspacing='0' style='text-align:right;'>\n";
}
datastr += "<TR><TD>Lv<TD>" + (flv + j) + "<TD>で<TD>" + ifnum[j+flv-toplv] + "<TD>人全て売っていれば、<TD" + ((ifmoney[j+flv-toplv] > money) ? " class='red'" : '') + ">" + pcomma(ifmoney[j+flv-toplv]) +"<TD>円になりました</TR>\n";
if(j == (nowlv - flv - 1)){
datastr += "</TABLE>";
}
}
}else{
divnum = mem;
if(money < nextlvc){
while(mem > -1){
if(money > nextlvc){
break;
}
money += Math.floor(nowcost * sellrate / 100);
mem--;
nextlvc = fkind[uk][3] + fkind[uk][4] * (nowlv - 1) + fkind[uk][5] * mem;
}
}
if(money > nextlvc && mem >= 0){
money -= nextlvc;
if( (divnum - mem) == 0){
datastr += "<TR><TD colspan='7' style='text-align:left;'>Lv" + nowlv + "を1人も売らずにレベルアップ</TR>\n";
}else{
datastr += "<TR><TD>Lv<TD>" + nowlv + "<TD>で<TD>" + mem + "<TD>人まで<TD>(" + (divnum - mem) + "人)<TD>売ってレベルアップ</TR>\n";
}
nowlv++;
nowcost = cap99(Math.floor(nowcost + nowcost * fkind[uk][2] / 100));
nextlvc = fkind[uk][3] + fkind[uk][4] * (nowlv - 1) + fkind[uk][5] * mem;
}else{
tc = fkind[uk][1];
tl = 1;
while(Math.floor(tc * sellrate / 100) < 99999){
tc = cap99(Math.floor(tc + tc * fkind[uk][2] / 100));
tl++;
}
datastr += "</TABLE>\nLv" + tl + "まで育成できずにLv" + nowlv + "で力尽きる。ちなみに…<BR><BR>\n";
if(flv < toplv + 1){
flv = toplv;
}
for(j = 0 ; j < (nowlv - flv + 1) ; j++){
if(!j){
datastr += "<TABLE cellpadding='0' cellspacing='0' style='text-align:right;'>\n";
}
datastr += "<TR><TD>Lv<TD>" + (flv + j) + "<TD>で<TD>" + ifnum[j+flv-toplv] + "<TD>人全て売っていれば、<TD>" + pcomma(ifmoney[j+flv-toplv]) +"<TD>円になりました</TR>\n";
if(j == (nowlv - flv)){
datastr += "</TABLE>\n";
}
}
}
}
}
with(parent.bottom.document){
clear();
open("text/html");
write("<HTML><HEAD><LINK href='./style.css' rel='stylesheet' type='text/css'></HEAD><BODY><CENTER>"+datastr+"<BR><A href='../index.html' target='_top'>TOPへ戻る</A></CENTER></BODY></HTML>");
close();
}
}
function checkm(mon){
if(mon < 0){
return true;
}else{
return false;
}
}
function pcomma(cnum){
cnum = String( cnum );
while( cnum != ( cnum = cnum.replace( /^(\d+)(\d{3})/ , "$1,$2" ) ) ){}
return cnum;
}
</SCRIPT>
<STYLE type="text/css">
BODY {margin:5px 0 0 0;padding:0;}
</STYLE>
</HEAD>
<BODY>
<CENTER>
<仮想敵
<SELECT name="mode">
<OPTION value="0">通常
<OPTION value="1">大群
<OPTION value="2">盗人
<OPTION value="3">TD
</SELECT>
<SELECT name="difficulty">
<OPTION value="0">Easy
<OPTION value="1" selected>Normal
<OPTION value="2">Hard
<OPTION value="3">Lunatic
</SELECT>>
初期人数<INPUT type="text" size="2" onFocus="this.select()" value="10">人、
LvUp毎に<INPUT type="text" size="2" onFocus="this.select()" value="0">人購入して
<INPUT type="text" size="2" onFocus="this.select()" value="1">Lvの状態の<BR>
<SELECT name="kind">
<OPTION value="0">近接
<OPTION value="1">弾幕
<OPTION value="2">飛行
</SELECT>
タイプを
<SELECT name="sort">
<OPTION value="0">HP
<OPTION value="1">攻撃
<OPTION value="2">防御
<OPTION value="3">弾防
<OPTION value="4" selected>値段
<OPTION value="5">LvUp
<OPTION value="6">総コ
</SELECT>
で(<INPUT type="checkbox" checked>逆順)ソートして
<INPUT type="button" value="出力" onClick="calc()"> <INPUT type="button" value="-1Lv" onClick="changelv(0)"><INPUT type="button" value="+1Lv" onClick="changelv(1)">
<BR><HR style="width:75%;height:1px;color:#80C0E0;">
現在人数<INPUT type="text" size="2" value="0" onFocus="this.select()">、
現在Lv<INPUT type="text" size="2" value="0" onFocus="this.select()" title="10万スタートのように、該当ユニットが まだ一人も居ない場合はLv0のままでok">、
所持金<INPUT type="text" size="7" value="100000" onFocus="this.select()">
開始でLv<INPUT type="text" size="2" value="5" onFocus="this.select()" title="Lv5が一番効率がいいのかな?">
まで売らずに
<SELECT name="farmkind">
<OPTION value="0">チルノ
<OPTION value="1">てゐ
<OPTION value="2">橙
<OPTION value="3">穣子
<OPTION value="4">中国
<OPTION value="5">雛
<OPTION value="6">慧音
<OPTION value="7">幽香
<OPTION value="8">小町
<OPTION value="9">妖夢
<OPTION value="10">萃香
<OPTION value="11">フラン
<OPTION value="12">妹紅
<OPTION value="13">メディ
<OPTION value="14">アリス
<OPTION value="15">鈴仙
<OPTION value="16">咲夜
<OPTION value="17">藍
<OPTION value="18">にとり
<OPTION value="19">永琳
<OPTION value="20">魔理沙
<OPTION value="21">レミリ
<OPTION value="22">映姫
<OPTION value="23">紫
<OPTION value="24">神奈子
<OPTION value="25">諏訪子
<OPTION value="26">パチュ
<OPTION value="27">文
<OPTION value="28">霊夢
<OPTION value="29">早苗
<OPTION value="30">幽々子
<OPTION value="31">輝夜
</SELECT>
で<INPUT type="button" value="牧場経営" onClick="farm()">
<iframe name="bottom" src="http://www14.atwiki.jp/patchcon/pub/bottom.html">
</iframe>
</CENTER>
</BODY>
</HTML>
}}
製作:[[だんえた総合データ集>>http://www4.ocn.ne.jp/~deepmoon/index.html]]様
#js(){{{
<SCRIPT Language="JavaScript">
sellrate=75; fkind=new Array(32);
fkind[0]=new Array("チルノ",80,57,952,2584,68,120,60,22,9,11, 5,9,5,"1","9-9"," ","根性","凍結"); fkind[1]=new Array("てゐ",90,56,980,2660,70,130,70,24,11,13,5,12,6,"1","7-8","幸運","回避","加速");
fkind[2]=new Array("橙",95,57,1008,2736,72,140,65,24,12,12,5,11,6,"1","8-11"," ","回避","加速"); fkind[3]=new Array("秋 穣子",110,55,1020,3230,85,120,62,25,11,11,5,11,5,"1","6-8","幸運"," ","根性");
fkind[4]=new Array("紅 美鈴",120,55,1040,2400,80,170,72,22,10,14,6,12,6,"1","6-8","根性"," ","自爆"); fkind[5]=new Array("鍵山 雛",140,54,1155,3780,105,160,71,22,9,13,6,12,6,"1","8-9","無効","混乱","猛毒");
fkind[6]=new Array("上白沢 慧音",200,47,1120,3920,140,200,75,25,11,14,6,13,6,"1","7-9","回避","反射","回復"); fkind[7]=new Array("風見 幽香",260,48,960,3840,160,210,68,38,11,13,5,11,6,"1","6-7","範囲"," ","反射");
fkind[8]=new Array("小野塚 小町",260,46,960,3840,160,210,75,32,13,12,6,12,5,"1","8-10","必殺"," ","加速"); fkind[9]=new Array("魂魄 妖夢",280,46,1020,3740,170,170,60,24,8,13,5,12,6,"1","4-24","必殺","回避","反射");
fkind[10]=new Array("伊吹 萃香",370,43,1080,3600,180,400,160,34,14,1,1,1,2,"1","6-8","分裂","範囲"," "); fkind[11]=new Array("フランドール・スカーレット",390,43,1080,3600,180,160,80,31,14,8,4,13,6,"1","8-12","吸血","蝙蝠","範囲");
fkind[12]=new Array("藤原 妹紅",420,46,1140,3990,190,300,125,30,15,1,2,2,1,"1","6-10","自爆","再生","範囲"); fkind[13]=new Array("メディスン・メランコリー",132,52,1080,3456,108,110,40,23,8,6,3,14,8,"5","6-0","猛毒"," ","人形");
fkind[14]=new Array("アリス・マーガトロイド",180,48,1040,3250,130,90,40,28,8,5,3,15,7,"5","4-0","人形","人形","人形"); fkind[15]=new Array("鈴仙・U・イナバ",186,48,1300,3510,130,110,50,38,11,6,3,15,6,"5","5-0","混乱","範囲","反射");
fkind[16]=new Array("十六夜 咲夜",190,47,1040,3250,130,120,40,30,8,4,2,14,7,"5","5-0","遅延","反射","貫通"); fkind[17]=new Array("八雲 藍",200,47,1040,3510,130,130,48,26,10,6,3,15,7,"5","5-0","反射","結界","無効");
fkind[18]=new Array("河城 にとり",260,45,1120,3840,160,160,40,20,6,5,5,16,5,"5","5-0"," ","反射"," "); fkind[19]=new Array("八意 永琳",300,44,900,3780,180,200,88,24,8,1,1,2,1,"2-5","3-0","回復","再生","必殺");
fkind[20]=new Array("霧雨 魔理沙",300,45,1080,3960,180,120,28,56,18,4,4,8,3,"3","10-0","範囲","回避","加速"); fkind[21]=new Array("レミリア・スカーレット",370,43,1080,3600,180,150,40,34,8,2,2,12,5,"3-7","3-0","貫通","蝙蝠","範囲");
fkind[22]=new Array("四季 映姫 ヤマザナドゥ",390,44,1140,3990,190,180,38,28,9,2,4,15,5,"3-7","4-0","貫通","反射","威圧"); fkind[23]=new Array("八雲 紫",420, 43,1080,3780,180,200,64,28,10,3,2,11,6,"4","4-0","境界","結界","威圧");
fkind[24]=new Array("八坂 神奈子",450,43,1200,4200,200,200,48,28,8,5,3,12,4,"3-7","2-0","範囲","威圧","無効"); fkind[25]=new Array("洩矢 諏訪子",450,43,1200,5000,200,220,35,28,7,5,3,10,5,"5","4-0","範囲","反射","威圧");
fkind[26]=new Array("パチュリー・ノーレッジ",260,45,1078,3542,154,200,50,38,13,12,5,6,3,"3","5-1","範囲","無効"," "); fkind[27]=new Array("射命丸 文",260,47,960,3840,160,150,60,25,8,8,3,4,3,"2","8-0","範囲"," ","貫通");
fkind[28]=new Array("博麗 霊夢",300,43,1080,3600,180,220,42,30,11,13,7,7,3,"3","6-2","範囲","無効","結界"); fkind[29]=new Array("東風谷 早苗",336,44,1110,4070,185,230,40,30,11,10,6,10,3,"3","7-1","反射","結界","回復");
fkind[30]=new Array("西行寺 幽々子",390,43,1080,3780,180,270,86,40,9,9,4,6,2,"3","3-1","範囲"," ","反魂"); fkind[31]=new Array("蓬莱山 輝夜",440,46,1140,3990,190,260,120,38,16,2,2,1,1,"3","1-1","範囲","再生"," ");
function calc(){
mdiff=new Array(16); mdiff[0]=new Array(65,85,55); mdiff[1]=new Array(75,90,60); mdiff[2]=new Array(80,90,65); mdiff[3]=new Array(85,95,70); mdiff[4]=new Array(25,65,25);
mdiff[5]=new Array(30,70,30); mdiff[6]=new Array(35,75,40); mdiff[7]=new Array(45,80,45); mdiff[8]=new Array(65,70,65); mdiff[9]=new Array(75,85,70); mdiff[10]=new Array(80,85,70);
mdiff[11]=new Array(85 ,100,70); mdiff[12]=new Array(65,85,50); mdiff[13]=new Array(75,90,50); mdiff[14]=new Array(80,90,50); mdiff[15]=new Array(85,95,55); mdiffstr=new Array(2);
mdiffstr[0]=new Array("通常","大群","盗人","TD"); mdiffstr[1]=new Array("Easy","Normal","Hard","Lunatic"); modenum=parseInt(document.all.mode.value,10);
diffnum=parseInt(document.all.difficulty.value,10); mdiff[0]=mdiff[modenum*4+diffnum]; kindnum=document.all.kind.value; sta=new Array();
for(i=0;i<((kindnum==2)?6:13);i++) sta[i]=fkind[i+kindnum*13];
ave=new Array(6); ave[0]=new Array(191.5,80.2,27.1,11.3,10.4,4.69,10.0,5.07);/*近接*/ ave[1]=new Array(153.0,46.0,30.0,9.15,4.15,2.92,12.2,5.30);/*弾幕*/
ave[2]=new Array(221.6,66.3,33.5,11.3,9.00,4.50,5.66,2.50);/*飛行*/ ave[3]=new Array(0,0,0,0); ave[4]=new Array(0,0,0,0); ave[5]=new Array(0,0,0,0);
stnum=Math.floor(parseInt(document.all.tags("INPUT")(0).value,10)); honum=Math.floor(parseInt(document.all.tags("INPUT")(1).value,10));
lvnum=Math.floor(parseInt(document.all.tags("INPUT")(2).value,10)); sortnum=document.all.sort.value;
if(isNaN(lvnum)||isNaN(stnum)||isNaN(honum)){alert("半角数字で入力してください"); return;}
else if(lvnum<1){alert("LVが異常"); return;}
datastr="<BR><SPAN style='font-size:70%;'>「対○」項目は、対応種の全ユニットの平均ステを持った同Lvの仮想敵に対する<BR>(撃破に必要な攻撃回数/撃破される被攻撃回数)。※ただし、射程距離やスキル等は勘案に入っていない</SPAN><BR>初期<SPAN style='font-size:130%;'>"+stnum+"</SPAN>人、LvUp毎に<SPAN style='font-size:130%;'>"+honum+"</SPAN>人購入して、Lv<SPAN style='font-size:130%;'>"+lvnum+"</SPAN>("+(stnum+honum*(lvnum-1))+"人)の状態\n<BR><TABLE border='1' cellpadding='1' cellspacing='1'>\n<THEAD><TR><TH>名前<TH>値段<TH>LvUp<TH>総コスト<TH>HP<TH>攻撃<TH>防御<TH>弾防<TH>対近<TH>対弾<TH>対空<TH>射程<TH>移動<TH>能力</TR></THEAD>\n<COL class='name'><COL class='cost'><COL class='lvup'><COL class='allcost'><COL class='hp'><COL class='atk'><COL class='def'><COL class='bdef'><COL class='vskin'><COL class='vsdan'><COL class='vshik'><COL class='range'><COL class='move'><COL class='skill'><TBODY>";
lvnum--; dat=new Array(((kindnum==2)?6:13));
for(i=0;i<dat.length;i++) dat[i]=new Array(13);
for(i=0;i<dat.length;i++){
for(j=0;j<4;j++){
if(j==0) dat[i].hp=dat[i][j+4]=sta[i][j*2+6]+sta[i][j*2+7]*lvnum; else if(j==1) dat[i].atk=dat[i][j+4]=sta[i][j*2+6]+sta[i][j*2+7]*lvnum;
else if(j==2) dat[i].def=dat[i][j+4]=sta[i][j*2+6]+sta[i][j*2+7]*lvnum; else if(j==3) dat[i].bdef=dat[i][j+4]=sta[i][j*2+6]+sta[i][j*2+7]*lvnum;
dat[i][j+4]+="<SPAN class='adi'>>"+(sta[i][j*2+6]+sta[i][j*2+7]*(lvnum+1))+"</SPAN>";
}
for(m=0;m<3;m++){for(l=0;l<4;l++) ave[m+3][l]=Math.round((ave[m][2*l]+ave[m][2*l+1]*lvnum)*mdiff[0][(l!=3)?l:2]/100);}
for(k=0;k<3;k++){
dat[i][k+8]=Math.ceil(ave[k+3][0]/((sta[i][8]+sta[i][9]*lvnum)-(!kindnum?ave[k+3][2]:ave[k+3][3])))+"/";
sttemp=sta[i][10+Math.round(k/2)*2]+sta[i][11+Math.round(k/2)*2]*lvnum;
if((ave[k+3][1]-sttemp)>0) dat[i][k+8]+=Math.ceil((sta[i][6]+sta[i][7]*lvnum)/(ave[k+3][1]-sttemp)); else dat[i][k+8]+="∞";
}
allcost=sta[i][1]*stnum; nowcost=sta[i][1]; memnum=stnum;
for(l=0;l<lvnum;l++){
nowcost=cap99(Math.floor(nowcost+nowcost*sta[i][2]/100)); allcost+=honum*nowcost; lvupcost=cap99(sta[i][3]+sta[i][4]*l+memnum*sta[i][5]);
memnum+=honum; allcost+=lvupcost;
}
dat[i][0]=sta[i][0]; dat[i].nowcost=dat[i][1]=nowcost; nextcost=cap99(Math.floor(nowcost+nowcost*sta[i][2]/100)); dat[i][1]+="<BR><SPAN class='adi'>"+nextcost+"</SPAN>";
dat[i].lvup=dat[i][2]=cap99(sta[i][3]+sta[i][4]*lvnum+memnum*sta[i][5]); nextlvcost=cap99(sta[i][3]+sta[i][4]*(lvnum+1)+(memnum+honum)*sta[i][5]);
dat[i][2]+="<BR><SPAN class='adi'>"+nextlvcost+"</SPAN>"; dat[i].allcost=dat[i][3]=allcost; dat[i][11]=sta[i][14]; dat[i][12]=sta[i][15];
dat[i][13]=sta[i][16]+((lvnum>1)?("/"+sta[i][17]):"")+((lvnum>4)?("/"+sta[i][18]):"");
}
for(i=0;i<dat.length;i++){datastr+="<TR>\n"; dat.sort(mysort); for(m=0;m<14;m++) datastr+="<TD>"+dat[i][m]; datastr+="</TR>\n"}
for(i=0;i<3;i++){
datastr+="<TR>\n"; if(i==0) datastr+="<TD colspan='4' class='none'>仮想近接";
else if(i==1) datastr+="<TD colspan='4' class='none'>仮想弾幕"; else if(i==2) datastr+="<TD colspan='4' class='none'>仮想飛行";
datastr+="<TD>"+ave[i+3][0]+"<SPAN class='adi'>>"+Math.round(ave[i+3][0]+ave[i][1])+"</SPAN><TD>"+ave[i+3][1]+"<SPAN class='adi'>>"+Math.round(ave[i+3][1]+ave[i][3])+"</SPAN><TD>"+ave[i+3][2]+"<SPAN class='adi'>>"+Math.round(ave[i+3][2]+ave[i][5])+"</SPAN><TD>"+ave[i+3][3]+"<SPAN class='adi'>>"+Math.round(ave[i+3][3]+ave[i][7])+"</SPAN>";
if(!i) datastr+="<TD colspan='6' rowspan='3' class='none' style='text-align:center;'>"+mdiffstr[0][modenum]+"/"+mdiffstr[1][diffnum]+"</TR>\n";
}
datastr+="</TBODY></TABLE>\n"
with(parent.bottom.document){
clear(); open("text/html");
write("<HTML><HEAD><LINK href='./style.css' rel='stylesheet' type='text/css'></HEAD><BODY><CENTER>"+datastr+"<BR><BR><A href='../index.html' target='_top'>TOPへ戻る</A></CENTER></BODY></HTML>");
close();
}
}
function mysort(a,b){
revnum=document.all.tags("INPUT")(3).checked; if(sortnum==0) return (b.hp-a.hp)*(revnum?-1:1); else if(sortnum==1) return (b.atk-a.atk)*(revnum?-1:1);
else if(sortnum==2) return (b.def-a.def)*(revnum?-1:1); else if(sortnum==3) return (b.bdef-a.bdef)*(revnum?-1:1); else if(sortnum==4) return (b.nowcost-a.nowcost)*(revnum?-1:1);
else if(sortnum==5) return (b.lvup-a.lvup)*(revnum?-1:1); else if(sortnum==6) return (b.allcost-a.allcost)*(revnum?-1:1);
}
function cap99(numb){if(numb>999999) return 999999; else return numb;}
function changelv(flag){nowlv=parseInt(document.all.tags("INPUT")(2).value,10); flag?nowlv++:nowlv--; if(isNaN(nowlv)||nowlv<1) alert("Lvが異常"); else{document.all.tags("INPUT")(2).value=nowlv; calc();}}
function farm(){
ifmoney=new Array(19); ifnum=new Array(19); mem=Math.floor(parseInt(document.all.tags("INPUT")(7).value,10)); nowlv=Math.floor(parseInt(document.all.tags("INPUT")(8).value,10));
money=Math.floor(parseInt(document.all.tags("INPUT")(9).value,10)); toplv=Math.floor(parseInt(document.all.tags("INPUT")(10).value,10)); fmoney=money; uk=document.all.farmkind.value;
if(!nowlv){mem=nowlv; nowlv=1;} flv=nowlv; nowcost=fkind[uk][1]; for(i=0;i<(nowlv-1);i++) nowcost=cap99(Math.floor(nowcost+nowcost*fkind[uk][2]/100));
nextlvc=fkind[uk][3]+fkind[uk][4]*(nowlv-1)+fkind[uk][5]*mem; lvupc=0; divnum=0;
datastr="<BR>\n現在<SPAN style='font-size:130%;'>"+mem+"</SPAN>人、Lv<SPAN style='font-size:130%;'>"+nowlv+"</SPAN>、所持金"+pcomma(money)+"開始で"+fkind[uk][0]+"を養殖<BR><BR>\n";
if(isNaN(mem)||isNaN(nowlv)||isNaN(money)){alert("半角数字で入力してください"); return;} else if((mem<0)||(nowlv<0)||(money<0)){alert("どれかがマイナス数値です?"); return;}
else if((mem==0)&&(nowlv>1)){alert("人が居ないのにLvが上がってますよ?"); return;}
if(toplv>=nowlv){
nextc=cap99(Math.floor(nowcost+nowcost*fkind[uk][2]/100)); sac=nextc-nowcost;
while(sac<fkind[uk][5]){nowlv++; nowcost=nextc; nextc=cap99(Math.floor(nextc+nextc*fkind[uk][2]/100)); sac=nextc-nowcost;}//Lvアップのコスト上昇>人数係数なら、そのLvまでジャンプ
if((nowlv-flv)){//上記処理で1Lv以上アップした時
if(!mem){money-=fkind[uk][1]; mem=1; datastr+="Lv1の時に1人購入して、Lv"+nowlv+"までレベルアップ<BR>\n";}
else datastr+="Lv"+flv+"は買い足さずに、Lv"+nowlv+"までレベルアップ<BR>\n"; tlvupc=0; for(j=0;j<(nowlv-flv);j++) tlvupc+=fkind[uk][3]+fkind[uk][4]*(j+flv-1);
money-=(tlvupc+fkind[uk][5]*(nowlv-flv)*mem);
}
for(j=0;j<(toplv-nowlv);j++) lvupc+=fkind[uk][3]+fkind[uk][4]*(j+nowlv-1);/*上記処理後、目標Lvまでのレベルアップコスト試算*/ money-=lvupc+fkind[uk][5]*mem*(toplv-nowlv);
if(checkm(money)){money=-money; alert(money+"円不足で\nLv"+toplv+"にすら行けませんよ!"); return;} tempc=fkind[uk][1];//目標Lvの売値を算出
for(i=0;i<(toplv-1);i++) tempc=cap99(Math.floor(tempc+tempc*fkind[uk][2]/100));
if(nowcost<Math.floor(tempc*sellrate/100)) divnum=Math.floor(money/(nowcost+fkind[uk][5]*(toplv-nowlv)));//目標Lvでの売値が今の買値より高い時、目標Lvまでのコストを引いた後何人買えるか
else divnum=0;
if(!mem&&!divnum){//Lv1スタートで一人も居ない上に、目標Lvの売値が今の買値より安かった時
money-=fkind[uk][1]; divnum=1; if(toplv==1){money-=fkind[uk][3]; toplv=2;}
// alert("mem="+mem+"\ntoplv="+toplv+"\nnowlv="+nowlv+"\nflv="+flv+"\nnowcost="+nowcost+"\nsell="+Math.floor(nowcost*sellrate/100)+"\ndivnum="+divnum+"\nmoney="+money+"\nnextlvc="+nextlvc);
datastr+="Lv1の時に一人購入して、Lv"+toplv+"までレベルアップ<BR>\n";
}
if(checkm(divnum)){money=-money; alert(money+"円不足で\nLv"+toplv+"にすら行けませんよ!"); return;} money-=((fkind[uk][5]*(toplv-nowlv)+nowcost)*divnum);
if(checkm(money)){money=-money; alert(money+"円不足で\nLv"+toplv+"にすら行けませんよ!"); return;} mem+=divnum;
for(i=0;i<toplv-nowlv;i++) nowcost=cap99(Math.floor(nowcost+nowcost*fkind[uk][2]/100));
if(divnum&&!(lvupc<=0)) datastr+="Lv"+nowlv+"の時に"+(mem)+"人まで("+divnum+"人)購入して、Lv"+toplv+"までレベルアップ<BR>\n";
else if(!(lvupc<=0)) datastr+="開始時に一人も購入せずに、Lv"+toplv+"までレベルアップ<BR>\n"; nowlv=toplv;
nextlvc=fkind[uk][3]+fkind[uk][4]*(nowlv-1)+fkind[uk][5]*mem;
}
datastr+="<TABLE cellpadding='0' cellspacing='0' style='text-align:right;' border='0'>\n";
while(mem>=0){
ifnum[nowlv-toplv]=mem; ifmoney[nowlv-toplv]=money+Math.floor(nowcost*sellrate/100)*mem;
if(Math.floor(nowcost*sellrate/100)>=99999){
money+=99999*mem; datastr+="</TABLE>\nここで残り"+mem+"人全て売って終了<BR>\n最終金額は"+pcomma(money)+"円("+pcomma(money-fmoney)+"円増加)ちなみに…<BR><BR>\n";
mem=-1; if(flv<toplv+1) flv=toplv;
for(j=0;j<(nowlv-flv);j++){
if(!j) datastr+="<TABLE cellpadding='0' cellspacing='0' style='text-align:right;'>\n";
datastr+="<TR><TD>Lv<TD>"+(flv+j)+"<TD>で<TD>"+ifnum[j+flv-toplv]+"<TD>人全て売っていれば、<TD"+((ifmoney[j+flv-toplv]>money)?" class='red'":'')+">"+pcomma(ifmoney[j+flv-toplv])+"<TD>円になりました</TR>\n";
if(j==(nowlv-flv-1)) datastr+="</TABLE>";
}
}
else{
divnum=mem;
if(money<nextlvc){while(mem>-1){if(money>nextlvc) break; money+=Math.floor(nowcost*sellrate/100); mem--; nextlvc=fkind[uk][3]+fkind[uk][4]*(nowlv-1)+fkind[uk][5]*mem;}}
if(money>nextlvc&&mem>=0){
money-=nextlvc; if((divnum-mem)==0) datastr+="<TR><TD colspan='7' style='text-align:left;'>Lv"+nowlv+"を1人も売らずにレベルアップ</TR>\n";
else datastr+="<TR><TD>Lv<TD>"+nowlv+"<TD>で<TD>"+mem+"<TD>人まで<TD>("+(divnum-mem)+"人)<TD>売ってレベルアップ</TR>\n"; nowlv++;
nowcost=cap99(Math.floor(nowcost+nowcost*fkind[uk][2]/100)); nextlvc=fkind[uk][3]+fkind[uk][4]*(nowlv-1)+fkind[uk][5]*mem;
}
else{
tc=fkind[uk][1]; tl=1; while(Math.floor(tc*sellrate/100)<99999){tc=cap99(Math.floor(tc+tc*fkind[uk][2]/100)); tl++;}
datastr+="</TABLE>\nLv"+tl+"まで育成できずにLv"+nowlv+"で力尽きる。ちなみに…<BR><BR>\n"; if(flv<toplv+1) flv=toplv;
for(j=0;j<(nowlv-flv+1);j++){
if(!j) datastr+="<TABLE cellpadding='0' cellspacing='0' style='text-align:right;'>\n";
datastr+="<TR><TD>Lv<TD>"+(flv+j)+"<TD>で<TD>"+ifnum[j+flv-toplv]+"<TD>人全て売っていれば、<TD>"+pcomma(ifmoney[j+flv-toplv])+"<TD>円になりました</TR>\n";
if(j==(nowlv-flv)) datastr+="</TABLE>\n";
}
}
}
}
with(parent.bottom.document){
clear(); open("text/html"); write("<HTML><HEAD><LINK href='./style.css' rel='stylesheet' type='text/css'></HEAD><BODY><CENTER>"+datastr+"<BR></CENTER></BODY></HTML>"); close();
}
}
function checkm(mon){if(mon<0) return true; else return false;}
function pcomma(cnum){cnum=String(cnum); while(cnum!=(cnum=cnum.replace(/^(\d+)(\d{3})/,"$1,$2"))){} return cnum;}
</SCRIPT><STYLE type="text/css">BODY {margin:5px 0 0 0;padding:0;}</STYLE>
<CENTER>
<仮想敵
<SELECT name="mode">
<OPTION value="0">通常
<OPTION value="1">大群
<OPTION value="2">盗人
<OPTION value="3">TD
</SELECT>
<SELECT name="difficulty">
<OPTION value="0">Easy
<OPTION value="1" selected>Normal
<OPTION value="2">Hard
<OPTION value="3">Lunatic
</SELECT>>
初期人数<INPUT type="text" size="2" onFocus="this.select()" value="10">人、
LvUp毎に<INPUT type="text" size="2" onFocus="this.select()" value="0">人購入して
<INPUT type="text" size="2" onFocus="this.select()" value="1">Lvの状態の<BR>
<SELECT name="kind">
<OPTION value="0">近接
<OPTION value="1">弾幕
<OPTION value="2">飛行
</SELECT>
タイプを
<SELECT name="sort">
<OPTION value="0">HP
<OPTION value="1">攻撃
<OPTION value="2">防御
<OPTION value="3">弾防
<OPTION value="4" selected>値段
<OPTION value="5">LvUp
<OPTION value="6">総コ
</SELECT>
で(<INPUT type="checkbox" checked>逆順)ソートして
<INPUT type="button" value="出力" onClick="calc()"> <INPUT type="button" value="-1Lv" onClick="changelv(0)"><INPUT type="button" value="+1Lv" onClick="changelv(1)">
<BR><HR style="width:75%;height:1px;color:#80C0E0;">
現在人数<INPUT type="text" size="2" value="0" onFocus="this.select()">、
現在Lv<INPUT type="text" size="2" value="0" onFocus="this.select()" title="10万スタートのように、該当ユニットが まだ一人も居ない場合はLv0のままでok">、
所持金<INPUT type="text" size="7" value="100000" onFocus="this.select()">
開始でLv<INPUT type="text" size="2" value="5" onFocus="this.select()" title="Lv5が一番効率がいいのかな?">
まで売らずに
<SELECT name="farmkind">
<OPTION value="0">チルノ
<OPTION value="1">てゐ
<OPTION value="2">橙
<OPTION value="3">秋 穣子
<OPTION value="4">紅 美鈴
<OPTION value="5">鍵山 雛
<OPTION value="6">上白沢 慧音
<OPTION value="7">風見 幽香
<OPTION value="8">小野塚 小町
<OPTION value="9">魂魄 妖夢
<OPTION value="10">伊吹 萃香
<OPTION value="11">フランドール・スカーレット
<OPTION value="12">藤原 妹紅
<OPTION value="13">メディスン・メランコリー
<OPTION value="14">アリス・マーガトロイド
<OPTION value="15">鈴仙・U・イナバ
<OPTION value="16">十六夜 咲夜
<OPTION value="17">八雲 藍
<OPTION value="18">河城 にとり
<OPTION value="19">八意 永琳
<OPTION value="20">霧雨 魔理沙
<OPTION value="21">レミリア・スカーレット
<OPTION value="22">四季 映姫 ヤマザナドゥ
<OPTION value="23">八雲 紫
<OPTION value="24">八坂 神奈子
<OPTION value="25">洩矢 諏訪子
<OPTION value="26">パチュリー・ノーレッジ
<OPTION value="27">射命丸 文
<OPTION value="28">博麗 霊夢
<OPTION value="29">東風谷 早苗
<OPTION value="30">西行寺 幽々子
<OPTION value="31">蓬莱山 輝夜
</SELECT>
で<INPUT type="button" value="牧場経営" onClick="farm()">
</CENTER><hr>
<iframe name="bottom" align="center" height="800" width="100%" src="http://www14.atwiki.jp/patchcon/pub/bottom.html">
<ilayer src="http://www14.atwiki.jp/patchcon/pub/bottom.html" bgcolor="#99FFFF" width=100% height=800>
</ilayer>
</iframe>
}}}
表示オプション
横に並べて表示:
変化行の前後のみ表示: