Files
core/hwe/sammo/Event/Action/RandomizeCityTradeRate.php
T
Hide_D d17b2518df 전역 하드코드 이벤트를 동적 변경 영역으로 이동 (#230)
기존에 작성해두었던 EventHandler 시스템으로 하드코드 이벤트 이동
- 매달
  - 보급선 설정
  - 전쟁 단기 수입 설정
  - 부대장 부여
- 1월
  - 유산 포인트 계산
  - 도시 인구 변화
  - 수입
  - 관직 제한 해제
  - 재난
  - 상인
  - 새해 알림
  - 특기 부여
- 4월
  - 관직 제한 해제
  - 재난
- 7월
  - 유산 포인트 계산
  - 도시 인구 변화
  - 수입
  - 관직 제한 해제
  - 재난
  - 상인
- 10월
  - 관직 제한 해제
  - 재난
- 천통 시
  - 유산 포인트 계산

Reviewed-on: https://storage.hided.net/gitea/devsam/core/pulls/230
2023-03-12 17:14:49 +09:00

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']);
}
}
}