불가침 제의 구현

This commit is contained in:
2018-11-22 02:48:42 +09:00
parent cfb8b03446
commit b7fd539755
2 changed files with 196 additions and 90 deletions
-90
View File
@@ -259,96 +259,6 @@ function process_53(&$general) {
pushGenLog($general, ["<C>●</>{$month}월:<D><b>{$destNation['name']}</b></>{$josaRo} 통합 제의 서신을 보냈습니다.<1>$date</>"]);
}
function process_61(&$general) {
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$date = substr($general['turntime'],11,5);
list($year, $month, $turnterm) = $gameStor->getValuesAsArray(['year','month','turnterm']);
if($general['level'] < 5 || $general['nation']==0) {
pushGenLog($general, ["<C>●</>{$month}월:수뇌부가 아닙니다. 제의 실패. <1>$date</>"]);
return;
}
$supply = $db->queryFirstField('SELECT supply FROM city WHERE city=%i AND nation=%i', $general['city'], $general['nation']);
$myTurn = $db->queryFirstField('SELECT %b FROM nation WHERE nation=%i', "l{$general['level']}turn0", $general['nation']);
$command = DecodeCommand($myTurn);
$which = $command[1];
$when = Util::valueFit($command[2], 1, 20);
$srcNation = getNationStaticInfo($general['nation']);
$destNation = getNationStaticInfo($which);
if($destNation['nation'] == 0) {
pushGenLog($general, ["<C>●</>{$month}월:멸망한 국가입니다. 제의 실패. <1>$date</>"]);
return;
}
if($supply === null) {
pushGenLog($general, ["<C>●</>{$month}월:아국이 아닙니다. 제의 실패. <1>$date</>"]);
return;
}
if($supply === 0) {
pushGenLog($general, ["<C>●</>{$month}월:고립된 도시입니다. 제의 실패. <1>$date</>"]);
return;
}
// 상대에게 발송
$src = new MessageTarget(
$general['no'],
$general['name'],
$srcNation['nation'],
$srcNation['name'],
$srcNation['color'],
GetImageURL($general['imgsvr'], $general['picture'])
);
$dest = new MessageTarget(
0,
'',
$destNation['nation'],
$destNation['name'],
$destNation['color']
);
$now = new \DateTime($date);
$validUntil = new \DateTime($date);
$validMinutes = max(30, $turnterm*3);
$validUntil->add(new \DateInterval("PT{$validMinutes}M"));
//FIXME: 현재 command가 숫자로만 이루어져 있어서 문자열을 처리할 수 없다.
//XXX: 으악.
//TODO: 커맨드 처리 방식을 json으로 변경
$option = $db->queryFirstField('SELECT reserved FROM diplomacy WHERE me=%i AND you=%i', $src->nationID, $dest->nationID);
$msg = new DiplomaticMessage(
Message::MSGTYPE_DIPLOMACY,
$src,
$dest,
"{$srcNation['name']}{$when}년 불가침 제의 서신",
$now,
$validUntil,
[
'action'=>DiplomaticMessage::TYPE_NO_AGGRESSION,
'year'=>$when,
'option'=>$option
]
);
$msg->send();
//NOTE: 현재 내무부 외교란의 비고는 diplomacy가 기준이니까 유지할 필요는 있다.
//FIXME: 외교란도 message란의 diplomacy를 참조하든가 하도록.
$db->update('diplomacy', [
'showing'=>$validUntil->format('Y-m-d H:i:s')
], 'me=%i AND you=%i', $src->nationID, $dest->nationID);
// 3턴후
pushGenLog($general, ["<C>●</>{$month}월:<D><b>{$destNation['name']}</b></>으로 불가침 제의 서신을 보냈습니다.<1>$date</>"]);
}
function process_63(&$general) {
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');