「javascript/サーヴァント経験値計算」の編集履歴(バックアップ)一覧に戻る

javascript/サーヴァント経験値計算 - (2021/08/02 (月) 22:25:50) のソース

#javascript(){{{{{
<style>
#svExp tbody tr td:nth-of-type(1){text-align: center;}
#svExp input[type=text]{text-align: right;}
</style>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">

function func(){
	// 数値を取得
	var now  = parseFloat($('#svExp [name="nowLv"]').val());
	var goal = parseFloat($('#svExp [name="goaLv"]').val());
	
	// 現在レベルが目標レベルより高い場合は、1Lv分だけ計算
	if(now >= goal){goal = now + 1.0;}
	
	// 目標レベルがMAX超の場合、Lv.MAXまでに修正
	var sv = $('#svExp [name="sv_ce"]').val();
	if (sv == 1 && goal > 120) { goal = 120; }
	else if(sv == 0 && goal > 100){goal = 100;}
	
	// 現在レベルから目標レベルまでに必要な経験値を計算
	var Tn = exp_total(now);
	var Tg = exp_total(goal);
	exp = Tg - Tn;
	
	// 現在レベルがMAX超の場合
	if((sv == 1 && now >= 120) || (sv == 0 && now >= 100)){exp = 0;}
	
	// テーブルに入力
	$('#svExp [name="totalEXP"]').val('' + exp);
	
	//必要になる強化素材数を計算してテーブルに入力
	$('#svExp input.num').each(function(i, out){
		if(out.name.match(/(\d+?)(.+?)/)){
			var n = RegExp.$1;
			var x = RegExp.$2;
			if		(x == 'A'){var mag = 1.2;}
			else if	(x == 'B'){var mag = 1.0;}
			
			$(out).val(Math.ceil(exp / (1000 * Math.pow(3, n-1) * mag)));
		}
	});
}
function exp_total(Lv){
	// Lv.91以上の場合は、別な経験値テーブルを参照
	// ただし、対象がサーヴァントの場合のみ
	var over90 = [
		12567000, 13021900, 13532000, 14116500, 14795000, 
		15587500, 16514400, 17596500, 18855000, 20311500,
		40623000, 60934500, 81246000, 101557500, 121869000,
		142180500, 162492000, 182803500, 203115000, 223426500,
		243738000, 264049500, 284361000, 304672500, 324984000,
		345295500, 365607000, 385918500, 406230000, 426541500
	];
	var sv = $('#svExp [name="sv_ce"]').val();
	if(sv == 1 && Lv > 90){return over90[Lv - 91];}
	
	// Lv.90以下
	return 100.0 * Lv * (Lv - 1.0) * (Lv + 1.0) / 6.0;
}
</script>
}}}}}
#html2(){{
<table id="svExp">
	<tbody>
		<tr>
			<td>現在のレベル</td>
			<td colspan="2"><input type="number" maxlength="6" style="width:6em;" name="nowLv" value="1"></td>
		</tr>
		<tr>
			<td>目標のレベル</td>
			<td colspan="2"><input type="number" maxlength="6" style="width:6em;" name="goaLv" value="0"></td>
		</tr>
		<tr>
			<td>対象</td>
			<td colspan="2"><select name="sv_ce" style="width:10em;">
				<option value="1" selected>サーヴァント</option>
				<option value="0">概念礼装</option>
			</select></td>
		</tr>
		<tr>
			<td colspan="3"><form name="calc" id="calc"><input type="button" value="計算" onclick="func()"></form></td>
		</tr>
		<tr>
			<td><b>必要経験値</b></td>
			<td colspan="2"><input readonly type="text" style="width:8em;" name="totalEXP"></td>
		</tr>
		<tr align=center>
			<td>強化素材</td>
			<td>クラス一致</td>
			<td>クラス不一致</td>
		</tr>
		<tr>
			<td>★1 叡智の種火</td>
			<td><input readonly type="text" style="width:5em;" name="1A" class="num"> 個</td>
			<td><input readonly type="text" style="width:5em;" name="1B" class="num"> 個</td>
		</tr>
		<tr>
			<td>★2 叡智の灯火</td>
			<td><input readonly type="text" style="width:5em;" name="2A" class="num"> 個</td>
			<td><input readonly type="text" style="width:5em;" name="2B" class="num"> 個</td>
		</tr>
		<tr>
			<td>★3 叡智の大火</td>
			<td><input readonly type="text" style="width:5em;" name="3A" class="num"> 個</td>
			<td><input readonly type="text" style="width:5em;" name="3B" class="num"> 個</td>
		</tr>
		<tr>
			<td>★4 叡智の猛火</td>
			<td><input readonly type="text" style="width:5em;" name="4A" class="num"> 個</td>
			<td><input readonly type="text" style="width:5em;" name="4B" class="num"> 個</td>
		</tr>
		<tr>
			<td>★5 叡智の業火</td>
			<td><input readonly type="text" style="width:5em;" name="5A" class="num"> 個</td>
			<td><input readonly type="text" style="width:5em;" name="5B" class="num"> 個</td>
		</tr>
	</tbody>
</table>
}}