전투
diff --git a/hwe/j_simulate_battle.php b/hwe/j_simulate_battle.php
index e405be56..149288cc 100644
--- a/hwe/j_simulate_battle.php
+++ b/hwe/j_simulate_battle.php
@@ -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('
', $values));
diff --git a/hwe/ts/battle_simulator.ts b/hwe/ts/battle_simulator.ts
index e47df0b0..9d5f98d0 100644
--- a/hwe/ts/battle_simulator.ts
+++ b/hwe/ts/battle_simulator.ts
@@ -84,6 +84,7 @@ type BattleInfo = {
year: number,
month: number,
repeatCnt: number,
+ seed?: string,
};
type ExportedGeneralInfo = {
@@ -638,6 +639,12 @@ $(function ($) {
const defenderCity = battleData.defenderCity;
const defenderNation = battleData.defenderNation;
+ const seed = battleData.seed;
+
+ if(seed){
+ $('#seed').val(seed);
+ }
+
$('#year').val(battleData.year);
$('#month').val(battleData.month);
$('#repeat_cnt').val(battleData.repeatCnt);
@@ -712,6 +719,8 @@ $(function ($) {
const month = parseInt(unwrap_any
($('#month').val()));
const repeatCnt = parseInt(unwrap_any($('#repeat_cnt').val()));
+ const seed = unwrap_any($('#seed').val());
+
return {
attackerGeneral: attackerGeneral,
attackerCity: attackerCity,
@@ -724,6 +733,8 @@ $(function ($) {
year: year,
month: month,
repeatCnt: repeatCnt,
+
+ seed,
};
}