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

109 lines
3.8 KiB
PHP

<?php
namespace sammo;
use sammo\GameUnitConstraint\Impossible;
use sammo\GameUnitConstraint\ReqTech;
use sammo\GameUnitConstraint\ReqCities;
use sammo\GameUnitConstraint\ReqRegions;
use sammo\GameUnitConstraint\ReqMinRelYear;
class GameUnitConst extends GameUnitConstBase
{
const DEFAULT_CREWTYPE = 1500;
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, 18, 18,
[],
[self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8],
[self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2],
['표준적인 보병입니다.','보병은 방어특화이며,','상대가 회피하기 어렵습니다.'],
null, null, null
],
[
1200, self::T_ARCHER, '궁병',
100, 100, 7, 20, 0, 20, 20,
[],
[self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8],
[self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2],
['표준적인 궁병입니다.','궁병은 회피특화입니다.'],
null, null, null
],
[
1300, self::T_CAVALRY, '기병',
150, 100, 7, 5, 0, 22, 22,
[],
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8],
[self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2],
['표준적인 기병입니다.','기병은 공격특화입니다.'],
null, null, null
],
[
1400, self::T_WIZARD, '귀병',
80, 80, 7, 5, 0.5, 18, 18,
[],
[],
[],
['계략을 사용하는 병종입니다.'],
null, null, null
],
[
1405, self::T_WIZARD, '남귀병',
60, 60, 7, 10, 0.8, 16, 16,
[new ReqTech(1000)],
[],
[],
['전투를 포기하고 계략에 몰두합니다.'],
null, null, null
],
[
1500, self::T_SIEGE, '정란',
100, 100, 6, 0, 0, 7, 3,
[],
[self::T_CASTLE=>1.8],
[],
['높은 구조물 위에서 공격합니다.'],
['che_성벽부상무효'], null, null
],
[
1501, self::T_SIEGE, '충차',
150, 100, 6, 0, 0, 10, 3,
[new ReqTech(1000), new ReqMinRelYear(3)],
[self::T_CASTLE=>2.4],
[],
['엄청난 위력으로 성벽을 부수어버립니다.'],
['che_성벽부상무효'], null, null
],
[
1502, self::T_SIEGE, '벽력거',
200, 100, 6, 0, 0, 20, 4,
[new ReqTech(3000), new ReqCities('업')],
[self::T_CASTLE=>1.8],
[],
['상대에게 돌덩이를 날립니다.'],
['che_성벽부상무효'], null, null
],
[
1503, self::T_SIEGE, '목우',
50, 200, 5, 0, 0, 15, 3,
[new ReqTech(3000), new ReqCities('성도')],
[],
[],
['상대를 저지하는 특수병기입니다.'],
['che_성벽부상무효'], null, null
]
];
}
}