﻿//GC ElementRatio symulator
//config(RATIO_GC)
FIRST_GC = 5;
SECOND_GC = 10;
THIRD_GC = 20;
FOURTH_GC = 40;

//config(RATIO_TABLE)
FIRST_RATIO = 10;
SECOND_RATIO = 20;
THIRD_RATIO = 30;
FOURTH_RATIO = 40;

function ElementCalc(from, to){
   var pFrom = parseInt(from);
   var pTo = parseInt(to);
   //error
   if(pFrom >= pTo) return "error";

   for(var i=pFrom, result=0; i<pTo; ++i){
	if(i < FIRST_RATIO){
		result += FIRST_GC;
	} else if(i < SECOND_RATIO){
		result += SECOND_GC;
	} else if(i < THIRD_RATIO){
		result += THIRD_GC;
	} else if(i < FOURTH_RATIO){
		result += FOURTH_GC;
	}
   }
  return result;
}

//GC WeponCustom symulator
//config
FIRST_CUSTOM   = 10;
SECOND_CUSTOM  = 20;
THIRD_CUSTOM   = 30;
FOURTH_CUSTOM  = 50;
FIFTH_CUSTOM   = 80;
SIXTH_CUSTOM   = 120;
SEVENTH_CUSTOM = 160;
EIGHTH_CUSTOM  = 250;

//config

function WeponCustomCalc(from, to){
   var pFrom = parseInt(from);
   var pTo = parseInt(to);
   //error
   if(pFrom >= pTo) return "error";

   for(var i=pFrom, result=0; i<pTo; ++i){
	switch(i){
	case 0:
		result += FIRST_CUSTOM;
		break;
	case 1:
		result += SECOND_CUSTOM;
		break;
	case 2:
		result += THIRD_CUSTOM;
		break;
	case 3:
		result += FOURTH_CUSTOM;
		break;
	case 4:
		result += FIFTH_CUSTOM;
		break;
	case 5:
		result += SIXTH_CUSTOM;
		break;
	case 6:
		result += SEVENTH_CUSTOM;
		break;
	case 7:
		result += EIGHTH_CUSTOM;
		break;
	default:
		break;
	}
   }
  return result;
}

//GC WeponRestore symulator

//config
FIRST_RESTORE   = 10;
SECOND_RESTORE  = 20;
THIRD_RESTORE   = 30;
FOURTH_RESTORE  = 40;
FIFTH_RESTORE   = 50;
SIXTH_RESTORE   = 100;
SEVENTH_RESTORE = 150;
EIGHTH_RESTORE  = 200;
NINTH_RESTORE   = 300;
LAST_RESTORE    = 600;

function WeponRestoreCalc(from, to){
   var pFrom = parseInt(from);
   var pTo = parseInt(to);
   //error
   if(pFrom >= pTo) return "error";

   for(var i=pFrom, result=0; i<pTo; ++i){
	switch(i){
	case 0:
		result += FIRST_RESTORE;
		break;
	case 1:
		result += SECOND_RESTORE;
		break;
	case 2:
		result += THIRD_RESTORE;
		break;
	case 3:
		result += FOURTH_RESTORE;
		break;
	case 4:
		result += FIFTH_RESTORE;
		break;
	case 5:
		result += SIXTH_RESTORE;
		break;
	case 6:
		result += SEVENTH_RESTORE;
		break;
	case 7:
		result += EIGHTH_RESTORE;
		break;
	case 8:
		result += NINTH_RESTORE;
		break;
	case 9:
		result += LAST_RESTORE;
		break;
	default:
		break;
	}
   }
  return result;
}

//上限回復と武器強化を合わせた場合
function test(from_custom, from_restore, to_custom, to_restore){
	var pFrom_custom   = parseInt(from_custom);
	var pFrom_restore = parseInt(from_restore);
	var pTo_custom    = parseInt(to_custom);
	var pTo_restore   = parseInt(to_restore);
	//error
	if(pFrom_custom > pFrom_restore) return "error";
	if(pFrom_custom > pTo_custom) return "error";
	if(pFrom_custom > pTo_restore) return "error";
	if(pFrom_restore > pTo_restore) return "error";

	//返す結果
	var result = 0;
	//とりあえず現在の上限まで引き上げる
	result = WeponCustomCalc(pFrom_custom, pTo_custom);
	//上限の修復
	result += WeponRestoreCalc(pFrom_restore, pTo_restore);

	return result;
}