Add Wuling mountain road chapter
This commit is contained in:
@@ -1572,6 +1572,68 @@ export const twentyFourthBattleVictoryPages: StoryPage[] = [
|
||||
}
|
||||
];
|
||||
|
||||
export const twentyFifthBattleIntroPages: StoryPage[] = [
|
||||
{
|
||||
id: 'twenty-fifth-wuling-road',
|
||||
bgm: 'story-dark',
|
||||
chapter: '무릉의 닫힌 산길',
|
||||
background: 'story-three-heroes',
|
||||
speaker: '마량',
|
||||
text: '무릉은 계양처럼 성문 하나만 바라보는 땅이 아닙니다. 산길과 작은 마을이 흩어져 있어, 길을 잃으면 군량도 마음도 끊어집니다.'
|
||||
},
|
||||
{
|
||||
id: 'twenty-fifth-yi-ji-letter',
|
||||
bgm: 'battle-prep',
|
||||
chapter: '먼저 보내는 예',
|
||||
background: 'story-militia',
|
||||
speaker: '이적',
|
||||
text: '김선은 강하게 버티려 하지만, 아래 장수 공지는 백성의 피해를 걱정한다고 들었습니다. 산길 마을을 지키면 그에게 말이 닿을 것입니다.'
|
||||
},
|
||||
{
|
||||
id: 'twenty-fifth-zhuge-formation',
|
||||
bgm: 'battle-prep',
|
||||
chapter: '좁은 길의 진형',
|
||||
background: 'story-liu-bei',
|
||||
speaker: '제갈량',
|
||||
text: '좁은 산길에서는 무장이 많다고 곧 힘이 되는 것이 아닙니다. 앞길을 여는 자, 마을을 달래는 자, 보급을 잇는 자를 골라야 합니다.'
|
||||
},
|
||||
{
|
||||
id: 'twenty-fifth-wuling-sortie',
|
||||
bgm: 'battle-prep',
|
||||
chapter: '무릉 산길 확보전',
|
||||
background: 'story-sortie',
|
||||
speaker: '유비',
|
||||
portrait: 'liuBei',
|
||||
text: '산길을 불태우지 말고 이어야 하오. 무릉의 길과 마을을 지켜 내면, 닫힌 마음도 함께 열릴 것이오.'
|
||||
}
|
||||
];
|
||||
|
||||
export const twentyFifthBattleVictoryPages: StoryPage[] = [
|
||||
{
|
||||
id: 'twenty-fifth-victory-wuling-open',
|
||||
bgm: 'militia-theme',
|
||||
chapter: '무릉의 길이 이어지다',
|
||||
background: 'story-sortie',
|
||||
text: '김선의 산길 방어선이 무너지자 무릉의 마을들은 먼저 불안한 문을 열었습니다. 유비군은 산길 창고를 봉하고 백성의 길을 지켰습니다.'
|
||||
},
|
||||
{
|
||||
id: 'twenty-fifth-gong-zhi-joins',
|
||||
bgm: 'battle-prep',
|
||||
chapter: '공지의 결심',
|
||||
background: 'story-militia',
|
||||
speaker: '공지',
|
||||
text: '무릉을 힘으로만 누르지 않으셨군요. 백성을 앞세우는 군이라면, 저도 산길과 고을의 형세를 바쳐 따르겠습니다.'
|
||||
},
|
||||
{
|
||||
id: 'twenty-fifth-changsha-shadow',
|
||||
bgm: 'story-dark',
|
||||
chapter: '장사의 노장',
|
||||
background: 'story-three-heroes',
|
||||
speaker: '제갈량',
|
||||
text: '무릉까지 길이 이어졌습니다. 남은 장사에는 황충이라는 노장이 있습니다. 다음 싸움은 힘보다 예우와 인내를 시험할 것입니다.'
|
||||
}
|
||||
];
|
||||
|
||||
export const firstBattleMap: BattleMap = {
|
||||
width: 20,
|
||||
height: 18,
|
||||
@@ -1861,6 +1923,12 @@ export const twentyFourthBattleMap: BattleMap = {
|
||||
terrain: createTwentyFourthBattleTerrain()
|
||||
};
|
||||
|
||||
export const twentyFifthBattleMap: BattleMap = {
|
||||
width: 50,
|
||||
height: 34,
|
||||
terrain: createTwentyFifthBattleTerrain()
|
||||
};
|
||||
|
||||
export const firstBattleUnits: UnitData[] = [
|
||||
{
|
||||
id: 'liu-bei',
|
||||
@@ -3865,6 +3933,30 @@ export const guiyangRecruitUnits: UnitData[] = [
|
||||
}
|
||||
];
|
||||
|
||||
export const wulingRecruitUnits: UnitData[] = [
|
||||
{
|
||||
id: 'gong-zhi',
|
||||
name: '공지',
|
||||
faction: 'ally',
|
||||
className: '무릉 의병장',
|
||||
classKey: 'infantry',
|
||||
level: 13,
|
||||
exp: 0,
|
||||
hp: 40,
|
||||
maxHp: 40,
|
||||
attack: 12,
|
||||
move: 4,
|
||||
stats: { might: 76, intelligence: 72, leadership: 82, agility: 74, luck: 78 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'iron-spear', level: 2, exp: 6 },
|
||||
armor: { itemId: 'lamellar-armor', level: 2, exp: 8 },
|
||||
accessory: { itemId: 'grain-pouch', level: 1, exp: 0 }
|
||||
},
|
||||
x: 8,
|
||||
y: 23
|
||||
}
|
||||
];
|
||||
|
||||
const eighthBattleAllyPositions: Record<string, { x: number; y: number }> = {
|
||||
'liu-bei': { x: 2, y: 17 },
|
||||
'guan-yu': { x: 3, y: 17 },
|
||||
@@ -9542,6 +9634,430 @@ export const twentyFourthBattleUnits: UnitData[] = [
|
||||
}
|
||||
];
|
||||
|
||||
const twentyFifthBattleAllyPositions: Record<string, { x: number; y: number }> = {
|
||||
'liu-bei': { x: 4, y: 28 },
|
||||
'guan-yu': { x: 6, y: 26 },
|
||||
'zhang-fei': { x: 6, y: 30 },
|
||||
'jian-yong': { x: 3, y: 31 },
|
||||
'mi-zhu': { x: 4, y: 32 },
|
||||
'sun-qian': { x: 8, y: 29 },
|
||||
'zhao-yun': { x: 8, y: 26 },
|
||||
'zhuge-liang': { x: 5, y: 28 },
|
||||
'ma-liang': { x: 7, y: 31 },
|
||||
'yi-ji': { x: 9, y: 28 }
|
||||
};
|
||||
|
||||
export const twentyFifthBattleUnits: UnitData[] = [
|
||||
...[
|
||||
...firstBattleUnits.filter((unit) => unit.faction === 'ally'),
|
||||
...xuzhouRecruitUnits,
|
||||
...caoBreakRecruitUnits,
|
||||
...liuBiaoRecruitUnits,
|
||||
...zhugeRecruitUnits,
|
||||
...jingzhouRecruitUnits,
|
||||
...guiyangRecruitUnits
|
||||
].map((unit) => placeScenarioUnit(unit, twentyFifthBattleAllyPositions[unit.id] ?? { x: unit.x, y: unit.y })),
|
||||
{
|
||||
id: 'wuling-scout-a',
|
||||
name: '무릉 산길 척후',
|
||||
faction: 'enemy',
|
||||
className: '산길 척후',
|
||||
classKey: 'bandit',
|
||||
level: 34,
|
||||
exp: 52,
|
||||
hp: 92,
|
||||
maxHp: 92,
|
||||
attack: 36,
|
||||
move: 4,
|
||||
stats: { might: 120, intelligence: 88, leadership: 96, agility: 116, luck: 80 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'yellow-turban-saber', level: 4, exp: 28 },
|
||||
armor: { itemId: 'rebel-vest', level: 4, exp: 16 },
|
||||
accessory: { itemId: 'grain-pouch', level: 1, exp: 0 }
|
||||
},
|
||||
x: 13,
|
||||
y: 27
|
||||
},
|
||||
{
|
||||
id: 'wuling-scout-b',
|
||||
name: '무릉 산길 척후',
|
||||
faction: 'enemy',
|
||||
className: '북릉 척후',
|
||||
classKey: 'bandit',
|
||||
level: 34,
|
||||
exp: 52,
|
||||
hp: 92,
|
||||
maxHp: 92,
|
||||
attack: 36,
|
||||
move: 4,
|
||||
stats: { might: 120, intelligence: 88, leadership: 96, agility: 116, luck: 80 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'yellow-turban-saber', level: 4, exp: 28 },
|
||||
armor: { itemId: 'rebel-vest', level: 4, exp: 16 },
|
||||
accessory: { itemId: 'grain-pouch', level: 1, exp: 0 }
|
||||
},
|
||||
x: 16,
|
||||
y: 23
|
||||
},
|
||||
{
|
||||
id: 'wuling-scout-c',
|
||||
name: '무릉 산길 척후',
|
||||
faction: 'enemy',
|
||||
className: '서곡 척후',
|
||||
classKey: 'bandit',
|
||||
level: 35,
|
||||
exp: 54,
|
||||
hp: 96,
|
||||
maxHp: 96,
|
||||
attack: 37,
|
||||
move: 4,
|
||||
stats: { might: 122, intelligence: 88, leadership: 98, agility: 118, luck: 80 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'yellow-turban-saber', level: 4, exp: 30 },
|
||||
armor: { itemId: 'rebel-vest', level: 4, exp: 18 },
|
||||
accessory: { itemId: 'grain-pouch', level: 1, exp: 0 }
|
||||
},
|
||||
x: 20,
|
||||
y: 29
|
||||
},
|
||||
{
|
||||
id: 'wuling-bandit-a',
|
||||
name: '무릉 산적',
|
||||
faction: 'enemy',
|
||||
className: '산적',
|
||||
classKey: 'bandit',
|
||||
level: 34,
|
||||
exp: 52,
|
||||
hp: 102,
|
||||
maxHp: 102,
|
||||
attack: 37,
|
||||
move: 4,
|
||||
stats: { might: 126, intelligence: 80, leadership: 92, agility: 112, luck: 78 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'yellow-turban-saber', level: 4, exp: 30 },
|
||||
armor: { itemId: 'rebel-vest', level: 4, exp: 18 },
|
||||
accessory: { itemId: 'bravery-token', level: 1, exp: 0 }
|
||||
},
|
||||
x: 18,
|
||||
y: 17
|
||||
},
|
||||
{
|
||||
id: 'wuling-bandit-b',
|
||||
name: '무릉 산적',
|
||||
faction: 'enemy',
|
||||
className: '숲길 산적',
|
||||
classKey: 'bandit',
|
||||
level: 34,
|
||||
exp: 52,
|
||||
hp: 102,
|
||||
maxHp: 102,
|
||||
attack: 37,
|
||||
move: 4,
|
||||
stats: { might: 126, intelligence: 80, leadership: 92, agility: 112, luck: 78 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'yellow-turban-saber', level: 4, exp: 30 },
|
||||
armor: { itemId: 'rebel-vest', level: 4, exp: 18 },
|
||||
accessory: { itemId: 'bravery-token', level: 1, exp: 0 }
|
||||
},
|
||||
x: 23,
|
||||
y: 20
|
||||
},
|
||||
{
|
||||
id: 'wuling-bandit-c',
|
||||
name: '무릉 산적',
|
||||
faction: 'enemy',
|
||||
className: '협곡 산적',
|
||||
classKey: 'bandit',
|
||||
level: 35,
|
||||
exp: 54,
|
||||
hp: 106,
|
||||
maxHp: 106,
|
||||
attack: 38,
|
||||
move: 4,
|
||||
stats: { might: 128, intelligence: 82, leadership: 94, agility: 114, luck: 78 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'yellow-turban-saber', level: 4, exp: 32 },
|
||||
armor: { itemId: 'rebel-vest', level: 4, exp: 20 },
|
||||
accessory: { itemId: 'bravery-token', level: 1, exp: 0 }
|
||||
},
|
||||
x: 25,
|
||||
y: 13
|
||||
},
|
||||
{
|
||||
id: 'wuling-infantry-a',
|
||||
name: '무릉 보병',
|
||||
faction: 'enemy',
|
||||
className: '무릉 보병',
|
||||
classKey: 'yellowTurban',
|
||||
level: 35,
|
||||
exp: 54,
|
||||
hp: 120,
|
||||
maxHp: 120,
|
||||
attack: 39,
|
||||
move: 3,
|
||||
stats: { might: 132, intelligence: 88, leadership: 112, agility: 96, luck: 80 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'iron-spear', level: 4, exp: 42 },
|
||||
armor: { itemId: 'lamellar-armor', level: 4, exp: 26 },
|
||||
accessory: { itemId: 'war-manual', level: 1, exp: 0 }
|
||||
},
|
||||
x: 27,
|
||||
y: 23
|
||||
},
|
||||
{
|
||||
id: 'wuling-infantry-b',
|
||||
name: '무릉 보병',
|
||||
faction: 'enemy',
|
||||
className: '마을 보병',
|
||||
classKey: 'yellowTurban',
|
||||
level: 35,
|
||||
exp: 54,
|
||||
hp: 120,
|
||||
maxHp: 120,
|
||||
attack: 39,
|
||||
move: 3,
|
||||
stats: { might: 132, intelligence: 88, leadership: 112, agility: 96, luck: 80 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'iron-spear', level: 4, exp: 42 },
|
||||
armor: { itemId: 'lamellar-armor', level: 4, exp: 26 },
|
||||
accessory: { itemId: 'war-manual', level: 1, exp: 0 }
|
||||
},
|
||||
x: 31,
|
||||
y: 26
|
||||
},
|
||||
{
|
||||
id: 'wuling-infantry-c',
|
||||
name: '무릉 보병',
|
||||
faction: 'enemy',
|
||||
className: '산문 보병',
|
||||
classKey: 'yellowTurban',
|
||||
level: 36,
|
||||
exp: 56,
|
||||
hp: 126,
|
||||
maxHp: 126,
|
||||
attack: 40,
|
||||
move: 3,
|
||||
stats: { might: 134, intelligence: 88, leadership: 114, agility: 96, luck: 80 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'iron-spear', level: 4, exp: 46 },
|
||||
armor: { itemId: 'reinforced-lamellar', level: 4, exp: 30 },
|
||||
accessory: { itemId: 'war-manual', level: 1, exp: 0 }
|
||||
},
|
||||
x: 37,
|
||||
y: 18
|
||||
},
|
||||
{
|
||||
id: 'wuling-infantry-d',
|
||||
name: '무릉 보병',
|
||||
faction: 'enemy',
|
||||
className: '성채 보병',
|
||||
classKey: 'yellowTurban',
|
||||
level: 36,
|
||||
exp: 56,
|
||||
hp: 126,
|
||||
maxHp: 126,
|
||||
attack: 40,
|
||||
move: 3,
|
||||
stats: { might: 134, intelligence: 88, leadership: 114, agility: 96, luck: 80 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'iron-spear', level: 4, exp: 46 },
|
||||
armor: { itemId: 'reinforced-lamellar', level: 4, exp: 30 },
|
||||
accessory: { itemId: 'war-manual', level: 1, exp: 0 }
|
||||
},
|
||||
x: 41,
|
||||
y: 14
|
||||
},
|
||||
{
|
||||
id: 'wuling-archer-a',
|
||||
name: '무릉 궁병',
|
||||
faction: 'enemy',
|
||||
className: '능선 궁병',
|
||||
classKey: 'archer',
|
||||
level: 35,
|
||||
exp: 54,
|
||||
hp: 90,
|
||||
maxHp: 90,
|
||||
attack: 36,
|
||||
move: 3,
|
||||
stats: { might: 92, intelligence: 96, leadership: 100, agility: 108, luck: 82 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'short-bow', level: 4, exp: 38 },
|
||||
armor: { itemId: 'cloth-armor', level: 4, exp: 22 },
|
||||
accessory: { itemId: 'grain-pouch', level: 1, exp: 0 }
|
||||
},
|
||||
x: 24,
|
||||
y: 16
|
||||
},
|
||||
{
|
||||
id: 'wuling-archer-b',
|
||||
name: '무릉 궁병',
|
||||
faction: 'enemy',
|
||||
className: '산채 궁병',
|
||||
classKey: 'archer',
|
||||
level: 35,
|
||||
exp: 54,
|
||||
hp: 90,
|
||||
maxHp: 90,
|
||||
attack: 36,
|
||||
move: 3,
|
||||
stats: { might: 92, intelligence: 96, leadership: 100, agility: 108, luck: 82 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'short-bow', level: 4, exp: 38 },
|
||||
armor: { itemId: 'cloth-armor', level: 4, exp: 22 },
|
||||
accessory: { itemId: 'grain-pouch', level: 1, exp: 0 }
|
||||
},
|
||||
x: 34,
|
||||
y: 21
|
||||
},
|
||||
{
|
||||
id: 'wuling-archer-c',
|
||||
name: '무릉 궁병',
|
||||
faction: 'enemy',
|
||||
className: '성루 궁병',
|
||||
classKey: 'archer',
|
||||
level: 36,
|
||||
exp: 56,
|
||||
hp: 94,
|
||||
maxHp: 94,
|
||||
attack: 37,
|
||||
move: 3,
|
||||
stats: { might: 94, intelligence: 98, leadership: 102, agility: 110, luck: 82 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'short-bow', level: 4, exp: 42 },
|
||||
armor: { itemId: 'cloth-armor', level: 4, exp: 24 },
|
||||
accessory: { itemId: 'grain-pouch', level: 1, exp: 0 }
|
||||
},
|
||||
x: 43,
|
||||
y: 16
|
||||
},
|
||||
{
|
||||
id: 'wuling-cavalry-a',
|
||||
name: '무릉 기병',
|
||||
faction: 'enemy',
|
||||
className: '산길 기병',
|
||||
classKey: 'cavalry',
|
||||
level: 36,
|
||||
exp: 56,
|
||||
hp: 130,
|
||||
maxHp: 130,
|
||||
attack: 41,
|
||||
move: 5,
|
||||
stats: { might: 136, intelligence: 88, leadership: 112, agility: 116, luck: 82 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'iron-spear', level: 4, exp: 48 },
|
||||
armor: { itemId: 'lamellar-armor', level: 4, exp: 30 },
|
||||
accessory: { itemId: 'bravery-token', level: 1, exp: 0 }
|
||||
},
|
||||
x: 30,
|
||||
y: 29
|
||||
},
|
||||
{
|
||||
id: 'wuling-cavalry-b',
|
||||
name: '무릉 기병',
|
||||
faction: 'enemy',
|
||||
className: '동릉 기병',
|
||||
classKey: 'cavalry',
|
||||
level: 36,
|
||||
exp: 56,
|
||||
hp: 130,
|
||||
maxHp: 130,
|
||||
attack: 41,
|
||||
move: 5,
|
||||
stats: { might: 136, intelligence: 88, leadership: 112, agility: 116, luck: 82 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'iron-spear', level: 4, exp: 48 },
|
||||
armor: { itemId: 'lamellar-armor', level: 4, exp: 30 },
|
||||
accessory: { itemId: 'bravery-token', level: 1, exp: 0 }
|
||||
},
|
||||
x: 36,
|
||||
y: 27
|
||||
},
|
||||
{
|
||||
id: 'wuling-guard-a',
|
||||
name: '김선 친위대',
|
||||
faction: 'enemy',
|
||||
className: '무릉 친위대',
|
||||
classKey: 'yellowTurban',
|
||||
level: 37,
|
||||
exp: 58,
|
||||
hp: 132,
|
||||
maxHp: 132,
|
||||
attack: 42,
|
||||
move: 3,
|
||||
stats: { might: 138, intelligence: 90, leadership: 118, agility: 98, luck: 82 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'iron-spear', level: 4, exp: 52 },
|
||||
armor: { itemId: 'reinforced-lamellar', level: 4, exp: 34 },
|
||||
accessory: { itemId: 'war-manual', level: 1, exp: 0 }
|
||||
},
|
||||
x: 44,
|
||||
y: 13
|
||||
},
|
||||
{
|
||||
id: 'wuling-guard-b',
|
||||
name: '김선 친위대',
|
||||
faction: 'enemy',
|
||||
className: '무릉 친위대',
|
||||
classKey: 'yellowTurban',
|
||||
level: 37,
|
||||
exp: 58,
|
||||
hp: 132,
|
||||
maxHp: 132,
|
||||
attack: 42,
|
||||
move: 3,
|
||||
stats: { might: 138, intelligence: 90, leadership: 118, agility: 98, luck: 82 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'iron-spear', level: 4, exp: 52 },
|
||||
armor: { itemId: 'reinforced-lamellar', level: 4, exp: 34 },
|
||||
accessory: { itemId: 'war-manual', level: 1, exp: 0 }
|
||||
},
|
||||
x: 45,
|
||||
y: 16
|
||||
},
|
||||
{
|
||||
id: 'wuling-strategist-a',
|
||||
name: '무릉 책사',
|
||||
faction: 'enemy',
|
||||
className: '무릉 책사',
|
||||
classKey: 'archer',
|
||||
level: 36,
|
||||
exp: 56,
|
||||
hp: 94,
|
||||
maxHp: 94,
|
||||
attack: 37,
|
||||
move: 3,
|
||||
stats: { might: 88, intelligence: 112, leadership: 104, agility: 94, luck: 84 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'short-bow', level: 4, exp: 42 },
|
||||
armor: { itemId: 'cloth-armor', level: 4, exp: 24 },
|
||||
accessory: { itemId: 'war-manual', level: 1, exp: 0 }
|
||||
},
|
||||
x: 42,
|
||||
y: 12
|
||||
},
|
||||
{
|
||||
id: 'wuling-leader-jin-xuan',
|
||||
name: '김선',
|
||||
faction: 'enemy',
|
||||
className: '무릉 태수',
|
||||
classKey: 'rebelLeader',
|
||||
level: 38,
|
||||
exp: 62,
|
||||
hp: 184,
|
||||
maxHp: 184,
|
||||
attack: 44,
|
||||
move: 4,
|
||||
stats: { might: 140, intelligence: 98, leadership: 126, agility: 100, luck: 84 },
|
||||
equipment: {
|
||||
weapon: { itemId: 'leader-axe', level: 4, exp: 68 },
|
||||
armor: { itemId: 'reinforced-lamellar', level: 4, exp: 48 },
|
||||
accessory: { itemId: 'war-manual', level: 1, exp: 0 }
|
||||
},
|
||||
x: 46,
|
||||
y: 14
|
||||
}
|
||||
];
|
||||
|
||||
export const firstBattleBonds: BattleBond[] = [
|
||||
{
|
||||
id: 'liu-bei__guan-yu',
|
||||
@@ -9723,6 +10239,33 @@ export const guiyangRecruitBonds: BattleBond[] = [
|
||||
}
|
||||
];
|
||||
|
||||
export const wulingRecruitBonds: BattleBond[] = [
|
||||
{
|
||||
id: 'liu-bei__gong-zhi',
|
||||
unitIds: ['liu-bei', 'gong-zhi'],
|
||||
title: '산길의 귀순',
|
||||
level: 32,
|
||||
exp: 0,
|
||||
description: '유비의 군율과 공지의 무릉 지리가 맞물려 산길 마을을 해치지 않는 진군로를 엽니다.'
|
||||
},
|
||||
{
|
||||
id: 'ma-liang__gong-zhi',
|
||||
unitIds: ['ma-liang', 'gong-zhi'],
|
||||
title: '무릉 기록',
|
||||
level: 30,
|
||||
exp: 0,
|
||||
description: '마량의 형주 기록과 공지의 현지 경험이 더해져 험한 길의 위험을 미리 읽어냅니다.'
|
||||
},
|
||||
{
|
||||
id: 'yi-ji__gong-zhi',
|
||||
unitIds: ['yi-ji', 'gong-zhi'],
|
||||
title: '예와 귀순',
|
||||
level: 30,
|
||||
exp: 0,
|
||||
description: '이적의 예법과 공지의 내부 설득이 이어져 무릉의 닫힌 문을 부드럽게 열어 갑니다.'
|
||||
}
|
||||
];
|
||||
|
||||
export const secondBattleBonds: BattleBond[] = firstBattleBonds.map(cloneBattleBondForScenario);
|
||||
export const thirdBattleBonds: BattleBond[] = firstBattleBonds.map(cloneBattleBondForScenario);
|
||||
export const fourthBattleBonds: BattleBond[] = firstBattleBonds.map(cloneBattleBondForScenario);
|
||||
@@ -9752,6 +10295,7 @@ export const twentyFirstBattleBonds: BattleBond[] = [...twentiethBattleBonds].ma
|
||||
export const twentySecondBattleBonds: BattleBond[] = [...twentyFirstBattleBonds].map(cloneBattleBondForScenario);
|
||||
export const twentyThirdBattleBonds: BattleBond[] = [...twentySecondBattleBonds].map(cloneBattleBondForScenario);
|
||||
export const twentyFourthBattleBonds: BattleBond[] = [...twentyThirdBattleBonds, ...jingzhouRecruitBonds].map(cloneBattleBondForScenario);
|
||||
export const twentyFifthBattleBonds: BattleBond[] = [...twentyFourthBattleBonds, ...guiyangRecruitBonds].map(cloneBattleBondForScenario);
|
||||
|
||||
function createEighthBattleTerrain(): TerrainType[][] {
|
||||
return Array.from({ length: 22 }, (_, y) =>
|
||||
@@ -10612,6 +11156,62 @@ function createTwentyFourthBattleTerrain(): TerrainType[][] {
|
||||
);
|
||||
}
|
||||
|
||||
function createTwentyFifthBattleTerrain(): TerrainType[][] {
|
||||
return Array.from({ length: 34 }, (_, y) =>
|
||||
Array.from({ length: 50 }, (_, x): TerrainType => {
|
||||
if (x <= 3 && y >= 27) {
|
||||
return 'camp';
|
||||
}
|
||||
if ((x >= 43 && x <= 48 && y >= 11 && y <= 17) || (x >= 40 && x <= 45 && y >= 8 && y <= 12)) {
|
||||
return 'fort';
|
||||
}
|
||||
if ((x >= 28 && x <= 30 && y >= 25 && y <= 27) || (x >= 17 && x <= 19 && y >= 18 && y <= 20) || (x >= 37 && x <= 39 && y >= 23 && y <= 25)) {
|
||||
return 'village';
|
||||
}
|
||||
if (
|
||||
(y >= 28 && x >= 3 && x <= 13) ||
|
||||
(x >= 12 && x <= 16 && y >= 22 && y <= 28) ||
|
||||
(x >= 16 && x <= 23 && y >= 20 && y <= 22) ||
|
||||
(x >= 23 && x <= 31 && y >= 23 && y <= 26) ||
|
||||
(x >= 31 && x <= 39 && y >= 20 && y <= 23) ||
|
||||
(x >= 38 && x <= 44 && y >= 16 && y <= 20) ||
|
||||
(x >= 42 && x <= 47 && y >= 12 && y <= 16)
|
||||
) {
|
||||
return 'road';
|
||||
}
|
||||
if ((x === 9 || x === 10) && y >= 0 && y <= 22) {
|
||||
return 'river';
|
||||
}
|
||||
if ((x === 33 || x === 34) && y >= 1 && y <= 19) {
|
||||
return 'river';
|
||||
}
|
||||
if ((x === 27 || x === 28) && y >= 27 && y <= 33) {
|
||||
return 'river';
|
||||
}
|
||||
if (
|
||||
(x <= 7 && y <= 14) ||
|
||||
(x >= 13 && x <= 23 && y >= 4 && y <= 13) ||
|
||||
(x >= 18 && x <= 31 && y >= 14 && y <= 19) ||
|
||||
(x >= 35 && x <= 48 && y >= 21 && y <= 32)
|
||||
) {
|
||||
return 'forest';
|
||||
}
|
||||
if (
|
||||
(x >= 0 && x <= 12 && y >= 15 && y <= 25) ||
|
||||
(x >= 21 && x <= 33 && y >= 6 && y <= 15) ||
|
||||
(x >= 36 && x <= 49 && y <= 10) ||
|
||||
(x >= 41 && x <= 49 && y >= 18 && y <= 24)
|
||||
) {
|
||||
return 'hill';
|
||||
}
|
||||
if ((x <= 2 && y <= 25) || (x >= 48 && y <= 20) || (x >= 30 && x <= 32 && y >= 0 && y <= 9)) {
|
||||
return 'cliff';
|
||||
}
|
||||
return 'plain';
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
function placeScenarioUnit(unit: UnitData, position: { x: number; y: number }): UnitData {
|
||||
return {
|
||||
...cloneUnitForScenario(unit),
|
||||
|
||||
Reference in New Issue
Block a user