feat(warrior): add warrior promotion lineage

This commit is contained in:
2026-07-02 23:47:01 +09:00
parent e3a75c33a3
commit 8b4ece766a
3 changed files with 25 additions and 6 deletions

File diff suppressed because one or more lines are too long

View File

@@ -77,9 +77,14 @@ for i = 1, 3 do
self:SetEntityEnabled(base, true) self:SetEntityEnabled(base, true)
self:SetText(base .. "/Name", o.name) self:SetText(base .. "/Name", o.name)
self:SetText(base .. "/Desc", o.desc) self:SetText(base .. "/Desc", o.desc)
local sc = self.Cards[o.starter] local sc = nil
if o.starter ~= nil and o.starter ~= "" then
sc = self.Cards[o.starter]
end
if sc ~= nil then if sc ~= nil then
self:SetText(base .. "/Starter", "대표 카드: " .. sc.name) self:SetText(base .. "/Starter", "대표 카드: " .. sc.name)
else
self:SetText(base .. "/Starter", "대표 카드: 계보 유지")
end end
else else
self:SetEntityEnabled(base, false) self:SetEntityEnabled(base, false)
@@ -111,6 +116,8 @@ if starter ~= "" then
if sc ~= nil then if sc ~= nil then
self:Toast(tostring(tier) .. "차 전직: " .. self:JobLabel() .. "! 신규 카드 - " .. sc.name) self:Toast(tostring(tier) .. "차 전직: " .. self:JobLabel() .. "! 신규 카드 - " .. sc.name)
end end
else
self:Toast(tostring(tier) .. "차 전직: " .. self:JobLabel() .. "!")
end end
self:SetText("/ui/RunUIGroup/CombatHud/PlayerPanel/Name", self:JobLabel()) self:SetText("/ui/RunUIGroup/CombatHud/PlayerPanel/Name", self:JobLabel())
self:SetEntityEnabled("/ui/SelectUIGroup/JobSelectHud", false) self:SetEntityEnabled("/ui/SelectUIGroup/JobSelectHud", false)

View File

@@ -23,6 +23,15 @@ const JOBS = {
{ id: 'page', name: '페이지', desc: '속성 차지 특화\n썬더/블리자드 차지\n파워 가드', starter: 'ThunderCharge', tier: 2, parent: 'warrior' }, { id: 'page', name: '페이지', desc: '속성 차지 특화\n썬더/블리자드 차지\n파워 가드', starter: 'ThunderCharge', tier: 2, parent: 'warrior' },
{ id: 'spearman', name: '스피어맨', desc: '방어·관통 특화\n피어스 · 아이언 월\n하이퍼 바디', starter: 'Pierce', tier: 2, parent: 'warrior' }, { id: 'spearman', name: '스피어맨', desc: '방어·관통 특화\n피어스 · 아이언 월\n하이퍼 바디', starter: 'Pierce', tier: 2, parent: 'warrior' },
], ],
fighter: [
{ id: 'crusader', name: '크루세이더', desc: 'Fighter의 3차 전직\n콤보 압박과 화력 심화\n파이터 카드 계승', starter: '', tier: 3, parent: 'fighter' },
],
page: [
{ id: 'knight', name: '나이트', desc: 'Page의 3차 전직\n방어와 차지 운영 심화\n페이지 카드 계승', starter: '', tier: 3, parent: 'page' },
],
spearman: [
{ id: 'berserker', name: '버서커', desc: 'Spearman의 3차 전직\n관통과 생존 운영 심화\n스피어맨 카드 계승', starter: '', tier: 3, parent: 'spearman' },
],
magician: [ magician: [
{ id: 'firepoison', name: '위자드(불·독)', desc: '화염·독 특화\n파이어 애로우\n포이즌 브레스 · 앰플', starter: 'FireArrow', tier: 2, parent: 'magician' }, { id: 'firepoison', name: '위자드(불·독)', desc: '화염·독 특화\n파이어 애로우\n포이즌 브레스 · 앰플', starter: 'FireArrow', tier: 2, parent: 'magician' },
{ id: 'icelightning', name: '위자드(썬·콜)', desc: '광역·빙결 특화\n썬더 볼트(전체)\n콜드 빔 · 칠링 스텝', starter: 'ThunderBolt', tier: 2, parent: 'magician' }, { id: 'icelightning', name: '위자드(썬·콜)', desc: '광역·빙결 특화\n썬더 볼트(전체)\n콜드 빔 · 칠링 스텝', starter: 'ThunderBolt', tier: 2, parent: 'magician' },
@@ -41,12 +50,12 @@ const JOBS = {
}; };
for (const [cls, jobs] of Object.entries(JOBS)) { for (const [cls, jobs] of Object.entries(JOBS)) {
for (const j of jobs) { for (const j of jobs) {
if (!CARDS.cards[j.starter]) throw new Error(`[gen-slaydeck] JOBS.${cls}.${j.id} 대표 카드 없음: ${j.starter}`); if (j.starter && !CARDS.cards[j.starter]) throw new Error(`[gen-slaydeck] JOBS.${cls}.${j.id} 대표 카드 없음: ${j.starter}`);
} }
} }
const CLASS_GROUPS = { const CLASS_GROUPS = {
warrior: ['warrior', 'fighter', 'page', 'spearman'], warrior: ['warrior', 'fighter', 'crusader', 'page', 'knight', 'spearman', 'berserker'],
magician: ['magician', 'firepoison', 'icelightning', 'cleric'], magician: ['magician', 'firepoison', 'icelightning', 'cleric'],
rogue: ['rogue', 'assassin', 'hermit', 'thief', 'thiefmaster'], rogue: ['rogue', 'assassin', 'hermit', 'thief', 'thiefmaster'],
}; };
@@ -54,8 +63,11 @@ const CLASS_GROUPS = {
const CLASS_LINEAGES = { const CLASS_LINEAGES = {
warrior: ['warrior'], warrior: ['warrior'],
fighter: ['warrior', 'fighter'], fighter: ['warrior', 'fighter'],
crusader: ['warrior', 'fighter', 'crusader'],
page: ['warrior', 'page'], page: ['warrior', 'page'],
knight: ['warrior', 'page', 'knight'],
spearman: ['warrior', 'spearman'], spearman: ['warrior', 'spearman'],
berserker: ['warrior', 'spearman', 'berserker'],
magician: ['magician'], magician: ['magician'],
firepoison: ['magician', 'firepoison'], firepoison: ['magician', 'firepoison'],
icelightning: ['magician', 'icelightning'], icelightning: ['magician', 'icelightning'],