test(compare): trace deterministic monthly seed progression
This commit is contained in:
@@ -94,6 +94,21 @@ class ProcessIncome extends \sammo\Event\Action
|
||||
foreach ($generalRawList as $rawGeneral) {
|
||||
$generalObj = new General($rawGeneral, null, null, null, null, $year, $month, false);
|
||||
$gold = Util::round(getBill($generalObj->getVar('dedication')) * $ratio);
|
||||
if (
|
||||
getenv('REF_DETERMINISTIC_INSTALL_ENABLED') === '1'
|
||||
&& getenv('SEED_PARITY_MONTHLY_RESOURCE_TRACE') === '1'
|
||||
&& in_array((string)$generalObj->getID(), explode(',', (string)getenv('REF_AI_TRACE_GENERAL_IDS')), true)
|
||||
) {
|
||||
fwrite(STDOUT, 'MONTHLY_RESOURCE_REF ' . json_encode([
|
||||
'action' => 'ProcessIncome',
|
||||
'type' => 'gold',
|
||||
'generalId' => $generalObj->getID(),
|
||||
'current' => $generalObj->getVar('gold'),
|
||||
'pay' => $gold,
|
||||
'ratio' => $ratio,
|
||||
'originOutcome' => $originoutcome,
|
||||
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "\n");
|
||||
}
|
||||
$generalObj->increaseVar('gold', $gold);
|
||||
|
||||
$logger = $generalObj->getLogger();
|
||||
|
||||
@@ -71,6 +71,21 @@ class ProcessSemiAnnual extends \sammo\Event\Action
|
||||
|
||||
$resource = $this->resource;
|
||||
|
||||
$traceGeneralIDs = array_filter(explode(',', (string)getenv('REF_AI_TRACE_GENERAL_IDS')), 'strlen');
|
||||
if (getenv('REF_DETERMINISTIC_INSTALL_ENABLED') === '1' && getenv('SEED_PARITY_MONTHLY_RESOURCE_TRACE') === '1') {
|
||||
foreach ($traceGeneralIDs as $generalID) {
|
||||
$current = $db->queryFirstField('SELECT %b FROM general WHERE no = %i', $resource, (int)$generalID);
|
||||
if ($current !== null) {
|
||||
fwrite(STDOUT, 'MONTHLY_RESOURCE_REF ' . json_encode([
|
||||
'action' => 'ProcessSemiAnnual',
|
||||
'resource' => $resource,
|
||||
'generalId' => (int)$generalID,
|
||||
'current' => (int)$current,
|
||||
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 내정 1% 감소
|
||||
$db->update('city', [
|
||||
'dead' => 0,
|
||||
@@ -90,6 +105,20 @@ class ProcessSemiAnnual extends \sammo\Event\Action
|
||||
$resource => $db->sqleval('IF(%b > 10000, %b * 0.97, %b * 0.99)', $resource, $resource, $resource)
|
||||
], '%b > 1000', $resource);
|
||||
|
||||
if (getenv('REF_DETERMINISTIC_INSTALL_ENABLED') === '1' && getenv('SEED_PARITY_MONTHLY_RESOURCE_TRACE') === '1') {
|
||||
foreach ($traceGeneralIDs as $generalID) {
|
||||
$next = $db->queryFirstField('SELECT %b FROM general WHERE no = %i', $resource, (int)$generalID);
|
||||
if ($next !== null) {
|
||||
fwrite(STDOUT, 'MONTHLY_RESOURCE_REF ' . json_encode([
|
||||
'action' => 'ProcessSemiAnnualAfter',
|
||||
'resource' => $resource,
|
||||
'generalId' => (int)$generalID,
|
||||
'next' => (int)$next,
|
||||
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// > 100000 유지비 5%, > 100000 유지비 3%, > 1000 유지비 1%
|
||||
$db->update('nation', [
|
||||
$resource => $db->sqleval('IF(%b > 100000, %b * 0.95, IF(%b > 10000, %b * 0.97, %b * 0.99))', $resource, $resource, $resource, $resource, $resource)
|
||||
|
||||
@@ -114,7 +114,7 @@ class RaiseDisaster extends \sammo\Event\Action
|
||||
if (!$isGood) {
|
||||
//FIXME: factory 형태로 바꿔야함
|
||||
$generalListByCity = Util::arrayGroupBy($db->query(
|
||||
'SELECT %l FROM general WHERE city IN %li',
|
||||
'SELECT %l FROM general WHERE city IN %li ORDER BY city, no',
|
||||
Util::formatListOfBackticks(General::mergeQueryColumn()[0]),
|
||||
Util::squeezeFromArray($targetCityList, 'city')),
|
||||
'city');
|
||||
@@ -133,6 +133,19 @@ class RaiseDisaster extends \sammo\Event\Action
|
||||
'def' => $db->sqleval('def * %d', $affectRatio),
|
||||
'wall' => $db->sqleval('wall * %d', $affectRatio),
|
||||
], 'city = %i', $city['city']);
|
||||
if (in_array((string)$city['city'], array_filter(explode(',', (string)getenv('REF_AI_TRACE_CITY_IDS')), 'strlen'), true)) {
|
||||
$storedTrust = $db->queryFirstField('SELECT trust FROM city WHERE city = %i', $city['city']);
|
||||
fwrite(STDOUT, 'MONTHLY_FLOAT_TRACE ' . json_encode([
|
||||
'engine' => 'ref',
|
||||
'cityId' => $city['city'],
|
||||
'year' => $year,
|
||||
'month' => $month,
|
||||
'isGood' => false,
|
||||
'inputTrust' => $city['trust'],
|
||||
'affectRatio' => $affectRatio,
|
||||
'storedTrust' => $storedTrust,
|
||||
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "\n");
|
||||
}
|
||||
|
||||
$generalList = array_map(
|
||||
function ($rawGeneral) use ($city, $year, $month) {
|
||||
@@ -158,6 +171,19 @@ class RaiseDisaster extends \sammo\Event\Action
|
||||
'def' => $db->sqleval('least(def * %d, def_max)', $affectRatio),
|
||||
'wall' => $db->sqleval('least(wall * %d, wall_max)', $affectRatio),
|
||||
], 'city = %i', $city['city']);
|
||||
if (in_array((string)$city['city'], array_filter(explode(',', (string)getenv('REF_AI_TRACE_CITY_IDS')), 'strlen'), true)) {
|
||||
$storedTrust = $db->queryFirstField('SELECT trust FROM city WHERE city = %i', $city['city']);
|
||||
fwrite(STDOUT, 'MONTHLY_FLOAT_TRACE ' . json_encode([
|
||||
'engine' => 'ref',
|
||||
'cityId' => $city['city'],
|
||||
'year' => $year,
|
||||
'month' => $month,
|
||||
'isGood' => true,
|
||||
'inputTrust' => $city['trust'],
|
||||
'affectRatio' => $affectRatio,
|
||||
'storedTrust' => $storedTrust,
|
||||
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user