From 90494232bcc550439e8e24ebc73e348c1bfedc81 Mon Sep 17 00:00:00 2001 From: gahusb Date: Sat, 4 Jul 2026 02:15:01 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=A9=94=EC=9D=B4=ED=94=8C=20=EC=A0=84?= =?UTF-8?q?=EC=82=AC=20=EC=A0=84=EC=A7=81=20=EC=B9=B4=EB=93=9C=EC=99=80=20?= =?UTF-8?q?=EC=97=B0=EA=B3=84=20=EA=B8=B0=EB=AF=B9=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RootDesk/MyDesk/SlayDeckController.codeblock | 186 +++++++- data/cardframes.json | 2 + data/cards.json | 457 +++++++++++++++++++ data/cards.xlsx | Bin 27004 -> 34677 bytes docs/card-effect-fields.md | 20 + tools/balance/sim-balance.mjs | 70 ++- tools/balance/sim-balance.test.mjs | 99 ++++ tools/deck/cb/combat.mjs | 18 + tools/deck/cb/deckturn.mjs | 2 + tools/deck/cb/hand.mjs | 89 +++- tools/deck/cb/render.mjs | 10 +- tools/deck/cb/run.mjs | 3 + tools/deck/gen-slaydeck.mjs | 3 + tools/deck/lib/data.mjs | 27 +- tools/verify/cardkinds.mjs | 3 + 15 files changed, 965 insertions(+), 24 deletions(-) diff --git a/RootDesk/MyDesk/SlayDeckController.codeblock b/RootDesk/MyDesk/SlayDeckController.codeblock index 47b032d..2c4b276 100644 --- a/RootDesk/MyDesk/SlayDeckController.codeblock +++ b/RootDesk/MyDesk/SlayDeckController.codeblock @@ -876,6 +876,27 @@ "Attributes": [], "Name": "TurnCardsPlayedThisTurn" }, + { + "Type": "number", + "DefaultValue": "0", + "SyncDirection": 0, + "Attributes": [], + "Name": "ComboCount" + }, + { + "Type": "number", + "DefaultValue": "0", + "SyncDirection": 0, + "Attributes": [], + "Name": "HolyChargeCount" + }, + { + "Type": "boolean", + "DefaultValue": "false", + "SyncDirection": 0, + "Attributes": [], + "Name": "DamagePowerStrengthUsed" + }, { "Type": "number", "DefaultValue": "0", @@ -1083,7 +1104,7 @@ "Name": null }, "Arguments": [], - "Code": "self.Cards = {\n\tStrike = { name = \"타격\", cost = 1, desc = \"피해 6\", kind = \"Attack\", damage = 6, class = \"warrior\", rarity = \"normal\", fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tBash = { name = \"강타\", cost = 2, desc = \"피해 8, 취약 2\", kind = \"Attack\", damage = 8, vuln = 2, class = \"warrior\", rarity = \"normal\", fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tDefend = { name = \"수비\", cost = 1, desc = \"방어도 5\", kind = \"Skill\", block = 5, class = \"warrior\", rarity = \"normal\", image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tAnger = { name = \"분노\", cost = 0, desc = \"피해 6\", kind = \"Attack\", damage = 6, class = \"warrior\", rarity = \"normal\", fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tMoltenFist = { name = \"녹아내리는 주먹\", cost = 1, desc = \"피해 10, 취약 2. 소멸.\", kind = \"Attack\", damage = 10, vuln = 2, class = \"warrior\", rarity = \"normal\", exhaust = true, fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tBodySlam = { name = \"몸통 박치기\", cost = 1, desc = \"현재 방어도만큼 피해를 줍니다.\", kind = \"Attack\", damageFromCurrentBlock = 1, class = \"warrior\", rarity = \"normal\", fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tHeadbutt = { name = \"박치기\", cost = 1, desc = \"피해 9, 카드 1장 뽑기\", kind = \"Attack\", damage = 9, class = \"warrior\", rarity = \"normal\", draw = 1, fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tSwordBoomerang = { name = \"부메랑 칼날\", cost = 1, desc = \"무작위 적에게 피해 3 x 3회\", kind = \"Attack\", damage = 3, class = \"warrior\", rarity = \"normal\", hits = 3, randomTargetEachHit = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tSetupStrike = { name = \"사전 타격\", cost = 1, desc = \"피해 7, 힘 +2\", kind = \"Attack\", damage = 7, strength = 2, class = \"warrior\", rarity = \"normal\", fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tTwinStrike = { name = \"이중 타격\", cost = 1, desc = \"피해 5 x 2회\", kind = \"Attack\", damage = 5, class = \"warrior\", rarity = \"normal\", hits = 2, fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tBreakthrough = { name = \"정면 돌파\", cost = 1, desc = \"모든 적에게 피해 9\", kind = \"Attack\", damage = 9, class = \"warrior\", rarity = \"normal\", aoe = true, fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tThunderclap = { name = \"천둥\", cost = 1, desc = \"모든 적에게 피해 4, 취약 1\", kind = \"Attack\", damage = 4, vuln = 1, class = \"warrior\", rarity = \"normal\", affectsAllEnemies = true, aoe = true, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"115e309771604743853abad2d8d186bc\" },\n\tIronWave = { name = \"철의 파동\", cost = 1, desc = \"피해 5, 방어도 5\", kind = \"Attack\", damage = 5, block = 5, class = \"warrior\", rarity = \"normal\", fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tPommelStrike = { name = \"폼멜 타격\", cost = 1, desc = \"피해 9, 카드 1장 뽑기\", kind = \"Attack\", damage = 9, class = \"warrior\", rarity = \"normal\", draw = 1, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tPerfectedStrike = { name = \"완벽한 타격\", cost = 2, desc = \"피해 6. 보유한 이름에 \\\"타격\\\"이 포함된 카드마다 피해 +2\", kind = \"Attack\", damage = 6, damageNameMatch = \"타격\", damagePerOwnedNameMatch = 2, class = \"warrior\", rarity = \"normal\", fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tCinder = { name = \"잿불\", cost = 2, desc = \"피해 18. 소멸.\", kind = \"Attack\", damage = 18, class = \"warrior\", rarity = \"normal\", exhaust = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tBloodletting = { name = \"사혈\", cost = 0, desc = \"에너지 +2\", kind = \"Skill\", class = \"warrior\", rarity = \"normal\", gainEnergy = 2, image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tTremble = { name = \"떨림\", cost = 1, desc = \"취약 3. 소멸.\", kind = \"Skill\", vuln = 3, class = \"warrior\", rarity = \"normal\", exhaust = true, image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tArmaments = { name = \"전투장비\", cost = 1, desc = \"방어도 5, 카드 1장 뽑기\", kind = \"Skill\", block = 5, class = \"warrior\", rarity = \"normal\", draw = 1, image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tTrueGrit = { name = \"진정한 끈기\", cost = 1, desc = \"방어도 7, 카드 1장 버리기\", kind = \"Skill\", block = 7, class = \"warrior\", rarity = \"normal\", discard = 1, image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tHavoc = { name = \"파괴\", cost = 1, desc = \"다음 스킬의 비용이 0\", kind = \"Skill\", class = \"warrior\", rarity = \"normal\", nextSkillCostZero = true, image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tShrugItOff = { name = \"흘려보내기\", cost = 1, desc = \"방어도 8, 카드 1장 뽑기\", kind = \"Skill\", block = 8, class = \"warrior\", rarity = \"normal\", draw = 1, image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tBloodWall = { name = \"피의 벽\", cost = 2, desc = \"방어도 16\", kind = \"Skill\", block = 16, class = \"warrior\", rarity = \"normal\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tWhirlwind = { name = \"소용돌이\", cost = 0, desc = \"모든 에너지를 사용해 에너지당 모든 적에게 피해 5\", kind = \"Attack\", damage = 0, class = \"warrior\", rarity = \"unique\", useAllEnergy = true, xDamagePerEnergy = 5, aoe = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tSpite = { name = \"악의\", cost = 0, desc = \"피해 5 x 2회\", kind = \"Attack\", damage = 5, class = \"warrior\", rarity = \"unique\", hits = 2, fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tBully = { name = \"협박\", cost = 0, desc = \"피해 4. 대상이 약화 상태면 피해 2배\", kind = \"Attack\", damage = 4, class = \"warrior\", rarity = \"unique\", attackDamageVsWeakMultiplier = 2, fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tPillage = { name = \"갈취\", cost = 1, desc = \"피해 6, 카드 2장 뽑기\", kind = \"Attack\", damage = 6, class = \"warrior\", rarity = \"unique\", draw = 2, fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tRampage = { name = \"광란\", cost = 2, desc = \"피해 12. 사용할 때마다 이번 전투에서 비용 1 감소\", kind = \"Attack\", damage = 12, class = \"warrior\", rarity = \"unique\", combatCostReductionOnPlay = 1, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tAshenStrike = { name = \"잿빛 타격\", cost = 1, desc = \"피해 6. 이번 전투에서 뽑은 카드마다 피해 +1\", kind = \"Attack\", damage = 6, damagePerCardDrawnThisCombat = 1, class = \"warrior\", rarity = \"unique\", fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tDismantle = { name = \"해체\", cost = 1, desc = \"피해 8 x 2회\", kind = \"Attack\", damage = 8, class = \"warrior\", rarity = \"unique\", hits = 2, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"115e309771604743853abad2d8d186bc\" },\n\tHemokinesis = { name = \"혈류\", cost = 1, desc = \"피해 15\", kind = \"Attack\", damage = 15, class = \"warrior\", rarity = \"unique\", fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tFightMe = { name = \"덤벼라!\", cost = 2, desc = \"피해 5 x 2회, 힘 +3\", kind = \"Attack\", damage = 5, strength = 3, class = \"warrior\", rarity = \"unique\", hits = 2, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tUnrelenting = { name = \"무자비\", cost = 2, desc = \"피해 14, 에너지 +1\", kind = \"Attack\", damage = 14, class = \"warrior\", rarity = \"unique\", gainEnergy = 1, fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tUppercut = { name = \"어퍼컷\", cost = 2, desc = \"피해 12, 약화 1, 취약 1\", kind = \"Attack\", damage = 12, weak = 1, vuln = 1, class = \"warrior\", rarity = \"unique\", fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tBludgeon = { name = \"몽둥이질\", cost = 3, desc = \"피해 32\", kind = \"Attack\", damage = 32, class = \"warrior\", rarity = \"unique\", fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tHowlFromBeyond = { name = \"저편의 울음소리\", cost = 3, desc = \"모든 적에게 피해 16. 소멸.\", kind = \"Attack\", damage = 16, class = \"warrior\", rarity = \"unique\", exhaust = true, aoe = true, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tStomp = { name = \"짓밟기\", cost = 3, desc = \"모든 적에게 피해 12. 이번 턴 사용한 공격 카드마다 피해 +2\", kind = \"Attack\", damage = 12, damagePerAttackPlayedThisTurn = 2, class = \"warrior\", rarity = \"unique\", aoe = true, fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tRage = { name = \"격노\", cost = 0, desc = \"방어도 5, 카드 1장 뽑기\", kind = \"Skill\", block = 5, class = \"warrior\", rarity = \"unique\", draw = 1, image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tBattleTrance = { name = \"전투 최면\", cost = 0, desc = \"카드 3장 뽑기. 이번 턴 더 뽑을 수 없음\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", draw = 3, drawDisabledThisTurn = true, image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tColossus = { name = \"거상\", cost = 1, desc = \"방어도 5, 무형 1\", kind = \"Skill\", intangible = 1, block = 5, class = \"warrior\", rarity = \"unique\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tSecondWind = { name = \"기사회생\", cost = 1, desc = \"손의 공격이 아닌 모든 카드를 소멸시키고, 소멸시킨 카드마다 방어도 5\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", exhaustHandNonAttack = true, blockPerExhaustedCard = 5, image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tTaunt = { name = \"도발\", cost = 1, desc = \"방어도 7, 취약 1\", kind = \"Skill\", block = 7, vuln = 1, class = \"warrior\", rarity = \"unique\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tBurningPact = { name = \"불타는 조약\", cost = 1, desc = \"카드 1장 버리고 카드 3장 뽑기\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", draw = 3, discard = 1, image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tEvilEye = { name = \"악마의 눈\", cost = 1, desc = \"방어도 16\", kind = \"Skill\", block = 16, class = \"warrior\", rarity = \"unique\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tForgottenRitual = { name = \"잊힌 의식\", cost = 1, desc = \"에너지 +2. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", gainEnergy = 2, exhaust = true, image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tDrumOfBattle = { name = \"전투의 북소리\", cost = 1, desc = \"카드 2장 뽑기, 에너지 +1. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", draw = 2, gainEnergy = 1, exhaust = true, image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tDominate = { name = \"제압\", cost = 1, desc = \"취약 2, 힘 +2. 소멸.\", kind = \"Skill\", strength = 2, vuln = 2, class = \"warrior\", rarity = \"unique\", exhaust = true, image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tInfernalBlade = { name = \"지옥검\", cost = 1, desc = \"무작위 공격 카드 1장을 손으로 가져옵니다. 이번 턴 동안 그 카드를 비용 없이 사용할 수 있습니다. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", addRandomCardCount = 1, addRandomCardKind = \"Attack\", addRandomCardSameClass = true, addedCardsCostZeroThisTurn = true, exhaust = true, image = \"115e309771604743853abad2d8d186bc\" },\n\tExpectAFight = { name = \"싸움 준비\", cost = 1, desc = \"이번 턴 스킬 비용 1 감소\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", skillCostReductionThisTurn = 1, image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tFlameBarrier = { name = \"화염 장벽\", cost = 2, desc = \"방어도 12, 가시 4\", kind = \"Skill\", block = 12, thorns = 4, class = \"warrior\", rarity = \"unique\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tStoneArmor = { name = \"돌 갑옷\", cost = 1, desc = \"매턴 방어도 +4\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 4, class = \"warrior\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tFeelNoPain = { name = \"무감각\", cost = 1, desc = \"매턴 방어도 +3\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 3, class = \"warrior\", rarity = \"unique\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tInflame = { name = \"발화\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"warrior\", rarity = \"unique\", image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tInferno = { name = \"불바다\", cost = 1, desc = \"매턴 모든 적에게 피해 6\", kind = \"Power\", powerEffect = \"damagePerTurn\", value = 6, class = \"warrior\", rarity = \"unique\", image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tJuggling = { name = \"저글링\", cost = 1, desc = \"카드를 사용할 때마다 무작위 적에게 피해 3\", kind = \"Power\", cardPlayedRandomDamage = 3, class = \"warrior\", rarity = \"unique\", image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tRupture = { name = \"파열\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"warrior\", rarity = \"unique\", image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tVicious = { name = \"포악함\", cost = 1, desc = \"턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", class = \"warrior\", rarity = \"unique\", turnStartDraw = 1, image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tStampede = { name = \"쇄도\", cost = 2, desc = \"카드를 사용할 때마다 무작위 적에게 피해 8\", kind = \"Power\", cardPlayedRandomDamage = 8, class = \"warrior\", rarity = \"unique\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tPactsEnd = { name = \"조약의 끝\", cost = 0, desc = \"뽑을 카드 더미가 비었을 때 모든 적에게 피해 17\", kind = \"Attack\", damage = 17, class = \"warrior\", rarity = \"legend\", playableWhenDrawPileEmpty = true, aoe = true, fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tThrash = { name = \"난타\", cost = 1, desc = \"피해 4 x 2회. 이번 턴 사용한 공격 카드마다 피해 +2\", kind = \"Attack\", damage = 4, damagePerAttackPlayedThisTurn = 2, class = \"warrior\", rarity = \"legend\", hits = 2, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tConflagration = { name = \"대화재\", cost = 1, desc = \"모든 적에게 피해 2 x 4회\", kind = \"Attack\", damage = 2, class = \"warrior\", rarity = \"legend\", hits = 4, aoe = true, fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tFeed = { name = \"포식\", cost = 1, desc = \"피해를 10 줍니다. 치명타라면, 최대 체력이 3 증가합니다. 소멸.\", kind = \"Attack\", damage = 10, maxHpOnKill = 3, class = \"warrior\", rarity = \"legend\", exhaust = true, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tTearAsunder = { name = \"갈가리 찢기\", cost = 2, desc = \"피해 5 x 3회\", kind = \"Attack\", damage = 5, class = \"warrior\", rarity = \"legend\", hits = 3, fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tFiendFire = { name = \"지옥불\", cost = 2, desc = \"손의 다른 카드마다 피해 +7 후 모두 버리기. 소멸.\", kind = \"Attack\", damage = 0, damagePerOtherHandCard = 7, class = \"warrior\", rarity = \"legend\", discardAll = true, exhaust = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tMangle = { name = \"난도질\", cost = 3, desc = \"피해 15. 이번 턴 적 힘 -10\", kind = \"Attack\", damage = 15, class = \"warrior\", rarity = \"legend\", enemyStrengthLossThisTurn = 10, fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tBrand = { name = \"낙인\", cost = 0, desc = \"카드 1장 버리기, 힘 +1\", kind = \"Skill\", strength = 1, class = \"warrior\", rarity = \"legend\", discard = 1, image = \"115e309771604743853abad2d8d186bc\" },\n\tCascade = { name = \"연쇄\", cost = 0, desc = \"뽑을 카드 더미 맨 위의 카드 X장을 사용합니다. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", playTopDrawPileCountPerEnergy = 1, useAllEnergy = true, exhaust = true, image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tPrimalForce = { name = \"원시의 힘\", cost = 0, desc = \"이번 턴 손의 카드 비용이 0\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", handCostZeroThisTurn = true, image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tOffering = { name = \"제물\", cost = 0, desc = \"에너지 +2, 카드 3장 뽑기. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", draw = 3, gainEnergy = 2, exhaust = true, image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tOneTwoPunch = { name = \"원투 펀치\", cost = 1, desc = \"다음 스킬을 1회 추가 발동\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", nextSkillRepeatCount = 1, image = \"251b6e12329048429490049a4f3cf564\" },\n\tStoke = { name = \"화력 증폭\", cost = 1, desc = \"손의 모든 카드를 소멸시키고, 소멸시킨 카드 수만큼 뽑습니다. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", exhaustHandAll = true, drawPerExhausted = 1, exhaust = true, image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tImpervious = { name = \"무적\", cost = 2, desc = \"방어도 30. 소멸.\", kind = \"Skill\", block = 30, class = \"warrior\", rarity = \"legend\", exhaust = true, image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tNotYet = { name = \"불굴\", cost = 2, desc = \"HP 10 회복. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", heal = 10, exhaust = true, image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tAggression = { name = \"공격성\", cost = 1, desc = \"턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", class = \"warrior\", rarity = \"legend\", turnStartDraw = 1, image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tCruelty = { name = \"악랄함\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"warrior\", rarity = \"legend\", image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tCrimsonMantle = { name = \"핏빛 망토\", cost = 1, desc = \"매턴 방어도 +8\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 8, class = \"warrior\", rarity = \"legend\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tPyre = { name = \"불의 심장\", cost = 2, desc = \"매턴 에너지 +1\", kind = \"Power\", powerEffect = \"energyPerTurn\", value = 1, class = \"warrior\", rarity = \"legend\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tDarkEmbrace = { name = \"어둠의 포옹\", cost = 2, desc = \"카드가 소멸될 때마다 카드 1장 뽑기\", kind = \"Power\", drawOnExhaust = 1, class = \"warrior\", rarity = \"legend\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tUnmovable = { name = \"요지부동\", cost = 2, desc = \"이번 전투 동안 방어도 획득량 2배\", kind = \"Power\", blockGainMultiplier = 2, powerEffect = \"blockPerTurn\", value = 0, class = \"warrior\", rarity = \"legend\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tJuggernaut = { name = \"절대적인 힘\", cost = 2, desc = \"카드를 사용할 때마다 무작위 적에게 피해 5\", kind = \"Power\", cardPlayedRandomDamage = 5, class = \"warrior\", rarity = \"legend\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tHellraiser = { name = \"지옥검무\", cost = 2, desc = \"이름에 \\\"타격\\\"이 포함된 카드를 뽑을 때마다, 무작위 적에게 사용합니다.\", kind = \"Power\", drawNameMatchAutoPlay = \"타격\", class = \"warrior\", rarity = \"legend\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tBarricade = { name = \"바리케이드\", cost = 3, desc = \"내 턴 시작 시 방어도가 사라지지 않습니다.\", kind = \"Power\", powerEffect = \"keepBlock\", value = 0, class = \"warrior\", rarity = \"legend\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tDemonForm = { name = \"악마의 형상\", cost = 3, desc = \"매턴 힘 +2\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 2, class = \"warrior\", rarity = \"legend\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tEnergyBolt = { name = \"에너지 볼트\", cost = 1, desc = \"피해 6\", kind = \"Attack\", damage = 6, class = \"magician\", rarity = \"normal\", fx = \"1d5877e1120a42d0907f204c959888b1\", image = \"e84880eaf89442128d3af2be5c80a74f\" },\n\tMagicGuard = { name = \"매직 가드\", cost = 1, desc = \"방어도 5\", kind = \"Skill\", block = 5, class = \"magician\", rarity = \"normal\", image = \"01b249c26eb34b8aaab774bf221907a1\" },\n\tMagicClaw = { name = \"매직 클로\", cost = 1, desc = \"피해 3 × 2회\", kind = \"Attack\", damage = 3, class = \"magician\", rarity = \"normal\", hits = 2, fx = \"ba4ac7c8f24845b68b7e689b7effcc93\", image = \"f3fcac2d460041b288cc1973caaaf30f\" },\n\tTeleport = { name = \"텔레포트\", cost = 1, desc = \"방어도 3, 드로 1\", kind = \"Skill\", block = 3, class = \"magician\", rarity = \"normal\", discardAll = true, drawPerDiscarded = 1, image = \"7f70a9dc7e304433bb8121dd9c4df98b\" },\n\tSlow = { name = \"슬로우\", cost = 1, desc = \"약화 2 부여\", kind = \"Skill\", weak = 2, class = \"magician\", rarity = \"normal\", image = \"7224cd3f9b7e497d9dd65f32a50865e4\" },\n\tFireArrow = { name = \"파이어 애로우\", cost = 1, desc = \"피해 8\", kind = \"Attack\", damage = 8, class = \"firepoison\", rarity = \"unique\", fx = \"4a937e208875468eb63d891806fba3cd\", image = \"6fa15fd3a0004b409ea516c11a67e533\" },\n\tPoisonBreath = { name = \"포이즌 브레스\", cost = 1, desc = \"독 4 부여\", kind = \"Skill\", class = \"firepoison\", rarity = \"unique\", poison = 4, image = \"07200f3c74854022baa7ebbefdc4ad8c\" },\n\tElementAmp = { name = \"엘레멘트 앰플\", cost = 1, desc = \"매 턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"firepoison\", rarity = \"legend\", image = \"06865473977849bebe79062dbd608944\" },\n\tThunderBolt = { name = \"썬더 볼트\", cost = 2, desc = \"모든 적에게 피해 6\", kind = \"Attack\", damage = 6, class = \"icelightning\", rarity = \"legend\", aoe = true, fx = \"7d52f5e389bd4d44a30cf7cc54538f8f\", image = \"c6685d33cb2641f09d11cfa2d5cc820c\" },\n\tColdBeam = { name = \"콜드 빔\", cost = 2, desc = \"피해 7, 약화 2\", kind = \"Attack\", damage = 7, weak = 2, class = \"icelightning\", rarity = \"unique\", image = \"e8f7c148c79f497d83014e3361f59f5c\" },\n\tChillingStep = { name = \"칠링 스텝\", cost = 1, desc = \"방어도 8\", kind = \"Skill\", block = 8, class = \"icelightning\", rarity = \"unique\", image = \"bef20873a68a4651a91d74be457c2cfc\" },\n\tHeal = { name = \"힐\", cost = 1, desc = \"HP 10 회복\", kind = \"Skill\", class = \"cleric\", rarity = \"unique\", heal = 10, image = \"8b935b7d7066493cb462834bbe287c74\" },\n\tBless = { name = \"블레스\", cost = 1, desc = \"힘 +1, 방어도 5\", kind = \"Skill\", block = 5, strength = 1, class = \"cleric\", rarity = \"unique\", image = \"607fc5457c1c44a0993a5c2fe3fb0c68\" },\n\tHolyArrow = { name = \"홀리 애로우\", cost = 1, desc = \"피해 8\", kind = \"Attack\", damage = 8, class = \"cleric\", rarity = \"unique\", fx = \"4faa7b78e09643cf86339b8b7cf2abac\", image = \"a80127195bf7471f9545b70e491f4719\" },\n\tWound = { name = \"상처\", cost = 0, desc = \"사용할 수 없다. 손패를 막는 저주.\", kind = \"Status\", class = \"curse\", rarity = \"normal\", unplayable = true, curse = true },\n\tBurn = { name = \"화상\", cost = 0, desc = \"사용 불가. 손패에 있으면 턴 종료 시 피해 2.\", kind = \"Status\", class = \"curse\", rarity = \"normal\", unplayable = true, curse = true, endTurnDamage = 2 },\n\tNeutralize = { name = \"커닝식 견제\", cost = 0, desc = \"피해를 3 줍니다. 약화를 1 부여합니다.\", kind = \"Attack\", damage = 3, weak = 1, class = \"rogue\", rarity = \"normal\", image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tSilentStrike = { name = \"초보 도적의 칼끝\", cost = 1, desc = \"피해를 6 줍니다.\", kind = \"Attack\", damage = 6, class = \"rogue\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tSurvivor = { name = \"골목길 생존술\", cost = 1, desc = \"방어도를 8 얻습니다. 카드를 1장 버립니다.\", kind = \"Skill\", block = 8, class = \"rogue\", rarity = \"normal\", discard = 1, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tSilentDefend = { name = \"낡은 가죽 방패\", cost = 1, desc = \"방어도를 5 얻습니다.\", kind = \"Skill\", block = 5, class = \"rogue\", rarity = \"normal\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tDoubleStab = { name = \"더블 스탭\", cost = 1, desc = \"피해를 4만큼 2번 줍니다.\", kind = \"Attack\", damage = 4, class = \"rogue\", rarity = \"normal\", hits = 2, image = \"92a5020c978c46bdabab910598118b86\" },\n\tLuckySeven = { name = \"럭키 세븐\", cost = 1, desc = \"피해를 3만큼 3번 줍니다.\", kind = \"Attack\", damage = 3, class = \"rogue\", rarity = \"unique\", hits = 3, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHaste = { name = \"헤이스트\", cost = 1, desc = \"카드를 1장 뽑습니다. 에너지를 1 얻습니다.\", kind = \"Skill\", class = \"rogue\", rarity = \"normal\", draw = 1, gainEnergy = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tDarkSight = { name = \"다크 사이트\", cost = 1, desc = \"무형을 1 얻습니다. 소멸.\", kind = \"Skill\", intangible = 1, class = \"rogue\", rarity = \"unique\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tFlashJump = { name = \"플래시 점프\", cost = 0, desc = \"방어도를 4 얻습니다. 카드를 1장 뽑습니다. 소멸.\", kind = \"Skill\", block = 4, class = \"rogue\", rarity = \"normal\", draw = 1, exhaust = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tNimbleBody = { name = \"님블 바디\", cost = 1, desc = \"민첩을 1 얻습니다. 매 턴 방어도를 2 얻습니다.\", kind = \"Power\", dex = 1, powerEffect = \"blockPerTurn\", value = 2, class = \"rogue\", rarity = \"unique\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tSlice = { name = \"짧은 단검질\", cost = 0, desc = \"피해를 6 줍니다.\", kind = \"Attack\", damage = 6, class = \"rogue\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tShiv = { name = \"표창\", cost = 0, desc = \"피해를 4 줍니다. 소멸.\", kind = \"Attack\", damage = 4, class = \"shiv\", rarity = \"normal\", exhaust = true, token = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDaggerSpray = { name = \"단검비\", cost = 1, desc = \"모든 적에게 피해를 4만큼 2번 줍니다.\", kind = \"Attack\", damage = 4, class = \"thief\", rarity = \"normal\", hits = 2, aoe = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDaggerThrow = { name = \"비도 투척\", cost = 1, desc = \"피해를 9 줍니다. 카드를 1장 뽑습니다. 카드를 1장 버립니다.\", kind = \"Attack\", damage = 9, class = \"thief\", rarity = \"normal\", draw = 1, discard = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tPoisonedStab = { name = \"초록 독단검\", cost = 1, desc = \"피해를 6 줍니다. 중독을 3 부여합니다.\", kind = \"Attack\", damage = 6, class = \"rogue\", rarity = \"normal\", poison = 3, image = \"19361e72087946b1888684185b40d935\" },\n\tSuckerPunch = { name = \"골목 기습\", cost = 1, desc = \"피해를 7 줍니다. 약화를 1 부여합니다.\", kind = \"Attack\", damage = 7, weak = 1, class = \"rogue\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tLeadingStrike = { name = \"초보 표창 던지기\", cost = 1, desc = \"피해를 3 줍니다. 표창을 1장 손으로 가져옵니다.\", kind = \"Attack\", damage = 3, class = \"rogue\", rarity = \"normal\", addShiv = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tFollowThrough = { name = \"연달아 찌르기\", cost = 1, desc = \"피해를 7 줍니다. 손에 다른 카드가 5장 이상 있다면, 1번 추가로 적중합니다.\", kind = \"Attack\", damage = 7, otherHandAtLeast = 5, bonusHitsWhenOtherHandAtLeast = 1, class = \"thief\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tFlickFlack = { name = \"커닝 난무\", cost = 1, desc = \"교활. 모든 적에게 피해를 6 줍니다.\", kind = \"Attack\", damage = 6, class = \"thief\", rarity = \"normal\", sly = true, aoe = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tRicochet = { name = \"통통 튀는 표창\", cost = 2, desc = \"교활. 무작위 적에게 피해를 3만큼 4번 줍니다.\", kind = \"Attack\", damage = 3, class = \"assassin\", rarity = \"normal\", hits = 4, randomTargetEachHit = true, sly = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tPrepared = { name = \"비장의 패\", cost = 1, desc = \"카드를 1장 버리고, 이번 턴에 준 피해의 절반만큼 방어를 얻습니다.\", kind = \"Skill\", blockPerDamageDealtThisTurn = 0.5, class = \"thief\", rarity = \"normal\", discard = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tAnticipate = { name = \"럭키 예감\", cost = 0, desc = \"이번 턴 동안 민첩을 2 얻습니다.\", kind = \"Skill\", endTurnDexLoss = 2, dex = 2, class = \"rogue\", rarity = \"normal\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tDeflect = { name = \"단검 쳐내기\", cost = 0, desc = \"방어도를 4 얻습니다.\", kind = \"Skill\", block = 4, class = \"rogue\", rarity = \"normal\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tBladeDance = { name = \"표창 별무리\", cost = 1, desc = \"표창을 3장 손으로 가져옵니다. 소멸.\", kind = \"Skill\", class = \"assassin\", rarity = \"normal\", addShiv = 3, exhaust = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBackflip = { name = \"커닝 곡예\", cost = 1, desc = \"방어도를 5 얻습니다. 카드를 2장 뽑습니다.\", kind = \"Skill\", block = 5, class = \"rogue\", rarity = \"normal\", draw = 2, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tDodgeAndRoll = { name = \"골목 구르기\", cost = 1, desc = \"방어도를 4 얻습니다. 다음 턴에, 방어도를 4 얻습니다\", kind = \"Skill\", block = 4, class = \"rogue\", rarity = \"normal\", nextTurnBlock = 4, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tPiercingWail = { name = \"골목의 살기\", cost = 1, desc = \"이번 턴 동안 모든 적이 힘을 6 잃습니다. 소멸.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", affectsAllEnemies = true, enemyStrengthLossThisTurn = 6, exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tCloakAndDagger = { name = \"망토 속 별\", cost = 1, desc = \"방어도를 6 얻습니다. 표창을 1장 손으로 가져옵니다.\", kind = \"Skill\", block = 6, class = \"assassin\", rarity = \"normal\", addShiv = 1, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tDeadlyPoison = { name = \"맹독 조제\", cost = 1, desc = \"중독을 5 부여합니다.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", poison = 5, image = \"19361e72087946b1888684185b40d935\" },\n\tSnakebite = { name = \"독니 단검\", cost = 2, desc = \"보존. 중독을 7 부여합니다.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", poison = 7, retain = true, image = \"19361e72087946b1888684185b40d935\" },\n\tUntouchable = { name = \"연막 속 숨기\", cost = 2, desc = \"교활. 방어도를 6 얻습니다.\", kind = \"Skill\", block = 6, class = \"rogue\", rarity = \"normal\", sly = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tSkewer = { name = \"꿰뚫는 표창\", cost = 2, desc = \"피해를 8만큼 X번 줍니다.\", kind = \"Attack\", class = \"assassin\", rarity = \"unique\", useAllEnergy = true, xDamagePerEnergy = 8, image = \"92a5020c978c46bdabab910598118b86\" },\n\tBackstab = { name = \"그림자 등찌르기\", cost = 0, desc = \"선천성. 피해를 10 줍니다. 소멸.\", kind = \"Attack\", damage = 10, class = \"rogue\", rarity = \"unique\", innate = true, exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tPreciseCut = { name = \"급소 절개\", cost = 0, desc = \"피해를 13 줍니다. 손에 있는 다른 카드 1장당 피해량이 2 감소합니다.\", kind = \"Attack\", damage = 13, damagePerOtherHandCard = -2, class = \"thief\", rarity = \"unique\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tFinisher = { name = \"마지막 칼끝\", cost = 1, desc = \"이번 턴에 사용한 공격 카드 1장당 피해를 6 줍니다.\", kind = \"Attack\", damage = 0, damagePerAttackPlayedThisTurn = 6, class = \"thief\", rarity = \"unique\", image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tMementoMori = { name = \"사신의 장부\", cost = 1, desc = \"피해를 9 줍니다. 이번 턴에 버린 카드 1장당 피해량이 4 증가합니다.\", kind = \"Attack\", damage = 9, damagePerDiscardedThisTurn = 4, class = \"thief\", rarity = \"unique\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tStrangle = { name = \"그림자 올가미\", cost = 1, desc = \"피해를 8 줍니다.\", kind = \"Attack\", damage = 8, class = \"thief\", rarity = \"unique\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tFlechettes = { name = \"표창 셈법\", cost = 1, desc = \"손에 있는 스킬 카드 1장당 피해를 5 줍니다.\", kind = \"Attack\", damage = 0, damagePerSkillInHand = 5, class = \"assassin\", rarity = \"unique\", image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tPounce = { name = \"어둠을 가르는 도약\", cost = 2, desc = \"피해를 12 줍니다. 다음에 사용하는 스킬 카드의 비용이 0 이 됩니다.\", kind = \"Attack\", damage = 12, class = \"assassin\", rarity = \"unique\", nextSkillCostZero = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tDash = { name = \"뒷골목 돌파\", cost = 2, desc = \"방어도를 10 얻습니다. 피해를 10 줍니다.\", kind = \"Attack\", damage = 10, block = 10, class = \"thief\", rarity = \"unique\", image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tPredator = { name = \"표창 끝의 추격\", cost = 2, desc = \"피해를 15 줍니다. 다음 턴에, 카드를 2장 뽑습니다.\", kind = \"Attack\", damage = 15, class = \"assassin\", rarity = \"unique\", nextTurnDraw = 2, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tPinpoint = { name = \"한 점 겨냥\", cost = 3, desc = \"피해를 15 줍니다. 이번 턴에 스킬을 사용할 때마다 비용이 1 감소합니다.\", kind = \"Attack\", damage = 15, class = \"assassin\", rarity = \"unique\", skillCostReductionThisTurn = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tCalculatedGamble = { name = \"메소 건 승부\", cost = 0, desc = \"손에 있는 모든 카드를 버린 뒤, 버린 카드의 수만큼 카드를 뽑습니다. 소멸.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", discardAll = true, drawPerDiscarded = 1, exhaust = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tExpose = { name = \"약점 들추기\", cost = 0, desc = \"대상 적의 모든 인공물과 방어도를 제거합니다. 취약을 2 부여합니다. 소멸.\", kind = \"Skill\", vuln = 2, class = \"thief\", rarity = \"unique\", removeEnemyBlock = true, removeEnemyArtifact = true, exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tHiddenDaggers = { name = \"숨겨둔 표창\", cost = 0, desc = \"카드를 2장 버립니다. 표창을 2장 손으로 가져옵니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"unique\", discard = 2, addShiv = 2, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tEscapePlan = { name = \"비상용 연막탄\", cost = 0, desc = \"카드를 1장 뽑습니다. 뽑은 카드가 스킬 카드라면, 방어도를 3 얻습니다.\", kind = \"Skill\", class = \"rogue\", rarity = \"unique\", draw = 1, drawSkillBlock = 3, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tAcrobatics = { name = \"지붕 위 곡예\", cost = 1, desc = \"카드를 3장 뽑습니다. 카드를 1장 버립니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", draw = 3, discard = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tHandTrick = { name = \"재빠른 손놀림\", cost = 1, desc = \"방어도를 7 얻습니다. 이번 턴 동안 손에 있는 스킬 카드 1장에 교활을 추가합니다.\", kind = \"Skill\", block = 7, class = \"thief\", rarity = \"unique\", turnHandSlyCount = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tExpertise = { name = \"노련한 단검술\", cost = 1, desc = \"손에 있는 카드가 6장이 될 때까지 카드를 뽑습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", drawUntilHandSize = 6, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tBubbleBubble = { name = \"독액 농축\", cost = 1, desc = \"적이 중독을 보유하고 있다면, 중독을 9 부여합니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", poison = 9, poisonIfTargetPoisoned = true, image = \"19361e72087946b1888684185b40d935\" },\n\tBlur = { name = \"흐린 잔영\", cost = 1, desc = \"방어도를 5 얻습니다. 다음 턴 시작 시 방어도가 사라지지 않습니다.\", kind = \"Skill\", block = 5, class = \"thief\", rarity = \"unique\", nextTurnKeepBlock = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tLegSweep = { name = \"발목 베기\", cost = 2, desc = \"약화를 2 부여합니다. 방어도를 11 얻습니다.\", kind = \"Skill\", block = 11, weak = 2, class = \"thief\", rarity = \"unique\", image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tUpMySleeve = { name = \"소매 속 표창\", cost = 2, desc = \"표창을 3장 손으로 가져옵니다. 이 카드의 비용이 1 감소합니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"unique\", addShiv = 3, combatCostReductionOnPlay = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBouncingFlask = { name = \"통통 독병\", cost = 2, desc = \"무작위 적에게 중독을 3만큼 3번 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"unique\", poison = 3, poisonHits = 3, poisonRandomTargets = true, image = \"19361e72087946b1888684185b40d935\" },\n\tReflex = { name = \"찰나의 반응\", cost = 3, desc = \"교활. 카드를 2장 뽑습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", draw = 2, sly = true, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tHaze = { name = \"보랏빛 독연기\", cost = 3, desc = \"교활. 모든 적에게 중독을 4 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"unique\", poison = 4, sly = true, image = \"19361e72087946b1888684185b40d935\" },\n\tTactician = { name = \"골목길 책략\", cost = 3, desc = \"교활. 에너지를 1 얻습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", gainEnergy = 1, sly = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tWellLaidPlans = { name = \"빈틈없는 작전\", cost = 1, desc = \"내 턴 종료 시, 카드를 최대 1장까지 보존합니다.\", kind = \"Power\", powerEffect = \"retainOne\", value = 1, class = \"thief\", rarity = \"unique\", image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tInfiniteBlades = { name = \"끝없는 표창통\", cost = 1, desc = \"내 턴 시작 시, 표창을 1장 손으로 가져옵니다.\", kind = \"Power\", class = \"assassin\", rarity = \"unique\", turnStartShiv = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tFootwork = { name = \"사뿐한 발놀림\", cost = 1, desc = \"민첩을 2 얻습니다.\", kind = \"Power\", dex = 2, class = \"thief\", rarity = \"unique\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tOutbreak = { name = \"독맥 터뜨리기\", cost = 2, desc = \"독이 3번 부여될 때마다 모든 적에게 6 피해를 줍니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"unique\", poisonApplicationBurstEvery = 3, poisonApplicationBurstDamage = 6, image = \"19361e72087946b1888684185b40d935\" },\n\tNoxiousFumes = { name = \"숨막히는 독연기\", cost = 1, desc = \"내 턴 시작 시, 모든 적에게 중독을 2 부여합니다.\", kind = \"Power\", powerEffect = \"poisonPerTurn\", value = 2, class = \"thief\", rarity = \"unique\", poison = 2, image = \"19361e72087946b1888684185b40d935\" },\n\tSpeedster = { name = \"그림자 속도전\", cost = 2, desc = \"내 턴 동안 카드를 뽑을 때마다, 모든 적에게 피해를 1 줍니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"unique\", drawDamage = 1, aoe = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tGrandFinale = { name = \"커닝의 대단원\", cost = 0, desc = \"뽑을 카드 더미에 카드가 없을 때만 사용할 수 있습니다. 모든 적에게 피해를 45 줍니다.\", kind = \"Attack\", damage = 45, class = \"thiefmaster\", rarity = \"legend\", playableWhenDrawPileEmpty = true, aoe = true, image = \"dbdbb1b56ae54672ae68ac6882fff6a2\" },\n\tAssassinate = { name = \"어둠 속 급소\", cost = 0, desc = \"선천성. 피해를 10 줍니다. 취약을 1 부여합니다. 소멸.\", kind = \"Attack\", damage = 10, vuln = 1, class = \"thiefmaster\", rarity = \"legend\", innate = true, exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tEchoingSlash = { name = \"메아리 칼자국\", cost = 2, desc = \"모든 적에게 피해를 6 줍니다. 적을 처치할 때마다 이 효과를 반복합니다.\", kind = \"Attack\", damage = 10, class = \"thiefmaster\", rarity = \"legend\", repeatOnKill = true, aoe = true, image = \"dbdbb1b56ae54672ae68ac6882fff6a2\" },\n\tTheHunt = { name = \"커닝 현상금\", cost = 1, desc = \"피해를 10 줍니다. 이 카드로 적을 처치하면 카드 보상을 추가로 얻습니다. 소멸.\", kind = \"Attack\", damage = 6, rewardOnKill = 1, class = \"assassin\", rarity = \"legend\", exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tMurder = { name = \"쌓여가는 살의\", cost = 3, desc = \"피해를 1 줍니다. 이번 전투 동안 뽑은 카드 1장당 피해량이 1 증가합니다.\", kind = \"Attack\", damage = 1, damagePerCardDrawnThisCombat = 1, class = \"thiefmaster\", rarity = \"legend\", image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tMalaise = { name = \"기운 빼는 독\", cost = 2, desc = \"에너지를 모두 사용하고, 사용한 에너지만큼 적에게 약화를 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", useAllEnergy = true, xWeakPerEnergy = 1, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tStormOfSteel = { name = \"쇠별 폭풍\", cost = 1, desc = \"손에 있는 모든 카드를 버립니다. 버린 카드의 수만큼 표창을 손으로 가져옵니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"legend\", discardAll = true, addShivPerDiscard = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tShadowStep = { name = \"그림자 발자국\", cost = 1, desc = \"손에 있는 모든 카드를 버립니다. 다음 턴에, 공격 카드의 피해량이 2배가 됩니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", discardAll = true, nextTurnAttackMultiplier = 2, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tShadowmeld = { name = \"연막 속 은신\", cost = 1, desc = \"이번 턴 동안 얻는 방어도가 2배가 됩니다.\", kind = \"Skill\", blockGainMultiplier = 2, class = \"thiefmaster\", rarity = \"legend\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tCorrosiveWave = { name = \"부식 독물결\", cost = 1, desc = \"이번 턴에 카드를 뽑을 때마다, 모든 적에게 중독을 2 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", drawPoison = 2, image = \"19361e72087946b1888684185b40d935\" },\n\tBladeOfInk = { name = \"먹빛 표창\", cost = 1, desc = \"잉크투성이 표창을 2장 손으로 가져옵니다.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", addShiv = 2, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBurst = { name = \"연속 술수\", cost = 1, desc = \"이번 턴에 다음에 사용하는 스킬 카드가 1번 추가로 사용됩니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", nextSkillRepeatCount = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tKnifeTrap = { name = \"숨은 칼날덫\", cost = 2, desc = \"교활. 모든 적에게 피해를 7 주고 중독을 2 부여합니다.\", kind = \"Attack\", damage = 7, class = \"thiefmaster\", rarity = \"legend\", poison = 2, sly = true, aoe = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBulletTime = { name = \"멈춘 듯한 순간\", cost = 3, desc = \"이번 턴 동안 더 이상 카드를 뽑을 수 없습니다. 이번 턴 동안 손에 있는 모든 카드를 비용 없이 사용할 수 있습니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", handCostZeroThisTurn = true, drawDisabledThisTurn = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tNightmare = { name = \"검은 꿈\", cost = 3, desc = \"카드를 1장 선택합니다. 다음 턴에, 그 카드의 복사본을 3장 손으로 가져옵니다. 소멸.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", nextTurnCopies = 3, nextTurnSelectHandCard = true, nextTurnSelectPrompt = \"복사할 카드를 선택하세요\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tToolsOfTheTrade = { name = \"도적의 연장통\", cost = 1, desc = \"내 턴 시작 시, 카드를 1장 뽑고 카드를 1장 버립니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"legend\", turnStartDraw = 1, turnStartDiscard = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tMasterPlanner = { name = \"작전의 달인\", cost = 2, desc = \"사용한 스킬 카드는 교활해집니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"legend\", skillSlyOnPlay = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tFanOfKnives = { name = \"사방 표창비\", cost = 2, desc = \"표창이 이제 모든 적을 대상으로 합니다. 표창을 4장 손으로 가져옵니다.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", addShiv = 4, shivAoe = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tSerpentForm = { name = \"독사의 몸놀림\", cost = 2, desc = \"카드를 사용할 때마다, 무작위 적에게 피해를 4 줍니다.\", kind = \"Power\", cardPlayedRandomDamage = 4, class = \"thiefmaster\", rarity = \"legend\", image = \"19361e72087946b1888684185b40d935\" },\n\tAbrasive = { name = \"거친 숫돌질\", cost = 2, desc = \"교활. 민첩을 1 얻습니다. 가시를 4 얻습니다.\", kind = \"Power\", dex = 1, thorns = 4, class = \"thiefmaster\", rarity = \"legend\", sly = true, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tSuppress = { name = \"소리 없는 제압\", cost = 0, desc = \"선천성. 피해를 9 줍니다. 약화를 2 부여합니다. 소멸.\", kind = \"Attack\", damage = 9, weak = 2, class = \"thiefmaster\", rarity = \"legend\", innate = true, exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tWraithForm = { name = \"유령 같은 몸놀림\", cost = 3, desc = \"불가침을 2 얻습니다. 내 턴 종료 시 민첩을 1 잃습니다.\", kind = \"Power\", intangible = 2, endTurnDexLoss = 1, class = \"thiefmaster\", rarity = \"legend\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tSavageBlow = { name = \"새비지 블로우\", cost = 1, desc = \"피해를 3만큼 2번 줍니다. 이번 턴에 사용한 공격 카드 1장당 피해가 2 증가합니다.\", kind = \"Attack\", damage = 3, damagePerAttackPlayedThisTurn = 2, class = \"thief\", rarity = \"normal\", hits = 2, image = \"92a5020c978c46bdabab910598118b86\" },\n\tCriticalEdge = { name = \"크리티컬 엣지\", cost = 1, desc = \"카드를 1장 뽑습니다. 다음 턴에 공격 카드의 피해량이 2배가 됩니다. 보존.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", draw = 1, nextTurnAttackMultiplier = 2, retain = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tSteal = { name = \"스틸\", cost = 1, desc = \"피해를 3 줍니다. 이번 턴에 버린 카드 1장당 피해가 3 증가합니다. 에너지를 1 얻습니다.\", kind = \"Attack\", damage = 3, damagePerDiscardedThisTurn = 3, class = \"thief\", rarity = \"normal\", gainEnergy = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDaggerAcceleration = { name = \"대거 액셀레이션\", cost = 0, desc = \"카드를 1장 뽑습니다. 카드를 1장 버립니다. 버린 카드마다 카드를 1장 더 뽑습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", draw = 1, discard = 1, drawPerDiscarded = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tKarma = { name = \"카르마\", cost = 1, desc = \"피해를 7 줍니다. 방어도를 무시합니다. 약화 상태의 적에게는 피해가 2배가 됩니다.\", kind = \"Attack\", damage = 7, class = \"thief\", rarity = \"unique\", pierce = true, attackDamageVsWeakMultiplier = 2, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tDaggerMastery = { name = \"대거 마스터리\", cost = 1, desc = \"카드를 사용할 때마다 방어도를 1 얻습니다. 매 턴 첫 카드의 피해가 3 증가합니다.\", kind = \"Power\", firstCardDamageBonus = 3, cardPlayedBlock = 1, class = \"thief\", rarity = \"unique\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tPhysicalTraining = { name = \"피지컬 트레이닝\", cost = 2, desc = \"힘을 1 얻습니다. 민첩을 1 얻습니다.\", kind = \"Power\", strength = 1, dex = 1, class = \"thief\", rarity = \"normal\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tShieldMastery = { name = \"실드 마스터리\", cost = 1, desc = \"방어도를 7 얻습니다. 다음 턴에 방어도가 사라지지 않습니다.\", kind = \"Skill\", block = 7, class = \"thief\", rarity = \"normal\", nextTurnKeepBlock = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tThiefAgility = { name = \"시프 어질리티\", cost = 1, desc = \"방어도를 5 얻습니다. 이번 턴 동안 민첩을 1 얻습니다. 손의 다른 스킬 카드 1장이 교활해집니다.\", kind = \"Skill\", endTurnDexLoss = 1, block = 5, dex = 1, class = \"thief\", rarity = \"unique\", turnHandSlyCount = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tEdgeCarnival = { name = \"엣지 카니발\", cost = 1, desc = \"무작위 적에게 피해를 2만큼 4번 줍니다.\", kind = \"Attack\", damage = 2, class = \"thiefmaster\", rarity = \"unique\", hits = 4, randomTargetEachHit = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tMuspelHeim = { name = \"무스펠 하임\", cost = 1, desc = \"모든 적에게 피해를 4 줍니다. 이번 턴에 버린 카드 1장당 피해가 2 증가합니다. 약화를 1 부여합니다.\", kind = \"Attack\", damage = 4, damagePerDiscardedThisTurn = 2, weak = 1, class = \"thiefmaster\", rarity = \"unique\", aoe = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tMesoExplosion = { name = \"메소 익스플로젼\", cost = 1, desc = \"피해를 2 줍니다. 이번 턴에 버린 카드 1장당 피해가 7 증가합니다. 방어도를 무시합니다.\", kind = \"Attack\", damage = 2, damagePerDiscardedThisTurn = 7, class = \"thiefmaster\", rarity = \"unique\", pierce = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDarkFlare = { name = \"다크 플레어\", cost = 1, desc = \"매 턴 모든 적에게 피해를 2 줍니다. 카드를 사용할 때마다 무작위 적에게 피해를 2 줍니다.\", kind = \"Power\", cardPlayedRandomDamage = 2, powerEffect = \"damagePerTurn\", value = 2, class = \"thiefmaster\", rarity = \"unique\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tPickPocket = { name = \"픽 파킷\", cost = 1, desc = \"카드를 1장 뽑습니다. 카드를 1장 버리고, 에너지를 1 얻습니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"unique\", draw = 1, gainEnergy = 1, discard = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tShadowPartner = { name = \"쉐도우 파트너\", cost = 2, desc = \"카드를 1장 선택합니다. 다음 턴에 그 카드의 복사본 1장을 손에 넣습니다. 카드를 1장 뽑습니다. 소멸.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", draw = 1, nextTurnCopies = 1, nextTurnSelectHandCard = true, nextTurnSelectPrompt = \"복사할 카드를 선택하세요.\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tAdvancedDarkSight = { name = \"어드밴스드 다크 사이트\", cost = 1, desc = \"무형을 1 얻습니다. 이번 턴 동안 손의 다른 스킬 카드 2장이 교활해집니다.\", kind = \"Skill\", intangible = 1, class = \"thiefmaster\", rarity = \"unique\", turnHandSlyCount = 2, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tIntoDarkness = { name = \"인투 다크니스\", cost = 1, desc = \"모든 적에게 약화를 1 부여합니다. 이번 턴 동안 손의 다른 스킬 카드 2장이 교활해집니다.\", kind = \"Skill\", weak = 1, class = \"thiefmaster\", rarity = \"unique\", turnHandSlyCount = 2, affectsAllEnemies = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tVenom = { name = \"베놈\", cost = 1, desc = \"공격 카드가 막히지 않은 피해를 줄 때마다 중독을 1 부여합니다. 적 턴 시작 시 독이 한 번 더 적용됩니다.\", kind = \"Power\", attackPoison = 1, class = \"thiefmaster\", rarity = \"legend\", extraPoisonTicks = 1, image = \"19361e72087946b1888684185b40d935\" },\n\tGrid = { name = \"그리드\", cost = 2, desc = \"가시를 3 얻습니다. 카드를 사용할 때마다 방어도를 1 얻습니다.\", kind = \"Power\", thorns = 3, cardPlayedBlock = 1, class = \"thiefmaster\", rarity = \"unique\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tRadicalDarkness = { name = \"래디컬 다크니스\", cost = 2, desc = \"카드를 1장 뽑습니다. 이번 턴 동안 얻는 방어도가 2배가 됩니다. 다음 턴에 방어도가 사라지지 않습니다.\", kind = \"Skill\", blockGainMultiplier = 2, class = \"thiefmaster\", rarity = \"legend\", draw = 1, nextTurnKeepBlock = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tShurikenBurst = { name = \"슈리켄 버스트\", cost = 1, desc = \"무작위 적에게 피해를 3씩 4번 줍니다.\", kind = \"Attack\", damage = 3, class = \"assassin\", rarity = \"normal\", hits = 4, randomTargetEachHit = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tWindTalisman = { name = \"윈드 탈리스만\", cost = 1, desc = \"카드를 1장 뽑습니다. 이번 턴 동안 스킬 카드의 비용이 1 감소합니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"unique\", draw = 1, skillCostReductionThisTurn = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tMarkOfAssassin = { name = \"마크 오브 어쌔신\", cost = 1, desc = \"약화 1을 부여합니다. 약화 상태의 적에게 주는 공격 피해가 1.5배가 됩니다.\", kind = \"Power\", weak = 1, class = \"assassin\", rarity = \"unique\", attackDamageVsWeakMultiplier = 1.5, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tShadowRush = { name = \"쉐도우 러쉬\", cost = 1, desc = \"피해 7, 방어도 5를 얻습니다.\", kind = \"Attack\", damage = 7, block = 5, class = \"assassin\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tShadowLeap = { name = \"쉐도우 리프\", cost = 0, desc = \"방어도 4를 얻습니다. 다음 턴에 방어도 4를 얻습니다. 소멸.\", kind = \"Skill\", block = 4, class = \"assassin\", rarity = \"normal\", nextTurnBlock = 4, exhaust = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tShadowBlink = { name = \"쉐도우 블링크\", cost = 1, desc = \"무형 1을 얻습니다. 다음 스킬 카드의 비용이 0이 됩니다. 소멸.\", kind = \"Skill\", intangible = 1, class = \"assassin\", rarity = \"unique\", nextSkillCostZero = true, exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tJavelinMastery = { name = \"자벨린 마스터리\", cost = 1, desc = \"표창의 피해량이 2 증가합니다.\", kind = \"Power\", class = \"assassin\", rarity = \"unique\", shivDamageBonus = 2, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tJavelinAcceleration = { name = \"자벨린 액셀레이션\", cost = 1, desc = \"카드를 2장 뽑습니다. 카드를 1장 버립니다. 표창 1장을 손에 넣습니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"normal\", draw = 2, discard = 1, addShiv = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tCriticalThrow = { name = \"크리티컬 스로우\", cost = 1, desc = \"피해를 6씩 2번 줍니다. 방어도를 무시합니다. 이번 턴 첫 카드라면 피해가 더 강해집니다.\", kind = \"Attack\", damage = 6, firstCardDamageBonus = 2, class = \"assassin\", rarity = \"unique\", hits = 2, pierce = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tAssassinPhysicalTraining = { name = \"피지컬 트레이닝\", cost = 2, desc = \"힘 1, 민첩 1을 얻고 카드를 1장 뽑습니다.\", kind = \"Power\", strength = 1, dex = 1, class = \"assassin\", rarity = \"normal\", draw = 1, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tTripleThrow = { name = \"트리플 스로우\", cost = 1, desc = \"피해를 4씩 3번 줍니다.\", kind = \"Attack\", damage = 4, class = \"hermit\", rarity = \"normal\", hits = 3, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tShurikenChallenge = { name = \"슈리켄 챌린지\", cost = 1, desc = \"피해를 5씩 2번 줍니다. 다음 턴에 카드를 1장 더 뽑습니다.\", kind = \"Attack\", damage = 5, class = \"hermit\", rarity = \"unique\", hits = 2, nextTurnDraw = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHermitDarkFlare = { name = \"다크 플레어\", cost = 2, desc = \"매 턴 모든 적에게 피해 3을 줍니다. 턴 시작마다 표창 1장을 손에 넣습니다.\", kind = \"Power\", powerEffect = \"damagePerTurn\", value = 3, class = \"hermit\", rarity = \"unique\", turnStartShiv = 1, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tHermitShadowPartner = { name = \"쉐도우 파트너\", cost = 2, desc = \"카드를 1장 뽑습니다. 다음 턴 공격 카드의 피해가 2배가 됩니다.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", draw = 1, nextTurnAttackMultiplier = 2, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tSpiritJavelin = { name = \"스피릿 자벨린\", cost = 1, desc = \"표창이 턴 종료 시 사라지지 않습니다. 매 턴 처음 사용하는 표창의 피해량이 4 증가합니다.\", kind = \"Power\", class = \"hermit\", rarity = \"unique\", firstShivDamageBonus = 4, shivRetain = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHermitRadicalDarkness = { name = \"래디컬 다크니스\", cost = 1, desc = \"방어도 4를 얻습니다. 이번 턴 동안 얻는 방어도가 2배가 됩니다. 소멸.\", kind = \"Skill\", block = 4, blockGainMultiplier = 2, class = \"hermit\", rarity = \"unique\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tHermitVenom = { name = \"베놈\", cost = 2, desc = \"공격 카드가 막히지 않은 피해를 줄 때마다 중독 1을 부여합니다. 전투 중 독 부여 3회마다 모든 적에게 피해 8을 줍니다.\", kind = \"Power\", attackPoison = 1, class = \"hermit\", rarity = \"legend\", poisonApplicationBurstEvery = 3, poisonApplicationBurstDamage = 8, image = \"19361e72087946b1888684185b40d935\" },\n\tSkilledJavelin = { name = \"숙련된 표창술\", cost = 1, desc = \"표창의 피해량이 2 증가합니다. 매 턴 처음 사용하는 표창의 피해량이 4 증가합니다.\", kind = \"Power\", class = \"hermit\", rarity = \"unique\", shivDamageBonus = 2, firstShivDamageBonus = 4, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHermitAdrenaline = { name = \"아드레날린\", cost = 0, desc = \"에너지를 1 얻고 카드를 1장 뽑습니다. 표창 1장을 손에 넣습니다. 소멸.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", draw = 1, gainEnergy = 1, addShiv = 1, exhaust = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n}\nself.CardFrames = {\n\twarrior = { normal = \"4bb57ef88ef449fdaf958f6cf37fe44b\", unique = \"4f71c124c8bc4e13b5e9fad392995f68\", legend = \"6d741a60c60743cb98ee740a1e2dbfed\" },\n\tmagician = { normal = \"d788d09f6f50467ebc67f01dec45f9e2\", unique = \"f5def2e8022b4e59a17d3c16414034fe\", legend = \"cff71f2e472041ce80c6fbd296f42e2d\" },\n\trogue = { normal = \"9487b06867bc46269ed1d855420f457f\", unique = \"b3081fb2fb1445fa90b12b01481a78ef\", legend = \"c357d2daf31a489d95b8fa47e50dd879\" },\n}\nself.ClassToFrame = {\n\twarrior = \"warrior\",\n\tfighter = \"warrior\",\n\tpage = \"warrior\",\n\tspearman = \"warrior\",\n\tmagician = \"magician\",\n\tfirepoison = \"magician\",\n\ticelightning = \"magician\",\n\tcleric = \"magician\",\n\tcurse = \"rogue\",\n\tshiv = \"rogue\",\n\trogue = \"rogue\",\n\tassassin = \"rogue\",\n\thermit = \"rogue\",\n\tthief = \"rogue\",\n\tthiefmaster = \"rogue\",\n}\nself.NodeIcons = {\n\tcombat = \"f98db6823e894a4f90308d61f75894ac\",\n\telite = \"793ed8a757534b89a82f460747d2df24\",\n\tboss = \"423056cdbbc04f4da131b9721c404d96\",\n\tshop = \"da37e1fac55d455b9ade08569f09f798\",\n\trest = \"b86c1b0568bd45f3ae4a4b97e1b4a594\",\n\ttreasure = \"f8a6d58e20f54e2ca899485055df1ce4\",\n}\nself.ClassPortraits = {\n\twarrior = \"28c88fdc5ab44f34a8b3fc1e19d4ce78\",\n\tmagician = \"3b9ea1f066a744bb859df47fef817277\",\n\trogue = \"efa920e58d31426486ef974106e7dc8b\",\n}\nself.SoulShopDef = {\n\t{ key = \"meso\", name = \"두둑한 지갑\", desc = \"런 시작 시 메소 +60\", cost = 3 },\n\t{ key = \"hp\", name = \"단련된 육체\", desc = \"시작 최대 HP +15\", cost = 4 },\n\t{ key = \"trim\", name = \"덱 정제\", desc = \"시작 덱에서 기본 카드 1장 제거\", cost = 5 },\n\t{ key = \"relic\", name = \"유물 수집가\", desc = \"런 시작 시 유물 1개 추가\", cost = 6 },\n}\nself.SoulUnlocks = {}\nself.SoulPoints = self.SoulPoints or 0\nlocal uiTries = 0\nlocal uiInit = 0\nuiInit = _TimerService:SetTimerRepeat(function()\n\tuiTries = uiTries + 1\n\tif _EntityService:GetEntityByPath(\"/ui/DeckUIGroup\") ~= nil then\n\t\tself:ActivateUIGroups()\n\t\t-- MainMenu는 한동안 비활성화: 시작 시 바로 로비로 진입.\n\t\t-- 추후 싱글/멀티/종료 선택 메뉴가 필요하면 self:ShowMainMenu()로 되돌린다(메서드·UI 유지됨).\n\t\tself:ShowLobby()\n\t\t_TimerService:ClearTimer(uiInit)\n\telseif uiTries > 80 then\n\t\t_TimerService:ClearTimer(uiInit)\n\tend\nend, 0.1)\nlocal lp = _UserService.LocalPlayer\nif lp ~= nil then\n\tself:ReqLoadAscension(lp.PlayerComponent.UserId)\n\tself:ReqLoadSouls(lp.PlayerComponent.UserId)\nend\n_InputService:ConnectEvent(KeyDownEvent, function(e)\n\tif e.key == KeyboardKey.LeftControl then\n\t\tself.DebugCtrlDown = true\n\t\tlocal lp2 = _UserService.LocalPlayer\n\t\tif lp2 ~= nil and lp2.CurrentMapName == \"lobby\" and self.RunActive ~= true then\n\t\t\tself:PlayerAttackMotion()\n\t\tend\n\telseif e.key == KeyboardKey.LeftShift or e.key == KeyboardKey.RightShift then\n\t\tself.DebugShiftDown = true\n\telseif e.key == KeyboardKey.C then\n\t\tif self.DebugCtrlDown == true and self.DebugShiftDown == true then\n\t\t\tself:OpenDebugCardPicker()\n\t\tend\n\telseif e.key == KeyboardKey.E then\n\t\tif self.DebugCtrlDown == true and self.DebugShiftDown == true then\n\t\t\tself:CheatFillEnergy()\n\t\tend\n\tend\nend)\n_InputService:ConnectEvent(KeyUpEvent, function(e)\n\tif e.key == KeyboardKey.LeftControl then\n\t\tself.DebugCtrlDown = false\n\telseif e.key == KeyboardKey.LeftShift or e.key == KeyboardKey.RightShift then\n\t\tself.DebugShiftDown = false\n\tend\nend)", + "Code": "self.Cards = {\n\tStrike = { name = \"타격\", cost = 1, desc = \"피해 6\", kind = \"Attack\", damage = 6, class = \"warrior\", rarity = \"normal\", fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tBash = { name = \"강타\", cost = 2, desc = \"피해 8, 취약 2\", kind = \"Attack\", damage = 8, vuln = 2, class = \"warrior\", rarity = \"normal\", fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tDefend = { name = \"수비\", cost = 1, desc = \"방어도 5\", kind = \"Skill\", block = 5, class = \"warrior\", rarity = \"normal\", image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tAnger = { name = \"분노\", cost = 0, desc = \"피해 6\", kind = \"Attack\", damage = 6, class = \"warrior\", rarity = \"normal\", fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tMoltenFist = { name = \"녹아내리는 주먹\", cost = 1, desc = \"피해 10, 취약 2. 소멸.\", kind = \"Attack\", damage = 10, vuln = 2, class = \"warrior\", rarity = \"normal\", exhaust = true, fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tBodySlam = { name = \"몸통 박치기\", cost = 1, desc = \"현재 방어도만큼 피해를 줍니다.\", kind = \"Attack\", damageFromCurrentBlock = 1, class = \"warrior\", rarity = \"normal\", fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tHeadbutt = { name = \"박치기\", cost = 1, desc = \"피해 9, 카드 1장 뽑기\", kind = \"Attack\", damage = 9, class = \"warrior\", rarity = \"normal\", draw = 1, fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tSwordBoomerang = { name = \"부메랑 칼날\", cost = 1, desc = \"무작위 적에게 피해 3 x 3회\", kind = \"Attack\", damage = 3, class = \"warrior\", rarity = \"normal\", hits = 3, randomTargetEachHit = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tSetupStrike = { name = \"사전 타격\", cost = 1, desc = \"피해 7, 힘 +2\", kind = \"Attack\", damage = 7, strength = 2, class = \"warrior\", rarity = \"normal\", fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tTwinStrike = { name = \"이중 타격\", cost = 1, desc = \"피해 5 x 2회\", kind = \"Attack\", damage = 5, class = \"warrior\", rarity = \"normal\", hits = 2, fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tBreakthrough = { name = \"정면 돌파\", cost = 1, desc = \"모든 적에게 피해 9\", kind = \"Attack\", damage = 9, class = \"warrior\", rarity = \"normal\", aoe = true, fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tThunderclap = { name = \"천둥\", cost = 1, desc = \"모든 적에게 피해 4, 취약 1\", kind = \"Attack\", damage = 4, vuln = 1, class = \"warrior\", rarity = \"normal\", affectsAllEnemies = true, aoe = true, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"115e309771604743853abad2d8d186bc\" },\n\tIronWave = { name = \"철의 파동\", cost = 1, desc = \"피해 5, 방어도 5\", kind = \"Attack\", damage = 5, block = 5, class = \"warrior\", rarity = \"normal\", fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tPommelStrike = { name = \"폼멜 타격\", cost = 1, desc = \"피해 9, 카드 1장 뽑기\", kind = \"Attack\", damage = 9, class = \"warrior\", rarity = \"normal\", draw = 1, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tPerfectedStrike = { name = \"완벽한 타격\", cost = 2, desc = \"피해 6. 보유한 이름에 \\\"타격\\\"이 포함된 카드마다 피해 +2\", kind = \"Attack\", damage = 6, damageNameMatch = \"타격\", damagePerOwnedNameMatch = 2, class = \"warrior\", rarity = \"normal\", fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tCinder = { name = \"잿불\", cost = 2, desc = \"피해 18. 소멸.\", kind = \"Attack\", damage = 18, class = \"warrior\", rarity = \"normal\", exhaust = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tBloodletting = { name = \"사혈\", cost = 0, desc = \"에너지 +2\", kind = \"Skill\", class = \"warrior\", rarity = \"normal\", gainEnergy = 2, image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tTremble = { name = \"떨림\", cost = 1, desc = \"취약 3. 소멸.\", kind = \"Skill\", vuln = 3, class = \"warrior\", rarity = \"normal\", exhaust = true, image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tArmaments = { name = \"전투장비\", cost = 1, desc = \"방어도 5, 카드 1장 뽑기\", kind = \"Skill\", block = 5, class = \"warrior\", rarity = \"normal\", draw = 1, image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tTrueGrit = { name = \"진정한 끈기\", cost = 1, desc = \"방어도 7, 카드 1장 버리기\", kind = \"Skill\", block = 7, class = \"warrior\", rarity = \"normal\", discard = 1, image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tHavoc = { name = \"파괴\", cost = 1, desc = \"다음 스킬의 비용이 0\", kind = \"Skill\", class = \"warrior\", rarity = \"normal\", nextSkillCostZero = true, image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tShrugItOff = { name = \"흘려보내기\", cost = 1, desc = \"방어도 8, 카드 1장 뽑기\", kind = \"Skill\", block = 8, class = \"warrior\", rarity = \"normal\", draw = 1, image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tBloodWall = { name = \"피의 벽\", cost = 2, desc = \"방어도 16\", kind = \"Skill\", block = 16, class = \"warrior\", rarity = \"normal\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tWhirlwind = { name = \"소용돌이\", cost = 0, desc = \"모든 에너지를 사용해 에너지당 모든 적에게 피해 5\", kind = \"Attack\", damage = 0, class = \"warrior\", rarity = \"unique\", useAllEnergy = true, xDamagePerEnergy = 5, aoe = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tSpite = { name = \"악의\", cost = 0, desc = \"피해 5 x 2회\", kind = \"Attack\", damage = 5, class = \"warrior\", rarity = \"unique\", hits = 2, fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tBully = { name = \"협박\", cost = 0, desc = \"피해 4. 대상이 약화 상태면 피해 2배\", kind = \"Attack\", damage = 4, class = \"warrior\", rarity = \"unique\", attackDamageVsWeakMultiplier = 2, fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tPillage = { name = \"갈취\", cost = 1, desc = \"피해 6, 카드 2장 뽑기\", kind = \"Attack\", damage = 6, class = \"warrior\", rarity = \"unique\", draw = 2, fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tRampage = { name = \"광란\", cost = 2, desc = \"피해 12. 사용할 때마다 이번 전투에서 비용 1 감소\", kind = \"Attack\", damage = 12, class = \"warrior\", rarity = \"unique\", combatCostReductionOnPlay = 1, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tAshenStrike = { name = \"잿빛 타격\", cost = 1, desc = \"피해 6. 이번 전투에서 뽑은 카드마다 피해 +1\", kind = \"Attack\", damage = 6, damagePerCardDrawnThisCombat = 1, class = \"warrior\", rarity = \"unique\", fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tDismantle = { name = \"해체\", cost = 1, desc = \"피해 8 x 2회\", kind = \"Attack\", damage = 8, class = \"warrior\", rarity = \"unique\", hits = 2, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"115e309771604743853abad2d8d186bc\" },\n\tHemokinesis = { name = \"혈류\", cost = 1, desc = \"피해 15\", kind = \"Attack\", damage = 15, class = \"warrior\", rarity = \"unique\", fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tFightMe = { name = \"덤벼라!\", cost = 2, desc = \"피해 5 x 2회, 힘 +3\", kind = \"Attack\", damage = 5, strength = 3, class = \"warrior\", rarity = \"unique\", hits = 2, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tUnrelenting = { name = \"무자비\", cost = 2, desc = \"피해 14, 에너지 +1\", kind = \"Attack\", damage = 14, class = \"warrior\", rarity = \"unique\", gainEnergy = 1, fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tUppercut = { name = \"어퍼컷\", cost = 2, desc = \"피해 12, 약화 1, 취약 1\", kind = \"Attack\", damage = 12, weak = 1, vuln = 1, class = \"warrior\", rarity = \"unique\", fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tBludgeon = { name = \"몽둥이질\", cost = 3, desc = \"피해 32\", kind = \"Attack\", damage = 32, class = \"warrior\", rarity = \"unique\", fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tHowlFromBeyond = { name = \"저편의 울음소리\", cost = 3, desc = \"모든 적에게 피해 16. 소멸.\", kind = \"Attack\", damage = 16, class = \"warrior\", rarity = \"unique\", exhaust = true, aoe = true, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tStomp = { name = \"짓밟기\", cost = 3, desc = \"모든 적에게 피해 12. 이번 턴 사용한 공격 카드마다 피해 +2\", kind = \"Attack\", damage = 12, damagePerAttackPlayedThisTurn = 2, class = \"warrior\", rarity = \"unique\", aoe = true, fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tRage = { name = \"격노\", cost = 0, desc = \"방어도 5, 카드 1장 뽑기\", kind = \"Skill\", block = 5, class = \"warrior\", rarity = \"unique\", draw = 1, image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tBattleTrance = { name = \"전투 최면\", cost = 0, desc = \"카드 3장 뽑기. 이번 턴 더 뽑을 수 없음\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", draw = 3, drawDisabledThisTurn = true, image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tColossus = { name = \"거상\", cost = 1, desc = \"방어도 5, 무형 1\", kind = \"Skill\", intangible = 1, block = 5, class = \"warrior\", rarity = \"unique\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tSecondWind = { name = \"기사회생\", cost = 1, desc = \"손의 공격이 아닌 모든 카드를 소멸시키고, 소멸시킨 카드마다 방어도 5\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", exhaustHandNonAttack = true, blockPerExhaustedCard = 5, image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tTaunt = { name = \"도발\", cost = 1, desc = \"방어도 7, 취약 1\", kind = \"Skill\", block = 7, vuln = 1, class = \"warrior\", rarity = \"unique\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tBurningPact = { name = \"불타는 조약\", cost = 1, desc = \"카드 1장 버리고 카드 3장 뽑기\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", draw = 3, discard = 1, image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tEvilEye = { name = \"악마의 눈\", cost = 1, desc = \"방어도 16\", kind = \"Skill\", block = 16, class = \"warrior\", rarity = \"unique\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tForgottenRitual = { name = \"잊힌 의식\", cost = 1, desc = \"에너지 +2. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", gainEnergy = 2, exhaust = true, image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tDrumOfBattle = { name = \"전투의 북소리\", cost = 1, desc = \"카드 2장 뽑기, 에너지 +1. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", draw = 2, gainEnergy = 1, exhaust = true, image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tDominate = { name = \"제압\", cost = 1, desc = \"취약 2, 힘 +2. 소멸.\", kind = \"Skill\", strength = 2, vuln = 2, class = \"warrior\", rarity = \"unique\", exhaust = true, image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tInfernalBlade = { name = \"지옥검\", cost = 1, desc = \"무작위 공격 카드 1장을 손으로 가져옵니다. 이번 턴 동안 그 카드를 비용 없이 사용할 수 있습니다. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", addRandomCardCount = 1, addRandomCardKind = \"Attack\", addRandomCardSameClass = true, addedCardsCostZeroThisTurn = true, exhaust = true, image = \"115e309771604743853abad2d8d186bc\" },\n\tExpectAFight = { name = \"싸움 준비\", cost = 1, desc = \"이번 턴 스킬 비용 1 감소\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", skillCostReductionThisTurn = 1, image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tFlameBarrier = { name = \"화염 장벽\", cost = 2, desc = \"방어도 12, 가시 4\", kind = \"Skill\", block = 12, thorns = 4, class = \"warrior\", rarity = \"unique\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tStoneArmor = { name = \"돌 갑옷\", cost = 1, desc = \"매턴 방어도 +4\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 4, class = \"warrior\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tFeelNoPain = { name = \"무감각\", cost = 1, desc = \"매턴 방어도 +3\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 3, class = \"warrior\", rarity = \"unique\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tInflame = { name = \"발화\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"warrior\", rarity = \"unique\", image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tInferno = { name = \"불바다\", cost = 1, desc = \"매턴 모든 적에게 피해 6\", kind = \"Power\", powerEffect = \"damagePerTurn\", value = 6, class = \"warrior\", rarity = \"unique\", image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tJuggling = { name = \"저글링\", cost = 1, desc = \"카드를 사용할 때마다 무작위 적에게 피해 3\", kind = \"Power\", cardPlayedRandomDamage = 3, class = \"warrior\", rarity = \"unique\", image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tRupture = { name = \"파열\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"warrior\", rarity = \"unique\", image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tVicious = { name = \"포악함\", cost = 1, desc = \"턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", class = \"warrior\", rarity = \"unique\", turnStartDraw = 1, image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tStampede = { name = \"쇄도\", cost = 2, desc = \"카드를 사용할 때마다 무작위 적에게 피해 8\", kind = \"Power\", cardPlayedRandomDamage = 8, class = \"warrior\", rarity = \"unique\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tPactsEnd = { name = \"조약의 끝\", cost = 0, desc = \"뽑을 카드 더미가 비었을 때 모든 적에게 피해 17\", kind = \"Attack\", damage = 17, class = \"warrior\", rarity = \"legend\", playableWhenDrawPileEmpty = true, aoe = true, fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tThrash = { name = \"난타\", cost = 1, desc = \"피해 4 x 2회. 이번 턴 사용한 공격 카드마다 피해 +2\", kind = \"Attack\", damage = 4, damagePerAttackPlayedThisTurn = 2, class = \"warrior\", rarity = \"legend\", hits = 2, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tConflagration = { name = \"대화재\", cost = 1, desc = \"모든 적에게 피해 2 x 4회\", kind = \"Attack\", damage = 2, class = \"warrior\", rarity = \"legend\", hits = 4, aoe = true, fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tFeed = { name = \"포식\", cost = 1, desc = \"피해를 10 줍니다. 치명타라면, 최대 체력이 3 증가합니다. 소멸.\", kind = \"Attack\", damage = 10, maxHpOnKill = 3, class = \"warrior\", rarity = \"legend\", exhaust = true, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tTearAsunder = { name = \"갈가리 찢기\", cost = 2, desc = \"피해 5 x 3회\", kind = \"Attack\", damage = 5, class = \"warrior\", rarity = \"legend\", hits = 3, fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tFiendFire = { name = \"지옥불\", cost = 2, desc = \"손의 다른 카드마다 피해 +7 후 모두 버리기. 소멸.\", kind = \"Attack\", damage = 0, damagePerOtherHandCard = 7, class = \"warrior\", rarity = \"legend\", discardAll = true, exhaust = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tMangle = { name = \"난도질\", cost = 3, desc = \"피해 15. 이번 턴 적 힘 -10\", kind = \"Attack\", damage = 15, class = \"warrior\", rarity = \"legend\", enemyStrengthLossThisTurn = 10, fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tBrand = { name = \"낙인\", cost = 0, desc = \"카드 1장 버리기, 힘 +1\", kind = \"Skill\", strength = 1, class = \"warrior\", rarity = \"legend\", discard = 1, image = \"115e309771604743853abad2d8d186bc\" },\n\tCascade = { name = \"연쇄\", cost = 0, desc = \"뽑을 카드 더미 맨 위의 카드 X장을 사용합니다. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", playTopDrawPileCountPerEnergy = 1, useAllEnergy = true, exhaust = true, image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tPrimalForce = { name = \"원시의 힘\", cost = 0, desc = \"이번 턴 손의 카드 비용이 0\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", handCostZeroThisTurn = true, image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tOffering = { name = \"제물\", cost = 0, desc = \"에너지 +2, 카드 3장 뽑기. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", draw = 3, gainEnergy = 2, exhaust = true, image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tOneTwoPunch = { name = \"원투 펀치\", cost = 1, desc = \"다음 스킬을 1회 추가 발동\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", nextSkillRepeatCount = 1, image = \"251b6e12329048429490049a4f3cf564\" },\n\tStoke = { name = \"화력 증폭\", cost = 1, desc = \"손의 모든 카드를 소멸시키고, 소멸시킨 카드 수만큼 뽑습니다. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", exhaustHandAll = true, drawPerExhausted = 1, exhaust = true, image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tImpervious = { name = \"무적\", cost = 2, desc = \"방어도 30. 소멸.\", kind = \"Skill\", block = 30, class = \"warrior\", rarity = \"legend\", exhaust = true, image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tNotYet = { name = \"불굴\", cost = 2, desc = \"HP 10 회복. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", heal = 10, exhaust = true, image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tAggression = { name = \"공격성\", cost = 1, desc = \"턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", class = \"warrior\", rarity = \"legend\", turnStartDraw = 1, image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tCruelty = { name = \"악랄함\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"warrior\", rarity = \"legend\", image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tCrimsonMantle = { name = \"핏빛 망토\", cost = 1, desc = \"매턴 방어도 +8\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 8, class = \"warrior\", rarity = \"legend\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tPyre = { name = \"불의 심장\", cost = 2, desc = \"매턴 에너지 +1\", kind = \"Power\", powerEffect = \"energyPerTurn\", value = 1, class = \"warrior\", rarity = \"legend\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tDarkEmbrace = { name = \"어둠의 포옹\", cost = 2, desc = \"카드가 소멸될 때마다 카드 1장 뽑기\", kind = \"Power\", drawOnExhaust = 1, class = \"warrior\", rarity = \"legend\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tUnmovable = { name = \"요지부동\", cost = 2, desc = \"이번 전투 동안 방어도 획득량 2배\", kind = \"Power\", blockGainMultiplier = 2, powerEffect = \"blockPerTurn\", value = 0, class = \"warrior\", rarity = \"legend\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tJuggernaut = { name = \"절대적인 힘\", cost = 2, desc = \"카드를 사용할 때마다 무작위 적에게 피해 5\", kind = \"Power\", cardPlayedRandomDamage = 5, class = \"warrior\", rarity = \"legend\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tHellraiser = { name = \"지옥검무\", cost = 2, desc = \"이름에 \\\"타격\\\"이 포함된 카드를 뽑을 때마다, 무작위 적에게 사용합니다.\", kind = \"Power\", drawNameMatchAutoPlay = \"타격\", class = \"warrior\", rarity = \"legend\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tBarricade = { name = \"바리케이드\", cost = 3, desc = \"내 턴 시작 시 방어도가 사라지지 않습니다.\", kind = \"Power\", powerEffect = \"keepBlock\", value = 0, class = \"warrior\", rarity = \"legend\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tDemonForm = { name = \"악마의 형상\", cost = 3, desc = \"매턴 힘 +2\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 2, class = \"warrior\", rarity = \"legend\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tSlashBlast = { name = \"슬래시 블러스트\", cost = 1, desc = \"모든 적에게 피해 7. 콤보당 피해 +1\", kind = \"Attack\", damage = 7, damagePerCombo = 1, class = \"warrior\", rarity = \"normal\", aoe = true, image = \"863812c5c2f84132ac7465b50ec2283e\" },\n\tWarriorLeap = { name = \"워리어 리프\", cost = 0, desc = \"방어도 4. 다음 턴 방어도 4. 소멸.\", kind = \"Skill\", block = 4, class = \"warrior\", rarity = \"normal\", nextTurnBlock = 4, exhaust = true, image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tLeapAttack = { name = \"리프 어택\", cost = 1, desc = \"모든 적에게 피해 3 x 2회. 방어도 5\", kind = \"Attack\", damage = 3, block = 5, class = \"warrior\", rarity = \"normal\", hits = 2, aoe = true, image = \"997fa6999aa04dbb97a1dd99025fa2ba\" },\n\tIronBody = { name = \"아이언 바디\", cost = 1, desc = \"매턴 방어도 3. 가시 2\", kind = \"Power\", thorns = 2, powerEffect = \"blockPerTurn\", value = 3, class = \"warrior\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tWarriorMastery = { name = \"워리어 마스터리\", cost = 1, desc = \"힘 1. 민첩 1\", kind = \"Power\", strength = 1, dex = 1, class = \"warrior\", rarity = \"unique\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tBrandish = { name = \"브랜디쉬\", cost = 1, desc = \"피해 4 x 2회. 콤보당 피해 +1. 콤보 1 획득\", kind = \"Attack\", damage = 4, damagePerCombo = 1, class = \"fighter\", rarity = \"normal\", hits = 2, comboGain = 1, image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tFlashSlash = { name = \"플래시 슬래시\", cost = 1, desc = \"모든 적에게 피해 2 x 5회. 방어도 4. 콤보 2 획득. 소멸.\", kind = \"Attack\", damage = 2, block = 4, class = \"fighter\", rarity = \"unique\", hits = 5, comboGain = 2, exhaust = true, aoe = true, image = \"291b2298db88476f8ae3c6c78f53c9b7\" },\n\tComboAttack = { name = \"콤보 어택\", cost = 1, desc = \"공격 카드를 사용할 때마다 콤보 1 획득. 최대 5\", kind = \"Power\", comboOnAttack = 1, comboMax = 5, class = \"fighter\", rarity = \"unique\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tSpiritBlade = { name = \"스피릿 블레이드\", cost = 2, desc = \"힘 2. 가시 5\", kind = \"Power\", strength = 2, thorns = 5, class = \"fighter\", rarity = \"unique\", image = \"863812c5c2f84132ac7465b50ec2283e\" },\n\tWeaponMastery = { name = \"웨폰 마스터리\", cost = 1, desc = \"힘 1. 공격 카드를 사용할 때마다 대상에게 피해 1\", kind = \"Power\", attackPlayedDamage = 1, strength = 1, class = \"fighter\", rarity = \"unique\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tWeaponAcceleration = { name = \"웨폰 액셀레이션\", cost = 1, desc = \"콤보 2 획득. 턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", class = \"fighter\", rarity = \"unique\", comboGain = 2, turnStartDraw = 1, image = \"291b2298db88476f8ae3c6c78f53c9b7\" },\n\tFinalAttack = { name = \"파이널 어택\", cost = 1, desc = \"공격 카드를 사용할 때마다 대상에게 피해 3\", kind = \"Power\", attackPlayedDamage = 3, class = \"fighter\", rarity = \"legend\", image = \"997fa6999aa04dbb97a1dd99025fa2ba\" },\n\tFighterPhysicalTraining = { name = \"피지컬 트레이닝\", cost = 2, desc = \"힘 1. 민첩 1. 매턴 방어도 2\", kind = \"Power\", strength = 1, dex = 1, powerEffect = \"blockPerTurn\", value = 2, class = \"fighter\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tBraveSlash = { name = \"브레이브 슬래시\", cost = 2, desc = \"피해 5 x 3회. 콤보당 피해 +1. 콤보 1 획득\", kind = \"Attack\", damage = 5, damagePerCombo = 1, class = \"crusader\", rarity = \"normal\", hits = 3, comboGain = 1, image = \"863812c5c2f84132ac7465b50ec2283e\" },\n\tAuraBlade = { name = \"오라 블레이드\", cost = 2, desc = \"모든 적에게 방어도를 무시하고 피해 4 x 4회. 소멸.\", kind = \"Attack\", damage = 4, class = \"crusader\", rarity = \"legend\", hits = 4, pierce = true, exhaust = true, aoe = true, image = \"291b2298db88476f8ae3c6c78f53c9b7\" },\n\tRush = { name = \"돌진\", cost = 1, desc = \"모든 적에게 피해 8. 방어도 7. 콤보 1 획득\", kind = \"Attack\", damage = 8, block = 7, class = \"crusader\", rarity = \"unique\", comboGain = 1, aoe = true, image = \"997fa6999aa04dbb97a1dd99025fa2ba\" },\n\tScarringSword = { name = \"스카링 소드\", cost = 2, desc = \"공격 카드로 피해를 주면 대상에게 약화 1\", kind = \"Power\", attackWeak = 1, class = \"crusader\", rarity = \"legend\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tComboSynergy = { name = \"콤보 시너지\", cost = 2, desc = \"공격마다 콤보 1 획득. 모든 공격이 콤보당 피해 +1. 최대 5\", kind = \"Power\", attackDamagePerCombo = 1, comboOnAttack = 1, comboMax = 5, class = \"crusader\", rarity = \"legend\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tSelfRecovery = { name = \"셀프 리커버리\", cost = 1, desc = \"턴 시작 시 HP 3 회복\", kind = \"Power\", powerEffect = \"healPerTurn\", value = 3, class = \"crusader\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tChanceAttack = { name = \"찬스 어택\", cost = 1, desc = \"약화 상태인 적에게 주는 공격 피해 1.5배\", kind = \"Power\", class = \"crusader\", rarity = \"unique\", attackDamageVsWeakMultiplier = 1.5, image = \"291b2298db88476f8ae3c6c78f53c9b7\" },\n\tEndure = { name = \"인듀어\", cost = 1, desc = \"약화와 취약을 제거합니다. 매턴 방어도 4\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 4, class = \"crusader\", rarity = \"unique\", removePlayerDebuffs = true, image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tDivineSwing = { name = \"디바인 스윙\", cost = 2, desc = \"모든 적에게 피해 3 x 4회, 약화 1. 홀리 포스.\", kind = \"Attack\", damage = 3, weak = 1, class = \"page\", rarity = \"normal\", hits = 4, holyForce = true, affectsAllEnemies = true, aoe = true, image = \"863812c5c2f84132ac7465b50ec2283e\" },\n\tHolyCharge = { name = \"홀리 차지\", cost = 1, desc = \"홀리 포스 카드를 사용하면 홀리 차지 1 획득. 최대 3. 받는 피해 10% 감소\", kind = \"Power\", holyChargeOnHolyForce = 1, holyChargeMax = 3, damageTakenReduction = 0.1, class = \"page\", rarity = \"unique\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tPageOrder = { name = \"페이지 오더\", cost = 1, desc = \"모든 적에게 피해 3 x 2회, 약화 1. 카드 1장 뽑기\", kind = \"Attack\", damage = 3, weak = 1, class = \"page\", rarity = \"normal\", hits = 2, draw = 1, affectsAllEnemies = true, aoe = true, image = \"291b2298db88476f8ae3c6c78f53c9b7\" },\n\tPageWeaponAcceleration = { name = \"웨폰 액셀레이션\", cost = 1, desc = \"힘 1. 턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", strength = 1, class = \"page\", rarity = \"unique\", turnStartDraw = 1, image = \"291b2298db88476f8ae3c6c78f53c9b7\" },\n\tPageStance = { name = \"스탠스\", cost = 1, desc = \"매턴 방어도 4\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 4, class = \"page\", rarity = \"normal\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tPageWeaponMastery = { name = \"웨폰 마스터리\", cost = 1, desc = \"카드를 사용할 때마다 방어도 1\", kind = \"Power\", cardPlayedBlock = 1, class = \"page\", rarity = \"unique\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tPageFinalAttack = { name = \"파이널 어택\", cost = 1, desc = \"공격 카드를 사용할 때마다 대상에게 피해 2\", kind = \"Power\", attackPlayedDamage = 2, class = \"page\", rarity = \"legend\", image = \"997fa6999aa04dbb97a1dd99025fa2ba\" },\n\tPagePhysicalTraining = { name = \"피지컬 트레이닝\", cost = 2, desc = \"힘 1. 민첩 1. 매턴 방어도 2\", kind = \"Power\", strength = 1, dex = 1, powerEffect = \"blockPerTurn\", value = 2, class = \"page\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tDivineCharge = { name = \"디바인 차지\", cost = 2, desc = \"모든 적에게 피해 4 x 4회, 약화 1. 홀리 차지당 피해 +1. 홀리 포스.\", kind = \"Attack\", damage = 4, damagePerHolyCharge = 1, weak = 1, class = \"knight\", rarity = \"unique\", hits = 4, holyForce = true, affectsAllEnemies = true, aoe = true, image = \"863812c5c2f84132ac7465b50ec2283e\" },\n\tRestoration = { name = \"리스토네이션\", cost = 1, desc = \"HP 8 회복. 홀리 차지당 추가로 4 회복한 뒤 모두 소비\", kind = \"Skill\", class = \"knight\", rarity = \"unique\", heal = 8, healPerHolyCharge = 4, holyChargeSpendAll = true, image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tKnightRush = { name = \"돌진\", cost = 1, desc = \"모든 적에게 피해 7. 방어도 4, 홀리 차지당 방어도 +2\", kind = \"Attack\", damage = 7, block = 4, class = \"knight\", rarity = \"normal\", blockPerHolyCharge = 2, aoe = true, image = \"997fa6999aa04dbb97a1dd99025fa2ba\" },\n\tNobleDemand = { name = \"노블 디맨드\", cost = 1, desc = \"모든 적의 방어도를 제거하고 약화 2. 이번 턴 적 전체 힘 -3\", kind = \"Skill\", weak = 2, class = \"knight\", rarity = \"unique\", affectsAllEnemies = true, removeEnemyBlock = true, enemyStrengthLossThisTurn = 3, image = \"291b2298db88476f8ae3c6c78f53c9b7\" },\n\tParashockGuard = { name = \"파라쇼크 가드\", cost = 2, desc = \"힘 1. 가시 3. 카드를 사용할 때마다 방어도 1\", kind = \"Power\", strength = 1, thorns = 3, cardPlayedBlock = 1, class = \"knight\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tCombatOrders = { name = \"컴뱃 오더스\", cost = 2, desc = \"다음 스킬을 1회 추가 발동. 턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", class = \"knight\", rarity = \"legend\", turnStartDraw = 1, nextSkillRepeatCount = 1, image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tKnightShieldMastery = { name = \"실드 마스터리\", cost = 2, desc = \"매턴 방어도 5. 가시 2\", kind = \"Power\", thorns = 2, powerEffect = \"blockPerTurn\", value = 5, class = \"knight\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tAchilles = { name = \"아킬레스\", cost = 2, desc = \"받는 피해 25% 감소\", kind = \"Power\", damageTakenReduction = 0.25, class = \"knight\", rarity = \"legend\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tBlessingArmor = { name = \"블레싱 아머\", cost = 2, desc = \"HP 피해를 받으면 방어도 6. 전투 중 처음 발동할 때 힘 2\", kind = \"Power\", blockOnDamaged = 6, strengthOnDamagedOnce = 2, class = \"knight\", rarity = \"legend\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tEnergyBolt = { name = \"에너지 볼트\", cost = 1, desc = \"피해 6\", kind = \"Attack\", damage = 6, class = \"magician\", rarity = \"normal\", fx = \"1d5877e1120a42d0907f204c959888b1\", image = \"e84880eaf89442128d3af2be5c80a74f\" },\n\tMagicGuard = { name = \"매직 가드\", cost = 1, desc = \"방어도 5\", kind = \"Skill\", block = 5, class = \"magician\", rarity = \"normal\", image = \"01b249c26eb34b8aaab774bf221907a1\" },\n\tMagicClaw = { name = \"매직 클로\", cost = 1, desc = \"피해 3 × 2회\", kind = \"Attack\", damage = 3, class = \"magician\", rarity = \"normal\", hits = 2, fx = \"ba4ac7c8f24845b68b7e689b7effcc93\", image = \"f3fcac2d460041b288cc1973caaaf30f\" },\n\tTeleport = { name = \"텔레포트\", cost = 1, desc = \"방어도 3, 드로 1\", kind = \"Skill\", block = 3, class = \"magician\", rarity = \"normal\", discardAll = true, drawPerDiscarded = 1, image = \"7f70a9dc7e304433bb8121dd9c4df98b\" },\n\tSlow = { name = \"슬로우\", cost = 1, desc = \"약화 2 부여\", kind = \"Skill\", weak = 2, class = \"magician\", rarity = \"normal\", image = \"7224cd3f9b7e497d9dd65f32a50865e4\" },\n\tFireArrow = { name = \"파이어 애로우\", cost = 1, desc = \"피해 8\", kind = \"Attack\", damage = 8, class = \"firepoison\", rarity = \"unique\", fx = \"4a937e208875468eb63d891806fba3cd\", image = \"6fa15fd3a0004b409ea516c11a67e533\" },\n\tPoisonBreath = { name = \"포이즌 브레스\", cost = 1, desc = \"독 4 부여\", kind = \"Skill\", class = \"firepoison\", rarity = \"unique\", poison = 4, image = \"07200f3c74854022baa7ebbefdc4ad8c\" },\n\tElementAmp = { name = \"엘레멘트 앰플\", cost = 1, desc = \"매 턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"firepoison\", rarity = \"legend\", image = \"06865473977849bebe79062dbd608944\" },\n\tThunderBolt = { name = \"썬더 볼트\", cost = 2, desc = \"모든 적에게 피해 6\", kind = \"Attack\", damage = 6, class = \"icelightning\", rarity = \"legend\", aoe = true, fx = \"7d52f5e389bd4d44a30cf7cc54538f8f\", image = \"c6685d33cb2641f09d11cfa2d5cc820c\" },\n\tColdBeam = { name = \"콜드 빔\", cost = 2, desc = \"피해 7, 약화 2\", kind = \"Attack\", damage = 7, weak = 2, class = \"icelightning\", rarity = \"unique\", image = \"e8f7c148c79f497d83014e3361f59f5c\" },\n\tChillingStep = { name = \"칠링 스텝\", cost = 1, desc = \"방어도 8\", kind = \"Skill\", block = 8, class = \"icelightning\", rarity = \"unique\", image = \"bef20873a68a4651a91d74be457c2cfc\" },\n\tHeal = { name = \"힐\", cost = 1, desc = \"HP 10 회복\", kind = \"Skill\", class = \"cleric\", rarity = \"unique\", heal = 10, image = \"8b935b7d7066493cb462834bbe287c74\" },\n\tBless = { name = \"블레스\", cost = 1, desc = \"힘 +1, 방어도 5\", kind = \"Skill\", block = 5, strength = 1, class = \"cleric\", rarity = \"unique\", image = \"607fc5457c1c44a0993a5c2fe3fb0c68\" },\n\tHolyArrow = { name = \"홀리 애로우\", cost = 1, desc = \"피해 8\", kind = \"Attack\", damage = 8, class = \"cleric\", rarity = \"unique\", fx = \"4faa7b78e09643cf86339b8b7cf2abac\", image = \"a80127195bf7471f9545b70e491f4719\" },\n\tWound = { name = \"상처\", cost = 0, desc = \"사용할 수 없다. 손패를 막는 저주.\", kind = \"Status\", class = \"curse\", rarity = \"normal\", unplayable = true, curse = true },\n\tBurn = { name = \"화상\", cost = 0, desc = \"사용 불가. 손패에 있으면 턴 종료 시 피해 2.\", kind = \"Status\", class = \"curse\", rarity = \"normal\", unplayable = true, curse = true, endTurnDamage = 2 },\n\tNeutralize = { name = \"커닝식 견제\", cost = 0, desc = \"피해를 3 줍니다. 약화를 1 부여합니다.\", kind = \"Attack\", damage = 3, weak = 1, class = \"rogue\", rarity = \"normal\", image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tSilentStrike = { name = \"초보 도적의 칼끝\", cost = 1, desc = \"피해를 6 줍니다.\", kind = \"Attack\", damage = 6, class = \"rogue\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tSurvivor = { name = \"골목길 생존술\", cost = 1, desc = \"방어도를 8 얻습니다. 카드를 1장 버립니다.\", kind = \"Skill\", block = 8, class = \"rogue\", rarity = \"normal\", discard = 1, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tSilentDefend = { name = \"낡은 가죽 방패\", cost = 1, desc = \"방어도를 5 얻습니다.\", kind = \"Skill\", block = 5, class = \"rogue\", rarity = \"normal\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tDoubleStab = { name = \"더블 스탭\", cost = 1, desc = \"피해를 4만큼 2번 줍니다.\", kind = \"Attack\", damage = 4, class = \"rogue\", rarity = \"normal\", hits = 2, image = \"92a5020c978c46bdabab910598118b86\" },\n\tLuckySeven = { name = \"럭키 세븐\", cost = 1, desc = \"피해를 3만큼 3번 줍니다.\", kind = \"Attack\", damage = 3, class = \"rogue\", rarity = \"unique\", hits = 3, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHaste = { name = \"헤이스트\", cost = 1, desc = \"카드를 1장 뽑습니다. 에너지를 1 얻습니다.\", kind = \"Skill\", class = \"rogue\", rarity = \"normal\", draw = 1, gainEnergy = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tDarkSight = { name = \"다크 사이트\", cost = 1, desc = \"무형을 1 얻습니다. 소멸.\", kind = \"Skill\", intangible = 1, class = \"rogue\", rarity = \"unique\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tFlashJump = { name = \"플래시 점프\", cost = 0, desc = \"방어도를 4 얻습니다. 카드를 1장 뽑습니다. 소멸.\", kind = \"Skill\", block = 4, class = \"rogue\", rarity = \"normal\", draw = 1, exhaust = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tNimbleBody = { name = \"님블 바디\", cost = 1, desc = \"민첩을 1 얻습니다. 매 턴 방어도를 2 얻습니다.\", kind = \"Power\", dex = 1, powerEffect = \"blockPerTurn\", value = 2, class = \"rogue\", rarity = \"unique\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tSlice = { name = \"짧은 단검질\", cost = 0, desc = \"피해를 6 줍니다.\", kind = \"Attack\", damage = 6, class = \"rogue\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tShiv = { name = \"표창\", cost = 0, desc = \"피해를 4 줍니다. 소멸.\", kind = \"Attack\", damage = 4, class = \"shiv\", rarity = \"normal\", exhaust = true, token = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDaggerSpray = { name = \"단검비\", cost = 1, desc = \"모든 적에게 피해를 4만큼 2번 줍니다.\", kind = \"Attack\", damage = 4, class = \"thief\", rarity = \"normal\", hits = 2, aoe = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDaggerThrow = { name = \"비도 투척\", cost = 1, desc = \"피해를 9 줍니다. 카드를 1장 뽑습니다. 카드를 1장 버립니다.\", kind = \"Attack\", damage = 9, class = \"thief\", rarity = \"normal\", draw = 1, discard = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tPoisonedStab = { name = \"초록 독단검\", cost = 1, desc = \"피해를 6 줍니다. 중독을 3 부여합니다.\", kind = \"Attack\", damage = 6, class = \"rogue\", rarity = \"normal\", poison = 3, image = \"19361e72087946b1888684185b40d935\" },\n\tSuckerPunch = { name = \"골목 기습\", cost = 1, desc = \"피해를 7 줍니다. 약화를 1 부여합니다.\", kind = \"Attack\", damage = 7, weak = 1, class = \"rogue\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tLeadingStrike = { name = \"초보 표창 던지기\", cost = 1, desc = \"피해를 3 줍니다. 표창을 1장 손으로 가져옵니다.\", kind = \"Attack\", damage = 3, class = \"rogue\", rarity = \"normal\", addShiv = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tFollowThrough = { name = \"연달아 찌르기\", cost = 1, desc = \"피해를 7 줍니다. 손에 다른 카드가 5장 이상 있다면, 1번 추가로 적중합니다.\", kind = \"Attack\", damage = 7, otherHandAtLeast = 5, bonusHitsWhenOtherHandAtLeast = 1, class = \"thief\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tFlickFlack = { name = \"커닝 난무\", cost = 1, desc = \"교활. 모든 적에게 피해를 6 줍니다.\", kind = \"Attack\", damage = 6, class = \"thief\", rarity = \"normal\", sly = true, aoe = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tRicochet = { name = \"통통 튀는 표창\", cost = 2, desc = \"교활. 무작위 적에게 피해를 3만큼 4번 줍니다.\", kind = \"Attack\", damage = 3, class = \"assassin\", rarity = \"normal\", hits = 4, randomTargetEachHit = true, sly = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tPrepared = { name = \"비장의 패\", cost = 1, desc = \"카드를 1장 버리고, 이번 턴에 준 피해의 절반만큼 방어를 얻습니다.\", kind = \"Skill\", blockPerDamageDealtThisTurn = 0.5, class = \"thief\", rarity = \"normal\", discard = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tAnticipate = { name = \"럭키 예감\", cost = 0, desc = \"이번 턴 동안 민첩을 2 얻습니다.\", kind = \"Skill\", endTurnDexLoss = 2, dex = 2, class = \"rogue\", rarity = \"normal\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tDeflect = { name = \"단검 쳐내기\", cost = 0, desc = \"방어도를 4 얻습니다.\", kind = \"Skill\", block = 4, class = \"rogue\", rarity = \"normal\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tBladeDance = { name = \"표창 별무리\", cost = 1, desc = \"표창을 3장 손으로 가져옵니다. 소멸.\", kind = \"Skill\", class = \"assassin\", rarity = \"normal\", addShiv = 3, exhaust = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBackflip = { name = \"커닝 곡예\", cost = 1, desc = \"방어도를 5 얻습니다. 카드를 2장 뽑습니다.\", kind = \"Skill\", block = 5, class = \"rogue\", rarity = \"normal\", draw = 2, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tDodgeAndRoll = { name = \"골목 구르기\", cost = 1, desc = \"방어도를 4 얻습니다. 다음 턴에, 방어도를 4 얻습니다\", kind = \"Skill\", block = 4, class = \"rogue\", rarity = \"normal\", nextTurnBlock = 4, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tPiercingWail = { name = \"골목의 살기\", cost = 1, desc = \"이번 턴 동안 모든 적이 힘을 6 잃습니다. 소멸.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", affectsAllEnemies = true, enemyStrengthLossThisTurn = 6, exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tCloakAndDagger = { name = \"망토 속 별\", cost = 1, desc = \"방어도를 6 얻습니다. 표창을 1장 손으로 가져옵니다.\", kind = \"Skill\", block = 6, class = \"assassin\", rarity = \"normal\", addShiv = 1, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tDeadlyPoison = { name = \"맹독 조제\", cost = 1, desc = \"중독을 5 부여합니다.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", poison = 5, image = \"19361e72087946b1888684185b40d935\" },\n\tSnakebite = { name = \"독니 단검\", cost = 2, desc = \"보존. 중독을 7 부여합니다.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", poison = 7, retain = true, image = \"19361e72087946b1888684185b40d935\" },\n\tUntouchable = { name = \"연막 속 숨기\", cost = 2, desc = \"교활. 방어도를 6 얻습니다.\", kind = \"Skill\", block = 6, class = \"rogue\", rarity = \"normal\", sly = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tSkewer = { name = \"꿰뚫는 표창\", cost = 2, desc = \"피해를 8만큼 X번 줍니다.\", kind = \"Attack\", class = \"assassin\", rarity = \"unique\", useAllEnergy = true, xDamagePerEnergy = 8, image = \"92a5020c978c46bdabab910598118b86\" },\n\tBackstab = { name = \"그림자 등찌르기\", cost = 0, desc = \"선천성. 피해를 10 줍니다. 소멸.\", kind = \"Attack\", damage = 10, class = \"rogue\", rarity = \"unique\", innate = true, exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tPreciseCut = { name = \"급소 절개\", cost = 0, desc = \"피해를 13 줍니다. 손에 있는 다른 카드 1장당 피해량이 2 감소합니다.\", kind = \"Attack\", damage = 13, damagePerOtherHandCard = -2, class = \"thief\", rarity = \"unique\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tFinisher = { name = \"마지막 칼끝\", cost = 1, desc = \"이번 턴에 사용한 공격 카드 1장당 피해를 6 줍니다.\", kind = \"Attack\", damage = 0, damagePerAttackPlayedThisTurn = 6, class = \"thief\", rarity = \"unique\", image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tMementoMori = { name = \"사신의 장부\", cost = 1, desc = \"피해를 9 줍니다. 이번 턴에 버린 카드 1장당 피해량이 4 증가합니다.\", kind = \"Attack\", damage = 9, damagePerDiscardedThisTurn = 4, class = \"thief\", rarity = \"unique\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tStrangle = { name = \"그림자 올가미\", cost = 1, desc = \"피해를 8 줍니다.\", kind = \"Attack\", damage = 8, class = \"thief\", rarity = \"unique\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tFlechettes = { name = \"표창 셈법\", cost = 1, desc = \"손에 있는 스킬 카드 1장당 피해를 5 줍니다.\", kind = \"Attack\", damage = 0, damagePerSkillInHand = 5, class = \"assassin\", rarity = \"unique\", image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tPounce = { name = \"어둠을 가르는 도약\", cost = 2, desc = \"피해를 12 줍니다. 다음에 사용하는 스킬 카드의 비용이 0 이 됩니다.\", kind = \"Attack\", damage = 12, class = \"assassin\", rarity = \"unique\", nextSkillCostZero = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tDash = { name = \"뒷골목 돌파\", cost = 2, desc = \"방어도를 10 얻습니다. 피해를 10 줍니다.\", kind = \"Attack\", damage = 10, block = 10, class = \"thief\", rarity = \"unique\", image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tPredator = { name = \"표창 끝의 추격\", cost = 2, desc = \"피해를 15 줍니다. 다음 턴에, 카드를 2장 뽑습니다.\", kind = \"Attack\", damage = 15, class = \"assassin\", rarity = \"unique\", nextTurnDraw = 2, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tPinpoint = { name = \"한 점 겨냥\", cost = 3, desc = \"피해를 15 줍니다. 이번 턴에 스킬을 사용할 때마다 비용이 1 감소합니다.\", kind = \"Attack\", damage = 15, class = \"assassin\", rarity = \"unique\", skillCostReductionThisTurn = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tCalculatedGamble = { name = \"메소 건 승부\", cost = 0, desc = \"손에 있는 모든 카드를 버린 뒤, 버린 카드의 수만큼 카드를 뽑습니다. 소멸.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", discardAll = true, drawPerDiscarded = 1, exhaust = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tExpose = { name = \"약점 들추기\", cost = 0, desc = \"대상 적의 모든 인공물과 방어도를 제거합니다. 취약을 2 부여합니다. 소멸.\", kind = \"Skill\", vuln = 2, class = \"thief\", rarity = \"unique\", removeEnemyBlock = true, removeEnemyArtifact = true, exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tHiddenDaggers = { name = \"숨겨둔 표창\", cost = 0, desc = \"카드를 2장 버립니다. 표창을 2장 손으로 가져옵니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"unique\", discard = 2, addShiv = 2, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tEscapePlan = { name = \"비상용 연막탄\", cost = 0, desc = \"카드를 1장 뽑습니다. 뽑은 카드가 스킬 카드라면, 방어도를 3 얻습니다.\", kind = \"Skill\", class = \"rogue\", rarity = \"unique\", draw = 1, drawSkillBlock = 3, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tAcrobatics = { name = \"지붕 위 곡예\", cost = 1, desc = \"카드를 3장 뽑습니다. 카드를 1장 버립니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", draw = 3, discard = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tHandTrick = { name = \"재빠른 손놀림\", cost = 1, desc = \"방어도를 7 얻습니다. 이번 턴 동안 손에 있는 스킬 카드 1장에 교활을 추가합니다.\", kind = \"Skill\", block = 7, class = \"thief\", rarity = \"unique\", turnHandSlyCount = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tExpertise = { name = \"노련한 단검술\", cost = 1, desc = \"손에 있는 카드가 6장이 될 때까지 카드를 뽑습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", drawUntilHandSize = 6, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tBubbleBubble = { name = \"독액 농축\", cost = 1, desc = \"적이 중독을 보유하고 있다면, 중독을 9 부여합니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", poison = 9, poisonIfTargetPoisoned = true, image = \"19361e72087946b1888684185b40d935\" },\n\tBlur = { name = \"흐린 잔영\", cost = 1, desc = \"방어도를 5 얻습니다. 다음 턴 시작 시 방어도가 사라지지 않습니다.\", kind = \"Skill\", block = 5, class = \"thief\", rarity = \"unique\", nextTurnKeepBlock = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tLegSweep = { name = \"발목 베기\", cost = 2, desc = \"약화를 2 부여합니다. 방어도를 11 얻습니다.\", kind = \"Skill\", block = 11, weak = 2, class = \"thief\", rarity = \"unique\", image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tUpMySleeve = { name = \"소매 속 표창\", cost = 2, desc = \"표창을 3장 손으로 가져옵니다. 이 카드의 비용이 1 감소합니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"unique\", addShiv = 3, combatCostReductionOnPlay = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBouncingFlask = { name = \"통통 독병\", cost = 2, desc = \"무작위 적에게 중독을 3만큼 3번 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"unique\", poison = 3, poisonHits = 3, poisonRandomTargets = true, image = \"19361e72087946b1888684185b40d935\" },\n\tReflex = { name = \"찰나의 반응\", cost = 3, desc = \"교활. 카드를 2장 뽑습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", draw = 2, sly = true, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tHaze = { name = \"보랏빛 독연기\", cost = 3, desc = \"교활. 모든 적에게 중독을 4 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"unique\", poison = 4, sly = true, image = \"19361e72087946b1888684185b40d935\" },\n\tTactician = { name = \"골목길 책략\", cost = 3, desc = \"교활. 에너지를 1 얻습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", gainEnergy = 1, sly = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tWellLaidPlans = { name = \"빈틈없는 작전\", cost = 1, desc = \"내 턴 종료 시, 카드를 최대 1장까지 보존합니다.\", kind = \"Power\", powerEffect = \"retainOne\", value = 1, class = \"thief\", rarity = \"unique\", image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tInfiniteBlades = { name = \"끝없는 표창통\", cost = 1, desc = \"내 턴 시작 시, 표창을 1장 손으로 가져옵니다.\", kind = \"Power\", class = \"assassin\", rarity = \"unique\", turnStartShiv = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tFootwork = { name = \"사뿐한 발놀림\", cost = 1, desc = \"민첩을 2 얻습니다.\", kind = \"Power\", dex = 2, class = \"thief\", rarity = \"unique\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tOutbreak = { name = \"독맥 터뜨리기\", cost = 2, desc = \"독이 3번 부여될 때마다 모든 적에게 6 피해를 줍니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"unique\", poisonApplicationBurstEvery = 3, poisonApplicationBurstDamage = 6, image = \"19361e72087946b1888684185b40d935\" },\n\tNoxiousFumes = { name = \"숨막히는 독연기\", cost = 1, desc = \"내 턴 시작 시, 모든 적에게 중독을 2 부여합니다.\", kind = \"Power\", powerEffect = \"poisonPerTurn\", value = 2, class = \"thief\", rarity = \"unique\", poison = 2, image = \"19361e72087946b1888684185b40d935\" },\n\tSpeedster = { name = \"그림자 속도전\", cost = 2, desc = \"내 턴 동안 카드를 뽑을 때마다, 모든 적에게 피해를 1 줍니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"unique\", drawDamage = 1, aoe = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tGrandFinale = { name = \"커닝의 대단원\", cost = 0, desc = \"뽑을 카드 더미에 카드가 없을 때만 사용할 수 있습니다. 모든 적에게 피해를 45 줍니다.\", kind = \"Attack\", damage = 45, class = \"thiefmaster\", rarity = \"legend\", playableWhenDrawPileEmpty = true, aoe = true, image = \"dbdbb1b56ae54672ae68ac6882fff6a2\" },\n\tAssassinate = { name = \"어둠 속 급소\", cost = 0, desc = \"선천성. 피해를 10 줍니다. 취약을 1 부여합니다. 소멸.\", kind = \"Attack\", damage = 10, vuln = 1, class = \"thiefmaster\", rarity = \"legend\", innate = true, exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tEchoingSlash = { name = \"메아리 칼자국\", cost = 2, desc = \"모든 적에게 피해를 6 줍니다. 적을 처치할 때마다 이 효과를 반복합니다.\", kind = \"Attack\", damage = 10, class = \"thiefmaster\", rarity = \"legend\", repeatOnKill = true, aoe = true, image = \"dbdbb1b56ae54672ae68ac6882fff6a2\" },\n\tTheHunt = { name = \"커닝 현상금\", cost = 1, desc = \"피해를 10 줍니다. 이 카드로 적을 처치하면 카드 보상을 추가로 얻습니다. 소멸.\", kind = \"Attack\", damage = 6, rewardOnKill = 1, class = \"assassin\", rarity = \"legend\", exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tMurder = { name = \"쌓여가는 살의\", cost = 3, desc = \"피해를 1 줍니다. 이번 전투 동안 뽑은 카드 1장당 피해량이 1 증가합니다.\", kind = \"Attack\", damage = 1, damagePerCardDrawnThisCombat = 1, class = \"thiefmaster\", rarity = \"legend\", image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tMalaise = { name = \"기운 빼는 독\", cost = 2, desc = \"에너지를 모두 사용하고, 사용한 에너지만큼 적에게 약화를 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", useAllEnergy = true, xWeakPerEnergy = 1, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tStormOfSteel = { name = \"쇠별 폭풍\", cost = 1, desc = \"손에 있는 모든 카드를 버립니다. 버린 카드의 수만큼 표창을 손으로 가져옵니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"legend\", discardAll = true, addShivPerDiscard = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tShadowStep = { name = \"그림자 발자국\", cost = 1, desc = \"손에 있는 모든 카드를 버립니다. 다음 턴에, 공격 카드의 피해량이 2배가 됩니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", discardAll = true, nextTurnAttackMultiplier = 2, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tShadowmeld = { name = \"연막 속 은신\", cost = 1, desc = \"이번 턴 동안 얻는 방어도가 2배가 됩니다.\", kind = \"Skill\", blockGainMultiplier = 2, class = \"thiefmaster\", rarity = \"legend\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tCorrosiveWave = { name = \"부식 독물결\", cost = 1, desc = \"이번 턴에 카드를 뽑을 때마다, 모든 적에게 중독을 2 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", drawPoison = 2, image = \"19361e72087946b1888684185b40d935\" },\n\tBladeOfInk = { name = \"먹빛 표창\", cost = 1, desc = \"잉크투성이 표창을 2장 손으로 가져옵니다.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", addShiv = 2, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBurst = { name = \"연속 술수\", cost = 1, desc = \"이번 턴에 다음에 사용하는 스킬 카드가 1번 추가로 사용됩니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", nextSkillRepeatCount = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tKnifeTrap = { name = \"숨은 칼날덫\", cost = 2, desc = \"교활. 모든 적에게 피해를 7 주고 중독을 2 부여합니다.\", kind = \"Attack\", damage = 7, class = \"thiefmaster\", rarity = \"legend\", poison = 2, sly = true, aoe = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBulletTime = { name = \"멈춘 듯한 순간\", cost = 3, desc = \"이번 턴 동안 더 이상 카드를 뽑을 수 없습니다. 이번 턴 동안 손에 있는 모든 카드를 비용 없이 사용할 수 있습니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", handCostZeroThisTurn = true, drawDisabledThisTurn = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tNightmare = { name = \"검은 꿈\", cost = 3, desc = \"카드를 1장 선택합니다. 다음 턴에, 그 카드의 복사본을 3장 손으로 가져옵니다. 소멸.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", nextTurnCopies = 3, nextTurnSelectHandCard = true, nextTurnSelectPrompt = \"복사할 카드를 선택하세요\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tToolsOfTheTrade = { name = \"도적의 연장통\", cost = 1, desc = \"내 턴 시작 시, 카드를 1장 뽑고 카드를 1장 버립니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"legend\", turnStartDraw = 1, turnStartDiscard = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tMasterPlanner = { name = \"작전의 달인\", cost = 2, desc = \"사용한 스킬 카드는 교활해집니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"legend\", skillSlyOnPlay = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tFanOfKnives = { name = \"사방 표창비\", cost = 2, desc = \"표창이 이제 모든 적을 대상으로 합니다. 표창을 4장 손으로 가져옵니다.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", addShiv = 4, shivAoe = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tSerpentForm = { name = \"독사의 몸놀림\", cost = 2, desc = \"카드를 사용할 때마다, 무작위 적에게 피해를 4 줍니다.\", kind = \"Power\", cardPlayedRandomDamage = 4, class = \"thiefmaster\", rarity = \"legend\", image = \"19361e72087946b1888684185b40d935\" },\n\tAbrasive = { name = \"거친 숫돌질\", cost = 2, desc = \"교활. 민첩을 1 얻습니다. 가시를 4 얻습니다.\", kind = \"Power\", dex = 1, thorns = 4, class = \"thiefmaster\", rarity = \"legend\", sly = true, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tSuppress = { name = \"소리 없는 제압\", cost = 0, desc = \"선천성. 피해를 9 줍니다. 약화를 2 부여합니다. 소멸.\", kind = \"Attack\", damage = 9, weak = 2, class = \"thiefmaster\", rarity = \"legend\", innate = true, exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tWraithForm = { name = \"유령 같은 몸놀림\", cost = 3, desc = \"불가침을 2 얻습니다. 내 턴 종료 시 민첩을 1 잃습니다.\", kind = \"Power\", intangible = 2, endTurnDexLoss = 1, class = \"thiefmaster\", rarity = \"legend\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tSavageBlow = { name = \"새비지 블로우\", cost = 1, desc = \"피해를 3만큼 2번 줍니다. 이번 턴에 사용한 공격 카드 1장당 피해가 2 증가합니다.\", kind = \"Attack\", damage = 3, damagePerAttackPlayedThisTurn = 2, class = \"thief\", rarity = \"normal\", hits = 2, image = \"92a5020c978c46bdabab910598118b86\" },\n\tCriticalEdge = { name = \"크리티컬 엣지\", cost = 1, desc = \"카드를 1장 뽑습니다. 다음 턴에 공격 카드의 피해량이 2배가 됩니다. 보존.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", draw = 1, nextTurnAttackMultiplier = 2, retain = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tSteal = { name = \"스틸\", cost = 1, desc = \"피해를 3 줍니다. 이번 턴에 버린 카드 1장당 피해가 3 증가합니다. 에너지를 1 얻습니다.\", kind = \"Attack\", damage = 3, damagePerDiscardedThisTurn = 3, class = \"thief\", rarity = \"normal\", gainEnergy = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDaggerAcceleration = { name = \"대거 액셀레이션\", cost = 0, desc = \"카드를 1장 뽑습니다. 카드를 1장 버립니다. 버린 카드마다 카드를 1장 더 뽑습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", draw = 1, discard = 1, drawPerDiscarded = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tKarma = { name = \"카르마\", cost = 1, desc = \"피해를 7 줍니다. 방어도를 무시합니다. 약화 상태의 적에게는 피해가 2배가 됩니다.\", kind = \"Attack\", damage = 7, class = \"thief\", rarity = \"unique\", pierce = true, attackDamageVsWeakMultiplier = 2, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tDaggerMastery = { name = \"대거 마스터리\", cost = 1, desc = \"카드를 사용할 때마다 방어도를 1 얻습니다. 매 턴 첫 카드의 피해가 3 증가합니다.\", kind = \"Power\", firstCardDamageBonus = 3, cardPlayedBlock = 1, class = \"thief\", rarity = \"unique\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tPhysicalTraining = { name = \"피지컬 트레이닝\", cost = 2, desc = \"힘을 1 얻습니다. 민첩을 1 얻습니다.\", kind = \"Power\", strength = 1, dex = 1, class = \"thief\", rarity = \"normal\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tShieldMastery = { name = \"실드 마스터리\", cost = 1, desc = \"방어도를 7 얻습니다. 다음 턴에 방어도가 사라지지 않습니다.\", kind = \"Skill\", block = 7, class = \"thief\", rarity = \"normal\", nextTurnKeepBlock = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tThiefAgility = { name = \"시프 어질리티\", cost = 1, desc = \"방어도를 5 얻습니다. 이번 턴 동안 민첩을 1 얻습니다. 손의 다른 스킬 카드 1장이 교활해집니다.\", kind = \"Skill\", endTurnDexLoss = 1, block = 5, dex = 1, class = \"thief\", rarity = \"unique\", turnHandSlyCount = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tEdgeCarnival = { name = \"엣지 카니발\", cost = 1, desc = \"무작위 적에게 피해를 2만큼 4번 줍니다.\", kind = \"Attack\", damage = 2, class = \"thiefmaster\", rarity = \"unique\", hits = 4, randomTargetEachHit = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tMuspelHeim = { name = \"무스펠 하임\", cost = 1, desc = \"모든 적에게 피해를 4 줍니다. 이번 턴에 버린 카드 1장당 피해가 2 증가합니다. 약화를 1 부여합니다.\", kind = \"Attack\", damage = 4, damagePerDiscardedThisTurn = 2, weak = 1, class = \"thiefmaster\", rarity = \"unique\", aoe = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tMesoExplosion = { name = \"메소 익스플로젼\", cost = 1, desc = \"피해를 2 줍니다. 이번 턴에 버린 카드 1장당 피해가 7 증가합니다. 방어도를 무시합니다.\", kind = \"Attack\", damage = 2, damagePerDiscardedThisTurn = 7, class = \"thiefmaster\", rarity = \"unique\", pierce = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDarkFlare = { name = \"다크 플레어\", cost = 1, desc = \"매 턴 모든 적에게 피해를 2 줍니다. 카드를 사용할 때마다 무작위 적에게 피해를 2 줍니다.\", kind = \"Power\", cardPlayedRandomDamage = 2, powerEffect = \"damagePerTurn\", value = 2, class = \"thiefmaster\", rarity = \"unique\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tPickPocket = { name = \"픽 파킷\", cost = 1, desc = \"카드를 1장 뽑습니다. 카드를 1장 버리고, 에너지를 1 얻습니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"unique\", draw = 1, gainEnergy = 1, discard = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tShadowPartner = { name = \"쉐도우 파트너\", cost = 2, desc = \"카드를 1장 선택합니다. 다음 턴에 그 카드의 복사본 1장을 손에 넣습니다. 카드를 1장 뽑습니다. 소멸.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", draw = 1, nextTurnCopies = 1, nextTurnSelectHandCard = true, nextTurnSelectPrompt = \"복사할 카드를 선택하세요.\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tAdvancedDarkSight = { name = \"어드밴스드 다크 사이트\", cost = 1, desc = \"무형을 1 얻습니다. 이번 턴 동안 손의 다른 스킬 카드 2장이 교활해집니다.\", kind = \"Skill\", intangible = 1, class = \"thiefmaster\", rarity = \"unique\", turnHandSlyCount = 2, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tIntoDarkness = { name = \"인투 다크니스\", cost = 1, desc = \"모든 적에게 약화를 1 부여합니다. 이번 턴 동안 손의 다른 스킬 카드 2장이 교활해집니다.\", kind = \"Skill\", weak = 1, class = \"thiefmaster\", rarity = \"unique\", turnHandSlyCount = 2, affectsAllEnemies = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tVenom = { name = \"베놈\", cost = 1, desc = \"공격 카드가 막히지 않은 피해를 줄 때마다 중독을 1 부여합니다. 적 턴 시작 시 독이 한 번 더 적용됩니다.\", kind = \"Power\", attackPoison = 1, class = \"thiefmaster\", rarity = \"legend\", extraPoisonTicks = 1, image = \"19361e72087946b1888684185b40d935\" },\n\tGrid = { name = \"그리드\", cost = 2, desc = \"가시를 3 얻습니다. 카드를 사용할 때마다 방어도를 1 얻습니다.\", kind = \"Power\", thorns = 3, cardPlayedBlock = 1, class = \"thiefmaster\", rarity = \"unique\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tRadicalDarkness = { name = \"래디컬 다크니스\", cost = 2, desc = \"카드를 1장 뽑습니다. 이번 턴 동안 얻는 방어도가 2배가 됩니다. 다음 턴에 방어도가 사라지지 않습니다.\", kind = \"Skill\", blockGainMultiplier = 2, class = \"thiefmaster\", rarity = \"legend\", draw = 1, nextTurnKeepBlock = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tShurikenBurst = { name = \"슈리켄 버스트\", cost = 1, desc = \"무작위 적에게 피해를 3씩 4번 줍니다.\", kind = \"Attack\", damage = 3, class = \"assassin\", rarity = \"normal\", hits = 4, randomTargetEachHit = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tWindTalisman = { name = \"윈드 탈리스만\", cost = 1, desc = \"카드를 1장 뽑습니다. 이번 턴 동안 스킬 카드의 비용이 1 감소합니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"unique\", draw = 1, skillCostReductionThisTurn = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tMarkOfAssassin = { name = \"마크 오브 어쌔신\", cost = 1, desc = \"약화 1을 부여합니다. 약화 상태의 적에게 주는 공격 피해가 1.5배가 됩니다.\", kind = \"Power\", weak = 1, class = \"assassin\", rarity = \"unique\", attackDamageVsWeakMultiplier = 1.5, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tShadowRush = { name = \"쉐도우 러쉬\", cost = 1, desc = \"피해 7, 방어도 5를 얻습니다.\", kind = \"Attack\", damage = 7, block = 5, class = \"assassin\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tShadowLeap = { name = \"쉐도우 리프\", cost = 0, desc = \"방어도 4를 얻습니다. 다음 턴에 방어도 4를 얻습니다. 소멸.\", kind = \"Skill\", block = 4, class = \"assassin\", rarity = \"normal\", nextTurnBlock = 4, exhaust = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tShadowBlink = { name = \"쉐도우 블링크\", cost = 1, desc = \"무형 1을 얻습니다. 다음 스킬 카드의 비용이 0이 됩니다. 소멸.\", kind = \"Skill\", intangible = 1, class = \"assassin\", rarity = \"unique\", nextSkillCostZero = true, exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tJavelinMastery = { name = \"자벨린 마스터리\", cost = 1, desc = \"표창의 피해량이 2 증가합니다.\", kind = \"Power\", class = \"assassin\", rarity = \"unique\", shivDamageBonus = 2, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tJavelinAcceleration = { name = \"자벨린 액셀레이션\", cost = 1, desc = \"카드를 2장 뽑습니다. 카드를 1장 버립니다. 표창 1장을 손에 넣습니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"normal\", draw = 2, discard = 1, addShiv = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tCriticalThrow = { name = \"크리티컬 스로우\", cost = 1, desc = \"피해를 6씩 2번 줍니다. 방어도를 무시합니다. 이번 턴 첫 카드라면 피해가 더 강해집니다.\", kind = \"Attack\", damage = 6, firstCardDamageBonus = 2, class = \"assassin\", rarity = \"unique\", hits = 2, pierce = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tAssassinPhysicalTraining = { name = \"피지컬 트레이닝\", cost = 2, desc = \"힘 1, 민첩 1을 얻고 카드를 1장 뽑습니다.\", kind = \"Power\", strength = 1, dex = 1, class = \"assassin\", rarity = \"normal\", draw = 1, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tTripleThrow = { name = \"트리플 스로우\", cost = 1, desc = \"피해를 4씩 3번 줍니다.\", kind = \"Attack\", damage = 4, class = \"hermit\", rarity = \"normal\", hits = 3, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tShurikenChallenge = { name = \"슈리켄 챌린지\", cost = 1, desc = \"피해를 5씩 2번 줍니다. 다음 턴에 카드를 1장 더 뽑습니다.\", kind = \"Attack\", damage = 5, class = \"hermit\", rarity = \"unique\", hits = 2, nextTurnDraw = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHermitDarkFlare = { name = \"다크 플레어\", cost = 2, desc = \"매 턴 모든 적에게 피해 3을 줍니다. 턴 시작마다 표창 1장을 손에 넣습니다.\", kind = \"Power\", powerEffect = \"damagePerTurn\", value = 3, class = \"hermit\", rarity = \"unique\", turnStartShiv = 1, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tHermitShadowPartner = { name = \"쉐도우 파트너\", cost = 2, desc = \"카드를 1장 뽑습니다. 다음 턴 공격 카드의 피해가 2배가 됩니다.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", draw = 1, nextTurnAttackMultiplier = 2, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tSpiritJavelin = { name = \"스피릿 자벨린\", cost = 1, desc = \"표창이 턴 종료 시 사라지지 않습니다. 매 턴 처음 사용하는 표창의 피해량이 4 증가합니다.\", kind = \"Power\", class = \"hermit\", rarity = \"unique\", firstShivDamageBonus = 4, shivRetain = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHermitRadicalDarkness = { name = \"래디컬 다크니스\", cost = 1, desc = \"방어도 4를 얻습니다. 이번 턴 동안 얻는 방어도가 2배가 됩니다. 소멸.\", kind = \"Skill\", block = 4, blockGainMultiplier = 2, class = \"hermit\", rarity = \"unique\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tHermitVenom = { name = \"베놈\", cost = 2, desc = \"공격 카드가 막히지 않은 피해를 줄 때마다 중독 1을 부여합니다. 전투 중 독 부여 3회마다 모든 적에게 피해 8을 줍니다.\", kind = \"Power\", attackPoison = 1, class = \"hermit\", rarity = \"legend\", poisonApplicationBurstEvery = 3, poisonApplicationBurstDamage = 8, image = \"19361e72087946b1888684185b40d935\" },\n\tSkilledJavelin = { name = \"숙련된 표창술\", cost = 1, desc = \"표창의 피해량이 2 증가합니다. 매 턴 처음 사용하는 표창의 피해량이 4 증가합니다.\", kind = \"Power\", class = \"hermit\", rarity = \"unique\", shivDamageBonus = 2, firstShivDamageBonus = 4, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHermitAdrenaline = { name = \"아드레날린\", cost = 0, desc = \"에너지를 1 얻고 카드를 1장 뽑습니다. 표창 1장을 손에 넣습니다. 소멸.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", draw = 1, gainEnergy = 1, addShiv = 1, exhaust = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n}\nself.CardFrames = {\n\twarrior = { normal = \"4bb57ef88ef449fdaf958f6cf37fe44b\", unique = \"4f71c124c8bc4e13b5e9fad392995f68\", legend = \"6d741a60c60743cb98ee740a1e2dbfed\" },\n\tmagician = { normal = \"d788d09f6f50467ebc67f01dec45f9e2\", unique = \"f5def2e8022b4e59a17d3c16414034fe\", legend = \"cff71f2e472041ce80c6fbd296f42e2d\" },\n\trogue = { normal = \"9487b06867bc46269ed1d855420f457f\", unique = \"b3081fb2fb1445fa90b12b01481a78ef\", legend = \"c357d2daf31a489d95b8fa47e50dd879\" },\n}\nself.ClassToFrame = {\n\twarrior = \"warrior\",\n\tfighter = \"warrior\",\n\tcrusader = \"warrior\",\n\tpage = \"warrior\",\n\tknight = \"warrior\",\n\tspearman = \"warrior\",\n\tmagician = \"magician\",\n\tfirepoison = \"magician\",\n\ticelightning = \"magician\",\n\tcleric = \"magician\",\n\tcurse = \"rogue\",\n\tshiv = \"rogue\",\n\trogue = \"rogue\",\n\tassassin = \"rogue\",\n\thermit = \"rogue\",\n\tthief = \"rogue\",\n\tthiefmaster = \"rogue\",\n}\nself.NodeIcons = {\n\tcombat = \"f98db6823e894a4f90308d61f75894ac\",\n\telite = \"793ed8a757534b89a82f460747d2df24\",\n\tboss = \"423056cdbbc04f4da131b9721c404d96\",\n\tshop = \"da37e1fac55d455b9ade08569f09f798\",\n\trest = \"b86c1b0568bd45f3ae4a4b97e1b4a594\",\n\ttreasure = \"f8a6d58e20f54e2ca899485055df1ce4\",\n}\nself.ClassPortraits = {\n\twarrior = \"28c88fdc5ab44f34a8b3fc1e19d4ce78\",\n\tmagician = \"3b9ea1f066a744bb859df47fef817277\",\n\trogue = \"efa920e58d31426486ef974106e7dc8b\",\n}\nself.SoulShopDef = {\n\t{ key = \"meso\", name = \"두둑한 지갑\", desc = \"런 시작 시 메소 +60\", cost = 3 },\n\t{ key = \"hp\", name = \"단련된 육체\", desc = \"시작 최대 HP +15\", cost = 4 },\n\t{ key = \"trim\", name = \"덱 정제\", desc = \"시작 덱에서 기본 카드 1장 제거\", cost = 5 },\n\t{ key = \"relic\", name = \"유물 수집가\", desc = \"런 시작 시 유물 1개 추가\", cost = 6 },\n}\nself.SoulUnlocks = {}\nself.SoulPoints = self.SoulPoints or 0\nlocal uiTries = 0\nlocal uiInit = 0\nuiInit = _TimerService:SetTimerRepeat(function()\n\tuiTries = uiTries + 1\n\tif _EntityService:GetEntityByPath(\"/ui/DeckUIGroup\") ~= nil then\n\t\tself:ActivateUIGroups()\n\t\t-- MainMenu는 한동안 비활성화: 시작 시 바로 로비로 진입.\n\t\t-- 추후 싱글/멀티/종료 선택 메뉴가 필요하면 self:ShowMainMenu()로 되돌린다(메서드·UI 유지됨).\n\t\tself:ShowLobby()\n\t\t_TimerService:ClearTimer(uiInit)\n\telseif uiTries > 80 then\n\t\t_TimerService:ClearTimer(uiInit)\n\tend\nend, 0.1)\nlocal lp = _UserService.LocalPlayer\nif lp ~= nil then\n\tself:ReqLoadAscension(lp.PlayerComponent.UserId)\n\tself:ReqLoadSouls(lp.PlayerComponent.UserId)\nend\n_InputService:ConnectEvent(KeyDownEvent, function(e)\n\tif e.key == KeyboardKey.LeftControl then\n\t\tself.DebugCtrlDown = true\n\t\tlocal lp2 = _UserService.LocalPlayer\n\t\tif lp2 ~= nil and lp2.CurrentMapName == \"lobby\" and self.RunActive ~= true then\n\t\t\tself:PlayerAttackMotion()\n\t\tend\n\telseif e.key == KeyboardKey.LeftShift or e.key == KeyboardKey.RightShift then\n\t\tself.DebugShiftDown = true\n\telseif e.key == KeyboardKey.C then\n\t\tif self.DebugCtrlDown == true and self.DebugShiftDown == true then\n\t\t\tself:OpenDebugCardPicker()\n\t\tend\n\telseif e.key == KeyboardKey.E then\n\t\tif self.DebugCtrlDown == true and self.DebugShiftDown == true then\n\t\t\tself:CheatFillEnergy()\n\t\tend\n\tend\nend)\n_InputService:ConnectEvent(KeyUpEvent, function(e)\n\tif e.key == KeyboardKey.LeftControl then\n\t\tself.DebugCtrlDown = false\n\telseif e.key == KeyboardKey.LeftShift or e.key == KeyboardKey.RightShift then\n\t\tself.DebugShiftDown = false\n\tend\nend)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -1866,7 +1887,7 @@ "Name": null }, "Arguments": [], - "Code": "if self.SelectedClass == \"magician\" then\n\tself.PlayerMaxHp = 70\nself.RunDeck = { \"EnergyBolt\", \"EnergyBolt\", \"EnergyBolt\", \"EnergyBolt\", \"EnergyBolt\", \"MagicGuard\", \"MagicGuard\", \"MagicGuard\", \"MagicGuard\", \"MagicClaw\" }\nelseif self.SelectedClass == \"rogue\" then\n\tself.PlayerMaxHp = 70\n\tself.RunDeck = { \"SilentStrike\", \"SilentStrike\", \"SilentStrike\", \"SilentStrike\", \"SilentStrike\", \"SilentDefend\", \"SilentDefend\", \"SilentDefend\", \"SilentDefend\", \"SilentDefend\", \"Neutralize\", \"Survivor\" }\nelse\n\tself.PlayerMaxHp = 80\n\tself.RunDeck = { \"Strike\", \"Strike\", \"Strike\", \"Strike\", \"Strike\", \"Defend\", \"Defend\", \"Defend\", \"Defend\", \"Bash\" }\nend\nself.PlayerMaxHp = self.PlayerMaxHp - self:AscStartHpPenalty()\nself.PlayerHp = self.PlayerMaxHp\nself.Gold = 0\nself.Floor = 1\nself.RunLength = 5\nself.RunActive = true\nself.RunRelics = {}\nself.RunPotions = {}\nself.PotionSlots = 3\nself.Potions = {\n\tredPotion = { name = \"빨간 포션\", desc = \"HP 20 회복\", effect = \"heal\", value = 20, icon = \"393e2a0d8da544899eaa8b22c97f832b\" },\n\tfirebomb = { name = \"화염병\", desc = \"적에게 피해 20\", effect = \"damage\", value = 20, icon = \"7ddb464c2574456289a4eb72ce86f193\" },\n\twarriorElixir = { name = \"전사의 물약\", desc = \"힘 +2\", effect = \"strength\", value = 2, icon = \"7cfbd410581e4073815daaf5f3e6c72f\" },\n\tguardPotion = { name = \"수호의 물약\", desc = \"방어도 +12\", effect = \"block\", value = 12, icon = \"8f8402dfa0f746e18bf606ed74302c0a\" },\n\tmanaElixir = { name = \"마나 엘릭서\", desc = \"에너지 +2\", effect = \"energy\", value = 2, icon = \"ec2778c366f6477ab0f8e7f06bcd73f4\" },\n\tcursedVial = { name = \"저주의 병\", desc = \"적에게 약화 3\", effect = \"weak\", value = 3, icon = \"a9a2763fdb6849dcba3028c737487680\" },\n}\nself.Relics = {\n\tironHeart = { name = \"강철 심장\", desc = \"전투 시작 시 방어도 +6\", hook = \"combatStart\", effect = \"block\", value = 6, icon = \"e555b3a62f3c49dbb2c53784e6bd481f\" },\n\tenergyCore = { name = \"에너지 코어\", desc = \"턴 시작 시 에너지 +1\", hook = \"turnStart\", effect = \"energy\", value = 1, icon = \"a41014f28b47434ab9f49ef104523862\" },\n\tvampire = { name = \"흡혈 송곳니\", desc = \"공격 카드 사용 시 HP +1\", hook = \"cardPlayed\", effect = \"healOnAttack\", value = 1, icon = \"ed64cde7e6c44b9e99502847e54f04e9\" },\n\tgoldIdol = { name = \"황금 우상\", desc = \"전투 승리 시 메소 +10\", hook = \"combatReward\", effect = \"gold\", value = 10, icon = \"03bb05c92b8f45edb0f3dad2e118fd5a\" },\n\tpotionBelt = { name = \"장인의 벨트\", desc = \"물약 슬롯이 5칸으로 늘어난다\", hook = \"passive\", effect = \"potionSlots\", value = 5, icon = \"36725b4566ac40d4902e2ab2113c2096\" },\n\tburningBlood = { name = \"자쿰의 투구\", desc = \"전투 승리 시 HP 6 회복\", hook = \"combatEnd\", effect = \"healOnWin\", value = 6, icon = \"07f994825ce34131b419d43e890c878d\" },\n\tvajra = { name = \"미스릴 해머\", desc = \"전투 시작 시 힘 +1\", hook = \"combatStart\", effect = \"strength\", value = 1, icon = \"59d2579d46dc41d590a9e6b141ad458b\" },\n\tanchor = { name = \"메이플 실드\", desc = \"첫 턴 방어도 +10\", hook = \"combatStart\", effect = \"block\", value = 10, icon = \"6349413e08cc49848862591863d056a0\" },\n\tbagOfPrep = { name = \"모험가의 배낭\", desc = \"첫 턴 드로우 +2\", hook = \"combatStart\", effect = \"draw\", value = 2, icon = \"77b240cb8af245b4801a714380267ae9\" },\n\tbloodVial = { name = \"피의 목걸이\", desc = \"전투 시작 시 HP 2 회복\", hook = \"combatStart\", effect = \"heal\", value = 2, icon = \"c782e949506a42c49eb139c7e65527d7\" },\n\tbronzeScales = { name = \"브론즈 체인메일\", desc = \"피격 시 공격자에게 3 반사\", hook = \"onPlayerDamaged\", effect = \"thorns\", value = 3, icon = \"87272346b145412391622cf803f888d1\" },\n\tstrawberry = { name = \"건강의 반지\", desc = \"획득 시 최대 HP +7\", hook = \"passive\", effect = \"maxHp\", value = 7, icon = \"58f643e29c354c2783a5ce9a72ec155c\" },\n\tpenNib = { name = \"황금 깃펜\", desc = \"10번째 공격마다 피해 2배\", hook = \"attackCalc\", effect = \"penNib\", value = 10, icon = \"4d38d721cc064d14b31b9e9a92754139\" },\n\tboot = { name = \"브론즈 부츠\", desc = \"5 미만 공격 피해가 5로\", hook = \"attackCalc\", effect = \"boot\", value = 5, icon = \"d572b3aa4dac4162aa0d9e551b055dce\" },\n\takabeko = { name = \"황소 투구\", desc = \"전투 첫 공격 피해 +8\", hook = \"attackCalc\", effect = \"akabeko\", value = 8, icon = \"eb3330a6e2274eff958639f8792119d3\" },\n\tcentennialPuzzle = { name = \"백년의 부적\", desc = \"전투 첫 피격 시 드로우 3\", hook = \"onPlayerDamaged\", effect = \"firstLossDraw\", value = 3, icon = \"cfe5ed6556b944fc83ab58b774bb2b73\" },\n\tmeatOnBone = { name = \"고기 망치\", desc = \"승리 시 HP 50% 이하면 12 회복\", hook = \"combatEnd\", effect = \"healIfLow\", value = 12, icon = \"a93e8e87f184411c98c96b877d9f8b10\" },\n\tselfFormingClay = { name = \"점토 갑옷\", desc = \"피해를 받으면 다음 턴 방어 +3\", hook = \"onPlayerDamaged\", effect = \"clayBlock\", value = 3, icon = \"bb446793c5204d5db7d33563fe79f648\" },\n\tchampionBelt = { name = \"챔피언 벨트\", desc = \"취약 부여 시 약화 1 추가\", hook = \"cardDebuff\", effect = \"vulnAddsWeak\", value = 1, icon = \"7ca8c63026034113a561d6adf679fed2\" },\n}\nself.RelicPool = { \"energyCore\", \"vampire\", \"goldIdol\", \"potionBelt\", \"burningBlood\", \"vajra\", \"anchor\", \"bagOfPrep\", \"bloodVial\", \"bronzeScales\", \"strawberry\", \"penNib\", \"boot\", \"akabeko\", \"centennialPuzzle\", \"meatOnBone\", \"selfFormingClay\", \"championBelt\" }\nself.Enemies = {\n\tslime = { name = \"슬라임\", maxHp = 45, intents = { { kind = \"Attack\", value = 10 }, { kind = \"Attack\", value = 6 }, { kind = \"Defend\", value = 8 } } },\n\tslime_elite = { name = \"정예 슬라임\", maxHp = 70, intents = { { kind = \"Attack\", value = 14 }, { kind = \"Attack\", value = 8 }, { kind = \"Defend\", value = 10 }, { kind = \"Debuff\", value = 1, effect = \"weak\" } } },\n\tslime_boss = { name = \"슬라임 킹\", maxHp = 120, intents = { { kind = \"Attack\", value = 18 }, { kind = \"Defend\", value = 12 }, { kind = \"Debuff\", value = 2, effect = \"vuln\" }, { kind = \"Attack\", value = 10 }, { kind = \"Attack\", value = 22 } } },\n\torange_mushroom = { name = \"주황버섯\", maxHp = 16, intents = { { kind = \"Attack\", value = 5 }, { kind = \"Attack\", value = 5 }, { kind = \"Defend\", value = 4 }, { kind = \"Attack\", value = 8 } } },\n\tblue_mushroom = { name = \"파란버섯\", maxHp = 22, intents = { { kind = \"Attack\", value = 4 }, { kind = \"Attack\", value = 4 }, { kind = \"Attack\", value = 10 }, { kind = \"AddCard\", value = 0, card = \"Wound\", count = 1 } } },\n\tpig = { name = \"돼지\", maxHp = 18, intents = { { kind = \"Attack\", value = 6 }, { kind = \"Attack\", value = 6 }, { kind = \"Defend\", value = 5 } } },\n\tgreen_mushroom = { name = \"초록버섯\", maxHp = 20, intents = { { kind = \"Attack\", value = 7 }, { kind = \"Defend\", value = 3 }, { kind = \"Attack\", value = 9 } } },\n\tred_snail = { name = \"빨간 달팽이\", maxHp = 14, intents = { { kind = \"Attack\", value = 5 }, { kind = \"Defend\", value = 6 }, { kind = \"Attack\", value = 7 } } },\n\tstump = { name = \"나무토막\", maxHp = 19, intents = { { kind = \"Defend\", value = 5 }, { kind = \"Attack\", value = 8 }, { kind = \"Attack\", value = 6 } } },\n\tmushmom = { name = \"머쉬맘\", maxHp = 75, intents = { { kind = \"Defend\", value = 10 }, { kind = \"Debuff\", value = 2, effect = \"weak\" }, { kind = \"Attack\", value = 16 }, { kind = \"Attack\", value = 9 }, { kind = \"Defend\", value = 6 }, { kind = \"AddCard\", value = 0, card = \"Burn\", count = 1 } } },\n\tmodified_snail = { name = \"변형된 달팽이\", maxHp = 60, intents = { { kind = \"Attack\", value = 12 }, { kind = \"Defend\", value = 8 }, { kind = \"Attack\", value = 7 }, { kind = \"Attack\", value = 14 }, { kind = \"Debuff\", value = 1, effect = \"weak\" } } },\n\tking_slime = { name = \"킹 슬라임\", maxHp = 130, intents = { { kind = \"Attack\", value = 18 }, { kind = \"Defend\", value = 14 }, { kind = \"Debuff\", value = 2, effect = \"vuln\" }, { kind = \"Attack\", value = 12 }, { kind = \"Attack\", value = 24 } } },\n\toctopus = { name = \"문어\", maxHp = 15, intents = { { kind = \"Attack\", value = 5 }, { kind = \"Attack\", value = 6 }, { kind = \"Defend\", value = 4 } } },\n\tkapa_drake = { name = \"카파 드레이크\", maxHp = 24, intents = { { kind = \"Attack\", value = 9 }, { kind = \"Attack\", value = 6 }, { kind = \"Defend\", value = 6 }, { kind = \"Attack\", value = 11 } } },\n\tjunior_neki = { name = \"주니어 네키\", maxHp = 18, intents = { { kind = \"Attack\", value = 6 }, { kind = \"Attack\", value = 8 }, { kind = \"Debuff\", value = 1, effect = \"weak\" } } },\n\tjunior_bugi = { name = \"주니어 부기\", maxHp = 20, intents = { { kind = \"Attack\", value = 7 }, { kind = \"Defend\", value = 5 }, { kind = \"Attack\", value = 9 } } },\n\tdile = { name = \"다일\", maxHp = 65, intents = { { kind = \"Attack\", value = 13 }, { kind = \"Defend\", value = 9 }, { kind = \"Attack\", value = 8 }, { kind = \"Attack\", value = 16 }, { kind = \"Debuff\", value = 1, effect = \"weak\" } } },\n\tmano = { name = \"마노\", maxHp = 80, intents = { { kind = \"Defend\", value = 12 }, { kind = \"Attack\", value = 14 }, { kind = \"Debuff\", value = 1, effect = \"vuln\" }, { kind = \"Attack\", value = 10 }, { kind = \"AddCard\", value = 0, card = \"Wound\", count = 1 } } },\n}\nself.CurrentNodeId = \"\"\nself.CurrentEnemyId = \"\"\nself.PlayerJob = \"\"\nself.Jobs = {\n\twarrior = {\n\t\t{ id = \"fighter\", name = \"파이터\", desc = \"연속 공격 계열\\n이중 타격 · 난타\\n악마의 형상\", starter = \"TwinStrike\", tier = 2, parent = \"warrior\" },\n\t\t{ id = \"page\", name = \"페이지\", desc = \"방어·운영 계열\\n전투의 북소리 · 무적\\n바리케이드\", starter = \"DrumOfBattle\", tier = 2, parent = \"warrior\" },\n\t\t{ id = \"spearman\", name = \"스피어맨\", desc = \"광역·장기전 계열\\n대화재 · 소용돌이\\n불의 심장\", starter = \"Conflagration\", tier = 2, parent = \"warrior\" },\n\t},\n\tfighter = {\n\t\t{ id = \"crusader\", name = \"크루세이더\", desc = \"파이터의 3차 전직\\n아이언클래드 공격 풀 계승\\n전사 카드 사용\", starter = \"\", tier = 3, parent = \"fighter\" },\n\t},\n\tpage = {\n\t\t{ id = \"knight\", name = \"나이트\", desc = \"페이지의 3차 전직\\n아이언클래드 운영 풀 계승\\n전사 카드 사용\", starter = \"\", tier = 3, parent = \"page\" },\n\t},\n\tspearman = {\n\t\t{ id = \"berserker\", name = \"버서커\", desc = \"스피어맨의 3차 전직\\n아이언클래드 장기전 풀 계승\\n전사 카드 사용\", starter = \"\", tier = 3, parent = \"spearman\" },\n\t},\n\tmagician = {\n\t\t{ id = \"firepoison\", name = \"위자드(불·독)\", desc = \"화염·독 특화\\n파이어 애로우\\n포이즌 브레스 · 앰플\", starter = \"FireArrow\", tier = 2, parent = \"magician\" },\n\t\t{ id = \"icelightning\", name = \"위자드(썬·콜)\", desc = \"광역·빙결 특화\\n썬더 볼트(전체)\\n콜드 빔 · 칠링 스텝\", starter = \"ThunderBolt\", tier = 2, parent = \"magician\" },\n\t\t{ id = \"cleric\", name = \"클레릭\", desc = \"회복·축복 특화\\n힐 · 블레스\\n홀리 애로우\", starter = \"Heal\", tier = 2, parent = \"magician\" },\n\t},\n\trogue = {\n\t\t{ id = \"assassin\", name = \"Assassin\", desc = \"표창 중심 전직\\n표창 생성과 연속 공격\\n빠른 마무리\", starter = \"JavelinAcceleration\", tier = 2, parent = \"rogue\" },\n\t\t{ id = \"thief\", name = \"Thief\", desc = \"단검 중심 전직\\n드로우와 운영 강화\\n빠른 연계\", starter = \"DaggerAcceleration\", tier = 2, parent = \"rogue\" },\n\t},\n\tassassin = {\n\t\t{ id = \"hermit\", name = \"Hermit\", desc = \"Assassin의 3차 전직\\n표창 생성과 강화 심화\\n연속 공격 완성\", starter = \"SpiritJavelin\", tier = 3, parent = \"assassin\" },\n\t},\n\tthief = {\n\t\t{ id = \"thiefmaster\", name = \"Thief Master\", desc = \"Thief의 3차 전직\\n단검·교활·중독 심화\\n연계 운영 완성\", starter = \"Venom\", tier = 3, parent = \"thief\" },\n\t},\n}\nself.JobMeta = {\n\tfighter = { name = \"파이터\", starter = \"TwinStrike\", tier = 2, parent = \"warrior\", sourceClass = \"warrior\" },\n\tpage = { name = \"페이지\", starter = \"DrumOfBattle\", tier = 2, parent = \"warrior\", sourceClass = \"warrior\" },\n\tspearman = { name = \"스피어맨\", starter = \"Conflagration\", tier = 2, parent = \"warrior\", sourceClass = \"warrior\" },\n\tcrusader = { name = \"크루세이더\", starter = \"\", tier = 3, parent = \"fighter\", sourceClass = \"fighter\" },\n\tknight = { name = \"나이트\", starter = \"\", tier = 3, parent = \"page\", sourceClass = \"page\" },\n\tberserker = { name = \"버서커\", starter = \"\", tier = 3, parent = \"spearman\", sourceClass = \"spearman\" },\n\tfirepoison = { name = \"위자드(불·독)\", starter = \"FireArrow\", tier = 2, parent = \"magician\", sourceClass = \"magician\" },\n\ticelightning = { name = \"위자드(썬·콜)\", starter = \"ThunderBolt\", tier = 2, parent = \"magician\", sourceClass = \"magician\" },\n\tcleric = { name = \"클레릭\", starter = \"Heal\", tier = 2, parent = \"magician\", sourceClass = \"magician\" },\n\tassassin = { name = \"Assassin\", starter = \"JavelinAcceleration\", tier = 2, parent = \"rogue\", sourceClass = \"rogue\" },\n\tthief = { name = \"Thief\", starter = \"DaggerAcceleration\", tier = 2, parent = \"rogue\", sourceClass = \"rogue\" },\n\thermit = { name = \"Hermit\", starter = \"SpiritJavelin\", tier = 3, parent = \"assassin\", sourceClass = \"assassin\" },\n\tthiefmaster = { name = \"Thief Master\", starter = \"Venom\", tier = 3, parent = \"thief\", sourceClass = \"thief\" },\n}\nself.ClassGroups = {\n\twarrior = { \"warrior\", \"fighter\", \"crusader\", \"page\", \"knight\", \"spearman\", \"berserker\" },\n\tmagician = { \"magician\", \"firepoison\", \"icelightning\", \"cleric\" },\n\trogue = { \"rogue\", \"assassin\", \"hermit\", \"thief\", \"thiefmaster\" },\n}\nself.ClassLineages = {\n\twarrior = { \"warrior\" },\n\tfighter = { \"warrior\", \"fighter\" },\n\tcrusader = { \"warrior\", \"fighter\", \"crusader\" },\n\tpage = { \"warrior\", \"page\" },\n\tknight = { \"warrior\", \"page\", \"knight\" },\n\tspearman = { \"warrior\", \"spearman\" },\n\tberserker = { \"warrior\", \"spearman\", \"berserker\" },\n\tmagician = { \"magician\" },\n\tfirepoison = { \"magician\", \"firepoison\" },\n\ticelightning = { \"magician\", \"icelightning\" },\n\tcleric = { \"magician\", \"cleric\" },\n\trogue = { \"rogue\" },\n\tassassin = { \"rogue\", \"assassin\" },\n\thermit = { \"rogue\", \"assassin\", \"hermit\" },\n\tthief = { \"rogue\", \"thief\" },\n\tthiefmaster = { \"rogue\", \"thief\", \"thiefmaster\" },\n}\nself.CardFrames = {\n\twarrior = { normal = \"4bb57ef88ef449fdaf958f6cf37fe44b\", unique = \"4f71c124c8bc4e13b5e9fad392995f68\", legend = \"6d741a60c60743cb98ee740a1e2dbfed\" },\n\tmagician = { normal = \"d788d09f6f50467ebc67f01dec45f9e2\", unique = \"f5def2e8022b4e59a17d3c16414034fe\", legend = \"cff71f2e472041ce80c6fbd296f42e2d\" },\n\trogue = { normal = \"9487b06867bc46269ed1d855420f457f\", unique = \"b3081fb2fb1445fa90b12b01481a78ef\", legend = \"c357d2daf31a489d95b8fa47e50dd879\" },\n}\nself.ClassToFrame = {\n\twarrior = \"warrior\",\n\tfighter = \"warrior\",\n\tpage = \"warrior\",\n\tspearman = \"warrior\",\n\tmagician = \"magician\",\n\tfirepoison = \"magician\",\n\ticelightning = \"magician\",\n\tcleric = \"magician\",\n\tcurse = \"rogue\",\n\tshiv = \"rogue\",\n\trogue = \"rogue\",\n\tassassin = \"rogue\",\n\thermit = \"rogue\",\n\tthief = \"rogue\",\n\tthiefmaster = \"rogue\",\n}\nself.NodeIcons = {\n\tcombat = \"f98db6823e894a4f90308d61f75894ac\",\n\telite = \"793ed8a757534b89a82f460747d2df24\",\n\tboss = \"423056cdbbc04f4da131b9721c404d96\",\n\tshop = \"da37e1fac55d455b9ade08569f09f798\",\n\trest = \"b86c1b0568bd45f3ae4a4b97e1b4a594\",\n\ttreasure = \"f8a6d58e20f54e2ca899485055df1ce4\",\n}\nself.ClassPortraits = {\n\twarrior = \"28c88fdc5ab44f34a8b3fc1e19d4ce78\",\n\tmagician = \"3b9ea1f066a744bb859df47fef817277\",\n\trogue = \"efa920e58d31426486ef974106e7dc8b\",\n}\nself:GenerateMap()\nself:BindButtons()\nself:AddRelic(\"ironHeart\")\nself:ApplySoulUnlocks()\nself:RenderPotions()\nself:TeleportToActMap()\nself:ShowMap()", + "Code": "if self.SelectedClass == \"magician\" then\n\tself.PlayerMaxHp = 70\nself.RunDeck = { \"EnergyBolt\", \"EnergyBolt\", \"EnergyBolt\", \"EnergyBolt\", \"EnergyBolt\", \"MagicGuard\", \"MagicGuard\", \"MagicGuard\", \"MagicGuard\", \"MagicClaw\" }\nelseif self.SelectedClass == \"rogue\" then\n\tself.PlayerMaxHp = 70\n\tself.RunDeck = { \"SilentStrike\", \"SilentStrike\", \"SilentStrike\", \"SilentStrike\", \"SilentStrike\", \"SilentDefend\", \"SilentDefend\", \"SilentDefend\", \"SilentDefend\", \"SilentDefend\", \"Neutralize\", \"Survivor\" }\nelse\n\tself.PlayerMaxHp = 80\n\tself.RunDeck = { \"Strike\", \"Strike\", \"Strike\", \"Strike\", \"Strike\", \"Defend\", \"Defend\", \"Defend\", \"Defend\", \"Bash\" }\nend\nself.PlayerMaxHp = self.PlayerMaxHp - self:AscStartHpPenalty()\nself.PlayerHp = self.PlayerMaxHp\nself.Gold = 0\nself.Floor = 1\nself.RunLength = 5\nself.RunActive = true\nself.RunRelics = {}\nself.RunPotions = {}\nself.PotionSlots = 3\nself.Potions = {\n\tredPotion = { name = \"빨간 포션\", desc = \"HP 20 회복\", effect = \"heal\", value = 20, icon = \"393e2a0d8da544899eaa8b22c97f832b\" },\n\tfirebomb = { name = \"화염병\", desc = \"적에게 피해 20\", effect = \"damage\", value = 20, icon = \"7ddb464c2574456289a4eb72ce86f193\" },\n\twarriorElixir = { name = \"전사의 물약\", desc = \"힘 +2\", effect = \"strength\", value = 2, icon = \"7cfbd410581e4073815daaf5f3e6c72f\" },\n\tguardPotion = { name = \"수호의 물약\", desc = \"방어도 +12\", effect = \"block\", value = 12, icon = \"8f8402dfa0f746e18bf606ed74302c0a\" },\n\tmanaElixir = { name = \"마나 엘릭서\", desc = \"에너지 +2\", effect = \"energy\", value = 2, icon = \"ec2778c366f6477ab0f8e7f06bcd73f4\" },\n\tcursedVial = { name = \"저주의 병\", desc = \"적에게 약화 3\", effect = \"weak\", value = 3, icon = \"a9a2763fdb6849dcba3028c737487680\" },\n}\nself.Relics = {\n\tironHeart = { name = \"강철 심장\", desc = \"전투 시작 시 방어도 +6\", hook = \"combatStart\", effect = \"block\", value = 6, icon = \"e555b3a62f3c49dbb2c53784e6bd481f\" },\n\tenergyCore = { name = \"에너지 코어\", desc = \"턴 시작 시 에너지 +1\", hook = \"turnStart\", effect = \"energy\", value = 1, icon = \"a41014f28b47434ab9f49ef104523862\" },\n\tvampire = { name = \"흡혈 송곳니\", desc = \"공격 카드 사용 시 HP +1\", hook = \"cardPlayed\", effect = \"healOnAttack\", value = 1, icon = \"ed64cde7e6c44b9e99502847e54f04e9\" },\n\tgoldIdol = { name = \"황금 우상\", desc = \"전투 승리 시 메소 +10\", hook = \"combatReward\", effect = \"gold\", value = 10, icon = \"03bb05c92b8f45edb0f3dad2e118fd5a\" },\n\tpotionBelt = { name = \"장인의 벨트\", desc = \"물약 슬롯이 5칸으로 늘어난다\", hook = \"passive\", effect = \"potionSlots\", value = 5, icon = \"36725b4566ac40d4902e2ab2113c2096\" },\n\tburningBlood = { name = \"자쿰의 투구\", desc = \"전투 승리 시 HP 6 회복\", hook = \"combatEnd\", effect = \"healOnWin\", value = 6, icon = \"07f994825ce34131b419d43e890c878d\" },\n\tvajra = { name = \"미스릴 해머\", desc = \"전투 시작 시 힘 +1\", hook = \"combatStart\", effect = \"strength\", value = 1, icon = \"59d2579d46dc41d590a9e6b141ad458b\" },\n\tanchor = { name = \"메이플 실드\", desc = \"첫 턴 방어도 +10\", hook = \"combatStart\", effect = \"block\", value = 10, icon = \"6349413e08cc49848862591863d056a0\" },\n\tbagOfPrep = { name = \"모험가의 배낭\", desc = \"첫 턴 드로우 +2\", hook = \"combatStart\", effect = \"draw\", value = 2, icon = \"77b240cb8af245b4801a714380267ae9\" },\n\tbloodVial = { name = \"피의 목걸이\", desc = \"전투 시작 시 HP 2 회복\", hook = \"combatStart\", effect = \"heal\", value = 2, icon = \"c782e949506a42c49eb139c7e65527d7\" },\n\tbronzeScales = { name = \"브론즈 체인메일\", desc = \"피격 시 공격자에게 3 반사\", hook = \"onPlayerDamaged\", effect = \"thorns\", value = 3, icon = \"87272346b145412391622cf803f888d1\" },\n\tstrawberry = { name = \"건강의 반지\", desc = \"획득 시 최대 HP +7\", hook = \"passive\", effect = \"maxHp\", value = 7, icon = \"58f643e29c354c2783a5ce9a72ec155c\" },\n\tpenNib = { name = \"황금 깃펜\", desc = \"10번째 공격마다 피해 2배\", hook = \"attackCalc\", effect = \"penNib\", value = 10, icon = \"4d38d721cc064d14b31b9e9a92754139\" },\n\tboot = { name = \"브론즈 부츠\", desc = \"5 미만 공격 피해가 5로\", hook = \"attackCalc\", effect = \"boot\", value = 5, icon = \"d572b3aa4dac4162aa0d9e551b055dce\" },\n\takabeko = { name = \"황소 투구\", desc = \"전투 첫 공격 피해 +8\", hook = \"attackCalc\", effect = \"akabeko\", value = 8, icon = \"eb3330a6e2274eff958639f8792119d3\" },\n\tcentennialPuzzle = { name = \"백년의 부적\", desc = \"전투 첫 피격 시 드로우 3\", hook = \"onPlayerDamaged\", effect = \"firstLossDraw\", value = 3, icon = \"cfe5ed6556b944fc83ab58b774bb2b73\" },\n\tmeatOnBone = { name = \"고기 망치\", desc = \"승리 시 HP 50% 이하면 12 회복\", hook = \"combatEnd\", effect = \"healIfLow\", value = 12, icon = \"a93e8e87f184411c98c96b877d9f8b10\" },\n\tselfFormingClay = { name = \"점토 갑옷\", desc = \"피해를 받으면 다음 턴 방어 +3\", hook = \"onPlayerDamaged\", effect = \"clayBlock\", value = 3, icon = \"bb446793c5204d5db7d33563fe79f648\" },\n\tchampionBelt = { name = \"챔피언 벨트\", desc = \"취약 부여 시 약화 1 추가\", hook = \"cardDebuff\", effect = \"vulnAddsWeak\", value = 1, icon = \"7ca8c63026034113a561d6adf679fed2\" },\n}\nself.RelicPool = { \"energyCore\", \"vampire\", \"goldIdol\", \"potionBelt\", \"burningBlood\", \"vajra\", \"anchor\", \"bagOfPrep\", \"bloodVial\", \"bronzeScales\", \"strawberry\", \"penNib\", \"boot\", \"akabeko\", \"centennialPuzzle\", \"meatOnBone\", \"selfFormingClay\", \"championBelt\" }\nself.Enemies = {\n\tslime = { name = \"슬라임\", maxHp = 45, intents = { { kind = \"Attack\", value = 10 }, { kind = \"Attack\", value = 6 }, { kind = \"Defend\", value = 8 } } },\n\tslime_elite = { name = \"정예 슬라임\", maxHp = 70, intents = { { kind = \"Attack\", value = 14 }, { kind = \"Attack\", value = 8 }, { kind = \"Defend\", value = 10 }, { kind = \"Debuff\", value = 1, effect = \"weak\" } } },\n\tslime_boss = { name = \"슬라임 킹\", maxHp = 120, intents = { { kind = \"Attack\", value = 18 }, { kind = \"Defend\", value = 12 }, { kind = \"Debuff\", value = 2, effect = \"vuln\" }, { kind = \"Attack\", value = 10 }, { kind = \"Attack\", value = 22 } } },\n\torange_mushroom = { name = \"주황버섯\", maxHp = 16, intents = { { kind = \"Attack\", value = 5 }, { kind = \"Attack\", value = 5 }, { kind = \"Defend\", value = 4 }, { kind = \"Attack\", value = 8 } } },\n\tblue_mushroom = { name = \"파란버섯\", maxHp = 22, intents = { { kind = \"Attack\", value = 4 }, { kind = \"Attack\", value = 4 }, { kind = \"Attack\", value = 10 }, { kind = \"AddCard\", value = 0, card = \"Wound\", count = 1 } } },\n\tpig = { name = \"돼지\", maxHp = 18, intents = { { kind = \"Attack\", value = 6 }, { kind = \"Attack\", value = 6 }, { kind = \"Defend\", value = 5 } } },\n\tgreen_mushroom = { name = \"초록버섯\", maxHp = 20, intents = { { kind = \"Attack\", value = 7 }, { kind = \"Defend\", value = 3 }, { kind = \"Attack\", value = 9 } } },\n\tred_snail = { name = \"빨간 달팽이\", maxHp = 14, intents = { { kind = \"Attack\", value = 5 }, { kind = \"Defend\", value = 6 }, { kind = \"Attack\", value = 7 } } },\n\tstump = { name = \"나무토막\", maxHp = 19, intents = { { kind = \"Defend\", value = 5 }, { kind = \"Attack\", value = 8 }, { kind = \"Attack\", value = 6 } } },\n\tmushmom = { name = \"머쉬맘\", maxHp = 75, intents = { { kind = \"Defend\", value = 10 }, { kind = \"Debuff\", value = 2, effect = \"weak\" }, { kind = \"Attack\", value = 16 }, { kind = \"Attack\", value = 9 }, { kind = \"Defend\", value = 6 }, { kind = \"AddCard\", value = 0, card = \"Burn\", count = 1 } } },\n\tmodified_snail = { name = \"변형된 달팽이\", maxHp = 60, intents = { { kind = \"Attack\", value = 12 }, { kind = \"Defend\", value = 8 }, { kind = \"Attack\", value = 7 }, { kind = \"Attack\", value = 14 }, { kind = \"Debuff\", value = 1, effect = \"weak\" } } },\n\tking_slime = { name = \"킹 슬라임\", maxHp = 130, intents = { { kind = \"Attack\", value = 18 }, { kind = \"Defend\", value = 14 }, { kind = \"Debuff\", value = 2, effect = \"vuln\" }, { kind = \"Attack\", value = 12 }, { kind = \"Attack\", value = 24 } } },\n\toctopus = { name = \"문어\", maxHp = 15, intents = { { kind = \"Attack\", value = 5 }, { kind = \"Attack\", value = 6 }, { kind = \"Defend\", value = 4 } } },\n\tkapa_drake = { name = \"카파 드레이크\", maxHp = 24, intents = { { kind = \"Attack\", value = 9 }, { kind = \"Attack\", value = 6 }, { kind = \"Defend\", value = 6 }, { kind = \"Attack\", value = 11 } } },\n\tjunior_neki = { name = \"주니어 네키\", maxHp = 18, intents = { { kind = \"Attack\", value = 6 }, { kind = \"Attack\", value = 8 }, { kind = \"Debuff\", value = 1, effect = \"weak\" } } },\n\tjunior_bugi = { name = \"주니어 부기\", maxHp = 20, intents = { { kind = \"Attack\", value = 7 }, { kind = \"Defend\", value = 5 }, { kind = \"Attack\", value = 9 } } },\n\tdile = { name = \"다일\", maxHp = 65, intents = { { kind = \"Attack\", value = 13 }, { kind = \"Defend\", value = 9 }, { kind = \"Attack\", value = 8 }, { kind = \"Attack\", value = 16 }, { kind = \"Debuff\", value = 1, effect = \"weak\" } } },\n\tmano = { name = \"마노\", maxHp = 80, intents = { { kind = \"Defend\", value = 12 }, { kind = \"Attack\", value = 14 }, { kind = \"Debuff\", value = 1, effect = \"vuln\" }, { kind = \"Attack\", value = 10 }, { kind = \"AddCard\", value = 0, card = \"Wound\", count = 1 } } },\n}\nself.CurrentNodeId = \"\"\nself.CurrentEnemyId = \"\"\nself.PlayerJob = \"\"\nself.Jobs = {\n\twarrior = {\n\t\t{ id = \"fighter\", name = \"파이터\", desc = \"콤보와 다단 공격 특화\\n공격으로 콤보를 쌓고\\n추가타로 압박\", starter = \"ComboAttack\", tier = 2, parent = \"warrior\" },\n\t\t{ id = \"page\", name = \"페이지\", desc = \"홀리 포스와 방어 특화\\n홀리 차지를 쌓아\\n공격과 생존 강화\", starter = \"HolyCharge\", tier = 2, parent = \"warrior\" },\n\t\t{ id = \"spearman\", name = \"스피어맨\", desc = \"광역·장기전 계열\\n대화재 · 소용돌이\\n불의 심장\", starter = \"Conflagration\", tier = 2, parent = \"warrior\" },\n\t},\n\tfighter = {\n\t\t{ id = \"crusader\", name = \"크루세이더\", desc = \"파이터의 3차 전직\\n콤보 상한과 연계 피해 강화\\n파이터 카드 계승\", starter = \"ComboSynergy\", tier = 3, parent = \"fighter\" },\n\t},\n\tpage = {\n\t\t{ id = \"knight\", name = \"나이트\", desc = \"페이지의 3차 전직\\n홀리 차지를 공격·방어·회복으로 전환\\n페이지 카드 계승\", starter = \"DivineCharge\", tier = 3, parent = \"page\" },\n\t},\n\tspearman = {\n\t\t{ id = \"berserker\", name = \"버서커\", desc = \"스피어맨의 3차 전직\\n아이언클래드 장기전 풀 계승\\n전사 카드 사용\", starter = \"\", tier = 3, parent = \"spearman\" },\n\t},\n\tmagician = {\n\t\t{ id = \"firepoison\", name = \"위자드(불·독)\", desc = \"화염·독 특화\\n파이어 애로우\\n포이즌 브레스 · 앰플\", starter = \"FireArrow\", tier = 2, parent = \"magician\" },\n\t\t{ id = \"icelightning\", name = \"위자드(썬·콜)\", desc = \"광역·빙결 특화\\n썬더 볼트(전체)\\n콜드 빔 · 칠링 스텝\", starter = \"ThunderBolt\", tier = 2, parent = \"magician\" },\n\t\t{ id = \"cleric\", name = \"클레릭\", desc = \"회복·축복 특화\\n힐 · 블레스\\n홀리 애로우\", starter = \"Heal\", tier = 2, parent = \"magician\" },\n\t},\n\trogue = {\n\t\t{ id = \"assassin\", name = \"Assassin\", desc = \"표창 중심 전직\\n표창 생성과 연속 공격\\n빠른 마무리\", starter = \"JavelinAcceleration\", tier = 2, parent = \"rogue\" },\n\t\t{ id = \"thief\", name = \"Thief\", desc = \"단검 중심 전직\\n드로우와 운영 강화\\n빠른 연계\", starter = \"DaggerAcceleration\", tier = 2, parent = \"rogue\" },\n\t},\n\tassassin = {\n\t\t{ id = \"hermit\", name = \"Hermit\", desc = \"Assassin의 3차 전직\\n표창 생성과 강화 심화\\n연속 공격 완성\", starter = \"SpiritJavelin\", tier = 3, parent = \"assassin\" },\n\t},\n\tthief = {\n\t\t{ id = \"thiefmaster\", name = \"Thief Master\", desc = \"Thief의 3차 전직\\n단검·교활·중독 심화\\n연계 운영 완성\", starter = \"Venom\", tier = 3, parent = \"thief\" },\n\t},\n}\nself.JobMeta = {\n\tfighter = { name = \"파이터\", starter = \"ComboAttack\", tier = 2, parent = \"warrior\", sourceClass = \"warrior\" },\n\tpage = { name = \"페이지\", starter = \"HolyCharge\", tier = 2, parent = \"warrior\", sourceClass = \"warrior\" },\n\tspearman = { name = \"스피어맨\", starter = \"Conflagration\", tier = 2, parent = \"warrior\", sourceClass = \"warrior\" },\n\tcrusader = { name = \"크루세이더\", starter = \"ComboSynergy\", tier = 3, parent = \"fighter\", sourceClass = \"fighter\" },\n\tknight = { name = \"나이트\", starter = \"DivineCharge\", tier = 3, parent = \"page\", sourceClass = \"page\" },\n\tberserker = { name = \"버서커\", starter = \"\", tier = 3, parent = \"spearman\", sourceClass = \"spearman\" },\n\tfirepoison = { name = \"위자드(불·독)\", starter = \"FireArrow\", tier = 2, parent = \"magician\", sourceClass = \"magician\" },\n\ticelightning = { name = \"위자드(썬·콜)\", starter = \"ThunderBolt\", tier = 2, parent = \"magician\", sourceClass = \"magician\" },\n\tcleric = { name = \"클레릭\", starter = \"Heal\", tier = 2, parent = \"magician\", sourceClass = \"magician\" },\n\tassassin = { name = \"Assassin\", starter = \"JavelinAcceleration\", tier = 2, parent = \"rogue\", sourceClass = \"rogue\" },\n\tthief = { name = \"Thief\", starter = \"DaggerAcceleration\", tier = 2, parent = \"rogue\", sourceClass = \"rogue\" },\n\thermit = { name = \"Hermit\", starter = \"SpiritJavelin\", tier = 3, parent = \"assassin\", sourceClass = \"assassin\" },\n\tthiefmaster = { name = \"Thief Master\", starter = \"Venom\", tier = 3, parent = \"thief\", sourceClass = \"thief\" },\n}\nself.ClassGroups = {\n\twarrior = { \"warrior\", \"fighter\", \"crusader\", \"page\", \"knight\", \"spearman\", \"berserker\" },\n\tmagician = { \"magician\", \"firepoison\", \"icelightning\", \"cleric\" },\n\trogue = { \"rogue\", \"assassin\", \"hermit\", \"thief\", \"thiefmaster\" },\n}\nself.ClassLineages = {\n\twarrior = { \"warrior\" },\n\tfighter = { \"warrior\", \"fighter\" },\n\tcrusader = { \"warrior\", \"fighter\", \"crusader\" },\n\tpage = { \"warrior\", \"page\" },\n\tknight = { \"warrior\", \"page\", \"knight\" },\n\tspearman = { \"warrior\", \"spearman\" },\n\tberserker = { \"warrior\", \"spearman\", \"berserker\" },\n\tmagician = { \"magician\" },\n\tfirepoison = { \"magician\", \"firepoison\" },\n\ticelightning = { \"magician\", \"icelightning\" },\n\tcleric = { \"magician\", \"cleric\" },\n\trogue = { \"rogue\" },\n\tassassin = { \"rogue\", \"assassin\" },\n\thermit = { \"rogue\", \"assassin\", \"hermit\" },\n\tthief = { \"rogue\", \"thief\" },\n\tthiefmaster = { \"rogue\", \"thief\", \"thiefmaster\" },\n}\nself.CardFrames = {\n\twarrior = { normal = \"4bb57ef88ef449fdaf958f6cf37fe44b\", unique = \"4f71c124c8bc4e13b5e9fad392995f68\", legend = \"6d741a60c60743cb98ee740a1e2dbfed\" },\n\tmagician = { normal = \"d788d09f6f50467ebc67f01dec45f9e2\", unique = \"f5def2e8022b4e59a17d3c16414034fe\", legend = \"cff71f2e472041ce80c6fbd296f42e2d\" },\n\trogue = { normal = \"9487b06867bc46269ed1d855420f457f\", unique = \"b3081fb2fb1445fa90b12b01481a78ef\", legend = \"c357d2daf31a489d95b8fa47e50dd879\" },\n}\nself.ClassToFrame = {\n\twarrior = \"warrior\",\n\tfighter = \"warrior\",\n\tcrusader = \"warrior\",\n\tpage = \"warrior\",\n\tknight = \"warrior\",\n\tspearman = \"warrior\",\n\tmagician = \"magician\",\n\tfirepoison = \"magician\",\n\ticelightning = \"magician\",\n\tcleric = \"magician\",\n\tcurse = \"rogue\",\n\tshiv = \"rogue\",\n\trogue = \"rogue\",\n\tassassin = \"rogue\",\n\thermit = \"rogue\",\n\tthief = \"rogue\",\n\tthiefmaster = \"rogue\",\n}\nself.NodeIcons = {\n\tcombat = \"f98db6823e894a4f90308d61f75894ac\",\n\telite = \"793ed8a757534b89a82f460747d2df24\",\n\tboss = \"423056cdbbc04f4da131b9721c404d96\",\n\tshop = \"da37e1fac55d455b9ade08569f09f798\",\n\trest = \"b86c1b0568bd45f3ae4a4b97e1b4a594\",\n\ttreasure = \"f8a6d58e20f54e2ca899485055df1ce4\",\n}\nself.ClassPortraits = {\n\twarrior = \"28c88fdc5ab44f34a8b3fc1e19d4ce78\",\n\tmagician = \"3b9ea1f066a744bb859df47fef817277\",\n\trogue = \"efa920e58d31426486ef974106e7dc8b\",\n}\nself:GenerateMap()\nself:BindButtons()\nself:AddRelic(\"ironHeart\")\nself:ApplySoulUnlocks()\nself:RenderPotions()\nself:TeleportToActMap()\nself:ShowMap()", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -1896,7 +1917,7 @@ "Name": null }, "Arguments": [], - "Code": "self:ShowState(\"combat\")\nself:KickCombatCamera()\nself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/Result\", false)\nself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/PotionMenu\", false)\nself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/TooltipBox\", false)\nself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/DiscardPrompt\", false)\nself:SetText(\"/ui/RunUIGroup/CombatHud/PlayerPanel/Name\", self:JobLabel())\nself.MaxEnergy = 3\nself.Turn = 0\nself.PlayerBlock = 0\nself.BlockGainMultiplier = 1\nself.CardsDrawnThisCombat = 0\nself.HandCostZeroThisTurn = false\nself.DrawDisabledThisTurn = false\nself.NextSkillCostZero = false\nself.NextSkillRepeatCount = 0\nself.SkillCostReductionThisTurn = 0\nself.CombatCardCostReduction = {}\nself.SkillSlyOnPlayCards = {}\nself.TurnSkillSlyCards = {}\nself.ShivFirstDamageBonusUsed = false\nself.ActiveAttackDamageVsWeakMultiplier = 1\nself.DrawDamageThisTurn = 0\nself.DrawPoisonThisTurn = 0\nself.ShivAoeThisCombat = false\nself.PoisonApplicationsThisCombat = 0\nself.EnemyStrengthLossThisTurn = 0\nself.PlayerStr = 0\nself.PlayerDex = 0\nself.PlayerThorns = 0\nself.PlayerWeak = 0\nself.PlayerVuln = 0\nself.PlayerIntangible = 0\nself.BonusRewardScreens = 0\nself.ActiveKillReward = 0\nself.ActiveKillMaxHpGain = 0\nself.PlayerPowers = {}\nself.FightAttackCount = 0\nself.TurnAttackCardsPlayed = 0\nself.TurnDiscardedCards = 0\nself.TurnCardsPlayedThisTurn = 0\nself.DamageDealtThisTurn = 0\nself.DmgPopSeq = 0\nself.FirstHpLossDone = false\nself.ClayBlockNext = 0\nself.DiscardSelectRemaining = 0\nself.DiscardSelectTotal = 0\nself.DiscardPostShiv = 0\nself.DiscardShivPerPick = 0\nself.RetainSelectActive = false\nself.ReserveSelectActive = false\nself.NextTurnBlock = 0\nself.NextTurnDraw = 0\nself.NextTurnKeepBlock = false\nself.NextTurnAttackMultiplier = 1\nself.TurnAttackMultiplier = 1\nself.NextTurnSelectPrompt = \"\"\nself.NextTurnSelectCopies = 0\nself.NextTurnAddCards = {}\nself.ZeroCostCardIdsThisTurn = {}\nself.CombatOver = false\nself.DiscardPile = {}\nself.ExhaustPile = {}\nself.Hand = {}\nself.Cards = {\n\tStrike = { name = \"타격\", cost = 1, desc = \"피해 6\", kind = \"Attack\", damage = 6, class = \"warrior\", rarity = \"normal\", fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tBash = { name = \"강타\", cost = 2, desc = \"피해 8, 취약 2\", kind = \"Attack\", damage = 8, vuln = 2, class = \"warrior\", rarity = \"normal\", fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tDefend = { name = \"수비\", cost = 1, desc = \"방어도 5\", kind = \"Skill\", block = 5, class = \"warrior\", rarity = \"normal\", image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tAnger = { name = \"분노\", cost = 0, desc = \"피해 6\", kind = \"Attack\", damage = 6, class = \"warrior\", rarity = \"normal\", fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tMoltenFist = { name = \"녹아내리는 주먹\", cost = 1, desc = \"피해 10, 취약 2. 소멸.\", kind = \"Attack\", damage = 10, vuln = 2, class = \"warrior\", rarity = \"normal\", exhaust = true, fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tBodySlam = { name = \"몸통 박치기\", cost = 1, desc = \"현재 방어도만큼 피해를 줍니다.\", kind = \"Attack\", damageFromCurrentBlock = 1, class = \"warrior\", rarity = \"normal\", fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tHeadbutt = { name = \"박치기\", cost = 1, desc = \"피해 9, 카드 1장 뽑기\", kind = \"Attack\", damage = 9, class = \"warrior\", rarity = \"normal\", draw = 1, fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tSwordBoomerang = { name = \"부메랑 칼날\", cost = 1, desc = \"무작위 적에게 피해 3 x 3회\", kind = \"Attack\", damage = 3, class = \"warrior\", rarity = \"normal\", hits = 3, randomTargetEachHit = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tSetupStrike = { name = \"사전 타격\", cost = 1, desc = \"피해 7, 힘 +2\", kind = \"Attack\", damage = 7, strength = 2, class = \"warrior\", rarity = \"normal\", fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tTwinStrike = { name = \"이중 타격\", cost = 1, desc = \"피해 5 x 2회\", kind = \"Attack\", damage = 5, class = \"warrior\", rarity = \"normal\", hits = 2, fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tBreakthrough = { name = \"정면 돌파\", cost = 1, desc = \"모든 적에게 피해 9\", kind = \"Attack\", damage = 9, class = \"warrior\", rarity = \"normal\", aoe = true, fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tThunderclap = { name = \"천둥\", cost = 1, desc = \"모든 적에게 피해 4, 취약 1\", kind = \"Attack\", damage = 4, vuln = 1, class = \"warrior\", rarity = \"normal\", affectsAllEnemies = true, aoe = true, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"115e309771604743853abad2d8d186bc\" },\n\tIronWave = { name = \"철의 파동\", cost = 1, desc = \"피해 5, 방어도 5\", kind = \"Attack\", damage = 5, block = 5, class = \"warrior\", rarity = \"normal\", fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tPommelStrike = { name = \"폼멜 타격\", cost = 1, desc = \"피해 9, 카드 1장 뽑기\", kind = \"Attack\", damage = 9, class = \"warrior\", rarity = \"normal\", draw = 1, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tPerfectedStrike = { name = \"완벽한 타격\", cost = 2, desc = \"피해 6. 보유한 이름에 \\\"타격\\\"이 포함된 카드마다 피해 +2\", kind = \"Attack\", damage = 6, damageNameMatch = \"타격\", damagePerOwnedNameMatch = 2, class = \"warrior\", rarity = \"normal\", fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tCinder = { name = \"잿불\", cost = 2, desc = \"피해 18. 소멸.\", kind = \"Attack\", damage = 18, class = \"warrior\", rarity = \"normal\", exhaust = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tBloodletting = { name = \"사혈\", cost = 0, desc = \"에너지 +2\", kind = \"Skill\", class = \"warrior\", rarity = \"normal\", gainEnergy = 2, image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tTremble = { name = \"떨림\", cost = 1, desc = \"취약 3. 소멸.\", kind = \"Skill\", vuln = 3, class = \"warrior\", rarity = \"normal\", exhaust = true, image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tArmaments = { name = \"전투장비\", cost = 1, desc = \"방어도 5, 카드 1장 뽑기\", kind = \"Skill\", block = 5, class = \"warrior\", rarity = \"normal\", draw = 1, image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tTrueGrit = { name = \"진정한 끈기\", cost = 1, desc = \"방어도 7, 카드 1장 버리기\", kind = \"Skill\", block = 7, class = \"warrior\", rarity = \"normal\", discard = 1, image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tHavoc = { name = \"파괴\", cost = 1, desc = \"다음 스킬의 비용이 0\", kind = \"Skill\", class = \"warrior\", rarity = \"normal\", nextSkillCostZero = true, image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tShrugItOff = { name = \"흘려보내기\", cost = 1, desc = \"방어도 8, 카드 1장 뽑기\", kind = \"Skill\", block = 8, class = \"warrior\", rarity = \"normal\", draw = 1, image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tBloodWall = { name = \"피의 벽\", cost = 2, desc = \"방어도 16\", kind = \"Skill\", block = 16, class = \"warrior\", rarity = \"normal\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tWhirlwind = { name = \"소용돌이\", cost = 0, desc = \"모든 에너지를 사용해 에너지당 모든 적에게 피해 5\", kind = \"Attack\", damage = 0, class = \"warrior\", rarity = \"unique\", useAllEnergy = true, xDamagePerEnergy = 5, aoe = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tSpite = { name = \"악의\", cost = 0, desc = \"피해 5 x 2회\", kind = \"Attack\", damage = 5, class = \"warrior\", rarity = \"unique\", hits = 2, fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tBully = { name = \"협박\", cost = 0, desc = \"피해 4. 대상이 약화 상태면 피해 2배\", kind = \"Attack\", damage = 4, class = \"warrior\", rarity = \"unique\", attackDamageVsWeakMultiplier = 2, fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tPillage = { name = \"갈취\", cost = 1, desc = \"피해 6, 카드 2장 뽑기\", kind = \"Attack\", damage = 6, class = \"warrior\", rarity = \"unique\", draw = 2, fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tRampage = { name = \"광란\", cost = 2, desc = \"피해 12. 사용할 때마다 이번 전투에서 비용 1 감소\", kind = \"Attack\", damage = 12, class = \"warrior\", rarity = \"unique\", combatCostReductionOnPlay = 1, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tAshenStrike = { name = \"잿빛 타격\", cost = 1, desc = \"피해 6. 이번 전투에서 뽑은 카드마다 피해 +1\", kind = \"Attack\", damage = 6, damagePerCardDrawnThisCombat = 1, class = \"warrior\", rarity = \"unique\", fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tDismantle = { name = \"해체\", cost = 1, desc = \"피해 8 x 2회\", kind = \"Attack\", damage = 8, class = \"warrior\", rarity = \"unique\", hits = 2, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"115e309771604743853abad2d8d186bc\" },\n\tHemokinesis = { name = \"혈류\", cost = 1, desc = \"피해 15\", kind = \"Attack\", damage = 15, class = \"warrior\", rarity = \"unique\", fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tFightMe = { name = \"덤벼라!\", cost = 2, desc = \"피해 5 x 2회, 힘 +3\", kind = \"Attack\", damage = 5, strength = 3, class = \"warrior\", rarity = \"unique\", hits = 2, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tUnrelenting = { name = \"무자비\", cost = 2, desc = \"피해 14, 에너지 +1\", kind = \"Attack\", damage = 14, class = \"warrior\", rarity = \"unique\", gainEnergy = 1, fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tUppercut = { name = \"어퍼컷\", cost = 2, desc = \"피해 12, 약화 1, 취약 1\", kind = \"Attack\", damage = 12, weak = 1, vuln = 1, class = \"warrior\", rarity = \"unique\", fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tBludgeon = { name = \"몽둥이질\", cost = 3, desc = \"피해 32\", kind = \"Attack\", damage = 32, class = \"warrior\", rarity = \"unique\", fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tHowlFromBeyond = { name = \"저편의 울음소리\", cost = 3, desc = \"모든 적에게 피해 16. 소멸.\", kind = \"Attack\", damage = 16, class = \"warrior\", rarity = \"unique\", exhaust = true, aoe = true, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tStomp = { name = \"짓밟기\", cost = 3, desc = \"모든 적에게 피해 12. 이번 턴 사용한 공격 카드마다 피해 +2\", kind = \"Attack\", damage = 12, damagePerAttackPlayedThisTurn = 2, class = \"warrior\", rarity = \"unique\", aoe = true, fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tRage = { name = \"격노\", cost = 0, desc = \"방어도 5, 카드 1장 뽑기\", kind = \"Skill\", block = 5, class = \"warrior\", rarity = \"unique\", draw = 1, image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tBattleTrance = { name = \"전투 최면\", cost = 0, desc = \"카드 3장 뽑기. 이번 턴 더 뽑을 수 없음\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", draw = 3, drawDisabledThisTurn = true, image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tColossus = { name = \"거상\", cost = 1, desc = \"방어도 5, 무형 1\", kind = \"Skill\", intangible = 1, block = 5, class = \"warrior\", rarity = \"unique\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tSecondWind = { name = \"기사회생\", cost = 1, desc = \"손의 공격이 아닌 모든 카드를 소멸시키고, 소멸시킨 카드마다 방어도 5\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", exhaustHandNonAttack = true, blockPerExhaustedCard = 5, image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tTaunt = { name = \"도발\", cost = 1, desc = \"방어도 7, 취약 1\", kind = \"Skill\", block = 7, vuln = 1, class = \"warrior\", rarity = \"unique\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tBurningPact = { name = \"불타는 조약\", cost = 1, desc = \"카드 1장 버리고 카드 3장 뽑기\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", draw = 3, discard = 1, image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tEvilEye = { name = \"악마의 눈\", cost = 1, desc = \"방어도 16\", kind = \"Skill\", block = 16, class = \"warrior\", rarity = \"unique\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tForgottenRitual = { name = \"잊힌 의식\", cost = 1, desc = \"에너지 +2. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", gainEnergy = 2, exhaust = true, image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tDrumOfBattle = { name = \"전투의 북소리\", cost = 1, desc = \"카드 2장 뽑기, 에너지 +1. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", draw = 2, gainEnergy = 1, exhaust = true, image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tDominate = { name = \"제압\", cost = 1, desc = \"취약 2, 힘 +2. 소멸.\", kind = \"Skill\", strength = 2, vuln = 2, class = \"warrior\", rarity = \"unique\", exhaust = true, image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tInfernalBlade = { name = \"지옥검\", cost = 1, desc = \"무작위 공격 카드 1장을 손으로 가져옵니다. 이번 턴 동안 그 카드를 비용 없이 사용할 수 있습니다. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", addRandomCardCount = 1, addRandomCardKind = \"Attack\", addRandomCardSameClass = true, addedCardsCostZeroThisTurn = true, exhaust = true, image = \"115e309771604743853abad2d8d186bc\" },\n\tExpectAFight = { name = \"싸움 준비\", cost = 1, desc = \"이번 턴 스킬 비용 1 감소\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", skillCostReductionThisTurn = 1, image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tFlameBarrier = { name = \"화염 장벽\", cost = 2, desc = \"방어도 12, 가시 4\", kind = \"Skill\", block = 12, thorns = 4, class = \"warrior\", rarity = \"unique\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tStoneArmor = { name = \"돌 갑옷\", cost = 1, desc = \"매턴 방어도 +4\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 4, class = \"warrior\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tFeelNoPain = { name = \"무감각\", cost = 1, desc = \"매턴 방어도 +3\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 3, class = \"warrior\", rarity = \"unique\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tInflame = { name = \"발화\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"warrior\", rarity = \"unique\", image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tInferno = { name = \"불바다\", cost = 1, desc = \"매턴 모든 적에게 피해 6\", kind = \"Power\", powerEffect = \"damagePerTurn\", value = 6, class = \"warrior\", rarity = \"unique\", image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tJuggling = { name = \"저글링\", cost = 1, desc = \"카드를 사용할 때마다 무작위 적에게 피해 3\", kind = \"Power\", cardPlayedRandomDamage = 3, class = \"warrior\", rarity = \"unique\", image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tRupture = { name = \"파열\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"warrior\", rarity = \"unique\", image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tVicious = { name = \"포악함\", cost = 1, desc = \"턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", class = \"warrior\", rarity = \"unique\", turnStartDraw = 1, image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tStampede = { name = \"쇄도\", cost = 2, desc = \"카드를 사용할 때마다 무작위 적에게 피해 8\", kind = \"Power\", cardPlayedRandomDamage = 8, class = \"warrior\", rarity = \"unique\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tPactsEnd = { name = \"조약의 끝\", cost = 0, desc = \"뽑을 카드 더미가 비었을 때 모든 적에게 피해 17\", kind = \"Attack\", damage = 17, class = \"warrior\", rarity = \"legend\", playableWhenDrawPileEmpty = true, aoe = true, fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tThrash = { name = \"난타\", cost = 1, desc = \"피해 4 x 2회. 이번 턴 사용한 공격 카드마다 피해 +2\", kind = \"Attack\", damage = 4, damagePerAttackPlayedThisTurn = 2, class = \"warrior\", rarity = \"legend\", hits = 2, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tConflagration = { name = \"대화재\", cost = 1, desc = \"모든 적에게 피해 2 x 4회\", kind = \"Attack\", damage = 2, class = \"warrior\", rarity = \"legend\", hits = 4, aoe = true, fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tFeed = { name = \"포식\", cost = 1, desc = \"피해를 10 줍니다. 치명타라면, 최대 체력이 3 증가합니다. 소멸.\", kind = \"Attack\", damage = 10, maxHpOnKill = 3, class = \"warrior\", rarity = \"legend\", exhaust = true, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tTearAsunder = { name = \"갈가리 찢기\", cost = 2, desc = \"피해 5 x 3회\", kind = \"Attack\", damage = 5, class = \"warrior\", rarity = \"legend\", hits = 3, fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tFiendFire = { name = \"지옥불\", cost = 2, desc = \"손의 다른 카드마다 피해 +7 후 모두 버리기. 소멸.\", kind = \"Attack\", damage = 0, damagePerOtherHandCard = 7, class = \"warrior\", rarity = \"legend\", discardAll = true, exhaust = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tMangle = { name = \"난도질\", cost = 3, desc = \"피해 15. 이번 턴 적 힘 -10\", kind = \"Attack\", damage = 15, class = \"warrior\", rarity = \"legend\", enemyStrengthLossThisTurn = 10, fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tBrand = { name = \"낙인\", cost = 0, desc = \"카드 1장 버리기, 힘 +1\", kind = \"Skill\", strength = 1, class = \"warrior\", rarity = \"legend\", discard = 1, image = \"115e309771604743853abad2d8d186bc\" },\n\tCascade = { name = \"연쇄\", cost = 0, desc = \"뽑을 카드 더미 맨 위의 카드 X장을 사용합니다. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", playTopDrawPileCountPerEnergy = 1, useAllEnergy = true, exhaust = true, image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tPrimalForce = { name = \"원시의 힘\", cost = 0, desc = \"이번 턴 손의 카드 비용이 0\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", handCostZeroThisTurn = true, image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tOffering = { name = \"제물\", cost = 0, desc = \"에너지 +2, 카드 3장 뽑기. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", draw = 3, gainEnergy = 2, exhaust = true, image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tOneTwoPunch = { name = \"원투 펀치\", cost = 1, desc = \"다음 스킬을 1회 추가 발동\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", nextSkillRepeatCount = 1, image = \"251b6e12329048429490049a4f3cf564\" },\n\tStoke = { name = \"화력 증폭\", cost = 1, desc = \"손의 모든 카드를 소멸시키고, 소멸시킨 카드 수만큼 뽑습니다. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", exhaustHandAll = true, drawPerExhausted = 1, exhaust = true, image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tImpervious = { name = \"무적\", cost = 2, desc = \"방어도 30. 소멸.\", kind = \"Skill\", block = 30, class = \"warrior\", rarity = \"legend\", exhaust = true, image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tNotYet = { name = \"불굴\", cost = 2, desc = \"HP 10 회복. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", heal = 10, exhaust = true, image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tAggression = { name = \"공격성\", cost = 1, desc = \"턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", class = \"warrior\", rarity = \"legend\", turnStartDraw = 1, image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tCruelty = { name = \"악랄함\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"warrior\", rarity = \"legend\", image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tCrimsonMantle = { name = \"핏빛 망토\", cost = 1, desc = \"매턴 방어도 +8\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 8, class = \"warrior\", rarity = \"legend\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tPyre = { name = \"불의 심장\", cost = 2, desc = \"매턴 에너지 +1\", kind = \"Power\", powerEffect = \"energyPerTurn\", value = 1, class = \"warrior\", rarity = \"legend\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tDarkEmbrace = { name = \"어둠의 포옹\", cost = 2, desc = \"카드가 소멸될 때마다 카드 1장 뽑기\", kind = \"Power\", drawOnExhaust = 1, class = \"warrior\", rarity = \"legend\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tUnmovable = { name = \"요지부동\", cost = 2, desc = \"이번 전투 동안 방어도 획득량 2배\", kind = \"Power\", blockGainMultiplier = 2, powerEffect = \"blockPerTurn\", value = 0, class = \"warrior\", rarity = \"legend\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tJuggernaut = { name = \"절대적인 힘\", cost = 2, desc = \"카드를 사용할 때마다 무작위 적에게 피해 5\", kind = \"Power\", cardPlayedRandomDamage = 5, class = \"warrior\", rarity = \"legend\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tHellraiser = { name = \"지옥검무\", cost = 2, desc = \"이름에 \\\"타격\\\"이 포함된 카드를 뽑을 때마다, 무작위 적에게 사용합니다.\", kind = \"Power\", drawNameMatchAutoPlay = \"타격\", class = \"warrior\", rarity = \"legend\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tBarricade = { name = \"바리케이드\", cost = 3, desc = \"내 턴 시작 시 방어도가 사라지지 않습니다.\", kind = \"Power\", powerEffect = \"keepBlock\", value = 0, class = \"warrior\", rarity = \"legend\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tDemonForm = { name = \"악마의 형상\", cost = 3, desc = \"매턴 힘 +2\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 2, class = \"warrior\", rarity = \"legend\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tEnergyBolt = { name = \"에너지 볼트\", cost = 1, desc = \"피해 6\", kind = \"Attack\", damage = 6, class = \"magician\", rarity = \"normal\", fx = \"1d5877e1120a42d0907f204c959888b1\", image = \"e84880eaf89442128d3af2be5c80a74f\" },\n\tMagicGuard = { name = \"매직 가드\", cost = 1, desc = \"방어도 5\", kind = \"Skill\", block = 5, class = \"magician\", rarity = \"normal\", image = \"01b249c26eb34b8aaab774bf221907a1\" },\n\tMagicClaw = { name = \"매직 클로\", cost = 1, desc = \"피해 3 × 2회\", kind = \"Attack\", damage = 3, class = \"magician\", rarity = \"normal\", hits = 2, fx = \"ba4ac7c8f24845b68b7e689b7effcc93\", image = \"f3fcac2d460041b288cc1973caaaf30f\" },\n\tTeleport = { name = \"텔레포트\", cost = 1, desc = \"방어도 3, 드로 1\", kind = \"Skill\", block = 3, class = \"magician\", rarity = \"normal\", discardAll = true, drawPerDiscarded = 1, image = \"7f70a9dc7e304433bb8121dd9c4df98b\" },\n\tSlow = { name = \"슬로우\", cost = 1, desc = \"약화 2 부여\", kind = \"Skill\", weak = 2, class = \"magician\", rarity = \"normal\", image = \"7224cd3f9b7e497d9dd65f32a50865e4\" },\n\tFireArrow = { name = \"파이어 애로우\", cost = 1, desc = \"피해 8\", kind = \"Attack\", damage = 8, class = \"firepoison\", rarity = \"unique\", fx = \"4a937e208875468eb63d891806fba3cd\", image = \"6fa15fd3a0004b409ea516c11a67e533\" },\n\tPoisonBreath = { name = \"포이즌 브레스\", cost = 1, desc = \"독 4 부여\", kind = \"Skill\", class = \"firepoison\", rarity = \"unique\", poison = 4, image = \"07200f3c74854022baa7ebbefdc4ad8c\" },\n\tElementAmp = { name = \"엘레멘트 앰플\", cost = 1, desc = \"매 턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"firepoison\", rarity = \"legend\", image = \"06865473977849bebe79062dbd608944\" },\n\tThunderBolt = { name = \"썬더 볼트\", cost = 2, desc = \"모든 적에게 피해 6\", kind = \"Attack\", damage = 6, class = \"icelightning\", rarity = \"legend\", aoe = true, fx = \"7d52f5e389bd4d44a30cf7cc54538f8f\", image = \"c6685d33cb2641f09d11cfa2d5cc820c\" },\n\tColdBeam = { name = \"콜드 빔\", cost = 2, desc = \"피해 7, 약화 2\", kind = \"Attack\", damage = 7, weak = 2, class = \"icelightning\", rarity = \"unique\", image = \"e8f7c148c79f497d83014e3361f59f5c\" },\n\tChillingStep = { name = \"칠링 스텝\", cost = 1, desc = \"방어도 8\", kind = \"Skill\", block = 8, class = \"icelightning\", rarity = \"unique\", image = \"bef20873a68a4651a91d74be457c2cfc\" },\n\tHeal = { name = \"힐\", cost = 1, desc = \"HP 10 회복\", kind = \"Skill\", class = \"cleric\", rarity = \"unique\", heal = 10, image = \"8b935b7d7066493cb462834bbe287c74\" },\n\tBless = { name = \"블레스\", cost = 1, desc = \"힘 +1, 방어도 5\", kind = \"Skill\", block = 5, strength = 1, class = \"cleric\", rarity = \"unique\", image = \"607fc5457c1c44a0993a5c2fe3fb0c68\" },\n\tHolyArrow = { name = \"홀리 애로우\", cost = 1, desc = \"피해 8\", kind = \"Attack\", damage = 8, class = \"cleric\", rarity = \"unique\", fx = \"4faa7b78e09643cf86339b8b7cf2abac\", image = \"a80127195bf7471f9545b70e491f4719\" },\n\tWound = { name = \"상처\", cost = 0, desc = \"사용할 수 없다. 손패를 막는 저주.\", kind = \"Status\", class = \"curse\", rarity = \"normal\", unplayable = true, curse = true },\n\tBurn = { name = \"화상\", cost = 0, desc = \"사용 불가. 손패에 있으면 턴 종료 시 피해 2.\", kind = \"Status\", class = \"curse\", rarity = \"normal\", unplayable = true, curse = true, endTurnDamage = 2 },\n\tNeutralize = { name = \"커닝식 견제\", cost = 0, desc = \"피해를 3 줍니다. 약화를 1 부여합니다.\", kind = \"Attack\", damage = 3, weak = 1, class = \"rogue\", rarity = \"normal\", image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tSilentStrike = { name = \"초보 도적의 칼끝\", cost = 1, desc = \"피해를 6 줍니다.\", kind = \"Attack\", damage = 6, class = \"rogue\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tSurvivor = { name = \"골목길 생존술\", cost = 1, desc = \"방어도를 8 얻습니다. 카드를 1장 버립니다.\", kind = \"Skill\", block = 8, class = \"rogue\", rarity = \"normal\", discard = 1, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tSilentDefend = { name = \"낡은 가죽 방패\", cost = 1, desc = \"방어도를 5 얻습니다.\", kind = \"Skill\", block = 5, class = \"rogue\", rarity = \"normal\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tDoubleStab = { name = \"더블 스탭\", cost = 1, desc = \"피해를 4만큼 2번 줍니다.\", kind = \"Attack\", damage = 4, class = \"rogue\", rarity = \"normal\", hits = 2, image = \"92a5020c978c46bdabab910598118b86\" },\n\tLuckySeven = { name = \"럭키 세븐\", cost = 1, desc = \"피해를 3만큼 3번 줍니다.\", kind = \"Attack\", damage = 3, class = \"rogue\", rarity = \"unique\", hits = 3, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHaste = { name = \"헤이스트\", cost = 1, desc = \"카드를 1장 뽑습니다. 에너지를 1 얻습니다.\", kind = \"Skill\", class = \"rogue\", rarity = \"normal\", draw = 1, gainEnergy = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tDarkSight = { name = \"다크 사이트\", cost = 1, desc = \"무형을 1 얻습니다. 소멸.\", kind = \"Skill\", intangible = 1, class = \"rogue\", rarity = \"unique\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tFlashJump = { name = \"플래시 점프\", cost = 0, desc = \"방어도를 4 얻습니다. 카드를 1장 뽑습니다. 소멸.\", kind = \"Skill\", block = 4, class = \"rogue\", rarity = \"normal\", draw = 1, exhaust = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tNimbleBody = { name = \"님블 바디\", cost = 1, desc = \"민첩을 1 얻습니다. 매 턴 방어도를 2 얻습니다.\", kind = \"Power\", dex = 1, powerEffect = \"blockPerTurn\", value = 2, class = \"rogue\", rarity = \"unique\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tSlice = { name = \"짧은 단검질\", cost = 0, desc = \"피해를 6 줍니다.\", kind = \"Attack\", damage = 6, class = \"rogue\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tShiv = { name = \"표창\", cost = 0, desc = \"피해를 4 줍니다. 소멸.\", kind = \"Attack\", damage = 4, class = \"shiv\", rarity = \"normal\", exhaust = true, token = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDaggerSpray = { name = \"단검비\", cost = 1, desc = \"모든 적에게 피해를 4만큼 2번 줍니다.\", kind = \"Attack\", damage = 4, class = \"thief\", rarity = \"normal\", hits = 2, aoe = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDaggerThrow = { name = \"비도 투척\", cost = 1, desc = \"피해를 9 줍니다. 카드를 1장 뽑습니다. 카드를 1장 버립니다.\", kind = \"Attack\", damage = 9, class = \"thief\", rarity = \"normal\", draw = 1, discard = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tPoisonedStab = { name = \"초록 독단검\", cost = 1, desc = \"피해를 6 줍니다. 중독을 3 부여합니다.\", kind = \"Attack\", damage = 6, class = \"rogue\", rarity = \"normal\", poison = 3, image = \"19361e72087946b1888684185b40d935\" },\n\tSuckerPunch = { name = \"골목 기습\", cost = 1, desc = \"피해를 7 줍니다. 약화를 1 부여합니다.\", kind = \"Attack\", damage = 7, weak = 1, class = \"rogue\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tLeadingStrike = { name = \"초보 표창 던지기\", cost = 1, desc = \"피해를 3 줍니다. 표창을 1장 손으로 가져옵니다.\", kind = \"Attack\", damage = 3, class = \"rogue\", rarity = \"normal\", addShiv = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tFollowThrough = { name = \"연달아 찌르기\", cost = 1, desc = \"피해를 7 줍니다. 손에 다른 카드가 5장 이상 있다면, 1번 추가로 적중합니다.\", kind = \"Attack\", damage = 7, otherHandAtLeast = 5, bonusHitsWhenOtherHandAtLeast = 1, class = \"thief\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tFlickFlack = { name = \"커닝 난무\", cost = 1, desc = \"교활. 모든 적에게 피해를 6 줍니다.\", kind = \"Attack\", damage = 6, class = \"thief\", rarity = \"normal\", sly = true, aoe = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tRicochet = { name = \"통통 튀는 표창\", cost = 2, desc = \"교활. 무작위 적에게 피해를 3만큼 4번 줍니다.\", kind = \"Attack\", damage = 3, class = \"assassin\", rarity = \"normal\", hits = 4, randomTargetEachHit = true, sly = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tPrepared = { name = \"비장의 패\", cost = 1, desc = \"카드를 1장 버리고, 이번 턴에 준 피해의 절반만큼 방어를 얻습니다.\", kind = \"Skill\", blockPerDamageDealtThisTurn = 0.5, class = \"thief\", rarity = \"normal\", discard = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tAnticipate = { name = \"럭키 예감\", cost = 0, desc = \"이번 턴 동안 민첩을 2 얻습니다.\", kind = \"Skill\", endTurnDexLoss = 2, dex = 2, class = \"rogue\", rarity = \"normal\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tDeflect = { name = \"단검 쳐내기\", cost = 0, desc = \"방어도를 4 얻습니다.\", kind = \"Skill\", block = 4, class = \"rogue\", rarity = \"normal\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tBladeDance = { name = \"표창 별무리\", cost = 1, desc = \"표창을 3장 손으로 가져옵니다. 소멸.\", kind = \"Skill\", class = \"assassin\", rarity = \"normal\", addShiv = 3, exhaust = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBackflip = { name = \"커닝 곡예\", cost = 1, desc = \"방어도를 5 얻습니다. 카드를 2장 뽑습니다.\", kind = \"Skill\", block = 5, class = \"rogue\", rarity = \"normal\", draw = 2, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tDodgeAndRoll = { name = \"골목 구르기\", cost = 1, desc = \"방어도를 4 얻습니다. 다음 턴에, 방어도를 4 얻습니다\", kind = \"Skill\", block = 4, class = \"rogue\", rarity = \"normal\", nextTurnBlock = 4, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tPiercingWail = { name = \"골목의 살기\", cost = 1, desc = \"이번 턴 동안 모든 적이 힘을 6 잃습니다. 소멸.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", affectsAllEnemies = true, enemyStrengthLossThisTurn = 6, exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tCloakAndDagger = { name = \"망토 속 별\", cost = 1, desc = \"방어도를 6 얻습니다. 표창을 1장 손으로 가져옵니다.\", kind = \"Skill\", block = 6, class = \"assassin\", rarity = \"normal\", addShiv = 1, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tDeadlyPoison = { name = \"맹독 조제\", cost = 1, desc = \"중독을 5 부여합니다.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", poison = 5, image = \"19361e72087946b1888684185b40d935\" },\n\tSnakebite = { name = \"독니 단검\", cost = 2, desc = \"보존. 중독을 7 부여합니다.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", poison = 7, retain = true, image = \"19361e72087946b1888684185b40d935\" },\n\tUntouchable = { name = \"연막 속 숨기\", cost = 2, desc = \"교활. 방어도를 6 얻습니다.\", kind = \"Skill\", block = 6, class = \"rogue\", rarity = \"normal\", sly = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tSkewer = { name = \"꿰뚫는 표창\", cost = 2, desc = \"피해를 8만큼 X번 줍니다.\", kind = \"Attack\", class = \"assassin\", rarity = \"unique\", useAllEnergy = true, xDamagePerEnergy = 8, image = \"92a5020c978c46bdabab910598118b86\" },\n\tBackstab = { name = \"그림자 등찌르기\", cost = 0, desc = \"선천성. 피해를 10 줍니다. 소멸.\", kind = \"Attack\", damage = 10, class = \"rogue\", rarity = \"unique\", innate = true, exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tPreciseCut = { name = \"급소 절개\", cost = 0, desc = \"피해를 13 줍니다. 손에 있는 다른 카드 1장당 피해량이 2 감소합니다.\", kind = \"Attack\", damage = 13, damagePerOtherHandCard = -2, class = \"thief\", rarity = \"unique\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tFinisher = { name = \"마지막 칼끝\", cost = 1, desc = \"이번 턴에 사용한 공격 카드 1장당 피해를 6 줍니다.\", kind = \"Attack\", damage = 0, damagePerAttackPlayedThisTurn = 6, class = \"thief\", rarity = \"unique\", image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tMementoMori = { name = \"사신의 장부\", cost = 1, desc = \"피해를 9 줍니다. 이번 턴에 버린 카드 1장당 피해량이 4 증가합니다.\", kind = \"Attack\", damage = 9, damagePerDiscardedThisTurn = 4, class = \"thief\", rarity = \"unique\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tStrangle = { name = \"그림자 올가미\", cost = 1, desc = \"피해를 8 줍니다.\", kind = \"Attack\", damage = 8, class = \"thief\", rarity = \"unique\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tFlechettes = { name = \"표창 셈법\", cost = 1, desc = \"손에 있는 스킬 카드 1장당 피해를 5 줍니다.\", kind = \"Attack\", damage = 0, damagePerSkillInHand = 5, class = \"assassin\", rarity = \"unique\", image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tPounce = { name = \"어둠을 가르는 도약\", cost = 2, desc = \"피해를 12 줍니다. 다음에 사용하는 스킬 카드의 비용이 0 이 됩니다.\", kind = \"Attack\", damage = 12, class = \"assassin\", rarity = \"unique\", nextSkillCostZero = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tDash = { name = \"뒷골목 돌파\", cost = 2, desc = \"방어도를 10 얻습니다. 피해를 10 줍니다.\", kind = \"Attack\", damage = 10, block = 10, class = \"thief\", rarity = \"unique\", image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tPredator = { name = \"표창 끝의 추격\", cost = 2, desc = \"피해를 15 줍니다. 다음 턴에, 카드를 2장 뽑습니다.\", kind = \"Attack\", damage = 15, class = \"assassin\", rarity = \"unique\", nextTurnDraw = 2, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tPinpoint = { name = \"한 점 겨냥\", cost = 3, desc = \"피해를 15 줍니다. 이번 턴에 스킬을 사용할 때마다 비용이 1 감소합니다.\", kind = \"Attack\", damage = 15, class = \"assassin\", rarity = \"unique\", skillCostReductionThisTurn = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tCalculatedGamble = { name = \"메소 건 승부\", cost = 0, desc = \"손에 있는 모든 카드를 버린 뒤, 버린 카드의 수만큼 카드를 뽑습니다. 소멸.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", discardAll = true, drawPerDiscarded = 1, exhaust = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tExpose = { name = \"약점 들추기\", cost = 0, desc = \"대상 적의 모든 인공물과 방어도를 제거합니다. 취약을 2 부여합니다. 소멸.\", kind = \"Skill\", vuln = 2, class = \"thief\", rarity = \"unique\", removeEnemyBlock = true, removeEnemyArtifact = true, exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tHiddenDaggers = { name = \"숨겨둔 표창\", cost = 0, desc = \"카드를 2장 버립니다. 표창을 2장 손으로 가져옵니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"unique\", discard = 2, addShiv = 2, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tEscapePlan = { name = \"비상용 연막탄\", cost = 0, desc = \"카드를 1장 뽑습니다. 뽑은 카드가 스킬 카드라면, 방어도를 3 얻습니다.\", kind = \"Skill\", class = \"rogue\", rarity = \"unique\", draw = 1, drawSkillBlock = 3, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tAcrobatics = { name = \"지붕 위 곡예\", cost = 1, desc = \"카드를 3장 뽑습니다. 카드를 1장 버립니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", draw = 3, discard = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tHandTrick = { name = \"재빠른 손놀림\", cost = 1, desc = \"방어도를 7 얻습니다. 이번 턴 동안 손에 있는 스킬 카드 1장에 교활을 추가합니다.\", kind = \"Skill\", block = 7, class = \"thief\", rarity = \"unique\", turnHandSlyCount = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tExpertise = { name = \"노련한 단검술\", cost = 1, desc = \"손에 있는 카드가 6장이 될 때까지 카드를 뽑습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", drawUntilHandSize = 6, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tBubbleBubble = { name = \"독액 농축\", cost = 1, desc = \"적이 중독을 보유하고 있다면, 중독을 9 부여합니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", poison = 9, poisonIfTargetPoisoned = true, image = \"19361e72087946b1888684185b40d935\" },\n\tBlur = { name = \"흐린 잔영\", cost = 1, desc = \"방어도를 5 얻습니다. 다음 턴 시작 시 방어도가 사라지지 않습니다.\", kind = \"Skill\", block = 5, class = \"thief\", rarity = \"unique\", nextTurnKeepBlock = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tLegSweep = { name = \"발목 베기\", cost = 2, desc = \"약화를 2 부여합니다. 방어도를 11 얻습니다.\", kind = \"Skill\", block = 11, weak = 2, class = \"thief\", rarity = \"unique\", image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tUpMySleeve = { name = \"소매 속 표창\", cost = 2, desc = \"표창을 3장 손으로 가져옵니다. 이 카드의 비용이 1 감소합니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"unique\", addShiv = 3, combatCostReductionOnPlay = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBouncingFlask = { name = \"통통 독병\", cost = 2, desc = \"무작위 적에게 중독을 3만큼 3번 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"unique\", poison = 3, poisonHits = 3, poisonRandomTargets = true, image = \"19361e72087946b1888684185b40d935\" },\n\tReflex = { name = \"찰나의 반응\", cost = 3, desc = \"교활. 카드를 2장 뽑습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", draw = 2, sly = true, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tHaze = { name = \"보랏빛 독연기\", cost = 3, desc = \"교활. 모든 적에게 중독을 4 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"unique\", poison = 4, sly = true, image = \"19361e72087946b1888684185b40d935\" },\n\tTactician = { name = \"골목길 책략\", cost = 3, desc = \"교활. 에너지를 1 얻습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", gainEnergy = 1, sly = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tWellLaidPlans = { name = \"빈틈없는 작전\", cost = 1, desc = \"내 턴 종료 시, 카드를 최대 1장까지 보존합니다.\", kind = \"Power\", powerEffect = \"retainOne\", value = 1, class = \"thief\", rarity = \"unique\", image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tInfiniteBlades = { name = \"끝없는 표창통\", cost = 1, desc = \"내 턴 시작 시, 표창을 1장 손으로 가져옵니다.\", kind = \"Power\", class = \"assassin\", rarity = \"unique\", turnStartShiv = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tFootwork = { name = \"사뿐한 발놀림\", cost = 1, desc = \"민첩을 2 얻습니다.\", kind = \"Power\", dex = 2, class = \"thief\", rarity = \"unique\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tOutbreak = { name = \"독맥 터뜨리기\", cost = 2, desc = \"독이 3번 부여될 때마다 모든 적에게 6 피해를 줍니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"unique\", poisonApplicationBurstEvery = 3, poisonApplicationBurstDamage = 6, image = \"19361e72087946b1888684185b40d935\" },\n\tNoxiousFumes = { name = \"숨막히는 독연기\", cost = 1, desc = \"내 턴 시작 시, 모든 적에게 중독을 2 부여합니다.\", kind = \"Power\", powerEffect = \"poisonPerTurn\", value = 2, class = \"thief\", rarity = \"unique\", poison = 2, image = \"19361e72087946b1888684185b40d935\" },\n\tSpeedster = { name = \"그림자 속도전\", cost = 2, desc = \"내 턴 동안 카드를 뽑을 때마다, 모든 적에게 피해를 1 줍니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"unique\", drawDamage = 1, aoe = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tGrandFinale = { name = \"커닝의 대단원\", cost = 0, desc = \"뽑을 카드 더미에 카드가 없을 때만 사용할 수 있습니다. 모든 적에게 피해를 45 줍니다.\", kind = \"Attack\", damage = 45, class = \"thiefmaster\", rarity = \"legend\", playableWhenDrawPileEmpty = true, aoe = true, image = \"dbdbb1b56ae54672ae68ac6882fff6a2\" },\n\tAssassinate = { name = \"어둠 속 급소\", cost = 0, desc = \"선천성. 피해를 10 줍니다. 취약을 1 부여합니다. 소멸.\", kind = \"Attack\", damage = 10, vuln = 1, class = \"thiefmaster\", rarity = \"legend\", innate = true, exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tEchoingSlash = { name = \"메아리 칼자국\", cost = 2, desc = \"모든 적에게 피해를 6 줍니다. 적을 처치할 때마다 이 효과를 반복합니다.\", kind = \"Attack\", damage = 10, class = \"thiefmaster\", rarity = \"legend\", repeatOnKill = true, aoe = true, image = \"dbdbb1b56ae54672ae68ac6882fff6a2\" },\n\tTheHunt = { name = \"커닝 현상금\", cost = 1, desc = \"피해를 10 줍니다. 이 카드로 적을 처치하면 카드 보상을 추가로 얻습니다. 소멸.\", kind = \"Attack\", damage = 6, rewardOnKill = 1, class = \"assassin\", rarity = \"legend\", exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tMurder = { name = \"쌓여가는 살의\", cost = 3, desc = \"피해를 1 줍니다. 이번 전투 동안 뽑은 카드 1장당 피해량이 1 증가합니다.\", kind = \"Attack\", damage = 1, damagePerCardDrawnThisCombat = 1, class = \"thiefmaster\", rarity = \"legend\", image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tMalaise = { name = \"기운 빼는 독\", cost = 2, desc = \"에너지를 모두 사용하고, 사용한 에너지만큼 적에게 약화를 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", useAllEnergy = true, xWeakPerEnergy = 1, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tStormOfSteel = { name = \"쇠별 폭풍\", cost = 1, desc = \"손에 있는 모든 카드를 버립니다. 버린 카드의 수만큼 표창을 손으로 가져옵니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"legend\", discardAll = true, addShivPerDiscard = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tShadowStep = { name = \"그림자 발자국\", cost = 1, desc = \"손에 있는 모든 카드를 버립니다. 다음 턴에, 공격 카드의 피해량이 2배가 됩니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", discardAll = true, nextTurnAttackMultiplier = 2, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tShadowmeld = { name = \"연막 속 은신\", cost = 1, desc = \"이번 턴 동안 얻는 방어도가 2배가 됩니다.\", kind = \"Skill\", blockGainMultiplier = 2, class = \"thiefmaster\", rarity = \"legend\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tCorrosiveWave = { name = \"부식 독물결\", cost = 1, desc = \"이번 턴에 카드를 뽑을 때마다, 모든 적에게 중독을 2 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", drawPoison = 2, image = \"19361e72087946b1888684185b40d935\" },\n\tBladeOfInk = { name = \"먹빛 표창\", cost = 1, desc = \"잉크투성이 표창을 2장 손으로 가져옵니다.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", addShiv = 2, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBurst = { name = \"연속 술수\", cost = 1, desc = \"이번 턴에 다음에 사용하는 스킬 카드가 1번 추가로 사용됩니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", nextSkillRepeatCount = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tKnifeTrap = { name = \"숨은 칼날덫\", cost = 2, desc = \"교활. 모든 적에게 피해를 7 주고 중독을 2 부여합니다.\", kind = \"Attack\", damage = 7, class = \"thiefmaster\", rarity = \"legend\", poison = 2, sly = true, aoe = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBulletTime = { name = \"멈춘 듯한 순간\", cost = 3, desc = \"이번 턴 동안 더 이상 카드를 뽑을 수 없습니다. 이번 턴 동안 손에 있는 모든 카드를 비용 없이 사용할 수 있습니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", handCostZeroThisTurn = true, drawDisabledThisTurn = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tNightmare = { name = \"검은 꿈\", cost = 3, desc = \"카드를 1장 선택합니다. 다음 턴에, 그 카드의 복사본을 3장 손으로 가져옵니다. 소멸.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", nextTurnCopies = 3, nextTurnSelectHandCard = true, nextTurnSelectPrompt = \"복사할 카드를 선택하세요\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tToolsOfTheTrade = { name = \"도적의 연장통\", cost = 1, desc = \"내 턴 시작 시, 카드를 1장 뽑고 카드를 1장 버립니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"legend\", turnStartDraw = 1, turnStartDiscard = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tMasterPlanner = { name = \"작전의 달인\", cost = 2, desc = \"사용한 스킬 카드는 교활해집니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"legend\", skillSlyOnPlay = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tFanOfKnives = { name = \"사방 표창비\", cost = 2, desc = \"표창이 이제 모든 적을 대상으로 합니다. 표창을 4장 손으로 가져옵니다.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", addShiv = 4, shivAoe = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tSerpentForm = { name = \"독사의 몸놀림\", cost = 2, desc = \"카드를 사용할 때마다, 무작위 적에게 피해를 4 줍니다.\", kind = \"Power\", cardPlayedRandomDamage = 4, class = \"thiefmaster\", rarity = \"legend\", image = \"19361e72087946b1888684185b40d935\" },\n\tAbrasive = { name = \"거친 숫돌질\", cost = 2, desc = \"교활. 민첩을 1 얻습니다. 가시를 4 얻습니다.\", kind = \"Power\", dex = 1, thorns = 4, class = \"thiefmaster\", rarity = \"legend\", sly = true, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tSuppress = { name = \"소리 없는 제압\", cost = 0, desc = \"선천성. 피해를 9 줍니다. 약화를 2 부여합니다. 소멸.\", kind = \"Attack\", damage = 9, weak = 2, class = \"thiefmaster\", rarity = \"legend\", innate = true, exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tWraithForm = { name = \"유령 같은 몸놀림\", cost = 3, desc = \"불가침을 2 얻습니다. 내 턴 종료 시 민첩을 1 잃습니다.\", kind = \"Power\", intangible = 2, endTurnDexLoss = 1, class = \"thiefmaster\", rarity = \"legend\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tSavageBlow = { name = \"새비지 블로우\", cost = 1, desc = \"피해를 3만큼 2번 줍니다. 이번 턴에 사용한 공격 카드 1장당 피해가 2 증가합니다.\", kind = \"Attack\", damage = 3, damagePerAttackPlayedThisTurn = 2, class = \"thief\", rarity = \"normal\", hits = 2, image = \"92a5020c978c46bdabab910598118b86\" },\n\tCriticalEdge = { name = \"크리티컬 엣지\", cost = 1, desc = \"카드를 1장 뽑습니다. 다음 턴에 공격 카드의 피해량이 2배가 됩니다. 보존.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", draw = 1, nextTurnAttackMultiplier = 2, retain = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tSteal = { name = \"스틸\", cost = 1, desc = \"피해를 3 줍니다. 이번 턴에 버린 카드 1장당 피해가 3 증가합니다. 에너지를 1 얻습니다.\", kind = \"Attack\", damage = 3, damagePerDiscardedThisTurn = 3, class = \"thief\", rarity = \"normal\", gainEnergy = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDaggerAcceleration = { name = \"대거 액셀레이션\", cost = 0, desc = \"카드를 1장 뽑습니다. 카드를 1장 버립니다. 버린 카드마다 카드를 1장 더 뽑습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", draw = 1, discard = 1, drawPerDiscarded = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tKarma = { name = \"카르마\", cost = 1, desc = \"피해를 7 줍니다. 방어도를 무시합니다. 약화 상태의 적에게는 피해가 2배가 됩니다.\", kind = \"Attack\", damage = 7, class = \"thief\", rarity = \"unique\", pierce = true, attackDamageVsWeakMultiplier = 2, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tDaggerMastery = { name = \"대거 마스터리\", cost = 1, desc = \"카드를 사용할 때마다 방어도를 1 얻습니다. 매 턴 첫 카드의 피해가 3 증가합니다.\", kind = \"Power\", firstCardDamageBonus = 3, cardPlayedBlock = 1, class = \"thief\", rarity = \"unique\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tPhysicalTraining = { name = \"피지컬 트레이닝\", cost = 2, desc = \"힘을 1 얻습니다. 민첩을 1 얻습니다.\", kind = \"Power\", strength = 1, dex = 1, class = \"thief\", rarity = \"normal\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tShieldMastery = { name = \"실드 마스터리\", cost = 1, desc = \"방어도를 7 얻습니다. 다음 턴에 방어도가 사라지지 않습니다.\", kind = \"Skill\", block = 7, class = \"thief\", rarity = \"normal\", nextTurnKeepBlock = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tThiefAgility = { name = \"시프 어질리티\", cost = 1, desc = \"방어도를 5 얻습니다. 이번 턴 동안 민첩을 1 얻습니다. 손의 다른 스킬 카드 1장이 교활해집니다.\", kind = \"Skill\", endTurnDexLoss = 1, block = 5, dex = 1, class = \"thief\", rarity = \"unique\", turnHandSlyCount = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tEdgeCarnival = { name = \"엣지 카니발\", cost = 1, desc = \"무작위 적에게 피해를 2만큼 4번 줍니다.\", kind = \"Attack\", damage = 2, class = \"thiefmaster\", rarity = \"unique\", hits = 4, randomTargetEachHit = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tMuspelHeim = { name = \"무스펠 하임\", cost = 1, desc = \"모든 적에게 피해를 4 줍니다. 이번 턴에 버린 카드 1장당 피해가 2 증가합니다. 약화를 1 부여합니다.\", kind = \"Attack\", damage = 4, damagePerDiscardedThisTurn = 2, weak = 1, class = \"thiefmaster\", rarity = \"unique\", aoe = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tMesoExplosion = { name = \"메소 익스플로젼\", cost = 1, desc = \"피해를 2 줍니다. 이번 턴에 버린 카드 1장당 피해가 7 증가합니다. 방어도를 무시합니다.\", kind = \"Attack\", damage = 2, damagePerDiscardedThisTurn = 7, class = \"thiefmaster\", rarity = \"unique\", pierce = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDarkFlare = { name = \"다크 플레어\", cost = 1, desc = \"매 턴 모든 적에게 피해를 2 줍니다. 카드를 사용할 때마다 무작위 적에게 피해를 2 줍니다.\", kind = \"Power\", cardPlayedRandomDamage = 2, powerEffect = \"damagePerTurn\", value = 2, class = \"thiefmaster\", rarity = \"unique\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tPickPocket = { name = \"픽 파킷\", cost = 1, desc = \"카드를 1장 뽑습니다. 카드를 1장 버리고, 에너지를 1 얻습니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"unique\", draw = 1, gainEnergy = 1, discard = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tShadowPartner = { name = \"쉐도우 파트너\", cost = 2, desc = \"카드를 1장 선택합니다. 다음 턴에 그 카드의 복사본 1장을 손에 넣습니다. 카드를 1장 뽑습니다. 소멸.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", draw = 1, nextTurnCopies = 1, nextTurnSelectHandCard = true, nextTurnSelectPrompt = \"복사할 카드를 선택하세요.\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tAdvancedDarkSight = { name = \"어드밴스드 다크 사이트\", cost = 1, desc = \"무형을 1 얻습니다. 이번 턴 동안 손의 다른 스킬 카드 2장이 교활해집니다.\", kind = \"Skill\", intangible = 1, class = \"thiefmaster\", rarity = \"unique\", turnHandSlyCount = 2, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tIntoDarkness = { name = \"인투 다크니스\", cost = 1, desc = \"모든 적에게 약화를 1 부여합니다. 이번 턴 동안 손의 다른 스킬 카드 2장이 교활해집니다.\", kind = \"Skill\", weak = 1, class = \"thiefmaster\", rarity = \"unique\", turnHandSlyCount = 2, affectsAllEnemies = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tVenom = { name = \"베놈\", cost = 1, desc = \"공격 카드가 막히지 않은 피해를 줄 때마다 중독을 1 부여합니다. 적 턴 시작 시 독이 한 번 더 적용됩니다.\", kind = \"Power\", attackPoison = 1, class = \"thiefmaster\", rarity = \"legend\", extraPoisonTicks = 1, image = \"19361e72087946b1888684185b40d935\" },\n\tGrid = { name = \"그리드\", cost = 2, desc = \"가시를 3 얻습니다. 카드를 사용할 때마다 방어도를 1 얻습니다.\", kind = \"Power\", thorns = 3, cardPlayedBlock = 1, class = \"thiefmaster\", rarity = \"unique\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tRadicalDarkness = { name = \"래디컬 다크니스\", cost = 2, desc = \"카드를 1장 뽑습니다. 이번 턴 동안 얻는 방어도가 2배가 됩니다. 다음 턴에 방어도가 사라지지 않습니다.\", kind = \"Skill\", blockGainMultiplier = 2, class = \"thiefmaster\", rarity = \"legend\", draw = 1, nextTurnKeepBlock = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tShurikenBurst = { name = \"슈리켄 버스트\", cost = 1, desc = \"무작위 적에게 피해를 3씩 4번 줍니다.\", kind = \"Attack\", damage = 3, class = \"assassin\", rarity = \"normal\", hits = 4, randomTargetEachHit = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tWindTalisman = { name = \"윈드 탈리스만\", cost = 1, desc = \"카드를 1장 뽑습니다. 이번 턴 동안 스킬 카드의 비용이 1 감소합니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"unique\", draw = 1, skillCostReductionThisTurn = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tMarkOfAssassin = { name = \"마크 오브 어쌔신\", cost = 1, desc = \"약화 1을 부여합니다. 약화 상태의 적에게 주는 공격 피해가 1.5배가 됩니다.\", kind = \"Power\", weak = 1, class = \"assassin\", rarity = \"unique\", attackDamageVsWeakMultiplier = 1.5, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tShadowRush = { name = \"쉐도우 러쉬\", cost = 1, desc = \"피해 7, 방어도 5를 얻습니다.\", kind = \"Attack\", damage = 7, block = 5, class = \"assassin\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tShadowLeap = { name = \"쉐도우 리프\", cost = 0, desc = \"방어도 4를 얻습니다. 다음 턴에 방어도 4를 얻습니다. 소멸.\", kind = \"Skill\", block = 4, class = \"assassin\", rarity = \"normal\", nextTurnBlock = 4, exhaust = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tShadowBlink = { name = \"쉐도우 블링크\", cost = 1, desc = \"무형 1을 얻습니다. 다음 스킬 카드의 비용이 0이 됩니다. 소멸.\", kind = \"Skill\", intangible = 1, class = \"assassin\", rarity = \"unique\", nextSkillCostZero = true, exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tJavelinMastery = { name = \"자벨린 마스터리\", cost = 1, desc = \"표창의 피해량이 2 증가합니다.\", kind = \"Power\", class = \"assassin\", rarity = \"unique\", shivDamageBonus = 2, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tJavelinAcceleration = { name = \"자벨린 액셀레이션\", cost = 1, desc = \"카드를 2장 뽑습니다. 카드를 1장 버립니다. 표창 1장을 손에 넣습니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"normal\", draw = 2, discard = 1, addShiv = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tCriticalThrow = { name = \"크리티컬 스로우\", cost = 1, desc = \"피해를 6씩 2번 줍니다. 방어도를 무시합니다. 이번 턴 첫 카드라면 피해가 더 강해집니다.\", kind = \"Attack\", damage = 6, firstCardDamageBonus = 2, class = \"assassin\", rarity = \"unique\", hits = 2, pierce = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tAssassinPhysicalTraining = { name = \"피지컬 트레이닝\", cost = 2, desc = \"힘 1, 민첩 1을 얻고 카드를 1장 뽑습니다.\", kind = \"Power\", strength = 1, dex = 1, class = \"assassin\", rarity = \"normal\", draw = 1, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tTripleThrow = { name = \"트리플 스로우\", cost = 1, desc = \"피해를 4씩 3번 줍니다.\", kind = \"Attack\", damage = 4, class = \"hermit\", rarity = \"normal\", hits = 3, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tShurikenChallenge = { name = \"슈리켄 챌린지\", cost = 1, desc = \"피해를 5씩 2번 줍니다. 다음 턴에 카드를 1장 더 뽑습니다.\", kind = \"Attack\", damage = 5, class = \"hermit\", rarity = \"unique\", hits = 2, nextTurnDraw = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHermitDarkFlare = { name = \"다크 플레어\", cost = 2, desc = \"매 턴 모든 적에게 피해 3을 줍니다. 턴 시작마다 표창 1장을 손에 넣습니다.\", kind = \"Power\", powerEffect = \"damagePerTurn\", value = 3, class = \"hermit\", rarity = \"unique\", turnStartShiv = 1, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tHermitShadowPartner = { name = \"쉐도우 파트너\", cost = 2, desc = \"카드를 1장 뽑습니다. 다음 턴 공격 카드의 피해가 2배가 됩니다.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", draw = 1, nextTurnAttackMultiplier = 2, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tSpiritJavelin = { name = \"스피릿 자벨린\", cost = 1, desc = \"표창이 턴 종료 시 사라지지 않습니다. 매 턴 처음 사용하는 표창의 피해량이 4 증가합니다.\", kind = \"Power\", class = \"hermit\", rarity = \"unique\", firstShivDamageBonus = 4, shivRetain = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHermitRadicalDarkness = { name = \"래디컬 다크니스\", cost = 1, desc = \"방어도 4를 얻습니다. 이번 턴 동안 얻는 방어도가 2배가 됩니다. 소멸.\", kind = \"Skill\", block = 4, blockGainMultiplier = 2, class = \"hermit\", rarity = \"unique\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tHermitVenom = { name = \"베놈\", cost = 2, desc = \"공격 카드가 막히지 않은 피해를 줄 때마다 중독 1을 부여합니다. 전투 중 독 부여 3회마다 모든 적에게 피해 8을 줍니다.\", kind = \"Power\", attackPoison = 1, class = \"hermit\", rarity = \"legend\", poisonApplicationBurstEvery = 3, poisonApplicationBurstDamage = 8, image = \"19361e72087946b1888684185b40d935\" },\n\tSkilledJavelin = { name = \"숙련된 표창술\", cost = 1, desc = \"표창의 피해량이 2 증가합니다. 매 턴 처음 사용하는 표창의 피해량이 4 증가합니다.\", kind = \"Power\", class = \"hermit\", rarity = \"unique\", shivDamageBonus = 2, firstShivDamageBonus = 4, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHermitAdrenaline = { name = \"아드레날린\", cost = 0, desc = \"에너지를 1 얻고 카드를 1장 뽑습니다. 표창 1장을 손에 넣습니다. 소멸.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", draw = 1, gainEnergy = 1, addShiv = 1, exhaust = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n}\nself.DrawPile = {}\nfor i = 1, #self.RunDeck do\n\tself.DrawPile[i] = self.RunDeck[i]\nend\nself:Shuffle(self.DrawPile)\nself:PrepareCombatDrawPile()\nself:BuildMonsters()\nself:RenderCombat()\nself:StartPlayerTurn()\nself:ApplyRelics(\"combatStart\")\nself:RenderCombat()\nlocal slotTid = 0\nslotTid = _TimerService:SetTimerRepeat(function()\n\tif self.CombatOver == true or self.Monsters == nil or #self.Monsters == 0 then\n\t\t_TimerService:ClearTimer(slotTid)\n\t\treturn\n\tend\n\tfor i = 1, #self.Monsters do\n\t\tif self.Monsters[i] ~= nil and self.Monsters[i].alive == true then\n\t\t\tself:PositionMonsterSlot(i)\n\t\tend\n\tend\nend, 0.15)", + "Code": "self:ShowState(\"combat\")\nself:KickCombatCamera()\nself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/Result\", false)\nself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/PotionMenu\", false)\nself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/TooltipBox\", false)\nself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/DiscardPrompt\", false)\nself:SetText(\"/ui/RunUIGroup/CombatHud/PlayerPanel/Name\", self:JobLabel())\nself.MaxEnergy = 3\nself.Turn = 0\nself.PlayerBlock = 0\nself.BlockGainMultiplier = 1\nself.CardsDrawnThisCombat = 0\nself.HandCostZeroThisTurn = false\nself.DrawDisabledThisTurn = false\nself.NextSkillCostZero = false\nself.NextSkillRepeatCount = 0\nself.SkillCostReductionThisTurn = 0\nself.CombatCardCostReduction = {}\nself.SkillSlyOnPlayCards = {}\nself.TurnSkillSlyCards = {}\nself.ShivFirstDamageBonusUsed = false\nself.ActiveAttackDamageVsWeakMultiplier = 1\nself.DrawDamageThisTurn = 0\nself.DrawPoisonThisTurn = 0\nself.ShivAoeThisCombat = false\nself.PoisonApplicationsThisCombat = 0\nself.EnemyStrengthLossThisTurn = 0\nself.PlayerStr = 0\nself.PlayerDex = 0\nself.PlayerThorns = 0\nself.PlayerWeak = 0\nself.PlayerVuln = 0\nself.PlayerIntangible = 0\nself.BonusRewardScreens = 0\nself.ActiveKillReward = 0\nself.ActiveKillMaxHpGain = 0\nself.PlayerPowers = {}\nself.FightAttackCount = 0\nself.TurnAttackCardsPlayed = 0\nself.TurnDiscardedCards = 0\nself.TurnCardsPlayedThisTurn = 0\nself.ComboCount = 0\nself.HolyChargeCount = 0\nself.DamagePowerStrengthUsed = false\nself.DamageDealtThisTurn = 0\nself.DmgPopSeq = 0\nself.FirstHpLossDone = false\nself.ClayBlockNext = 0\nself.DiscardSelectRemaining = 0\nself.DiscardSelectTotal = 0\nself.DiscardPostShiv = 0\nself.DiscardShivPerPick = 0\nself.RetainSelectActive = false\nself.ReserveSelectActive = false\nself.NextTurnBlock = 0\nself.NextTurnDraw = 0\nself.NextTurnKeepBlock = false\nself.NextTurnAttackMultiplier = 1\nself.TurnAttackMultiplier = 1\nself.NextTurnSelectPrompt = \"\"\nself.NextTurnSelectCopies = 0\nself.NextTurnAddCards = {}\nself.ZeroCostCardIdsThisTurn = {}\nself.CombatOver = false\nself.DiscardPile = {}\nself.ExhaustPile = {}\nself.Hand = {}\nself.Cards = {\n\tStrike = { name = \"타격\", cost = 1, desc = \"피해 6\", kind = \"Attack\", damage = 6, class = \"warrior\", rarity = \"normal\", fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tBash = { name = \"강타\", cost = 2, desc = \"피해 8, 취약 2\", kind = \"Attack\", damage = 8, vuln = 2, class = \"warrior\", rarity = \"normal\", fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tDefend = { name = \"수비\", cost = 1, desc = \"방어도 5\", kind = \"Skill\", block = 5, class = \"warrior\", rarity = \"normal\", image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tAnger = { name = \"분노\", cost = 0, desc = \"피해 6\", kind = \"Attack\", damage = 6, class = \"warrior\", rarity = \"normal\", fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tMoltenFist = { name = \"녹아내리는 주먹\", cost = 1, desc = \"피해 10, 취약 2. 소멸.\", kind = \"Attack\", damage = 10, vuln = 2, class = \"warrior\", rarity = \"normal\", exhaust = true, fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tBodySlam = { name = \"몸통 박치기\", cost = 1, desc = \"현재 방어도만큼 피해를 줍니다.\", kind = \"Attack\", damageFromCurrentBlock = 1, class = \"warrior\", rarity = \"normal\", fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tHeadbutt = { name = \"박치기\", cost = 1, desc = \"피해 9, 카드 1장 뽑기\", kind = \"Attack\", damage = 9, class = \"warrior\", rarity = \"normal\", draw = 1, fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tSwordBoomerang = { name = \"부메랑 칼날\", cost = 1, desc = \"무작위 적에게 피해 3 x 3회\", kind = \"Attack\", damage = 3, class = \"warrior\", rarity = \"normal\", hits = 3, randomTargetEachHit = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tSetupStrike = { name = \"사전 타격\", cost = 1, desc = \"피해 7, 힘 +2\", kind = \"Attack\", damage = 7, strength = 2, class = \"warrior\", rarity = \"normal\", fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tTwinStrike = { name = \"이중 타격\", cost = 1, desc = \"피해 5 x 2회\", kind = \"Attack\", damage = 5, class = \"warrior\", rarity = \"normal\", hits = 2, fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tBreakthrough = { name = \"정면 돌파\", cost = 1, desc = \"모든 적에게 피해 9\", kind = \"Attack\", damage = 9, class = \"warrior\", rarity = \"normal\", aoe = true, fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tThunderclap = { name = \"천둥\", cost = 1, desc = \"모든 적에게 피해 4, 취약 1\", kind = \"Attack\", damage = 4, vuln = 1, class = \"warrior\", rarity = \"normal\", affectsAllEnemies = true, aoe = true, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"115e309771604743853abad2d8d186bc\" },\n\tIronWave = { name = \"철의 파동\", cost = 1, desc = \"피해 5, 방어도 5\", kind = \"Attack\", damage = 5, block = 5, class = \"warrior\", rarity = \"normal\", fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tPommelStrike = { name = \"폼멜 타격\", cost = 1, desc = \"피해 9, 카드 1장 뽑기\", kind = \"Attack\", damage = 9, class = \"warrior\", rarity = \"normal\", draw = 1, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tPerfectedStrike = { name = \"완벽한 타격\", cost = 2, desc = \"피해 6. 보유한 이름에 \\\"타격\\\"이 포함된 카드마다 피해 +2\", kind = \"Attack\", damage = 6, damageNameMatch = \"타격\", damagePerOwnedNameMatch = 2, class = \"warrior\", rarity = \"normal\", fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tCinder = { name = \"잿불\", cost = 2, desc = \"피해 18. 소멸.\", kind = \"Attack\", damage = 18, class = \"warrior\", rarity = \"normal\", exhaust = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tBloodletting = { name = \"사혈\", cost = 0, desc = \"에너지 +2\", kind = \"Skill\", class = \"warrior\", rarity = \"normal\", gainEnergy = 2, image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tTremble = { name = \"떨림\", cost = 1, desc = \"취약 3. 소멸.\", kind = \"Skill\", vuln = 3, class = \"warrior\", rarity = \"normal\", exhaust = true, image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tArmaments = { name = \"전투장비\", cost = 1, desc = \"방어도 5, 카드 1장 뽑기\", kind = \"Skill\", block = 5, class = \"warrior\", rarity = \"normal\", draw = 1, image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tTrueGrit = { name = \"진정한 끈기\", cost = 1, desc = \"방어도 7, 카드 1장 버리기\", kind = \"Skill\", block = 7, class = \"warrior\", rarity = \"normal\", discard = 1, image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tHavoc = { name = \"파괴\", cost = 1, desc = \"다음 스킬의 비용이 0\", kind = \"Skill\", class = \"warrior\", rarity = \"normal\", nextSkillCostZero = true, image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tShrugItOff = { name = \"흘려보내기\", cost = 1, desc = \"방어도 8, 카드 1장 뽑기\", kind = \"Skill\", block = 8, class = \"warrior\", rarity = \"normal\", draw = 1, image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tBloodWall = { name = \"피의 벽\", cost = 2, desc = \"방어도 16\", kind = \"Skill\", block = 16, class = \"warrior\", rarity = \"normal\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tWhirlwind = { name = \"소용돌이\", cost = 0, desc = \"모든 에너지를 사용해 에너지당 모든 적에게 피해 5\", kind = \"Attack\", damage = 0, class = \"warrior\", rarity = \"unique\", useAllEnergy = true, xDamagePerEnergy = 5, aoe = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tSpite = { name = \"악의\", cost = 0, desc = \"피해 5 x 2회\", kind = \"Attack\", damage = 5, class = \"warrior\", rarity = \"unique\", hits = 2, fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tBully = { name = \"협박\", cost = 0, desc = \"피해 4. 대상이 약화 상태면 피해 2배\", kind = \"Attack\", damage = 4, class = \"warrior\", rarity = \"unique\", attackDamageVsWeakMultiplier = 2, fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tPillage = { name = \"갈취\", cost = 1, desc = \"피해 6, 카드 2장 뽑기\", kind = \"Attack\", damage = 6, class = \"warrior\", rarity = \"unique\", draw = 2, fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tRampage = { name = \"광란\", cost = 2, desc = \"피해 12. 사용할 때마다 이번 전투에서 비용 1 감소\", kind = \"Attack\", damage = 12, class = \"warrior\", rarity = \"unique\", combatCostReductionOnPlay = 1, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tAshenStrike = { name = \"잿빛 타격\", cost = 1, desc = \"피해 6. 이번 전투에서 뽑은 카드마다 피해 +1\", kind = \"Attack\", damage = 6, damagePerCardDrawnThisCombat = 1, class = \"warrior\", rarity = \"unique\", fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tDismantle = { name = \"해체\", cost = 1, desc = \"피해 8 x 2회\", kind = \"Attack\", damage = 8, class = \"warrior\", rarity = \"unique\", hits = 2, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"115e309771604743853abad2d8d186bc\" },\n\tHemokinesis = { name = \"혈류\", cost = 1, desc = \"피해 15\", kind = \"Attack\", damage = 15, class = \"warrior\", rarity = \"unique\", fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tFightMe = { name = \"덤벼라!\", cost = 2, desc = \"피해 5 x 2회, 힘 +3\", kind = \"Attack\", damage = 5, strength = 3, class = \"warrior\", rarity = \"unique\", hits = 2, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tUnrelenting = { name = \"무자비\", cost = 2, desc = \"피해 14, 에너지 +1\", kind = \"Attack\", damage = 14, class = \"warrior\", rarity = \"unique\", gainEnergy = 1, fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tUppercut = { name = \"어퍼컷\", cost = 2, desc = \"피해 12, 약화 1, 취약 1\", kind = \"Attack\", damage = 12, weak = 1, vuln = 1, class = \"warrior\", rarity = \"unique\", fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tBludgeon = { name = \"몽둥이질\", cost = 3, desc = \"피해 32\", kind = \"Attack\", damage = 32, class = \"warrior\", rarity = \"unique\", fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tHowlFromBeyond = { name = \"저편의 울음소리\", cost = 3, desc = \"모든 적에게 피해 16. 소멸.\", kind = \"Attack\", damage = 16, class = \"warrior\", rarity = \"unique\", exhaust = true, aoe = true, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tStomp = { name = \"짓밟기\", cost = 3, desc = \"모든 적에게 피해 12. 이번 턴 사용한 공격 카드마다 피해 +2\", kind = \"Attack\", damage = 12, damagePerAttackPlayedThisTurn = 2, class = \"warrior\", rarity = \"unique\", aoe = true, fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tRage = { name = \"격노\", cost = 0, desc = \"방어도 5, 카드 1장 뽑기\", kind = \"Skill\", block = 5, class = \"warrior\", rarity = \"unique\", draw = 1, image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tBattleTrance = { name = \"전투 최면\", cost = 0, desc = \"카드 3장 뽑기. 이번 턴 더 뽑을 수 없음\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", draw = 3, drawDisabledThisTurn = true, image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tColossus = { name = \"거상\", cost = 1, desc = \"방어도 5, 무형 1\", kind = \"Skill\", intangible = 1, block = 5, class = \"warrior\", rarity = \"unique\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tSecondWind = { name = \"기사회생\", cost = 1, desc = \"손의 공격이 아닌 모든 카드를 소멸시키고, 소멸시킨 카드마다 방어도 5\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", exhaustHandNonAttack = true, blockPerExhaustedCard = 5, image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tTaunt = { name = \"도발\", cost = 1, desc = \"방어도 7, 취약 1\", kind = \"Skill\", block = 7, vuln = 1, class = \"warrior\", rarity = \"unique\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tBurningPact = { name = \"불타는 조약\", cost = 1, desc = \"카드 1장 버리고 카드 3장 뽑기\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", draw = 3, discard = 1, image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tEvilEye = { name = \"악마의 눈\", cost = 1, desc = \"방어도 16\", kind = \"Skill\", block = 16, class = \"warrior\", rarity = \"unique\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tForgottenRitual = { name = \"잊힌 의식\", cost = 1, desc = \"에너지 +2. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", gainEnergy = 2, exhaust = true, image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tDrumOfBattle = { name = \"전투의 북소리\", cost = 1, desc = \"카드 2장 뽑기, 에너지 +1. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", draw = 2, gainEnergy = 1, exhaust = true, image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tDominate = { name = \"제압\", cost = 1, desc = \"취약 2, 힘 +2. 소멸.\", kind = \"Skill\", strength = 2, vuln = 2, class = \"warrior\", rarity = \"unique\", exhaust = true, image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tInfernalBlade = { name = \"지옥검\", cost = 1, desc = \"무작위 공격 카드 1장을 손으로 가져옵니다. 이번 턴 동안 그 카드를 비용 없이 사용할 수 있습니다. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", addRandomCardCount = 1, addRandomCardKind = \"Attack\", addRandomCardSameClass = true, addedCardsCostZeroThisTurn = true, exhaust = true, image = \"115e309771604743853abad2d8d186bc\" },\n\tExpectAFight = { name = \"싸움 준비\", cost = 1, desc = \"이번 턴 스킬 비용 1 감소\", kind = \"Skill\", class = \"warrior\", rarity = \"unique\", skillCostReductionThisTurn = 1, image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tFlameBarrier = { name = \"화염 장벽\", cost = 2, desc = \"방어도 12, 가시 4\", kind = \"Skill\", block = 12, thorns = 4, class = \"warrior\", rarity = \"unique\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tStoneArmor = { name = \"돌 갑옷\", cost = 1, desc = \"매턴 방어도 +4\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 4, class = \"warrior\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tFeelNoPain = { name = \"무감각\", cost = 1, desc = \"매턴 방어도 +3\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 3, class = \"warrior\", rarity = \"unique\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tInflame = { name = \"발화\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"warrior\", rarity = \"unique\", image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tInferno = { name = \"불바다\", cost = 1, desc = \"매턴 모든 적에게 피해 6\", kind = \"Power\", powerEffect = \"damagePerTurn\", value = 6, class = \"warrior\", rarity = \"unique\", image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tJuggling = { name = \"저글링\", cost = 1, desc = \"카드를 사용할 때마다 무작위 적에게 피해 3\", kind = \"Power\", cardPlayedRandomDamage = 3, class = \"warrior\", rarity = \"unique\", image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tRupture = { name = \"파열\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"warrior\", rarity = \"unique\", image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tVicious = { name = \"포악함\", cost = 1, desc = \"턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", class = \"warrior\", rarity = \"unique\", turnStartDraw = 1, image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tStampede = { name = \"쇄도\", cost = 2, desc = \"카드를 사용할 때마다 무작위 적에게 피해 8\", kind = \"Power\", cardPlayedRandomDamage = 8, class = \"warrior\", rarity = \"unique\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tPactsEnd = { name = \"조약의 끝\", cost = 0, desc = \"뽑을 카드 더미가 비었을 때 모든 적에게 피해 17\", kind = \"Attack\", damage = 17, class = \"warrior\", rarity = \"legend\", playableWhenDrawPileEmpty = true, aoe = true, fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tThrash = { name = \"난타\", cost = 1, desc = \"피해 4 x 2회. 이번 턴 사용한 공격 카드마다 피해 +2\", kind = \"Attack\", damage = 4, damagePerAttackPlayedThisTurn = 2, class = \"warrior\", rarity = \"legend\", hits = 2, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tConflagration = { name = \"대화재\", cost = 1, desc = \"모든 적에게 피해 2 x 4회\", kind = \"Attack\", damage = 2, class = \"warrior\", rarity = \"legend\", hits = 4, aoe = true, fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tFeed = { name = \"포식\", cost = 1, desc = \"피해를 10 줍니다. 치명타라면, 최대 체력이 3 증가합니다. 소멸.\", kind = \"Attack\", damage = 10, maxHpOnKill = 3, class = \"warrior\", rarity = \"legend\", exhaust = true, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tTearAsunder = { name = \"갈가리 찢기\", cost = 2, desc = \"피해 5 x 3회\", kind = \"Attack\", damage = 5, class = \"warrior\", rarity = \"legend\", hits = 3, fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tFiendFire = { name = \"지옥불\", cost = 2, desc = \"손의 다른 카드마다 피해 +7 후 모두 버리기. 소멸.\", kind = \"Attack\", damage = 0, damagePerOtherHandCard = 7, class = \"warrior\", rarity = \"legend\", discardAll = true, exhaust = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tMangle = { name = \"난도질\", cost = 3, desc = \"피해 15. 이번 턴 적 힘 -10\", kind = \"Attack\", damage = 15, class = \"warrior\", rarity = \"legend\", enemyStrengthLossThisTurn = 10, fx = \"291b2298db88476f8ae3c6c78f53c9b7\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tBrand = { name = \"낙인\", cost = 0, desc = \"카드 1장 버리기, 힘 +1\", kind = \"Skill\", strength = 1, class = \"warrior\", rarity = \"legend\", discard = 1, image = \"115e309771604743853abad2d8d186bc\" },\n\tCascade = { name = \"연쇄\", cost = 0, desc = \"뽑을 카드 더미 맨 위의 카드 X장을 사용합니다. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", playTopDrawPileCountPerEnergy = 1, useAllEnergy = true, exhaust = true, image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tPrimalForce = { name = \"원시의 힘\", cost = 0, desc = \"이번 턴 손의 카드 비용이 0\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", handCostZeroThisTurn = true, image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tOffering = { name = \"제물\", cost = 0, desc = \"에너지 +2, 카드 3장 뽑기. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", draw = 3, gainEnergy = 2, exhaust = true, image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tOneTwoPunch = { name = \"원투 펀치\", cost = 1, desc = \"다음 스킬을 1회 추가 발동\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", nextSkillRepeatCount = 1, image = \"251b6e12329048429490049a4f3cf564\" },\n\tStoke = { name = \"화력 증폭\", cost = 1, desc = \"손의 모든 카드를 소멸시키고, 소멸시킨 카드 수만큼 뽑습니다. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", exhaustHandAll = true, drawPerExhausted = 1, exhaust = true, image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tImpervious = { name = \"무적\", cost = 2, desc = \"방어도 30. 소멸.\", kind = \"Skill\", block = 30, class = \"warrior\", rarity = \"legend\", exhaust = true, image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tNotYet = { name = \"불굴\", cost = 2, desc = \"HP 10 회복. 소멸.\", kind = \"Skill\", class = \"warrior\", rarity = \"legend\", heal = 10, exhaust = true, image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tAggression = { name = \"공격성\", cost = 1, desc = \"턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", class = \"warrior\", rarity = \"legend\", turnStartDraw = 1, image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tCruelty = { name = \"악랄함\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"warrior\", rarity = \"legend\", image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tCrimsonMantle = { name = \"핏빛 망토\", cost = 1, desc = \"매턴 방어도 +8\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 8, class = \"warrior\", rarity = \"legend\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tPyre = { name = \"불의 심장\", cost = 2, desc = \"매턴 에너지 +1\", kind = \"Power\", powerEffect = \"energyPerTurn\", value = 1, class = \"warrior\", rarity = \"legend\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tDarkEmbrace = { name = \"어둠의 포옹\", cost = 2, desc = \"카드가 소멸될 때마다 카드 1장 뽑기\", kind = \"Power\", drawOnExhaust = 1, class = \"warrior\", rarity = \"legend\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tUnmovable = { name = \"요지부동\", cost = 2, desc = \"이번 전투 동안 방어도 획득량 2배\", kind = \"Power\", blockGainMultiplier = 2, powerEffect = \"blockPerTurn\", value = 0, class = \"warrior\", rarity = \"legend\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tJuggernaut = { name = \"절대적인 힘\", cost = 2, desc = \"카드를 사용할 때마다 무작위 적에게 피해 5\", kind = \"Power\", cardPlayedRandomDamage = 5, class = \"warrior\", rarity = \"legend\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tHellraiser = { name = \"지옥검무\", cost = 2, desc = \"이름에 \\\"타격\\\"이 포함된 카드를 뽑을 때마다, 무작위 적에게 사용합니다.\", kind = \"Power\", drawNameMatchAutoPlay = \"타격\", class = \"warrior\", rarity = \"legend\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tBarricade = { name = \"바리케이드\", cost = 3, desc = \"내 턴 시작 시 방어도가 사라지지 않습니다.\", kind = \"Power\", powerEffect = \"keepBlock\", value = 0, class = \"warrior\", rarity = \"legend\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tDemonForm = { name = \"악마의 형상\", cost = 3, desc = \"매턴 힘 +2\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 2, class = \"warrior\", rarity = \"legend\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tSlashBlast = { name = \"슬래시 블러스트\", cost = 1, desc = \"모든 적에게 피해 7. 콤보당 피해 +1\", kind = \"Attack\", damage = 7, damagePerCombo = 1, class = \"warrior\", rarity = \"normal\", aoe = true, image = \"863812c5c2f84132ac7465b50ec2283e\" },\n\tWarriorLeap = { name = \"워리어 리프\", cost = 0, desc = \"방어도 4. 다음 턴 방어도 4. 소멸.\", kind = \"Skill\", block = 4, class = \"warrior\", rarity = \"normal\", nextTurnBlock = 4, exhaust = true, image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tLeapAttack = { name = \"리프 어택\", cost = 1, desc = \"모든 적에게 피해 3 x 2회. 방어도 5\", kind = \"Attack\", damage = 3, block = 5, class = \"warrior\", rarity = \"normal\", hits = 2, aoe = true, image = \"997fa6999aa04dbb97a1dd99025fa2ba\" },\n\tIronBody = { name = \"아이언 바디\", cost = 1, desc = \"매턴 방어도 3. 가시 2\", kind = \"Power\", thorns = 2, powerEffect = \"blockPerTurn\", value = 3, class = \"warrior\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tWarriorMastery = { name = \"워리어 마스터리\", cost = 1, desc = \"힘 1. 민첩 1\", kind = \"Power\", strength = 1, dex = 1, class = \"warrior\", rarity = \"unique\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tBrandish = { name = \"브랜디쉬\", cost = 1, desc = \"피해 4 x 2회. 콤보당 피해 +1. 콤보 1 획득\", kind = \"Attack\", damage = 4, damagePerCombo = 1, class = \"fighter\", rarity = \"normal\", hits = 2, comboGain = 1, image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tFlashSlash = { name = \"플래시 슬래시\", cost = 1, desc = \"모든 적에게 피해 2 x 5회. 방어도 4. 콤보 2 획득. 소멸.\", kind = \"Attack\", damage = 2, block = 4, class = \"fighter\", rarity = \"unique\", hits = 5, comboGain = 2, exhaust = true, aoe = true, image = \"291b2298db88476f8ae3c6c78f53c9b7\" },\n\tComboAttack = { name = \"콤보 어택\", cost = 1, desc = \"공격 카드를 사용할 때마다 콤보 1 획득. 최대 5\", kind = \"Power\", comboOnAttack = 1, comboMax = 5, class = \"fighter\", rarity = \"unique\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tSpiritBlade = { name = \"스피릿 블레이드\", cost = 2, desc = \"힘 2. 가시 5\", kind = \"Power\", strength = 2, thorns = 5, class = \"fighter\", rarity = \"unique\", image = \"863812c5c2f84132ac7465b50ec2283e\" },\n\tWeaponMastery = { name = \"웨폰 마스터리\", cost = 1, desc = \"힘 1. 공격 카드를 사용할 때마다 대상에게 피해 1\", kind = \"Power\", attackPlayedDamage = 1, strength = 1, class = \"fighter\", rarity = \"unique\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tWeaponAcceleration = { name = \"웨폰 액셀레이션\", cost = 1, desc = \"콤보 2 획득. 턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", class = \"fighter\", rarity = \"unique\", comboGain = 2, turnStartDraw = 1, image = \"291b2298db88476f8ae3c6c78f53c9b7\" },\n\tFinalAttack = { name = \"파이널 어택\", cost = 1, desc = \"공격 카드를 사용할 때마다 대상에게 피해 3\", kind = \"Power\", attackPlayedDamage = 3, class = \"fighter\", rarity = \"legend\", image = \"997fa6999aa04dbb97a1dd99025fa2ba\" },\n\tFighterPhysicalTraining = { name = \"피지컬 트레이닝\", cost = 2, desc = \"힘 1. 민첩 1. 매턴 방어도 2\", kind = \"Power\", strength = 1, dex = 1, powerEffect = \"blockPerTurn\", value = 2, class = \"fighter\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tBraveSlash = { name = \"브레이브 슬래시\", cost = 2, desc = \"피해 5 x 3회. 콤보당 피해 +1. 콤보 1 획득\", kind = \"Attack\", damage = 5, damagePerCombo = 1, class = \"crusader\", rarity = \"normal\", hits = 3, comboGain = 1, image = \"863812c5c2f84132ac7465b50ec2283e\" },\n\tAuraBlade = { name = \"오라 블레이드\", cost = 2, desc = \"모든 적에게 방어도를 무시하고 피해 4 x 4회. 소멸.\", kind = \"Attack\", damage = 4, class = \"crusader\", rarity = \"legend\", hits = 4, pierce = true, exhaust = true, aoe = true, image = \"291b2298db88476f8ae3c6c78f53c9b7\" },\n\tRush = { name = \"돌진\", cost = 1, desc = \"모든 적에게 피해 8. 방어도 7. 콤보 1 획득\", kind = \"Attack\", damage = 8, block = 7, class = \"crusader\", rarity = \"unique\", comboGain = 1, aoe = true, image = \"997fa6999aa04dbb97a1dd99025fa2ba\" },\n\tScarringSword = { name = \"스카링 소드\", cost = 2, desc = \"공격 카드로 피해를 주면 대상에게 약화 1\", kind = \"Power\", attackWeak = 1, class = \"crusader\", rarity = \"legend\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tComboSynergy = { name = \"콤보 시너지\", cost = 2, desc = \"공격마다 콤보 1 획득. 모든 공격이 콤보당 피해 +1. 최대 5\", kind = \"Power\", attackDamagePerCombo = 1, comboOnAttack = 1, comboMax = 5, class = \"crusader\", rarity = \"legend\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tSelfRecovery = { name = \"셀프 리커버리\", cost = 1, desc = \"턴 시작 시 HP 3 회복\", kind = \"Power\", powerEffect = \"healPerTurn\", value = 3, class = \"crusader\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tChanceAttack = { name = \"찬스 어택\", cost = 1, desc = \"약화 상태인 적에게 주는 공격 피해 1.5배\", kind = \"Power\", class = \"crusader\", rarity = \"unique\", attackDamageVsWeakMultiplier = 1.5, image = \"291b2298db88476f8ae3c6c78f53c9b7\" },\n\tEndure = { name = \"인듀어\", cost = 1, desc = \"약화와 취약을 제거합니다. 매턴 방어도 4\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 4, class = \"crusader\", rarity = \"unique\", removePlayerDebuffs = true, image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tDivineSwing = { name = \"디바인 스윙\", cost = 2, desc = \"모든 적에게 피해 3 x 4회, 약화 1. 홀리 포스.\", kind = \"Attack\", damage = 3, weak = 1, class = \"page\", rarity = \"normal\", hits = 4, holyForce = true, affectsAllEnemies = true, aoe = true, image = \"863812c5c2f84132ac7465b50ec2283e\" },\n\tHolyCharge = { name = \"홀리 차지\", cost = 1, desc = \"홀리 포스 카드를 사용하면 홀리 차지 1 획득. 최대 3. 받는 피해 10% 감소\", kind = \"Power\", holyChargeOnHolyForce = 1, holyChargeMax = 3, damageTakenReduction = 0.1, class = \"page\", rarity = \"unique\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tPageOrder = { name = \"페이지 오더\", cost = 1, desc = \"모든 적에게 피해 3 x 2회, 약화 1. 카드 1장 뽑기\", kind = \"Attack\", damage = 3, weak = 1, class = \"page\", rarity = \"normal\", hits = 2, draw = 1, affectsAllEnemies = true, aoe = true, image = \"291b2298db88476f8ae3c6c78f53c9b7\" },\n\tPageWeaponAcceleration = { name = \"웨폰 액셀레이션\", cost = 1, desc = \"힘 1. 턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", strength = 1, class = \"page\", rarity = \"unique\", turnStartDraw = 1, image = \"291b2298db88476f8ae3c6c78f53c9b7\" },\n\tPageStance = { name = \"스탠스\", cost = 1, desc = \"매턴 방어도 4\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 4, class = \"page\", rarity = \"normal\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tPageWeaponMastery = { name = \"웨폰 마스터리\", cost = 1, desc = \"카드를 사용할 때마다 방어도 1\", kind = \"Power\", cardPlayedBlock = 1, class = \"page\", rarity = \"unique\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tPageFinalAttack = { name = \"파이널 어택\", cost = 1, desc = \"공격 카드를 사용할 때마다 대상에게 피해 2\", kind = \"Power\", attackPlayedDamage = 2, class = \"page\", rarity = \"legend\", image = \"997fa6999aa04dbb97a1dd99025fa2ba\" },\n\tPagePhysicalTraining = { name = \"피지컬 트레이닝\", cost = 2, desc = \"힘 1. 민첩 1. 매턴 방어도 2\", kind = \"Power\", strength = 1, dex = 1, powerEffect = \"blockPerTurn\", value = 2, class = \"page\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tDivineCharge = { name = \"디바인 차지\", cost = 2, desc = \"모든 적에게 피해 4 x 4회, 약화 1. 홀리 차지당 피해 +1. 홀리 포스.\", kind = \"Attack\", damage = 4, damagePerHolyCharge = 1, weak = 1, class = \"knight\", rarity = \"unique\", hits = 4, holyForce = true, affectsAllEnemies = true, aoe = true, image = \"863812c5c2f84132ac7465b50ec2283e\" },\n\tRestoration = { name = \"리스토네이션\", cost = 1, desc = \"HP 8 회복. 홀리 차지당 추가로 4 회복한 뒤 모두 소비\", kind = \"Skill\", class = \"knight\", rarity = \"unique\", heal = 8, healPerHolyCharge = 4, holyChargeSpendAll = true, image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tKnightRush = { name = \"돌진\", cost = 1, desc = \"모든 적에게 피해 7. 방어도 4, 홀리 차지당 방어도 +2\", kind = \"Attack\", damage = 7, block = 4, class = \"knight\", rarity = \"normal\", blockPerHolyCharge = 2, aoe = true, image = \"997fa6999aa04dbb97a1dd99025fa2ba\" },\n\tNobleDemand = { name = \"노블 디맨드\", cost = 1, desc = \"모든 적의 방어도를 제거하고 약화 2. 이번 턴 적 전체 힘 -3\", kind = \"Skill\", weak = 2, class = \"knight\", rarity = \"unique\", affectsAllEnemies = true, removeEnemyBlock = true, enemyStrengthLossThisTurn = 3, image = \"291b2298db88476f8ae3c6c78f53c9b7\" },\n\tParashockGuard = { name = \"파라쇼크 가드\", cost = 2, desc = \"힘 1. 가시 3. 카드를 사용할 때마다 방어도 1\", kind = \"Power\", strength = 1, thorns = 3, cardPlayedBlock = 1, class = \"knight\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tCombatOrders = { name = \"컴뱃 오더스\", cost = 2, desc = \"다음 스킬을 1회 추가 발동. 턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", class = \"knight\", rarity = \"legend\", turnStartDraw = 1, nextSkillRepeatCount = 1, image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tKnightShieldMastery = { name = \"실드 마스터리\", cost = 2, desc = \"매턴 방어도 5. 가시 2\", kind = \"Power\", thorns = 2, powerEffect = \"blockPerTurn\", value = 5, class = \"knight\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tAchilles = { name = \"아킬레스\", cost = 2, desc = \"받는 피해 25% 감소\", kind = \"Power\", damageTakenReduction = 0.25, class = \"knight\", rarity = \"legend\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tBlessingArmor = { name = \"블레싱 아머\", cost = 2, desc = \"HP 피해를 받으면 방어도 6. 전투 중 처음 발동할 때 힘 2\", kind = \"Power\", blockOnDamaged = 6, strengthOnDamagedOnce = 2, class = \"knight\", rarity = \"legend\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tEnergyBolt = { name = \"에너지 볼트\", cost = 1, desc = \"피해 6\", kind = \"Attack\", damage = 6, class = \"magician\", rarity = \"normal\", fx = \"1d5877e1120a42d0907f204c959888b1\", image = \"e84880eaf89442128d3af2be5c80a74f\" },\n\tMagicGuard = { name = \"매직 가드\", cost = 1, desc = \"방어도 5\", kind = \"Skill\", block = 5, class = \"magician\", rarity = \"normal\", image = \"01b249c26eb34b8aaab774bf221907a1\" },\n\tMagicClaw = { name = \"매직 클로\", cost = 1, desc = \"피해 3 × 2회\", kind = \"Attack\", damage = 3, class = \"magician\", rarity = \"normal\", hits = 2, fx = \"ba4ac7c8f24845b68b7e689b7effcc93\", image = \"f3fcac2d460041b288cc1973caaaf30f\" },\n\tTeleport = { name = \"텔레포트\", cost = 1, desc = \"방어도 3, 드로 1\", kind = \"Skill\", block = 3, class = \"magician\", rarity = \"normal\", discardAll = true, drawPerDiscarded = 1, image = \"7f70a9dc7e304433bb8121dd9c4df98b\" },\n\tSlow = { name = \"슬로우\", cost = 1, desc = \"약화 2 부여\", kind = \"Skill\", weak = 2, class = \"magician\", rarity = \"normal\", image = \"7224cd3f9b7e497d9dd65f32a50865e4\" },\n\tFireArrow = { name = \"파이어 애로우\", cost = 1, desc = \"피해 8\", kind = \"Attack\", damage = 8, class = \"firepoison\", rarity = \"unique\", fx = \"4a937e208875468eb63d891806fba3cd\", image = \"6fa15fd3a0004b409ea516c11a67e533\" },\n\tPoisonBreath = { name = \"포이즌 브레스\", cost = 1, desc = \"독 4 부여\", kind = \"Skill\", class = \"firepoison\", rarity = \"unique\", poison = 4, image = \"07200f3c74854022baa7ebbefdc4ad8c\" },\n\tElementAmp = { name = \"엘레멘트 앰플\", cost = 1, desc = \"매 턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"firepoison\", rarity = \"legend\", image = \"06865473977849bebe79062dbd608944\" },\n\tThunderBolt = { name = \"썬더 볼트\", cost = 2, desc = \"모든 적에게 피해 6\", kind = \"Attack\", damage = 6, class = \"icelightning\", rarity = \"legend\", aoe = true, fx = \"7d52f5e389bd4d44a30cf7cc54538f8f\", image = \"c6685d33cb2641f09d11cfa2d5cc820c\" },\n\tColdBeam = { name = \"콜드 빔\", cost = 2, desc = \"피해 7, 약화 2\", kind = \"Attack\", damage = 7, weak = 2, class = \"icelightning\", rarity = \"unique\", image = \"e8f7c148c79f497d83014e3361f59f5c\" },\n\tChillingStep = { name = \"칠링 스텝\", cost = 1, desc = \"방어도 8\", kind = \"Skill\", block = 8, class = \"icelightning\", rarity = \"unique\", image = \"bef20873a68a4651a91d74be457c2cfc\" },\n\tHeal = { name = \"힐\", cost = 1, desc = \"HP 10 회복\", kind = \"Skill\", class = \"cleric\", rarity = \"unique\", heal = 10, image = \"8b935b7d7066493cb462834bbe287c74\" },\n\tBless = { name = \"블레스\", cost = 1, desc = \"힘 +1, 방어도 5\", kind = \"Skill\", block = 5, strength = 1, class = \"cleric\", rarity = \"unique\", image = \"607fc5457c1c44a0993a5c2fe3fb0c68\" },\n\tHolyArrow = { name = \"홀리 애로우\", cost = 1, desc = \"피해 8\", kind = \"Attack\", damage = 8, class = \"cleric\", rarity = \"unique\", fx = \"4faa7b78e09643cf86339b8b7cf2abac\", image = \"a80127195bf7471f9545b70e491f4719\" },\n\tWound = { name = \"상처\", cost = 0, desc = \"사용할 수 없다. 손패를 막는 저주.\", kind = \"Status\", class = \"curse\", rarity = \"normal\", unplayable = true, curse = true },\n\tBurn = { name = \"화상\", cost = 0, desc = \"사용 불가. 손패에 있으면 턴 종료 시 피해 2.\", kind = \"Status\", class = \"curse\", rarity = \"normal\", unplayable = true, curse = true, endTurnDamage = 2 },\n\tNeutralize = { name = \"커닝식 견제\", cost = 0, desc = \"피해를 3 줍니다. 약화를 1 부여합니다.\", kind = \"Attack\", damage = 3, weak = 1, class = \"rogue\", rarity = \"normal\", image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tSilentStrike = { name = \"초보 도적의 칼끝\", cost = 1, desc = \"피해를 6 줍니다.\", kind = \"Attack\", damage = 6, class = \"rogue\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tSurvivor = { name = \"골목길 생존술\", cost = 1, desc = \"방어도를 8 얻습니다. 카드를 1장 버립니다.\", kind = \"Skill\", block = 8, class = \"rogue\", rarity = \"normal\", discard = 1, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tSilentDefend = { name = \"낡은 가죽 방패\", cost = 1, desc = \"방어도를 5 얻습니다.\", kind = \"Skill\", block = 5, class = \"rogue\", rarity = \"normal\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tDoubleStab = { name = \"더블 스탭\", cost = 1, desc = \"피해를 4만큼 2번 줍니다.\", kind = \"Attack\", damage = 4, class = \"rogue\", rarity = \"normal\", hits = 2, image = \"92a5020c978c46bdabab910598118b86\" },\n\tLuckySeven = { name = \"럭키 세븐\", cost = 1, desc = \"피해를 3만큼 3번 줍니다.\", kind = \"Attack\", damage = 3, class = \"rogue\", rarity = \"unique\", hits = 3, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHaste = { name = \"헤이스트\", cost = 1, desc = \"카드를 1장 뽑습니다. 에너지를 1 얻습니다.\", kind = \"Skill\", class = \"rogue\", rarity = \"normal\", draw = 1, gainEnergy = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tDarkSight = { name = \"다크 사이트\", cost = 1, desc = \"무형을 1 얻습니다. 소멸.\", kind = \"Skill\", intangible = 1, class = \"rogue\", rarity = \"unique\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tFlashJump = { name = \"플래시 점프\", cost = 0, desc = \"방어도를 4 얻습니다. 카드를 1장 뽑습니다. 소멸.\", kind = \"Skill\", block = 4, class = \"rogue\", rarity = \"normal\", draw = 1, exhaust = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tNimbleBody = { name = \"님블 바디\", cost = 1, desc = \"민첩을 1 얻습니다. 매 턴 방어도를 2 얻습니다.\", kind = \"Power\", dex = 1, powerEffect = \"blockPerTurn\", value = 2, class = \"rogue\", rarity = \"unique\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tSlice = { name = \"짧은 단검질\", cost = 0, desc = \"피해를 6 줍니다.\", kind = \"Attack\", damage = 6, class = \"rogue\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tShiv = { name = \"표창\", cost = 0, desc = \"피해를 4 줍니다. 소멸.\", kind = \"Attack\", damage = 4, class = \"shiv\", rarity = \"normal\", exhaust = true, token = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDaggerSpray = { name = \"단검비\", cost = 1, desc = \"모든 적에게 피해를 4만큼 2번 줍니다.\", kind = \"Attack\", damage = 4, class = \"thief\", rarity = \"normal\", hits = 2, aoe = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDaggerThrow = { name = \"비도 투척\", cost = 1, desc = \"피해를 9 줍니다. 카드를 1장 뽑습니다. 카드를 1장 버립니다.\", kind = \"Attack\", damage = 9, class = \"thief\", rarity = \"normal\", draw = 1, discard = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tPoisonedStab = { name = \"초록 독단검\", cost = 1, desc = \"피해를 6 줍니다. 중독을 3 부여합니다.\", kind = \"Attack\", damage = 6, class = \"rogue\", rarity = \"normal\", poison = 3, image = \"19361e72087946b1888684185b40d935\" },\n\tSuckerPunch = { name = \"골목 기습\", cost = 1, desc = \"피해를 7 줍니다. 약화를 1 부여합니다.\", kind = \"Attack\", damage = 7, weak = 1, class = \"rogue\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tLeadingStrike = { name = \"초보 표창 던지기\", cost = 1, desc = \"피해를 3 줍니다. 표창을 1장 손으로 가져옵니다.\", kind = \"Attack\", damage = 3, class = \"rogue\", rarity = \"normal\", addShiv = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tFollowThrough = { name = \"연달아 찌르기\", cost = 1, desc = \"피해를 7 줍니다. 손에 다른 카드가 5장 이상 있다면, 1번 추가로 적중합니다.\", kind = \"Attack\", damage = 7, otherHandAtLeast = 5, bonusHitsWhenOtherHandAtLeast = 1, class = \"thief\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tFlickFlack = { name = \"커닝 난무\", cost = 1, desc = \"교활. 모든 적에게 피해를 6 줍니다.\", kind = \"Attack\", damage = 6, class = \"thief\", rarity = \"normal\", sly = true, aoe = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tRicochet = { name = \"통통 튀는 표창\", cost = 2, desc = \"교활. 무작위 적에게 피해를 3만큼 4번 줍니다.\", kind = \"Attack\", damage = 3, class = \"assassin\", rarity = \"normal\", hits = 4, randomTargetEachHit = true, sly = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tPrepared = { name = \"비장의 패\", cost = 1, desc = \"카드를 1장 버리고, 이번 턴에 준 피해의 절반만큼 방어를 얻습니다.\", kind = \"Skill\", blockPerDamageDealtThisTurn = 0.5, class = \"thief\", rarity = \"normal\", discard = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tAnticipate = { name = \"럭키 예감\", cost = 0, desc = \"이번 턴 동안 민첩을 2 얻습니다.\", kind = \"Skill\", endTurnDexLoss = 2, dex = 2, class = \"rogue\", rarity = \"normal\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tDeflect = { name = \"단검 쳐내기\", cost = 0, desc = \"방어도를 4 얻습니다.\", kind = \"Skill\", block = 4, class = \"rogue\", rarity = \"normal\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tBladeDance = { name = \"표창 별무리\", cost = 1, desc = \"표창을 3장 손으로 가져옵니다. 소멸.\", kind = \"Skill\", class = \"assassin\", rarity = \"normal\", addShiv = 3, exhaust = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBackflip = { name = \"커닝 곡예\", cost = 1, desc = \"방어도를 5 얻습니다. 카드를 2장 뽑습니다.\", kind = \"Skill\", block = 5, class = \"rogue\", rarity = \"normal\", draw = 2, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tDodgeAndRoll = { name = \"골목 구르기\", cost = 1, desc = \"방어도를 4 얻습니다. 다음 턴에, 방어도를 4 얻습니다\", kind = \"Skill\", block = 4, class = \"rogue\", rarity = \"normal\", nextTurnBlock = 4, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tPiercingWail = { name = \"골목의 살기\", cost = 1, desc = \"이번 턴 동안 모든 적이 힘을 6 잃습니다. 소멸.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", affectsAllEnemies = true, enemyStrengthLossThisTurn = 6, exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tCloakAndDagger = { name = \"망토 속 별\", cost = 1, desc = \"방어도를 6 얻습니다. 표창을 1장 손으로 가져옵니다.\", kind = \"Skill\", block = 6, class = \"assassin\", rarity = \"normal\", addShiv = 1, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tDeadlyPoison = { name = \"맹독 조제\", cost = 1, desc = \"중독을 5 부여합니다.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", poison = 5, image = \"19361e72087946b1888684185b40d935\" },\n\tSnakebite = { name = \"독니 단검\", cost = 2, desc = \"보존. 중독을 7 부여합니다.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", poison = 7, retain = true, image = \"19361e72087946b1888684185b40d935\" },\n\tUntouchable = { name = \"연막 속 숨기\", cost = 2, desc = \"교활. 방어도를 6 얻습니다.\", kind = \"Skill\", block = 6, class = \"rogue\", rarity = \"normal\", sly = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tSkewer = { name = \"꿰뚫는 표창\", cost = 2, desc = \"피해를 8만큼 X번 줍니다.\", kind = \"Attack\", class = \"assassin\", rarity = \"unique\", useAllEnergy = true, xDamagePerEnergy = 8, image = \"92a5020c978c46bdabab910598118b86\" },\n\tBackstab = { name = \"그림자 등찌르기\", cost = 0, desc = \"선천성. 피해를 10 줍니다. 소멸.\", kind = \"Attack\", damage = 10, class = \"rogue\", rarity = \"unique\", innate = true, exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tPreciseCut = { name = \"급소 절개\", cost = 0, desc = \"피해를 13 줍니다. 손에 있는 다른 카드 1장당 피해량이 2 감소합니다.\", kind = \"Attack\", damage = 13, damagePerOtherHandCard = -2, class = \"thief\", rarity = \"unique\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tFinisher = { name = \"마지막 칼끝\", cost = 1, desc = \"이번 턴에 사용한 공격 카드 1장당 피해를 6 줍니다.\", kind = \"Attack\", damage = 0, damagePerAttackPlayedThisTurn = 6, class = \"thief\", rarity = \"unique\", image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tMementoMori = { name = \"사신의 장부\", cost = 1, desc = \"피해를 9 줍니다. 이번 턴에 버린 카드 1장당 피해량이 4 증가합니다.\", kind = \"Attack\", damage = 9, damagePerDiscardedThisTurn = 4, class = \"thief\", rarity = \"unique\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tStrangle = { name = \"그림자 올가미\", cost = 1, desc = \"피해를 8 줍니다.\", kind = \"Attack\", damage = 8, class = \"thief\", rarity = \"unique\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tFlechettes = { name = \"표창 셈법\", cost = 1, desc = \"손에 있는 스킬 카드 1장당 피해를 5 줍니다.\", kind = \"Attack\", damage = 0, damagePerSkillInHand = 5, class = \"assassin\", rarity = \"unique\", image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tPounce = { name = \"어둠을 가르는 도약\", cost = 2, desc = \"피해를 12 줍니다. 다음에 사용하는 스킬 카드의 비용이 0 이 됩니다.\", kind = \"Attack\", damage = 12, class = \"assassin\", rarity = \"unique\", nextSkillCostZero = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tDash = { name = \"뒷골목 돌파\", cost = 2, desc = \"방어도를 10 얻습니다. 피해를 10 줍니다.\", kind = \"Attack\", damage = 10, block = 10, class = \"thief\", rarity = \"unique\", image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tPredator = { name = \"표창 끝의 추격\", cost = 2, desc = \"피해를 15 줍니다. 다음 턴에, 카드를 2장 뽑습니다.\", kind = \"Attack\", damage = 15, class = \"assassin\", rarity = \"unique\", nextTurnDraw = 2, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tPinpoint = { name = \"한 점 겨냥\", cost = 3, desc = \"피해를 15 줍니다. 이번 턴에 스킬을 사용할 때마다 비용이 1 감소합니다.\", kind = \"Attack\", damage = 15, class = \"assassin\", rarity = \"unique\", skillCostReductionThisTurn = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tCalculatedGamble = { name = \"메소 건 승부\", cost = 0, desc = \"손에 있는 모든 카드를 버린 뒤, 버린 카드의 수만큼 카드를 뽑습니다. 소멸.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", discardAll = true, drawPerDiscarded = 1, exhaust = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tExpose = { name = \"약점 들추기\", cost = 0, desc = \"대상 적의 모든 인공물과 방어도를 제거합니다. 취약을 2 부여합니다. 소멸.\", kind = \"Skill\", vuln = 2, class = \"thief\", rarity = \"unique\", removeEnemyBlock = true, removeEnemyArtifact = true, exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tHiddenDaggers = { name = \"숨겨둔 표창\", cost = 0, desc = \"카드를 2장 버립니다. 표창을 2장 손으로 가져옵니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"unique\", discard = 2, addShiv = 2, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tEscapePlan = { name = \"비상용 연막탄\", cost = 0, desc = \"카드를 1장 뽑습니다. 뽑은 카드가 스킬 카드라면, 방어도를 3 얻습니다.\", kind = \"Skill\", class = \"rogue\", rarity = \"unique\", draw = 1, drawSkillBlock = 3, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tAcrobatics = { name = \"지붕 위 곡예\", cost = 1, desc = \"카드를 3장 뽑습니다. 카드를 1장 버립니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", draw = 3, discard = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tHandTrick = { name = \"재빠른 손놀림\", cost = 1, desc = \"방어도를 7 얻습니다. 이번 턴 동안 손에 있는 스킬 카드 1장에 교활을 추가합니다.\", kind = \"Skill\", block = 7, class = \"thief\", rarity = \"unique\", turnHandSlyCount = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tExpertise = { name = \"노련한 단검술\", cost = 1, desc = \"손에 있는 카드가 6장이 될 때까지 카드를 뽑습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", drawUntilHandSize = 6, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tBubbleBubble = { name = \"독액 농축\", cost = 1, desc = \"적이 중독을 보유하고 있다면, 중독을 9 부여합니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", poison = 9, poisonIfTargetPoisoned = true, image = \"19361e72087946b1888684185b40d935\" },\n\tBlur = { name = \"흐린 잔영\", cost = 1, desc = \"방어도를 5 얻습니다. 다음 턴 시작 시 방어도가 사라지지 않습니다.\", kind = \"Skill\", block = 5, class = \"thief\", rarity = \"unique\", nextTurnKeepBlock = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tLegSweep = { name = \"발목 베기\", cost = 2, desc = \"약화를 2 부여합니다. 방어도를 11 얻습니다.\", kind = \"Skill\", block = 11, weak = 2, class = \"thief\", rarity = \"unique\", image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tUpMySleeve = { name = \"소매 속 표창\", cost = 2, desc = \"표창을 3장 손으로 가져옵니다. 이 카드의 비용이 1 감소합니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"unique\", addShiv = 3, combatCostReductionOnPlay = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBouncingFlask = { name = \"통통 독병\", cost = 2, desc = \"무작위 적에게 중독을 3만큼 3번 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"unique\", poison = 3, poisonHits = 3, poisonRandomTargets = true, image = \"19361e72087946b1888684185b40d935\" },\n\tReflex = { name = \"찰나의 반응\", cost = 3, desc = \"교활. 카드를 2장 뽑습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", draw = 2, sly = true, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tHaze = { name = \"보랏빛 독연기\", cost = 3, desc = \"교활. 모든 적에게 중독을 4 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"unique\", poison = 4, sly = true, image = \"19361e72087946b1888684185b40d935\" },\n\tTactician = { name = \"골목길 책략\", cost = 3, desc = \"교활. 에너지를 1 얻습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", gainEnergy = 1, sly = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tWellLaidPlans = { name = \"빈틈없는 작전\", cost = 1, desc = \"내 턴 종료 시, 카드를 최대 1장까지 보존합니다.\", kind = \"Power\", powerEffect = \"retainOne\", value = 1, class = \"thief\", rarity = \"unique\", image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tInfiniteBlades = { name = \"끝없는 표창통\", cost = 1, desc = \"내 턴 시작 시, 표창을 1장 손으로 가져옵니다.\", kind = \"Power\", class = \"assassin\", rarity = \"unique\", turnStartShiv = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tFootwork = { name = \"사뿐한 발놀림\", cost = 1, desc = \"민첩을 2 얻습니다.\", kind = \"Power\", dex = 2, class = \"thief\", rarity = \"unique\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tOutbreak = { name = \"독맥 터뜨리기\", cost = 2, desc = \"독이 3번 부여될 때마다 모든 적에게 6 피해를 줍니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"unique\", poisonApplicationBurstEvery = 3, poisonApplicationBurstDamage = 6, image = \"19361e72087946b1888684185b40d935\" },\n\tNoxiousFumes = { name = \"숨막히는 독연기\", cost = 1, desc = \"내 턴 시작 시, 모든 적에게 중독을 2 부여합니다.\", kind = \"Power\", powerEffect = \"poisonPerTurn\", value = 2, class = \"thief\", rarity = \"unique\", poison = 2, image = \"19361e72087946b1888684185b40d935\" },\n\tSpeedster = { name = \"그림자 속도전\", cost = 2, desc = \"내 턴 동안 카드를 뽑을 때마다, 모든 적에게 피해를 1 줍니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"unique\", drawDamage = 1, aoe = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tGrandFinale = { name = \"커닝의 대단원\", cost = 0, desc = \"뽑을 카드 더미에 카드가 없을 때만 사용할 수 있습니다. 모든 적에게 피해를 45 줍니다.\", kind = \"Attack\", damage = 45, class = \"thiefmaster\", rarity = \"legend\", playableWhenDrawPileEmpty = true, aoe = true, image = \"dbdbb1b56ae54672ae68ac6882fff6a2\" },\n\tAssassinate = { name = \"어둠 속 급소\", cost = 0, desc = \"선천성. 피해를 10 줍니다. 취약을 1 부여합니다. 소멸.\", kind = \"Attack\", damage = 10, vuln = 1, class = \"thiefmaster\", rarity = \"legend\", innate = true, exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tEchoingSlash = { name = \"메아리 칼자국\", cost = 2, desc = \"모든 적에게 피해를 6 줍니다. 적을 처치할 때마다 이 효과를 반복합니다.\", kind = \"Attack\", damage = 10, class = \"thiefmaster\", rarity = \"legend\", repeatOnKill = true, aoe = true, image = \"dbdbb1b56ae54672ae68ac6882fff6a2\" },\n\tTheHunt = { name = \"커닝 현상금\", cost = 1, desc = \"피해를 10 줍니다. 이 카드로 적을 처치하면 카드 보상을 추가로 얻습니다. 소멸.\", kind = \"Attack\", damage = 6, rewardOnKill = 1, class = \"assassin\", rarity = \"legend\", exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tMurder = { name = \"쌓여가는 살의\", cost = 3, desc = \"피해를 1 줍니다. 이번 전투 동안 뽑은 카드 1장당 피해량이 1 증가합니다.\", kind = \"Attack\", damage = 1, damagePerCardDrawnThisCombat = 1, class = \"thiefmaster\", rarity = \"legend\", image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tMalaise = { name = \"기운 빼는 독\", cost = 2, desc = \"에너지를 모두 사용하고, 사용한 에너지만큼 적에게 약화를 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", useAllEnergy = true, xWeakPerEnergy = 1, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tStormOfSteel = { name = \"쇠별 폭풍\", cost = 1, desc = \"손에 있는 모든 카드를 버립니다. 버린 카드의 수만큼 표창을 손으로 가져옵니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"legend\", discardAll = true, addShivPerDiscard = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tShadowStep = { name = \"그림자 발자국\", cost = 1, desc = \"손에 있는 모든 카드를 버립니다. 다음 턴에, 공격 카드의 피해량이 2배가 됩니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", discardAll = true, nextTurnAttackMultiplier = 2, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tShadowmeld = { name = \"연막 속 은신\", cost = 1, desc = \"이번 턴 동안 얻는 방어도가 2배가 됩니다.\", kind = \"Skill\", blockGainMultiplier = 2, class = \"thiefmaster\", rarity = \"legend\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tCorrosiveWave = { name = \"부식 독물결\", cost = 1, desc = \"이번 턴에 카드를 뽑을 때마다, 모든 적에게 중독을 2 부여합니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", drawPoison = 2, image = \"19361e72087946b1888684185b40d935\" },\n\tBladeOfInk = { name = \"먹빛 표창\", cost = 1, desc = \"잉크투성이 표창을 2장 손으로 가져옵니다.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", addShiv = 2, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBurst = { name = \"연속 술수\", cost = 1, desc = \"이번 턴에 다음에 사용하는 스킬 카드가 1번 추가로 사용됩니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", nextSkillRepeatCount = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tKnifeTrap = { name = \"숨은 칼날덫\", cost = 2, desc = \"교활. 모든 적에게 피해를 7 주고 중독을 2 부여합니다.\", kind = \"Attack\", damage = 7, class = \"thiefmaster\", rarity = \"legend\", poison = 2, sly = true, aoe = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tBulletTime = { name = \"멈춘 듯한 순간\", cost = 3, desc = \"이번 턴 동안 더 이상 카드를 뽑을 수 없습니다. 이번 턴 동안 손에 있는 모든 카드를 비용 없이 사용할 수 있습니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", handCostZeroThisTurn = true, drawDisabledThisTurn = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tNightmare = { name = \"검은 꿈\", cost = 3, desc = \"카드를 1장 선택합니다. 다음 턴에, 그 카드의 복사본을 3장 손으로 가져옵니다. 소멸.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", nextTurnCopies = 3, nextTurnSelectHandCard = true, nextTurnSelectPrompt = \"복사할 카드를 선택하세요\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tToolsOfTheTrade = { name = \"도적의 연장통\", cost = 1, desc = \"내 턴 시작 시, 카드를 1장 뽑고 카드를 1장 버립니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"legend\", turnStartDraw = 1, turnStartDiscard = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tMasterPlanner = { name = \"작전의 달인\", cost = 2, desc = \"사용한 스킬 카드는 교활해집니다.\", kind = \"Power\", class = \"thiefmaster\", rarity = \"legend\", skillSlyOnPlay = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tFanOfKnives = { name = \"사방 표창비\", cost = 2, desc = \"표창이 이제 모든 적을 대상으로 합니다. 표창을 4장 손으로 가져옵니다.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", addShiv = 4, shivAoe = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tSerpentForm = { name = \"독사의 몸놀림\", cost = 2, desc = \"카드를 사용할 때마다, 무작위 적에게 피해를 4 줍니다.\", kind = \"Power\", cardPlayedRandomDamage = 4, class = \"thiefmaster\", rarity = \"legend\", image = \"19361e72087946b1888684185b40d935\" },\n\tAbrasive = { name = \"거친 숫돌질\", cost = 2, desc = \"교활. 민첩을 1 얻습니다. 가시를 4 얻습니다.\", kind = \"Power\", dex = 1, thorns = 4, class = \"thiefmaster\", rarity = \"legend\", sly = true, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tSuppress = { name = \"소리 없는 제압\", cost = 0, desc = \"선천성. 피해를 9 줍니다. 약화를 2 부여합니다. 소멸.\", kind = \"Attack\", damage = 9, weak = 2, class = \"thiefmaster\", rarity = \"legend\", innate = true, exhaust = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tWraithForm = { name = \"유령 같은 몸놀림\", cost = 3, desc = \"불가침을 2 얻습니다. 내 턴 종료 시 민첩을 1 잃습니다.\", kind = \"Power\", intangible = 2, endTurnDexLoss = 1, class = \"thiefmaster\", rarity = \"legend\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tSavageBlow = { name = \"새비지 블로우\", cost = 1, desc = \"피해를 3만큼 2번 줍니다. 이번 턴에 사용한 공격 카드 1장당 피해가 2 증가합니다.\", kind = \"Attack\", damage = 3, damagePerAttackPlayedThisTurn = 2, class = \"thief\", rarity = \"normal\", hits = 2, image = \"92a5020c978c46bdabab910598118b86\" },\n\tCriticalEdge = { name = \"크리티컬 엣지\", cost = 1, desc = \"카드를 1장 뽑습니다. 다음 턴에 공격 카드의 피해량이 2배가 됩니다. 보존.\", kind = \"Skill\", class = \"thief\", rarity = \"unique\", draw = 1, nextTurnAttackMultiplier = 2, retain = true, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tSteal = { name = \"스틸\", cost = 1, desc = \"피해를 3 줍니다. 이번 턴에 버린 카드 1장당 피해가 3 증가합니다. 에너지를 1 얻습니다.\", kind = \"Attack\", damage = 3, damagePerDiscardedThisTurn = 3, class = \"thief\", rarity = \"normal\", gainEnergy = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDaggerAcceleration = { name = \"대거 액셀레이션\", cost = 0, desc = \"카드를 1장 뽑습니다. 카드를 1장 버립니다. 버린 카드마다 카드를 1장 더 뽑습니다.\", kind = \"Skill\", class = \"thief\", rarity = \"normal\", draw = 1, discard = 1, drawPerDiscarded = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tKarma = { name = \"카르마\", cost = 1, desc = \"피해를 7 줍니다. 방어도를 무시합니다. 약화 상태의 적에게는 피해가 2배가 됩니다.\", kind = \"Attack\", damage = 7, class = \"thief\", rarity = \"unique\", pierce = true, attackDamageVsWeakMultiplier = 2, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tDaggerMastery = { name = \"대거 마스터리\", cost = 1, desc = \"카드를 사용할 때마다 방어도를 1 얻습니다. 매 턴 첫 카드의 피해가 3 증가합니다.\", kind = \"Power\", firstCardDamageBonus = 3, cardPlayedBlock = 1, class = \"thief\", rarity = \"unique\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tPhysicalTraining = { name = \"피지컬 트레이닝\", cost = 2, desc = \"힘을 1 얻습니다. 민첩을 1 얻습니다.\", kind = \"Power\", strength = 1, dex = 1, class = \"thief\", rarity = \"normal\", image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tShieldMastery = { name = \"실드 마스터리\", cost = 1, desc = \"방어도를 7 얻습니다. 다음 턴에 방어도가 사라지지 않습니다.\", kind = \"Skill\", block = 7, class = \"thief\", rarity = \"normal\", nextTurnKeepBlock = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tThiefAgility = { name = \"시프 어질리티\", cost = 1, desc = \"방어도를 5 얻습니다. 이번 턴 동안 민첩을 1 얻습니다. 손의 다른 스킬 카드 1장이 교활해집니다.\", kind = \"Skill\", endTurnDexLoss = 1, block = 5, dex = 1, class = \"thief\", rarity = \"unique\", turnHandSlyCount = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tEdgeCarnival = { name = \"엣지 카니발\", cost = 1, desc = \"무작위 적에게 피해를 2만큼 4번 줍니다.\", kind = \"Attack\", damage = 2, class = \"thiefmaster\", rarity = \"unique\", hits = 4, randomTargetEachHit = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tMuspelHeim = { name = \"무스펠 하임\", cost = 1, desc = \"모든 적에게 피해를 4 줍니다. 이번 턴에 버린 카드 1장당 피해가 2 증가합니다. 약화를 1 부여합니다.\", kind = \"Attack\", damage = 4, damagePerDiscardedThisTurn = 2, weak = 1, class = \"thiefmaster\", rarity = \"unique\", aoe = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tMesoExplosion = { name = \"메소 익스플로젼\", cost = 1, desc = \"피해를 2 줍니다. 이번 턴에 버린 카드 1장당 피해가 7 증가합니다. 방어도를 무시합니다.\", kind = \"Attack\", damage = 2, damagePerDiscardedThisTurn = 7, class = \"thiefmaster\", rarity = \"unique\", pierce = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tDarkFlare = { name = \"다크 플레어\", cost = 1, desc = \"매 턴 모든 적에게 피해를 2 줍니다. 카드를 사용할 때마다 무작위 적에게 피해를 2 줍니다.\", kind = \"Power\", cardPlayedRandomDamage = 2, powerEffect = \"damagePerTurn\", value = 2, class = \"thiefmaster\", rarity = \"unique\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tPickPocket = { name = \"픽 파킷\", cost = 1, desc = \"카드를 1장 뽑습니다. 카드를 1장 버리고, 에너지를 1 얻습니다.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"unique\", draw = 1, gainEnergy = 1, discard = 1, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tShadowPartner = { name = \"쉐도우 파트너\", cost = 2, desc = \"카드를 1장 선택합니다. 다음 턴에 그 카드의 복사본 1장을 손에 넣습니다. 카드를 1장 뽑습니다. 소멸.\", kind = \"Skill\", class = \"thiefmaster\", rarity = \"legend\", draw = 1, nextTurnCopies = 1, nextTurnSelectHandCard = true, nextTurnSelectPrompt = \"복사할 카드를 선택하세요.\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tAdvancedDarkSight = { name = \"어드밴스드 다크 사이트\", cost = 1, desc = \"무형을 1 얻습니다. 이번 턴 동안 손의 다른 스킬 카드 2장이 교활해집니다.\", kind = \"Skill\", intangible = 1, class = \"thiefmaster\", rarity = \"unique\", turnHandSlyCount = 2, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tIntoDarkness = { name = \"인투 다크니스\", cost = 1, desc = \"모든 적에게 약화를 1 부여합니다. 이번 턴 동안 손의 다른 스킬 카드 2장이 교활해집니다.\", kind = \"Skill\", weak = 1, class = \"thiefmaster\", rarity = \"unique\", turnHandSlyCount = 2, affectsAllEnemies = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tVenom = { name = \"베놈\", cost = 1, desc = \"공격 카드가 막히지 않은 피해를 줄 때마다 중독을 1 부여합니다. 적 턴 시작 시 독이 한 번 더 적용됩니다.\", kind = \"Power\", attackPoison = 1, class = \"thiefmaster\", rarity = \"legend\", extraPoisonTicks = 1, image = \"19361e72087946b1888684185b40d935\" },\n\tGrid = { name = \"그리드\", cost = 2, desc = \"가시를 3 얻습니다. 카드를 사용할 때마다 방어도를 1 얻습니다.\", kind = \"Power\", thorns = 3, cardPlayedBlock = 1, class = \"thiefmaster\", rarity = \"unique\", image = \"0946f69d84464df29b24b94c744c868d\" },\n\tRadicalDarkness = { name = \"래디컬 다크니스\", cost = 2, desc = \"카드를 1장 뽑습니다. 이번 턴 동안 얻는 방어도가 2배가 됩니다. 다음 턴에 방어도가 사라지지 않습니다.\", kind = \"Skill\", blockGainMultiplier = 2, class = \"thiefmaster\", rarity = \"legend\", draw = 1, nextTurnKeepBlock = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tShurikenBurst = { name = \"슈리켄 버스트\", cost = 1, desc = \"무작위 적에게 피해를 3씩 4번 줍니다.\", kind = \"Attack\", damage = 3, class = \"assassin\", rarity = \"normal\", hits = 4, randomTargetEachHit = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tWindTalisman = { name = \"윈드 탈리스만\", cost = 1, desc = \"카드를 1장 뽑습니다. 이번 턴 동안 스킬 카드의 비용이 1 감소합니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"unique\", draw = 1, skillCostReductionThisTurn = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tMarkOfAssassin = { name = \"마크 오브 어쌔신\", cost = 1, desc = \"약화 1을 부여합니다. 약화 상태의 적에게 주는 공격 피해가 1.5배가 됩니다.\", kind = \"Power\", weak = 1, class = \"assassin\", rarity = \"unique\", attackDamageVsWeakMultiplier = 1.5, image = \"c1e19219745e44c39ae6ac2f77e347d9\" },\n\tShadowRush = { name = \"쉐도우 러쉬\", cost = 1, desc = \"피해 7, 방어도 5를 얻습니다.\", kind = \"Attack\", damage = 7, block = 5, class = \"assassin\", rarity = \"normal\", image = \"92a5020c978c46bdabab910598118b86\" },\n\tShadowLeap = { name = \"쉐도우 리프\", cost = 0, desc = \"방어도 4를 얻습니다. 다음 턴에 방어도 4를 얻습니다. 소멸.\", kind = \"Skill\", block = 4, class = \"assassin\", rarity = \"normal\", nextTurnBlock = 4, exhaust = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tShadowBlink = { name = \"쉐도우 블링크\", cost = 1, desc = \"무형 1을 얻습니다. 다음 스킬 카드의 비용이 0이 됩니다. 소멸.\", kind = \"Skill\", intangible = 1, class = \"assassin\", rarity = \"unique\", nextSkillCostZero = true, exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tJavelinMastery = { name = \"자벨린 마스터리\", cost = 1, desc = \"표창의 피해량이 2 증가합니다.\", kind = \"Power\", class = \"assassin\", rarity = \"unique\", shivDamageBonus = 2, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tJavelinAcceleration = { name = \"자벨린 액셀레이션\", cost = 1, desc = \"카드를 2장 뽑습니다. 카드를 1장 버립니다. 표창 1장을 손에 넣습니다.\", kind = \"Skill\", class = \"assassin\", rarity = \"normal\", draw = 2, discard = 1, addShiv = 1, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n\tCriticalThrow = { name = \"크리티컬 스로우\", cost = 1, desc = \"피해를 6씩 2번 줍니다. 방어도를 무시합니다. 이번 턴 첫 카드라면 피해가 더 강해집니다.\", kind = \"Attack\", damage = 6, firstCardDamageBonus = 2, class = \"assassin\", rarity = \"unique\", hits = 2, pierce = true, image = \"b1360ed0c4b942309d240634b8f36872\" },\n\tAssassinPhysicalTraining = { name = \"피지컬 트레이닝\", cost = 2, desc = \"힘 1, 민첩 1을 얻고 카드를 1장 뽑습니다.\", kind = \"Power\", strength = 1, dex = 1, class = \"assassin\", rarity = \"normal\", draw = 1, image = \"49c8f279bfa64bf3954037f17da0052d\" },\n\tTripleThrow = { name = \"트리플 스로우\", cost = 1, desc = \"피해를 4씩 3번 줍니다.\", kind = \"Attack\", damage = 4, class = \"hermit\", rarity = \"normal\", hits = 3, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tShurikenChallenge = { name = \"슈리켄 챌린지\", cost = 1, desc = \"피해를 5씩 2번 줍니다. 다음 턴에 카드를 1장 더 뽑습니다.\", kind = \"Attack\", damage = 5, class = \"hermit\", rarity = \"unique\", hits = 2, nextTurnDraw = 1, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHermitDarkFlare = { name = \"다크 플레어\", cost = 2, desc = \"매 턴 모든 적에게 피해 3을 줍니다. 턴 시작마다 표창 1장을 손에 넣습니다.\", kind = \"Power\", powerEffect = \"damagePerTurn\", value = 3, class = \"hermit\", rarity = \"unique\", turnStartShiv = 1, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tHermitShadowPartner = { name = \"쉐도우 파트너\", cost = 2, desc = \"카드를 1장 뽑습니다. 다음 턴 공격 카드의 피해가 2배가 됩니다.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", draw = 1, nextTurnAttackMultiplier = 2, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tSpiritJavelin = { name = \"스피릿 자벨린\", cost = 1, desc = \"표창이 턴 종료 시 사라지지 않습니다. 매 턴 처음 사용하는 표창의 피해량이 4 증가합니다.\", kind = \"Power\", class = \"hermit\", rarity = \"unique\", firstShivDamageBonus = 4, shivRetain = true, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHermitRadicalDarkness = { name = \"래디컬 다크니스\", cost = 1, desc = \"방어도 4를 얻습니다. 이번 턴 동안 얻는 방어도가 2배가 됩니다. 소멸.\", kind = \"Skill\", block = 4, blockGainMultiplier = 2, class = \"hermit\", rarity = \"unique\", exhaust = true, image = \"0946f69d84464df29b24b94c744c868d\" },\n\tHermitVenom = { name = \"베놈\", cost = 2, desc = \"공격 카드가 막히지 않은 피해를 줄 때마다 중독 1을 부여합니다. 전투 중 독 부여 3회마다 모든 적에게 피해 8을 줍니다.\", kind = \"Power\", attackPoison = 1, class = \"hermit\", rarity = \"legend\", poisonApplicationBurstEvery = 3, poisonApplicationBurstDamage = 8, image = \"19361e72087946b1888684185b40d935\" },\n\tSkilledJavelin = { name = \"숙련된 표창술\", cost = 1, desc = \"표창의 피해량이 2 증가합니다. 매 턴 처음 사용하는 표창의 피해량이 4 증가합니다.\", kind = \"Power\", class = \"hermit\", rarity = \"unique\", shivDamageBonus = 2, firstShivDamageBonus = 4, image = \"1b0f2dc8abd0434990eee1befefcbe0d\" },\n\tHermitAdrenaline = { name = \"아드레날린\", cost = 0, desc = \"에너지를 1 얻고 카드를 1장 뽑습니다. 표창 1장을 손에 넣습니다. 소멸.\", kind = \"Skill\", class = \"hermit\", rarity = \"legend\", draw = 1, gainEnergy = 1, addShiv = 1, exhaust = true, image = \"91a2d1c16cb041549adbf1a0d7b1f37f\" },\n}\nself.DrawPile = {}\nfor i = 1, #self.RunDeck do\n\tself.DrawPile[i] = self.RunDeck[i]\nend\nself:Shuffle(self.DrawPile)\nself:PrepareCombatDrawPile()\nself:BuildMonsters()\nself:RenderCombat()\nself:StartPlayerTurn()\nself:ApplyRelics(\"combatStart\")\nself:RenderCombat()\nlocal slotTid = 0\nslotTid = _TimerService:SetTimerRepeat(function()\n\tif self.CombatOver == true or self.Monsters == nil or #self.Monsters == 0 then\n\t\t_TimerService:ClearTimer(slotTid)\n\t\treturn\n\tend\n\tfor i = 1, #self.Monsters do\n\t\tif self.Monsters[i] ~= nil and self.Monsters[i].alive == true then\n\t\t\tself:PositionMonsterSlot(i)\n\t\tend\n\tend\nend, 0.15)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -2031,7 +2052,7 @@ "Name": null }, "Arguments": [], - "Code": "self.Turn = self.Turn + 1\nself.RetainSelectActive = false\nself.ReserveSelectActive = false\nself.TurnAttackCardsPlayed = 0\nself.TurnDiscardedCards = 0\nself.TurnCardsPlayedThisTurn = 0\nself.DamageDealtThisTurn = 0\nself.NextTurnSelectCopies = 0\nself.NextTurnSelectPrompt = \"\"\nself.SkillCostReductionThisTurn = 0\nself:UpdateDiscardPrompt()\nself.Energy = self.MaxEnergy\nself.BlockGainMultiplier = 1\nself:ApplyRelics(\"turnStart\")\nif self.NextTurnKeepBlock == true then\n\tself.NextTurnKeepBlock = false\nelseif self:HasPowerEffect(\"keepBlock\") == true then\nelse\n\tself.PlayerBlock = 0\nend\nif self.ClayBlockNext > 0 then\n\tself.PlayerBlock = self.PlayerBlock + self.ClayBlockNext\n\tself.ClayBlockNext = 0\nend\nself.TurnAttackMultiplier = self.NextTurnAttackMultiplier or 1\nself.NextTurnAttackMultiplier = 1\nself.CardsDrawnThisCombat = self.CardsDrawnThisCombat or 0\nself.ShivFirstDamageBonusUsed = false\nself.ActiveAttackDamageVsWeakMultiplier = 1\nself.DrawDamageThisTurn = 0\nself.DrawPoisonThisTurn = 0\nself.ShivAoeThisCombat = false\nself.ZeroCostCardIdsThisTurn = {}\nself.SkillSlyOnPlayCards = self.SkillSlyOnPlayCards or {}\nself.TurnSkillSlyCards = {}\nself.EnemyStrengthLossThisTurn = 0\nself.HandCostZeroThisTurn = false\nself.DrawDisabledThisTurn = false\nlocal powerTurnDraw = 0\nlocal powerTurnDiscard = 0\nif self.PlayerPowers ~= nil then\n\tfor i = 1, #self.PlayerPowers do\n\t\tlocal pc = self.Cards[self.PlayerPowers[i]]\n\t\tif pc ~= nil then\n\t\t\tif pc.powerEffect == \"strengthPerTurn\" then\n\t\t\t\tself.PlayerStr = self.PlayerStr + pc.value\n\t\t\telseif pc.powerEffect == \"energyPerTurn\" then\n\t\t\t\tself.Energy = self.Energy + pc.value\n\t\t\telseif pc.powerEffect == \"blockPerTurn\" then\n\t\t\t\tself.PlayerBlock = self.PlayerBlock + pc.value\n\t\t\telseif pc.powerEffect == \"keepBlock\" then\n\t\t\telseif pc.powerEffect == \"poisonPerTurn\" then\n\t\t\t\tif self.Monsters ~= nil then\n\t\t\t\t\tfor j = 1, #self.Monsters do\n\t\t\t\t\t\tlocal tm = self.Monsters[j]\n\t\t\t\t\t\tif tm ~= nil and tm.alive == true then\n\t\t\t\t\t\t\tself:ApplyPoisonToMonster(tm, pc.value)\n\t\t\t\t\t\tend\n\t\t\t\t\tend\n\t\t\t\tend\n\t\t\telseif pc.powerEffect == \"damagePerTurn\" then\n\t\t\t\tif self.Monsters ~= nil then\n\t\t\t\t\tself:PlayAoeFx(pc.fx or pc.image, pc.value or 0)\n\t\t\t\tend\n\t\t\tend\n\t\t\tif pc.turnStartShiv ~= nil then\n\t\t\t\tself:AddCardsToHand(\"Shiv\", pc.turnStartShiv)\n\t\t\tend\n\t\t\tif pc.turnStartDraw ~= nil then\n\t\t\t\tpowerTurnDraw = powerTurnDraw + pc.turnStartDraw\n\t\t\tend\n\t\t\tif pc.turnStartDiscard ~= nil then\n\t\t\t\tpowerTurnDiscard = powerTurnDiscard + pc.turnStartDiscard\n\t\t\tend\n\t\tend\n\tend\nend\nif self.NextTurnBlock ~= nil and self.NextTurnBlock > 0 then\n\tself:AddCardBlock(self.NextTurnBlock)\n\tself.NextTurnBlock = 0\nend\nif self.NextTurnAddCards ~= nil then\n\tfor i = 1, #self.NextTurnAddCards do\n\t\tlocal entry = self.NextTurnAddCards[i]\n\t\tif entry ~= nil and entry.cardId ~= nil and entry.amount ~= nil and entry.amount > 0 then\n\t\t\tself:AddCardsToHand(entry.cardId, entry.amount)\n\t\tend\n\tend\n\tself.NextTurnAddCards = {}\nend\nlocal drawN = 5 + (self.NextTurnDraw or 0) + powerTurnDraw\nself.NextTurnDraw = 0\nself:DrawCards(drawN)\nself:RenderHand(true)\nself:RenderCombat()\nif powerTurnDiscard > 0 then\n\tself:BeginDiscardSelection({ discard = math.min(powerTurnDiscard, #self.Hand) })\n\treturn\nend\nself:RenderCombat()", + "Code": "self.Turn = self.Turn + 1\nself.RetainSelectActive = false\nself.ReserveSelectActive = false\nself.TurnAttackCardsPlayed = 0\nself.TurnDiscardedCards = 0\nself.TurnCardsPlayedThisTurn = 0\nself.DamageDealtThisTurn = 0\nself.NextTurnSelectCopies = 0\nself.NextTurnSelectPrompt = \"\"\nself.SkillCostReductionThisTurn = 0\nself:UpdateDiscardPrompt()\nself.Energy = self.MaxEnergy\nself.BlockGainMultiplier = 1\nself:ApplyRelics(\"turnStart\")\nif self.NextTurnKeepBlock == true then\n\tself.NextTurnKeepBlock = false\nelseif self:HasPowerEffect(\"keepBlock\") == true then\nelse\n\tself.PlayerBlock = 0\nend\nif self.ClayBlockNext > 0 then\n\tself.PlayerBlock = self.PlayerBlock + self.ClayBlockNext\n\tself.ClayBlockNext = 0\nend\nself.TurnAttackMultiplier = self.NextTurnAttackMultiplier or 1\nself.NextTurnAttackMultiplier = 1\nself.CardsDrawnThisCombat = self.CardsDrawnThisCombat or 0\nself.ShivFirstDamageBonusUsed = false\nself.ActiveAttackDamageVsWeakMultiplier = 1\nself.DrawDamageThisTurn = 0\nself.DrawPoisonThisTurn = 0\nself.ShivAoeThisCombat = false\nself.ZeroCostCardIdsThisTurn = {}\nself.SkillSlyOnPlayCards = self.SkillSlyOnPlayCards or {}\nself.TurnSkillSlyCards = {}\nself.EnemyStrengthLossThisTurn = 0\nself.HandCostZeroThisTurn = false\nself.DrawDisabledThisTurn = false\nlocal powerTurnDraw = 0\nlocal powerTurnDiscard = 0\nif self.PlayerPowers ~= nil then\n\tfor i = 1, #self.PlayerPowers do\n\t\tlocal pc = self.Cards[self.PlayerPowers[i]]\n\t\tif pc ~= nil then\n\t\t\tif pc.powerEffect == \"strengthPerTurn\" then\n\t\t\t\tself.PlayerStr = self.PlayerStr + pc.value\n\t\t\telseif pc.powerEffect == \"energyPerTurn\" then\n\t\t\t\tself.Energy = self.Energy + pc.value\n\t\t\telseif pc.powerEffect == \"blockPerTurn\" then\n\t\t\t\tself.PlayerBlock = self.PlayerBlock + pc.value\n\t\t\telseif pc.powerEffect == \"keepBlock\" then\n\t\t\telseif pc.powerEffect == \"poisonPerTurn\" then\n\t\t\t\tif self.Monsters ~= nil then\n\t\t\t\t\tfor j = 1, #self.Monsters do\n\t\t\t\t\t\tlocal tm = self.Monsters[j]\n\t\t\t\t\t\tif tm ~= nil and tm.alive == true then\n\t\t\t\t\t\t\tself:ApplyPoisonToMonster(tm, pc.value)\n\t\t\t\t\t\tend\n\t\t\t\t\tend\n\t\t\t\tend\n\t\t\telseif pc.powerEffect == \"damagePerTurn\" then\n\t\t\t\tif self.Monsters ~= nil then\n\t\t\t\t\tself:PlayAoeFx(pc.fx or pc.image, pc.value or 0)\n\t\t\t\tend\n\t\t\telseif pc.powerEffect == \"healPerTurn\" then\n\t\t\t\tself.PlayerHp = math.min(self.PlayerMaxHp, self.PlayerHp + pc.value)\n\t\t\tend\n\t\t\tif pc.turnStartShiv ~= nil then\n\t\t\t\tself:AddCardsToHand(\"Shiv\", pc.turnStartShiv)\n\t\t\tend\n\t\t\tif pc.turnStartDraw ~= nil then\n\t\t\t\tpowerTurnDraw = powerTurnDraw + pc.turnStartDraw\n\t\t\tend\n\t\t\tif pc.turnStartDiscard ~= nil then\n\t\t\t\tpowerTurnDiscard = powerTurnDiscard + pc.turnStartDiscard\n\t\t\tend\n\t\tend\n\tend\nend\nif self.NextTurnBlock ~= nil and self.NextTurnBlock > 0 then\n\tself:AddCardBlock(self.NextTurnBlock)\n\tself.NextTurnBlock = 0\nend\nif self.NextTurnAddCards ~= nil then\n\tfor i = 1, #self.NextTurnAddCards do\n\t\tlocal entry = self.NextTurnAddCards[i]\n\t\tif entry ~= nil and entry.cardId ~= nil and entry.amount ~= nil and entry.amount > 0 then\n\t\t\tself:AddCardsToHand(entry.cardId, entry.amount)\n\t\tend\n\tend\n\tself.NextTurnAddCards = {}\nend\nlocal drawN = 5 + (self.NextTurnDraw or 0) + powerTurnDraw\nself.NextTurnDraw = 0\nself:DrawCards(drawN)\nself:RenderHand(true)\nself:RenderCombat()\nif powerTurnDiscard > 0 then\n\tself:BeginDiscardSelection({ discard = math.min(powerTurnDiscard, #self.Hand) })\n\treturn\nend\nself:RenderCombat()", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -2920,6 +2941,151 @@ "Attributes": [], "Name": "CountOwnedNameMatches" }, + { + "Return": { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "field" + } + ], + "Code": "local best = 0\nif self.PlayerPowers == nil then\n\treturn best\nend\nfor i = 1, #self.PlayerPowers do\n\tlocal powerCard = self.Cards[self.PlayerPowers[i]]\n\tif powerCard ~= nil and powerCard[field] ~= nil and powerCard[field] > best then\n\t\tbest = powerCard[field]\n\tend\nend\nreturn best", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "MaxPowerField" + }, + { + "Return": { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [], + "Code": "local comboMax = 5\nlocal powerMax = self:MaxPowerField(\"comboMax\")\nif powerMax ~= nil and powerMax > comboMax then\n\tcomboMax = powerMax\nend\nreturn comboMax", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "GetComboMax" + }, + { + "Return": { + "Type": "void", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "amount" + } + ], + "Code": "if amount == nil or amount <= 0 then\n\treturn\nend\nself.ComboCount = math.min(self:GetComboMax(), (self.ComboCount or 0) + amount)", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "GainCombo" + }, + { + "Return": { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [], + "Code": "local chargeMax = 3\nlocal powerMax = self:MaxPowerField(\"holyChargeMax\")\nif powerMax ~= nil and powerMax > chargeMax then\n\tchargeMax = powerMax\nend\nreturn chargeMax", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "GetHolyChargeMax" + }, + { + "Return": { + "Type": "void", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "amount" + } + ], + "Code": "if amount == nil or amount <= 0 then\n\treturn\nend\nself.HolyChargeCount = math.min(self:GetHolyChargeMax(), (self.HolyChargeCount or 0) + amount)", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "GainHolyCharge" + }, + { + "Return": { + "Type": "void", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "any", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "c" + } + ], + "Code": "if c == nil then\n\treturn\nend\nlocal gain = c.holyChargeGain or 0\nif c.holyForce == true then\n\tgain = gain + self:AddPowerFieldTotal(\"holyChargeOnHolyForce\")\nend\nself:GainHolyCharge(gain)\nif c.holyChargeSpendAll == true then\n\tself.HolyChargeCount = 0\nend", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "ApplyHolyForceCardPlayHooks" + }, + { + "Return": { + "Type": "void", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "any", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "c" + } + ], + "Code": "if c == nil or c.kind ~= \"Attack\" then\n\treturn\nend\nlocal comboGain = c.comboGain or 0\ncomboGain = comboGain + self:AddPowerFieldTotal(\"comboOnAttack\")\nself:GainCombo(comboGain)\nlocal extraDamage = self:AddPowerFieldTotal(\"attackPlayedDamage\")\nif extraDamage ~= nil and extraDamage > 0 then\n\tself:DealDirectDamageToTarget(extraDamage)\nend\nlocal weakAmount = self:AddPowerFieldTotal(\"attackWeak\")\nif weakAmount ~= nil and weakAmount > 0 and self.Monsters ~= nil then\n\tlocal target = self.Monsters[self.TargetIndex]\n\tif target ~= nil and target.alive == true then\n\t\tif target.artifact ~= nil and target.artifact > 0 then\n\t\t\ttarget.artifact = target.artifact - 1\n\t\telse\n\t\t\ttarget.weak = (target.weak or 0) + weakAmount\n\t\tend\n\tend\nend", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "ApplyAttackCardPlayHooks" + }, { "Return": { "Type": "number", @@ -2944,7 +3110,7 @@ "Name": "c" } ], - "Code": "local base2 = c.damage or 0\nif c.damageNameMatch ~= nil and c.damagePerOwnedNameMatch ~= nil then\n\tbase2 = base2 + self:CountOwnedNameMatches(c.damageNameMatch) * c.damagePerOwnedNameMatch\nend\nif c.damageFromCurrentBlock ~= nil and c.damageFromCurrentBlock ~= 0 then\n\tbase2 = base2 + (self.PlayerBlock or 0) * c.damageFromCurrentBlock\nend\nlocal otherHand = 0\nif self.Hand ~= nil then\n\totherHand = #self.Hand - 1\n\tif otherHand < 0 then otherHand = 0 end\nend\nif c.damagePerOtherHandCard ~= nil then\n\tbase2 = base2 + otherHand * c.damagePerOtherHandCard\nend\nif c.damagePerAttackPlayedThisTurn ~= nil then\n\tbase2 = base2 + (self.TurnAttackCardsPlayed or 0) * c.damagePerAttackPlayedThisTurn\nend\nif c.damagePerDiscardedThisTurn ~= nil then\n\tbase2 = base2 + (self.TurnDiscardedCards or 0) * c.damagePerDiscardedThisTurn\nend\nif c.damagePerSkillInHand ~= nil then\n\tbase2 = base2 + self:CountOtherHandSkills(slot) * c.damagePerSkillInHand\nend\nif c.damagePerCardDrawnThisCombat ~= nil then\n\tbase2 = base2 + (self.CardsDrawnThisCombat or 0) * c.damagePerCardDrawnThisCombat\nend\nif c.kind == \"Attack\" and (self.TurnCardsPlayedThisTurn or 0) == 0 and c.firstCardDamageBonus ~= nil then\n\tbase2 = base2 + c.firstCardDamageBonus\nend\nif c.class == \"shiv\" then\n\tif self:HasPowerField(\"shivDamageBonus\") == true then\n\t\tbase2 = base2 + self:AddPowerFieldTotal(\"shivDamageBonus\")\n\tend\n\tif self.ShivFirstDamageBonusUsed ~= true and self:HasPowerField(\"firstShivDamageBonus\") == true then\n\t\tbase2 = base2 + self:AddPowerFieldTotal(\"firstShivDamageBonus\")\n\tend\nend\nif base2 < 0 then\n\tbase2 = 0\nend\nreturn base2", + "Code": "local base2 = c.damage or 0\nif c.damageNameMatch ~= nil and c.damagePerOwnedNameMatch ~= nil then\n\tbase2 = base2 + self:CountOwnedNameMatches(c.damageNameMatch) * c.damagePerOwnedNameMatch\nend\nif c.damageFromCurrentBlock ~= nil and c.damageFromCurrentBlock ~= 0 then\n\tbase2 = base2 + (self.PlayerBlock or 0) * c.damageFromCurrentBlock\nend\nlocal comboScale = c.damagePerCombo or 0\ncomboScale = comboScale + self:AddPowerFieldTotal(\"attackDamagePerCombo\")\nif comboScale ~= 0 then\n\tbase2 = base2 + (self.ComboCount or 0) * comboScale\nend\nif c.damagePerHolyCharge ~= nil and c.damagePerHolyCharge ~= 0 then\n\tbase2 = base2 + (self.HolyChargeCount or 0) * c.damagePerHolyCharge\nend\nlocal otherHand = 0\nif self.Hand ~= nil then\n\totherHand = #self.Hand - 1\n\tif otherHand < 0 then otherHand = 0 end\nend\nif c.damagePerOtherHandCard ~= nil then\n\tbase2 = base2 + otherHand * c.damagePerOtherHandCard\nend\nif c.damagePerAttackPlayedThisTurn ~= nil then\n\tbase2 = base2 + (self.TurnAttackCardsPlayed or 0) * c.damagePerAttackPlayedThisTurn\nend\nif c.damagePerDiscardedThisTurn ~= nil then\n\tbase2 = base2 + (self.TurnDiscardedCards or 0) * c.damagePerDiscardedThisTurn\nend\nif c.damagePerSkillInHand ~= nil then\n\tbase2 = base2 + self:CountOtherHandSkills(slot) * c.damagePerSkillInHand\nend\nif c.damagePerCardDrawnThisCombat ~= nil then\n\tbase2 = base2 + (self.CardsDrawnThisCombat or 0) * c.damagePerCardDrawnThisCombat\nend\nif c.kind == \"Attack\" and (self.TurnCardsPlayedThisTurn or 0) == 0 and c.firstCardDamageBonus ~= nil then\n\tbase2 = base2 + c.firstCardDamageBonus\nend\nif c.class == \"shiv\" then\n\tif self:HasPowerField(\"shivDamageBonus\") == true then\n\t\tbase2 = base2 + self:AddPowerFieldTotal(\"shivDamageBonus\")\n\tend\n\tif self.ShivFirstDamageBonusUsed ~= true and self:HasPowerField(\"firstShivDamageBonus\") == true then\n\t\tbase2 = base2 + self:AddPowerFieldTotal(\"firstShivDamageBonus\")\n\tend\nend\nif base2 < 0 then\n\tbase2 = 0\nend\nreturn base2", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3020,7 +3186,7 @@ "Name": "energySpent" } ], - "Code": "local c = self.Cards[cardId]\nif c == nil then\n\treturn false\nend\nlocal spent = energySpent or 0\nlocal skillFree = false\nlocal skillRepeat = 0\nif c.kind == \"Skill\" and c.useAllEnergy ~= true and self.NextSkillCostZero == true then\n\tskillFree = true\nend\nif c.kind == \"Skill\" and self.NextSkillRepeatCount ~= nil and self.NextSkillRepeatCount > 0 then\n\tskillRepeat = self.NextSkillRepeatCount\nend\nself.ActiveKillReward = c.rewardOnKill or 0\nself.ActiveKillMaxHpGain = c.maxHpOnKill or 0\nself:ResolveCardEffects(cardId, 0, c, false, spent)\nlocal function applyCardPlayHooks()\n\tif self:HasPowerField(\"cardPlayedBlock\") == true then\n\t\tself:AddCardBlock(self:AddPowerFieldTotal(\"cardPlayedBlock\"))\n\tend\n\tif c.cardPlayedDamage ~= nil and c.cardPlayedDamage > 0 then\n\t\tself:DealDirectDamageToTarget(c.cardPlayedDamage)\n\tend\n\tif c.cardPlayedRandomDamage ~= nil and c.cardPlayedRandomDamage > 0 then\n\t\tself:DealDirectDamageToRandomMonster(c.cardPlayedRandomDamage)\n\tend\nend\napplyCardPlayHooks()\nif skillRepeat > 0 then\n\tlocal remaining = (self.NextSkillRepeatCount or 0) - skillRepeat\n\tif remaining < 0 then remaining = 0 end\n\tself.NextSkillRepeatCount = remaining\n\tfor i = 1, skillRepeat do\n\t\tself:ResolveCardEffects(cardId, 0, c, false, spent)\n\t\tapplyCardPlayHooks()\n\tend\nend\nif c.kind == \"Attack\" then\n\tself.TurnAttackCardsPlayed = (self.TurnAttackCardsPlayed or 0) + 1\nend\nif skillFree == true and c.nextSkillCostZero ~= true then\n\tself.NextSkillCostZero = false\nend\nif c.exhaust == true then\n\tif self.ExhaustPile == nil then self.ExhaustPile = {} end\n\ttable.insert(self.ExhaustPile, cardId)\n\tself:TriggerExhaustEffects(1)\nelseif c.kind ~= \"Power\" then\n\ttable.insert(self.DiscardPile, cardId)\nend\nif self.ActiveKillReward ~= nil and self.ActiveKillReward <= 0 then\n\tself.ActiveKillReward = 0\nend\nif self.ActiveKillMaxHpGain ~= nil and self.ActiveKillMaxHpGain <= 0 then\n\tself.ActiveKillMaxHpGain = 0\nend\nreturn true", + "Code": "local c = self.Cards[cardId]\nif c == nil then\n\treturn false\nend\nlocal spent = energySpent or 0\nlocal skillFree = false\nlocal skillRepeat = 0\nif c.kind == \"Skill\" and c.useAllEnergy ~= true and self.NextSkillCostZero == true then\n\tskillFree = true\nend\nif c.kind == \"Skill\" and self.NextSkillRepeatCount ~= nil and self.NextSkillRepeatCount > 0 then\n\tskillRepeat = self.NextSkillRepeatCount\nend\nself.ActiveKillReward = c.rewardOnKill or 0\nself.ActiveKillMaxHpGain = c.maxHpOnKill or 0\nself:ResolveCardEffects(cardId, 0, c, false, spent)\nlocal function applyCardPlayHooks()\n\tif self:HasPowerField(\"cardPlayedBlock\") == true then\n\t\tself:AddCardBlock(self:AddPowerFieldTotal(\"cardPlayedBlock\"))\n\tend\n\tif c.cardPlayedDamage ~= nil and c.cardPlayedDamage > 0 then\n\t\tself:DealDirectDamageToTarget(c.cardPlayedDamage)\n\tend\n\tif c.cardPlayedRandomDamage ~= nil and c.cardPlayedRandomDamage > 0 then\n\t\tself:DealDirectDamageToRandomMonster(c.cardPlayedRandomDamage)\n\tend\n\tself:ApplyAttackCardPlayHooks(c)\n\tself:ApplyHolyForceCardPlayHooks(c)\nend\napplyCardPlayHooks()\nif skillRepeat > 0 then\n\tlocal remaining = (self.NextSkillRepeatCount or 0) - skillRepeat\n\tif remaining < 0 then remaining = 0 end\n\tself.NextSkillRepeatCount = remaining\n\tfor i = 1, skillRepeat do\n\t\tself:ResolveCardEffects(cardId, 0, c, false, spent)\n\t\tapplyCardPlayHooks()\n\tend\nend\nif c.kind == \"Attack\" then\n\tself.TurnAttackCardsPlayed = (self.TurnAttackCardsPlayed or 0) + 1\nend\nif skillFree == true and c.nextSkillCostZero ~= true then\n\tself.NextSkillCostZero = false\nend\nif c.exhaust == true then\n\tif self.ExhaustPile == nil then self.ExhaustPile = {} end\n\ttable.insert(self.ExhaustPile, cardId)\n\tself:TriggerExhaustEffects(1)\nelseif c.kind ~= \"Power\" then\n\ttable.insert(self.DiscardPile, cardId)\nend\nif self.ActiveKillReward ~= nil and self.ActiveKillReward <= 0 then\n\tself.ActiveKillReward = 0\nend\nif self.ActiveKillMaxHpGain ~= nil and self.ActiveKillMaxHpGain <= 0 then\n\tself.ActiveKillMaxHpGain = 0\nend\nreturn true", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3276,7 +3442,7 @@ "Name": "energySpent" } ], - "Code": "if c == nil then\n\treturn\nend\nif c.blockGainMultiplier ~= nil and c.blockGainMultiplier > 0 then\n\tself.BlockGainMultiplier = (self.BlockGainMultiplier or 1) * c.blockGainMultiplier\nend\nif c.nextSkillCostZero == true then\n\tself.NextSkillCostZero = true\nend\nif c.nextSkillRepeatCount ~= nil and c.nextSkillRepeatCount > 0 then\n\tself.NextSkillRepeatCount = (self.NextSkillRepeatCount or 0) + c.nextSkillRepeatCount\nend\nif c.skillCostReductionThisTurn ~= nil and c.skillCostReductionThisTurn > 0 then\n\tself.SkillCostReductionThisTurn = (self.SkillCostReductionThisTurn or 0) + c.skillCostReductionThisTurn\nend\nif c.handCostZeroThisTurn == true then\n\tself.HandCostZeroThisTurn = true\nend\nif c.drawDisabledThisTurn == true then\n\tself.DrawDisabledThisTurn = true\nend\nif c.drawDamage ~= nil and c.drawDamage > 0 and c.kind ~= \"Power\" then\n\tself.DrawDamageThisTurn = (self.DrawDamageThisTurn or 0) + c.drawDamage\nend\nif c.drawPoison ~= nil and c.drawPoison > 0 and c.kind ~= \"Power\" then\n\tself.DrawPoisonThisTurn = (self.DrawPoisonThisTurn or 0) + c.drawPoison\nend\nif c.shivAoe == true and c.kind ~= \"Power\" then\n\tself.ShivAoeThisCombat = true\nend\nif c.skillSlyOnPlay == true and c.kind == \"Skill\" then\n\tif self.SkillSlyOnPlayCards == nil then\n\t\tself.SkillSlyOnPlayCards = {}\n\tend\n\tself.SkillSlyOnPlayCards[cardId] = true\nend\nif c.turnHandSlyCount ~= nil and c.turnHandSlyCount > 0 then\n\tif self.TurnSkillSlyCards == nil then\n\t\tself.TurnSkillSlyCards = {}\n\tend\n\tlocal picked = 0\n\tif self.Hand ~= nil then\n\t\tfor i = 1, #self.Hand do\n\t\t\tlocal hid = self.Hand[i]\n\t\t\tif hid ~= nil and hid ~= cardId then\n\t\t\t\tlocal hc = self.Cards[hid]\n\t\t\t\tif hc ~= nil and hc.kind == \"Skill\" and self.TurnSkillSlyCards[hid] ~= true and self.SkillSlyOnPlayCards[hid] ~= true and hc.sly ~= true then\n\t\t\t\t\tself.TurnSkillSlyCards[hid] = true\n\t\t\t\t\tpicked = picked + 1\n\t\t\t\t\tif picked >= c.turnHandSlyCount then\n\t\t\t\t\t\tbreak\n\t\t\t\t\tend\n\t\t\t\tend\n\t\t\tend\n\t\tend\n\tend\nend\nlocal xEnergy = energySpent or 0\nlocal weakAmount = c.weak or 0\nlocal vulnAmount = c.vuln or 0\nlocal poisonAmount = c.poison or 0\nif c.xWeakPerEnergy ~= nil and c.xWeakPerEnergy > 0 then\n\tweakAmount = weakAmount + xEnergy * c.xWeakPerEnergy\nend\nif c.kind == \"Attack\" then\n\tif c.damage ~= nil or c.xDamagePerEnergy ~= nil or c.damageFromCurrentBlock ~= nil then\n\t\tself:PlayerAttackMotion()\n\t\tlocal baseDmg = self:AttackBaseForCard(slot, c)\n\t\tself.ActiveAttackDamageVsWeakMultiplier = c.attackDamageVsWeakMultiplier or 1\n\t\tif c.xDamagePerEnergy ~= nil and c.xDamagePerEnergy > 0 then\n\t\t\tbaseDmg = xEnergy * c.xDamagePerEnergy\n\t\tend\n\t\tlocal total = 0\n\t\tlocal hitN = c.hits or 1\n\t\tif c.otherHandAtLeast ~= nil and c.bonusHitsWhenOtherHandAtLeast ~= nil then\n\t\t\tlocal otherHand = 0\n\t\t\tif self.Hand ~= nil then\n\t\t\t\totherHand = #self.Hand - 1\n\t\t\t\tif otherHand < 0 then otherHand = 0 end\n\t\t\tend\n\t\t\tif otherHand >= c.otherHandAtLeast then\n\t\t\t\thitN = hitN + c.bonusHitsWhenOtherHandAtLeast\n\t\t\tend\n\t\tend\n\t\tfor h = 1, hitN do\n\t\t\ttotal = total + self:CalcPlayerAttack(baseDmg)\n\t\tend\n\t\tlocal useAoe = c.aoe == true\n\t\tif c.class == \"shiv\" and (self.ShivAoeThisCombat == true or self:HasPowerField(\"shivAoe\") == true) then\n\t\t\tuseAoe = true\n\t\tend\n\t\tif c.class == \"shiv\" and self.ShivFirstDamageBonusUsed ~= true and self:HasPowerField(\"firstShivDamageBonus\") == true then\n\t\t\tself.ShivFirstDamageBonusUsed = true\n\t\tend\n\t\tlocal function countAliveMonsters()\n\t\t\tlocal n = 0\n\t\t\tif self.Monsters ~= nil then\n\t\t\t\tfor mi = 1, #self.Monsters do\n\t\t\t\t\tlocal om = self.Monsters[mi]\n\t\t\t\t\tif om ~= nil and om.alive == true then n = n + 1 end\n\t\t\t\tend\n\t\t\tend\n\t\t\treturn n\n\t\tend\n\t\tlocal function randomAliveMonsterIndex()\n\t\t\tlocal alive = {}\n\t\t\tif self.Monsters ~= nil then\n\t\t\t\tfor mi = 1, #self.Monsters do\n\t\t\t\t\tlocal om = self.Monsters[mi]\n\t\t\t\t\tif om ~= nil and om.alive == true then\n\t\t\t\t\t\ttable.insert(alive, mi)\n\t\t\t\t\tend\n\t\t\t\tend\n\t\t\tend\n\t\t\tif #alive <= 0 then\n\t\t\t\treturn 0\n\t\t\tend\n\t\t\treturn alive[math.random(1, #alive)]\n\t\tend\n\t\tlocal function resolveAttackRound()\n\t\t\tlocal roundKilled = false\n\t\t\tif useAoe == true then\n\t\t\t\tlocal killed = self:DealDamageToAllMonsters(total, true)\n\t\t\t\tif killed == true then roundKilled = true end\n\t\t\telseif c.randomTargetEachHit == true then\n\t\t\t\tfor h = 1, hitN do\n\t\t\t\t\tlocal targetIdx = randomAliveMonsterIndex()\n\t\t\t\t\tif targetIdx ~= nil and targetIdx > 0 then\n\t\t\t\t\t\tlocal prev = self.TargetIndex\n\t\t\t\t\t\tself.TargetIndex = targetIdx\n\t\t\t\t\t\tlocal killed = self:DealDamageToTarget(total / hitN, c.pierce == true)\n\t\t\t\t\t\tself.TargetIndex = prev\n\t\t\t\t\t\tif killed == true then roundKilled = true end\n\t\t\t\t\tend\n\t\t\t\tend\n\t\t\telse\n\t\t\t\tlocal killed = self:DealDamageToTarget(total, c.pierce == true)\n\t\t\t\tif killed == true then roundKilled = true end\n\t\t\tend\n\t\t\treturn roundKilled\n\t\tend\n\t\tlocal totalDamage = 0\n\t\tlocal roundKilled = false\n\t\trepeat\n\t\t\troundKilled = resolveAttackRound()\n\t\t\ttotalDamage = totalDamage + total\n\t\tuntil c.repeatOnKill ~= true or roundKilled ~= true or countAliveMonsters() <= 0\n\t\tself.DamageDealtThisTurn = (self.DamageDealtThisTurn or 0) + totalDamage\n\tend\n\tif c.block ~= nil then\n\t\tself:AddCardBlock(c.block)\n\tend\n\tif free ~= true then\n\t\tself:ApplyRelics(\"cardPlayed\")\n\tend\nelseif c.kind == \"Skill\" then\n\tif c.block ~= nil then\n\t\tself:AddCardBlock(c.block)\n\tend\nelseif c.kind == \"Power\" then\n\tif free ~= true then\n\t\ttable.insert(self.PlayerPowers, cardId)\n\tend\nend\nif c.strength ~= nil then\n\tself.PlayerStr = self.PlayerStr + c.strength\nend\nif c.dex ~= nil then\n\tself.PlayerDex = self.PlayerDex + c.dex\nend\nif c.thorns ~= nil then\n\tself.PlayerThorns = self.PlayerThorns + c.thorns\nend\nif c.selfVuln ~= nil then\n\tself.PlayerVuln = self.PlayerVuln + c.selfVuln\nend\nif c.heal ~= nil then\n\tself.PlayerHp = math.min(self.PlayerHp + c.heal, self.PlayerMaxHp)\nend\nif c.gainEnergy ~= nil and c.gainEnergy ~= 0 then\n\tself.Energy = self.Energy + c.gainEnergy\nend\nif c.intangible ~= nil and c.intangible > 0 then\n\tself.PlayerIntangible = (self.PlayerIntangible or 0) + c.intangible\nend\nself.TurnCardsPlayedThisTurn = (self.TurnCardsPlayedThisTurn or 0) + 1\nif c.blockPerDamageDealtThisTurn ~= nil and c.blockPerDamageDealtThisTurn > 0 then\n\tself:AddCardBlock((self.DamageDealtThisTurn or 0) * c.blockPerDamageDealtThisTurn)\nend\nself:QueueNextTurnEffects(c)\nif c.combatCostReductionOnPlay ~= nil and c.combatCostReductionOnPlay > 0 then\n\tif self.CombatCardCostReduction == nil then\n\t\tself.CombatCardCostReduction = {}\n\tend\n\tself.CombatCardCostReduction[cardId] = (self.CombatCardCostReduction[cardId] or 0) + c.combatCostReductionOnPlay\nend\nif c.weak ~= nil or c.vuln ~= nil or c.poison ~= nil or c.xWeakPerEnergy ~= nil or c.affectsAllEnemies == true or c.removeEnemyBlock == true or c.removeEnemyArtifact == true or (c.enemyStrengthLossThisTurn ~= nil and c.enemyStrengthLossThisTurn > 0) then\n\tlocal tm = self.Monsters[self.TargetIndex]\n\tif tm == nil or tm.alive ~= true then\n\t\tfor i = 1, #self.Monsters do\n\t\t\tif self.Monsters[i].alive == true then tm = self.Monsters[i]; self.TargetIndex = i; break end\n\t\tend\n\tend\n\tlocal targets = {}\n\tif c.affectsAllEnemies == true and self.Monsters ~= nil then\n\t\tfor mi = 1, #self.Monsters do\n\t\t\tlocal om = self.Monsters[mi]\n\t\t\tif om ~= nil and om.alive == true then\n\t\t\t\ttable.insert(targets, om)\n\t\t\tend\n\t\tend\n\telseif tm ~= nil and tm.alive == true then\n\t\ttable.insert(targets, tm)\n\tend\n\tif c.enemyStrengthLossThisTurn ~= nil and c.enemyStrengthLossThisTurn > 0 then\n\t\tself.EnemyStrengthLossThisTurn = (self.EnemyStrengthLossThisTurn or 0) + c.enemyStrengthLossThisTurn\n\tend\n\tfor ti = 1, #targets do\n\t\tlocal target = targets[ti]\n\t\tif target ~= nil and target.alive == true then\n\t\t\tif c.removeEnemyBlock == true then\n\t\t\t\ttarget.block = 0\n\t\t\tend\n\t\t\tif c.removeEnemyArtifact == true then\n\t\t\t\ttarget.artifact = 0\n\t\t\tend\n\t\t\tif weakAmount ~= nil and weakAmount > 0 then\n\t\t\t\tif target.artifact ~= nil and target.artifact > 0 then\n\t\t\t\t\ttarget.artifact = target.artifact - 1\n\t\t\t\telse\n\t\t\t\t\ttarget.weak = target.weak + weakAmount\n\t\t\t\tend\n\t\t\tend\n\t\t\tif poisonAmount ~= nil and poisonAmount > 0 then\n\t\t\t\tif c.poisonIfTargetPoisoned ~= true or (target.poison ~= nil and target.poison > 0) then\n\t\t\t\t\tlocal poisonHits = c.poisonHits or 1\n\t\t\t\t\tfor pi = 1, poisonHits do\n\t\t\t\t\t\tlocal target2 = target\n\t\t\t\t\t\tif c.poisonRandomTargets == true and self.Monsters ~= nil then\n\t\t\t\t\t\t\tlocal alive = {}\n\t\t\t\t\t\t\tfor mi = 1, #self.Monsters do\n\t\t\t\t\t\t\t\tlocal om = self.Monsters[mi]\n\t\t\t\t\t\t\t\tif om ~= nil and om.alive == true then\n\t\t\t\t\t\t\t\t\ttable.insert(alive, om)\n\t\t\t\t\t\t\t\tend\n\t\t\t\t\t\t\tend\n\t\t\t\t\t\t\tif #alive > 0 then\n\t\t\t\t\t\t\t\ttarget2 = alive[math.random(#alive)]\n\t\t\t\t\t\t\tend\n\t\t\t\t\t\tend\n\t\t\t\t\t\tif target2 ~= nil and target2.alive == true then\n\t\t\t\t\t\t\tself:ApplyPoisonToMonster(target2, poisonAmount)\n\t\t\t\t\t\tend\n\t\t\t\t\tend\n\t\t\t\tend\n\t\t\tend\n\t\t\tif vulnAmount ~= nil and vulnAmount > 0 then\n\t\t\t\tif target.artifact ~= nil and target.artifact > 0 then\n\t\t\t\t\ttarget.artifact = target.artifact - 1\n\t\t\t\telse\n\t\t\t\t\ttarget.vuln = target.vuln + vulnAmount\n\t\t\t\t\tif self:HasRelic(\"championBelt\") then\n\t\t\t\t\t\ttarget.weak = target.weak + 1\n\t\t\t\t\tend\n\t\t\t\tend\n\t\t\tend\n\t\tend\n\tend\nend\nlocal drawnCards = {}\nif c.draw ~= nil then\n\tdrawnCards = self:DrawCards(c.draw, true) or {}\nend\nif c.drawUntilHandSize ~= nil and c.drawUntilHandSize > 0 then\n\tlocal currentHand = 0\n\tif self.Hand ~= nil then\n\t\tcurrentHand = #self.Hand\n\t\tif slot ~= nil and slot > 0 and self.Hand[slot] == cardId then\n\t\t\tcurrentHand = currentHand - 1\n\t\tend\n\tend\n\tlocal need = c.drawUntilHandSize - currentHand\n\tif need > 0 then\n\t\tlocal moreDrawnCards = self:DrawCards(need, true) or {}\n\t\tfor i = 1, #moreDrawnCards do\n\t\t\ttable.insert(drawnCards, moreDrawnCards[i])\n\t\tend\n\tend\nend\nif c.drawSkillBlock ~= nil and c.drawSkillBlock > 0 then\n\tfor i = 1, #drawnCards do\n\t\tlocal drawnCard = self.Cards[drawnCards[i]]\n\t\tif drawnCard ~= nil and drawnCard.kind == \"Skill\" then\n\t\t\tself:AddCardBlock(c.drawSkillBlock)\n\t\tend\n\tend\nend\nif c.addShiv ~= nil and c.discard == nil and c.discardAll ~= true then\n\tself:AddCardsToHand(\"Shiv\", c.addShiv)\nend\nlocal exhaustedNonAttack = self:ExhaustHandNonAttack(c)\nlocal exhaustedAll = self:ExhaustHandAll(c)\nlocal totalExhausted = exhaustedNonAttack + exhaustedAll\nif c.drawPerExhausted ~= nil and c.drawPerExhausted > 0 and totalExhausted > 0 then\n\tself:DrawCards(totalExhausted * c.drawPerExhausted, true)\nend\nif c.addRandomCardCount ~= nil and c.addRandomCardCount > 0 then\n\tself:AddRandomCardsFromEffect(c, c.addRandomCardCount)\nend\nif c.addRandomCardPerExhausted ~= nil and c.addRandomCardPerExhausted > 0 then\n\tif totalExhausted > 0 then\n\t\tself:AddRandomCardsFromEffect(c, totalExhausted * c.addRandomCardPerExhausted)\n\tend\nend\nif (c.playTopDrawPileCount ~= nil and c.playTopDrawPileCount > 0) or (c.playTopDrawPileCountPerEnergy ~= nil and c.playTopDrawPileCountPerEnergy > 0) then\n\tself:PlayTopDrawPileCards(c, xEnergy)\nend", + "Code": "if c == nil then\n\treturn\nend\nif c.blockGainMultiplier ~= nil and c.blockGainMultiplier > 0 then\n\tself.BlockGainMultiplier = (self.BlockGainMultiplier or 1) * c.blockGainMultiplier\nend\nif c.nextSkillCostZero == true then\n\tself.NextSkillCostZero = true\nend\nif c.nextSkillRepeatCount ~= nil and c.nextSkillRepeatCount > 0 then\n\tself.NextSkillRepeatCount = (self.NextSkillRepeatCount or 0) + c.nextSkillRepeatCount\nend\nif c.skillCostReductionThisTurn ~= nil and c.skillCostReductionThisTurn > 0 then\n\tself.SkillCostReductionThisTurn = (self.SkillCostReductionThisTurn or 0) + c.skillCostReductionThisTurn\nend\nif c.handCostZeroThisTurn == true then\n\tself.HandCostZeroThisTurn = true\nend\nif c.drawDisabledThisTurn == true then\n\tself.DrawDisabledThisTurn = true\nend\nif c.drawDamage ~= nil and c.drawDamage > 0 and c.kind ~= \"Power\" then\n\tself.DrawDamageThisTurn = (self.DrawDamageThisTurn or 0) + c.drawDamage\nend\nif c.drawPoison ~= nil and c.drawPoison > 0 and c.kind ~= \"Power\" then\n\tself.DrawPoisonThisTurn = (self.DrawPoisonThisTurn or 0) + c.drawPoison\nend\nif c.shivAoe == true and c.kind ~= \"Power\" then\n\tself.ShivAoeThisCombat = true\nend\nif c.skillSlyOnPlay == true and c.kind == \"Skill\" then\n\tif self.SkillSlyOnPlayCards == nil then\n\t\tself.SkillSlyOnPlayCards = {}\n\tend\n\tself.SkillSlyOnPlayCards[cardId] = true\nend\nif c.turnHandSlyCount ~= nil and c.turnHandSlyCount > 0 then\n\tif self.TurnSkillSlyCards == nil then\n\t\tself.TurnSkillSlyCards = {}\n\tend\n\tlocal picked = 0\n\tif self.Hand ~= nil then\n\t\tfor i = 1, #self.Hand do\n\t\t\tlocal hid = self.Hand[i]\n\t\t\tif hid ~= nil and hid ~= cardId then\n\t\t\t\tlocal hc = self.Cards[hid]\n\t\t\t\tif hc ~= nil and hc.kind == \"Skill\" and self.TurnSkillSlyCards[hid] ~= true and self.SkillSlyOnPlayCards[hid] ~= true and hc.sly ~= true then\n\t\t\t\t\tself.TurnSkillSlyCards[hid] = true\n\t\t\t\t\tpicked = picked + 1\n\t\t\t\t\tif picked >= c.turnHandSlyCount then\n\t\t\t\t\t\tbreak\n\t\t\t\t\tend\n\t\t\t\tend\n\t\t\tend\n\t\tend\n\tend\nend\nlocal xEnergy = energySpent or 0\nlocal weakAmount = c.weak or 0\nlocal vulnAmount = c.vuln or 0\nlocal poisonAmount = c.poison or 0\nif c.xWeakPerEnergy ~= nil and c.xWeakPerEnergy > 0 then\n\tweakAmount = weakAmount + xEnergy * c.xWeakPerEnergy\nend\nif c.kind == \"Attack\" then\n\tif c.damage ~= nil or c.xDamagePerEnergy ~= nil or c.damageFromCurrentBlock ~= nil then\n\t\tself:PlayerAttackMotion()\n\t\tlocal baseDmg = self:AttackBaseForCard(slot, c)\n\t\tself.ActiveAttackDamageVsWeakMultiplier = math.max(c.attackDamageVsWeakMultiplier or 1, self:MaxPowerField(\"attackDamageVsWeakMultiplier\"))\n\t\tif c.xDamagePerEnergy ~= nil and c.xDamagePerEnergy > 0 then\n\t\t\tbaseDmg = xEnergy * c.xDamagePerEnergy\n\t\tend\n\t\tlocal total = 0\n\t\tlocal hitN = c.hits or 1\n\t\tif c.otherHandAtLeast ~= nil and c.bonusHitsWhenOtherHandAtLeast ~= nil then\n\t\t\tlocal otherHand = 0\n\t\t\tif self.Hand ~= nil then\n\t\t\t\totherHand = #self.Hand - 1\n\t\t\t\tif otherHand < 0 then otherHand = 0 end\n\t\t\tend\n\t\t\tif otherHand >= c.otherHandAtLeast then\n\t\t\t\thitN = hitN + c.bonusHitsWhenOtherHandAtLeast\n\t\t\tend\n\t\tend\n\t\tfor h = 1, hitN do\n\t\t\ttotal = total + self:CalcPlayerAttack(baseDmg)\n\t\tend\n\t\tlocal useAoe = c.aoe == true\n\t\tif c.class == \"shiv\" and (self.ShivAoeThisCombat == true or self:HasPowerField(\"shivAoe\") == true) then\n\t\t\tuseAoe = true\n\t\tend\n\t\tif c.class == \"shiv\" and self.ShivFirstDamageBonusUsed ~= true and self:HasPowerField(\"firstShivDamageBonus\") == true then\n\t\t\tself.ShivFirstDamageBonusUsed = true\n\t\tend\n\t\tlocal function countAliveMonsters()\n\t\t\tlocal n = 0\n\t\t\tif self.Monsters ~= nil then\n\t\t\t\tfor mi = 1, #self.Monsters do\n\t\t\t\t\tlocal om = self.Monsters[mi]\n\t\t\t\t\tif om ~= nil and om.alive == true then n = n + 1 end\n\t\t\t\tend\n\t\t\tend\n\t\t\treturn n\n\t\tend\n\t\tlocal function randomAliveMonsterIndex()\n\t\t\tlocal alive = {}\n\t\t\tif self.Monsters ~= nil then\n\t\t\t\tfor mi = 1, #self.Monsters do\n\t\t\t\t\tlocal om = self.Monsters[mi]\n\t\t\t\t\tif om ~= nil and om.alive == true then\n\t\t\t\t\t\ttable.insert(alive, mi)\n\t\t\t\t\tend\n\t\t\t\tend\n\t\t\tend\n\t\t\tif #alive <= 0 then\n\t\t\t\treturn 0\n\t\t\tend\n\t\t\treturn alive[math.random(1, #alive)]\n\t\tend\n\t\tlocal function resolveAttackRound()\n\t\t\tlocal roundKilled = false\n\t\t\tif useAoe == true then\n\t\t\t\tlocal killed = self:DealDamageToAllMonsters(total, true)\n\t\t\t\tif killed == true then roundKilled = true end\n\t\t\telseif c.randomTargetEachHit == true then\n\t\t\t\tfor h = 1, hitN do\n\t\t\t\t\tlocal targetIdx = randomAliveMonsterIndex()\n\t\t\t\t\tif targetIdx ~= nil and targetIdx > 0 then\n\t\t\t\t\t\tlocal prev = self.TargetIndex\n\t\t\t\t\t\tself.TargetIndex = targetIdx\n\t\t\t\t\t\tlocal killed = self:DealDamageToTarget(total / hitN, c.pierce == true)\n\t\t\t\t\t\tself.TargetIndex = prev\n\t\t\t\t\t\tif killed == true then roundKilled = true end\n\t\t\t\t\tend\n\t\t\t\tend\n\t\t\telse\n\t\t\t\tlocal killed = self:DealDamageToTarget(total, c.pierce == true)\n\t\t\t\tif killed == true then roundKilled = true end\n\t\t\tend\n\t\t\treturn roundKilled\n\t\tend\n\t\tlocal totalDamage = 0\n\t\tlocal roundKilled = false\n\t\trepeat\n\t\t\troundKilled = resolveAttackRound()\n\t\t\ttotalDamage = totalDamage + total\n\t\tuntil c.repeatOnKill ~= true or roundKilled ~= true or countAliveMonsters() <= 0\n\t\tself.DamageDealtThisTurn = (self.DamageDealtThisTurn or 0) + totalDamage\n\tend\n\tif c.block ~= nil then\n\t\tself:AddCardBlock(c.block + (self.HolyChargeCount or 0) * (c.blockPerHolyCharge or 0))\n\tend\n\tif free ~= true then\n\t\tself:ApplyRelics(\"cardPlayed\")\n\tend\nelseif c.kind == \"Skill\" then\n\tif c.block ~= nil then\n\t\tself:AddCardBlock(c.block + (self.HolyChargeCount or 0) * (c.blockPerHolyCharge or 0))\n\tend\nelseif c.kind == \"Power\" then\n\tif free ~= true then\n\t\ttable.insert(self.PlayerPowers, cardId)\n\tend\nend\nif c.strength ~= nil then\n\tself.PlayerStr = self.PlayerStr + c.strength\nend\nif c.dex ~= nil then\n\tself.PlayerDex = self.PlayerDex + c.dex\nend\nif c.thorns ~= nil then\n\tself.PlayerThorns = self.PlayerThorns + c.thorns\nend\nif c.selfVuln ~= nil then\n\tself.PlayerVuln = self.PlayerVuln + c.selfVuln\nend\nif c.heal ~= nil then\n\tlocal healAmount = c.heal + (self.HolyChargeCount or 0) * (c.healPerHolyCharge or 0)\n\tself.PlayerHp = math.min(self.PlayerHp + healAmount, self.PlayerMaxHp)\nend\nif c.gainEnergy ~= nil and c.gainEnergy ~= 0 then\n\tself.Energy = self.Energy + c.gainEnergy\nend\nif c.kind ~= \"Attack\" and c.comboGain ~= nil and c.comboGain > 0 then\n\tself:GainCombo(c.comboGain)\nend\nif c.removePlayerDebuffs == true then\n\tself.PlayerWeak = 0\n\tself.PlayerVuln = 0\nend\nif c.intangible ~= nil and c.intangible > 0 then\n\tself.PlayerIntangible = (self.PlayerIntangible or 0) + c.intangible\nend\nself.TurnCardsPlayedThisTurn = (self.TurnCardsPlayedThisTurn or 0) + 1\nif c.blockPerDamageDealtThisTurn ~= nil and c.blockPerDamageDealtThisTurn > 0 then\n\tself:AddCardBlock((self.DamageDealtThisTurn or 0) * c.blockPerDamageDealtThisTurn)\nend\nself:QueueNextTurnEffects(c)\nif c.combatCostReductionOnPlay ~= nil and c.combatCostReductionOnPlay > 0 then\n\tif self.CombatCardCostReduction == nil then\n\t\tself.CombatCardCostReduction = {}\n\tend\n\tself.CombatCardCostReduction[cardId] = (self.CombatCardCostReduction[cardId] or 0) + c.combatCostReductionOnPlay\nend\nif c.weak ~= nil or c.vuln ~= nil or c.poison ~= nil or c.xWeakPerEnergy ~= nil or c.affectsAllEnemies == true or c.removeEnemyBlock == true or c.removeEnemyArtifact == true or (c.enemyStrengthLossThisTurn ~= nil and c.enemyStrengthLossThisTurn > 0) then\n\tlocal tm = self.Monsters[self.TargetIndex]\n\tif tm == nil or tm.alive ~= true then\n\t\tfor i = 1, #self.Monsters do\n\t\t\tif self.Monsters[i].alive == true then tm = self.Monsters[i]; self.TargetIndex = i; break end\n\t\tend\n\tend\n\tlocal targets = {}\n\tif c.affectsAllEnemies == true and self.Monsters ~= nil then\n\t\tfor mi = 1, #self.Monsters do\n\t\t\tlocal om = self.Monsters[mi]\n\t\t\tif om ~= nil and om.alive == true then\n\t\t\t\ttable.insert(targets, om)\n\t\t\tend\n\t\tend\n\telseif tm ~= nil and tm.alive == true then\n\t\ttable.insert(targets, tm)\n\tend\n\tif c.enemyStrengthLossThisTurn ~= nil and c.enemyStrengthLossThisTurn > 0 then\n\t\tself.EnemyStrengthLossThisTurn = (self.EnemyStrengthLossThisTurn or 0) + c.enemyStrengthLossThisTurn\n\tend\n\tfor ti = 1, #targets do\n\t\tlocal target = targets[ti]\n\t\tif target ~= nil and target.alive == true then\n\t\t\tif c.removeEnemyBlock == true then\n\t\t\t\ttarget.block = 0\n\t\t\tend\n\t\t\tif c.removeEnemyArtifact == true then\n\t\t\t\ttarget.artifact = 0\n\t\t\tend\n\t\t\tif weakAmount ~= nil and weakAmount > 0 then\n\t\t\t\tif target.artifact ~= nil and target.artifact > 0 then\n\t\t\t\t\ttarget.artifact = target.artifact - 1\n\t\t\t\telse\n\t\t\t\t\ttarget.weak = target.weak + weakAmount\n\t\t\t\tend\n\t\t\tend\n\t\t\tif poisonAmount ~= nil and poisonAmount > 0 then\n\t\t\t\tif c.poisonIfTargetPoisoned ~= true or (target.poison ~= nil and target.poison > 0) then\n\t\t\t\t\tlocal poisonHits = c.poisonHits or 1\n\t\t\t\t\tfor pi = 1, poisonHits do\n\t\t\t\t\t\tlocal target2 = target\n\t\t\t\t\t\tif c.poisonRandomTargets == true and self.Monsters ~= nil then\n\t\t\t\t\t\t\tlocal alive = {}\n\t\t\t\t\t\t\tfor mi = 1, #self.Monsters do\n\t\t\t\t\t\t\t\tlocal om = self.Monsters[mi]\n\t\t\t\t\t\t\t\tif om ~= nil and om.alive == true then\n\t\t\t\t\t\t\t\t\ttable.insert(alive, om)\n\t\t\t\t\t\t\t\tend\n\t\t\t\t\t\t\tend\n\t\t\t\t\t\t\tif #alive > 0 then\n\t\t\t\t\t\t\t\ttarget2 = alive[math.random(#alive)]\n\t\t\t\t\t\t\tend\n\t\t\t\t\t\tend\n\t\t\t\t\t\tif target2 ~= nil and target2.alive == true then\n\t\t\t\t\t\t\tself:ApplyPoisonToMonster(target2, poisonAmount)\n\t\t\t\t\t\tend\n\t\t\t\t\tend\n\t\t\t\tend\n\t\t\tend\n\t\t\tif vulnAmount ~= nil and vulnAmount > 0 then\n\t\t\t\tif target.artifact ~= nil and target.artifact > 0 then\n\t\t\t\t\ttarget.artifact = target.artifact - 1\n\t\t\t\telse\n\t\t\t\t\ttarget.vuln = target.vuln + vulnAmount\n\t\t\t\t\tif self:HasRelic(\"championBelt\") then\n\t\t\t\t\t\ttarget.weak = target.weak + 1\n\t\t\t\t\tend\n\t\t\t\tend\n\t\t\tend\n\t\tend\n\tend\nend\nlocal drawnCards = {}\nif c.draw ~= nil then\n\tdrawnCards = self:DrawCards(c.draw, true) or {}\nend\nif c.drawUntilHandSize ~= nil and c.drawUntilHandSize > 0 then\n\tlocal currentHand = 0\n\tif self.Hand ~= nil then\n\t\tcurrentHand = #self.Hand\n\t\tif slot ~= nil and slot > 0 and self.Hand[slot] == cardId then\n\t\t\tcurrentHand = currentHand - 1\n\t\tend\n\tend\n\tlocal need = c.drawUntilHandSize - currentHand\n\tif need > 0 then\n\t\tlocal moreDrawnCards = self:DrawCards(need, true) or {}\n\t\tfor i = 1, #moreDrawnCards do\n\t\t\ttable.insert(drawnCards, moreDrawnCards[i])\n\t\tend\n\tend\nend\nif c.drawSkillBlock ~= nil and c.drawSkillBlock > 0 then\n\tfor i = 1, #drawnCards do\n\t\tlocal drawnCard = self.Cards[drawnCards[i]]\n\t\tif drawnCard ~= nil and drawnCard.kind == \"Skill\" then\n\t\t\tself:AddCardBlock(c.drawSkillBlock)\n\t\tend\n\tend\nend\nif c.addShiv ~= nil and c.discard == nil and c.discardAll ~= true then\n\tself:AddCardsToHand(\"Shiv\", c.addShiv)\nend\nlocal exhaustedNonAttack = self:ExhaustHandNonAttack(c)\nlocal exhaustedAll = self:ExhaustHandAll(c)\nlocal totalExhausted = exhaustedNonAttack + exhaustedAll\nif c.drawPerExhausted ~= nil and c.drawPerExhausted > 0 and totalExhausted > 0 then\n\tself:DrawCards(totalExhausted * c.drawPerExhausted, true)\nend\nif c.addRandomCardCount ~= nil and c.addRandomCardCount > 0 then\n\tself:AddRandomCardsFromEffect(c, c.addRandomCardCount)\nend\nif c.addRandomCardPerExhausted ~= nil and c.addRandomCardPerExhausted > 0 then\n\tif totalExhausted > 0 then\n\t\tself:AddRandomCardsFromEffect(c, totalExhausted * c.addRandomCardPerExhausted)\n\tend\nend\nif (c.playTopDrawPileCount ~= nil and c.playTopDrawPileCount > 0) or (c.playTopDrawPileCountPerEnergy ~= nil and c.playTopDrawPileCountPerEnergy > 0) then\n\tself:PlayTopDrawPileCards(c, xEnergy)\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3603,7 +3769,7 @@ "Name": "slot" } ], - "Code": "if self:IsDiscardSelecting() == true then\n\tself:SelectDiscardSlot(slot)\n\treturn\nend\nif self:IsRetainSelecting() == true then\n\tself:SelectRetainSlot(slot)\n\treturn\nend\nif self:IsReserveSelecting() == true then\n\tself:SelectReserveSlot(slot)\n\treturn\nend\nif self.CombatOver == true or self.FxBusy == true or self.TurnBusy == true then\n\treturn\nend\nif self.Hand == nil then\n\treturn\nend\nlocal cardId = self.Hand[slot]\nif cardId == nil then\n\treturn\nend\nlocal c = self.Cards[cardId]\nif c == nil then\n\treturn\nend\nif c.unplayable == true then\n self:Toast(\"사용할 수 없는 카드입니다\")\n\treturn\nend\nif self:CanPlayCardNow(c) ~= true then\n\treturn\nend\nlocal cost = c.cost or 0\nlocal skillFree = false\nlocal skillRepeat = 0\nif self.HandCostZeroThisTurn == true then\n\tcost = 0\nelseif self.ZeroCostCardIdsThisTurn ~= nil and self.ZeroCostCardIdsThisTurn[cardId] == true then\n\tcost = 0\nelseif c.useAllEnergy == true then\n\tcost = self.Energy\nend\nif c.kind == \"Skill\" and c.useAllEnergy ~= true and self.NextSkillCostZero == true then\n\tcost = 0\n\tskillFree = true\nend\nif c.kind == \"Skill\" and c.useAllEnergy ~= true and self.SkillCostReductionThisTurn ~= nil and self.SkillCostReductionThisTurn > 0 then\n\tcost = math.max(0, cost - self.SkillCostReductionThisTurn)\nend\nif c.useAllEnergy ~= true and self.CombatCardCostReduction ~= nil and self.CombatCardCostReduction[cardId] ~= nil then\n\tcost = math.max(0, cost - self.CombatCardCostReduction[cardId])\nend\nif c.kind == \"Skill\" and self.NextSkillRepeatCount ~= nil and self.NextSkillRepeatCount > 0 then\n\tskillRepeat = self.NextSkillRepeatCount\nend\nif self.Energy < cost then\n\tself:Toast(\"에너지가 부족합니다\")\n\treturn\nend\nself.Energy = self.Energy - cost\nself.ActiveKillReward = c.rewardOnKill or 0\nself.ActiveKillMaxHpGain = c.maxHpOnKill or 0\ntable.remove(self.Hand, slot)\nself:ResolveCardEffects(cardId, slot, c, false, cost)\nlocal function applyCardPlayHooks()\n\tif self:HasPowerField(\"cardPlayedBlock\") == true then\n\t\tself:AddCardBlock(self:AddPowerFieldTotal(\"cardPlayedBlock\"))\n\tend\n\tif c.cardPlayedDamage ~= nil and c.cardPlayedDamage > 0 then\n\t\tself:DealDirectDamageToTarget(c.cardPlayedDamage)\n\tend\n\tif c.cardPlayedRandomDamage ~= nil and c.cardPlayedRandomDamage > 0 then\n\t\tself:DealDirectDamageToRandomMonster(c.cardPlayedRandomDamage)\n\tend\nend\napplyCardPlayHooks()\nif skillRepeat > 0 then\n\tlocal remaining = (self.NextSkillRepeatCount or 0) - skillRepeat\n\tif remaining < 0 then\n\t\tremaining = 0\n\tend\n\tself.NextSkillRepeatCount = remaining\n\tfor i = 1, skillRepeat do\n\t\tself:ResolveCardEffects(cardId, slot, c, false, cost)\n\t\tapplyCardPlayHooks()\n\tend\nend\nif c.kind == \"Attack\" then\n\tself.TurnAttackCardsPlayed = (self.TurnAttackCardsPlayed or 0) + 1\nend\nif skillFree == true then\n\tif c.nextSkillCostZero ~= true then\n\t\tself.NextSkillCostZero = false\n\tend\nend\nif self.ActiveKillReward ~= nil and self.ActiveKillReward <= 0 then\n\tself.ActiveKillReward = 0\nend\nif self.ActiveKillMaxHpGain ~= nil and self.ActiveKillMaxHpGain <= 0 then\n\tself.ActiveKillMaxHpGain = 0\nend\nif c.combatCostReductionOnPlay ~= nil and c.combatCostReductionOnPlay > 0 then\n\tif self.CombatCardCostReduction == nil then\n\t\tself.CombatCardCostReduction = {}\n\tend\n\tself.CombatCardCostReduction[cardId] = (self.CombatCardCostReduction[cardId] or 0) + c.combatCostReductionOnPlay\nend\nif c.exhaust == true then\n\tif self.ExhaustPile == nil then self.ExhaustPile = {} end\n\ttable.insert(self.ExhaustPile, cardId)\n\tself:TriggerExhaustEffects(1)\nelseif c.kind ~= \"Power\" then\n\ttable.insert(self.DiscardPile, cardId)\nend\nself:RenderHand(false)\nself:RenderPiles()\nself:RenderCombat()\nif self:BeginDiscardSelection(c) == true then\n\treturn\nend\nif self:BeginReserveSelection(c) == true then\n\treturn\nend\nself:RenderHand(false)\nself:RenderPiles()\nself:RenderCombat()\nself:CheckCombatEnd()", + "Code": "if self:IsDiscardSelecting() == true then\n\tself:SelectDiscardSlot(slot)\n\treturn\nend\nif self:IsRetainSelecting() == true then\n\tself:SelectRetainSlot(slot)\n\treturn\nend\nif self:IsReserveSelecting() == true then\n\tself:SelectReserveSlot(slot)\n\treturn\nend\nif self.CombatOver == true or self.FxBusy == true or self.TurnBusy == true then\n\treturn\nend\nif self.Hand == nil then\n\treturn\nend\nlocal cardId = self.Hand[slot]\nif cardId == nil then\n\treturn\nend\nlocal c = self.Cards[cardId]\nif c == nil then\n\treturn\nend\nif c.unplayable == true then\n self:Toast(\"사용할 수 없는 카드입니다\")\n\treturn\nend\nif self:CanPlayCardNow(c) ~= true then\n\treturn\nend\nlocal cost = c.cost or 0\nlocal skillFree = false\nlocal skillRepeat = 0\nif self.HandCostZeroThisTurn == true then\n\tcost = 0\nelseif self.ZeroCostCardIdsThisTurn ~= nil and self.ZeroCostCardIdsThisTurn[cardId] == true then\n\tcost = 0\nelseif c.useAllEnergy == true then\n\tcost = self.Energy\nend\nif c.kind == \"Skill\" and c.useAllEnergy ~= true and self.NextSkillCostZero == true then\n\tcost = 0\n\tskillFree = true\nend\nif c.kind == \"Skill\" and c.useAllEnergy ~= true and self.SkillCostReductionThisTurn ~= nil and self.SkillCostReductionThisTurn > 0 then\n\tcost = math.max(0, cost - self.SkillCostReductionThisTurn)\nend\nif c.useAllEnergy ~= true and self.CombatCardCostReduction ~= nil and self.CombatCardCostReduction[cardId] ~= nil then\n\tcost = math.max(0, cost - self.CombatCardCostReduction[cardId])\nend\nif c.kind == \"Skill\" and self.NextSkillRepeatCount ~= nil and self.NextSkillRepeatCount > 0 then\n\tskillRepeat = self.NextSkillRepeatCount\nend\nif self.Energy < cost then\n\tself:Toast(\"에너지가 부족합니다\")\n\treturn\nend\nself.Energy = self.Energy - cost\nself.ActiveKillReward = c.rewardOnKill or 0\nself.ActiveKillMaxHpGain = c.maxHpOnKill or 0\ntable.remove(self.Hand, slot)\nself:ResolveCardEffects(cardId, slot, c, false, cost)\nlocal function applyCardPlayHooks()\n\tif self:HasPowerField(\"cardPlayedBlock\") == true then\n\t\tself:AddCardBlock(self:AddPowerFieldTotal(\"cardPlayedBlock\"))\n\tend\n\tif c.cardPlayedDamage ~= nil and c.cardPlayedDamage > 0 then\n\t\tself:DealDirectDamageToTarget(c.cardPlayedDamage)\n\tend\n\tif c.cardPlayedRandomDamage ~= nil and c.cardPlayedRandomDamage > 0 then\n\t\tself:DealDirectDamageToRandomMonster(c.cardPlayedRandomDamage)\n\tend\n\tself:ApplyAttackCardPlayHooks(c)\n\tself:ApplyHolyForceCardPlayHooks(c)\nend\napplyCardPlayHooks()\nif skillRepeat > 0 then\n\tlocal remaining = (self.NextSkillRepeatCount or 0) - skillRepeat\n\tif remaining < 0 then\n\t\tremaining = 0\n\tend\n\tself.NextSkillRepeatCount = remaining\n\tfor i = 1, skillRepeat do\n\t\tself:ResolveCardEffects(cardId, slot, c, false, cost)\n\t\tapplyCardPlayHooks()\n\tend\nend\nif c.kind == \"Attack\" then\n\tself.TurnAttackCardsPlayed = (self.TurnAttackCardsPlayed or 0) + 1\nend\nif skillFree == true then\n\tif c.nextSkillCostZero ~= true then\n\t\tself.NextSkillCostZero = false\n\tend\nend\nif self.ActiveKillReward ~= nil and self.ActiveKillReward <= 0 then\n\tself.ActiveKillReward = 0\nend\nif self.ActiveKillMaxHpGain ~= nil and self.ActiveKillMaxHpGain <= 0 then\n\tself.ActiveKillMaxHpGain = 0\nend\nif c.combatCostReductionOnPlay ~= nil and c.combatCostReductionOnPlay > 0 then\n\tif self.CombatCardCostReduction == nil then\n\t\tself.CombatCardCostReduction = {}\n\tend\n\tself.CombatCardCostReduction[cardId] = (self.CombatCardCostReduction[cardId] or 0) + c.combatCostReductionOnPlay\nend\nif c.exhaust == true then\n\tif self.ExhaustPile == nil then self.ExhaustPile = {} end\n\ttable.insert(self.ExhaustPile, cardId)\n\tself:TriggerExhaustEffects(1)\nelseif c.kind ~= \"Power\" then\n\ttable.insert(self.DiscardPile, cardId)\nend\nself:RenderHand(false)\nself:RenderPiles()\nself:RenderCombat()\nif self:BeginDiscardSelection(c) == true then\n\treturn\nend\nif self:BeginReserveSelection(c) == true then\n\treturn\nend\nself:RenderHand(false)\nself:RenderPiles()\nself:RenderCombat()\nself:CheckCombatEnd()", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -4063,7 +4229,7 @@ "Name": "attackerSlot" } ], - "Code": "local dmg = amount\nif self.PlayerBlock > 0 then\n\tlocal absorbed = math.min(self.PlayerBlock, dmg)\n\tself.PlayerBlock = self.PlayerBlock - absorbed\n\tdmg = dmg - absorbed\nend\nif dmg > 0 and self.PlayerIntangible ~= nil and self.PlayerIntangible > 0 and dmg > 1 then\n\tdmg = 1\nend\nif dmg > 0 then\n\tself.PlayerHp = self.PlayerHp - dmg\n\tlocal reflect = self.PlayerThorns or 0\n\tif self:HasRelic(\"bronzeScales\") then\n\t\treflect = reflect + 3\n\tend\n\tif reflect > 0 and attackerSlot ~= nil and attackerSlot > 0 then\n\t\tlocal am = self.Monsters[attackerSlot]\n\t\tif am ~= nil and am.alive == true then\n\t\t\tam.hp = am.hp - reflect\n\t\t\tself:ShowDmgPop(am.slot, reflect)\n\t\t\tself:MonsterHitMotion(am.slot)\n\t\t\tif am.hp <= 0 then\n\t\t\t\tam.hp = 0\n\t\t\t\tself:KillMonster(am.slot)\n\t\t\tend\n\t\tend\n\tend\n\tif self:HasRelic(\"selfFormingClay\") then\n\t\tself.ClayBlockNext = self.ClayBlockNext + 3\n\tend\n\tif self:HasRelic(\"centennialPuzzle\") and self.FirstHpLossDone == false then\n\t\tself.FirstHpLossDone = true\n\t\tself:DrawCards(3)\n\t\tself:RenderHand(false)\n\tend\nend\nif self.PlayerHp < 0 then\n\tself.PlayerHp = 0\nend", + "Code": "local dmg = amount\nlocal reduction = self:AddPowerFieldTotal(\"damageTakenReduction\")\nif reduction ~= nil and reduction > 0 then\n\treduction = math.min(0.75, reduction)\n\tdmg = math.floor(dmg * (1 - reduction))\nend\nif self.PlayerBlock > 0 then\n\tlocal absorbed = math.min(self.PlayerBlock, dmg)\n\tself.PlayerBlock = self.PlayerBlock - absorbed\n\tdmg = dmg - absorbed\nend\nif dmg > 0 and self.PlayerIntangible ~= nil and self.PlayerIntangible > 0 and dmg > 1 then\n\tdmg = 1\nend\nif dmg > 0 then\n\tself.PlayerHp = self.PlayerHp - dmg\n\tlocal reactiveBlock = self:AddPowerFieldTotal(\"blockOnDamaged\")\n\tif reactiveBlock ~= nil and reactiveBlock > 0 then\n\t\tself:AddCardBlock(reactiveBlock)\n\tend\n\tif self.DamagePowerStrengthUsed ~= true then\n\t\tlocal reactiveStrength = self:AddPowerFieldTotal(\"strengthOnDamagedOnce\")\n\t\tif reactiveStrength ~= nil and reactiveStrength > 0 then\n\t\t\tself.PlayerStr = self.PlayerStr + reactiveStrength\n\t\t\tself.DamagePowerStrengthUsed = true\n\t\tend\n\tend\n\tlocal reflect = self.PlayerThorns or 0\n\tif self:HasRelic(\"bronzeScales\") then\n\t\treflect = reflect + 3\n\tend\n\tif reflect > 0 and attackerSlot ~= nil and attackerSlot > 0 then\n\t\tlocal am = self.Monsters[attackerSlot]\n\t\tif am ~= nil and am.alive == true then\n\t\t\tam.hp = am.hp - reflect\n\t\t\tself:ShowDmgPop(am.slot, reflect)\n\t\t\tself:MonsterHitMotion(am.slot)\n\t\t\tif am.hp <= 0 then\n\t\t\t\tam.hp = 0\n\t\t\t\tself:KillMonster(am.slot)\n\t\t\tend\n\t\tend\n\tend\n\tif self:HasRelic(\"selfFormingClay\") then\n\t\tself.ClayBlockNext = self.ClayBlockNext + 3\n\tend\n\tif self:HasRelic(\"centennialPuzzle\") and self.FirstHpLossDone == false then\n\t\tself.FirstHpLossDone = true\n\t\tself:DrawCards(3)\n\t\tself:RenderHand(false)\n\tend\nend\nif self.PlayerHp < 0 then\n\tself.PlayerHp = 0\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -4448,7 +4614,7 @@ "Name": null }, "Arguments": [], - "Code": "for i = 1, 4 do\n\tlocal base = \"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. tostring(i)\n\tlocal m = self.Monsters[i]\n\tif m ~= nil and m.alive == true then\n\t\tself:SetEntityEnabled(base, true)\n\t\tself:SetText(base .. \"/Name\", m.name)\n\t\tself:SetText(base .. \"/Hp\", string.format(\"%d\", m.hp) .. \"/\" .. string.format(\"%d\", m.maxHp))\n\t\tlocal intent = m.intents[m.intentIdx]\n\t\tlocal t = \"\"\n\t\tif intent ~= nil then\n\t\t\tif intent.kind == \"Attack\" then\n\t\t\t\tlocal atk = intent.value + m.str\n\t\t\t\tif m.weak > 0 then atk = math.floor(atk * 0.75) end\n\t\t\t\tif self.PlayerVuln > 0 then atk = math.floor(atk * 1.5) end\n\t\t\t\tt = \"공격 \" .. tostring(atk)\n\t\t\telseif intent.kind == \"Defend\" then t = \"방어 \" .. tostring(intent.value)\n\t\t\telseif intent.kind == \"Debuff\" then\n\t\t\t\tif intent.effect == \"weak\" then t = \"약화 \" .. tostring(intent.value) .. \" 부여\"\n\t\t\t\telse t = \"취약 \" .. tostring(intent.value) .. \" 부여\" end\n\t\t\telseif intent.kind == \"AddCard\" then\n\t\t\t\tt = \"저주 카드 추가\"\n\t\t\tend\n\t\tend\n\t\tself:SetText(base .. \"/Intent\", t)\n\t\tlocal dragActive = self.DragTargetIndex ~= nil and self.DragTargetIndex > 0\n\t\tlocal shownTarget = self.TargetIndex\n\t\tif dragActive == true then shownTarget = self.DragTargetIndex end\n\t\tself:SetEntityEnabled(base .. \"/TargetMarker\", i == shownTarget and dragActive)\n\t\tself:SetEntityEnabled(base .. \"/TargetMarker/Label\", i == shownTarget and dragActive)\n\t\tlocal intentEntity = _EntityService:GetEntityByPath(base .. \"/Intent\")\n\t\tif intentEntity ~= nil and intentEntity.TextComponent ~= nil and intent ~= nil then\n\t\t\tif intent.kind == \"Attack\" then\n\t\t\t\tintentEntity.TextComponent.FontColor = Color(1, 0.45, 0.35, 1)\n\t\t\telseif intent.kind == \"Debuff\" then\n\t\t\t\tintentEntity.TextComponent.FontColor = Color(0.8, 0.5, 1, 1)\n\t\t\telseif intent.kind == \"AddCard\" then\n\t\t\t\tintentEntity.TextComponent.FontColor = Color(0.6, 0.85, 0.4, 1)\n\t\t\telse\n\t\t\t\tintentEntity.TextComponent.FontColor = Color(0.5, 0.75, 1, 1)\n\t\t\tend\n\t\tend\n\t\tself:SetHpBar(base .. \"/HpBarFill\", m.hp, m.maxHp, 140)\n\t\tself:SetEntityEnabled(base .. \"/BlockBadge\", m.block > 0)\n\t\tself:SetText(base .. \"/BlockBadge/Value\", string.format(\"%d\", m.block))\n\t\tself:SetText(base .. \"/Buffs\", self:BuffsLabel(m.str, m.weak, m.vuln, m.poison or 0))\n\telse\n\t\tself:SetEntityEnabled(base, false)\n\tend\nend\nself:SetText(\"/ui/RunUIGroup/CombatHud/PlayerPanel/HpText\", string.format(\"%d\", self.PlayerHp) .. \"/\" .. string.format(\"%d\", self.PlayerMaxHp))\nself:SetHpBar(\"/ui/RunUIGroup/CombatHud/PlayerPanel/HpBarFill\", self.PlayerHp, self.PlayerMaxHp, 220)\nself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/PlayerPanel/BlockBadge\", self.PlayerBlock > 0)\nself:SetText(\"/ui/RunUIGroup/CombatHud/PlayerPanel/BlockBadge/Value\", string.format(\"%d\", self.PlayerBlock))\nlocal pb = self:BuffsLabel(self.PlayerStr, self.PlayerWeak, self.PlayerVuln, 0)\nif self.PlayerIntangible ~= nil and self.PlayerIntangible > 0 then\n\tif pb ~= \"\" then pb = pb .. \" \" end\n\tpb = pb .. \"불가침\" .. tostring(self.PlayerIntangible)\nend\nif self.PlayerDex ~= nil and self.PlayerDex > 0 then\n\tif pb ~= \"\" then pb = pb .. \" \" end\n\tpb = pb .. \"민첩+\" .. tostring(self.PlayerDex)\nend\nif self.PlayerThorns ~= nil and self.PlayerThorns > 0 then\n\tif pb ~= \"\" then pb = pb .. \" \" end\n\tpb = pb .. \"가시\" .. tostring(self.PlayerThorns)\nend\nif self.PlayerPowers ~= nil and #self.PlayerPowers > 0 then\n\tlocal names = {}\n\tfor i = 1, #self.PlayerPowers do\n\t\tlocal pc = self.Cards[self.PlayerPowers[i]]\n\t\tif pc ~= nil then table.insert(names, pc.name) end\n\tend\n\tif pb ~= \"\" then pb = pb .. \" · \" end\n\tpb = pb .. table.concat(names, \" \")\nend\nself:SetText(\"/ui/RunUIGroup/CombatHud/PlayerPanel/Buffs\", pb)\nself:RenderRun()", + "Code": "for i = 1, 4 do\n\tlocal base = \"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. tostring(i)\n\tlocal m = self.Monsters[i]\n\tif m ~= nil and m.alive == true then\n\t\tself:SetEntityEnabled(base, true)\n\t\tself:SetText(base .. \"/Name\", m.name)\n\t\tself:SetText(base .. \"/Hp\", string.format(\"%d\", m.hp) .. \"/\" .. string.format(\"%d\", m.maxHp))\n\t\tlocal intent = m.intents[m.intentIdx]\n\t\tlocal t = \"\"\n\t\tif intent ~= nil then\n\t\t\tif intent.kind == \"Attack\" then\n\t\t\t\tlocal atk = intent.value + m.str\n\t\t\t\tif m.weak > 0 then atk = math.floor(atk * 0.75) end\n\t\t\t\tif self.PlayerVuln > 0 then atk = math.floor(atk * 1.5) end\n\t\t\t\tt = \"공격 \" .. tostring(atk)\n\t\t\telseif intent.kind == \"Defend\" then t = \"방어 \" .. tostring(intent.value)\n\t\t\telseif intent.kind == \"Debuff\" then\n\t\t\t\tif intent.effect == \"weak\" then t = \"약화 \" .. tostring(intent.value) .. \" 부여\"\n\t\t\t\telse t = \"취약 \" .. tostring(intent.value) .. \" 부여\" end\n\t\t\telseif intent.kind == \"AddCard\" then\n\t\t\t\tt = \"저주 카드 추가\"\n\t\t\tend\n\t\tend\n\t\tself:SetText(base .. \"/Intent\", t)\n\t\tlocal dragActive = self.DragTargetIndex ~= nil and self.DragTargetIndex > 0\n\t\tlocal shownTarget = self.TargetIndex\n\t\tif dragActive == true then shownTarget = self.DragTargetIndex end\n\t\tself:SetEntityEnabled(base .. \"/TargetMarker\", i == shownTarget and dragActive)\n\t\tself:SetEntityEnabled(base .. \"/TargetMarker/Label\", i == shownTarget and dragActive)\n\t\tlocal intentEntity = _EntityService:GetEntityByPath(base .. \"/Intent\")\n\t\tif intentEntity ~= nil and intentEntity.TextComponent ~= nil and intent ~= nil then\n\t\t\tif intent.kind == \"Attack\" then\n\t\t\t\tintentEntity.TextComponent.FontColor = Color(1, 0.45, 0.35, 1)\n\t\t\telseif intent.kind == \"Debuff\" then\n\t\t\t\tintentEntity.TextComponent.FontColor = Color(0.8, 0.5, 1, 1)\n\t\t\telseif intent.kind == \"AddCard\" then\n\t\t\t\tintentEntity.TextComponent.FontColor = Color(0.6, 0.85, 0.4, 1)\n\t\t\telse\n\t\t\t\tintentEntity.TextComponent.FontColor = Color(0.5, 0.75, 1, 1)\n\t\t\tend\n\t\tend\n\t\tself:SetHpBar(base .. \"/HpBarFill\", m.hp, m.maxHp, 140)\n\t\tself:SetEntityEnabled(base .. \"/BlockBadge\", m.block > 0)\n\t\tself:SetText(base .. \"/BlockBadge/Value\", string.format(\"%d\", m.block))\n\t\tself:SetText(base .. \"/Buffs\", self:BuffsLabel(m.str, m.weak, m.vuln, m.poison or 0))\n\telse\n\t\tself:SetEntityEnabled(base, false)\n\tend\nend\nself:SetText(\"/ui/RunUIGroup/CombatHud/PlayerPanel/HpText\", string.format(\"%d\", self.PlayerHp) .. \"/\" .. string.format(\"%d\", self.PlayerMaxHp))\nself:SetHpBar(\"/ui/RunUIGroup/CombatHud/PlayerPanel/HpBarFill\", self.PlayerHp, self.PlayerMaxHp, 220)\nself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/PlayerPanel/BlockBadge\", self.PlayerBlock > 0)\nself:SetText(\"/ui/RunUIGroup/CombatHud/PlayerPanel/BlockBadge/Value\", string.format(\"%d\", self.PlayerBlock))\nlocal pb = self:BuffsLabel(self.PlayerStr, self.PlayerWeak, self.PlayerVuln, 0)\nif self.PlayerIntangible ~= nil and self.PlayerIntangible > 0 then\n\tif pb ~= \"\" then pb = pb .. \" \" end\n\tpb = pb .. \"불가침\" .. tostring(self.PlayerIntangible)\nend\nif self.PlayerDex ~= nil and self.PlayerDex > 0 then\n\tif pb ~= \"\" then pb = pb .. \" \" end\n\tpb = pb .. \"민첩+\" .. tostring(self.PlayerDex)\nend\nif self.PlayerThorns ~= nil and self.PlayerThorns > 0 then\n\tif pb ~= \"\" then pb = pb .. \" \" end\n\tpb = pb .. \"가시\" .. tostring(self.PlayerThorns)\nend\nif self.ComboCount ~= nil and self.ComboCount > 0 then\n\tif pb ~= \"\" then pb = pb .. \" \" end\n\tpb = pb .. \"콤보 \" .. tostring(self.ComboCount) .. \"/\" .. tostring(self:GetComboMax())\nend\nif self.HolyChargeCount ~= nil and self.HolyChargeCount > 0 then\n\tif pb ~= \"\" then pb = pb .. \" \" end\n\tpb = pb .. \"홀리 차지 \" .. tostring(self.HolyChargeCount) .. \"/\" .. tostring(self:GetHolyChargeMax())\nend\nif self.PlayerPowers ~= nil and #self.PlayerPowers > 0 then\n\tlocal names = {}\n\tfor i = 1, #self.PlayerPowers do\n\t\tlocal pc = self.Cards[self.PlayerPowers[i]]\n\t\tif pc ~= nil then table.insert(names, pc.name) end\n\tend\n\tif pb ~= \"\" then pb = pb .. \" · \" end\n\tpb = pb .. table.concat(names, \" \")\nend\nself:SetText(\"/ui/RunUIGroup/CombatHud/PlayerPanel/Buffs\", pb)\nself:RenderRun()", "Scope": 2, "ExecSpace": 6, "Attributes": [], diff --git a/data/cardframes.json b/data/cardframes.json index ece6767..16f6b6f 100644 --- a/data/cardframes.json +++ b/data/cardframes.json @@ -19,7 +19,9 @@ "classToFrame": { "warrior": "warrior", "fighter": "warrior", + "crusader": "warrior", "page": "warrior", + "knight": "warrior", "spearman": "warrior", "magician": "magician", "firepoison": "magician", diff --git a/data/cards.json b/data/cards.json index 41efb8d..f304c0e 100644 --- a/data/cards.json +++ b/data/cards.json @@ -955,6 +955,463 @@ "class": "warrior", "rarity": "legend" }, + "SlashBlast": { + "name": "슬래시 블러스트", + "cost": 1, + "kind": "Attack", + "damage": 7, + "aoe": true, + "damagePerCombo": 1, + "desc": "모든 적에게 피해 7. 콤보당 피해 +1", + "image": "863812c5c2f84132ac7465b50ec2283e", + "class": "warrior", + "rarity": "normal" + }, + "WarriorLeap": { + "name": "워리어 리프", + "cost": 0, + "kind": "Skill", + "block": 4, + "nextTurnBlock": 4, + "exhaust": true, + "desc": "방어도 4. 다음 턴 방어도 4. 소멸.", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "warrior", + "rarity": "normal" + }, + "LeapAttack": { + "name": "리프 어택", + "cost": 1, + "kind": "Attack", + "damage": 3, + "hits": 2, + "aoe": true, + "block": 5, + "desc": "모든 적에게 피해 3 x 2회. 방어도 5", + "image": "997fa6999aa04dbb97a1dd99025fa2ba", + "class": "warrior", + "rarity": "normal" + }, + "IronBody": { + "name": "아이언 바디", + "cost": 1, + "kind": "Power", + "powerEffect": "blockPerTurn", + "value": 3, + "thorns": 2, + "desc": "매턴 방어도 3. 가시 2", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "warrior", + "rarity": "unique" + }, + "WarriorMastery": { + "name": "워리어 마스터리", + "cost": 1, + "kind": "Power", + "strength": 1, + "dex": 1, + "desc": "힘 1. 민첩 1", + "image": "e2580523efc6457385114b78ad0d7cce", + "class": "warrior", + "rarity": "unique" + }, + "Brandish": { + "name": "브랜디쉬", + "cost": 1, + "kind": "Attack", + "damage": 4, + "hits": 2, + "damagePerCombo": 1, + "comboGain": 1, + "desc": "피해 4 x 2회. 콤보당 피해 +1. 콤보 1 획득", + "image": "1bc3e52b330648faae9eafd5a205e37b", + "class": "fighter", + "rarity": "normal" + }, + "FlashSlash": { + "name": "플래시 슬래시", + "cost": 1, + "kind": "Attack", + "damage": 2, + "hits": 5, + "aoe": true, + "block": 4, + "comboGain": 2, + "exhaust": true, + "desc": "모든 적에게 피해 2 x 5회. 방어도 4. 콤보 2 획득. 소멸.", + "image": "291b2298db88476f8ae3c6c78f53c9b7", + "class": "fighter", + "rarity": "unique" + }, + "ComboAttack": { + "name": "콤보 어택", + "cost": 1, + "kind": "Power", + "comboOnAttack": 1, + "comboMax": 5, + "desc": "공격 카드를 사용할 때마다 콤보 1 획득. 최대 5", + "image": "e2580523efc6457385114b78ad0d7cce", + "class": "fighter", + "rarity": "unique" + }, + "SpiritBlade": { + "name": "스피릿 블레이드", + "cost": 2, + "kind": "Power", + "strength": 2, + "thorns": 5, + "desc": "힘 2. 가시 5", + "image": "863812c5c2f84132ac7465b50ec2283e", + "class": "fighter", + "rarity": "unique" + }, + "WeaponMastery": { + "name": "웨폰 마스터리", + "cost": 1, + "kind": "Power", + "strength": 1, + "attackPlayedDamage": 1, + "desc": "힘 1. 공격 카드를 사용할 때마다 대상에게 피해 1", + "image": "1bc3e52b330648faae9eafd5a205e37b", + "class": "fighter", + "rarity": "unique" + }, + "WeaponAcceleration": { + "name": "웨폰 액셀레이션", + "cost": 1, + "kind": "Power", + "turnStartDraw": 1, + "comboGain": 2, + "desc": "콤보 2 획득. 턴 시작 시 카드 1장 추가로 뽑기", + "image": "291b2298db88476f8ae3c6c78f53c9b7", + "class": "fighter", + "rarity": "unique" + }, + "FinalAttack": { + "name": "파이널 어택", + "cost": 1, + "kind": "Power", + "attackPlayedDamage": 3, + "desc": "공격 카드를 사용할 때마다 대상에게 피해 3", + "image": "997fa6999aa04dbb97a1dd99025fa2ba", + "class": "fighter", + "rarity": "legend" + }, + "FighterPhysicalTraining": { + "name": "피지컬 트레이닝", + "cost": 2, + "kind": "Power", + "strength": 1, + "dex": 1, + "powerEffect": "blockPerTurn", + "value": 2, + "desc": "힘 1. 민첩 1. 매턴 방어도 2", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "fighter", + "rarity": "unique" + }, + "BraveSlash": { + "name": "브레이브 슬래시", + "cost": 2, + "kind": "Attack", + "damage": 5, + "hits": 3, + "damagePerCombo": 1, + "comboGain": 1, + "desc": "피해 5 x 3회. 콤보당 피해 +1. 콤보 1 획득", + "image": "863812c5c2f84132ac7465b50ec2283e", + "class": "crusader", + "rarity": "normal" + }, + "AuraBlade": { + "name": "오라 블레이드", + "cost": 2, + "kind": "Attack", + "damage": 4, + "hits": 4, + "aoe": true, + "pierce": true, + "exhaust": true, + "desc": "모든 적에게 방어도를 무시하고 피해 4 x 4회. 소멸.", + "image": "291b2298db88476f8ae3c6c78f53c9b7", + "class": "crusader", + "rarity": "legend" + }, + "Rush": { + "name": "돌진", + "cost": 1, + "kind": "Attack", + "damage": 8, + "aoe": true, + "block": 7, + "comboGain": 1, + "desc": "모든 적에게 피해 8. 방어도 7. 콤보 1 획득", + "image": "997fa6999aa04dbb97a1dd99025fa2ba", + "class": "crusader", + "rarity": "unique" + }, + "ScarringSword": { + "name": "스카링 소드", + "cost": 2, + "kind": "Power", + "attackWeak": 1, + "desc": "공격 카드로 피해를 주면 대상에게 약화 1", + "image": "1bc3e52b330648faae9eafd5a205e37b", + "class": "crusader", + "rarity": "legend" + }, + "ComboSynergy": { + "name": "콤보 시너지", + "cost": 2, + "kind": "Power", + "comboOnAttack": 1, + "comboMax": 5, + "attackDamagePerCombo": 1, + "desc": "공격마다 콤보 1 획득. 모든 공격이 콤보당 피해 +1. 최대 5", + "image": "e2580523efc6457385114b78ad0d7cce", + "class": "crusader", + "rarity": "legend" + }, + "SelfRecovery": { + "name": "셀프 리커버리", + "cost": 1, + "kind": "Power", + "powerEffect": "healPerTurn", + "value": 3, + "desc": "턴 시작 시 HP 3 회복", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "crusader", + "rarity": "unique" + }, + "ChanceAttack": { + "name": "찬스 어택", + "cost": 1, + "kind": "Power", + "attackDamageVsWeakMultiplier": 1.5, + "desc": "약화 상태인 적에게 주는 공격 피해 1.5배", + "image": "291b2298db88476f8ae3c6c78f53c9b7", + "class": "crusader", + "rarity": "unique" + }, + "Endure": { + "name": "인듀어", + "cost": 1, + "kind": "Power", + "removePlayerDebuffs": true, + "powerEffect": "blockPerTurn", + "value": 4, + "desc": "약화와 취약을 제거합니다. 매턴 방어도 4", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "crusader", + "rarity": "unique" + }, + "DivineSwing": { + "name": "디바인 스윙", + "cost": 2, + "kind": "Attack", + "damage": 3, + "hits": 4, + "aoe": true, + "weak": 1, + "affectsAllEnemies": true, + "holyForce": true, + "desc": "모든 적에게 피해 3 x 4회, 약화 1. 홀리 포스.", + "image": "863812c5c2f84132ac7465b50ec2283e", + "class": "page", + "rarity": "normal" + }, + "HolyCharge": { + "name": "홀리 차지", + "cost": 1, + "kind": "Power", + "holyChargeOnHolyForce": 1, + "holyChargeMax": 3, + "damageTakenReduction": 0.1, + "desc": "홀리 포스 카드를 사용하면 홀리 차지 1 획득. 최대 3. 받는 피해 10% 감소", + "image": "e2580523efc6457385114b78ad0d7cce", + "class": "page", + "rarity": "unique" + }, + "PageOrder": { + "name": "페이지 오더", + "cost": 1, + "kind": "Attack", + "damage": 3, + "hits": 2, + "aoe": true, + "weak": 1, + "affectsAllEnemies": true, + "draw": 1, + "desc": "모든 적에게 피해 3 x 2회, 약화 1. 카드 1장 뽑기", + "image": "291b2298db88476f8ae3c6c78f53c9b7", + "class": "page", + "rarity": "normal" + }, + "PageWeaponAcceleration": { + "name": "웨폰 액셀레이션", + "cost": 1, + "kind": "Power", + "strength": 1, + "turnStartDraw": 1, + "desc": "힘 1. 턴 시작 시 카드 1장 추가로 뽑기", + "image": "291b2298db88476f8ae3c6c78f53c9b7", + "class": "page", + "rarity": "unique" + }, + "PageStance": { + "name": "스탠스", + "cost": 1, + "kind": "Power", + "powerEffect": "blockPerTurn", + "value": 4, + "desc": "매턴 방어도 4", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "page", + "rarity": "normal" + }, + "PageWeaponMastery": { + "name": "웨폰 마스터리", + "cost": 1, + "kind": "Power", + "cardPlayedBlock": 1, + "desc": "카드를 사용할 때마다 방어도 1", + "image": "1bc3e52b330648faae9eafd5a205e37b", + "class": "page", + "rarity": "unique" + }, + "PageFinalAttack": { + "name": "파이널 어택", + "cost": 1, + "kind": "Power", + "attackPlayedDamage": 2, + "desc": "공격 카드를 사용할 때마다 대상에게 피해 2", + "image": "997fa6999aa04dbb97a1dd99025fa2ba", + "class": "page", + "rarity": "legend" + }, + "PagePhysicalTraining": { + "name": "피지컬 트레이닝", + "cost": 2, + "kind": "Power", + "strength": 1, + "dex": 1, + "powerEffect": "blockPerTurn", + "value": 2, + "desc": "힘 1. 민첩 1. 매턴 방어도 2", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "page", + "rarity": "unique" + }, + "DivineCharge": { + "name": "디바인 차지", + "cost": 2, + "kind": "Attack", + "damage": 4, + "hits": 4, + "aoe": true, + "weak": 1, + "affectsAllEnemies": true, + "holyForce": true, + "damagePerHolyCharge": 1, + "desc": "모든 적에게 피해 4 x 4회, 약화 1. 홀리 차지당 피해 +1. 홀리 포스.", + "image": "863812c5c2f84132ac7465b50ec2283e", + "class": "knight", + "rarity": "unique" + }, + "Restoration": { + "name": "리스토네이션", + "cost": 1, + "kind": "Skill", + "heal": 8, + "healPerHolyCharge": 4, + "holyChargeSpendAll": true, + "desc": "HP 8 회복. 홀리 차지당 추가로 4 회복한 뒤 모두 소비", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "knight", + "rarity": "unique" + }, + "KnightRush": { + "name": "돌진", + "cost": 1, + "kind": "Attack", + "damage": 7, + "aoe": true, + "block": 4, + "blockPerHolyCharge": 2, + "desc": "모든 적에게 피해 7. 방어도 4, 홀리 차지당 방어도 +2", + "image": "997fa6999aa04dbb97a1dd99025fa2ba", + "class": "knight", + "rarity": "normal" + }, + "NobleDemand": { + "name": "노블 디맨드", + "cost": 1, + "kind": "Skill", + "weak": 2, + "affectsAllEnemies": true, + "removeEnemyBlock": true, + "enemyStrengthLossThisTurn": 3, + "desc": "모든 적의 방어도를 제거하고 약화 2. 이번 턴 적 전체 힘 -3", + "image": "291b2298db88476f8ae3c6c78f53c9b7", + "class": "knight", + "rarity": "unique" + }, + "ParashockGuard": { + "name": "파라쇼크 가드", + "cost": 2, + "kind": "Power", + "strength": 1, + "thorns": 3, + "cardPlayedBlock": 1, + "desc": "힘 1. 가시 3. 카드를 사용할 때마다 방어도 1", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "knight", + "rarity": "unique" + }, + "CombatOrders": { + "name": "컴뱃 오더스", + "cost": 2, + "kind": "Power", + "nextSkillRepeatCount": 1, + "turnStartDraw": 1, + "desc": "다음 스킬을 1회 추가 발동. 턴 시작 시 카드 1장 추가로 뽑기", + "image": "e2580523efc6457385114b78ad0d7cce", + "class": "knight", + "rarity": "legend" + }, + "KnightShieldMastery": { + "name": "실드 마스터리", + "cost": 2, + "kind": "Power", + "powerEffect": "blockPerTurn", + "value": 5, + "thorns": 2, + "desc": "매턴 방어도 5. 가시 2", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "knight", + "rarity": "unique" + }, + "Achilles": { + "name": "아킬레스", + "cost": 2, + "kind": "Power", + "damageTakenReduction": 0.25, + "desc": "받는 피해 25% 감소", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "knight", + "rarity": "legend" + }, + "BlessingArmor": { + "name": "블레싱 아머", + "cost": 2, + "kind": "Power", + "blockOnDamaged": 6, + "strengthOnDamagedOnce": 2, + "desc": "HP 피해를 받으면 방어도 6. 전투 중 처음 발동할 때 힘 2", + "image": "e2580523efc6457385114b78ad0d7cce", + "class": "knight", + "rarity": "legend" + }, "EnergyBolt": { "name": "에너지 볼트", "cost": 1, diff --git a/data/cards.xlsx b/data/cards.xlsx index f297d9640fb4439d9d8e6d7b390d8fd6a225e4b8..4c8a0798e13146f5fa62bff74b10664f7ee22fb6 100644 GIT binary patch delta 32279 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 A-T(jq delta 24492 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 diff --git a/docs/card-effect-fields.md b/docs/card-effect-fields.md index f143121..250750c 100644 --- a/docs/card-effect-fields.md +++ b/docs/card-effect-fields.md @@ -14,6 +14,10 @@ The goal is to keep card behavior reusable instead of hardcoding one-off card na - `damagePerDiscardedThisTurn`: bonus damage per card discarded this turn - `damagePerSkillInHand`: bonus damage per skill card in hand - `damagePerCardDrawnThisCombat`: bonus damage per card drawn this combat +- `damagePerCombo`: bonus base damage per current Combo +- `damagePerHolyCharge`: bonus base damage per current Holy Charge +- `attackDamagePerCombo`: Power field that adds base damage per current Combo to all Attacks +- `attackPlayedDamage`: Power field that deals extra damage after an Attack card is played - `damagePerTurn`: damage applied at turn start - `cardPlayedDamage`: damage when the card is played - `cardPlayedRandomDamage`: random damage when the card is played @@ -65,6 +69,21 @@ The goal is to keep card behavior reusable instead of hardcoding one-off card na - `thorns`: gain Thorns - `selfVuln`: apply Vulnerable to self - `extraPoisonTicks`: add extra poison ticks at enemy turn start +- `comboGain`: gain Combo when the card resolves; Attack cards gain it after dealing damage +- `comboOnAttack`: Power field that gains Combo whenever an Attack card is played +- `comboMax`: Power field that raises the maximum Combo above the default 5 +- `attackWeak`: Power field that applies Weak after an Attack card is played +- `removePlayerDebuffs`: remove player Weak and Vulnerable +- `holyForce`: marks a card as Holy Force for Holy Charge Power triggers +- `holyChargeGain`: gain Holy Charge directly +- `holyChargeOnHolyForce`: Power field that gains Holy Charge after a Holy Force card +- `holyChargeMax`: Power field that raises the maximum Holy Charge above the default 3 +- `blockPerHolyCharge`: gain additional block per current Holy Charge +- `healPerHolyCharge`: heal additional HP per current Holy Charge +- `holyChargeSpendAll`: consume all Holy Charge after resolving the card +- `damageTakenReduction`: Power field that reduces incoming damage; total reduction is capped at 75% +- `blockOnDamaged`: Power field that grants block after taking HP damage +- `strengthOnDamagedOnce`: Power field that grants Strength on the first HP damage each combat ## Status @@ -108,6 +127,7 @@ The goal is to keep card behavior reusable instead of hardcoding one-off card na - `powerEffect: "blockPerTurn"` - `powerEffect: "poisonPerTurn"` - `powerEffect: "damagePerTurn"` +- `powerEffect: "healPerTurn"` - `powerEffect: "retainOne"` - `powerEffect: "keepBlock"` - `turnStartShiv`: create Shivs at turn start diff --git a/tools/balance/sim-balance.mjs b/tools/balance/sim-balance.mjs index dec6c09..96df377 100644 --- a/tools/balance/sim-balance.mjs +++ b/tools/balance/sim-balance.mjs @@ -246,6 +246,9 @@ export function simulateCombat(data, rng, stats) { let cardsDrawnThisCombat = 0; let bonusRewardScreens = 0; let activeKillReward = 0; + let comboCount = 0; + let holyChargeCount = 0; + let damagePowerStrengthUsed = false; let energy = 0; const powers = []; const mob = monsters.map((m) => ({ @@ -467,6 +470,9 @@ export function simulateCombat(data, rng, stats) { base += countOwnedNameMatches(c.damageNameMatch) * c.damagePerOwnedNameMatch; } if (c.damageFromCurrentBlock) base += pBlock * c.damageFromCurrentBlock; + const comboScale = (c.damagePerCombo || 0) + powerFieldTotal('attackDamagePerCombo'); + if (comboScale) base += comboCount * comboScale; + if (c.damagePerHolyCharge) base += holyChargeCount * c.damagePerHolyCharge; const otherHand = Math.max(0, hand.length - 1); if (c.damagePerOtherHandCard) base += otherHand * c.damagePerOtherHandCard; if (c.damagePerAttackPlayedThisTurn) base += turnAttackCardsPlayed * c.damagePerAttackPlayedThisTurn; @@ -518,6 +524,23 @@ export function simulateCombat(data, rng, stats) { } return total; } + function powerFieldMax(field) { + let best = 0; + for (const pid of powers) best = Math.max(best, cards[pid]?.[field] || 0); + return best; + } + function comboMax() { + return Math.max(5, powerFieldMax('comboMax')); + } + function gainCombo(amount) { + if (amount > 0) comboCount = Math.min(comboMax(), comboCount + amount); + } + function holyChargeMax() { + return Math.max(3, powerFieldMax('holyChargeMax')); + } + function gainHolyCharge(amount) { + if (amount > 0) holyChargeCount = Math.min(holyChargeMax(), holyChargeCount + amount); + } function triggerExhaust(count = 1) { const drawOnExhaust = powerFieldTotal('drawOnExhaust'); if (drawOnExhaust > 0 && count > 0) draw(drawOnExhaust * count); @@ -607,8 +630,9 @@ export function simulateCombat(data, rng, stats) { if (!target || !target.alive) return { killed: false, dealt: 0 }; let dealt = amount; if (target.vuln > 0) dealt = Math.floor(dealt * 1.5); - if (target.weak > 0 && c.attackDamageVsWeakMultiplier && c.attackDamageVsWeakMultiplier > 1) { - dealt = Math.floor(dealt * c.attackDamageVsWeakMultiplier); + const weakMultiplier = Math.max(c.attackDamageVsWeakMultiplier || 1, powerFieldMax('attackDamageVsWeakMultiplier')); + if (target.weak > 0 && weakMultiplier > 1) { + dealt = Math.floor(dealt * weakMultiplier); } if (c.pierce === true) { target.hp -= dealt; @@ -669,11 +693,11 @@ export function simulateCombat(data, rng, stats) { roundKilled = resolveAttackRound(); } while (c.repeatOnKill === true && roundKilled === true && countAliveMonsters() > 0); } - if (c.block) blockGained = addBlock(c.block); + if (c.block) blockGained = addBlock(c.block + holyChargeCount * (c.blockPerHolyCharge || 0)); } else if (c.kind === 'Power') { powers.push(id); } else { - if (c.block) blockGained = addBlock(c.block); + if (c.block) blockGained = addBlock(c.block + holyChargeCount * (c.blockPerHolyCharge || 0)); const weakAmount = (c.weak || 0) + (c.xWeakPerEnergy || 0) * xEnergy; const vulnAmount = c.vuln || 0; if ((weakAmount || vulnAmount || c.poison || c.removeEnemyBlock || c.removeEnemyArtifact || c.enemyStrengthLossThisTurn) && alive.length) { @@ -705,8 +729,10 @@ export function simulateCombat(data, rng, stats) { if (c.dex) pDex += c.dex; if (c.thorns) pThorns += c.thorns; if (c.selfVuln) pVuln += c.selfVuln; - if (c.heal) pHp = Math.min(pHp + c.heal, playerMaxHp); + if (c.heal) pHp = Math.min(pHp + c.heal + holyChargeCount * (c.healPerHolyCharge || 0), playerMaxHp); if (c.gainEnergy) energy += c.gainEnergy; + if (c.kind !== 'Attack' && c.comboGain) gainCombo(c.comboGain); + if (c.removePlayerDebuffs === true) { pWeak = 0; pVuln = 0; } activeKillReward = c.rewardOnKill || 0; if (c.intangible) pIntangible += c.intangible; queueNextTurnEffects(c); @@ -766,6 +792,28 @@ export function simulateCombat(data, rng, stats) { } } } + if (c.kind === 'Attack') { + gainCombo((c.comboGain || 0) + powerFieldTotal('comboOnAttack')); + const extraDamage = powerFieldTotal('attackPlayedDamage'); + if (extraDamage > 0) { + const target = chooseTarget(aliveList(), extraDamage); + if (target) { + const r = applyDamage(target.hp, target.block, extraDamage); + target.hp = r.hp; target.block = r.block; + damageDealtThisTurn += extraDamage; + if (target.hp <= 0) target.alive = false; + } + } + const attackWeak = powerFieldTotal('attackWeak'); + if (attackWeak > 0) { + const target = chooseTarget(aliveList(), 0); + if (target) applyMonsterWeak(target, attackWeak); + } + } + let holyGain = c.holyChargeGain || 0; + if (c.holyForce === true) holyGain += powerFieldTotal('holyChargeOnHolyForce'); + gainHolyCharge(holyGain); + if (c.holyChargeSpendAll === true) holyChargeCount = 0; if (c.blockPerDamageDealtThisTurn && c.blockPerDamageDealtThisTurn > 0 && c.kind !== 'Power') { blockGained += addBlock(Math.max(0, damageDealtThisTurn * c.blockPerDamageDealtThisTurn)); } @@ -878,6 +926,8 @@ export function simulateCombat(data, rng, stats) { m.hp = r.hp; m.block = r.block; if (m.hp <= 0) m.alive = false; } + } else if (pc.powerEffect === 'healPerTurn') { + pHp = Math.min(playerMaxHp, pHp + (pc.value || 0)); } if (pc.turnStartShiv) addCardsToHand('Shiv', pc.turnStartShiv); if (pc.turnStartDraw) powerTurnDraw += pc.turnStartDraw; @@ -991,8 +1041,18 @@ export function simulateCombat(data, rng, stats) { const atk = calcEnemyAttack(it.value, m.str, m.weak, pVuln, enemyStrengthLossThisTurn); const beforeHp = pHp; let incoming = atk; + const reduction = Math.min(0.75, powerFieldTotal('damageTakenReduction')); + if (reduction > 0) incoming = Math.floor(incoming * (1 - reduction)); if (pIntangible > 0 && incoming > 1) incoming = 1; const r = applyDamage(pHp, pBlock, incoming); pHp = r.hp; pBlock = r.block; + if (beforeHp > pHp) { + const reactiveBlock = powerFieldTotal('blockOnDamaged'); + if (reactiveBlock > 0) addBlock(reactiveBlock); + if (!damagePowerStrengthUsed) { + const reactiveStrength = powerFieldTotal('strengthOnDamagedOnce'); + if (reactiveStrength > 0) { pStr += reactiveStrength; damagePowerStrengthUsed = true; } + } + } if (beforeHp > pHp && pThorns > 0) { m.hp -= pThorns; if (m.hp <= 0) m.alive = false; diff --git a/tools/balance/sim-balance.test.mjs b/tools/balance/sim-balance.test.mjs index 6adb25a..a4a9673 100644 --- a/tools/balance/sim-balance.test.mjs +++ b/tools/balance/sim-balance.test.mjs @@ -1391,3 +1391,102 @@ test("simulateCombat: shivAoe makes Shivs hit all enemies", () => { assert.equal(r.win, true); assert.equal(r.turns, 1); }); + +test("simulateCombat: comboGain and damagePerCombo scale repeated attacks", () => { + const data = { + cards: { + Brandish: { name: "브랜디쉬", cost: 1, kind: "Attack", damage: 2, hits: 2, comboGain: 1, damagePerCombo: 1 }, + }, + starterDeck: ["Brandish"], + monsters: [{ name: "Dummy", maxHp: 14, intents: [{ kind: "Attack", value: 0 }] }], + }; + const stats = {}; + const r = simulateCombat(data, () => 0.999999, stats); + assert.equal(r.win, true); + assert.ok(stats.Brandish.damage > stats.Brandish.plays * 4); +}); + +test("simulateCombat: comboMax power raises the combo cap", () => { + const data = { + cards: { + ComboSynergy: { name: "콤보 시너지", cost: 0, kind: "Power", comboMax: 8, comboOnAttack: 2, attackDamagePerCombo: 1, innate: true }, + Hit: { name: "연속 베기", cost: 0, kind: "Attack", damage: 1 }, + }, + starterDeck: ["ComboSynergy", "Hit"], + monsters: [{ name: "Dummy", maxHp: 40, intents: [{ kind: "Attack", value: 0 }] }], + }; + const stats = {}; + const r = simulateCombat(data, () => 0.999999, stats); + assert.equal(r.win, true); + assert.ok(stats.Hit.damage > stats.Hit.plays); +}); + +test("simulateCombat: healPerTurn power restores hp at turn start", () => { + const data = { + cards: { + Recovery: { name: "셀프 리커버리", cost: 0, kind: "Power", powerEffect: "healPerTurn", value: 3 }, + Hit: { name: "마무리", cost: 1, kind: "Attack", damage: 1 }, + }, + starterDeck: ["Recovery", "Hit"], + monsters: [{ name: "Dummy", maxHp: 2, intents: [{ kind: "Attack", value: 2 }] }], + playerHp: 70, + playerMaxHp: 80, + }; + const r = simulateCombat(data, () => 0.999999); + assert.equal(r.win, true); + assert.ok(r.playerHpRemaining >= 69); +}); + +test("simulateCombat: Holy Charge scales repeated Holy Force attacks", () => { + const data = { + cards: { + ChargeStrike: { name: "차지 타격", cost: 1, kind: "Attack", damage: 2, holyChargeGain: 1, damagePerHolyCharge: 1 }, + }, + starterDeck: ["ChargeStrike"], + monsters: [{ name: "Dummy", maxHp: 14, intents: [{ kind: "Attack", value: 0 }] }], + }; + const stats = {}; + const r = simulateCombat(data, () => 0.999999, stats); + assert.equal(r.win, true); + assert.ok(stats.ChargeStrike.damage > stats.ChargeStrike.plays * 2); +}); + +test("simulateCombat: damageTakenReduction lowers incoming HP damage", () => { + const data = { + cards: { + Achilles: { name: "아킬레스", cost: 3, kind: "Power", damageTakenReduction: 0.25, innate: true }, + Wait1: { name: "대기", cost: 99, kind: "Status", unplayable: true, innate: true }, + Wait2: { name: "대기", cost: 99, kind: "Status", unplayable: true, innate: true }, + Wait3: { name: "대기", cost: 99, kind: "Status", unplayable: true, innate: true }, + Wait4: { name: "대기", cost: 99, kind: "Status", unplayable: true, innate: true }, + Finish: { name: "마무리", cost: 3, kind: "Power", cardPlayedDamage: 2 }, + }, + starterDeck: ["Finish", "Achilles", "Wait1", "Wait2", "Wait3", "Wait4"], + monsters: [{ name: "Dummy", maxHp: 2, intents: [{ kind: "Attack", value: 10 }] }], + }; + const r = simulateCombat(data, () => 0.999999); + assert.equal(r.win, true); + assert.equal(r.playerHpRemaining, 73); +}); + +test("simulateCombat: blockOnDamaged protects against later attackers", () => { + const data = { + cards: { + Armor: { name: "블레싱 아머", cost: 3, kind: "Power", blockOnDamaged: 6, strengthOnDamagedOnce: 2, innate: true }, + Wait1: { name: "대기", cost: 99, kind: "Status", unplayable: true, innate: true }, + Wait2: { name: "대기", cost: 99, kind: "Status", unplayable: true, innate: true }, + Wait3: { name: "대기", cost: 99, kind: "Status", unplayable: true, innate: true }, + Wait4: { name: "대기", cost: 99, kind: "Status", unplayable: true, innate: true }, + Finish1: { name: "마무리", cost: 3, kind: "Power", cardPlayedDamage: 1 }, + Finish2: { name: "마무리", cost: 3, kind: "Power", cardPlayedDamage: 1 }, + }, + starterDeck: ["Finish1", "Finish2", "Armor", "Wait1", "Wait2", "Wait3", "Wait4"], + monsters: [ + { name: "A", maxHp: 1, intents: [{ kind: "Attack", value: 5 }] }, + { name: "B", maxHp: 1, intents: [{ kind: "Attack", value: 5 }] }, + ], + }; + const r = simulateCombat(data, () => 0.999999); + assert.equal(r.win, true); + assert.equal(r.playerHpRemaining, 70); +}); diff --git a/tools/deck/cb/combat.mjs b/tools/deck/cb/combat.mjs index 203f724..bd2ed35 100644 --- a/tools/deck/cb/combat.mjs +++ b/tools/deck/cb/combat.mjs @@ -86,6 +86,8 @@ local function applyCardPlayHooks() if c.cardPlayedRandomDamage ~= nil and c.cardPlayedRandomDamage > 0 then self:DealDirectDamageToRandomMonster(c.cardPlayedRandomDamage) end + self:ApplyAttackCardPlayHooks(c) + self:ApplyHolyForceCardPlayHooks(c) end applyCardPlayHooks() if skillRepeat > 0 then @@ -550,6 +552,11 @@ for i = 1, #self.Monsters do if self.Monsters[i].alive == true then self.TargetIndex = i; break end end`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }]), method('DealDamageToPlayer', `local dmg = amount +local reduction = self:AddPowerFieldTotal("damageTakenReduction") +if reduction ~= nil and reduction > 0 then + reduction = math.min(0.75, reduction) + dmg = math.floor(dmg * (1 - reduction)) +end if self.PlayerBlock > 0 then local absorbed = math.min(self.PlayerBlock, dmg) self.PlayerBlock = self.PlayerBlock - absorbed @@ -560,6 +567,17 @@ if dmg > 0 and self.PlayerIntangible ~= nil and self.PlayerIntangible > 0 and dm end if dmg > 0 then self.PlayerHp = self.PlayerHp - dmg + local reactiveBlock = self:AddPowerFieldTotal("blockOnDamaged") + if reactiveBlock ~= nil and reactiveBlock > 0 then + self:AddCardBlock(reactiveBlock) + end + if self.DamagePowerStrengthUsed ~= true then + local reactiveStrength = self:AddPowerFieldTotal("strengthOnDamagedOnce") + if reactiveStrength ~= nil and reactiveStrength > 0 then + self.PlayerStr = self.PlayerStr + reactiveStrength + self.DamagePowerStrengthUsed = true + end + end local reflect = self.PlayerThorns or 0 if self:HasRelic("bronzeScales") then reflect = reflect + 3 diff --git a/tools/deck/cb/deckturn.mjs b/tools/deck/cb/deckturn.mjs index 0e88cac..3ae614d 100644 --- a/tools/deck/cb/deckturn.mjs +++ b/tools/deck/cb/deckturn.mjs @@ -291,6 +291,8 @@ if self.PlayerPowers ~= nil then if self.Monsters ~= nil then self:PlayAoeFx(pc.fx or pc.image, pc.value or 0) end + elseif pc.powerEffect == "healPerTurn" then + self.PlayerHp = math.min(self.PlayerMaxHp, self.PlayerHp + pc.value) end if pc.turnStartShiv ~= nil then self:AddCardsToHand("Shiv", pc.turnStartShiv) diff --git a/tools/deck/cb/hand.mjs b/tools/deck/cb/hand.mjs index 0c5b1db..418949c 100644 --- a/tools/deck/cb/hand.mjs +++ b/tools/deck/cb/hand.mjs @@ -346,6 +346,69 @@ countPile(self.DrawPile) countPile(self.DiscardPile) countPile(self.ExhaustPile) return n`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'match' }], 0, 'number'), + method('MaxPowerField', `local best = 0 +if self.PlayerPowers == nil then + return best +end +for i = 1, #self.PlayerPowers do + local powerCard = self.Cards[self.PlayerPowers[i]] + if powerCard ~= nil and powerCard[field] ~= nil and powerCard[field] > best then + best = powerCard[field] + end +end +return best`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'field' }], 0, 'number'), + method('GetComboMax', `local comboMax = 5 +local powerMax = self:MaxPowerField("comboMax") +if powerMax ~= nil and powerMax > comboMax then + comboMax = powerMax +end +return comboMax`, [], 0, 'number'), + method('GainCombo', `if amount == nil or amount <= 0 then + return +end +self.ComboCount = math.min(self:GetComboMax(), (self.ComboCount or 0) + amount)`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'amount' }]), + method('GetHolyChargeMax', `local chargeMax = 3 +local powerMax = self:MaxPowerField("holyChargeMax") +if powerMax ~= nil and powerMax > chargeMax then + chargeMax = powerMax +end +return chargeMax`, [], 0, 'number'), + method('GainHolyCharge', `if amount == nil or amount <= 0 then + return +end +self.HolyChargeCount = math.min(self:GetHolyChargeMax(), (self.HolyChargeCount or 0) + amount)`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'amount' }]), + method('ApplyHolyForceCardPlayHooks', `if c == nil then + return +end +local gain = c.holyChargeGain or 0 +if c.holyForce == true then + gain = gain + self:AddPowerFieldTotal("holyChargeOnHolyForce") +end +self:GainHolyCharge(gain) +if c.holyChargeSpendAll == true then + self.HolyChargeCount = 0 +end`, [{ Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'c' }]), + method('ApplyAttackCardPlayHooks', `if c == nil or c.kind ~= "Attack" then + return +end +local comboGain = c.comboGain or 0 +comboGain = comboGain + self:AddPowerFieldTotal("comboOnAttack") +self:GainCombo(comboGain) +local extraDamage = self:AddPowerFieldTotal("attackPlayedDamage") +if extraDamage ~= nil and extraDamage > 0 then + self:DealDirectDamageToTarget(extraDamage) +end +local weakAmount = self:AddPowerFieldTotal("attackWeak") +if weakAmount ~= nil and weakAmount > 0 and self.Monsters ~= nil then + local target = self.Monsters[self.TargetIndex] + if target ~= nil and target.alive == true then + if target.artifact ~= nil and target.artifact > 0 then + target.artifact = target.artifact - 1 + else + target.weak = (target.weak or 0) + weakAmount + end + end +end`, [{ Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'c' }]), method('AttackBaseForCard', `local base2 = c.damage or 0 if c.damageNameMatch ~= nil and c.damagePerOwnedNameMatch ~= nil then base2 = base2 + self:CountOwnedNameMatches(c.damageNameMatch) * c.damagePerOwnedNameMatch @@ -353,6 +416,14 @@ end if c.damageFromCurrentBlock ~= nil and c.damageFromCurrentBlock ~= 0 then base2 = base2 + (self.PlayerBlock or 0) * c.damageFromCurrentBlock end +local comboScale = c.damagePerCombo or 0 +comboScale = comboScale + self:AddPowerFieldTotal("attackDamagePerCombo") +if comboScale ~= 0 then + base2 = base2 + (self.ComboCount or 0) * comboScale +end +if c.damagePerHolyCharge ~= nil and c.damagePerHolyCharge ~= 0 then + base2 = base2 + (self.HolyChargeCount or 0) * c.damagePerHolyCharge +end local otherHand = 0 if self.Hand ~= nil then otherHand = #self.Hand - 1 @@ -431,6 +502,8 @@ local function applyCardPlayHooks() if c.cardPlayedRandomDamage ~= nil and c.cardPlayedRandomDamage > 0 then self:DealDirectDamageToRandomMonster(c.cardPlayedRandomDamage) end + self:ApplyAttackCardPlayHooks(c) + self:ApplyHolyForceCardPlayHooks(c) end applyCardPlayHooks() if skillRepeat > 0 then @@ -706,7 +779,7 @@ if c.kind == "Attack" then if c.damage ~= nil or c.xDamagePerEnergy ~= nil or c.damageFromCurrentBlock ~= nil then self:PlayerAttackMotion() local baseDmg = self:AttackBaseForCard(slot, c) - self.ActiveAttackDamageVsWeakMultiplier = c.attackDamageVsWeakMultiplier or 1 + self.ActiveAttackDamageVsWeakMultiplier = math.max(c.attackDamageVsWeakMultiplier or 1, self:MaxPowerField("attackDamageVsWeakMultiplier")) if c.xDamagePerEnergy ~= nil and c.xDamagePerEnergy > 0 then baseDmg = xEnergy * c.xDamagePerEnergy end @@ -788,14 +861,14 @@ if c.kind == "Attack" then self.DamageDealtThisTurn = (self.DamageDealtThisTurn or 0) + totalDamage end if c.block ~= nil then - self:AddCardBlock(c.block) + self:AddCardBlock(c.block + (self.HolyChargeCount or 0) * (c.blockPerHolyCharge or 0)) end if free ~= true then self:ApplyRelics("cardPlayed") end elseif c.kind == "Skill" then if c.block ~= nil then - self:AddCardBlock(c.block) + self:AddCardBlock(c.block + (self.HolyChargeCount or 0) * (c.blockPerHolyCharge or 0)) end elseif c.kind == "Power" then if free ~= true then @@ -815,11 +888,19 @@ if c.selfVuln ~= nil then self.PlayerVuln = self.PlayerVuln + c.selfVuln end if c.heal ~= nil then - self.PlayerHp = math.min(self.PlayerHp + c.heal, self.PlayerMaxHp) + local healAmount = c.heal + (self.HolyChargeCount or 0) * (c.healPerHolyCharge or 0) + self.PlayerHp = math.min(self.PlayerHp + healAmount, self.PlayerMaxHp) end if c.gainEnergy ~= nil and c.gainEnergy ~= 0 then self.Energy = self.Energy + c.gainEnergy end +if c.kind ~= "Attack" and c.comboGain ~= nil and c.comboGain > 0 then + self:GainCombo(c.comboGain) +end +if c.removePlayerDebuffs == true then + self.PlayerWeak = 0 + self.PlayerVuln = 0 +end if c.intangible ~= nil and c.intangible > 0 then self.PlayerIntangible = (self.PlayerIntangible or 0) + c.intangible end diff --git a/tools/deck/cb/render.mjs b/tools/deck/cb/render.mjs index cff777d..abf9ba0 100644 --- a/tools/deck/cb/render.mjs +++ b/tools/deck/cb/render.mjs @@ -80,7 +80,15 @@ if self.PlayerThorns ~= nil and self.PlayerThorns > 0 then if pb ~= "" then pb = pb .. " " end pb = pb .. "가시" .. tostring(self.PlayerThorns) end -if self.PlayerPowers ~= nil and #self.PlayerPowers > 0 then +if self.ComboCount ~= nil and self.ComboCount > 0 then + if pb ~= "" then pb = pb .. " " end + pb = pb .. "콤보 " .. tostring(self.ComboCount) .. "/" .. tostring(self:GetComboMax()) +end +if self.HolyChargeCount ~= nil and self.HolyChargeCount > 0 then + if pb ~= "" then pb = pb .. " " end + pb = pb .. "홀리 차지 " .. tostring(self.HolyChargeCount) .. "/" .. tostring(self:GetHolyChargeMax()) +end +if self.PlayerPowers ~= nil and #self.PlayerPowers > 0 then local names = {} for i = 1, #self.PlayerPowers do local pc = self.Cards[self.PlayerPowers[i]] diff --git a/tools/deck/cb/run.mjs b/tools/deck/cb/run.mjs index b688159..ffc3597 100644 --- a/tools/deck/cb/run.mjs +++ b/tools/deck/cb/run.mjs @@ -101,6 +101,9 @@ self.FightAttackCount = 0 self.TurnAttackCardsPlayed = 0 self.TurnDiscardedCards = 0 self.TurnCardsPlayedThisTurn = 0 +self.ComboCount = 0 +self.HolyChargeCount = 0 +self.DamagePowerStrengthUsed = false self.DamageDealtThisTurn = 0 self.DmgPopSeq = 0 self.FirstHpLossDone = false diff --git a/tools/deck/gen-slaydeck.mjs b/tools/deck/gen-slaydeck.mjs index 543bea9..0ab01af 100644 --- a/tools/deck/gen-slaydeck.mjs +++ b/tools/deck/gen-slaydeck.mjs @@ -147,6 +147,9 @@ function writeCodeblocks() { prop('number', 'FightAttackCount', '0'), prop('number', 'TurnAttackCardsPlayed', '0'), prop('number', 'TurnCardsPlayedThisTurn', '0'), + prop('number', 'ComboCount', '0'), + prop('number', 'HolyChargeCount', '0'), + prop('boolean', 'DamagePowerStrengthUsed', 'false'), prop('number', 'DamageDealtThisTurn', '0'), prop('number', 'TurnDiscardedCards', '0'), prop('boolean', 'FirstHpLossDone', 'false'), diff --git a/tools/deck/lib/data.mjs b/tools/deck/lib/data.mjs index 3a50e96..0333085 100644 --- a/tools/deck/lib/data.mjs +++ b/tools/deck/lib/data.mjs @@ -19,15 +19,15 @@ for (const cls of Object.keys(CLASSES)) { // 전직 옵션 const JOBS = { warrior: [ - { id: 'fighter', name: '파이터', desc: '연속 공격 계열\n이중 타격 · 난타\n악마의 형상', starter: 'TwinStrike', tier: 2, parent: 'warrior' }, - { id: 'page', name: '페이지', desc: '방어·운영 계열\n전투의 북소리 · 무적\n바리케이드', starter: 'DrumOfBattle', tier: 2, parent: 'warrior' }, + { id: 'fighter', name: '파이터', desc: '콤보와 다단 공격 특화\n공격으로 콤보를 쌓고\n추가타로 압박', starter: 'ComboAttack', tier: 2, parent: 'warrior' }, + { id: 'page', name: '페이지', desc: '홀리 포스와 방어 특화\n홀리 차지를 쌓아\n공격과 생존 강화', starter: 'HolyCharge', tier: 2, parent: 'warrior' }, { id: 'spearman', name: '스피어맨', desc: '광역·장기전 계열\n대화재 · 소용돌이\n불의 심장', starter: 'Conflagration', tier: 2, parent: 'warrior' }, ], fighter: [ - { id: 'crusader', name: '크루세이더', desc: '파이터의 3차 전직\n아이언클래드 공격 풀 계승\n전사 카드 사용', starter: '', tier: 3, parent: 'fighter' }, + { id: 'crusader', name: '크루세이더', desc: '파이터의 3차 전직\n콤보 상한과 연계 피해 강화\n파이터 카드 계승', starter: 'ComboSynergy', tier: 3, parent: 'fighter' }, ], page: [ - { id: 'knight', name: '나이트', desc: '페이지의 3차 전직\n아이언클래드 운영 풀 계승\n전사 카드 사용', starter: '', tier: 3, parent: 'page' }, + { id: 'knight', name: '나이트', desc: '페이지의 3차 전직\n홀리 차지를 공격·방어·회복으로 전환\n페이지 카드 계승', starter: 'DivineCharge', tier: 3, parent: 'page' }, ], spearman: [ { id: 'berserker', name: '버서커', desc: '스피어맨의 3차 전직\n아이언클래드 장기전 풀 계승\n전사 카드 사용', starter: '', tier: 3, parent: 'spearman' }, @@ -225,6 +225,9 @@ function luaCardsTable(cards) { const fields = [`name = ${luaStr(c.name)}`, `cost = ${c.cost}`, `desc = ${luaStr(c.desc)}`, `kind = ${luaStr(c.kind)}`]; if (c.damage != null) fields.push(`damage = ${c.damage}`); if (c.damageFromCurrentBlock != null) fields.push(`damageFromCurrentBlock = ${c.damageFromCurrentBlock}`); + if (c.damagePerCombo != null) fields.push(`damagePerCombo = ${c.damagePerCombo}`); + if (c.damagePerHolyCharge != null) fields.push(`damagePerHolyCharge = ${c.damagePerHolyCharge}`); + if (c.attackDamagePerCombo != null) fields.push(`attackDamagePerCombo = ${c.attackDamagePerCombo}`); if (c.damageNameMatch != null) fields.push(`damageNameMatch = ${luaStr(c.damageNameMatch)}`); if (c.damagePerOwnedNameMatch != null) fields.push(`damagePerOwnedNameMatch = ${c.damagePerOwnedNameMatch}`); if (c.damagePerOtherHandCard != null) fields.push(`damagePerOtherHandCard = ${c.damagePerOtherHandCard}`); @@ -235,6 +238,7 @@ function luaCardsTable(cards) { if (c.damagePerTurn != null) fields.push(`damagePerTurn = ${c.damagePerTurn}`); if (c.cardPlayedDamage != null) fields.push(`cardPlayedDamage = ${c.cardPlayedDamage}`); if (c.cardPlayedRandomDamage != null) fields.push(`cardPlayedRandomDamage = ${c.cardPlayedRandomDamage}`); + if (c.attackPlayedDamage != null) fields.push(`attackPlayedDamage = ${c.attackPlayedDamage}`); if (c.firstCardDamageBonus != null) fields.push(`firstCardDamageBonus = ${c.firstCardDamageBonus}`); if (c.rewardOnKill != null) fields.push(`rewardOnKill = ${c.rewardOnKill}`); if (c.maxHpOnKill != null) fields.push(`maxHpOnKill = ${c.maxHpOnKill}`); @@ -251,6 +255,14 @@ function luaCardsTable(cards) { if (c.dex != null) fields.push(`dex = ${c.dex}`); if (c.thorns != null) fields.push(`thorns = ${c.thorns}`); if (c.cardPlayedBlock != null) fields.push(`cardPlayedBlock = ${c.cardPlayedBlock}`); + if (c.comboOnAttack != null) fields.push(`comboOnAttack = ${c.comboOnAttack}`); + if (c.comboMax != null) fields.push(`comboMax = ${c.comboMax}`); + if (c.attackWeak != null) fields.push(`attackWeak = ${c.attackWeak}`); + if (c.holyChargeOnHolyForce != null) fields.push(`holyChargeOnHolyForce = ${c.holyChargeOnHolyForce}`); + if (c.holyChargeMax != null) fields.push(`holyChargeMax = ${c.holyChargeMax}`); + if (c.damageTakenReduction != null) fields.push(`damageTakenReduction = ${c.damageTakenReduction}`); + if (c.blockOnDamaged != null) fields.push(`blockOnDamaged = ${c.blockOnDamaged}`); + if (c.strengthOnDamagedOnce != null) fields.push(`strengthOnDamagedOnce = ${c.strengthOnDamagedOnce}`); if (c.drawOnExhaust != null) fields.push(`drawOnExhaust = ${c.drawOnExhaust}`); if (c.drawNameMatchAutoPlay != null) fields.push(`drawNameMatchAutoPlay = ${luaStr(c.drawNameMatchAutoPlay)}`); if (c.weak != null) fields.push(`weak = ${c.weak}`); @@ -280,7 +292,14 @@ function luaCardsTable(cards) { if (c.playTopDrawPileCount != null) fields.push(`playTopDrawPileCount = ${c.playTopDrawPileCount}`); if (c.playTopDrawPileCountPerEnergy != null) fields.push(`playTopDrawPileCountPerEnergy = ${c.playTopDrawPileCountPerEnergy}`); if (c.heal != null) fields.push(`heal = ${c.heal}`); + if (c.healPerHolyCharge != null) fields.push(`healPerHolyCharge = ${c.healPerHolyCharge}`); if (c.gainEnergy != null) fields.push(`gainEnergy = ${c.gainEnergy}`); + if (c.comboGain != null) fields.push(`comboGain = ${c.comboGain}`); + if (c.removePlayerDebuffs === true) fields.push('removePlayerDebuffs = true'); + if (c.holyForce === true) fields.push('holyForce = true'); + if (c.holyChargeGain != null) fields.push(`holyChargeGain = ${c.holyChargeGain}`); + if (c.blockPerHolyCharge != null) fields.push(`blockPerHolyCharge = ${c.blockPerHolyCharge}`); + if (c.holyChargeSpendAll === true) fields.push('holyChargeSpendAll = true'); if (c.poison != null) fields.push(`poison = ${c.poison}`); if (c.discard != null) fields.push(`discard = ${c.discard}`); if (c.discardAll === true) fields.push('discardAll = true'); diff --git a/tools/verify/cardkinds.mjs b/tools/verify/cardkinds.mjs index 1314e9b..b7405a8 100644 --- a/tools/verify/cardkinds.mjs +++ b/tools/verify/cardkinds.mjs @@ -17,6 +17,9 @@ const POWER_FIELDS = [ 'shivDamageBonus', 'firstShivDamageBonus', 'shivRetain', 'shivAoe', 'attackPoison', 'drawDamage', 'drawPoison', 'attackDamageVsWeakMultiplier', 'cardPlayedBlock', 'cardPlayedDamage', 'cardPlayedRandomDamage', + 'comboOnAttack', 'comboMax', 'attackDamagePerCombo', 'attackPlayedDamage', 'attackWeak', + 'holyChargeOnHolyForce', 'holyChargeMax', 'damageTakenReduction', + 'blockOnDamaged', 'strengthOnDamagedOnce', 'drawOnExhaust', 'drawNameMatchAutoPlay', 'extraPoisonTicks', 'poisonApplicationBurstEvery', 'poisonApplicationBurstDamage', 'skillSlyOnPlay', 'endTurnDexLoss',