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 tooltipMethods = [ method('BuildCardKeywordTooltip', `if c == nil then return "" end local lines = {} local function add(name, desc) for i = 1, #lines do if string.find(lines[i], name .. ":", 1, true) == 1 then return end end table.insert(lines, name .. ": " .. desc) end local cardDesc = c.desc or "" if c.sly == true or string.find(cardDesc, "교활", 1, true) ~= nil then add("교활", "버려지면 비용 없이 사용됩니다.") end if c.retain == true or string.find(cardDesc, "보존", 1, true) ~= nil then add("보존", "턴 종료 시 버려지지 않고 손에 남습니다.") end if c.dex ~= nil and c.dex > 0 or string.find(cardDesc, "민첩", 1, true) ~= nil then add("민첩", "카드로 얻는 방어도가 증가합니다.") end if c.thorns ~= nil and c.thorns > 0 or string.find(cardDesc, "가시", 1, true) ~= nil then add("가시", "피해를 받으면 공격자에게 반사 피해를 줍니다.") end if c.exhaust == true or string.find(cardDesc, "소멸.", 1, true) ~= nil then add("소멸", "사용 후 소멸 덱으로 이동해 이번 전투 동안 다시 나오지 않습니다.") end if string.find(cardDesc, "선천성", 1, true) ~= nil then add("선천성", "전투 시작 시 손패에 들어옵니다.") end if c.vuln ~= nil and c.vuln > 0 then add("취약", "받는 공격 피해가 50% 증가합니다.") end if c.weak ~= nil and c.weak > 0 then add("약화", "주는 공격 피해가 25% 감소합니다.") end if c.poison ~= nil and c.poison > 0 then add("중독", "턴 시작 시 체력을 잃고 수치가 1 감소합니다.") end if c.pierce == true then add("관통", "방어도를 무시하고 피해를 줍니다.") end if c.aoe == true then add("전체", "모든 적에게 적용됩니다.") end if c.kind == "Power" then add("파워", "사용하면 전투 동안 지속 효과로 남습니다.") end if c.unplayable == true then add("저주", "사용할 수 없고 손패를 방해합니다.") end local out = "" for i = 1, #lines do if i > 1 then out = out .. "\\n" end out = out .. lines[i] end return out`, [{ Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'c' }], 0, 'string'), method('HoverCard', `if self.DragSlot ~= nil and self.DragSlot > 0 then return end local cardId = self.Hand[slot] if cardId == nil then return end local e = _EntityService:GetEntityByPath("/ui/DefaultGroup/CardHand/Card" .. tostring(slot)) local tx = 0 if e ~= nil and e.UITransformComponent ~= nil then tx = e.UITransformComponent.anchoredPosition.x e.UITransformComponent.UIScale = Vector3(1.3, 1.3, 1) end local c = self.Cards[cardId] if c ~= nil then local tip = self:BuildCardKeywordTooltip(c) if tip ~= "" then local tipX = tx + 270 if tx > 180 then tipX = tx - 270 end if tipX > 760 then tipX = tx - 270 end if tipX < -760 then tipX = tx + 270 end self:ShowTooltipAt("키워드", tip, tipX, 90) else self:HideTooltip() end end`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }]), method('UnhoverCard', `local e = _EntityService:GetEntityByPath("/ui/DefaultGroup/CardHand/Card" .. tostring(slot)) if e ~= nil and e.UITransformComponent ~= nil then e.UITransformComponent.UIScale = Vector3(1, 1, 1) end self:HideTooltip()`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }]), method('ShowTooltip', `self:ShowTooltipAt(name, desc, x, 400)`, [ { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'name' }, { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'desc' }, { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'x' }, ]), method('ShowTooltipAt', `self:SetText("/ui/DefaultGroup/CombatHud/TooltipBox/Name", name) self:SetText("/ui/DefaultGroup/CombatHud/TooltipBox/Desc", desc) local e = _EntityService:GetEntityByPath("/ui/DefaultGroup/CombatHud/TooltipBox") if e ~= nil then if e.UITransformComponent ~= nil then e.UITransformComponent.anchoredPosition = Vector2(x, y) end e.Enable = true end`, [ { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'name' }, { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'desc' }, { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'x' }, { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'y' }, ]), method('HideTooltip', `self:SetEntityEnabled("/ui/DefaultGroup/CombatHud/TooltipBox", false)`), ];