feat: 전투 시뮬레이터에 시드 값 입력 가능

- 시드 값 입력시 반복 횟수는 1회로 고정
- 스킬 성공 여부는 동일하나, 실제 수치가 조금 다른 경우가 관측 이유는 추후 확인
- 히든 버프는 아직 미 반영
This commit is contained in:
2023-02-23 23:48:09 +09:00
parent ea256790ec
commit 87e57aea0e
3 changed files with 33 additions and 6 deletions
+11 -3
View File
@@ -84,6 +84,7 @@ $rawDefenderList = $query['defenderGenerals'];
$rawDefenderCity = $query['defenderCity'];
$rawDefenderNation = $query['defenderNation'];
$warSeed = $query['seed'] ?? '';
$generalCheck = [
'required'=>[
@@ -297,10 +298,13 @@ function extractRankVar(array $rawVal):Map{
function simulateBattle(
$rawAttacker, $rawAttackerCity, $rawAttackerNation,
$rawDefenderList, $rawDefenderCity, $rawDefenderNation,
$startYear, $year, $month
$startYear, $year, $month, $warSeed
){
$warSeed = bin2hex(random_bytes(16));
if(!$warSeed){
$warSeed = bin2hex(random_bytes(16));
}
$warRng = new RandUtil(new LiteHashDRBG($warSeed));
$attacker = new WarUnitGeneral(
@@ -400,12 +404,16 @@ $avgWar = 0;
$attackerActivatedSkills = [];
$defendersActivatedSkills = [];
if($warSeed){
$repeatCnt = 1;
}
foreach(Util::range($repeatCnt) as $repeatIdx){
/** @var WarUnit $attacker */
[$attacker, $city, $battleResult, $conquerCity, $attackerRice, $defenderRice] = simulateBattle(
$rawAttacker, $rawAttackerCity, $rawAttackerNation,
$rawDefenderList, $rawDefenderCity, $rawDefenderNation,
$startYear, $year, $month
$startYear, $year, $month, $warSeed
);
$lastWarLog = Util::mapWithKey(function($key, $values){
return ConvertLog(join('<br>', $values));