기존에 작성해두었던 EventHandler 시스템으로 하드코드 이벤트 이동 - 매달 - 보급선 설정 - 전쟁 단기 수입 설정 - 부대장 부여 - 1월 - 유산 포인트 계산 - 도시 인구 변화 - 수입 - 관직 제한 해제 - 재난 - 상인 - 새해 알림 - 특기 부여 - 4월 - 관직 제한 해제 - 재난 - 7월 - 유산 포인트 계산 - 도시 인구 변화 - 수입 - 관직 제한 해제 - 재난 - 상인 - 10월 - 관직 제한 해제 - 재난 - 천통 시 - 유산 포인트 계산 Reviewed-on: https://storage.hided.net/gitea/devsam/core/pulls/230
49 lines
973 B
PHP
49 lines
973 B
PHP
<?php
|
|
|
|
namespace sammo\Event\Action;
|
|
|
|
use sammo\DB;
|
|
use sammo\LiteHashDRBG;
|
|
use sammo\RandUtil;
|
|
use sammo\UniqueConst;
|
|
use sammo\Util;
|
|
|
|
class RandomizeCityTradeRate extends \sammo\Event\Action
|
|
{
|
|
public function run(array $env)
|
|
{
|
|
$year = $env['year'];
|
|
$month = $env['month'];
|
|
|
|
$rng = new RandUtil(new LiteHashDRBG(Util::simpleSerialize(
|
|
UniqueConst::$hiddenSeed,
|
|
'randomizeCityTradeRate',
|
|
$year,
|
|
$month,
|
|
)));
|
|
|
|
$db = DB::db();
|
|
foreach ($db->query('SELECT city,level FROM city') as $city) {
|
|
//시세
|
|
$prob = [
|
|
1 => 0,
|
|
2 => 0,
|
|
3 => 0,
|
|
4 => 0.2,
|
|
5 => 0.4,
|
|
6 => 0.6,
|
|
7 => 0.8,
|
|
8 => 1
|
|
][$city['level']];
|
|
if ($prob > 0 && $rng->nextBool($prob)) {
|
|
$trade = $rng->nextRangeInt(95, 105);
|
|
} else {
|
|
$trade = null;
|
|
}
|
|
$db->update('city', [
|
|
'trade' => $trade
|
|
], 'city=%i', $city['city']);
|
|
}
|
|
}
|
|
}
|