Files
core/hwe/scenario/unit/cr.php
T
Hide_D 2869ba5c42 feat,refac: GameUnitConstraint 개념 추가
- GameUnitDetail의 요구 기술, 지역, 도시, 연도를 GameUnitConstraint로 통합
- GameUnitConstraint는 조건 검사, 설명 제공
- 병종 정의를 GameUnitConstraint 이용 재정의
- test 함수에 General 객체 요구,
- test 함수의 ownCities에 단순 도시 외 도시 정보 추가
- 변경된 값에 맞게 호출 함수 변경
2025-01-22 16:26:15 +00:00

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
],
];
}
}