- GameUnitDetail의 요구 기술, 지역, 도시, 연도를 GameUnitConstraint로 통합 - GameUnitConstraint는 조건 검사, 설명 제공 - 병종 정의를 GameUnitConstraint 이용 재정의 - test 함수에 General 객체 요구, - test 함수의 ownCities에 단순 도시 외 도시 정보 추가 - 변경된 값에 맞게 호출 함수 변경
220 lines
8.7 KiB
PHP
220 lines
8.7 KiB
PHP
<?php
|
|
|
|
namespace sammo;
|
|
|
|
use sammo\GameUnitConstraint\Impossible;
|
|
use sammo\GameUnitConstraint\ReqCities;
|
|
use sammo\GameUnitConstraint\ReqMinRelYear;
|
|
use sammo\GameUnitConstraint\ReqRegions;
|
|
use sammo\GameUnitConstraint\ReqTech;
|
|
|
|
class GameUnitConst extends GameUnitConstBase
|
|
{
|
|
const DEFAULT_CREWTYPE = 1100;
|
|
|
|
protected static function getBuildData(): array
|
|
{
|
|
return [
|
|
[
|
|
1000, self::T_CASTLE, '성벽',
|
|
100, 100, 7, 0, 0, 99, 9,
|
|
[new Impossible()],
|
|
[], //성벽은 공격할 수 없다.
|
|
[self::T_FOOTMAN => 1.2],
|
|
['성벽입니다.', '생성할 수 없습니다.'],
|
|
null, null, null
|
|
],
|
|
|
|
[
|
|
1100, self::T_FOOTMAN, '보병',
|
|
100, 150, 7, 10, 0, 9, 9,
|
|
[],
|
|
[self::T_ARCHER => 1.2, self::T_CAVALRY => 0.8, self::T_SIEGE => 1.2],
|
|
[self::T_ARCHER => 0.8, self::T_CAVALRY => 1.2, self::T_SIEGE => 0.8],
|
|
['표준적인 보병입니다.', '보병은 방어특화이며,', '상대가 회피하기 어렵습니다.'],
|
|
null, null, null
|
|
],
|
|
[
|
|
1200, self::T_ARCHER, '궁병',
|
|
100, 100, 7, 10, 0, 10, 10,
|
|
[],
|
|
[self::T_CAVALRY => 1.2, self::T_FOOTMAN => 0.8, self::T_SIEGE => 1.2],
|
|
[self::T_CAVALRY => 0.8, self::T_FOOTMAN => 1.2, self::T_SIEGE => 0.8],
|
|
['표준적인 궁병입니다.', '궁병은 선제사격을 하는 병종입니다.'],
|
|
null, ['che_선제사격시도', 'che_선제사격발동'], null
|
|
],
|
|
[
|
|
1300, self::T_CAVALRY, '기병',
|
|
150, 100, 7, 5, 0, 11, 11,
|
|
[],
|
|
[self::T_FOOTMAN => 1.2, self::T_ARCHER => 0.8, self::T_SIEGE => 1.2],
|
|
[self::T_FOOTMAN => 0.8, self::T_ARCHER => 1.2, self::T_SIEGE => 0.8],
|
|
['표준적인 기병입니다.', '기병은 공격특화입니다.'],
|
|
null, null, null
|
|
],
|
|
[
|
|
1104, self::T_FOOTMAN, '근위병',
|
|
150, 200, 7, 10, 0, 12, 12,
|
|
[new ReqTech(2000), new ReqCities('낙양')],
|
|
[self::T_ARCHER => 1.2, self::T_CAVALRY => 0.8, self::T_SIEGE => 1.2],
|
|
[self::T_ARCHER => 0.8, self::T_CAVALRY => 1.2, self::T_SIEGE => 0.8],
|
|
['최강의 보병입니다.'],
|
|
null, ['che_방어력증가5p'], null
|
|
],
|
|
[
|
|
1106, self::T_FOOTMAN, '백이병',
|
|
175, 175, 7, 5, 0, 13, 11,
|
|
[new ReqTech(2000), new ReqCities('성도')],
|
|
[self::T_ARCHER => 1.1, self::T_CAVALRY => 0.9, self::T_SIEGE => 1.1],
|
|
[self::T_ARCHER => 0.9, self::T_CAVALRY => 1.1, self::T_SIEGE => 0.9],
|
|
['정예 보병입니다. 불리한 싸움도 버텨냅니다.'],
|
|
null, ['che_방어력증가5p'], null
|
|
],
|
|
[
|
|
97201, self::T_ARCHER, '화랑',
|
|
175, 150, 8, 15, 0.05, 13, 13,
|
|
[new ReqTech(2000), new ReqCities('한', '서라벌')],
|
|
[self::T_CAVALRY => 1.2, self::T_FOOTMAN => 0.9, self::T_SIEGE => 1.2],
|
|
[self::T_CAVALRY => 0.8, self::T_FOOTMAN => 1.1, self::T_SIEGE => 0.8],
|
|
['특수한 궁병입니다.'],
|
|
null, ['che_선제사격시도', 'che_선제사격발동'], null
|
|
],
|
|
[
|
|
1204, self::T_ARCHER, '석궁병',
|
|
200, 125, 7, 10, 0, 13, 13,
|
|
[new ReqTech(2000), new ReqCities('건업')],
|
|
[self::T_CAVALRY => 1.2, self::T_FOOTMAN => 0.8, self::T_SIEGE => 1.2],
|
|
[self::T_CAVALRY => 0.8, self::T_FOOTMAN => 1.2, self::T_SIEGE => 0.8],
|
|
['강력한 화살을 쏩니다.'],
|
|
null, ['che_선제사격시도', 'che_선제사격발동'], null
|
|
],
|
|
[
|
|
1303, self::T_CAVALRY, '돌격기병',
|
|
200, 125, 8, 10, 0, 13, 12,
|
|
[new ReqTech(2000), new ReqCities('서량', '안정')],
|
|
[self::T_FOOTMAN => 1.2, self::T_ARCHER => 0.8, self::T_SIEGE => 1.2],
|
|
[self::T_FOOTMAN => 0.8, self::T_ARCHER => 1.2, self::T_SIEGE => 0.8],
|
|
['저돌적으로 공격합니다.'],
|
|
null, ['che_기병병종전투'], null
|
|
],
|
|
[
|
|
1307, self::T_CAVALRY, '호표기병',
|
|
200, 150, 7, 5, 0, 14, 14,
|
|
[new ReqTech(2000), new ReqCities('허창')],
|
|
[self::T_FOOTMAN => 1.2, self::T_ARCHER => 0.8, self::T_SIEGE => 1.2],
|
|
[self::T_FOOTMAN => 0.8, self::T_ARCHER => 1.2, self::T_SIEGE => 0.8],
|
|
['정예 기병입니다.'],
|
|
null, ['che_기병병종전투'], null
|
|
],
|
|
[
|
|
1306, self::T_CAVALRY, '맹수병',
|
|
250, 175, 6, 0, 0, 16, 16,
|
|
[new ReqTech(2000), new ReqCities('운남')],
|
|
[self::T_FOOTMAN => 1.2, self::T_ARCHER => 0.8, self::T_SIEGE => 1.2],
|
|
[self::T_FOOTMAN => 0.8, self::T_ARCHER => 1.2, self::T_SIEGE => 0.8],
|
|
['어느 누구보다 강력합니다.'],
|
|
null, ['che_기병병종전투'], null
|
|
],
|
|
[
|
|
1400, self::T_WIZARD, '귀병',
|
|
80, 80, 7, 5, 0.5, 9, 9,
|
|
[],
|
|
[self::T_SIEGE => 1.2],
|
|
[self::T_SIEGE => 0.8],
|
|
['계략을 사용하는 병종입니다.'],
|
|
null, null, null
|
|
],
|
|
[
|
|
1405, self::T_WIZARD, '남귀병',
|
|
60, 60, 7, 10, 0.8, 8, 8,
|
|
[new ReqTech(1000)],
|
|
[self::T_SIEGE => 1.2],
|
|
[self::T_SIEGE => 0.8],
|
|
['전투를 포기하고 계략에 몰두합니다.'],
|
|
null, null, null
|
|
],
|
|
[
|
|
1404, self::T_WIZARD, '악귀병',
|
|
130, 130, 7, 0, 0.6, 12, 12,
|
|
[new ReqTech(2000), new ReqCities('장안')],
|
|
[self::T_SIEGE => 1.2],
|
|
[self::T_SIEGE => 0.8],
|
|
['백병전에도 능숙합니다.'],
|
|
null, null, null
|
|
],
|
|
[
|
|
1407, self::T_WIZARD, '천귀병',
|
|
90, 130, 7, 15, 0.6, 11, 12,
|
|
[new ReqTech(2000), new ReqCities('성도')],
|
|
[self::T_SIEGE => 1.2],
|
|
[self::T_SIEGE => 0.8],
|
|
['갑주를 두른 귀병입니다.'],
|
|
null, null, null
|
|
],
|
|
[
|
|
1500, self::T_SIEGE, '정란',
|
|
100, 100, 6, 0, 0, 14, 5,
|
|
[new ReqMinRelYear(3)],
|
|
[self::T_FOOTMAN => 1.25, self::T_ARCHER => 1.25, self::T_CAVALRY => 1.25, self::T_WIZARD => 1.25, self::T_CASTLE => 1.8, 1106 => 1.112],
|
|
[self::T_FOOTMAN => 1.2, self::T_ARCHER => 1.2, self::T_CAVALRY => 1.2, self::T_WIZARD => 1.2],
|
|
['높은 구조물 위에서 공격합니다.'],
|
|
['che_성벽부상무효'], ['che_선제사격시도', 'che_선제사격발동'], null
|
|
],
|
|
[
|
|
1501, self::T_SIEGE, '충차',
|
|
150, 100, 6, 0, 0, 20, 5,
|
|
[new ReqTech(1000), new ReqMinRelYear(3)],
|
|
[self::T_FOOTMAN => 0.8, self::T_ARCHER => 0.8, self::T_CAVALRY => 0.8, self::T_WIZARD => 0.8, self::T_CASTLE => 2.4],
|
|
[self::T_FOOTMAN => 1.2, self::T_ARCHER => 1.2, self::T_CAVALRY => 1.2, self::T_WIZARD => 1.2],
|
|
['엄청난 위력으로 성벽을 부수어버립니다.'],
|
|
['che_성벽부상무효'], null, null
|
|
],
|
|
[
|
|
1502, self::T_SIEGE, '벽력거',
|
|
135, 100, 6, 5, 0, 20, 5,
|
|
[new ReqTech(2000), new ReqCities('업')],
|
|
[self::T_FOOTMAN => 1.25, self::T_ARCHER => 1.25, self::T_CAVALRY => 1.25, self::T_WIZARD => 1.25, self::T_CASTLE => 1.8, 1106 => 1.112],
|
|
[self::T_FOOTMAN => 0.833, self::T_ARCHER => 0.833, self::T_CAVALRY => 0.833, self::T_WIZARD => 0.833, 1106 => 0.909],
|
|
['상대에게 돌덩이를 날립니다.'],
|
|
['che_성벽부상무효'], ['che_선제사격시도', 'che_선제사격발동'], null
|
|
],
|
|
[
|
|
97101, self::T_FOOTMAN, '중장보병',
|
|
150, 175, 7, 10, 0, 12, 12,
|
|
[new ReqTech(3000)],
|
|
[self::T_ARCHER => 1.2, self::T_CAVALRY => 0.8, self::T_SIEGE => 1.2],
|
|
[self::T_ARCHER => 0.8, self::T_CAVALRY => 1.2, self::T_SIEGE => 0.8],
|
|
['전천후 보병입니다.'],
|
|
null, ['che_방어력증가5p'], null
|
|
],
|
|
[
|
|
1202, self::T_ARCHER, '연노병',
|
|
150, 175, 8, 10, 0, 12, 12,
|
|
[new ReqTech(3000)],
|
|
[self::T_CAVALRY => 1.2, self::T_FOOTMAN => 0.8, self::T_SIEGE => 1.2],
|
|
[self::T_CAVALRY => 0.8, self::T_FOOTMAN => 1.2, self::T_SIEGE => 0.8],
|
|
['화살을 연사합니다.'],
|
|
null, ['che_선제사격시도', 'che_선제사격발동'], null
|
|
],
|
|
[
|
|
1304, self::T_CAVALRY, '철기병',
|
|
175, 175, 7, 5, 0, 13, 13,
|
|
[new ReqTech(3000)],
|
|
[self::T_FOOTMAN => 1.2, self::T_ARCHER => 0.8, self::T_SIEGE => 1.2],
|
|
[self::T_FOOTMAN => 0.8, self::T_ARCHER => 1.2, self::T_SIEGE => 0.8],
|
|
['철갑을 두른 기병입니다.'],
|
|
null, ['che_기병병종전투'], null
|
|
],
|
|
[
|
|
1401, self::T_WIZARD, '신귀병',
|
|
100, 100, 7, 20, 0.6, 12, 12,
|
|
[new ReqTech(3000)],
|
|
[self::T_SIEGE => 1.2],
|
|
[self::T_SIEGE => 0.8],
|
|
['신출귀몰한 귀병입니다.'],
|
|
null, null, null
|
|
],
|
|
];
|
|
}
|
|
}
|