import { method, RUN_LENGTH, GOLD_PER_WIN, CARD_PRICE, REST_HEAL, RELIC_PRICE, ACT_COUNT, ACT_MAPS, LOBBY_MAP, LOBBY_SPAWN } from '../lib/codeblock.mjs'; import { CARDS, ENEMIES, CLASSES, JOBS, SOUL_UNLOCKS, CARDFRAMES, RARITIES, MAP_ROWS, MAP_COLS, CHEST_CLOSED_RUID, CHEST_OPEN_RUID, NODEICONS, CHARS, CAM, RELICS, POTIONS, luaSoulShopTable, frameRuid, luaFramesTable, luaNodeIconsTable, luaRelicsTable, luaPotionsTable, luaIntentsArray, luaEnemiesTable, luaStr, luaJobsTable, luaCardsTable, luaDeckTable } from '../lib/data.mjs'; import { UI_FILE, COMMON_FILE, UI_ROOT, GENERATED_UI_SECTIONS, UI_APPEND_ORDER, DISABLED_STOCK_CONTROLS, TRANSPARENT, DARK, GOLD, ATTACK, DEFEND, SKILL, DAMAGE_DIGIT_RUIDS, DAMAGE_POP_MAX_DIGITS, DAMAGE_POP_DIGIT_W, DAMAGE_POP_DIGIT_H, DAMAGE_POP_DIGIT_SPACING, MAX_MONSTERS, HEAD_OFFSET_Y, HP_BAR_W, WHITE, CARD_NAME_TEXT, CARD_DESC_TEXT, cardFaceLayout, CARD_W, CARD_H, CARD_SPACING, CARD_XS, ALIGN_CENTER, ALIGN_BOTTOM_CENTER, guid, transform, sprite, button, text, scrollLayoutGroup, popupLayerFor, uiOrderFor, displayOrderFor, applySortingOverride, entity, uiPath, sectionRoot, isGeneratedUiEntity, appendUiSection } from '../lib/ui-helpers.mjs'; export const jobMethods = [ method('ShowJobChoice', `self:SetEntityEnabled("/ui/DefaultGroup/CardHand", false) self:SetEntityEnabled("/ui/DefaultGroup/DeckHud", false) self:SetEntityEnabled("/ui/DefaultGroup/JobChoiceHud", true)`), method('PickJobReward', `self:SetEntityEnabled("/ui/DefaultGroup/JobChoiceHud", false) if kind == "relic" then local bid = self:PickNewRelic() if bid ~= "" then self:AddRelic(bid) local br = self.Relics[bid] if br ~= nil then self:Toast("유물 획득: " .. br.name) end end self:ContinueAfterBoss() else self:ShowJobSelect() end`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'kind' }]), method('ShowJobSelect', `local opts = self.Jobs[self.SelectedClass] if opts == nil then opts = self.Jobs["warrior"] end self.JobOpts = opts for i = 1, 3 do local base = "/ui/DefaultGroup/JobSelectHud/Job_slot" .. tostring(i) local o = opts[i] if o ~= nil then self:SetEntityEnabled(base, true) self:SetText(base .. "/Name", o.name) self:SetText(base .. "/Desc", o.desc) local sc = self.Cards[o.starter] if sc ~= nil then self:SetText(base .. "/Starter", "대표 카드: " .. sc.name) end else self:SetEntityEnabled(base, false) end end self:SetEntityEnabled("/ui/DefaultGroup/JobSelectHud", true)`), method('JobLabel', `if self.PlayerJob ~= "" and self.Jobs ~= nil then for cls, list in pairs(self.Jobs) do for i = 1, #list do if list[i].id == self.PlayerJob then return list[i].name end end end end if self.SelectedClass == "warrior" then return "전사" elseif self.SelectedClass == "bandit" then return "도적" elseif self.SelectedClass == "magician" then return "마법사" end return "플레이어"`, [], 0, 'string'), method('SetJob', `self.PlayerJob = jobId local starter = "" local opts = self.Jobs[self.SelectedClass] or {} for i = 1, #opts do if opts[i].id == jobId then starter = opts[i].starter end end if starter ~= "" then table.insert(self.RunDeck, starter) local sc = self.Cards[starter] if sc ~= nil then self:Toast("2차 전직: " .. self:JobLabel() .. "! 신규 카드 — " .. sc.name) end end self:SetText("/ui/DefaultGroup/CombatHud/PlayerPanel/Name", self:JobLabel()) self:SetEntityEnabled("/ui/DefaultGroup/JobSelectHud", false) self:ContinueAfterBoss()`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'jobId' }]), ];