diff --git a/RootDesk/MyDesk/SlayDeckController.codeblock b/RootDesk/MyDesk/SlayDeckController.codeblock index cdffecf..da38569 100644 --- a/RootDesk/MyDesk/SlayDeckController.codeblock +++ b/RootDesk/MyDesk/SlayDeckController.codeblock @@ -99,6 +99,34 @@ "Attributes": [], "Name": "DmgPopSeq" }, + { + "Type": "number", + "DefaultValue": "0", + "SyncDirection": 0, + "Attributes": [], + "Name": "CombatCameraShakeSeq" + }, + { + "Type": "any", + "DefaultValue": "nil", + "SyncDirection": 0, + "Attributes": [], + "Name": "DmgPopSlotQueue" + }, + { + "Type": "number", + "DefaultValue": "0", + "SyncDirection": 0, + "Attributes": [], + "Name": "PlayerDmgPopIndex" + }, + { + "Type": "any", + "DefaultValue": "nil", + "SyncDirection": 0, + "Attributes": [], + "Name": "HpBarOrigins" + }, { "Type": "any", "DefaultValue": "nil", @@ -372,6 +400,20 @@ "Attributes": [], "Name": "ClassDeckClass" }, + { + "Type": "string", + "DefaultValue": "\"\"", + "SyncDirection": 0, + "Attributes": [], + "Name": "GridHoverPath" + }, + { + "Type": "boolean", + "DefaultValue": "false", + "SyncDirection": 0, + "Attributes": [], + "Name": "GridScrollActive" + }, { "Type": "any", "DefaultValue": "nil", @@ -841,6 +883,13 @@ "Attributes": [], "Name": "ActiveKillReward" }, + { + "Type": "number", + "DefaultValue": "0", + "SyncDirection": 0, + "Attributes": [], + "Name": "ActiveKillMaxHpGain" + }, { "Type": "number", "DefaultValue": "0", @@ -869,6 +918,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", @@ -1057,6 +1127,13 @@ "SyncDirection": 0, "Attributes": [], "Name": "NextTurnAddCards" + }, + { + "Type": "any", + "DefaultValue": "nil", + "SyncDirection": 0, + "Attributes": [], + "Name": "ZeroCostCardIdsThisTurn" } ], "Methods": [ @@ -1069,7 +1146,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\tDefend = { name = \"아이언 바디\", cost = 1, desc = \"방어도 5\", kind = \"Skill\", block = 5, class = \"warrior\", rarity = \"normal\", image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tBash = { name = \"슬래시 블러스트\", cost = 2, desc = \"피해 10\", kind = \"Attack\", damage = 10, class = \"warrior\", rarity = \"normal\", fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tWarLeap = { name = \"워 리프\", cost = 1, desc = \"피해 4, 방어도 3\", kind = \"Attack\", damage = 4, block = 3, class = \"warrior\", rarity = \"normal\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tBrandish = { name = \"브랜디시\", cost = 2, desc = \"피해 13\", kind = \"Attack\", damage = 13, class = \"warrior\", rarity = \"unique\", fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tChargedBlow = { name = \"차지 블로우\", cost = 2, desc = \"피해 8, 취약 2\", kind = \"Attack\", damage = 8, firstCardDamageBonus = 2, vuln = 2, class = \"warrior\", rarity = \"unique\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tThreaten = { name = \"위협\", cost = 0, desc = \"약화 2 부여\", kind = \"Skill\", weak = 2, class = \"warrior\", rarity = \"normal\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tEnrage = { name = \"인레이지\", cost = 1, desc = \"힘 +2\", kind = \"Skill\", strength = 2, class = \"warrior\", rarity = \"unique\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tRage = { name = \"분노\", cost = 1, desc = \"모든 적에게 피해를 4 줍니다.\", kind = \"Attack\", damage = 4, class = \"warrior\", rarity = \"legend\", aoe = true, image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tComboAttack = { name = \"콤보 어택\", cost = 1, desc = \"피해 5 × 2회\", kind = \"Attack\", damage = 5, class = \"fighter\", rarity = \"unique\", hits = 2, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tBerserk = { name = \"버서크\", cost = 2, desc = \"매턴 에너지 +1, 취약 1 자가\", kind = \"Power\", powerEffect = \"energyPerTurn\", value = 1, class = \"fighter\", rarity = \"legend\", selfVuln = 1, image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tRisingAttack = { name = \"라이징 어택\", cost = 2, desc = \"피해 12\", kind = \"Attack\", damage = 12, class = \"fighter\", rarity = \"unique\", fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"115e309771604743853abad2d8d186bc\" },\n\tThunderCharge = { name = \"썬더 차지\", cost = 1, desc = \"피해 7, 약화 1\", kind = \"Attack\", damage = 7, weak = 1, class = \"page\", rarity = \"unique\", fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tBlizzardCharge = { name = \"블리자드 차지\", cost = 1, desc = \"피해 7, 취약 1\", kind = \"Attack\", damage = 7, vuln = 1, class = \"page\", rarity = \"unique\", fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tPowerGuard = { name = \"파워 가드\", cost = 1, desc = \"방어도 10\", kind = \"Skill\", block = 10, class = \"page\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tPierce = { name = \"피어스\", cost = 1, desc = \"피해 9, 방어 무시\", kind = \"Attack\", damage = 9, class = \"spearman\", rarity = \"unique\", pierce = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tIronWall = { name = \"아이언 월\", cost = 2, desc = \"방어도 12\", kind = \"Skill\", block = 12, class = \"spearman\", rarity = \"unique\", image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tHyperBody = { name = \"하이퍼 바디\", cost = 1, desc = \"매턴 방어도 +3\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 3, class = \"spearman\", rarity = \"legend\", image = \"b4020dbadee6401f9893a020fe4154b1\" },\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 = \"crusader\", 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 = \"page\", rarity = \"unique\", attackDamageVsWeakMultiplier = 2, fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tPillage = { name = \"전리품 확보\", cost = 1, desc = \"피해 6, 카드 2장 뽑기\", kind = \"Attack\", damage = 6, class = \"fighter\", rarity = \"unique\", draw = 2, fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tRampage = { name = \"거듭된 맹공\", cost = 2, desc = \"피해 12. 사용할 때마다 이번 전투에서 비용 1 감소\", kind = \"Attack\", damage = 12, class = \"fighter\", rarity = \"unique\", combatCostReductionOnPlay = 1, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tAshenStrike = { name = \"누적 타격\", cost = 1, desc = \"피해 6. 이번 전투에서 뽑은 카드마다 피해 +1\", kind = \"Attack\", damage = 6, damagePerCardDrawnThisCombat = 1, class = \"fighter\", rarity = \"unique\", fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tDismantle = { name = \"갑주 가르기\", cost = 1, desc = \"피해 8 x 2회\", kind = \"Attack\", damage = 8, class = \"fighter\", rarity = \"unique\", hits = 2, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"115e309771604743853abad2d8d186bc\" },\n\tHemokinesis = { name = \"혼신의 일격\", cost = 1, desc = \"피해 15\", kind = \"Attack\", damage = 15, class = \"fighter\", rarity = \"unique\", fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tFightMe = { name = \"결투 신청\", cost = 2, desc = \"피해 5 x 2회, 힘 +3\", kind = \"Attack\", damage = 5, strength = 3, class = \"fighter\", rarity = \"unique\", hits = 2, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tUnrelenting = { name = \"진격의 일격\", cost = 2, desc = \"피해 14, 에너지 +1\", kind = \"Attack\", damage = 14, class = \"fighter\", 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 = \"fighter\", rarity = \"unique\", fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tBludgeon = { name = \"대검 강타\", cost = 3, desc = \"피해 32\", kind = \"Attack\", damage = 32, class = \"crusader\", rarity = \"unique\", fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tHowlFromBeyond = { name = \"전장의 포효\", cost = 3, desc = \"모든 적에게 피해 16. 소멸.\", kind = \"Attack\", damage = 16, class = \"crusader\", 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 = \"crusader\", 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 = \"page\", rarity = \"unique\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tSecondWind = { name = \"기사회생\", cost = 1, desc = \"손의 공격이 아닌 모든 카드를 소멸시키고, 소멸시킨 카드마다 방어도 5\", kind = \"Skill\", class = \"page\", 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 = \"fighter\", rarity = \"unique\", draw = 3, discard = 1, image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tEvilEye = { name = \"빈틈없는 방어\", cost = 1, desc = \"방어도 16\", kind = \"Skill\", block = 16, class = \"page\", 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 = \"page\", 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 = \"page\", rarity = \"unique\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tStoneArmor = { name = \"강철 갑옷\", cost = 1, desc = \"매턴 방어도 +4\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 4, class = \"page\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tFeelNoPain = { name = \"고통 인내\", cost = 1, desc = \"매턴 방어도 +3\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 3, class = \"page\", rarity = \"unique\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tInflame = { name = \"발화\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"fighter\", 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 = \"fighter\", rarity = \"unique\", image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tRupture = { name = \"파열\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"fighter\", 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 = \"fighter\", rarity = \"unique\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tPactsEnd = { name = \"최후의 일격\", cost = 0, desc = \"뽑을 카드 더미가 비었을 때 모든 적에게 피해 17\", kind = \"Attack\", damage = 17, class = \"knight\", 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 = \"crusader\", rarity = \"legend\", hits = 2, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tConflagration = { name = \"대화재\", cost = 1, desc = \"모든 적에게 피해 2 x 4회\", kind = \"Attack\", damage = 2, class = \"crusader\", 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 = \"knight\", rarity = \"legend\", exhaust = true, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tTearAsunder = { name = \"삼연참\", cost = 2, desc = \"피해 5 x 3회\", kind = \"Attack\", damage = 5, class = \"crusader\", rarity = \"legend\", hits = 3, fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tFiendFire = { name = \"최후의 패\", cost = 2, desc = \"손의 다른 카드마다 피해 +7 후 모두 버리기. 소멸.\", kind = \"Attack\", damage = 0, damagePerOtherHandCard = 7, class = \"crusader\", rarity = \"legend\", discardAll = true, exhaust = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tMangle = { name = \"공포의 일격\", cost = 3, desc = \"피해 15. 이번 턴 적 힘 -10\", kind = \"Attack\", damage = 15, class = \"knight\", 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 = \"knight\", rarity = \"legend\", handCostZeroThisTurn = true, image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tOffering = { name = \"전력 방출\", cost = 0, desc = \"에너지 +2, 카드 3장 뽑기. 소멸.\", kind = \"Skill\", class = \"crusader\", 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 = \"knight\", rarity = \"legend\", exhaustHandAll = true, drawPerExhausted = 1, exhaust = true, image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tImpervious = { name = \"무적\", cost = 2, desc = \"방어도 30. 소멸.\", kind = \"Skill\", block = 30, class = \"knight\", rarity = \"legend\", exhaust = true, image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tNotYet = { name = \"불굴\", cost = 2, desc = \"HP 10 회복. 소멸.\", kind = \"Skill\", class = \"knight\", 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 = \"knight\", rarity = \"legend\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tPyre = { name = \"불의 심장\", cost = 2, desc = \"매턴 에너지 +1\", kind = \"Power\", powerEffect = \"energyPerTurn\", value = 1, class = \"knight\", rarity = \"legend\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tDarkEmbrace = { name = \"소멸의 숙련\", cost = 2, desc = \"카드가 소멸될 때마다 카드 1장 뽑기\", kind = \"Power\", drawOnExhaust = 1, class = \"knight\", rarity = \"legend\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tUnmovable = { name = \"요지부동\", cost = 2, desc = \"이번 전투 동안 방어도 획득량 2배\", kind = \"Power\", blockGainMultiplier = 2, powerEffect = \"blockPerTurn\", value = 0, class = \"knight\", rarity = \"legend\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tJuggernaut = { name = \"검격 파동\", cost = 2, desc = \"카드를 사용할 때마다 무작위 적에게 피해 5\", kind = \"Power\", cardPlayedRandomDamage = 5, class = \"knight\", 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 = \"knight\", rarity = \"legend\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tDemonForm = { name = \"전신 투지\", cost = 3, desc = \"매턴 힘 +2\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 2, class = \"crusader\", 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 = 0, desc = \"공격마다 콤보 1 획득. 모든 공격이 콤보 2당 피해 +1. 최대 5\", kind = \"Power\", attackDamagePerCombo = 0.5, 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 = 1, 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 = 2, 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 = 1, desc = \"콤보 2 획득. 공격마다 콤보 1 획득. 모든 공격이 콤보 2당 피해 +1. 최대 5\", kind = \"Power\", attackDamagePerCombo = 0.5, comboOnAttack = 1, comboMax = 5, class = \"crusader\", rarity = \"legend\", comboGain = 2, 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 = \"콤보 2 획득. 약화 상태인 적에게 주는 공격 피해 1.5배\", kind = \"Power\", class = \"crusader\", rarity = \"unique\", comboGain = 2, 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 = \"매턴 방어도 3\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 3, 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 = 1, desc = \"모든 적에게 피해 3 x 4회, 약화 1. 홀리 차지당 피해 +1. 홀리 포스.\", kind = \"Attack\", damage = 3, damagePerHolyCharge = 1, weak = 1, class = \"knight\", rarity = \"unique\", hits = 4, holyForce = true, affectsAllEnemies = true, aoe = true, image = \"863812c5c2f84132ac7465b50ec2283e\" },\n\tRestoration = { name = \"리스토네이션\", cost = 0, desc = \"HP 6 회복. 홀리 차지당 추가로 4 회복한 뒤 모두 소비\", kind = \"Skill\", class = \"knight\", rarity = \"unique\", heal = 6, 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 = 3, desc = \"힘 1. 가시 3. 카드를 사용할 때마다 방어도 1\", kind = \"Power\", strength = 1, thorns = 3, cardPlayedBlock = 1, class = \"knight\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tCombatOrders = { name = \"컴뱃 오더스\", cost = 1, desc = \"다음 스킬을 1회 추가 발동. 턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", class = \"knight\", rarity = \"legend\", turnStartDraw = 1, nextSkillRepeatCount = 1, image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tKnightShieldMastery = { name = \"실드 마스터리\", cost = 2, desc = \"매턴 방어도 4. 가시 1\", kind = \"Power\", thorns = 1, powerEffect = \"blockPerTurn\", value = 4, 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 = 1, 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 = \"방어도 4를 얻습니다. 카드를 2장 뽑고 1장 버립니다. 표창 1장을 손에 넣습니다.\", kind = \"Skill\", block = 4, 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 = 1, 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 = 1, 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": [], @@ -1348,7 +1425,7 @@ "Name": null }, "Arguments": [], - "Code": "self.SelectedClass = \"\"\nself:RenderAscension()\nself:ShowState(\"menu\")\nself:SetText(\"/ui/DefaultGroup/MainMenu/Title\", \"메이플 덱 어드벤처\")\nself:SetText(\"/ui/DefaultGroup/MainMenu/Subtitle\", \"캐릭터를 고르고 덱을 만들어 모험을 시작하세요\")\nself:SetText(\"/ui/DefaultGroup/MainMenu/NewGameButton\", \"새 게임\")\nself:BindMenuButtons()", + "Code": "self.SelectedClass = \"\"\nself:RenderAscension()\nself:ShowState(\"menu\")\nself:SetText(\"/ui/DefaultGroup/MainMenu/Title\", \"Maple Deck Adventure\")\nself:SetText(\"/ui/DefaultGroup/MainMenu/Subtitle\", \"Choose your character and begin your run\")\nself:SetText(\"/ui/DefaultGroup/MainMenu/NewGameButton\", \"New Game\")\nself:BindMenuButtons()", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -1393,7 +1470,7 @@ "Name": null }, "Arguments": [], - "Code": "local soulPoints = self.SoulPoints or 0\nself:SetText(\"/ui/LobbyUIGroup/LobbyHud/SoulLabel\", \"영혼 \" .. string.format(\"%d\", soulPoints))\nself:SetText(\"/ui/LobbyUIGroup/SoulShopHud/Souls\", \"영혼 \" .. string.format(\"%d\", soulPoints))", + "Code": "local soulPoints = self.SoulPoints or 0\nself:SetText(\"/ui/LobbyUIGroup/LobbyHud/SoulLabel\", \"Soul \" .. string.format(\"%d\", soulPoints))\nself:SetText(\"/ui/LobbyUIGroup/SoulShopHud/Souls\", \"Soul \" .. string.format(\"%d\", soulPoints))", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -1408,7 +1485,7 @@ "Name": null }, "Arguments": [], - "Code": "if self.LobbyBound == true then\n\treturn\nend\nself.LobbyBound = true\nlocal function bindClick(path, handler)\n\tlocal entity = _EntityService:GetEntityByPath(path)\n\tif entity ~= nil and (entity.ButtonComponent ~= nil or entity:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\tentity:ConnectEvent(ButtonClickEvent, handler)\n\tend\nend\nbindClick(\"/ui/LobbyUIGroup/LobbyHud/AscMinus\", function() self:AdjustAscension(-1) end)\nbindClick(\"/ui/LobbyUIGroup/LobbyHud/AscPlus\", function() self:AdjustAscension(1) end)\nbindClick(\"/ui/LobbyUIGroup/BoardHud/Close\", function() self:CloseBoard() end)\nbindClick(\"/ui/LobbyUIGroup/SoulShopHud/Close\", function() self:CloseSoulShop() end)", + "Code": "if self.LobbyBound == true then\n\treturn\nend\nself.LobbyBound = true\nlocal ascMinus = _EntityService:GetEntityByPath(\"/ui/LobbyUIGroup/LobbyHud/AscMinus\")\nif ascMinus ~= nil and (ascMinus.ButtonComponent ~= nil or ascMinus:AddComponent(\"ButtonComponent\") ~= nil) then\n\tascMinus:ConnectEvent(ButtonClickEvent, function() self:AdjustAscension(-1) end)\nend\nlocal ascPlus = _EntityService:GetEntityByPath(\"/ui/LobbyUIGroup/LobbyHud/AscPlus\")\nif ascPlus ~= nil and (ascPlus.ButtonComponent ~= nil or ascPlus:AddComponent(\"ButtonComponent\") ~= nil) then\n\tascPlus:ConnectEvent(ButtonClickEvent, function() self:AdjustAscension(1) end)\nend\nlocal boardClose = _EntityService:GetEntityByPath(\"/ui/LobbyUIGroup/BoardHud/Close\")\nif boardClose ~= nil and (boardClose.ButtonComponent ~= nil or boardClose:AddComponent(\"ButtonComponent\") ~= nil) then\n\tboardClose:ConnectEvent(ButtonClickEvent, function() self:CloseBoard() end)\nend\nlocal soulClose = _EntityService:GetEntityByPath(\"/ui/LobbyUIGroup/SoulShopHud/Close\")\nif soulClose ~= nil and (soulClose.ButtonComponent ~= nil or soulClose:AddComponent(\"ButtonComponent\") ~= nil) then\n\tsoulClose:ConnectEvent(ButtonClickEvent, function() self:CloseSoulShop() end)\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -1694,7 +1771,7 @@ "Name": "slot" } ], - "Code": "local d = nil\nif self.SoulShopDef ~= nil then d = self.SoulShopDef[slot] end\nif d == nil then return end\nif self.SoulUnlocks ~= nil and self.SoulUnlocks[d.key] == true then\n\tself:Toast(\"이미 보유 중입니다\")\n\treturn\nend\nif (self.SoulPoints or 0) < d.cost then\n\tself:Toast(\"영혼이 부족합니다\")\n\treturn\nend\nself.SoulPoints = self.SoulPoints - d.cost\nif self.SoulUnlocks == nil then self.SoulUnlocks = {} end\nself.SoulUnlocks[d.key] = true\nlocal lp = _UserService.LocalPlayer\nif lp ~= nil then\n\tself:SaveSouls(self.SoulPoints, self:SerializeUnlocks(), lp.PlayerComponent.UserId)\nend\nself:Toast(d.name .. \" 해금!\")\nself:RenderSoulLabel()\nself:RenderSoulShop()", + "Code": "local d = nil\nif self.SoulShopDef ~= nil then\n\td = self.SoulShopDef[slot]\nend\nif d == nil then\n\treturn\nend\nlocal unlockKey = d.key\nlocal unlockCost = d.cost\nlocal unlockName = d.name or \"Unlock\"\nif unlockKey == nil or unlockCost == nil then\n\treturn\nend\nif self.SoulUnlocks ~= nil and self.SoulUnlocks[unlockKey] == true then\n\tself:Toast(\"Already owned\")\n\treturn\nend\nif (self.SoulPoints or 0) < unlockCost then\n\tself:Toast(\"Not enough soul\")\n\treturn\nend\nself.SoulPoints = self.SoulPoints - unlockCost\nif self.SoulUnlocks == nil then\n\tself.SoulUnlocks = {}\nend\nself.SoulUnlocks[unlockKey] = true\nlocal lp = _UserService.LocalPlayer\nif lp ~= nil then\n\tself:SaveSouls(self.SoulPoints, self:SerializeUnlocks(), lp.PlayerComponent.UserId)\nend\nself:Toast(unlockName .. \" unlocked\")\nself:RenderSoulLabel()\nself:RenderSoulShop()", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -1709,7 +1786,7 @@ "Name": null }, "Arguments": [], - "Code": "local defs = self.SoulShopDef or {}\nfor i = 1, 4 do\n\tlocal base = \"/ui/LobbyUIGroup/SoulShopHud/Item\" .. tostring(i)\n\tlocal d = defs[i]\n\tif d == nil then\n\t\tself:SetEntityEnabled(base, false)\n\telse\n\t\tself:SetEntityEnabled(base, true)\n\t\tself:SetText(base .. \"/Name\", d.name)\n\t\tself:SetText(base .. \"/Desc\", d.desc)\n\t\tlocal owned = self.SoulUnlocks ~= nil and self.SoulUnlocks[d.key] == true\n\t\tif owned then\n\t\t\tself:SetText(base .. \"/Status\", \"보유 중\")\n\t\telseif (self.SoulPoints or 0) >= d.cost then\n\t\t\tself:SetText(base .. \"/Status\", tostring(d.cost) .. \" 영혼 · 구매\")\n\t\telse\n\t\t\tself:SetText(base .. \"/Status\", tostring(d.cost) .. \" 영혼 · 부족\")\n\t\tend\n\tend\nend", + "Code": "local defs = self.SoulShopDef or {}\nfor i = 1, 4 do\n\tlocal base = \"/ui/LobbyUIGroup/SoulShopHud/Item\" .. self:IntStr(i)\n\tlocal d = defs[i]\n\tif d == nil then\n\t\tself:SetEntityEnabled(base, false)\n\telse\n\t\tlocal itemName = d.name or \"Unlock\"\n\t\tlocal itemDesc = d.desc or \"\"\n\t\tlocal itemKey = d.key\n\t\tlocal itemCost = d.cost or 0\n\t\tself:SetEntityEnabled(base, true)\n\t\tself:SetText(base .. \"/Name\", itemName)\n\t\tself:SetText(base .. \"/Desc\", itemDesc)\n\t\tlocal owned = itemKey ~= nil and self.SoulUnlocks ~= nil and self.SoulUnlocks[itemKey] == true\n\t\tif owned then\n\t\t\tself:SetText(base .. \"/Status\", \"Owned\")\n\t\telseif (self.SoulPoints or 0) >= itemCost then\n\t\t\tself:SetText(base .. \"/Status\", tostring(itemCost) .. \" soul · buy\")\n\t\telse\n\t\t\tself:SetText(base .. \"/Status\", tostring(itemCost) .. \" soul · low\")\n\t\tend\n\tend\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -1724,7 +1801,7 @@ "Name": null }, "Arguments": [], - "Code": "if self.SoulShopBound == true then\n\treturn\nend\nself.SoulShopBound = true\nfor i = 1, 4 do\n\tlocal idx = i\n\tlocal e = _EntityService:GetEntityByPath(\"/ui/LobbyUIGroup/SoulShopHud/Item\" .. tostring(i))\n\tif e ~= nil and (e.ButtonComponent ~= nil or e:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\te:ConnectEvent(ButtonClickEvent, function() self:BuySoulUnlock(idx) end)\n\tend\nend", + "Code": "if self.SoulShopBound == true then\n\treturn\nend\nself.SoulShopBound = true\nfor i = 1, 4 do\n\tlocal idx = i\n\tlocal e = _EntityService:GetEntityByPath(\"/ui/LobbyUIGroup/SoulShopHud/Item\" .. self:IntStr(i))\n\tif e ~= nil and (e.ButtonComponent ~= nil or e:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\te:ConnectEvent(ButtonClickEvent, function() self:BuySoulUnlock(idx) end)\n\tend\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -1843,6 +1920,29 @@ "Attributes": [], "Name": "SetEntityEnabled" }, + { + "Return": { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "n" + } + ], + "Code": "return string.format(\"%d\", math.floor((n or 0) + 0.00001))", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "IntStr" + }, { "Return": { "Type": "void", @@ -1852,7 +1952,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 = \"ComboAttack\", tier = 2, parent = \"warrior\" },\n\t\t{ id = \"page\", name = \"페이지\", desc = \"속성 차지 특화\\n썬더/블리자드 차지\\n파워 가드\", starter = \"ThunderCharge\", tier = 2, parent = \"warrior\" },\n\t\t{ id = \"spearman\", name = \"스피어맨\", desc = \"방어·관통 특화\\n피어스 · 아이언 월\\n하이퍼 바디\", starter = \"Pierce\", tier = 2, parent = \"warrior\" },\n\t},\n\tfighter = {\n\t\t{ id = \"crusader\", name = \"크루세이더\", desc = \"Fighter의 3차 전직\\n콤보 압박과 화력 심화\\n파이터 카드 계승\", starter = \"\", tier = 3, parent = \"fighter\" },\n\t},\n\tpage = {\n\t\t{ id = \"knight\", name = \"나이트\", desc = \"Page의 3차 전직\\n방어와 차지 운영 심화\\n페이지 카드 계승\", starter = \"\", tier = 3, parent = \"page\" },\n\t},\n\tspearman = {\n\t\t{ id = \"berserker\", name = \"버서커\", desc = \"Spearman의 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 = \"ThunderCharge\", tier = 2, parent = \"warrior\", sourceClass = \"warrior\" },\n\tspearman = { name = \"스피어맨\", starter = \"Pierce\", 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\", \"LuckySeven\", \"SilentDefend\", \"SilentDefend\", \"SilentDefend\", \"SilentDefend\", \"NimbleBody\", \"Neutralize\", \"Survivor\" }\nelse\n\tself.PlayerMaxHp = 80\n\tself.RunDeck = { \"Strike\", \"Strike\", \"Strike\", \"Strike\", \"SlashBlast\", \"Defend\", \"Defend\", \"Defend\", \"IronBody\", \"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": [], @@ -1882,7 +1982,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.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.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\tDefend = { name = \"아이언 바디\", cost = 1, desc = \"방어도 5\", kind = \"Skill\", block = 5, class = \"warrior\", rarity = \"normal\", image = \"7648c3b8e1ca44fc8ec353561207a670\" },\n\tBash = { name = \"슬래시 블러스트\", cost = 2, desc = \"피해 10\", kind = \"Attack\", damage = 10, class = \"warrior\", rarity = \"normal\", fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"4cbbe8cfc3e840e4a76379498d8eb012\" },\n\tWarLeap = { name = \"워 리프\", cost = 1, desc = \"피해 4, 방어도 3\", kind = \"Attack\", damage = 4, block = 3, class = \"warrior\", rarity = \"normal\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tBrandish = { name = \"브랜디시\", cost = 2, desc = \"피해 13\", kind = \"Attack\", damage = 13, class = \"warrior\", rarity = \"unique\", fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tChargedBlow = { name = \"차지 블로우\", cost = 2, desc = \"피해 8, 취약 2\", kind = \"Attack\", damage = 8, firstCardDamageBonus = 2, vuln = 2, class = \"warrior\", rarity = \"unique\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tThreaten = { name = \"위협\", cost = 0, desc = \"약화 2 부여\", kind = \"Skill\", weak = 2, class = \"warrior\", rarity = \"normal\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tEnrage = { name = \"인레이지\", cost = 1, desc = \"힘 +2\", kind = \"Skill\", strength = 2, class = \"warrior\", rarity = \"unique\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tRage = { name = \"분노\", cost = 1, desc = \"모든 적에게 피해를 4 줍니다.\", kind = \"Attack\", damage = 4, class = \"warrior\", rarity = \"legend\", aoe = true, image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tComboAttack = { name = \"콤보 어택\", cost = 1, desc = \"피해 5 × 2회\", kind = \"Attack\", damage = 5, class = \"fighter\", rarity = \"unique\", hits = 2, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tBerserk = { name = \"버서크\", cost = 2, desc = \"매턴 에너지 +1, 취약 1 자가\", kind = \"Power\", powerEffect = \"energyPerTurn\", value = 1, class = \"fighter\", rarity = \"legend\", selfVuln = 1, image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tRisingAttack = { name = \"라이징 어택\", cost = 2, desc = \"피해 12\", kind = \"Attack\", damage = 12, class = \"fighter\", rarity = \"unique\", fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"115e309771604743853abad2d8d186bc\" },\n\tThunderCharge = { name = \"썬더 차지\", cost = 1, desc = \"피해 7, 약화 1\", kind = \"Attack\", damage = 7, weak = 1, class = \"page\", rarity = \"unique\", fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tBlizzardCharge = { name = \"블리자드 차지\", cost = 1, desc = \"피해 7, 취약 1\", kind = \"Attack\", damage = 7, vuln = 1, class = \"page\", rarity = \"unique\", fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tPowerGuard = { name = \"파워 가드\", cost = 1, desc = \"방어도 10\", kind = \"Skill\", block = 10, class = \"page\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tPierce = { name = \"피어스\", cost = 1, desc = \"피해 9, 방어 무시\", kind = \"Attack\", damage = 9, class = \"spearman\", rarity = \"unique\", pierce = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tIronWall = { name = \"아이언 월\", cost = 2, desc = \"방어도 12\", kind = \"Skill\", block = 12, class = \"spearman\", rarity = \"unique\", image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tHyperBody = { name = \"하이퍼 바디\", cost = 1, desc = \"매턴 방어도 +3\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 3, class = \"spearman\", rarity = \"legend\", image = \"b4020dbadee6401f9893a020fe4154b1\" },\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/ToolTipGroup/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.CombatCameraShakeSeq = 0\nself.DmgPopSlotQueue = {}\nself.PlayerDmgPopIndex = 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 = \"crusader\", 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 = \"page\", rarity = \"unique\", attackDamageVsWeakMultiplier = 2, fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tPillage = { name = \"전리품 확보\", cost = 1, desc = \"피해 6, 카드 2장 뽑기\", kind = \"Attack\", damage = 6, class = \"fighter\", rarity = \"unique\", draw = 2, fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tRampage = { name = \"거듭된 맹공\", cost = 2, desc = \"피해 12. 사용할 때마다 이번 전투에서 비용 1 감소\", kind = \"Attack\", damage = 12, class = \"fighter\", rarity = \"unique\", combatCostReductionOnPlay = 1, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tAshenStrike = { name = \"누적 타격\", cost = 1, desc = \"피해 6. 이번 전투에서 뽑은 카드마다 피해 +1\", kind = \"Attack\", damage = 6, damagePerCardDrawnThisCombat = 1, class = \"fighter\", rarity = \"unique\", fx = \"6f283d96d5804b4fb88009685a11c1f8\", image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tDismantle = { name = \"갑주 가르기\", cost = 1, desc = \"피해 8 x 2회\", kind = \"Attack\", damage = 8, class = \"fighter\", rarity = \"unique\", hits = 2, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"115e309771604743853abad2d8d186bc\" },\n\tHemokinesis = { name = \"혼신의 일격\", cost = 1, desc = \"피해 15\", kind = \"Attack\", damage = 15, class = \"fighter\", rarity = \"unique\", fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"b7030d8caedc4fbc9f38fe1e541d6e6b\" },\n\tFightMe = { name = \"결투 신청\", cost = 2, desc = \"피해 5 x 2회, 힘 +3\", kind = \"Attack\", damage = 5, strength = 3, class = \"fighter\", rarity = \"unique\", hits = 2, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tUnrelenting = { name = \"진격의 일격\", cost = 2, desc = \"피해 14, 에너지 +1\", kind = \"Attack\", damage = 14, class = \"fighter\", 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 = \"fighter\", rarity = \"unique\", fx = \"863812c5c2f84132ac7465b50ec2283e\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tBludgeon = { name = \"대검 강타\", cost = 3, desc = \"피해 32\", kind = \"Attack\", damage = 32, class = \"crusader\", rarity = \"unique\", fx = \"e8a145a6c43d493f9ad50fab03b200aa\", image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tHowlFromBeyond = { name = \"전장의 포효\", cost = 3, desc = \"모든 적에게 피해 16. 소멸.\", kind = \"Attack\", damage = 16, class = \"crusader\", 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 = \"crusader\", 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 = \"page\", rarity = \"unique\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tSecondWind = { name = \"기사회생\", cost = 1, desc = \"손의 공격이 아닌 모든 카드를 소멸시키고, 소멸시킨 카드마다 방어도 5\", kind = \"Skill\", class = \"page\", 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 = \"fighter\", rarity = \"unique\", draw = 3, discard = 1, image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tEvilEye = { name = \"빈틈없는 방어\", cost = 1, desc = \"방어도 16\", kind = \"Skill\", block = 16, class = \"page\", 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 = \"page\", 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 = \"page\", rarity = \"unique\", image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tStoneArmor = { name = \"강철 갑옷\", cost = 1, desc = \"매턴 방어도 +4\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 4, class = \"page\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tFeelNoPain = { name = \"고통 인내\", cost = 1, desc = \"매턴 방어도 +3\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 3, class = \"page\", rarity = \"unique\", image = \"251b6e12329048429490049a4f3cf564\" },\n\tInflame = { name = \"발화\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"fighter\", 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 = \"fighter\", rarity = \"unique\", image = \"e4acdf27d68549db8858d6082169c70c\" },\n\tRupture = { name = \"파열\", cost = 1, desc = \"매턴 힘 +1\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 1, class = \"fighter\", 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 = \"fighter\", rarity = \"unique\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tPactsEnd = { name = \"최후의 일격\", cost = 0, desc = \"뽑을 카드 더미가 비었을 때 모든 적에게 피해 17\", kind = \"Attack\", damage = 17, class = \"knight\", 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 = \"crusader\", rarity = \"legend\", hits = 2, fx = \"48754be05be344358cddd55aa8fe11f4\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tConflagration = { name = \"대화재\", cost = 1, desc = \"모든 적에게 피해 2 x 4회\", kind = \"Attack\", damage = 2, class = \"crusader\", 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 = \"knight\", rarity = \"legend\", exhaust = true, fx = \"997fa6999aa04dbb97a1dd99025fa2ba\", image = \"09370fc7551e47238fd103a80fba558e\" },\n\tTearAsunder = { name = \"삼연참\", cost = 2, desc = \"피해 5 x 3회\", kind = \"Attack\", damage = 5, class = \"crusader\", rarity = \"legend\", hits = 3, fx = \"2799562e984c4a4da3b73e1f3431057c\", image = \"379d86e3de064959aa4612f71e84ccfb\" },\n\tFiendFire = { name = \"최후의 패\", cost = 2, desc = \"손의 다른 카드마다 피해 +7 후 모두 버리기. 소멸.\", kind = \"Attack\", damage = 0, damagePerOtherHandCard = 7, class = \"crusader\", rarity = \"legend\", discardAll = true, exhaust = true, fx = \"1b0afc410a1a458598eb7ca2fb26e97d\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tMangle = { name = \"공포의 일격\", cost = 3, desc = \"피해 15. 이번 턴 적 힘 -10\", kind = \"Attack\", damage = 15, class = \"knight\", 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 = \"knight\", rarity = \"legend\", handCostZeroThisTurn = true, image = \"9aac955d159f49c1bc913ef96128e781\" },\n\tOffering = { name = \"전력 방출\", cost = 0, desc = \"에너지 +2, 카드 3장 뽑기. 소멸.\", kind = \"Skill\", class = \"crusader\", 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 = \"knight\", rarity = \"legend\", exhaustHandAll = true, drawPerExhausted = 1, exhaust = true, image = \"92021d62341a4bce9cfd09d1b4b865db\" },\n\tImpervious = { name = \"무적\", cost = 2, desc = \"방어도 30. 소멸.\", kind = \"Skill\", block = 30, class = \"knight\", rarity = \"legend\", exhaust = true, image = \"b4020dbadee6401f9893a020fe4154b1\" },\n\tNotYet = { name = \"불굴\", cost = 2, desc = \"HP 10 회복. 소멸.\", kind = \"Skill\", class = \"knight\", 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 = \"knight\", rarity = \"legend\", image = \"992dabf6aff2400e92b2f4f705d8ebe7\" },\n\tPyre = { name = \"불의 심장\", cost = 2, desc = \"매턴 에너지 +1\", kind = \"Power\", powerEffect = \"energyPerTurn\", value = 1, class = \"knight\", rarity = \"legend\", image = \"21af4bccc5054a5dbc8245dfa7f08681\" },\n\tDarkEmbrace = { name = \"소멸의 숙련\", cost = 2, desc = \"카드가 소멸될 때마다 카드 1장 뽑기\", kind = \"Power\", drawOnExhaust = 1, class = \"knight\", rarity = \"legend\", image = \"fe83c7635b0e49ed83d75a2833adb53e\" },\n\tUnmovable = { name = \"요지부동\", cost = 2, desc = \"이번 전투 동안 방어도 획득량 2배\", kind = \"Power\", blockGainMultiplier = 2, powerEffect = \"blockPerTurn\", value = 0, class = \"knight\", rarity = \"legend\", image = \"64daadf1a98e490d9c14ef52ec776e63\" },\n\tJuggernaut = { name = \"검격 파동\", cost = 2, desc = \"카드를 사용할 때마다 무작위 적에게 피해 5\", kind = \"Power\", cardPlayedRandomDamage = 5, class = \"knight\", 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 = \"knight\", rarity = \"legend\", image = \"1bc3e52b330648faae9eafd5a205e37b\" },\n\tDemonForm = { name = \"전신 투지\", cost = 3, desc = \"매턴 힘 +2\", kind = \"Power\", powerEffect = \"strengthPerTurn\", value = 2, class = \"crusader\", 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 = 0, desc = \"공격마다 콤보 1 획득. 모든 공격이 콤보 2당 피해 +1. 최대 5\", kind = \"Power\", attackDamagePerCombo = 0.5, 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 = 1, 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 = 2, 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 = 1, desc = \"콤보 2 획득. 공격마다 콤보 1 획득. 모든 공격이 콤보 2당 피해 +1. 최대 5\", kind = \"Power\", attackDamagePerCombo = 0.5, comboOnAttack = 1, comboMax = 5, class = \"crusader\", rarity = \"legend\", comboGain = 2, 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 = \"콤보 2 획득. 약화 상태인 적에게 주는 공격 피해 1.5배\", kind = \"Power\", class = \"crusader\", rarity = \"unique\", comboGain = 2, 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 = \"매턴 방어도 3\", kind = \"Power\", powerEffect = \"blockPerTurn\", value = 3, 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 = 1, desc = \"모든 적에게 피해 3 x 4회, 약화 1. 홀리 차지당 피해 +1. 홀리 포스.\", kind = \"Attack\", damage = 3, damagePerHolyCharge = 1, weak = 1, class = \"knight\", rarity = \"unique\", hits = 4, holyForce = true, affectsAllEnemies = true, aoe = true, image = \"863812c5c2f84132ac7465b50ec2283e\" },\n\tRestoration = { name = \"리스토네이션\", cost = 0, desc = \"HP 6 회복. 홀리 차지당 추가로 4 회복한 뒤 모두 소비\", kind = \"Skill\", class = \"knight\", rarity = \"unique\", heal = 6, 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 = 3, desc = \"힘 1. 가시 3. 카드를 사용할 때마다 방어도 1\", kind = \"Power\", strength = 1, thorns = 3, cardPlayedBlock = 1, class = \"knight\", rarity = \"unique\", image = \"90a9bf8eeb844b578b4e2d93ac43fedf\" },\n\tCombatOrders = { name = \"컴뱃 오더스\", cost = 1, desc = \"다음 스킬을 1회 추가 발동. 턴 시작 시 카드 1장 추가로 뽑기\", kind = \"Power\", class = \"knight\", rarity = \"legend\", turnStartDraw = 1, nextSkillRepeatCount = 1, image = \"e2580523efc6457385114b78ad0d7cce\" },\n\tKnightShieldMastery = { name = \"실드 마스터리\", cost = 2, desc = \"매턴 방어도 4. 가시 1\", kind = \"Power\", thorns = 1, powerEffect = \"blockPerTurn\", value = 4, 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 = 1, 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 = \"방어도 4를 얻습니다. 카드를 2장 뽑고 1장 버립니다. 표창 1장을 손에 넣습니다.\", kind = \"Skill\", block = 4, 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 = 1, 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 = 1, 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": [], @@ -2002,7 +2102,7 @@ "Name": null }, "Arguments": [], - "Code": "if self.ButtonsBound == true then\n\treturn\nend\nself.ButtonsBound = true\nlocal endTurn = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/DeckHud/EndTurnButton\")\nif endTurn ~= nil and (endTurn.ButtonComponent ~= nil or endTurn:AddComponent(\"ButtonComponent\") ~= nil) then\n\tif self.EndTurnHandler ~= nil then\n\t\tendTurn:DisconnectEvent(ButtonClickEvent, self.EndTurnHandler)\n\t\tself.EndTurnHandler = nil\n\tend\n\tself.EndTurnHandler = endTurn:ConnectEvent(ButtonClickEvent, function() self:EndPlayerTurn() end)\nend\nlocal drawPile = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/DeckHud/DrawPile\")\nif drawPile ~= nil and (drawPile.ButtonComponent ~= nil or drawPile:AddComponent(\"ButtonComponent\") ~= nil) then\n\tif self.DrawPileHandler ~= nil then\n\t\tdrawPile:DisconnectEvent(ButtonClickEvent, self.DrawPileHandler)\n\t\tself.DrawPileHandler = nil\n\tend\n\tself.DrawPileHandler = drawPile:ConnectEvent(ButtonClickEvent, function() self:OpenDeckInspect(\"draw\") end)\nend\nlocal discardPile = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/DeckHud/DiscardPile\")\nif discardPile ~= nil and (discardPile.ButtonComponent ~= nil or discardPile:AddComponent(\"ButtonComponent\") ~= nil) then\n\tif self.DiscardPileHandler ~= nil then\n\t\tdiscardPile:DisconnectEvent(ButtonClickEvent, self.DiscardPileHandler)\n\t\tself.DiscardPileHandler = nil\n\tend\n\tself.DiscardPileHandler = discardPile:ConnectEvent(ButtonClickEvent, function() self:OpenDeckInspect(\"discard\") end)\nend\nlocal exhaustPile = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/DeckHud/ExhaustPile\")\nif exhaustPile ~= nil and (exhaustPile.ButtonComponent ~= nil or exhaustPile:AddComponent(\"ButtonComponent\") ~= nil) then\n\tif self.ExhaustPileHandler ~= nil then\n\t\texhaustPile:DisconnectEvent(ButtonClickEvent, self.ExhaustPileHandler)\n\t\tself.ExhaustPileHandler = nil\n\tend\n\tself.ExhaustPileHandler = exhaustPile:ConnectEvent(ButtonClickEvent, function() self:OpenDeckInspect(\"exhaust\") end)\nend\nlocal inspectClose = _EntityService:GetEntityByPath(\"/ui/DeckUIGroup/DeckInspectHud/Close\")\nif inspectClose ~= nil and (inspectClose.ButtonComponent ~= nil or inspectClose:AddComponent(\"ButtonComponent\") ~= nil) then\n\tif self.DeckInspectCloseHandler ~= nil then\n\t\tinspectClose:DisconnectEvent(ButtonClickEvent, self.DeckInspectCloseHandler)\n\t\tself.DeckInspectCloseHandler = nil\n\tend\n\tself.DeckInspectCloseHandler = inspectClose:ConnectEvent(ButtonClickEvent, function() self:CloseDeckInspect() end)\nend\nlocal allDeckButton = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/TopBar/AllDeckButton\")\nif allDeckButton ~= nil and (allDeckButton.ButtonComponent ~= nil or allDeckButton:AddComponent(\"ButtonComponent\") ~= nil) then\n\tif self.AllDeckHandler ~= nil then\n\t\tallDeckButton:DisconnectEvent(ButtonClickEvent, self.AllDeckHandler)\n\t\tself.AllDeckHandler = nil\n\tend\n\tself.AllDeckHandler = allDeckButton:ConnectEvent(ButtonClickEvent, function() self:OpenAllDeck() end)\nend\nlocal allDeckClose = _EntityService:GetEntityByPath(\"/ui/DeckUIGroup/DeckAllHud/Close\")\nif allDeckClose ~= nil and (allDeckClose.ButtonComponent ~= nil or allDeckClose:AddComponent(\"ButtonComponent\") ~= nil) then\n\tif self.AllDeckCloseHandler ~= nil then\n\t\tallDeckClose:DisconnectEvent(ButtonClickEvent, self.AllDeckCloseHandler)\n\t\tself.AllDeckCloseHandler = nil\n\tend\n\tself.AllDeckCloseHandler = allDeckClose:ConnectEvent(ButtonClickEvent, function() self:CloseAllDeck() end)\nend\nself:BindClassDeckTabs()\nfor i = 1, 120 do\n\tlocal allCard = _EntityService:GetEntityByPath(\"/ui/DeckUIGroup/DeckAllHud/Grid/Card\" .. tostring(i))\n\tif allCard ~= nil and (allCard.ButtonComponent ~= nil or allCard:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\tif allCard.SpriteGUIRendererComponent ~= nil then\n\t\t\tallCard.SpriteGUIRendererComponent.RaycastTarget = true\n\t\tend\n\t\tlocal slot = i\n\t\tallCard:ConnectEvent(ButtonClickEvent, function() self:OnAllDeckCardButton(slot) end)\n\tend\nend\nfor i = 1, 10 do\n\tlocal cardEntity = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. tostring(i))\n\tif cardEntity ~= nil and cardEntity.UITouchReceiveComponent ~= nil then\n\t\tlocal cardPath = \"/ui/RunUIGroup/CardHand/Card\" .. tostring(i)\n\t\tcardEntity:ConnectEvent(UITouchEnterEvent, function() self:SetCardHover(cardPath, true) end)\n\t\tcardEntity:ConnectEvent(UITouchExitEvent, function() self:SetCardHover(cardPath, false) end)\n\t\tcardEntity:ConnectEvent(UITouchBeginDragEvent, function(ev) self:OnCardDragBegin(i) end)\n\t\tcardEntity:ConnectEvent(UITouchDragEvent, function(ev) self:OnCardDrag(i, ev.TouchPoint) end)\n\t\tcardEntity:ConnectEvent(UITouchEndDragEvent, function(ev) self:OnCardDragEnd(i, ev.TouchPoint) end)\n\t\tcardEntity:ConnectEvent(UITouchEnterEvent, function() self:HoverCard(i) end)\n\t\tcardEntity:ConnectEvent(UITouchExitEvent, function() self:UnhoverCard(i) end)\n\t\tif (cardEntity.ButtonComponent ~= nil or cardEntity:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\t\tcardEntity:ConnectEvent(ButtonClickEvent, function() self:OnCardButton(i) end)\n\t\tend\n\tend\nend\nfor i = 1, 3 do\n\tlocal rc = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/RewardHud/Reward\" .. tostring(i))\n\tif rc ~= nil and (rc.ButtonComponent ~= nil or rc:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\trc:ConnectEvent(ButtonClickEvent, function() self:PickReward(i) end)\n\t\tif rc.UITouchReceiveComponent ~= nil then\n\t\t\tlocal cardPath = \"/ui/RunUIGroup/RewardHud/Reward\" .. tostring(i)\n\t\t\trc:ConnectEvent(UITouchEnterEvent, function() self:SetCardHover(cardPath, true) end)\n\t\t\trc:ConnectEvent(UITouchExitEvent, function() self:SetCardHover(cardPath, false) end)\n\t\tend\n\tend\nend\nlocal skip = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/RewardHud/Skip\")\nif skip ~= nil and (skip.ButtonComponent ~= nil or skip:AddComponent(\"ButtonComponent\") ~= nil) then\n\tskip:ConnectEvent(ButtonClickEvent, function() self:PickReward(0) end)\nend\nlocal mapNodeIds = {}\nfor r = 1, 6 do\n\tfor c = 1, 4 do\n\t\ttable.insert(mapNodeIds, \"r\" .. tostring(r) .. \"c\" .. tostring(c))\n\tend\nend\ntable.insert(mapNodeIds, \"boss\")\nfor i = 1, #mapNodeIds do\n\tlocal nid = mapNodeIds[i]\n\tlocal mn = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/MapHud/Node_\" .. nid)\n\tif mn ~= nil and (mn.ButtonComponent ~= nil or mn:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\tmn:ConnectEvent(ButtonClickEvent, function() self:PickNode(nid) end)\n\tend\nend\nfor i = 1, 3 do\n\tlocal sc = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/ShopHud/Card\" .. tostring(i))\n\tif sc ~= nil and (sc.ButtonComponent ~= nil or sc:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\tsc:ConnectEvent(ButtonClickEvent, function() self:BuyCard(i) end)\n\t\tif sc.UITouchReceiveComponent ~= nil then\n\t\t\tlocal cardPath = \"/ui/RunUIGroup/ShopHud/Card\" .. tostring(i)\n\t\t\tsc:ConnectEvent(UITouchEnterEvent, function() self:SetCardHover(cardPath, true) end)\n\t\t\tsc:ConnectEvent(UITouchExitEvent, function() self:SetCardHover(cardPath, false) end)\n\t\tend\n\tend\nend\nlocal shopLeave = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/ShopHud/Leave\")\nif shopLeave ~= nil and (shopLeave.ButtonComponent ~= nil or shopLeave:AddComponent(\"ButtonComponent\") ~= nil) then\n\tshopLeave:ConnectEvent(ButtonClickEvent, function() self:LeaveNode() end)\nend\nlocal shopRelic = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/ShopHud/Relic\")\nif shopRelic ~= nil and (shopRelic.ButtonComponent ~= nil or shopRelic:AddComponent(\"ButtonComponent\") ~= nil) then\n\tshopRelic:ConnectEvent(ButtonClickEvent, function() self:BuyRelic() end)\nend\nlocal restLeave = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/RestHud/Leave\")\nif restLeave ~= nil and (restLeave.ButtonComponent ~= nil or restLeave:AddComponent(\"ButtonComponent\") ~= nil) then\n\trestLeave:ConnectEvent(ButtonClickEvent, function() self:LeaveNode() end)\nend\nfor i = 1, 4 do\n\tlocal ms = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. tostring(i))\n\tif ms ~= nil and (ms.ButtonComponent ~= nil or ms:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\tms:ConnectEvent(ButtonClickEvent, function() self:SetTarget(i) end)\n\tend\nend\nfor i = 1, 10 do\n\tlocal rs = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/TopBar/RelicSlot\" .. tostring(i))\n\tif rs ~= nil and rs.UITouchReceiveComponent ~= nil then\n\t\tlocal idx = i\n\t\trs:ConnectEvent(UITouchEnterEvent, function()\n\t\t\tlocal rid = nil\n\t\t\tif self.RunRelics ~= nil then rid = self.RunRelics[idx] end\n\t\t\tif rid ~= nil and self.Relics[rid] ~= nil then\n\t\t\t\tself:ShowTooltip(self.Relics[rid].name, self.Relics[rid].desc, -240 + (idx - 1) * 48)\n\t\t\tend\n\t\tend)\n\t\trs:ConnectEvent(UITouchExitEvent, function() self:HideTooltip() end)\n\tend\nend\nfor i = 1, 5 do\n\tlocal ps = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/TopBar/PotionSlot\" .. tostring(i))\n\tif ps ~= nil and ps.UITouchReceiveComponent ~= nil then\n\t\tlocal idx = i\n\t\tps:ConnectEvent(UITouchEnterEvent, function()\n\t\t\tlocal pid = nil\n\t\t\tif self.RunPotions ~= nil then pid = self.RunPotions[idx] end\n\t\t\tif pid ~= nil and self.Potions[pid] ~= nil then\n\t\t\t\tself:ShowTooltip(self.Potions[pid].name, self.Potions[pid].desc, 240 + (idx - 1) * 44)\n\t\t\tend\n\t\tend)\n\t\tps:ConnectEvent(UITouchExitEvent, function() self:HideTooltip() end)\n\t\tps:ConnectEvent(UITouchDownEvent, function() self:OpenPotionMenu(idx) end)\n\tend\nend\nlocal pmUse = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/PotionMenu/Use\")\nif pmUse ~= nil and (pmUse.ButtonComponent ~= nil or pmUse:AddComponent(\"ButtonComponent\") ~= nil) then\n\tpmUse:ConnectEvent(ButtonClickEvent, function() self:UsePotion() end)\nend\nlocal pmToss = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/PotionMenu/Toss\")\nif pmToss ~= nil and (pmToss.ButtonComponent ~= nil or pmToss:AddComponent(\"ButtonComponent\") ~= nil) then\n\tpmToss:ConnectEvent(ButtonClickEvent, function() self:TossPotion() end)\nend\nlocal pmClose = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/PotionMenu/Close\")\nif pmClose ~= nil and (pmClose.ButtonComponent ~= nil or pmClose:AddComponent(\"ButtonComponent\") ~= nil) then\n\tpmClose:ConnectEvent(ButtonClickEvent, function() self:ClosePotionMenu() end)\nend\nlocal shopPotion = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/ShopHud/Potion\")\nif shopPotion ~= nil and (shopPotion.ButtonComponent ~= nil or shopPotion:AddComponent(\"ButtonComponent\") ~= nil) then\n\tshopPotion:ConnectEvent(ButtonClickEvent, function() self:BuyPotion() end)\nend\nlocal chest = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/TreasureHud/Chest\")\nif chest ~= nil and (chest.ButtonComponent ~= nil or chest:AddComponent(\"ButtonComponent\") ~= nil) then\n\tchest:ConnectEvent(ButtonClickEvent, function() self:OpenChest() end)\nend\nlocal treasureLeave = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/TreasureHud/Leave\")\nif treasureLeave ~= nil and (treasureLeave.ButtonComponent ~= nil or treasureLeave:AddComponent(\"ButtonComponent\") ~= nil) then\n\ttreasureLeave:ConnectEvent(ButtonClickEvent, function() self:LeaveNode() end)\nend\nlocal jcRelic = _EntityService:GetEntityByPath(\"/ui/SelectUIGroup/JobChoiceHud/RelicButton\")\nif jcRelic ~= nil and (jcRelic.ButtonComponent ~= nil or jcRelic:AddComponent(\"ButtonComponent\") ~= nil) then\n\tjcRelic:ConnectEvent(ButtonClickEvent, function() self:PickJobReward(\"relic\") end)\nend\nlocal jcJob = _EntityService:GetEntityByPath(\"/ui/SelectUIGroup/JobChoiceHud/JobButton\")\nif jcJob ~= nil and (jcJob.ButtonComponent ~= nil or jcJob:AddComponent(\"ButtonComponent\") ~= nil) then\n\tjcJob:ConnectEvent(ButtonClickEvent, function() self:PickJobReward(\"job\") end)\nend\nfor i = 1, 3 do\n\tlocal slotIdx = i\n\tlocal jb = _EntityService:GetEntityByPath(\"/ui/SelectUIGroup/JobSelectHud/Job_slot\" .. tostring(i))\n\tif jb ~= nil and (jb.ButtonComponent ~= nil or jb:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\tjb:ConnectEvent(ButtonClickEvent, function()\n\t\t\tif self.JobOpts ~= nil and self.JobOpts[slotIdx] ~= nil then\n\t\t\t\tself:SetJob(self.JobOpts[slotIdx].id)\n\t\t\tend\n\t\tend)\n\tend\nend", + "Code": "if self.ButtonsBound == true then\n\treturn\nend\nself.ButtonsBound = true\nlocal endTurn = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/DeckHud/EndTurnButton\")\nif endTurn ~= nil and (endTurn.ButtonComponent ~= nil or endTurn:AddComponent(\"ButtonComponent\") ~= nil) then\n\tif self.EndTurnHandler ~= nil then\n\t\tendTurn:DisconnectEvent(ButtonClickEvent, self.EndTurnHandler)\n\t\tself.EndTurnHandler = nil\n\tend\n\tself.EndTurnHandler = endTurn:ConnectEvent(ButtonClickEvent, function() self:EndPlayerTurn() end)\nend\nlocal drawPile = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/DeckHud/DrawPile\")\nif drawPile ~= nil and (drawPile.ButtonComponent ~= nil or drawPile:AddComponent(\"ButtonComponent\") ~= nil) then\n\tif self.DrawPileHandler ~= nil then\n\t\tdrawPile:DisconnectEvent(ButtonClickEvent, self.DrawPileHandler)\n\t\tself.DrawPileHandler = nil\n\tend\n\tself.DrawPileHandler = drawPile:ConnectEvent(ButtonClickEvent, function() self:OpenDeckInspect(\"draw\") end)\nend\nlocal discardPile = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/DeckHud/DiscardPile\")\nif discardPile ~= nil and (discardPile.ButtonComponent ~= nil or discardPile:AddComponent(\"ButtonComponent\") ~= nil) then\n\tif self.DiscardPileHandler ~= nil then\n\t\tdiscardPile:DisconnectEvent(ButtonClickEvent, self.DiscardPileHandler)\n\t\tself.DiscardPileHandler = nil\n\tend\n\tself.DiscardPileHandler = discardPile:ConnectEvent(ButtonClickEvent, function() self:OpenDeckInspect(\"discard\") end)\nend\nlocal exhaustPile = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/DeckHud/ExhaustPile\")\nif exhaustPile ~= nil and (exhaustPile.ButtonComponent ~= nil or exhaustPile:AddComponent(\"ButtonComponent\") ~= nil) then\n\tif self.ExhaustPileHandler ~= nil then\n\t\texhaustPile:DisconnectEvent(ButtonClickEvent, self.ExhaustPileHandler)\n\t\tself.ExhaustPileHandler = nil\n\tend\n\tself.ExhaustPileHandler = exhaustPile:ConnectEvent(ButtonClickEvent, function() self:OpenDeckInspect(\"exhaust\") end)\nend\nlocal inspectClose = _EntityService:GetEntityByPath(\"/ui/DeckUIGroup/DeckInspectHud/Close\")\nif inspectClose ~= nil and (inspectClose.ButtonComponent ~= nil or inspectClose:AddComponent(\"ButtonComponent\") ~= nil) then\n\tif self.DeckInspectCloseHandler ~= nil then\n\t\tinspectClose:DisconnectEvent(ButtonClickEvent, self.DeckInspectCloseHandler)\n\t\tself.DeckInspectCloseHandler = nil\n\tend\n\tself.DeckInspectCloseHandler = inspectClose:ConnectEvent(ButtonClickEvent, function() self:CloseDeckInspect() end)\nend\nlocal allDeckButton = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/TopBar/AllDeckButton\")\nif allDeckButton ~= nil and (allDeckButton.ButtonComponent ~= nil or allDeckButton:AddComponent(\"ButtonComponent\") ~= nil) then\n\tif self.AllDeckHandler ~= nil then\n\t\tallDeckButton:DisconnectEvent(ButtonClickEvent, self.AllDeckHandler)\n\t\tself.AllDeckHandler = nil\n\tend\n\tself.AllDeckHandler = allDeckButton:ConnectEvent(ButtonClickEvent, function() self:OpenAllDeck() end)\nend\nlocal allDeckClose = _EntityService:GetEntityByPath(\"/ui/DeckUIGroup/DeckAllHud/Close\")\nif allDeckClose ~= nil and (allDeckClose.ButtonComponent ~= nil or allDeckClose:AddComponent(\"ButtonComponent\") ~= nil) then\n\tif self.AllDeckCloseHandler ~= nil then\n\t\tallDeckClose:DisconnectEvent(ButtonClickEvent, self.AllDeckCloseHandler)\n\t\tself.AllDeckCloseHandler = nil\n\tend\nself.AllDeckCloseHandler = allDeckClose:ConnectEvent(ButtonClickEvent, function() self:CloseAllDeck() end)\nend\nself:BindClassDeckTabs()\nlocal allDeckGrid = _EntityService:GetEntityByPath(\"/ui/DeckUIGroup/DeckAllHud/Grid\")\nif allDeckGrid ~= nil and (allDeckGrid.UITouchReceiveComponent ~= nil or allDeckGrid:AddComponent(\"UITouchReceiveComponent\") ~= nil) then\n\tallDeckGrid:ConnectEvent(UITouchEnterEvent, function(ev) self.GridScrollActive = false; self:HoverGridCard(\"/ui/DeckUIGroup/DeckAllHud/Grid\", ev.TouchPoint) end)\n\tallDeckGrid:ConnectEvent(UITouchDownEvent, function(ev) self.GridScrollActive = false; self:HoverGridCard(\"/ui/DeckUIGroup/DeckAllHud/Grid\", ev.TouchPoint) end)\n\tallDeckGrid:ConnectEvent(UITouchDragEvent, function(ev) self.GridScrollActive = true; self:UnhoverGridCard(\"/ui/DeckUIGroup/DeckAllHud/Grid\") end)\n\tallDeckGrid:ConnectEvent(UITouchEndDragEvent, function() self.GridScrollActive = false end)\n\tallDeckGrid:ConnectEvent(UITouchExitEvent, function() self.GridScrollActive = false; self:UnhoverGridCard(\"/ui/DeckUIGroup/DeckAllHud/Grid\") end)\nend\nfor i = 1, 120 do\n\tlocal allCard = _EntityService:GetEntityByPath(\"/ui/DeckUIGroup/DeckAllHud/Grid/Card\" .. self:IntStr(i))\n\tif allCard ~= nil and (allCard.ButtonComponent ~= nil or allCard:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\tif allCard.SpriteGUIRendererComponent ~= nil then\n\t\t\tallCard.SpriteGUIRendererComponent.RaycastTarget = true\n\t\tend\n\t\tlocal slot = i\n\t\tlocal cardPath = \"/ui/DeckUIGroup/DeckAllHud/Grid/Card\" .. self:IntStr(i)\n\t\tallCard:ConnectEvent(ButtonStateChangeEvent, function(ev)\n\t\t\tlocal state = nil\n\t\t\tif ev ~= nil then\n\t\t\t\tstate = ev.CurrentState or ev.ButtonState or ev.State\n\t\t\tend\n\t\t\tif state == ButtonState.Highlighted or state == ButtonState.Pressed or tostring(state) == \"1\" or tostring(state) == \"2\" then\n\t\t\t\tself:HoverCardByPath(cardPath)\n\t\t\telse\n\t\t\t\tself:UnhoverCardByPath(cardPath)\n\t\t\tend\n\t\tend)\n\t\tallCard:ConnectEvent(ButtonClickEvent, function() self:OnAllDeckCardButton(slot) end)\n\tend\nend\nlocal inspectGrid = _EntityService:GetEntityByPath(\"/ui/DeckUIGroup/DeckInspectHud/Grid\")\nif inspectGrid ~= nil and (inspectGrid.UITouchReceiveComponent ~= nil or inspectGrid:AddComponent(\"UITouchReceiveComponent\") ~= nil) then\n\tinspectGrid:ConnectEvent(UITouchEnterEvent, function(ev) self.GridScrollActive = false; self:HoverGridCard(\"/ui/DeckUIGroup/DeckInspectHud/Grid\", ev.TouchPoint) end)\n\tinspectGrid:ConnectEvent(UITouchDownEvent, function(ev) self.GridScrollActive = false; self:HoverGridCard(\"/ui/DeckUIGroup/DeckInspectHud/Grid\", ev.TouchPoint) end)\n\tinspectGrid:ConnectEvent(UITouchDragEvent, function(ev) self.GridScrollActive = true; self:UnhoverGridCard(\"/ui/DeckUIGroup/DeckInspectHud/Grid\") end)\n\tinspectGrid:ConnectEvent(UITouchEndDragEvent, function() self.GridScrollActive = false end)\n\tinspectGrid:ConnectEvent(UITouchExitEvent, function() self.GridScrollActive = false; self:UnhoverGridCard(\"/ui/DeckUIGroup/DeckInspectHud/Grid\") end)\nend\nfor i = 1, 60 do\n\tlocal inspectCard = _EntityService:GetEntityByPath(\"/ui/DeckUIGroup/DeckInspectHud/Grid/Card\" .. self:IntStr(i))\n\tif inspectCard ~= nil and (inspectCard.ButtonComponent ~= nil or inspectCard:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\tlocal cardPath = \"/ui/DeckUIGroup/DeckInspectHud/Grid/Card\" .. self:IntStr(i)\n\t\tinspectCard:ConnectEvent(ButtonStateChangeEvent, function(ev)\n\t\t\tlocal state = nil\n\t\t\tif ev ~= nil then\n\t\t\t\tstate = ev.CurrentState or ev.ButtonState or ev.State\n\t\t\tend\n\t\t\tif state == ButtonState.Highlighted or state == ButtonState.Pressed or tostring(state) == \"1\" or tostring(state) == \"2\" then\n\t\t\t\tself:HoverCardByPath(cardPath)\n\t\t\telse\n\t\t\t\tself:UnhoverCardByPath(cardPath)\n\t\t\tend\n\t\tend)\n\tend\nend\nfor i = 1, 10 do\n\tlocal cardEntity = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(i))\n\tif cardEntity ~= nil and cardEntity.UITouchReceiveComponent ~= nil then\n\t\tlocal cardPath = \"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(i)\n\t\tcardEntity:ConnectEvent(UITouchEnterEvent, function() self:SetCardHover(cardPath, true) end)\n\t\tcardEntity:ConnectEvent(UITouchExitEvent, function() self:SetCardHover(cardPath, false) end)\n\t\tcardEntity:ConnectEvent(UITouchBeginDragEvent, function(ev) self:OnCardDragBegin(i) end)\n\t\tcardEntity:ConnectEvent(UITouchDragEvent, function(ev) self:OnCardDrag(i, ev.TouchPoint) end)\n\t\tcardEntity:ConnectEvent(UITouchEndDragEvent, function(ev) self:OnCardDragEnd(i, ev.TouchPoint) end)\n\t\tcardEntity:ConnectEvent(UITouchEnterEvent, function() self:HoverCard(i) end)\n\t\tcardEntity:ConnectEvent(UITouchExitEvent, function() self:UnhoverCard(i) end)\n\t\tif (cardEntity.ButtonComponent ~= nil or cardEntity:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\t\tcardEntity:ConnectEvent(ButtonClickEvent, function() self:OnCardButton(i) end)\n\t\tend\n\tend\nend\nfor i = 1, 3 do\n\tlocal rc = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/RewardHud/Reward\" .. self:IntStr(i))\n\tif rc ~= nil and (rc.ButtonComponent ~= nil or rc:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\trc:ConnectEvent(ButtonClickEvent, function() self:PickReward(i) end)\n\t\tif rc.UITouchReceiveComponent ~= nil then\n\t\t\tlocal cardPath = \"/ui/RunUIGroup/RewardHud/Reward\" .. self:IntStr(i)\n\t\t\trc:ConnectEvent(UITouchEnterEvent, function() self:SetCardHover(cardPath, true) end)\n\t\t\trc:ConnectEvent(UITouchExitEvent, function() self:SetCardHover(cardPath, false) end)\n\t\t\trc:ConnectEvent(UITouchEnterEvent, function() self:HoverCardByPath(cardPath) end)\n\t\t\trc:ConnectEvent(UITouchExitEvent, function() self:UnhoverCardByPath(cardPath) end)\n\t\tend\n\tend\nend\nlocal skip = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/RewardHud/Skip\")\nif skip ~= nil and (skip.ButtonComponent ~= nil or skip:AddComponent(\"ButtonComponent\") ~= nil) then\n\tskip:ConnectEvent(ButtonClickEvent, function() self:PickReward(0) end)\nend\nlocal mapNodeIds = {}\nfor r = 1, 6 do\n\tfor c = 1, 4 do\n\t\ttable.insert(mapNodeIds, \"r\" .. tostring(r) .. \"c\" .. tostring(c))\n\tend\nend\ntable.insert(mapNodeIds, \"boss\")\nfor i = 1, #mapNodeIds do\n\tlocal nid = mapNodeIds[i]\n\tlocal mn = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/MapHud/Node_\" .. nid)\n\tif mn ~= nil and (mn.ButtonComponent ~= nil or mn:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\tmn:ConnectEvent(ButtonClickEvent, function() self:PickNode(nid) end)\n\tend\nend\nfor i = 1, 3 do\n\tlocal sc = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/ShopHud/Card\" .. self:IntStr(i))\n\tif sc ~= nil and (sc.ButtonComponent ~= nil or sc:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\tsc:ConnectEvent(ButtonClickEvent, function() self:BuyCard(i) end)\n\t\tif sc.UITouchReceiveComponent ~= nil then\n\t\t\tlocal cardPath = \"/ui/RunUIGroup/ShopHud/Card\" .. self:IntStr(i)\n\t\t\tsc:ConnectEvent(UITouchEnterEvent, function() self:SetCardHover(cardPath, true) end)\n\t\t\tsc:ConnectEvent(UITouchExitEvent, function() self:SetCardHover(cardPath, false) end)\n\t\t\tsc:ConnectEvent(UITouchEnterEvent, function() self:HoverCardByPath(cardPath) end)\n\t\t\tsc:ConnectEvent(UITouchExitEvent, function() self:UnhoverCardByPath(cardPath) end)\n\t\tend\n\tend\nend\nlocal shopLeave = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/ShopHud/Leave\")\nif shopLeave ~= nil and (shopLeave.ButtonComponent ~= nil or shopLeave:AddComponent(\"ButtonComponent\") ~= nil) then\n\tshopLeave:ConnectEvent(ButtonClickEvent, function() self:LeaveNode() end)\nend\nlocal shopRelic = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/ShopHud/Relic\")\nif shopRelic ~= nil and (shopRelic.ButtonComponent ~= nil or shopRelic:AddComponent(\"ButtonComponent\") ~= nil) then\n\tshopRelic:ConnectEvent(ButtonClickEvent, function() self:BuyRelic() end)\nend\nlocal restLeave = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/RestHud/Leave\")\nif restLeave ~= nil and (restLeave.ButtonComponent ~= nil or restLeave:AddComponent(\"ButtonComponent\") ~= nil) then\n\trestLeave:ConnectEvent(ButtonClickEvent, function() self:LeaveNode() end)\nend\nfor i = 1, 4 do\n\tlocal ms = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. self:IntStr(i))\n\tif ms ~= nil and (ms.ButtonComponent ~= nil or ms:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\tms:ConnectEvent(ButtonClickEvent, function() self:SetTarget(i) end)\n\tend\nend\nfor i = 1, 10 do\n\tlocal rs = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/TopBar/RelicSlot\" .. self:IntStr(i))\n\tif rs ~= nil and rs.UITouchReceiveComponent ~= nil then\n\t\tlocal idx = i\n\t\trs:ConnectEvent(UITouchEnterEvent, function()\n\t\t\tlocal rid = nil\n\t\t\tif self.RunRelics ~= nil then rid = self.RunRelics[idx] end\n\t\t\tif rid ~= nil and self.Relics[rid] ~= nil then\n\t\t\t\tself:ShowTooltip(self.Relics[rid].name, self.Relics[rid].desc, -240 + (idx - 1) * 48)\n\t\t\tend\n\t\tend)\n\t\trs:ConnectEvent(UITouchExitEvent, function() self:HideTooltip() end)\n\tend\nend\nfor i = 1, 5 do\n\tlocal ps = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/TopBar/PotionSlot\" .. self:IntStr(i))\n\tif ps ~= nil and ps.UITouchReceiveComponent ~= nil then\n\t\tlocal idx = i\n\t\tps:ConnectEvent(UITouchEnterEvent, function()\n\t\t\tlocal pid = nil\n\t\t\tif self.RunPotions ~= nil then pid = self.RunPotions[idx] end\n\t\t\tif pid ~= nil and self.Potions[pid] ~= nil then\n\t\t\t\tself:ShowTooltip(self.Potions[pid].name, self.Potions[pid].desc, 240 + (idx - 1) * 44)\n\t\t\tend\n\t\tend)\n\t\tps:ConnectEvent(UITouchExitEvent, function() self:HideTooltip() end)\n\t\tps:ConnectEvent(UITouchDownEvent, function() self:OpenPotionMenu(idx) end)\n\tend\nend\nlocal pmUse = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/PotionMenu/Use\")\nif pmUse ~= nil and (pmUse.ButtonComponent ~= nil or pmUse:AddComponent(\"ButtonComponent\") ~= nil) then\n\tpmUse:ConnectEvent(ButtonClickEvent, function() self:UsePotion() end)\nend\nlocal pmToss = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/PotionMenu/Toss\")\nif pmToss ~= nil and (pmToss.ButtonComponent ~= nil or pmToss:AddComponent(\"ButtonComponent\") ~= nil) then\n\tpmToss:ConnectEvent(ButtonClickEvent, function() self:TossPotion() end)\nend\nlocal pmClose = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/PotionMenu/Close\")\nif pmClose ~= nil and (pmClose.ButtonComponent ~= nil or pmClose:AddComponent(\"ButtonComponent\") ~= nil) then\n\tpmClose:ConnectEvent(ButtonClickEvent, function() self:ClosePotionMenu() end)\nend\nlocal shopPotion = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/ShopHud/Potion\")\nif shopPotion ~= nil and (shopPotion.ButtonComponent ~= nil or shopPotion:AddComponent(\"ButtonComponent\") ~= nil) then\n\tshopPotion:ConnectEvent(ButtonClickEvent, function() self:BuyPotion() end)\nend\nlocal chest = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/TreasureHud/Chest\")\nif chest ~= nil and (chest.ButtonComponent ~= nil or chest:AddComponent(\"ButtonComponent\") ~= nil) then\n\tchest:ConnectEvent(ButtonClickEvent, function() self:OpenChest() end)\nend\nlocal treasureLeave = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/TreasureHud/Leave\")\nif treasureLeave ~= nil and (treasureLeave.ButtonComponent ~= nil or treasureLeave:AddComponent(\"ButtonComponent\") ~= nil) then\n\ttreasureLeave:ConnectEvent(ButtonClickEvent, function() self:LeaveNode() end)\nend\nlocal jcRelic = _EntityService:GetEntityByPath(\"/ui/SelectUIGroup/JobChoiceHud/RelicButton\")\nif jcRelic ~= nil and (jcRelic.ButtonComponent ~= nil or jcRelic:AddComponent(\"ButtonComponent\") ~= nil) then\n\tjcRelic:ConnectEvent(ButtonClickEvent, function() self:PickJobReward(\"relic\") end)\nend\nlocal jcJob = _EntityService:GetEntityByPath(\"/ui/SelectUIGroup/JobChoiceHud/JobButton\")\nif jcJob ~= nil and (jcJob.ButtonComponent ~= nil or jcJob:AddComponent(\"ButtonComponent\") ~= nil) then\n\tjcJob:ConnectEvent(ButtonClickEvent, function() self:PickJobReward(\"job\") end)\nend\nfor i = 1, 3 do\n\tlocal slotIdx = i\n\tlocal jb = _EntityService:GetEntityByPath(\"/ui/SelectUIGroup/JobSelectHud/Job_slot\" .. self:IntStr(i))\n\tif jb ~= nil and (jb.ButtonComponent ~= nil or jb:AddComponent(\"ButtonComponent\") ~= nil) then\n\t\tjb:ConnectEvent(ButtonClickEvent, function()\n\t\t\tif self.JobOpts ~= nil and self.JobOpts[slotIdx] ~= nil then\n\t\t\t\tself:SetJob(self.JobOpts[slotIdx].id)\n\t\t\tend\n\t\tend)\n\tend\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -2017,7 +2117,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\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.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 == \"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, true)\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": [], @@ -2199,7 +2299,7 @@ "Name": "animate" } ], - "Code": "local drawnSlots = {}\nlocal drawnCards = {}\nlocal drewAny = false\nif self.DrawDisabledThisTurn == true then\n\treturn drawnCards\nend\nfor i = 1, amount do\n\tif #self.DrawPile <= 0 then\n\t\tself:RecycleDiscardIntoDraw()\n\tend\n\tif #self.DrawPile <= 0 then\n\t\tbreak\n\tend\n\tlocal cardId = table.remove(self.DrawPile)\n\ttable.insert(drawnCards, cardId)\n\tself.CardsDrawnThisCombat = (self.CardsDrawnThisCombat or 0) + 1\n\tself:ApplyDrawTrigger()\n\tif #self.Hand >= 10 then\n\t\ttable.insert(self.DiscardPile, cardId)\n\t\tself:TriggerSly(cardId)\n\telse\n\t\ttable.insert(self.Hand, cardId)\n\t\tdrewAny = true\n\t\ttable.insert(drawnSlots, #self.Hand)\n\tend\nend\nself:RenderPiles()\nif drewAny == true then\n\tself:RenderHand(false)\nend\nif animate == true and #drawnSlots > 0 then\n\tlocal drawStart = Vector2(-590, 8)\n\tfor i = 1, #drawnSlots do\n\t\tlocal slot = drawnSlots[i]\n\t\tself:AnimateCardFrom(slot, drawStart, Vector2(self:GetHandSlotX(slot), 0), 0.08 + i * 0.045)\n\tend\nreturn drawnCards\nend", + "Code": "local drawnSlots = {}\nlocal drawnCards = {}\nlocal drewAny = false\nif self.DrawDisabledThisTurn == true then\n\treturn drawnCards\nend\nfor i = 1, amount do\n\tif #self.DrawPile <= 0 then\n\t\tself:RecycleDiscardIntoDraw()\n\tend\n\tif #self.DrawPile <= 0 then\n\t\tbreak\n\tend\n\tlocal cardId = table.remove(self.DrawPile)\n\ttable.insert(drawnCards, cardId)\n\tself.CardsDrawnThisCombat = (self.CardsDrawnThisCombat or 0) + 1\n\tself:ApplyDrawTrigger()\n\tif #self.Hand >= 10 then\n\t\ttable.insert(self.DiscardPile, cardId)\n\t\tself:TriggerSly(cardId)\n\telse\n\t\ttable.insert(self.Hand, cardId)\n\t\tlocal autoPlayed = self:TriggerDrawnCardAutoPlay(cardId)\n\t\tif autoPlayed ~= true then\n\t\t\tdrewAny = true\n\t\t\ttable.insert(drawnSlots, #self.Hand)\n\t\tend\n\tend\nend\nself:RenderPiles()\nif drewAny == true then\n\tself:RenderHand(false)\nend\nif animate == true and #drawnSlots > 0 then\n\tlocal drawStart = Vector2(-590, 8)\n\tfor i = 1, #drawnSlots do\n\t\tlocal slot = drawnSlots[i]\n\t\tself:AnimateCardFrom(slot, drawStart, Vector2(self:GetHandSlotX(slot), 0), 0.08 + i * 0.045)\n\tend\nend\nreturn drawnCards\n", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -2327,7 +2427,7 @@ "Name": "title" } ], - "Code": "local count = 0\nif pile ~= nil then\n\tcount = #pile\nend\nlocal suffix = \" (\" .. tostring(count) .. \")\"\nif count > 60 then\n\tsuffix = suffix .. \" - 60장까지 표시\"\nend\nself:SetText(\"/ui/DeckUIGroup/DeckInspectHud/Title\", title .. suffix)\nself:SetEntityEnabled(\"/ui/DeckUIGroup/DeckInspectHud/Empty\", count <= 0)\nfor i = 1, 60 do\n\tlocal path = \"/ui/DeckUIGroup/DeckInspectHud/Grid/Card\" .. tostring(i)\n\tlocal cardId = nil\n\tif pile ~= nil then\n\t\tcardId = pile[i]\n\tend\n\tif cardId == nil then\n\t\tself:SetEntityEnabled(path, false)\n\telse\n\t\tself:SetEntityEnabled(path, true)\n\t\tself:ApplyInspectCardVisual(i, cardId)\n\tend\nend", + "Code": "local count = 0\nif pile ~= nil then\n\tcount = #pile\nend\nlocal suffix = \" (\" .. tostring(count) .. \")\"\nif count > 60 then\n\tsuffix = suffix .. \" - 60장까지 표시\"\nend\nself:SetText(\"/ui/DeckUIGroup/DeckInspectHud/Title\", title .. suffix)\nself:SetEntityEnabled(\"/ui/DeckUIGroup/DeckInspectHud/Empty\", count <= 0)\nfor i = 1, 60 do\n\tlocal path = \"/ui/DeckUIGroup/DeckInspectHud/Grid/Card\" .. self:IntStr(i)\n\tlocal cardId = nil\n\tif pile ~= nil then\n\t\tcardId = pile[i]\n\tend\n\tif cardId == nil then\n\t\tself:SetEntityEnabled(path, false)\n\telse\n\t\tself:SetEntityEnabled(path, true)\n\t\tself:ApplyInspectCardVisual(i, cardId)\n\tend\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -2357,7 +2457,7 @@ "Name": "cardId" } ], - "Code": "self:ApplyCardFace(\"/ui/DeckUIGroup/DeckInspectHud/Grid/Card\" .. tostring(slot), cardId)", + "Code": "self:ApplyCardFace(\"/ui/DeckUIGroup/DeckInspectHud/Grid/Card\" .. self:IntStr(slot), cardId)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -2493,7 +2593,7 @@ "Name": null }, "Arguments": [], - "Code": "local pile = self.RunDeck or {}\nlocal title = \"모든 덱\"\nif self.ClassDeckMode == true then\n\tpile = self.ClassDeckCards or {}\n\ttitle = self.ClassDeckTitle\n\tif self.CodexMode == true then\n\t\ttitle = \"카드 도감\"\n\tend\n\tif self.DebugCardPickerMode == true then\n\t\ttitle = title .. \" - 테스트 카드 추가\"\n\tend\nelseif self.CodexMode == true then\n\tpile = self.CodexCards or {}\n\ttitle = \"카드 도감\"\nend\nlocal count = #pile\nself:SetText(\"/ui/DeckUIGroup/DeckAllHud/Title\", title .. \" (\" .. tostring(count) .. \")\")\nself:RenderClassDeckTabs()\nself:SetEntityEnabled(\"/ui/DeckUIGroup/DeckAllHud/Empty\", count <= 0)\nfor i = 1, 120 do\n\tlocal path = \"/ui/DeckUIGroup/DeckAllHud/Grid/Card\" .. tostring(i)\n\tlocal cardId = pile[i]\n\tif cardId == nil then\n\t\tself:SetEntityEnabled(path, false)\n\telse\n\t\tself:SetEntityEnabled(path, true)\n\t\tself:ApplyAllDeckCardVisual(i, cardId)\n\tend\nend", + "Code": "local pile = self.RunDeck or {}\nlocal title = \"모든 덱\"\nif self.ClassDeckMode == true then\n\tpile = self.ClassDeckCards or {}\n\ttitle = self.ClassDeckTitle\n\tif self.CodexMode == true then\n\t\ttitle = \"카드 도감\"\n\tend\n\tif self.DebugCardPickerMode == true then\n\t\ttitle = title .. \" - 테스트 카드 추가\"\n\tend\nelseif self.CodexMode == true then\n\tpile = self.CodexCards or {}\n\ttitle = \"카드 도감\"\nend\nlocal count = #pile\nself:SetText(\"/ui/DeckUIGroup/DeckAllHud/Title\", title .. \" (\" .. tostring(count) .. \")\")\nself:RenderClassDeckTabs()\nself:SetEntityEnabled(\"/ui/DeckUIGroup/DeckAllHud/Empty\", count <= 0)\nfor i = 1, 120 do\n\tlocal path = \"/ui/DeckUIGroup/DeckAllHud/Grid/Card\" .. self:IntStr(i)\n\tlocal cardId = pile[i]\n\tif cardId == nil then\n\t\tself:SetEntityEnabled(path, false)\n\telse\n\t\tself:SetEntityEnabled(path, true)\n\t\tself:ApplyAllDeckCardVisual(i, cardId)\n\tend\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -2523,7 +2623,7 @@ "Name": "cardId" } ], - "Code": "self:ApplyCardFace(\"/ui/DeckUIGroup/DeckAllHud/Grid/Card\" .. tostring(slot), cardId)", + "Code": "self:ApplyCardFace(\"/ui/DeckUIGroup/DeckAllHud/Grid/Card\" .. self:IntStr(slot), cardId)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -2607,7 +2707,7 @@ "Name": "animate" } ], - "Code": "local n = #self.Hand\nlocal spacing = 175\nif n > 8 then spacing = math.floor(1400 / n) end\nlocal startX = -((n - 1) * spacing) / 2\nlocal drawStart = Vector2(-590, 8)\nfor i = 1, 10 do\n\tlocal cardEntity = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. tostring(i))\n\tif cardEntity ~= nil then\n\t\tlocal cardId = self.Hand[i]\n\t\tif cardId == nil then\n\t\t\tcardEntity.Enable = false\n\t\telse\n\t\t\tcardEntity.Enable = true\n\t\t\tif cardEntity.UITransformComponent ~= nil then cardEntity.UITransformComponent.UIScale = Vector3(1, 1, 1) end\n\t\t\tself:ApplyCardVisual(i, cardId)\n\t\t\tlocal tx = self:GetHandSlotX(i)\n\t\t\tif animate == true then\n\t\t\t\tself:AnimateCardFrom(i, drawStart, Vector2(tx, 0), 0.16 + i * 0.03)\n\t\t\telse\n\t\t\t\tif cardEntity.UITransformComponent ~= nil then cardEntity.UITransformComponent.anchoredPosition = Vector2(tx, 0) end\n\t\t\tend\n\t\tend\n\tend\nend\nself:RenderPiles()", + "Code": "local n = #self.Hand\nlocal spacing = 175\nif n > 8 then spacing = math.floor(1400 / n) end\nlocal startX = -((n - 1) * spacing) / 2\nlocal drawStart = Vector2(-590, 8)\nfor i = 1, 10 do\n\tlocal cardEntity = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(i))\n\tif cardEntity ~= nil then\n\t\tlocal cardId = self.Hand[i]\n\t\tif cardId == nil then\n\t\t\tcardEntity.Enable = false\n\t\telse\n\t\t\tcardEntity.Enable = true\n\t\t\tif cardEntity.UITransformComponent ~= nil then cardEntity.UITransformComponent.UIScale = Vector3(1, 1, 1) end\n\t\t\tself:ApplyCardVisual(i, cardId)\n\t\t\tlocal tx = self:GetHandSlotX(i)\n\t\t\tif animate == true then\n\t\t\t\tself:AnimateCardFrom(i, drawStart, Vector2(tx, 0), 0.16 + i * 0.03)\n\t\t\telse\n\t\t\t\tif cardEntity.UITransformComponent ~= nil then cardEntity.UITransformComponent.anchoredPosition = Vector2(tx, 0) end\n\t\t\tend\n\t\tend\n\tend\nend\nself:RenderPiles()", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -2667,7 +2767,7 @@ "Name": "hover" } ], - "Code": "local prefix = \"\"\nlocal count = 0\nlocal xs = {}\nlocal baseY = 0\nlocal hoverIndex = 0\nlocal push = 110\nif string.find(path, \"/ui/RunUIGroup/CardHand/Card\") == 1 then\n\tif self.DragSlot ~= nil and self.DragSlot > 0 then\n\t\treturn\n\tend\n\tprefix = \"/ui/RunUIGroup/CardHand/Card\"\n\tcount = 0\n\tif self.Hand ~= nil then count = #self.Hand end\n\tfor i = 1, count do\n\t\txs[i] = self:GetHandSlotX(i)\n\tend\n\tbaseY = 0\n\thoverIndex = tonumber(string.match(path, \"Card(%d+)\")) or 0\nelseif string.find(path, \"/ui/RunUIGroup/RewardHud/Reward\") == 1 then\n\tprefix = \"/ui/RunUIGroup/RewardHud/Reward\"\n\tcount = 3\n\txs = { -300, 0, 300 }\n\tbaseY = 0\n\thoverIndex = tonumber(string.match(path, \"Reward(%d+)\")) or 0\nelseif string.find(path, \"/ui/RunUIGroup/ShopHud/Card\") == 1 then\n\tprefix = \"/ui/RunUIGroup/ShopHud/Card\"\n\tcount = 3\n\txs = { -300, 0, 300 }\n\tbaseY = 20\n\thoverIndex = tonumber(string.match(path, \"Card(%d+)\")) or 0\nend\nif count <= 0 then\n\treturn\nend\nif self.CardHoverTweenId ~= nil and self.CardHoverTweenId ~= 0 then\n\t_TimerService:ClearTimer(self.CardHoverTweenId)\n\tself.CardHoverTweenId = 0\nend\nlocal items = {}\nfor i = 1, count do\n\tlocal e = _EntityService:GetEntityByPath(prefix .. tostring(i))\n\tif e ~= nil and e.UITransformComponent ~= nil then\n\t\tlocal tr = e.UITransformComponent\n\t\tlocal tx = xs[i]\n\t\tlocal ty = baseY\n\t\tlocal sc = 1\n\t\tif hover == true and hoverIndex > 0 then\n\t\t\tif i == hoverIndex and e.Enable == true then\n\t\t\t\tsc = 1.5\n\t\t\telseif i < hoverIndex then\n\t\t\t\ttx = tx - push\n\t\t\telseif i > hoverIndex then\n\t\t\t\ttx = tx + push\n\t\t\tend\n\t\tend\n\t\ttable.insert(items, { tr = tr, sx = tr.anchoredPosition.x, sy = tr.anchoredPosition.y, ss = tr.UIScale.x, tx = tx, ty = ty, ts = sc })\n\tend\nend\nlocal elapsed = 0\nlocal duration = 0.12\nlocal eventId = 0\neventId = _TimerService:SetTimerRepeat(function()\n\telapsed = elapsed + 1 / 60\n\tlocal t = math.min(elapsed / duration, 1)\n\tlocal eased = _TweenLogic:Ease(0, 1, 1, EaseType.SineEaseOut, t)\n\tfor i = 1, #items do\n\t\tlocal it = items[i]\n\t\tlocal x = it.sx + (it.tx - it.sx) * eased\n\t\tlocal y = it.sy + (it.ty - it.sy) * eased\n\t\tlocal s = it.ss + (it.ts - it.ss) * eased\n\t\tit.tr.anchoredPosition = Vector2(x, y)\n\t\tit.tr.UIScale = Vector3(s, s, 1)\n\tend\n\tif t >= 1 then\n\t\t_TimerService:ClearTimer(eventId)\n\t\tif self.CardHoverTweenId == eventId then\n\t\t\tself.CardHoverTweenId = 0\n\t\tend\n\tend\nend, 1 / 60)\nself.CardHoverTweenId = eventId", + "Code": "local prefix = \"\"\nlocal count = 0\nlocal xs = {}\nlocal baseY = 0\nlocal hoverIndex = 0\nlocal push = 110\nif string.find(path, \"/ui/RunUIGroup/CardHand/Card\") == 1 then\n\tif self.DragSlot ~= nil and self.DragSlot > 0 then\n\t\treturn\n\tend\n\tprefix = \"/ui/RunUIGroup/CardHand/Card\"\n\tcount = 0\n\tif self.Hand ~= nil then count = #self.Hand end\n\tfor i = 1, count do\n\t\txs[i] = self:GetHandSlotX(i)\n\tend\n\tbaseY = 0\n\thoverIndex = tonumber(string.match(path, \"Card(%d+)\")) or 0\nelseif string.find(path, \"/ui/RunUIGroup/RewardHud/Reward\") == 1 then\n\tprefix = \"/ui/RunUIGroup/RewardHud/Reward\"\n\tcount = 3\n\txs = { -300, 0, 300 }\n\tbaseY = 0\n\thoverIndex = tonumber(string.match(path, \"Reward(%d+)\")) or 0\nelseif string.find(path, \"/ui/RunUIGroup/ShopHud/Card\") == 1 then\n\tprefix = \"/ui/RunUIGroup/ShopHud/Card\"\n\tcount = 3\n\txs = { -300, 0, 300 }\n\tbaseY = 20\n\thoverIndex = tonumber(string.match(path, \"Card(%d+)\")) or 0\nend\nif count <= 0 then\n\treturn\nend\nif self.CardHoverTweenId ~= nil and self.CardHoverTweenId ~= 0 then\n\t_TimerService:ClearTimer(self.CardHoverTweenId)\n\tself.CardHoverTweenId = 0\nend\nlocal items = {}\nfor i = 1, count do\n\tlocal e = _EntityService:GetEntityByPath(prefix .. self:IntStr(i))\n\tif e ~= nil and e.UITransformComponent ~= nil then\n\t\tlocal tr = e.UITransformComponent\n\t\tlocal tx = xs[i]\n\t\tlocal ty = baseY\n\t\tlocal sc = 1\n\t\tif hover == true and hoverIndex > 0 then\n\t\t\tif i == hoverIndex and e.Enable == true then\n\t\t\t\tsc = 1.5\n\t\t\telseif i < hoverIndex then\n\t\t\t\ttx = tx - push\n\t\t\telseif i > hoverIndex then\n\t\t\t\ttx = tx + push\n\t\t\tend\n\t\tend\n\t\ttable.insert(items, { tr = tr, sx = tr.anchoredPosition.x, sy = tr.anchoredPosition.y, ss = tr.UIScale.x, tx = tx, ty = ty, ts = sc })\n\tend\nend\nlocal elapsed = 0\nlocal duration = 0.12\nlocal eventId = 0\neventId = _TimerService:SetTimerRepeat(function()\n\telapsed = elapsed + 1 / 60\n\tlocal t = math.min(elapsed / duration, 1)\n\tlocal eased = _TweenLogic:Ease(0, 1, 1, EaseType.SineEaseOut, t)\n\tfor i = 1, #items do\n\t\tlocal it = items[i]\n\t\tlocal x = it.sx + (it.tx - it.sx) * eased\n\t\tlocal y = it.sy + (it.ty - it.sy) * eased\n\t\tlocal s = it.ss + (it.ts - it.ss) * eased\n\t\tit.tr.anchoredPosition = Vector2(x, y)\n\t\tit.tr.UIScale = Vector3(s, s, 1)\n\tend\n\tif t >= 1 then\n\t\t_TimerService:ClearTimer(eventId)\n\t\tif self.CardHoverTweenId == eventId then\n\t\t\tself.CardHoverTweenId = 0\n\t\tend\n\tend\nend, 1 / 60)\nself.CardHoverTweenId = eventId", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -2697,7 +2797,7 @@ "Name": "cardId" } ], - "Code": "self:ApplyCardFace(\"/ui/RunUIGroup/CardHand/Card\" .. tostring(slot), cardId)", + "Code": "self:ApplyCardFace(\"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(slot), cardId)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -2794,7 +2894,7 @@ "Name": "duration" } ], - "Code": "local cardEntity = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. tostring(slot))\nif cardEntity == nil or cardEntity.UITransformComponent == nil then\n\treturn\nend\nlocal tr = cardEntity.UITransformComponent\ntr.anchoredPosition = fromPos\nlocal elapsed = 0\nlocal eventId = 0\neventId = _TimerService:SetTimerRepeat(function()\n\telapsed = elapsed + 1 / 60\n\tlocal t = math.min(elapsed / duration, 1)\n\tlocal eased = _TweenLogic:Ease(0, 1, 1, EaseType.SineEaseOut, t)\n\ttr.anchoredPosition = Vector2(fromPos.x + (toPos.x - fromPos.x) * eased, fromPos.y + (toPos.y - fromPos.y) * eased)\n\tif t >= 1 then\n\t\t_TimerService:ClearTimer(eventId)\n\tend\nend, 1 / 60)", + "Code": "local cardEntity = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(slot))\nif cardEntity == nil or cardEntity.UITransformComponent == nil then\n\treturn\nend\nlocal tr = cardEntity.UITransformComponent\ntr.anchoredPosition = fromPos\nlocal elapsed = 0\nlocal eventId = 0\neventId = _TimerService:SetTimerRepeat(function()\n\telapsed = elapsed + 1 / 60\n\tlocal t = math.min(elapsed / duration, 1)\n\tlocal eased = _TweenLogic:Ease(0, 1, 1, EaseType.SineEaseOut, t)\n\ttr.anchoredPosition = Vector2(fromPos.x + (toPos.x - fromPos.x) * eased, fromPos.y + (toPos.y - fromPos.y) * eased)\n\tif t >= 1 then\n\t\t_TimerService:ClearTimer(eventId)\n\tend\nend, 1 / 60)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -2831,7 +2931,7 @@ "Name": "slots" } ], - "Code": "if cardIds == nil or slots == nil then\n\treturn\nend\nlocal target = Vector2(590, 8)\nlocal duration = 0.18\nfor i = 1, #cardIds do\n\tlocal slot = slots[i] or i\n\tlocal e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. tostring(slot))\n\tif e ~= nil then\n\t\te.Enable = true\n\t\tself:ApplyCardFace(\"/ui/RunUIGroup/CardHand/Card\" .. tostring(slot), cardIds[i])\n\t\tif e.UITransformComponent ~= nil then\n\t\t\tlocal sx = 0\n\t\t\tif startXs ~= nil and startXs[i] ~= nil then sx = startXs[i] else sx = self:GetHandSlotX(slot) end\n\t\t\te.UITransformComponent.anchoredPosition = Vector2(sx, 0)\n\t\t\te.UITransformComponent.UIScale = Vector3(1, 1, 1)\n\t\tend\n\tend\nend\nlocal elapsed = 0\nlocal eventId = 0\neventId = _TimerService:SetTimerRepeat(function()\n\telapsed = elapsed + 1 / 60\n\tlocal t = math.min(elapsed / duration, 1)\n\tlocal eased = _TweenLogic:Ease(0, 1, 1, EaseType.SineEaseIn, t)\n\tfor i = 1, #cardIds do\n\t\tlocal slot = slots[i] or i\n\t\tlocal e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. tostring(slot))\n\t\tif e ~= nil and e.UITransformComponent ~= nil then\n\t\t\tlocal sx = 0\n\t\t\tif startXs ~= nil and startXs[i] ~= nil then sx = startXs[i] else sx = self:GetHandSlotX(slot) end\n\t\t\tlocal x = sx + (target.x - sx) * eased\n\t\t\tlocal y = 0 + (target.y - 0) * eased\n\t\t\tlocal s = 1 - 0.25 * eased\n\t\t\te.UITransformComponent.anchoredPosition = Vector2(x, y)\n\t\t\te.UITransformComponent.UIScale = Vector3(s, s, 1)\n\t\tend\n\tend\n\tif t >= 1 then\n\t\t_TimerService:ClearTimer(eventId)\n\t\tfor i = 1, #cardIds do\n\t\t\tlocal slot = slots[i] or i\n\t\t\tlocal e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. tostring(slot))\n\t\t\tif e ~= nil then\n\t\t\t\tif self.Hand ~= nil and self.Hand[slot] ~= nil then\n\t\t\t\t\te.Enable = true\n\t\t\t\t\tself:ApplyCardVisual(slot, self.Hand[slot])\n\t\t\t\t\tif e.UITransformComponent ~= nil then\n\t\t\t\t\t\te.UITransformComponent.anchoredPosition = Vector2(self:GetHandSlotX(slot), 0)\n\t\t\t\t\t\te.UITransformComponent.UIScale = Vector3(1, 1, 1)\n\t\t\t\t\tend\n\t\t\t\telse\n\t\t\t\t\te.Enable = false\n\t\t\t\tend\n\t\t\tend\n\t\tend\n\tend\nend, 1 / 60)", + "Code": "if cardIds == nil or slots == nil then\n\treturn\nend\nlocal target = Vector2(590, 8)\nlocal duration = 0.18\nfor i = 1, #cardIds do\n\tlocal slot = slots[i] or i\n\tlocal e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(slot))\n\tif e ~= nil then\n\t\te.Enable = true\n\t\tself:ApplyCardFace(\"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(slot), cardIds[i])\n\t\tif e.UITransformComponent ~= nil then\n\t\t\tlocal sx = 0\n\t\t\tif startXs ~= nil and startXs[i] ~= nil then sx = startXs[i] else sx = self:GetHandSlotX(slot) end\n\t\t\te.UITransformComponent.anchoredPosition = Vector2(sx, 0)\n\t\t\te.UITransformComponent.UIScale = Vector3(1, 1, 1)\n\t\tend\n\tend\nend\nlocal elapsed = 0\nlocal eventId = 0\neventId = _TimerService:SetTimerRepeat(function()\n\telapsed = elapsed + 1 / 60\n\tlocal t = math.min(elapsed / duration, 1)\n\tlocal eased = _TweenLogic:Ease(0, 1, 1, EaseType.SineEaseIn, t)\n\tfor i = 1, #cardIds do\n\t\tlocal slot = slots[i] or i\n\t\tlocal e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(slot))\n\t\tif e ~= nil and e.UITransformComponent ~= nil then\n\t\t\tlocal sx = 0\n\t\t\tif startXs ~= nil and startXs[i] ~= nil then sx = startXs[i] else sx = self:GetHandSlotX(slot) end\n\t\t\tlocal x = sx + (target.x - sx) * eased\n\t\t\tlocal y = 0 + (target.y - 0) * eased\n\t\t\tlocal s = 1 - 0.25 * eased\n\t\t\te.UITransformComponent.anchoredPosition = Vector2(x, y)\n\t\t\te.UITransformComponent.UIScale = Vector3(s, s, 1)\n\t\tend\n\tend\n\tif t >= 1 then\n\t\t_TimerService:ClearTimer(eventId)\n\t\tfor i = 1, #cardIds do\n\t\t\tlocal slot = slots[i] or i\n\t\t\tlocal e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(slot))\n\t\t\tif e ~= nil then\n\t\t\t\tif self.Hand ~= nil and self.Hand[slot] ~= nil then\n\t\t\t\t\te.Enable = true\n\t\t\t\t\tself:ApplyCardVisual(slot, self.Hand[slot])\n\t\t\t\t\tif e.UITransformComponent ~= nil then\n\t\t\t\t\t\te.UITransformComponent.anchoredPosition = Vector2(self:GetHandSlotX(slot), 0)\n\t\t\t\t\t\te.UITransformComponent.UIScale = Vector3(1, 1, 1)\n\t\t\t\t\tend\n\t\t\t\telse\n\t\t\t\t\te.Enable = false\n\t\t\t\tend\n\t\t\tend\n\t\tend\n\tend\nend, 1 / 60)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -2860,6 +2960,64 @@ "Attributes": [], "Name": "AddCardBlock" }, + { + "Return": { + "Type": "void", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "any", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "hitDamages" + }, + { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "roundPlannedDamage" + }, + { + "Type": "boolean", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "useAoe" + }, + { + "Type": "boolean", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "randomTargetEachHit" + }, + { + "Type": "boolean", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "pierce" + }, + { + "Type": "boolean", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "repeatOnKill" + } + ], + "Code": "if hitDamages == nil or #hitDamages <= 0 then\n\treturn\nend\nlocal function countAliveMonsters()\n\tlocal n = 0\n\tif 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\tn = n + 1\n\t\t\tend\n\t\tend\n\tend\n\treturn n\nend\nlocal function randomAliveMonsterIndex()\n\tlocal alive = {}\n\tif 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(alive, mi)\n\t\t\tend\n\t\tend\n\tend\n\tif #alive <= 0 then\n\t\treturn 0\n\tend\n\treturn alive[math.random(1, #alive)]\nend\nself.FxBusy = true\nlocal hitIndex = 1\nlocal lockedTargetIndex = self.TargetIndex or 0\nlocal function finishSequence()\n\tself.FxBusy = false\n\tself.ActiveAttackDamageVsWeakMultiplier = 1\n\tself:RenderCombat()\n\tself:CheckCombatEnd()\nend\nlocal function step()\n\tif self.CombatOver == true then\n\t\tfinishSequence()\n\t\treturn\n\tend\n\tif countAliveMonsters() <= 0 then\n\t\tfinishSequence()\n\t\treturn\n\tend\n\tif hitIndex == 1 then\n\t\tself.DamageDealtThisTurn = (self.DamageDealtThisTurn or 0) + (roundPlannedDamage or 0)\n\tend\n\tlocal roundKilled = false\n\tif useAoe == true then\n\t\troundKilled = self:DealDamageToAllMonsters(hitDamages[hitIndex] or 0, true)\n\telse\n\t\tlocal targetIdx = lockedTargetIndex\n\t\tif randomTargetEachHit == true then\n\t\t\ttargetIdx = randomAliveMonsterIndex()\n\t\tend\n\t\tif targetIdx ~= nil and targetIdx > 0 then\n\t\t\tif randomTargetEachHit ~= true then\n\t\t\t\tlocal lockedMonster = nil\n\t\t\t\tif self.Monsters ~= nil then\n\t\t\t\t\tlockedMonster = self.Monsters[targetIdx]\n\t\t\t\tend\n\t\t\t\tif lockedMonster == nil or lockedMonster.alive ~= true then\n\t\t\t\t\tfinishSequence()\n\t\t\t\t\treturn\n\t\t\t\tend\n\t\t\tend\n\t\t\tlocal prev = self.TargetIndex\n\t\t\tself.TargetIndex = targetIdx\n\t\t\troundKilled = self:DealDamageToTarget(hitDamages[hitIndex] or 0, pierce == true)\n\t\t\tself.TargetIndex = prev\n\t\tend\n\tend\n\tself:RenderCombat()\n\tself:CheckCombatEnd()\n\thitIndex = hitIndex + 1\n\tif self.CombatOver == true then\n\t\tfinishSequence()\n\t\treturn\n\tend\n\tif hitIndex <= #hitDamages then\n\t\t_TimerService:SetTimerOnce(step, 0.2)\n\t\treturn\n\tend\n\tif repeatOnKill == true and roundKilled == true and countAliveMonsters() > 0 then\n\t\thitIndex = 1\n\t\t_TimerService:SetTimerOnce(step, 0.2)\n\t\treturn\n\tend\n\tfinishSequence()\nend\nstep()", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "RunAttackSequence" + }, { "Return": { "Type": "number", @@ -2883,6 +3041,174 @@ "Attributes": [], "Name": "CountOtherHandSkills" }, + { + "Return": { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "match" + } + ], + "Code": "if match == nil or match == \"\" then\n\treturn 0\nend\nlocal n = 0\nlocal function countPile(pile)\n\tif pile == nil then return end\n\tfor i = 1, #pile do\n\t\tlocal c2 = self.Cards[pile[i]]\n\t\tlocal name = \"\"\n\t\tif c2 ~= nil and c2.name ~= nil then name = c2.name end\n\t\tif string.find(name, match, 1, true) ~= nil then\n\t\t\tn = n + 1\n\t\tend\n\tend\nend\ncountPile(self.Hand)\ncountPile(self.DrawPile)\ncountPile(self.DiscardPile)\ncountPile(self.ExhaustPile)\nreturn n", + "Scope": 2, + "ExecSpace": 6, + "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", @@ -2907,12 +3233,217 @@ "Name": "c" } ], - "Code": "local base2 = c.damage or 0\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": [], "Name": "AttackBaseForCard" }, + { + "Return": { + "Type": "void", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "count" + } + ], + "Code": "if count == nil or count <= 0 then\n\treturn\nend\nlocal drawOnExhaust = self:AddPowerFieldTotal(\"drawOnExhaust\")\nif drawOnExhaust ~= nil and drawOnExhaust > 0 then\n\tself:DrawCards(drawOnExhaust * count, true)\nend", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "TriggerExhaustEffects" + }, + { + "Return": { + "Type": "void", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "cardId" + } + ], + "Code": "if cardId == nil or cardId == \"\" then\n\treturn\nend\nif self.ZeroCostCardIdsThisTurn == nil then\n\tself.ZeroCostCardIdsThisTurn = {}\nend\nself.ZeroCostCardIdsThisTurn[cardId] = true", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "MarkCardCostZeroThisTurn" + }, + { + "Return": { + "Type": "boolean", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "cardId" + }, + { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "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\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": [], + "Name": "AutoPlayCardId" + }, + { + "Return": { + "Type": "boolean", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "cardId" + } + ], + "Code": "if cardId == nil or cardId == \"\" or self.Hand == nil or self.PlayerPowers == nil then\n\treturn false\nend\nlocal c = self.Cards[cardId]\nif c == nil or c.name == nil or c.name == \"\" then\n\treturn false\nend\nfor i = 1, #self.PlayerPowers do\n\tlocal powerCard = self.Cards[self.PlayerPowers[i]]\n\tif powerCard ~= nil and powerCard.drawNameMatchAutoPlay ~= nil and powerCard.drawNameMatchAutoPlay ~= \"\" then\n\t\tif string.find(c.name, powerCard.drawNameMatchAutoPlay, 1, true) ~= nil then\n\t\t\tlocal foundSlot = 0\n\t\t\tfor hi = 1, #self.Hand do\n\t\t\t\tif self.Hand[hi] == cardId then\n\t\t\t\t\tfoundSlot = hi\n\t\t\t\t\tbreak\n\t\t\t\tend\n\t\t\tend\n\t\t\tif foundSlot <= 0 then\n\t\t\t\treturn false\n\t\t\tend\n\t\t\ttable.remove(self.Hand, foundSlot)\n\t\t\tself:AutoPlayCardId(cardId, 0)\n\t\t\treturn true\n\t\tend\n\tend\nend\nreturn false", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "TriggerDrawnCardAutoPlay" + }, + { + "Return": { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "any", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "c" + }, + { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "energySpent" + } + ], + "Code": "if c == nil or self.DrawPile == nil then\n\treturn 0\nend\nlocal count = c.playTopDrawPileCount or 0\nif c.playTopDrawPileCountPerEnergy ~= nil and c.playTopDrawPileCountPerEnergy > 0 then\n\tcount = count + ((energySpent or 0) * c.playTopDrawPileCountPerEnergy)\nend\nif count <= 0 then\n\treturn 0\nend\nlocal played = 0\nfor i = 1, count do\n\tif #self.DrawPile <= 0 then\n\t\tbreak\n\tend\n\tlocal topCardId = table.remove(self.DrawPile)\n\tif topCardId ~= nil then\n\t\tself:AutoPlayCardId(topCardId, 0)\n\t\tplayed = played + 1\n\tend\nend\nreturn played", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "PlayTopDrawPileCards" + }, + { + "Return": { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "any", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "c" + }, + { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "count" + } + ], + "Code": "if c == nil or count == nil or count <= 0 then\n\treturn 0\nend\nlocal pool = {}\nfor id, rc in pairs(self.Cards) do\n\tif rc ~= nil and rc.token ~= true and rc.curse ~= true and rc.unplayable ~= true then\n\t\tlocal ok = true\n\t\tif c.addRandomCardKind ~= nil and rc.kind ~= c.addRandomCardKind then ok = false end\n\t\tif c.addRandomCardSameClass == true and rc.class ~= c.class then ok = false end\n\t\tif ok == true then table.insert(pool, id) end\n\tend\nend\nif #pool <= 0 then\n\treturn 0\nend\nlocal added = 0\nfor i = 1, count do\n\tlocal cardId2 = pool[math.random(1, #pool)]\n\tif cardId2 ~= nil then\n\t\tself:AddCardsToHand(cardId2, 1)\n\t\tif c.addedCardsCostZeroThisTurn == true then\n\t\t\tself:MarkCardCostZeroThisTurn(cardId2)\n\t\tend\n\t\tadded = added + 1\n\tend\nend\nreturn added", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "AddRandomCardsFromEffect" + }, + { + "Return": { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "any", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "c" + } + ], + "Code": "if c == nil or c.exhaustHandNonAttack ~= true or self.Hand == nil or #self.Hand <= 0 then\n\treturn 0\nend\nlocal exhausted = 0\nfor i = #self.Hand, 1, -1 do\n\tlocal cardId2 = self.Hand[i]\n\tlocal hc = self.Cards[cardId2]\n\tif hc == nil or hc.kind ~= \"Attack\" then\n\t\ttable.remove(self.Hand, i)\n\t\tif self.ExhaustPile == nil then self.ExhaustPile = {} end\n\t\ttable.insert(self.ExhaustPile, cardId2)\n\t\texhausted = exhausted + 1\n\tend\nend\nif exhausted > 0 then\n\tif c.blockPerExhaustedCard ~= nil and c.blockPerExhaustedCard > 0 then\n\t\tself:AddCardBlock(exhausted * c.blockPerExhaustedCard)\n\tend\n\tself:TriggerExhaustEffects(exhausted)\nend\nreturn exhausted", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "ExhaustHandNonAttack" + }, + { + "Return": { + "Type": "number", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "any", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "c" + } + ], + "Code": "if c == nil or c.exhaustHandAll ~= true or self.Hand == nil or #self.Hand <= 0 then\n\treturn 0\nend\nlocal exhausted = 0\nwhile #self.Hand > 0 do\n\tlocal cardId2 = table.remove(self.Hand)\n\tif self.ExhaustPile == nil then self.ExhaustPile = {} end\n\ttable.insert(self.ExhaustPile, cardId2)\n\texhausted = exhausted + 1\nend\nif exhausted > 0 then\n\tself:TriggerExhaustEffects(exhausted)\nend\nreturn exhausted", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "ExhaustHandAll" + }, { "Return": { "Type": "number", @@ -3034,7 +3565,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 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(math.floor(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", + "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 hitDamages = {}\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\tlocal hitDamage = self:CalcPlayerAttack(baseDmg)\n\t\t\thitDamages[h] = hitDamage\n\t\t\ttotal = total + hitDamage\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\tself:RunAttackSequence(hitDamages, total, useAoe, c.randomTargetEachHit == true, c.pierce == true, c.repeatOnKill == true)\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": [], @@ -3361,7 +3892,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\tself: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 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: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 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\ntable.remove(self.Hand, slot)\nif c.exhaust == true then\n\tif self.ExhaustPile == nil then self.ExhaustPile = {} end\n\ttable.insert(self.ExhaustPile, cardId)\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": [], @@ -3422,7 +3953,7 @@ "Name": null }, "Arguments": [], - "Code": "local dragActive = self.DragTargetIndex ~= nil and self.DragTargetIndex > 0\nlocal shownTarget = self.TargetIndex\nif dragActive == true then shownTarget = self.DragTargetIndex end\nfor i = 1, #self.Monsters do\n\tlocal m = self.Monsters[i]\n\tlocal active = false\n\tif m ~= nil and m.alive == true and i == shownTarget then active = true end\n\tself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. tostring(i) .. \"/TargetMarker\", active and dragActive)\n\tself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. tostring(i) .. \"/TargetMarker/Label\", active and dragActive)\nend", + "Code": "local dragActive = self.DragTargetIndex ~= nil and self.DragTargetIndex > 0\nlocal shownTarget = self.TargetIndex\nif dragActive == true then shownTarget = self.DragTargetIndex end\nfor i = 1, #self.Monsters do\n\tlocal m = self.Monsters[i]\n\tlocal active = false\n\tif m ~= nil and m.alive == true and i == shownTarget then active = true end\n\tself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. self:IntStr(i) .. \"/TargetMarker\", active and dragActive)\n\tself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. self:IntStr(i) .. \"/TargetMarker/Label\", active and dragActive)\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3445,7 +3976,7 @@ "Name": "slot" } ], - "Code": "if self.CombatOver == true or self.FxBusy == true or self.TurnBusy == true then\n\treturn\nend\nif self.Hand == nil or self.Hand[slot] == nil then\n\treturn\nend\nif self.CardHoverTweenId ~= nil and self.CardHoverTweenId ~= 0 then\n\t_TimerService:ClearTimer(self.CardHoverTweenId)\n\tself.CardHoverTweenId = 0\nend\nfor i = 1, 10 do\n\tlocal e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. tostring(i))\n\tif e ~= nil and e.UITransformComponent ~= nil then\n\t\te.UITransformComponent.UIScale = Vector3(1, 1, 1)\n\t\te.UITransformComponent.anchoredPosition = Vector2(self:GetHandSlotX(i), 0)\n\tend\nend\nself.DragSlot = slot\nself.DragTargetIndex = 0\nself:RenderTargetFrames()", + "Code": "if self.CombatOver == true or self.FxBusy == true or self.TurnBusy == true then\n\treturn\nend\nif self.Hand == nil or self.Hand[slot] == nil then\n\treturn\nend\nif self.CardHoverTweenId ~= nil and self.CardHoverTweenId ~= 0 then\n\t_TimerService:ClearTimer(self.CardHoverTweenId)\n\tself.CardHoverTweenId = 0\nend\nfor i = 1, 10 do\n\tlocal e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(i))\n\tif e ~= nil and e.UITransformComponent ~= nil then\n\t\te.UITransformComponent.UIScale = Vector3(1, 1, 1)\n\t\te.UITransformComponent.anchoredPosition = Vector2(self:GetHandSlotX(i), 0)\n\tend\nend\nself.DragSlot = slot\nself.DragTargetIndex = 0\nself:RenderTargetFrames()", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3475,7 +4006,7 @@ "Name": "touchPoint" } ], - "Code": "if self.DragSlot ~= slot then\n\treturn\nend\nlocal e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. tostring(slot))\nif e ~= nil and e.UITransformComponent ~= nil then\n\tlocal ui = _UILogic:ScreenToUIPosition(touchPoint)\n\te.UITransformComponent.anchoredPosition = Vector2(ui.x, ui.y + 360)\nend\nlocal cardId = self.Hand[slot]\nlocal c = nil\nif cardId ~= nil then c = self.Cards[cardId] end\nif c ~= nil and c.kind == \"Attack\" then\n\tlocal best = self:FindMonsterAtTouch(touchPoint)\n\tif best ~= self.DragTargetIndex then\n\t\tself.DragTargetIndex = best\n\t\tself:RenderTargetFrames()\n\tend\nend", + "Code": "if self.DragSlot ~= slot then\n\treturn\nend\nlocal e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(slot))\nif e ~= nil and e.UITransformComponent ~= nil then\n\tlocal ui = _UILogic:ScreenToUIPosition(touchPoint)\n\te.UITransformComponent.anchoredPosition = Vector2(ui.x, ui.y + 360)\nend\nlocal cardId = self.Hand[slot]\nlocal c = nil\nif cardId ~= nil then c = self.Cards[cardId] end\nif c ~= nil and c.kind == \"Attack\" then\n\tlocal best = self:FindMonsterAtTouch(touchPoint)\n\tif best ~= self.DragTargetIndex then\n\t\tself.DragTargetIndex = best\n\t\tself:RenderTargetFrames()\n\tend\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3505,7 +4036,7 @@ "Name": "touchPoint" } ], - "Code": "if self.DragSlot ~= slot then\n\treturn\nend\nself.DragSlot = 0\nlocal e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. tostring(slot))\nif e ~= nil and e.UITransformComponent ~= nil then\n\te.UITransformComponent.anchoredPosition = Vector2(self:GetHandSlotX(slot), 0)\n\te.UITransformComponent.UIScale = Vector3(1, 1, 1)\nend\nself:ResolveCardDrop(slot, touchPoint)", + "Code": "if self.DragSlot ~= slot then\n\treturn\nend\nself.DragSlot = 0\nlocal e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(slot))\nif e ~= nil and e.UITransformComponent ~= nil then\n\te.UITransformComponent.anchoredPosition = Vector2(self:GetHandSlotX(slot), 0)\n\te.UITransformComponent.UIScale = Vector3(1, 1, 1)\nend\nself:ResolveCardDrop(slot, touchPoint)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3588,7 +4119,7 @@ "Name": "pierce" } ], - "Code": "local m = self.Monsters[self.TargetIndex]\nif m == nil or m.alive ~= true then\n\tm = nil\n\tfor i = 1, #self.Monsters do\n\t\tif self.Monsters[i].alive == true then m = self.Monsters[i]; self.TargetIndex = i; break end\n\tend\nend\nif m == nil then\n\treturn false\nend\nlocal dmg = amount\nif m.vuln > 0 then\n\tdmg = math.floor(dmg * 1.5)\nend\nif m.weak > 0 and self.ActiveAttackDamageVsWeakMultiplier ~= nil and self.ActiveAttackDamageVsWeakMultiplier > 1 then\n\tdmg = math.floor(dmg * self.ActiveAttackDamageVsWeakMultiplier)\nend\nif m.block > 0 and pierce ~= true then\n\tlocal absorbed = math.min(m.block, dmg)\n\tm.block = m.block - absorbed\n\tdmg = dmg - absorbed\nend\nm.hp = m.hp - dmg\nif dmg > 0 then\n\tlocal poison = self:AddPowerFieldTotal(\"attackPoison\")\n\tif poison ~= nil and poison > 0 then\n\t\tself:ApplyPoisonToMonster(m, poison)\n\tend\nend\nself:ShowDmgPop(m.slot, dmg)\nself:MonsterHitMotion(m.slot)\nlocal killed = false\nif m.hp <= 0 then\n\tm.hp = 0\n\tself:KillMonster(m.slot)\n\tkilled = true\nend\nreturn killed", + "Code": "local m = self.Monsters[self.TargetIndex]\nif m == nil or m.alive ~= true then\n\tm = nil\n\tfor i = 1, #self.Monsters do\n\t\tif self.Monsters[i].alive == true then m = self.Monsters[i]; self.TargetIndex = i; break end\n\tend\nend\nif m == nil then\n\treturn false\nend\nlocal dmg = amount\nif m.vuln > 0 then\n\tdmg = math.floor(dmg * 1.5)\nend\nif m.weak > 0 and self.ActiveAttackDamageVsWeakMultiplier ~= nil and self.ActiveAttackDamageVsWeakMultiplier > 1 then\n\tdmg = math.floor(dmg * self.ActiveAttackDamageVsWeakMultiplier)\nend\nif m.block > 0 and pierce ~= true then\n\tlocal absorbed = math.min(m.block, dmg)\n\tm.block = m.block - absorbed\n\tdmg = dmg - absorbed\nend\nself:ShakeCombatCamera()\nm.hp = m.hp - dmg\nif dmg > 0 then\n\tlocal poison = self:AddPowerFieldTotal(\"attackPoison\")\n\tif poison ~= nil and poison > 0 then\n\t\tself:ApplyPoisonToMonster(m, poison)\n\tend\nend\nself:ShowDmgPop(m.slot, dmg)\nself:MonsterHitMotion(m.slot)\nlocal killed = false\nif m.hp <= 0 then\n\tm.hp = 0\n\tself:KillMonster(m.slot)\n\tif self.ActiveKillReward ~= nil and self.ActiveKillReward > 0 then\n\t\tself.BonusRewardScreens = (self.BonusRewardScreens or 0) + self.ActiveKillReward\n\tend\n\tif self.ActiveKillMaxHpGain ~= nil and self.ActiveKillMaxHpGain > 0 then\n\t\tself.PlayerMaxHp = self.PlayerMaxHp + self.ActiveKillMaxHpGain\n\t\tself.PlayerHp = self.PlayerHp + self.ActiveKillMaxHpGain\n\tend\n\tkilled = true\nend\nreturn killed", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3611,7 +4142,7 @@ "Name": "amount" } ], - "Code": "local m = self.Monsters[self.TargetIndex]\nif m == nil or m.alive ~= true then\n\tm = nil\n\tfor i = 1, #self.Monsters do\n\t\tif self.Monsters[i].alive == true then m = self.Monsters[i]; self.TargetIndex = i; break end\n\tend\nend\nif m == nil then\n\treturn false\nend\nm.hp = m.hp - amount\nself:ShowDmgPop(m.slot, amount)\nself:MonsterHitMotion(m.slot)\nlocal killed = false\nif m.hp <= 0 then\n\tm.hp = 0\n\tself:KillMonster(m.slot)\n\tkilled = true\nend\nreturn killed", + "Code": "local m = self.Monsters[self.TargetIndex]\nif m == nil or m.alive ~= true then\n\tm = nil\n\tfor i = 1, #self.Monsters do\n\t\tif self.Monsters[i].alive == true then m = self.Monsters[i]; self.TargetIndex = i; break end\n\tend\nend\nif m == nil then\n\treturn false\nend\nself:ShakeCombatCamera()\nm.hp = m.hp - amount\nself:ShowDmgPop(m.slot, amount)\nself:MonsterHitMotion(m.slot)\nlocal killed = false\nif m.hp <= 0 then\n\tm.hp = 0\n\tself:KillMonster(m.slot)\n\tkilled = true\nend\nreturn killed", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3634,7 +4165,7 @@ "Name": "amount" } ], - "Code": "local alive = {}\nfor i = 1, #self.Monsters do\n\tlocal m = self.Monsters[i]\n\tif m ~= nil and m.alive == true then\n\t\ttable.insert(alive, m)\n\tend\nend\nif #alive <= 0 then\n\treturn false\nend\nlocal m = alive[math.random(1, #alive)]\nif m == nil then\n\treturn false\nend\nm.hp = m.hp - amount\nself:ShowDmgPop(m.slot, amount)\nself:MonsterHitMotion(m.slot)\nlocal killed = false\nif m.hp <= 0 then\n\tm.hp = 0\n\tself:KillMonster(m.slot)\n\tkilled = true\nend\nreturn killed", + "Code": "local alive = {}\nfor i = 1, #self.Monsters do\n\tlocal m = self.Monsters[i]\n\tif m ~= nil and m.alive == true then\n\t\ttable.insert(alive, m)\n\tend\nend\nif #alive <= 0 then\n\treturn false\nend\nlocal m = alive[math.random(1, #alive)]\nif m == nil then\n\treturn false\nend\nself:ShakeCombatCamera()\nm.hp = m.hp - amount\nself:ShowDmgPop(m.slot, amount)\nself:MonsterHitMotion(m.slot)\nlocal killed = false\nif m.hp <= 0 then\n\tm.hp = 0\n\tself:KillMonster(m.slot)\n\tkilled = true\nend\nreturn killed", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3664,7 +4195,7 @@ "Name": "amount" } ], - "Code": "if target == nil or target.alive ~= true or amount == nil or amount <= 0 then\n\treturn\nend\nif target.artifact ~= nil and target.artifact > 0 then\n\ttarget.artifact = target.artifact - 1\n\treturn\nend\ntarget.poison = (target.poison or 0) + amount\nself.PoisonApplicationsThisCombat = (self.PoisonApplicationsThisCombat or 0) + 1\nlocal burstEvery = self:AddPowerFieldTotal(\"poisonApplicationBurstEvery\")\nlocal burstDamage = self:AddPowerFieldTotal(\"poisonApplicationBurstDamage\")\nif burstEvery ~= nil and burstEvery > 0 and burstDamage ~= nil and burstDamage > 0 then\n\tif (self.PoisonApplicationsThisCombat % burstEvery) == 0 then\n\t\tself:DealDamageToAllMonsters(burstDamage)\n\tend\nend", + "Code": "if target == nil or target.alive ~= true or amount == nil or amount <= 0 then\n\treturn\nend\nif target.artifact ~= nil and target.artifact > 0 then\n\ttarget.artifact = target.artifact - 1\n\treturn\nend\ntarget.poison = (target.poison or 0) + amount\nself.PoisonApplicationsThisCombat = (self.PoisonApplicationsThisCombat or 0) + 1\nlocal burstEvery = self:AddPowerFieldTotal(\"poisonApplicationBurstEvery\")\nlocal burstDamage = self:AddPowerFieldTotal(\"poisonApplicationBurstDamage\")\nif burstEvery ~= nil and burstEvery > 0 and burstDamage ~= nil and burstDamage > 0 then\n\tif (self.PoisonApplicationsThisCombat % burstEvery) == 0 then\n\t\tself:DealDamageToAllMonsters(burstDamage, false)\n\tend\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3694,7 +4225,7 @@ "Name": "isAttack" } ], - "Code": "if self.Monsters == nil then\n\treturn false\nend\nlocal killCount = 0\nfor i = 1, #self.Monsters do\n\tlocal m = self.Monsters[i]\n\tif m ~= nil and m.alive == true then\n\t\tlocal dmg = amount\n\t\tif isAttack == true and m.vuln > 0 then\n\t\t\tdmg = math.floor(dmg * 1.5)\n\t\tend\n\t\tif m.block > 0 then\n\t\t\tlocal absorbed = math.min(m.block, dmg)\n\t\t\tm.block = m.block - absorbed\n\t\t\tdmg = dmg - absorbed\n\t\tend\n\t\tm.hp = m.hp - dmg\n\t\tif dmg > 0 then\n\t\t\tself.DamageDealtThisTurn = (self.DamageDealtThisTurn or 0) + dmg\n\t\t\tif isAttack == true then\n\t\t\t\tlocal poison = self:AddPowerFieldTotal(\"attackPoison\")\n\t\t\t\tif poison ~= nil and poison > 0 then\n\t\t\t\t\tself:ApplyPoisonToMonster(m, poison)\n\t\t\t\tend\n\t\t\tend\n\t\tend\n\t\tself:ShowDmgPop(i, dmg)\n\t\tself:MonsterHitMotion(i)\n\t\tif m.hp <= 0 then\n\t\t\tm.hp = 0\n\t\t\tself:KillMonster(m.slot)\n\t\t\tkillCount = killCount + 1\n\t\tend\n\tend\nend\nif killCount > 0 and self.ActiveKillReward ~= nil and self.ActiveKillReward > 0 then\n\tself.BonusRewardScreens = (self.BonusRewardScreens or 0) + (killCount * self.ActiveKillReward)\nend\nself:RenderCombat()\nself:CheckCombatEnd()\nreturn killCount > 0", + "Code": "if self.Monsters == nil then\n\treturn false\nend\nlocal anyAlive = false\nfor i = 1, #self.Monsters do\n\tlocal m = self.Monsters[i]\n\tif m ~= nil and m.alive == true then\n\t\tanyAlive = true\n\t\tbreak\n\tend\nend\nif anyAlive == true and isAttack == true then\n\tself:ShakeCombatCamera()\nend\nlocal killCount = 0\nfor i = 1, #self.Monsters do\n\tlocal m = self.Monsters[i]\n\tif m ~= nil and m.alive == true then\n\t\tlocal dmg = amount\n\t\tif isAttack == true and m.vuln > 0 then\n\t\t\tdmg = math.floor(dmg * 1.5)\n\t\tend\n\t\tif m.block > 0 then\n\t\t\tlocal absorbed = math.min(m.block, dmg)\n\t\t\tm.block = m.block - absorbed\n\t\t\tdmg = dmg - absorbed\n\t\tend\n\t\tm.hp = m.hp - dmg\n\t\tif dmg > 0 then\n\t\t\tself.DamageDealtThisTurn = (self.DamageDealtThisTurn or 0) + dmg\n\t\t\tif isAttack == true then\n\t\t\t\tlocal poison = self:AddPowerFieldTotal(\"attackPoison\")\n\t\t\t\tif poison ~= nil and poison > 0 then\n\t\t\t\t\tself:ApplyPoisonToMonster(m, poison)\n\t\t\t\tend\n\t\t\tend\n\t\tend\n\t\tself:ShowDmgPop(i, dmg)\n\t\tself:MonsterHitMotion(i)\n\t\tif m.hp <= 0 then\n\t\t\tm.hp = 0\n\t\t\tself:KillMonster(m.slot)\n\t\t\tkillCount = killCount + 1\n\t\tend\n\tend\nend\nif killCount > 0 and self.ActiveKillReward ~= nil and self.ActiveKillReward > 0 then\n\tself.BonusRewardScreens = (self.BonusRewardScreens or 0) + (killCount * self.ActiveKillReward)\nend\nif killCount > 0 and self.ActiveKillMaxHpGain ~= nil and self.ActiveKillMaxHpGain > 0 then\n\tlocal gain = killCount * self.ActiveKillMaxHpGain\n\tself.PlayerMaxHp = self.PlayerMaxHp + gain\n\tself.PlayerHp = self.PlayerHp + gain\nend\nself:RenderCombat()\nself:CheckCombatEnd()\nreturn killCount > 0", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3738,7 +4269,7 @@ "Name": "pierce" } ], - "Code": "local m = self.Monsters[targetIndex]\nif m == nil or m.alive ~= true or m.entity == nil or not isvalid(m.entity) then\n\tself:DealDamageToTarget(damage, pierce)\n\tself.ActiveAttackDamageVsWeakMultiplier = 1\n\tself:RenderCombat()\n\tself:CheckCombatEnd()\n\treturn\nend\nself.FxBusy = true\nlocal fx = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/SkillFx\")\nif fx ~= nil then\n\tif fx.SpriteGUIRendererComponent ~= nil and image ~= nil and image ~= \"\" then\n\t\tfx.SpriteGUIRendererComponent.ImageRUID = image\n\tend\n\tif fx.UITransformComponent ~= nil and m.entity.TransformComponent ~= nil then\n\t\tlocal wp = m.entity.TransformComponent.WorldPosition\n\t\tlocal sp = _UILogic:WorldToScreenPosition(Vector2(wp.x, wp.y + 0.7))\n\t\tfx.UITransformComponent.anchoredPosition = _UILogic:ScreenToUIPosition(sp)\n\tend\n\tfx.Enable = true\nend\n_TimerService:SetTimerOnce(function()\n\tif fx ~= nil then fx.Enable = false end\n\tself.FxBusy = false\n\tlocal shown = damage\n\tlocal mt = self.Monsters[targetIndex]\n\tif mt ~= nil and mt.alive == true and mt.vuln > 0 then\n\t\tshown = math.floor(damage * 1.5)\n\tend\n\tif mt ~= nil and mt.alive == true and mt.weak > 0 and self.ActiveAttackDamageVsWeakMultiplier ~= nil and self.ActiveAttackDamageVsWeakMultiplier > 1 then\n\t\tshown = math.floor(shown * self.ActiveAttackDamageVsWeakMultiplier)\n\tend\n\tlocal killed = self:DealDamageToTarget(damage, pierce)\n\tif killed == true and self.ActiveKillReward ~= nil and self.ActiveKillReward > 0 then\n\t\tself.BonusRewardScreens = (self.BonusRewardScreens or 0) + self.ActiveKillReward\n\tend\n\tself.ActiveKillReward = 0\n\tself.ActiveAttackDamageVsWeakMultiplier = 1\n\tself:ShowDmgPop(targetIndex, shown)\n\tself:RenderCombat()\n\tself:CheckCombatEnd()\nend, 0.35)", + "Code": "local m = self.Monsters[targetIndex]\nif m == nil or m.alive ~= true or m.entity == nil or not isvalid(m.entity) then\n\tlocal shown = damage\n\tif m ~= nil and m.alive == true and m.vuln > 0 then\n\t\tshown = math.floor(damage * 1.5)\n\tend\n\tif m ~= nil and m.alive == true and m.weak > 0 and self.ActiveAttackDamageVsWeakMultiplier ~= nil and self.ActiveAttackDamageVsWeakMultiplier > 1 then\n\t\tshown = math.floor(shown * self.ActiveAttackDamageVsWeakMultiplier)\n\tend\n\tself:DealDamageToTarget(damage, pierce)\n\tself.ActiveAttackDamageVsWeakMultiplier = 1\n\tself:RenderCombat()\n\tself:CheckCombatEnd()\n\treturn\nend\nself.FxBusy = true\nlocal fx = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/SkillFx\")\nif fx ~= nil then\n\tif fx.SpriteGUIRendererComponent ~= nil and image ~= nil and image ~= \"\" then\n\t\tfx.SpriteGUIRendererComponent.ImageRUID = image\n\tend\n\tif fx.UITransformComponent ~= nil and m.entity.TransformComponent ~= nil then\n\t\tlocal wp = m.entity.TransformComponent.WorldPosition\n\t\tlocal sp = _UILogic:WorldToScreenPosition(Vector2(wp.x, wp.y + 0.7))\n\t\tfx.UITransformComponent.anchoredPosition = _UILogic:ScreenToUIPosition(sp)\n\tend\n\tfx.Enable = true\nend\n_TimerService:SetTimerOnce(function()\n\tif fx ~= nil then fx.Enable = false end\n\tself.FxBusy = false\n\tlocal shown = damage\n\tlocal mt = self.Monsters[targetIndex]\n\tif mt ~= nil and mt.alive == true and mt.vuln > 0 then\n\t\tshown = math.floor(damage * 1.5)\n\tend\n\tif mt ~= nil and mt.alive == true and mt.weak > 0 and self.ActiveAttackDamageVsWeakMultiplier ~= nil and self.ActiveAttackDamageVsWeakMultiplier > 1 then\n\t\tshown = math.floor(shown * self.ActiveAttackDamageVsWeakMultiplier)\n\tend\n\tlocal killed = self:DealDamageToTarget(damage, pierce)\n\tself.ActiveKillReward = 0\n\tself.ActiveKillMaxHpGain = 0\n\tself.ActiveAttackDamageVsWeakMultiplier = 1\n\tself:RenderCombat()\n\tself:CheckCombatEnd()\nend, 0.35)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3768,7 +4299,7 @@ "Name": "damage" } ], - "Code": "self.FxBusy = true\nlocal fx = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/SkillFx\")\nif fx ~= nil then\n\tif fx.SpriteGUIRendererComponent ~= nil and image ~= nil and image ~= \"\" then\n\t\tfx.SpriteGUIRendererComponent.ImageRUID = image\n\tend\n\tif fx.UITransformComponent ~= nil then\n\t\tfx.UITransformComponent.anchoredPosition = Vector2(300, 60)\n\tend\n\tfx.Enable = true\nend\n_TimerService:SetTimerOnce(function()\n\tif fx ~= nil then fx.Enable = false end\n\tself.FxBusy = false\n\tlocal killCount = 0\n\tfor i = 1, #self.Monsters do\n\t\tlocal m = self.Monsters[i]\n\t\tif m ~= nil and m.alive == true then\n\t\t\tlocal dmg = damage\n\t\t\tif m.vuln > 0 then\n\t\t\t\tdmg = math.floor(dmg * 1.5)\n\t\t\tend\n\t\t\tif m.weak > 0 and self.ActiveAttackDamageVsWeakMultiplier ~= nil and self.ActiveAttackDamageVsWeakMultiplier > 1 then\n\t\t\t\tdmg = math.floor(dmg * self.ActiveAttackDamageVsWeakMultiplier)\n\t\t\tend\n\t\t\tif m.block > 0 then\n\t\t\t\tlocal absorbed = math.min(m.block, dmg)\n\t\t\t\tm.block = m.block - absorbed\n\t\t\t\tdmg = dmg - absorbed\n\t\t\tend\n\t\t\tm.hp = m.hp - dmg\n\t\t\tif dmg > 0 then\n\t\t\t\tlocal poison = self:AddPowerFieldTotal(\"attackPoison\")\n\t\t\t\tif poison ~= nil and poison > 0 then\n\t\t\t\t\tself:ApplyPoisonToMonster(m, poison)\n\t\t\t\tend\n\t\t\tend\n\t\t\tself:ShowDmgPop(i, dmg)\n\t\t\tself:MonsterHitMotion(i)\n\t\t\tif m.hp <= 0 then\n\t\t\t\tm.hp = 0\n\t\t\t\tself:KillMonster(m.slot)\n\t\t\t\tkillCount = killCount + 1\n\t\t\tend\n\t\tend\n\tend\n\tif killCount > 0 and self.ActiveKillReward ~= nil and self.ActiveKillReward > 0 then\n\t\tself.BonusRewardScreens = (self.BonusRewardScreens or 0) + (killCount * self.ActiveKillReward)\n\tend\n\tself.ActiveKillReward = 0\n\tself.ActiveAttackDamageVsWeakMultiplier = 1\n\tself:RenderCombat()\n\tself:CheckCombatEnd()\nend, 0.35)", + "Code": "self.FxBusy = true\nlocal fx = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/SkillFx\")\nif fx ~= nil then\n\tif fx.SpriteGUIRendererComponent ~= nil and image ~= nil and image ~= \"\" then\n\t\tfx.SpriteGUIRendererComponent.ImageRUID = image\n\tend\n\tif fx.UITransformComponent ~= nil then\n\t\tfx.UITransformComponent.anchoredPosition = Vector2(300, 60)\n\tend\n\tfx.Enable = true\nend\n_TimerService:SetTimerOnce(function()\n\tif fx ~= nil then fx.Enable = false end\n\tself.FxBusy = false\n\tlocal killCount = 0\n\tfor i = 1, #self.Monsters do\n\t\tlocal m = self.Monsters[i]\n\t\tif m ~= nil and m.alive == true then\n\t\t\tlocal dmg = damage\n\t\t\tif m.vuln > 0 then\n\t\t\t\tdmg = math.floor(dmg * 1.5)\n\t\t\tend\n\t\t\tif m.weak > 0 and self.ActiveAttackDamageVsWeakMultiplier ~= nil and self.ActiveAttackDamageVsWeakMultiplier > 1 then\n\t\t\t\tdmg = math.floor(dmg * self.ActiveAttackDamageVsWeakMultiplier)\n\t\t\tend\n\t\t\tif m.block > 0 then\n\t\t\t\tlocal absorbed = math.min(m.block, dmg)\n\t\t\t\tm.block = m.block - absorbed\n\t\t\t\tdmg = dmg - absorbed\n\t\t\tend\n\t\t\tm.hp = m.hp - dmg\n\t\t\tif dmg > 0 then\n\t\t\t\tlocal poison = self:AddPowerFieldTotal(\"attackPoison\")\n\t\t\t\tif poison ~= nil and poison > 0 then\n\t\t\t\t\tself:ApplyPoisonToMonster(m, poison)\n\t\t\t\tend\n\t\t\tend\n\t\t\tself:ShowDmgPop(i, dmg)\n\t\t\tself:MonsterHitMotion(i)\n\t\t\tif m.hp <= 0 then\n\t\t\t\tm.hp = 0\n\t\t\t\tself:KillMonster(m.slot)\n\t\t\t\tkillCount = killCount + 1\n\t\t\tend\n\t\tend\n\tend\n\tself.ActiveKillReward = 0\n\tself.ActiveKillMaxHpGain = 0\n\tself.ActiveAttackDamageVsWeakMultiplier = 1\n\tself:RenderCombat()\n\tself:CheckCombatEnd()\nend, 0.35)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3791,7 +4322,7 @@ "Name": "slot" } ], - "Code": "local m = self.Monsters[slot]\nif m == nil then\n\treturn\nend\nm.alive = false\nif m.entity ~= nil and isvalid(m.entity) then\n\tlocal ent = m.entity\n\t_TimerService:SetTimerOnce(function() if isvalid(ent) then ent:SetVisible(false) end end, 0.4)\nend\nself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. tostring(slot), false)\nfor i = 1, #self.Monsters do\n\tif self.Monsters[i].alive == true then self.TargetIndex = i; break end\nend", + "Code": "local m = self.Monsters[slot]\nif m == nil then\n\treturn\nend\nm.alive = false\nif m.entity ~= nil and isvalid(m.entity) then\n\tlocal ent = m.entity\n\t_TimerService:SetTimerOnce(function() if isvalid(ent) then ent:SetVisible(false) end end, 0.4)\nend\nself:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. self:IntStr(slot), false)\nfor i = 1, #self.Monsters do\n\tif self.Monsters[i].alive == true then self.TargetIndex = i; break end\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3821,7 +4352,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\nself:ShakeCombatCamera()\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, true)\n\t\tself:RenderHand(false)\n\tend\nend\nif self.PlayerHp < 0 then\n\tself.PlayerHp = 0\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -3859,7 +4390,7 @@ "Name": "fromIndex" } ], - "Code": "local idx = 0\nfor i = fromIndex, #self.Monsters do\n\tif self.Monsters[i].alive == true then idx = i; break end\nend\nif idx == 0 or self.PlayerHp <= 0 then\n\tself:FinishEnemyTurn()\n\treturn\nend\nlocal m = self.Monsters[idx]\nlocal base = \"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. tostring(idx)\nself:SetEntityEnabled(base .. \"/ActFrame\", true)\n_TimerService:SetTimerOnce(function()\n\tlocal poisonTicks = 1\n\tlocal bonusTicks = self:AddPowerFieldTotal(\"extraPoisonTicks\")\n\tif bonusTicks ~= nil and bonusTicks > 0 then\n\t\tpoisonTicks = poisonTicks + bonusTicks\n\tend\n\tfor pt = 1, poisonTicks do\n\t\tif m.poison ~= nil and m.poison > 0 then\n\t\t\tm.hp = m.hp - m.poison\n\t\t\tself:ShowDmgPop(idx, m.poison)\n\t\t\tself:MonsterHitMotion(idx)\n\t\t\tm.poison = m.poison - 1\n\t\t\tif m.hp <= 0 then\n\t\t\t\tm.hp = 0\n\t\t\t\tself:KillMonster(m.slot)\n\t\t\t\tself:RenderCombat()\n\t\t\t\tself:SetEntityEnabled(base .. \"/ActFrame\", false)\n\t\t\t\t_TimerService:SetTimerOnce(function() self:EnemyActStep(idx + 1) end, 0.15)\n\t\t\t\treturn\n\t\t\tend\n\t\tend\n\tend\n\tm.block = 0\n\tlocal intent = m.intents[m.intentIdx]\n\tif intent ~= nil then\n\t\tif intent.kind == \"Attack\" then\n\t\t\tself:MonsterLunge(idx)\n\t\t\tlocal atk = intent.value + m.str\n\t\t\tif self.EnemyStrengthLossThisTurn ~= nil and self.EnemyStrengthLossThisTurn > 0 then\n\t\t\t\tatk = atk - self.EnemyStrengthLossThisTurn\n\t\t\t\tif atk < 0 then atk = 0 end\n\t\t\tend\n\t\t\tif m.weak > 0 then\n\t\t\t\tatk = math.floor(atk * 0.75)\n\t\t\tend\n\t\t\tif self.PlayerVuln > 0 then\n\t\t\t\tatk = math.floor(atk * 1.5)\n\t\t\tend\n\t\t\tlocal before = self.PlayerHp\n\t\t\tself:DealDamageToPlayer(atk, idx)\n\t\t\tself:ShowPlayerDmgPop(before - self.PlayerHp)\n\t\t\tself:PlayerHitMotion()\n\t\telseif intent.kind == \"Defend\" then\n\t\t\tm.block = m.block + intent.value\n\t\telseif intent.kind == \"Debuff\" then\n\t\t\tif intent.effect == \"weak\" then\n\t\t\t\tself.PlayerWeak = self.PlayerWeak + intent.value\n\t\t\telseif intent.effect == \"vuln\" then\n\t\t\t\tself.PlayerVuln = self.PlayerVuln + intent.value\n\t\t\tend\n\t\telseif intent.kind == \"AddCard\" then\n\t\t\tlocal cnt = intent.count or 1\n\t\t\tfor ci = 1, cnt do\n\t\t\t\ttable.insert(self.DiscardPile, intent.card)\n\t\t\tend\n\t\t\tself:RenderPiles()\n\t\t\tlocal cn = intent.card\n\t\t\tlocal cc = self.Cards[intent.card]\n\t\t\tif cc ~= nil then cn = cc.name end\n\t\t\tself:Toast(m.name .. \": \" .. cn .. \" 추가!\")\n\t\tend\n\tend\n\tif #m.intents > 0 then\n\t\tm.intentIdx = math.random(1, #m.intents)\n\tend\n\tif m.weak > 0 then m.weak = m.weak - 1 end\n\tif m.vuln > 0 then m.vuln = m.vuln - 1 end\n\tself:RenderCombat()\n\tself:SetEntityEnabled(base .. \"/ActFrame\", false)\n\t_TimerService:SetTimerOnce(function() self:EnemyActStep(idx + 1) end, 0.15)\nend, 0.45)", + "Code": "local idx = 0\nfor i = fromIndex, #self.Monsters do\n\tif self.Monsters[i].alive == true then idx = i; break end\nend\nif idx == 0 or self.PlayerHp <= 0 then\n\tself:FinishEnemyTurn()\n\treturn\nend\nlocal m = self.Monsters[idx]\nlocal base = \"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. self:IntStr(idx)\nself:SetEntityEnabled(base .. \"/ActFrame\", true)\n_TimerService:SetTimerOnce(function()\n\tlocal poisonTicks = 1\n\tlocal bonusTicks = self:AddPowerFieldTotal(\"extraPoisonTicks\")\n\tif bonusTicks ~= nil and bonusTicks > 0 then\n\t\tpoisonTicks = poisonTicks + bonusTicks\n\tend\n\tfor pt = 1, poisonTicks do\n\t\tif m.poison ~= nil and m.poison > 0 then\n\t\t\tm.hp = m.hp - m.poison\n\t\t\tself:ShowDmgPop(idx, m.poison)\n\t\t\tself:MonsterHitMotion(idx)\n\t\t\tm.poison = m.poison - 1\n\t\t\tif m.hp <= 0 then\n\t\t\t\tm.hp = 0\n\t\t\t\tself:KillMonster(m.slot)\n\t\t\t\tself:RenderCombat()\n\t\t\t\tself:SetEntityEnabled(base .. \"/ActFrame\", false)\n\t\t\t\t_TimerService:SetTimerOnce(function() self:EnemyActStep(idx + 1) end, 0.15)\n\t\t\t\treturn\n\t\t\tend\n\t\tend\n\tend\n\tm.block = 0\n\tlocal intent = m.intents[m.intentIdx]\n\tif intent ~= nil then\n\t\tif intent.kind == \"Attack\" then\n\t\t\tself:MonsterLunge(idx)\n\t\t\tlocal atk = intent.value + m.str\n\t\t\tif self.EnemyStrengthLossThisTurn ~= nil and self.EnemyStrengthLossThisTurn > 0 then\n\t\t\t\tatk = atk - self.EnemyStrengthLossThisTurn\n\t\t\t\tif atk < 0 then atk = 0 end\n\t\t\tend\n\t\t\tif m.weak > 0 then\n\t\t\t\tatk = math.floor(atk * 0.75)\n\t\t\tend\n\t\t\tif self.PlayerVuln > 0 then\n\t\t\t\tatk = math.floor(atk * 1.5)\n\t\t\tend\n\t\t\tlocal before = self.PlayerHp\n\t\t\tself:DealDamageToPlayer(atk, idx)\n\t\t\tself:ShowPlayerDmgPop(before - self.PlayerHp)\n\t\t\tself:PlayerHitMotion()\n\t\telseif intent.kind == \"Defend\" then\n\t\t\tm.block = m.block + intent.value\n\t\telseif intent.kind == \"Debuff\" then\n\t\t\tif intent.effect == \"weak\" then\n\t\t\t\tself.PlayerWeak = self.PlayerWeak + intent.value\n\t\t\telseif intent.effect == \"vuln\" then\n\t\t\t\tself.PlayerVuln = self.PlayerVuln + intent.value\n\t\t\tend\n\t\telseif intent.kind == \"AddCard\" then\n\t\t\tlocal cnt = intent.count or 1\n\t\t\tfor ci = 1, cnt do\n\t\t\t\ttable.insert(self.DiscardPile, intent.card)\n\t\t\tend\n\t\t\tself:RenderPiles()\n\t\t\tlocal cn = intent.card\n\t\t\tlocal cc = self.Cards[intent.card]\n\t\t\tif cc ~= nil then cn = cc.name end\n\t\t\tself:Toast(m.name .. \": \" .. cn .. \" 추가!\")\n\t\tend\n\tend\n\tif #m.intents > 0 then\n\t\tm.intentIdx = math.random(1, #m.intents)\n\tend\n\tif m.weak > 0 then m.weak = m.weak - 1 end\n\tif m.vuln > 0 then m.vuln = m.vuln - 1 end\n\tself:RenderCombat()\n\tself:SetEntityEnabled(base .. \"/ActFrame\", false)\n\t_TimerService:SetTimerOnce(function() self:EnemyActStep(idx + 1) end, 0.15)\nend, 0.45)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -4063,7 +4594,7 @@ "Name": null }, "Arguments": [], - "Code": "local current = self:CurrentClassId()\nlocal opts = nil\nif self.Jobs ~= nil then\n\topts = self.Jobs[current]\nend\nif opts == nil then\n\topts = {}\nend\nself.JobOpts = opts\nfor i = 1, 3 do\n\tlocal base = \"/ui/SelectUIGroup/JobSelectHud/Job_slot\" .. tostring(i)\n\tlocal o = opts[i]\n\tif o ~= nil then\n\t\tself:SetEntityEnabled(base, true)\n\t\tself:SetText(base .. \"/Name\", o.name)\n\t\tself:SetText(base .. \"/Desc\", o.desc)\n\t\tlocal sc = nil\n\t\tif o.starter ~= nil and o.starter ~= \"\" then\n\t\t\tsc = self.Cards[o.starter]\n\t\tend\n\t\tif sc ~= nil then\n\t\t\tself:SetText(base .. \"/Starter\", \"대표 카드: \" .. sc.name)\n\t\telse\n\t\t\tself:SetText(base .. \"/Starter\", \"대표 카드: 계보 유지\")\n\t\tend\n\telse\n\t\tself:SetEntityEnabled(base, false)\n\tend\nend\nself:SetEntityEnabled(\"/ui/SelectUIGroup/JobSelectHud\", true)", + "Code": "local current = self:CurrentClassId()\nlocal opts = nil\nif self.Jobs ~= nil then\n\topts = self.Jobs[current]\nend\nif opts == nil then\n\topts = {}\nend\nself.JobOpts = opts\nfor i = 1, 3 do\n\tlocal base = \"/ui/SelectUIGroup/JobSelectHud/Job_slot\" .. self:IntStr(i)\n\tlocal o = opts[i]\n\tif o ~= nil then\n\t\tself:SetEntityEnabled(base, true)\n\t\tself:SetText(base .. \"/Name\", o.name)\n\t\tself:SetText(base .. \"/Desc\", o.desc)\n\t\tlocal sc = nil\n\t\tif o.starter ~= nil and o.starter ~= \"\" then\n\t\t\tsc = self.Cards[o.starter]\n\t\tend\n\t\tif sc ~= nil then\n\t\t\tself:SetText(base .. \"/Starter\", \"대표 카드: \" .. sc.name)\n\t\telse\n\t\t\tself:SetText(base .. \"/Starter\", \"대표 카드: 계보 유지\")\n\t\tend\n\telse\n\t\tself:SetEntityEnabled(base, false)\n\tend\nend\nself:SetEntityEnabled(\"/ui/SelectUIGroup/JobSelectHud\", true)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -4206,7 +4737,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\" .. self:IntStr(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": [], @@ -4236,7 +4767,7 @@ "Name": "amount" } ], - "Code": "local slotKey = string.format(\"%d\", math.floor(slot or 0))\nlocal base = \"/ui/RunUIGroup/CombatHud/DmgPop\" .. slotKey\nlocal pop = _EntityService:GetEntityByPath(base)\nif pop == nil then\n\treturn\nend\nself.DmgPopSeq = (self.DmgPopSeq or 0) + 1\nlocal popSeq = self.DmgPopSeq\nself:SetText(base, \"\")\nlocal damageDigitRuids = { \"b94c19830538447f81617035d89bcc05\", \"01b023122a6f4a5789e1d4c61ff8f430\", \"57ff71d1b9eb471b9feb1c15348770c9\", \"cab92837798a42ad9143c67e93f999e1\", \"366f271f9ca94a0684083aad9298efad\", \"5c7a6ad38491466aa84bf450e0fdcf25\", \"7d82a6838e1b4f4a8a0f7420db34c985\", \"c0765bb1e47d46ffbe1df4ac19ea9b1b\", \"6ea0bfed61e149f88a9b3f22dd79774f\", \"82ad2acaae4e4b3fb87bf73635250d22\" }\nlocal shown = tostring(math.max(0, math.floor(amount)))\nif string.len(shown) > 5 then\n shown = string.sub(shown, 1, 5)\nend\nlocal digits = {}\nfor i = 1, string.len(shown) do\n table.insert(digits, tonumber(string.sub(shown, i, i)) or 0)\nend\nlocal totalW = #digits * 22 + math.max(0, #digits - 1) * -4\nlocal startX = -totalW / 2 + 22 / 2\nfor i = 1, 5 do\n self:SetEntityEnabled(base .. \"/Digit\" .. tostring(i), false)\nend\nfor i = 1, 5 do\n local digitPath = base .. \"/Digit\" .. tostring(i)\n local digitEntity = _EntityService:GetEntityByPath(digitPath)\n if digitEntity ~= nil and digitEntity.SpriteGUIRendererComponent ~= nil then\n if digits[i] ~= nil then\n digitEntity.SpriteGUIRendererComponent.ImageRUID = damageDigitRuids[digits[i] + 1]\n digitEntity.SpriteGUIRendererComponent.Color = Color(1, 1, 1, 1)\n if digitEntity.UITransformComponent ~= nil then\n digitEntity.UITransformComponent.anchoredPosition = Vector2(startX + (i - 1) * (22 + -4), 0)\n end\n self:SetEntityEnabled(digitPath, true)\n else\n self:SetEntityEnabled(digitPath, false)\n end\n end\nend\nlocal popPos = nil\nlocal m = self.Monsters[slot]\nif m ~= nil and m.entity ~= nil and isvalid(m.entity) and m.entity.TransformComponent ~= nil then\n local wp = m.entity.TransformComponent.WorldPosition\n local screen = _UILogic:WorldToScreenPosition(Vector2(wp.x, wp.y + 1.8499999999999999))\n popPos = _UILogic:ScreenToUIPosition(screen)\nelse\n local slotEntity = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. slotKey)\n if slotEntity ~= nil and slotEntity.UITransformComponent ~= nil then\n local sp = slotEntity.UITransformComponent.anchoredPosition\n popPos = Vector2(sp.x, sp.y + 76)\n end\nend\nif pop ~= nil and pop.UITransformComponent ~= nil then\n if popPos ~= nil then\n pop.UITransformComponent.anchoredPosition = popPos\n else\n pop.UITransformComponent.anchoredPosition = Vector2(0, 120)\n end\nend\nself:SetEntityEnabled(base, true)\nfor i = 1, 6 do\n _TimerService:SetTimerOnce(function()\n if self.DmgPopSeq ~= popSeq then\n return\n end\n local p = _EntityService:GetEntityByPath(base)\n if p ~= nil and p.UITransformComponent ~= nil then\n local cur = p.UITransformComponent.anchoredPosition\n p.UITransformComponent.anchoredPosition = Vector2(cur.x, cur.y + 7)\n end\n end, 0.045 * i)\nend\n_TimerService:SetTimerOnce(function()\n if self.DmgPopSeq ~= popSeq then\n return\n end\n self:SetEntityEnabled(base, false)\nend, 0.48)", + "Code": "local slotKey = string.format(\"%d\", math.floor(slot or 0))\nif self.DmgPopSlotQueue == nil then\n\tself.DmgPopSlotQueue = {}\nend\nlocal popIndex = (self.DmgPopSlotQueue[slotKey] or 0) + 1\nif popIndex > 5 then\n\tpopIndex = 1\nend\nself.DmgPopSlotQueue[slotKey] = popIndex\nlocal base = \"/ui/RunUIGroup/CombatHud/DmgPop\" .. slotKey .. \"_\" .. self:IntStr(popIndex)\nlocal pop = _EntityService:GetEntityByPath(base)\nif pop == nil then\n\treturn\nend\nlocal function showNow()\n self:SetEntityEnabled(base, false)\n self:SetText(base, \"\")\n local damageDigitRuids = { \"b94c19830538447f81617035d89bcc05\", \"01b023122a6f4a5789e1d4c61ff8f430\", \"57ff71d1b9eb471b9feb1c15348770c9\", \"cab92837798a42ad9143c67e93f999e1\", \"366f271f9ca94a0684083aad9298efad\", \"5c7a6ad38491466aa84bf450e0fdcf25\", \"7d82a6838e1b4f4a8a0f7420db34c985\", \"c0765bb1e47d46ffbe1df4ac19ea9b1b\", \"6ea0bfed61e149f88a9b3f22dd79774f\", \"82ad2acaae4e4b3fb87bf73635250d22\" }\n local shown = tostring(math.max(0, math.floor(amount)))\n if string.len(shown) > 5 then\n shown = string.sub(shown, 1, 5)\n end\n local digits = {}\n local digitPathsToEnable = {}\n for i = 1, string.len(shown) do\n table.insert(digits, tonumber(string.sub(shown, i, i)) or 0)\n end\n local totalW = #digits * 22 + math.max(0, #digits - 1) * -4\n local startX = -totalW / 2 + 22 / 2\n for i = 1, 5 do\n self:SetEntityEnabled(base .. \"/Digit\" .. self:IntStr(i), false)\n end\n for i = 1, 5 do\n local digitPath = base .. \"/Digit\" .. self:IntStr(i)\n local digitEntity = _EntityService:GetEntityByPath(digitPath)\n if digitEntity ~= nil and digitEntity.SpriteGUIRendererComponent ~= nil then\n if digits[i] ~= nil then\n digitEntity.SpriteGUIRendererComponent.ImageRUID = damageDigitRuids[digits[i] + 1]\n digitEntity.SpriteGUIRendererComponent.Color = Color(1, 1, 1, 1)\n if digitEntity.UITransformComponent ~= nil then\n digitEntity.UITransformComponent.anchoredPosition = Vector2(startX + (i - 1) * (22 + -4), 0)\n end\n table.insert(digitPathsToEnable, digitPath)\n else\n self:SetEntityEnabled(digitPath, false)\n end\n end\n end\n local popPos = nil\n local m = self.Monsters[slot]\n if m ~= nil and m.entity ~= nil and isvalid(m.entity) and m.entity.TransformComponent ~= nil then\n local wp = m.entity.TransformComponent.WorldPosition\n local screen = _UILogic:WorldToScreenPosition(Vector2(wp.x, wp.y + 1.8499999999999999))\n popPos = _UILogic:ScreenToUIPosition(screen)\n else\n local slotEntity = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. slotKey)\n if slotEntity ~= nil and slotEntity.UITransformComponent ~= nil then\n local sp = slotEntity.UITransformComponent.anchoredPosition\n popPos = Vector2(sp.x, sp.y + 76)\n end\n end\n if pop.UITransformComponent ~= nil then\n if popPos ~= nil then\n pop.UITransformComponent.anchoredPosition = popPos\n else\n pop.UITransformComponent.anchoredPosition = Vector2(0, 120)\n end\n end\n self:SetEntityEnabled(base, true)\n for i = 1, #digitPathsToEnable do\n self:SetEntityEnabled(digitPathsToEnable[i], true)\n end\n for i = 1, 6 do\n _TimerService:SetTimerOnce(function()\n local p = _EntityService:GetEntityByPath(base)\n if p ~= nil and p.UITransformComponent ~= nil then\n local cur = p.UITransformComponent.anchoredPosition\n p.UITransformComponent.anchoredPosition = Vector2(cur.x, cur.y + 7)\n end\n local alpha = 1 - (i / 6)\n if alpha < 0 then alpha = 0 end\n for di = 1, 5 do\n local digitEntity = _EntityService:GetEntityByPath(base .. \"/Digit\" .. self:IntStr(di))\n if digitEntity ~= nil and digitEntity.Enable == true and digitEntity.SpriteGUIRendererComponent ~= nil then\n digitEntity.SpriteGUIRendererComponent.Color = Color(1, 1, 1, alpha)\n end\n end\n end, 0.05 * i)\n end\n _TimerService:SetTimerOnce(function()\n self:SetEntityEnabled(base, false)\n end, 0.3)\nend\nshowNow()", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -4259,12 +4790,27 @@ "Name": "amount" } ], - "Code": "local base = \"/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop\"\nif amount > 0 then\n\tself:SetText(base, \"-\" .. string.format(\"%d\", amount))\nelse\n\tself:SetText(base, \"막음\")\nend\nself:SetEntityEnabled(base, true)\n_TimerService:SetTimerOnce(function() self:SetEntityEnabled(base, false) end, 0.6)", + "Code": "local shownAmount = math.max(0, math.floor(amount or 0))\nif shownAmount <= 0 then\n\treturn\nend\nlocal function setEnabled(entity, enabled)\n\tif entity == nil then\n\t\treturn\n\tend\n\tentity.Enable = enabled\n\tif entity.SpriteGUIRendererComponent ~= nil then\n\t\tentity.SpriteGUIRendererComponent.Enable = enabled\n\tend\n\tif entity.TextComponent ~= nil then\n\t\tentity.TextComponent.Enable = enabled\n\tend\nend\nself.PlayerDmgPopIndex = (self.PlayerDmgPopIndex or 0) + 1\nif self.PlayerDmgPopIndex > 4 then\n\tself.PlayerDmgPopIndex = 1\nend\nlocal base = \"/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_\" .. self:IntStr(self.PlayerDmgPopIndex)\nlocal pop = _EntityService:GetEntityByPath(base)\nif pop == nil then\n\treturn\nend\nsetEnabled(pop, false)\nlocal damageDigitRuids = { \"b94c19830538447f81617035d89bcc05\", \"01b023122a6f4a5789e1d4c61ff8f430\", \"57ff71d1b9eb471b9feb1c15348770c9\", \"cab92837798a42ad9143c67e93f999e1\", \"366f271f9ca94a0684083aad9298efad\", \"5c7a6ad38491466aa84bf450e0fdcf25\", \"7d82a6838e1b4f4a8a0f7420db34c985\", \"c0765bb1e47d46ffbe1df4ac19ea9b1b\", \"6ea0bfed61e149f88a9b3f22dd79774f\", \"82ad2acaae4e4b3fb87bf73635250d22\" }\nlocal shown = tostring(shownAmount)\nif string.len(shown) > 5 then\n\tshown = string.sub(shown, 1, 5)\nend\nlocal digits = {}\nlocal digitEntitiesToEnable = {}\nfor i = 1, string.len(shown) do\n\ttable.insert(digits, tonumber(string.sub(shown, i, i)) or 0)\nend\nlocal totalW = #digits * 22 + math.max(0, #digits - 1) * -4\nlocal startX = -totalW / 2 + 22 / 2\nfor i = 1, 5 do\n\tlocal digitEntity = _EntityService:GetEntityByPath(base .. \"/Digit\" .. self:IntStr(i))\n\tsetEnabled(digitEntity, false)\nend\nfor i = 1, 5 do\n\tlocal digitPath = base .. \"/Digit\" .. self:IntStr(i)\n\tlocal digitEntity = _EntityService:GetEntityByPath(digitPath)\n\tif digitEntity ~= nil and digitEntity.SpriteGUIRendererComponent ~= nil then\n\t\tif digits[i] ~= nil then\n\t\t\tdigitEntity.SpriteGUIRendererComponent.ImageRUID = damageDigitRuids[digits[i] + 1]\n\t\t\tdigitEntity.SpriteGUIRendererComponent.Color = Color(1, 1, 1, 1)\n\t\t\tif digitEntity.UITransformComponent ~= nil then\n\t\t\t\tdigitEntity.UITransformComponent.anchoredPosition = Vector2(startX + (i - 1) * (22 + -4), 0)\n\t\t\tend\n\t\t\ttable.insert(digitEntitiesToEnable, digitEntity)\n\t\tend\n\tend\nend\nlocal startPos = Vector2(16, 34)\nif pop.UITransformComponent ~= nil then\n\tlocal cur = pop.UITransformComponent.anchoredPosition\n\tif math.abs(cur.x) < 240 and math.abs(cur.y) < 140 then\n\t\tstartPos = cur\n\tend\n\tpop.UITransformComponent.anchoredPosition = startPos\nend\nsetEnabled(pop, true)\nfor i = 1, #digitEntitiesToEnable do\n\tsetEnabled(digitEntitiesToEnable[i], true)\nend\nfor i = 1, 6 do\n\t_TimerService:SetTimerOnce(function()\n\t\tlocal p = _EntityService:GetEntityByPath(base)\n\t\tif p ~= nil and p.Enable == true and p.UITransformComponent ~= nil then\n\t\t\tlocal cur = p.UITransformComponent.anchoredPosition\n\t\t\tp.UITransformComponent.anchoredPosition = Vector2(cur.x, cur.y + 7)\n\t\tend\n\t\tlocal alpha = 1 - (i / 6)\n\t\tif alpha < 0 then alpha = 0 end\n\t\tfor di = 1, 5 do\n\t\t\tlocal digitEntity = _EntityService:GetEntityByPath(base .. \"/Digit\" .. self:IntStr(di))\n\t\t\tif digitEntity ~= nil and digitEntity.Enable == true and digitEntity.SpriteGUIRendererComponent ~= nil then\n\t\t\t\tdigitEntity.SpriteGUIRendererComponent.Color = Color(1, 1, 1, alpha)\n\t\t\tend\n\t\tend\n\tend, 0.05 * i)\nend\n_TimerService:SetTimerOnce(function()\n\tlocal p = _EntityService:GetEntityByPath(base)\n\tif p ~= nil and p.UITransformComponent ~= nil then\n\t\tp.UITransformComponent.anchoredPosition = startPos\n\tend\n\tsetEnabled(p, false)\nend, 0.3)", "Scope": 2, "ExecSpace": 6, "Attributes": [], "Name": "ShowPlayerDmgPop" }, + { + "Return": { + "Type": "void", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [], + "Code": "local lp = _UserService.LocalPlayer\nlocal cam = nil\nif lp ~= nil then\n\tcam = lp.CameraComponent\nend\nif cam == nil then\n\tcam = _CameraService:GetCurrentCameraComponent()\nend\nif cam == nil then\n\treturn\nend\nself.CombatCameraShakeSeq = (self.CombatCameraShakeSeq or 0) + 1\nlocal seq = self.CombatCameraShakeSeq\nlocal baseCameraOffset = Vector2(1.5, -0.83)\ncam.CameraOffset = baseCameraOffset\nlocal offsets = {\n\tVector2(-0.22, 0),\n\tVector2(0.2, 0),\n\tVector2(-0.12, 0),\n\tVector2(0.06, 0),\n\tVector2(0, 0),\n}\nfor i = 1, #offsets do\n\tlocal delta = offsets[i]\n\t_TimerService:SetTimerOnce(function()\n\t\tlocal lp2 = _UserService.LocalPlayer\n\t\tlocal cam2 = nil\n\t\tif lp2 ~= nil then\n\t\t\tcam2 = lp2.CameraComponent\n\t\tend\n\t\tif cam2 == nil then\n\t\t\tcam2 = _CameraService:GetCurrentCameraComponent()\n\t\tend\n\t\tif cam2 == nil then\n\t\t\treturn\n\t\tend\n\t\tif seq ~= self.CombatCameraShakeSeq then\n\t\t\treturn\n\t\tend\n\t\tcam2.CameraOffset = Vector2(baseCameraOffset.x + delta.x, baseCameraOffset.y + delta.y)\n\tend, 0.028 * (i - 1))\nend", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "ShakeCombatCamera" + }, { "Return": { "Type": "void", @@ -4379,7 +4925,7 @@ "Name": "width" } ], - "Code": "local e = _EntityService:GetEntityByPath(path)\nif e == nil or e.UITransformComponent == nil then\n\treturn\nend\nlocal ratio = 0\nif maxHp > 0 then ratio = hp / maxHp end\nif ratio < 0 then ratio = 0 end\nlocal w = width * ratio\ne.UITransformComponent.RectSize = Vector2(w, 14)", + "Code": "local e = _EntityService:GetEntityByPath(path)\nif e == nil or e.UITransformComponent == nil then\n\treturn\nend\nlocal ratio = 0\nif maxHp > 0 then ratio = hp / maxHp end\nif ratio < 0 then ratio = 0 end\nif ratio > 1 then ratio = 1 end\nif self.HpBarOrigins == nil then\n\tself.HpBarOrigins = {}\nend\nlocal t = e.UITransformComponent\nlocal origin = self.HpBarOrigins[path]\nif origin == nil then\n\tlocal pivotX = 0\n\tif t.Pivot ~= nil then\n\t\tpivotX = t.Pivot.x or 0\n\tend\n\torigin = {\n\t\tleft = t.anchoredPosition.x - (t.RectSize.x * pivotX),\n\t\ty = t.anchoredPosition.y,\n\t\theight = t.RectSize.y,\n\t\tpivotX = pivotX,\n\t}\n\tself.HpBarOrigins[path] = origin\nend\nlocal w = width * ratio\nt.RectSize = Vector2(w, origin.height or 14)\nt.anchoredPosition = Vector2(origin.left + (w * (origin.pivotX or 0)), origin.y or t.anchoredPosition.y)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -4440,7 +4986,7 @@ "Name": "slot" } ], - "Code": "local monster = self.Monsters[slot]\nif monster == nil or monster.entity == nil or not isvalid(monster.entity) then\n\treturn\nend\nlocal transform = monster.entity.TransformComponent\nif transform == nil then\n\treturn\nend\nlocal worldPos = transform.WorldPosition\nlocal screen = _UILogic:WorldToScreenPosition(Vector2(worldPos.x, worldPos.y + 1.4))\nlocal uipos = _UILogic:ScreenToUIPosition(screen)\nlocal slotEntity = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. tostring(slot))\nif slotEntity ~= nil and slotEntity.UITransformComponent ~= nil then\n\tslotEntity.UITransformComponent.anchoredPosition = uipos\nend", + "Code": "local monster = self.Monsters[slot]\nif monster == nil or monster.entity == nil or not isvalid(monster.entity) then\n\treturn\nend\nlocal transform = monster.entity.TransformComponent\nif transform == nil then\n\treturn\nend\nlocal worldPos = transform.WorldPosition\nlocal screen = _UILogic:WorldToScreenPosition(Vector2(worldPos.x, worldPos.y + 1.4))\nlocal uipos = _UILogic:ScreenToUIPosition(screen)\nlocal slotEntity = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/MonsterStatus\" .. self:IntStr(slot))\nif slotEntity ~= nil and slotEntity.UITransformComponent ~= nil then\n\tslotEntity.UITransformComponent.anchoredPosition = uipos\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -4500,7 +5046,7 @@ "Name": "cardId" } ], - "Code": "self:ApplyCardFace(\"/ui/RunUIGroup/RewardHud/Reward\" .. tostring(slot), cardId)", + "Code": "self:ApplyCardFace(\"/ui/RunUIGroup/RewardHud/Reward\" .. self:IntStr(slot), cardId)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -4569,7 +5115,7 @@ "Name": "hook" } ], - "Code": "if self.RunRelics == nil then\n\treturn\nend\nfor i = 1, #self.RunRelics do\n\tlocal r = self.Relics[self.RunRelics[i]]\n\tif r ~= nil and r.hook == hook then\n\t\tif r.effect == \"block\" then\n\t\t\tself.PlayerBlock = self.PlayerBlock + r.value\n\t\telseif r.effect == \"energy\" then\n\t\t\tself.Energy = self.Energy + r.value\n\t\telseif r.effect == \"strength\" then\n\t\t\tself.PlayerStr = self.PlayerStr + r.value\n\t\telseif r.effect == \"draw\" then\n\t\t\tself:DrawCards(r.value)\n\t\t\tself:RenderHand(false)\n\t\telseif r.effect == \"heal\" or r.effect == \"healOnAttack\" or r.effect == \"healOnWin\" then\n\t\t\tself.PlayerHp = self.PlayerHp + r.value\n\t\t\tif self.PlayerHp > self.PlayerMaxHp then\n\t\t\t\tself.PlayerHp = self.PlayerMaxHp\n\t\t\tend\n\t\telseif r.effect == \"healIfLow\" then\n\t\t\tif self.PlayerHp * 2 <= self.PlayerMaxHp then\n\t\t\t\tself.PlayerHp = self.PlayerHp + r.value\n\t\t\t\tif self.PlayerHp > self.PlayerMaxHp then\n\t\t\t\t\tself.PlayerHp = self.PlayerMaxHp\n\t\t\t\tend\n\t\t\tend\n\t\telseif r.effect == \"gold\" then\n\t\t\tself.Gold = self.Gold + r.value\n\t\tend\n\tend\nend", + "Code": "if self.RunRelics == nil then\n\treturn\nend\nfor i = 1, #self.RunRelics do\n\tlocal r = self.Relics[self.RunRelics[i]]\n\tif r ~= nil and r.hook == hook then\n\t\tif r.effect == \"block\" then\n\t\t\tself.PlayerBlock = self.PlayerBlock + r.value\n\t\telseif r.effect == \"energy\" then\n\t\t\tself.Energy = self.Energy + r.value\n\t\telseif r.effect == \"strength\" then\n\t\t\tself.PlayerStr = self.PlayerStr + r.value\n\t\telseif r.effect == \"draw\" then\n\t\t\tself:DrawCards(r.value, true)\n\t\t\tself:RenderHand(false)\n\t\telseif r.effect == \"heal\" or r.effect == \"healOnAttack\" or r.effect == \"healOnWin\" then\n\t\t\tself.PlayerHp = self.PlayerHp + r.value\n\t\t\tif self.PlayerHp > self.PlayerMaxHp then\n\t\t\t\tself.PlayerHp = self.PlayerMaxHp\n\t\t\tend\n\t\telseif r.effect == \"healIfLow\" then\n\t\t\tif self.PlayerHp * 2 <= self.PlayerMaxHp then\n\t\t\t\tself.PlayerHp = self.PlayerHp + r.value\n\t\t\t\tif self.PlayerHp > self.PlayerMaxHp then\n\t\t\t\t\tself.PlayerHp = self.PlayerMaxHp\n\t\t\t\tend\n\t\t\tend\n\t\telseif r.effect == \"gold\" then\n\t\t\tself.Gold = self.Gold + r.value\n\t\tend\n\tend\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -4660,7 +5206,7 @@ "Name": null }, "Arguments": [], - "Code": "for i = 1, 5 do\n\tlocal base = \"/ui/RunUIGroup/CombatHud/TopBar/PotionSlot\" .. tostring(i)\n\tlocal e = _EntityService:GetEntityByPath(base)\n\tif e ~= nil and e.SpriteGUIRendererComponent ~= nil then\n\t\tlocal pid = nil\n\t\tif self.RunPotions ~= nil then\n\t\t\tpid = self.RunPotions[i]\n\t\tend\n\t\tif pid ~= nil and self.Potions[pid] ~= nil then\n\t\t\te.SpriteGUIRendererComponent.ImageRUID = self.Potions[pid].icon\n\t\t\te.SpriteGUIRendererComponent.Color = Color(1, 1, 1, 1)\n\t\telseif i > self.PotionSlots then\n\t\t\te.SpriteGUIRendererComponent.ImageRUID = \"\"\n\t\t\te.SpriteGUIRendererComponent.Color = Color(0.1, 0.1, 0.12, 0.85)\n\t\telse\n\t\t\te.SpriteGUIRendererComponent.ImageRUID = \"\"\n\t\t\te.SpriteGUIRendererComponent.Color = Color(0.22, 0.25, 0.3, 0.9)\n\t\tend\n\tend\nend", + "Code": "for i = 1, 5 do\n\tlocal base = \"/ui/RunUIGroup/CombatHud/TopBar/PotionSlot\" .. self:IntStr(i)\n\tlocal e = _EntityService:GetEntityByPath(base)\n\tif e ~= nil and e.SpriteGUIRendererComponent ~= nil then\n\t\tlocal pid = nil\n\t\tif self.RunPotions ~= nil then\n\t\t\tpid = self.RunPotions[i]\n\t\tend\n\t\tif pid ~= nil and self.Potions[pid] ~= nil then\n\t\t\te.SpriteGUIRendererComponent.ImageRUID = self.Potions[pid].icon\n\t\t\te.SpriteGUIRendererComponent.Color = Color(1, 1, 1, 1)\n\t\telseif i > self.PotionSlots then\n\t\t\te.SpriteGUIRendererComponent.ImageRUID = \"\"\n\t\t\te.SpriteGUIRendererComponent.Color = Color(0.1, 0.1, 0.12, 0.85)\n\t\telse\n\t\t\te.SpriteGUIRendererComponent.ImageRUID = \"\"\n\t\t\te.SpriteGUIRendererComponent.Color = Color(0.22, 0.25, 0.3, 0.9)\n\t\tend\n\tend\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -4743,7 +5289,7 @@ "Name": null }, "Arguments": [], - "Code": "local count = 0\nif self.RunRelics ~= nil then\n\tcount = #self.RunRelics\nend\nfor i = 1, 10 do\n\tlocal base = \"/ui/RunUIGroup/CombatHud/TopBar/RelicSlot\" .. tostring(i)\n\tlocal e = _EntityService:GetEntityByPath(base)\n\tif e ~= nil and e.SpriteGUIRendererComponent ~= nil then\n\t\tlocal rid = nil\n\t\tif self.RunRelics ~= nil then\n\t\t\trid = self.RunRelics[i]\n\t\tend\n\t\tif rid ~= nil and self.Relics[rid] ~= nil and (i < 10 or count <= 10) then\n\t\t\te.SpriteGUIRendererComponent.ImageRUID = self.Relics[rid].icon\n\t\t\te.SpriteGUIRendererComponent.Color = Color(1, 1, 1, 1)\n\t\telse\n\t\t\te.SpriteGUIRendererComponent.ImageRUID = \"\"\n\t\t\te.SpriteGUIRendererComponent.Color = Color(0.15, 0.16, 0.2, 0.6)\n\t\tend\n\tend\nend\nlocal of = \"\"\nif count > 10 then\n\tof = \"+\" .. tostring(count - 9)\nend\nself:SetText(\"/ui/RunUIGroup/CombatHud/TopBar/RelicOverflow\", of)", + "Code": "local count = 0\nif self.RunRelics ~= nil then\n\tcount = #self.RunRelics\nend\nfor i = 1, 10 do\n\tlocal base = \"/ui/RunUIGroup/CombatHud/TopBar/RelicSlot\" .. self:IntStr(i)\n\tlocal e = _EntityService:GetEntityByPath(base)\n\tif e ~= nil and e.SpriteGUIRendererComponent ~= nil then\n\t\tlocal rid = nil\n\t\tif self.RunRelics ~= nil then\n\t\t\trid = self.RunRelics[i]\n\t\tend\n\t\tif rid ~= nil and self.Relics[rid] ~= nil and (i < 10 or count <= 10) then\n\t\t\te.SpriteGUIRendererComponent.ImageRUID = self.Relics[rid].icon\n\t\t\te.SpriteGUIRendererComponent.Color = Color(1, 1, 1, 1)\n\t\telse\n\t\t\te.SpriteGUIRendererComponent.ImageRUID = \"\"\n\t\t\te.SpriteGUIRendererComponent.Color = Color(0.15, 0.16, 0.2, 0.6)\n\t\tend\n\tend\nend\nlocal of = \"\"\nif count > 10 then\n\tof = \"+\" .. tostring(count - 9)\nend\nself:SetText(\"/ui/RunUIGroup/CombatHud/TopBar/RelicOverflow\", of)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -4795,6 +5341,204 @@ "Attributes": [], "Name": "BuildCardKeywordTooltip" }, + { + "Return": { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "path" + } + ], + "Code": "if path == nil or path == \"\" then\n\treturn nil\nend\nif string.find(path, \"/ui/RunUIGroup/CardHand/Card\", 1, true) == 1 then\n\tif self.Hand == nil then\n\t\treturn nil\n\tend\n\tlocal slot = tonumber(string.match(path, \"Card(%d+)\")) or 0\n\treturn self.Hand[slot]\nend\nif string.find(path, \"/ui/RunUIGroup/RewardHud/Reward\", 1, true) == 1 then\n\tif self.RewardCards == nil then\n\t\treturn nil\n\tend\n\tlocal slot = tonumber(string.match(path, \"Reward(%d+)\")) or 0\n\treturn self.RewardCards[slot]\nend\nif string.find(path, \"/ui/RunUIGroup/ShopHud/Card\", 1, true) == 1 then\n\tif self.ShopCards == nil then\n\t\treturn nil\n\tend\n\tlocal slot = tonumber(string.match(path, \"Card(%d+)\")) or 0\n\treturn self.ShopCards[slot]\nend\nif string.find(path, \"/ui/DeckUIGroup/DeckInspectHud/Grid/Card\", 1, true) == 1 then\n\tlocal pile = nil\n\tif self.DeckInspectKind == \"discard\" then\n\t\tpile = self.DiscardPile\n\telseif self.DeckInspectKind == \"exhaust\" then\n\t\tpile = self.ExhaustPile\n\telse\n\t\tpile = self.DrawPile\n\tend\n\tif pile == nil then\n\t\treturn nil\n\tend\n\tlocal slot = tonumber(string.match(path, \"Card(%d+)\")) or 0\n\treturn pile[slot]\nend\nif string.find(path, \"/ui/DeckUIGroup/DeckAllHud/Grid/Card\", 1, true) == 1 then\n\tlocal pile = self.RunDeck\n\tif self.ClassDeckMode == true then\n\t\tpile = self.ClassDeckCards\n\telseif self.CodexMode == true then\n\t\tpile = self.CodexCards\n\tend\n\tif pile == nil then\n\t\treturn nil\n\tend\n\tlocal slot = tonumber(string.match(path, \"Card(%d+)\")) or 0\n\treturn pile[slot]\nend\nreturn nil", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "GetHoveredCardId" + }, + { + "Return": { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "gridPath" + }, + { + "Type": "any", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "touchPoint" + } + ], + "Code": "if gridPath == nil or gridPath == \"\" or touchPoint == nil then\n\treturn nil\nend\nlocal prefix = nil\nlocal maxSlots = 0\nif gridPath == \"/ui/DeckUIGroup/DeckAllHud/Grid\" then\n\tprefix = \"/ui/DeckUIGroup/DeckAllHud/Grid/Card\"\n\tmaxSlots = 120\nelseif gridPath == \"/ui/DeckUIGroup/DeckInspectHud/Grid\" then\n\tprefix = \"/ui/DeckUIGroup/DeckInspectHud/Grid/Card\"\n\tmaxSlots = 60\nelse\n\treturn nil\nend\nlocal uiPos = _UILogic:ScreenToUIPosition(touchPoint)\nlocal bestPath = nil\nlocal bestDist = 999999\nfor i = 1, maxSlots do\n\tlocal path = prefix .. self:IntStr(i)\n\tlocal cardEntity = _EntityService:GetEntityByPath(path)\n\tif cardEntity ~= nil and cardEntity.Enable == true and cardEntity.UITransformComponent ~= nil then\n\t\tlocal pos = self:GetUiPathPosition(path)\n\t\tlocal dx = uiPos.x - pos.x\n\t\tlocal dy = uiPos.y - pos.y\n\t\tif math.abs(dx) <= 90 and math.abs(dy) <= 125 then\n\t\t\tlocal dist = dx * dx + dy * dy\n\t\t\tif bestPath == nil or dist < bestDist then\n\t\t\t\tbestPath = path\n\t\t\t\tbestDist = dist\n\t\t\tend\n\t\tend\n\tend\nend\nreturn bestPath", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "GetGridCardPathAtPoint" + }, + { + "Return": { + "Type": "any", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "path" + } + ], + "Code": "if path == nil or path == \"\" then\n\treturn Vector2(0, 0)\nend\nlocal sumX = 0\nlocal sumY = 0\nlocal cur = path\nwhile cur ~= nil and cur ~= \"\" do\n\tlocal e = _EntityService:GetEntityByPath(cur)\n\tif e ~= nil and e.UITransformComponent ~= nil then\n\t\tlocal pos = e.UITransformComponent.anchoredPosition\n\t\tif pos ~= nil then\n\t\t\tsumX = sumX + (pos.x or 0)\n\t\t\tsumY = sumY + (pos.y or 0)\n\t\tend\n\tend\n\tlocal slash = string.match(cur, \"^.*()/\")\n\tif slash == nil or slash <= 1 then\n\t\tbreak\n\tend\n\tcur = string.sub(cur, 1, slash - 1)\n\tif cur == \"/ui\" then\n\t\tbreak\n\tend\nend\nreturn Vector2(sumX, sumY)", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "GetUiPathPosition" + }, + { + "Return": { + "Type": "any", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "path" + } + ], + "Code": "local pos = self:GetUiPathPosition(path)\nlocal x = pos.x\nlocal y = pos.y\nlocal sideOffset = 230\nlocal verticalOffset = 0\nif string.find(path, \"/ui/RunUIGroup/CardHand/Card\", 1, true) == 1 then\n\tverticalOffset = 90\nelseif string.find(path, \"/ui/RunUIGroup/RewardHud/Reward\", 1, true) == 1 then\n\tverticalOffset = 30\nelseif string.find(path, \"/ui/RunUIGroup/ShopHud/Card\", 1, true) == 1 then\n\tverticalOffset = 20\nelse\n\tverticalOffset = 0\nend\nlocal tipX = x + sideOffset\nif x > 180 then\n\ttipX = x - sideOffset\nend\nif tipX > 760 then\n\ttipX = x - sideOffset\nend\nif tipX < -760 then\n\ttipX = x + sideOffset\nend\nlocal tipY = y + verticalOffset\nif tipY > 430 then\n\ttipY = 430\nend\nif tipY < -430 then\n\ttipY = -430\nend\nreturn Vector2(tipX, tipY)", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "GetTooltipAnchorForPath" + }, + { + "Return": { + "Type": "void", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "path" + } + ], + "Code": "if path == nil or path == \"\" then\n\treturn\nend\nif self.DragSlot ~= nil and self.DragSlot > 0 and string.find(path, \"/ui/RunUIGroup/CardHand/Card\", 1, true) == 1 then\n\treturn\nend\nif self.GridScrollActive == true and (string.find(path, \"/ui/DeckUIGroup/DeckAllHud/Grid/Card\", 1, true) == 1 or string.find(path, \"/ui/DeckUIGroup/DeckInspectHud/Grid/Card\", 1, true) == 1) then\n\treturn\nend\nlocal cardId = self:GetHoveredCardId(path)\nif cardId == nil or self.Cards == nil then\n\tself:HideTooltip()\n\treturn\nend\nlocal c = self.Cards[cardId]\nif c == nil then\n\tself:HideTooltip()\n\treturn\nend\nlocal tip = self:BuildCardKeywordTooltip(c)\nif tip == nil or tip == \"\" then\n\tself:HideTooltip()\n\treturn\nend\nlocal e = _EntityService:GetEntityByPath(path)\nif e ~= nil and e.UITransformComponent ~= nil then\n\tif string.find(path, \"/ui/RunUIGroup/CardHand/Card\", 1, true) == 1 then\n\t\te.UITransformComponent.UIScale = Vector3(1.3, 1.3, 1)\n\tend\nend\nlocal anchor = self:GetTooltipAnchorForPath(path)\nself:ShowTooltipAt(\"키워드\", tip, anchor.x, anchor.y)", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "HoverCardByPath" + }, + { + "Return": { + "Type": "void", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "gridPath" + }, + { + "Type": "any", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "touchPoint" + } + ], + "Code": "if gridPath == nil or touchPoint == nil then\n\treturn\nend\nlocal path = self:GetGridCardPathAtPoint(gridPath, touchPoint)\nlocal lastPath = self.GridHoverPath\nif lastPath == path then\n\treturn\nend\nif lastPath ~= nil and lastPath ~= \"\" then\n\tself:UnhoverCardByPath(lastPath)\nend\nself.GridHoverPath = path or \"\"\nif path ~= nil and path ~= \"\" then\n\tself:HoverCardByPath(path)\nend", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "HoverGridCard" + }, + { + "Return": { + "Type": "void", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "gridPath" + } + ], + "Code": "local path = self.GridHoverPath\nself.GridHoverPath = \"\"\nif path ~= nil and path ~= \"\" then\n\tself:UnhoverCardByPath(path)\nelse\n\tself:HideTooltip()\nend", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "UnhoverGridCard" + }, + { + "Return": { + "Type": "void", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "string", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "path" + } + ], + "Code": "if path ~= nil and string.find(path, \"/ui/RunUIGroup/CardHand/Card\", 1, true) == 1 then\n\tlocal e = _EntityService:GetEntityByPath(path)\n\tif e ~= nil and e.UITransformComponent ~= nil then\n\t\te.UITransformComponent.UIScale = Vector3(1, 1, 1)\n\tend\nend\nself:HideTooltip()", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "UnhoverCardByPath" + }, { "Return": { "Type": "void", @@ -4812,7 +5556,7 @@ "Name": "slot" } ], - "Code": "if self.DragSlot ~= nil and self.DragSlot > 0 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 e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. tostring(slot))\nlocal tx = 0\nif e ~= nil and e.UITransformComponent ~= nil then\n\ttx = e.UITransformComponent.anchoredPosition.x\n\te.UITransformComponent.UIScale = Vector3(1.3, 1.3, 1)\nend\nlocal c = self.Cards[cardId]\nif c ~= nil then\n\tlocal tip = self:BuildCardKeywordTooltip(c)\n\tif tip ~= \"\" then\n\t\tlocal tipX = tx + 270\n\t\tif tx > 180 then tipX = tx - 270 end\n\t\tif tipX > 760 then tipX = tx - 270 end\n\t\tif tipX < -760 then tipX = tx + 270 end\n\t\tself:ShowTooltipAt(\"키워드\", tip, tipX, 90)\n\telse\n\t\tself:HideTooltip()\n\tend\nend", + "Code": "if self.DragSlot ~= nil and self.DragSlot > 0 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 e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(slot))\nif e ~= nil and e.UITransformComponent ~= nil then\n\te.UITransformComponent.UIScale = Vector3(1.3, 1.3, 1)\nend\nlocal c = self.Cards[cardId]\nif c ~= nil then\n\tlocal tip = self:BuildCardKeywordTooltip(c)\n\tif tip ~= \"\" then\n\t\tlocal anchor = self:GetTooltipAnchorForPath(\"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(slot))\n\t\tself:ShowTooltipAt(\"키워드\", tip, anchor.x, anchor.y)\n\telse\n\t\tself:HideTooltip()\n\tend\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -4835,7 +5579,7 @@ "Name": "slot" } ], - "Code": "local e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. tostring(slot))\nif e ~= nil and e.UITransformComponent ~= nil then\n\te.UITransformComponent.UIScale = Vector3(1, 1, 1)\nend\nself:HideTooltip()", + "Code": "local e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CardHand/Card\" .. self:IntStr(slot))\nif e ~= nil and e.UITransformComponent ~= nil then\n\te.UITransformComponent.UIScale = Vector3(1, 1, 1)\nend\nself:HideTooltip()", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -4916,7 +5660,7 @@ "Name": "y" } ], - "Code": "self:SetText(\"/ui/RunUIGroup/CombatHud/TooltipBox/Name\", name)\nself:SetText(\"/ui/RunUIGroup/CombatHud/TooltipBox/Desc\", desc)\nlocal e = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/CombatHud/TooltipBox\")\nif e ~= nil then\n\tif e.UITransformComponent ~= nil then\n\t\te.UITransformComponent.anchoredPosition = Vector2(x, y)\n\tend\n\te.Enable = true\nend", + "Code": "self:SetText(\"/ui/ToolTipGroup/TooltipBox/Name\", name)\nself:SetText(\"/ui/ToolTipGroup/TooltipBox/Desc\", desc)\nlocal e = _EntityService:GetEntityByPath(\"/ui/ToolTipGroup/TooltipBox\")\nif e ~= nil then\n\tif e.UITransformComponent ~= nil then\n\t\te.UITransformComponent.anchoredPosition = Vector2(x, y)\n\tend\n\te.Enable = true\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -4931,7 +5675,7 @@ "Name": null }, "Arguments": [], - "Code": "self:SetEntityEnabled(\"/ui/RunUIGroup/CombatHud/TooltipBox\", false)", + "Code": "self:SetEntityEnabled(\"/ui/ToolTipGroup/TooltipBox\", false)", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -5044,7 +5788,7 @@ "Name": "toId" } ], - "Code": "local node = self.MapNodes[fromId]\nlocal has = false\nif node ~= nil then\n\tfor i = 1, #node.next do\n\t\tif node.next[i] == toId then has = true end\n\tend\nend\nfor k = 1, 3 do\n\tlocal d = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/MapHud/Dot_\" .. dotId .. \"_\" .. tostring(k))\n\tif d ~= nil then\n\t\td.Enable = has\n\t\tif has == true and d.SpriteGUIRendererComponent ~= nil then\n\t\t\tif fromId == self.CurrentNodeId then\n\t\t\t\td.SpriteGUIRendererComponent.Color = Color(0.95, 0.8, 0.3, 1)\n\t\t\telse\n\t\t\t\td.SpriteGUIRendererComponent.Color = Color(0.5, 0.5, 0.55, 0.8)\n\t\t\tend\n\t\tend\n\tend\nend", + "Code": "local node = self.MapNodes[fromId]\nlocal has = false\nif node ~= nil then\n\tfor i = 1, #node.next do\n\t\tif node.next[i] == toId then has = true end\n\tend\nend\nfor k = 1, 3 do\n\tlocal d = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/MapHud/Dot_\" .. dotId .. \"_\" .. self:IntStr(k))\n\tif d ~= nil then\n\t\td.Enable = has\n\t\tif has == true and d.SpriteGUIRendererComponent ~= nil then\n\t\t\tif fromId == self.CurrentNodeId then\n\t\t\t\td.SpriteGUIRendererComponent.Color = Color(0.95, 0.8, 0.3, 1)\n\t\t\telse\n\t\t\t\td.SpriteGUIRendererComponent.Color = Color(0.5, 0.5, 0.55, 0.8)\n\t\t\tend\n\t\tend\n\tend\nend", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -5112,7 +5856,7 @@ "Name": null }, "Arguments": [], - "Code": "self:SetText(\"/ui/RunUIGroup/ShopHud/Gold\", \"메소 \" .. string.format(\"%d\", self.Gold))\nfor i = 1, 3 do\n\tlocal cid = self.ShopChoices[i]\n\tlocal c = self.Cards[cid]\n\tlocal base = \"/ui/RunUIGroup/ShopHud/Card\" .. tostring(i)\n\tif c ~= nil then\n\t\tself:ApplyCardFace(base, cid)\n\t\tself:SetText(base .. \"/Price\", string.format(\"%d\", 30) .. \" 메소\")\n\t\tlocal e = _EntityService:GetEntityByPath(base)\n\t\tif e ~= nil and e.SpriteGUIRendererComponent ~= nil then\n\t\t\tif self.ShopBought[i] == true then\n\t\t\t\te.SpriteGUIRendererComponent.Color = Color(0.2, 0.22, 0.26, 0.6)\n\t\t\tend\n\t\tend\n\tend\nend\nlocal rr = self.Relics[self.ShopRelic]\nif rr ~= nil then\n\tself:SetEntityEnabled(\"/ui/RunUIGroup/ShopHud/Relic\", true)\n\tself:SetText(\"/ui/RunUIGroup/ShopHud/Relic/Label\", rr.name .. \" — \" .. rr.desc)\n\tself:SetText(\"/ui/RunUIGroup/ShopHud/Relic/Price\", string.format(\"%d\", 60) .. \" 메소\")\n\tlocal re = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/ShopHud/Relic\")\n\tif re ~= nil and re.SpriteGUIRendererComponent ~= nil then\n\t\tif self.ShopRelicBought == true then\n\t\t\tre.SpriteGUIRendererComponent.Color = Color(0.2, 0.22, 0.26, 0.6)\n\t\telse\n\t\t\tre.SpriteGUIRendererComponent.Color = Color(0.7, 0.55, 0.85, 1)\n\t\tend\n\tend\nelse\n\tself:SetEntityEnabled(\"/ui/RunUIGroup/ShopHud/Relic\", false)\nend\nlocal pp = self.Potions[self.ShopPotion]\nif pp ~= nil then\n\tself:SetText(\"/ui/RunUIGroup/ShopHud/Potion/Label\", pp.name .. \" — \" .. pp.desc)\n\tself:SetText(\"/ui/RunUIGroup/ShopHud/Potion/Price\", string.format(\"%d\", 20) .. \" 메소\")\n\tlocal pe = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/ShopHud/Potion\")\n\tif pe ~= nil and pe.SpriteGUIRendererComponent ~= nil then\n\t\tif self.ShopPotionBought == true then\n\t\t\tpe.SpriteGUIRendererComponent.Color = Color(0.2, 0.22, 0.26, 0.6)\n\t\telse\n\t\t\tpe.SpriteGUIRendererComponent.Color = Color(0.45, 0.7, 0.55, 1)\n\t\tend\n\tend\nend", + "Code": "self:SetText(\"/ui/RunUIGroup/ShopHud/Gold\", \"메소 \" .. string.format(\"%d\", self.Gold))\nfor i = 1, 3 do\n\tlocal cid = self.ShopChoices[i]\n\tlocal c = self.Cards[cid]\n\tlocal base = \"/ui/RunUIGroup/ShopHud/Card\" .. self:IntStr(i)\n\tif c ~= nil then\n\t\tself:ApplyCardFace(base, cid)\n\t\tself:SetText(base .. \"/Price\", string.format(\"%d\", 30) .. \" 메소\")\n\t\tlocal e = _EntityService:GetEntityByPath(base)\n\t\tif e ~= nil and e.SpriteGUIRendererComponent ~= nil then\n\t\t\tif self.ShopBought[i] == true then\n\t\t\t\te.SpriteGUIRendererComponent.Color = Color(0.2, 0.22, 0.26, 0.6)\n\t\t\tend\n\t\tend\n\tend\nend\nlocal rr = self.Relics[self.ShopRelic]\nif rr ~= nil then\n\tself:SetEntityEnabled(\"/ui/RunUIGroup/ShopHud/Relic\", true)\n\tself:SetText(\"/ui/RunUIGroup/ShopHud/Relic/Label\", rr.name .. \" — \" .. rr.desc)\n\tself:SetText(\"/ui/RunUIGroup/ShopHud/Relic/Price\", string.format(\"%d\", 60) .. \" 메소\")\n\tlocal re = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/ShopHud/Relic\")\n\tif re ~= nil and re.SpriteGUIRendererComponent ~= nil then\n\t\tif self.ShopRelicBought == true then\n\t\t\tre.SpriteGUIRendererComponent.Color = Color(0.2, 0.22, 0.26, 0.6)\n\t\telse\n\t\t\tre.SpriteGUIRendererComponent.Color = Color(0.7, 0.55, 0.85, 1)\n\t\tend\n\tend\nelse\n\tself:SetEntityEnabled(\"/ui/RunUIGroup/ShopHud/Relic\", false)\nend\nlocal pp = self.Potions[self.ShopPotion]\nif pp ~= nil then\n\tself:SetText(\"/ui/RunUIGroup/ShopHud/Potion/Label\", pp.name .. \" — \" .. pp.desc)\n\tself:SetText(\"/ui/RunUIGroup/ShopHud/Potion/Price\", string.format(\"%d\", 20) .. \" 메소\")\n\tlocal pe = _EntityService:GetEntityByPath(\"/ui/RunUIGroup/ShopHud/Potion\")\n\tif pe ~= nil and pe.SpriteGUIRendererComponent ~= nil then\n\t\tif self.ShopPotionBought == true then\n\t\t\tpe.SpriteGUIRendererComponent.Color = Color(0.2, 0.22, 0.26, 0.6)\n\t\telse\n\t\t\tpe.SpriteGUIRendererComponent.Color = Color(0.45, 0.7, 0.55, 1)\n\t\tend\n\tend\nend", "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 f51ce3b..2138770 100644 --- a/data/cards.json +++ b/data/cards.json @@ -1,7 +1,7 @@ { "cards": { "Strike": { - "name": "파워 스트라이크", + "name": "타격", "cost": 1, "kind": "Attack", "damage": 6, @@ -11,192 +11,1408 @@ "rarity": "normal", "fx": "291b2298db88476f8ae3c6c78f53c9b7" }, - "Defend": { - "name": "아이언 바디", - "cost": 1, - "kind": "Skill", - "block": 5, - "desc": "방어도 5", - "image": "7648c3b8e1ca44fc8ec353561207a670", - "class": "warrior", - "rarity": "normal" - }, "Bash": { - "name": "슬래시 블러스트", + "name": "강타", "cost": 2, "kind": "Attack", - "damage": 10, - "desc": "피해 10", - "image": "4cbbe8cfc3e840e4a76379498d8eb012", + "damage": 8, + "vuln": 2, + "desc": "피해 8, 취약 2", + "image": "7648c3b8e1ca44fc8ec353561207a670", "class": "warrior", "rarity": "normal", "fx": "863812c5c2f84132ac7465b50ec2283e" }, - "WarLeap": { - "name": "워 리프", + "Defend": { + "name": "수비", + "cost": 1, + "kind": "Skill", + "block": 5, + "desc": "방어도 5", + "image": "4cbbe8cfc3e840e4a76379498d8eb012", + "class": "warrior", + "rarity": "normal" + }, + "Anger": { + "name": "분노", + "cost": 0, + "kind": "Attack", + "damage": 6, + "desc": "피해 6", + "image": "992dabf6aff2400e92b2f4f705d8ebe7", + "class": "warrior", + "rarity": "normal", + "fx": "48754be05be344358cddd55aa8fe11f4" + }, + "MoltenFist": { + "name": "불꽃 강타", + "cost": 1, + "kind": "Attack", + "damage": 10, + "vuln": 2, + "exhaust": true, + "desc": "피해 10, 취약 2. 소멸.", + "image": "21af4bccc5054a5dbc8245dfa7f08681", + "class": "warrior", + "rarity": "normal", + "fx": "6f283d96d5804b4fb88009685a11c1f8" + }, + "BodySlam": { + "name": "방패 밀어치기", + "cost": 1, + "kind": "Attack", + "damageFromCurrentBlock": 1, + "desc": "현재 방어도만큼 피해를 줍니다.", + "image": "fe83c7635b0e49ed83d75a2833adb53e", + "class": "warrior", + "rarity": "normal", + "fx": "997fa6999aa04dbb97a1dd99025fa2ba" + }, + "Headbutt": { + "name": "박치기", + "cost": 1, + "kind": "Attack", + "damage": 9, + "draw": 1, + "desc": "피해 9, 카드 1장 뽑기", + "image": "64daadf1a98e490d9c14ef52ec776e63", + "class": "warrior", + "rarity": "normal", + "fx": "2799562e984c4a4da3b73e1f3431057c" + }, + "SwordBoomerang": { + "name": "회전 검격", + "cost": 1, + "kind": "Attack", + "damage": 3, + "hits": 3, + "randomTargetEachHit": true, + "desc": "무작위 적에게 피해 3 x 3회", + "image": "09370fc7551e47238fd103a80fba558e", + "class": "warrior", + "rarity": "normal", + "fx": "1b0afc410a1a458598eb7ca2fb26e97d" + }, + "SetupStrike": { + "name": "기선 타격", + "cost": 1, + "kind": "Attack", + "damage": 7, + "strength": 2, + "desc": "피해 7, 힘 +2", + "image": "379d86e3de064959aa4612f71e84ccfb", + "class": "warrior", + "rarity": "normal", + "fx": "291b2298db88476f8ae3c6c78f53c9b7" + }, + "TwinStrike": { + "name": "연속 타격", + "cost": 1, + "kind": "Attack", + "damage": 5, + "hits": 2, + "desc": "피해 5 x 2회", + "image": "1bc3e52b330648faae9eafd5a205e37b", + "class": "warrior", + "rarity": "normal", + "fx": "863812c5c2f84132ac7465b50ec2283e" + }, + "Breakthrough": { + "name": "전선 돌파", + "cost": 1, + "kind": "Attack", + "damage": 9, + "aoe": true, + "desc": "모든 적에게 피해 9", + "image": "e2580523efc6457385114b78ad0d7cce", + "class": "warrior", + "rarity": "normal", + "fx": "e8a145a6c43d493f9ad50fab03b200aa" + }, + "Thunderclap": { + "name": "전장의 벼락", "cost": 1, "kind": "Attack", "damage": 4, - "block": 3, - "desc": "피해 4, 방어도 3", + "aoe": true, + "vuln": 1, + "affectsAllEnemies": true, + "desc": "모든 적에게 피해 4, 취약 1", + "image": "115e309771604743853abad2d8d186bc", + "class": "warrior", + "rarity": "normal", + "fx": "48754be05be344358cddd55aa8fe11f4" + }, + "IronWave": { + "name": "강철 검기", + "cost": 1, + "kind": "Attack", + "damage": 5, + "block": 5, + "desc": "피해 5, 방어도 5", + "image": "b7030d8caedc4fbc9f38fe1e541d6e6b", + "class": "warrior", + "rarity": "normal", + "fx": "6f283d96d5804b4fb88009685a11c1f8" + }, + "PommelStrike": { + "name": "칼자루 타격", + "cost": 1, + "kind": "Attack", + "damage": 9, + "draw": 1, + "desc": "피해 9, 카드 1장 뽑기", + "image": "9aac955d159f49c1bc913ef96128e781", + "class": "warrior", + "rarity": "normal", + "fx": "997fa6999aa04dbb97a1dd99025fa2ba" + }, + "PerfectedStrike": { + "name": "숙련된 타격", + "cost": 2, + "kind": "Attack", + "damage": 6, + "damageNameMatch": "타격", + "damagePerOwnedNameMatch": 2, + "desc": "피해 6. 보유한 이름에 \"타격\"이 포함된 카드마다 피해 +2", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "warrior", + "rarity": "normal", + "fx": "2799562e984c4a4da3b73e1f3431057c" + }, + "Cinder": { + "name": "잿불 검격", + "cost": 2, + "kind": "Attack", + "damage": 18, + "exhaust": true, + "desc": "피해 18. 소멸.", + "image": "251b6e12329048429490049a4f3cf564", + "class": "warrior", + "rarity": "normal", + "fx": "1b0afc410a1a458598eb7ca2fb26e97d" + }, + "Bloodletting": { + "name": "투지 분출", + "cost": 0, + "kind": "Skill", + "gainEnergy": 2, + "desc": "에너지 +2", + "image": "92021d62341a4bce9cfd09d1b4b865db", + "class": "warrior", + "rarity": "normal" + }, + "Tremble": { + "name": "위압", + "cost": 1, + "kind": "Skill", + "vuln": 3, + "exhaust": true, + "desc": "취약 3. 소멸.", + "image": "b4020dbadee6401f9893a020fe4154b1", + "class": "warrior", + "rarity": "normal" + }, + "Armaments": { + "name": "전투장비", + "cost": 1, + "kind": "Skill", + "block": 5, + "draw": 1, + "desc": "방어도 5, 카드 1장 뽑기", + "image": "e4acdf27d68549db8858d6082169c70c", + "class": "warrior", + "rarity": "normal" + }, + "TrueGrit": { + "name": "강철 의지", + "cost": 1, + "kind": "Skill", + "block": 7, + "discard": 1, + "desc": "방어도 7, 카드 1장 버리기", + "image": "7648c3b8e1ca44fc8ec353561207a670", + "class": "warrior", + "rarity": "normal" + }, + "Havoc": { + "name": "전투 전술", + "cost": 1, + "kind": "Skill", + "nextSkillCostZero": true, + "desc": "다음 스킬의 비용이 0", + "image": "4cbbe8cfc3e840e4a76379498d8eb012", + "class": "warrior", + "rarity": "normal" + }, + "ShrugItOff": { + "name": "충격 흘리기", + "cost": 1, + "kind": "Skill", + "block": 8, + "draw": 1, + "desc": "방어도 8, 카드 1장 뽑기", "image": "992dabf6aff2400e92b2f4f705d8ebe7", "class": "warrior", "rarity": "normal" }, - "Brandish": { - "name": "브랜디시", + "BloodWall": { + "name": "붉은 방벽", "cost": 2, - "kind": "Attack", - "damage": 13, - "desc": "피해 13", + "kind": "Skill", + "block": 16, + "desc": "방어도 16", "image": "21af4bccc5054a5dbc8245dfa7f08681", "class": "warrior", + "rarity": "normal" + }, + "Whirlwind": { + "name": "소용돌이", + "cost": 0, + "kind": "Attack", + "damage": 0, + "aoe": true, + "useAllEnergy": true, + "xDamagePerEnergy": 5, + "desc": "모든 에너지를 사용해 에너지당 모든 적에게 피해 5", + "image": "fe83c7635b0e49ed83d75a2833adb53e", + "class": "crusader", + "rarity": "unique", + "fx": "1b0afc410a1a458598eb7ca2fb26e97d" + }, + "Spite": { + "name": "맹공", + "cost": 0, + "kind": "Attack", + "damage": 5, + "hits": 2, + "desc": "피해 5 x 2회", + "image": "64daadf1a98e490d9c14ef52ec776e63", + "class": "warrior", + "rarity": "unique", + "fx": "291b2298db88476f8ae3c6c78f53c9b7" + }, + "Bully": { + "name": "전장의 압박", + "cost": 0, + "kind": "Attack", + "damage": 4, + "attackDamageVsWeakMultiplier": 2, + "desc": "피해 4. 대상이 약화 상태면 피해 2배", + "image": "09370fc7551e47238fd103a80fba558e", + "class": "page", + "rarity": "unique", + "fx": "863812c5c2f84132ac7465b50ec2283e" + }, + "Pillage": { + "name": "전리품 확보", + "cost": 1, + "kind": "Attack", + "damage": 6, + "draw": 2, + "desc": "피해 6, 카드 2장 뽑기", + "image": "379d86e3de064959aa4612f71e84ccfb", + "class": "fighter", "rarity": "unique", "fx": "e8a145a6c43d493f9ad50fab03b200aa" }, - "ChargedBlow": { - "name": "차지 블로우", + "Rampage": { + "name": "거듭된 맹공", "cost": 2, "kind": "Attack", + "damage": 12, + "combatCostReductionOnPlay": 1, + "desc": "피해 12. 사용할 때마다 이번 전투에서 비용 1 감소", + "image": "1bc3e52b330648faae9eafd5a205e37b", + "class": "fighter", + "rarity": "unique", + "fx": "48754be05be344358cddd55aa8fe11f4" + }, + "AshenStrike": { + "name": "누적 타격", + "cost": 1, + "kind": "Attack", + "damage": 6, + "damagePerCardDrawnThisCombat": 1, + "desc": "피해 6. 이번 전투에서 뽑은 카드마다 피해 +1", + "image": "e2580523efc6457385114b78ad0d7cce", + "class": "fighter", + "rarity": "unique", + "fx": "6f283d96d5804b4fb88009685a11c1f8" + }, + "Dismantle": { + "name": "갑주 가르기", + "cost": 1, + "kind": "Attack", "damage": 8, - "firstCardDamageBonus": 2, - "vuln": 2, - "desc": "피해 8, 취약 2", + "hits": 2, + "desc": "피해 8 x 2회", + "image": "115e309771604743853abad2d8d186bc", + "class": "fighter", + "rarity": "unique", + "fx": "997fa6999aa04dbb97a1dd99025fa2ba" + }, + "Hemokinesis": { + "name": "혼신의 일격", + "cost": 1, + "kind": "Attack", + "damage": 15, + "desc": "피해 15", + "image": "b7030d8caedc4fbc9f38fe1e541d6e6b", + "class": "fighter", + "rarity": "unique", + "fx": "2799562e984c4a4da3b73e1f3431057c" + }, + "FightMe": { + "name": "결투 신청", + "cost": 2, + "kind": "Attack", + "damage": 5, + "hits": 2, + "strength": 3, + "desc": "피해 5 x 2회, 힘 +3", + "image": "9aac955d159f49c1bc913ef96128e781", + "class": "fighter", + "rarity": "unique", + "fx": "1b0afc410a1a458598eb7ca2fb26e97d" + }, + "Unrelenting": { + "name": "진격의 일격", + "cost": 2, + "kind": "Attack", + "damage": 14, + "gainEnergy": 1, + "desc": "피해 14, 에너지 +1", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "fighter", + "rarity": "unique", + "fx": "291b2298db88476f8ae3c6c78f53c9b7" + }, + "Uppercut": { + "name": "어퍼컷", + "cost": 2, + "kind": "Attack", + "damage": 12, + "weak": 1, + "vuln": 1, + "desc": "피해 12, 약화 1, 취약 1", + "image": "251b6e12329048429490049a4f3cf564", + "class": "fighter", + "rarity": "unique", + "fx": "863812c5c2f84132ac7465b50ec2283e" + }, + "Bludgeon": { + "name": "대검 강타", + "cost": 3, + "kind": "Attack", + "damage": 32, + "desc": "피해 32", + "image": "92021d62341a4bce9cfd09d1b4b865db", + "class": "crusader", + "rarity": "unique", + "fx": "e8a145a6c43d493f9ad50fab03b200aa" + }, + "HowlFromBeyond": { + "name": "전장의 포효", + "cost": 3, + "kind": "Attack", + "damage": 16, + "aoe": true, + "exhaust": true, + "desc": "모든 적에게 피해 16. 소멸.", + "image": "b4020dbadee6401f9893a020fe4154b1", + "class": "crusader", + "rarity": "unique", + "fx": "48754be05be344358cddd55aa8fe11f4" + }, + "Stomp": { + "name": "진형 붕괴", + "cost": 3, + "kind": "Attack", + "damage": 12, + "aoe": true, + "damagePerAttackPlayedThisTurn": 2, + "desc": "모든 적에게 피해 12. 이번 턴 사용한 공격 카드마다 피해 +2", + "image": "e4acdf27d68549db8858d6082169c70c", + "class": "crusader", + "rarity": "unique", + "fx": "6f283d96d5804b4fb88009685a11c1f8" + }, + "Rage": { + "name": "격노", + "cost": 0, + "kind": "Skill", + "block": 5, + "draw": 1, + "desc": "방어도 5, 카드 1장 뽑기", + "image": "7648c3b8e1ca44fc8ec353561207a670", + "class": "warrior", + "rarity": "unique" + }, + "BattleTrance": { + "name": "전투 집중", + "cost": 0, + "kind": "Skill", + "draw": 3, + "drawDisabledThisTurn": true, + "desc": "카드 3장 뽑기. 이번 턴 더 뽑을 수 없음", + "image": "4cbbe8cfc3e840e4a76379498d8eb012", + "class": "warrior", + "rarity": "unique" + }, + "Colossus": { + "name": "철벽 자세", + "cost": 1, + "kind": "Skill", + "block": 5, + "intangible": 1, + "desc": "방어도 5, 무형 1", + "image": "992dabf6aff2400e92b2f4f705d8ebe7", + "class": "page", + "rarity": "unique" + }, + "SecondWind": { + "name": "기사회생", + "cost": 1, + "kind": "Skill", + "exhaustHandNonAttack": true, + "blockPerExhaustedCard": 5, + "desc": "손의 공격이 아닌 모든 카드를 소멸시키고, 소멸시킨 카드마다 방어도 5", + "image": "21af4bccc5054a5dbc8245dfa7f08681", + "class": "page", + "rarity": "unique" + }, + "Taunt": { + "name": "도발", + "cost": 1, + "kind": "Skill", + "block": 7, + "vuln": 1, + "desc": "방어도 7, 취약 1", "image": "fe83c7635b0e49ed83d75a2833adb53e", "class": "warrior", "rarity": "unique" }, - "Threaten": { - "name": "위협", - "cost": 0, - "kind": "Skill", - "weak": 2, - "desc": "약화 2 부여", - "image": "64daadf1a98e490d9c14ef52ec776e63", - "class": "warrior", - "rarity": "normal" - }, - "Enrage": { - "name": "인레이지", + "BurningPact": { + "name": "결사의 각오", "cost": 1, "kind": "Skill", - "strength": 2, - "desc": "힘 +2", + "discard": 1, + "draw": 3, + "desc": "카드 1장 버리고 카드 3장 뽑기", + "image": "64daadf1a98e490d9c14ef52ec776e63", + "class": "fighter", + "rarity": "unique" + }, + "EvilEye": { + "name": "빈틈없는 방어", + "cost": 1, + "kind": "Skill", + "block": 16, + "desc": "방어도 16", "image": "09370fc7551e47238fd103a80fba558e", + "class": "page", + "rarity": "unique" + }, + "ForgottenRitual": { + "name": "비상 전력", + "cost": 1, + "kind": "Skill", + "gainEnergy": 2, + "exhaust": true, + "desc": "에너지 +2. 소멸.", + "image": "379d86e3de064959aa4612f71e84ccfb", "class": "warrior", "rarity": "unique" }, - "Rage": { - "name": "분노", + "DrumOfBattle": { + "name": "전투의 북소리", + "cost": 1, + "kind": "Skill", + "draw": 2, + "gainEnergy": 1, + "exhaust": true, + "desc": "카드 2장 뽑기, 에너지 +1. 소멸.", + "image": "1bc3e52b330648faae9eafd5a205e37b", + "class": "page", + "rarity": "unique" + }, + "Dominate": { + "name": "제압", + "cost": 1, + "kind": "Skill", + "vuln": 2, + "strength": 2, + "exhaust": true, + "desc": "취약 2, 힘 +2. 소멸.", + "image": "e2580523efc6457385114b78ad0d7cce", + "class": "warrior", + "rarity": "unique" + }, + "InfernalBlade": { + "name": "임시 무장", + "cost": 1, + "kind": "Skill", + "addRandomCardCount": 1, + "addRandomCardKind": "Attack", + "addRandomCardSameClass": true, + "addedCardsCostZeroThisTurn": true, + "exhaust": true, + "desc": "무작위 공격 카드 1장을 손으로 가져옵니다. 이번 턴 동안 그 카드를 비용 없이 사용할 수 있습니다. 소멸.", + "image": "115e309771604743853abad2d8d186bc", + "class": "warrior", + "rarity": "unique" + }, + "ExpectAFight": { + "name": "싸움 준비", + "cost": 1, + "kind": "Skill", + "skillCostReductionThisTurn": 1, + "desc": "이번 턴 스킬 비용 1 감소", + "image": "b7030d8caedc4fbc9f38fe1e541d6e6b", + "class": "warrior", + "rarity": "unique" + }, + "FlameBarrier": { + "name": "화염 장벽", + "cost": 2, + "kind": "Skill", + "block": 12, + "thorns": 4, + "desc": "방어도 12, 가시 4", + "image": "9aac955d159f49c1bc913ef96128e781", + "class": "page", + "rarity": "unique" + }, + "StoneArmor": { + "name": "강철 갑옷", + "cost": 1, + "kind": "Power", + "powerEffect": "blockPerTurn", + "value": 4, + "desc": "매턴 방어도 +4", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "page", + "rarity": "unique" + }, + "FeelNoPain": { + "name": "고통 인내", + "cost": 1, + "kind": "Power", + "powerEffect": "blockPerTurn", + "value": 3, + "desc": "매턴 방어도 +3", + "image": "251b6e12329048429490049a4f3cf564", + "class": "page", + "rarity": "unique" + }, + "Inflame": { + "name": "발화", + "cost": 1, + "kind": "Power", + "powerEffect": "strengthPerTurn", + "value": 1, + "desc": "매턴 힘 +1", + "image": "92021d62341a4bce9cfd09d1b4b865db", + "class": "fighter", + "rarity": "unique" + }, + "Inferno": { + "name": "불바다", + "cost": 1, + "kind": "Power", + "powerEffect": "damagePerTurn", + "value": 6, + "desc": "매턴 모든 적에게 피해 6", + "image": "b4020dbadee6401f9893a020fe4154b1", + "class": "warrior", + "rarity": "unique" + }, + "Juggling": { + "name": "연속 공세", + "cost": 1, + "kind": "Power", + "cardPlayedRandomDamage": 3, + "desc": "카드를 사용할 때마다 무작위 적에게 피해 3", + "image": "e4acdf27d68549db8858d6082169c70c", + "class": "fighter", + "rarity": "unique" + }, + "Rupture": { + "name": "파열", + "cost": 1, + "kind": "Power", + "powerEffect": "strengthPerTurn", + "value": 1, + "desc": "매턴 힘 +1", + "image": "7648c3b8e1ca44fc8ec353561207a670", + "class": "fighter", + "rarity": "unique" + }, + "Vicious": { + "name": "포악함", + "cost": 1, + "kind": "Power", + "turnStartDraw": 1, + "desc": "턴 시작 시 카드 1장 추가로 뽑기", + "image": "4cbbe8cfc3e840e4a76379498d8eb012", + "class": "warrior", + "rarity": "unique" + }, + "Stampede": { + "name": "쇄도", + "cost": 2, + "kind": "Power", + "cardPlayedRandomDamage": 8, + "desc": "카드를 사용할 때마다 무작위 적에게 피해 8", + "image": "992dabf6aff2400e92b2f4f705d8ebe7", + "class": "fighter", + "rarity": "unique" + }, + "PactsEnd": { + "name": "최후의 일격", + "cost": 0, + "kind": "Attack", + "damage": 17, + "aoe": true, + "playableWhenDrawPileEmpty": true, + "desc": "뽑을 카드 더미가 비었을 때 모든 적에게 피해 17", + "image": "21af4bccc5054a5dbc8245dfa7f08681", + "class": "knight", + "rarity": "legend", + "fx": "e8a145a6c43d493f9ad50fab03b200aa" + }, + "Thrash": { + "name": "난타", "cost": 1, "kind": "Attack", - "aoe": true, "damage": 4, - "desc": "모든 적에게 피해를 4 줍니다.", + "hits": 2, + "damagePerAttackPlayedThisTurn": 2, + "desc": "피해 4 x 2회. 이번 턴 사용한 공격 카드마다 피해 +2", + "image": "fe83c7635b0e49ed83d75a2833adb53e", + "class": "crusader", + "rarity": "legend", + "fx": "48754be05be344358cddd55aa8fe11f4" + }, + "Conflagration": { + "name": "대화재", + "cost": 1, + "kind": "Attack", + "damage": 2, + "hits": 4, + "aoe": true, + "desc": "모든 적에게 피해 2 x 4회", + "image": "64daadf1a98e490d9c14ef52ec776e63", + "class": "crusader", + "rarity": "legend", + "fx": "6f283d96d5804b4fb88009685a11c1f8" + }, + "Feed": { + "name": "포식", + "cost": 1, + "kind": "Attack", + "damage": 10, + "maxHpOnKill": 3, + "exhaust": true, + "desc": "피해를 10 줍니다. 치명타라면, 최대 체력이 3 증가합니다. 소멸.", + "image": "09370fc7551e47238fd103a80fba558e", + "class": "knight", + "rarity": "legend", + "fx": "997fa6999aa04dbb97a1dd99025fa2ba" + }, + "TearAsunder": { + "name": "삼연참", + "cost": 2, + "kind": "Attack", + "damage": 5, + "hits": 3, + "desc": "피해 5 x 3회", + "image": "379d86e3de064959aa4612f71e84ccfb", + "class": "crusader", + "rarity": "legend", + "fx": "2799562e984c4a4da3b73e1f3431057c" + }, + "FiendFire": { + "name": "최후의 패", + "cost": 2, + "kind": "Attack", + "damage": 0, + "damagePerOtherHandCard": 7, + "discardAll": true, + "exhaust": true, + "desc": "손의 다른 카드마다 피해 +7 후 모두 버리기. 소멸.", + "image": "1bc3e52b330648faae9eafd5a205e37b", + "class": "crusader", + "rarity": "legend", + "fx": "1b0afc410a1a458598eb7ca2fb26e97d" + }, + "Mangle": { + "name": "공포의 일격", + "cost": 3, + "kind": "Attack", + "damage": 15, + "enemyStrengthLossThisTurn": 10, + "desc": "피해 15. 이번 턴 적 힘 -10", + "image": "e2580523efc6457385114b78ad0d7cce", + "class": "knight", + "rarity": "legend", + "fx": "291b2298db88476f8ae3c6c78f53c9b7" + }, + "Brand": { + "name": "낙인", + "cost": 0, + "kind": "Skill", + "discard": 1, + "strength": 1, + "desc": "카드 1장 버리기, 힘 +1", + "image": "115e309771604743853abad2d8d186bc", + "class": "warrior", + "rarity": "legend" + }, + "Cascade": { + "name": "연속 전개", + "cost": 0, + "kind": "Skill", + "useAllEnergy": true, + "playTopDrawPileCountPerEnergy": 1, + "exhaust": true, + "desc": "뽑을 카드 더미 맨 위의 카드 X장을 사용합니다. 소멸.", + "image": "b7030d8caedc4fbc9f38fe1e541d6e6b", + "class": "warrior", + "rarity": "legend" + }, + "PrimalForce": { + "name": "전사의 본능", + "cost": 0, + "kind": "Skill", + "handCostZeroThisTurn": true, + "desc": "이번 턴 손의 카드 비용이 0", + "image": "9aac955d159f49c1bc913ef96128e781", + "class": "knight", + "rarity": "legend" + }, + "Offering": { + "name": "전력 방출", + "cost": 0, + "kind": "Skill", + "gainEnergy": 2, + "draw": 3, + "exhaust": true, + "desc": "에너지 +2, 카드 3장 뽑기. 소멸.", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "crusader", + "rarity": "legend" + }, + "OneTwoPunch": { + "name": "연계 전술", + "cost": 1, + "kind": "Skill", + "nextSkillRepeatCount": 1, + "desc": "다음 스킬을 1회 추가 발동", + "image": "251b6e12329048429490049a4f3cf564", + "class": "warrior", + "rarity": "legend" + }, + "Stoke": { + "name": "전투 재정비", + "cost": 1, + "kind": "Skill", + "exhaustHandAll": true, + "drawPerExhausted": 1, + "exhaust": true, + "desc": "손의 모든 카드를 소멸시키고, 소멸시킨 카드 수만큼 뽑습니다. 소멸.", + "image": "92021d62341a4bce9cfd09d1b4b865db", + "class": "knight", + "rarity": "legend" + }, + "Impervious": { + "name": "무적", + "cost": 2, + "kind": "Skill", + "block": 30, + "exhaust": true, + "desc": "방어도 30. 소멸.", + "image": "b4020dbadee6401f9893a020fe4154b1", + "class": "knight", + "rarity": "legend" + }, + "NotYet": { + "name": "불굴", + "cost": 2, + "kind": "Skill", + "heal": 10, + "exhaust": true, + "desc": "HP 10 회복. 소멸.", + "image": "e4acdf27d68549db8858d6082169c70c", + "class": "knight", + "rarity": "legend" + }, + "Aggression": { + "name": "공격 태세", + "cost": 1, + "kind": "Power", + "turnStartDraw": 1, + "desc": "턴 시작 시 카드 1장 추가로 뽑기", + "image": "7648c3b8e1ca44fc8ec353561207a670", + "class": "warrior", + "rarity": "legend" + }, + "Cruelty": { + "name": "전투 광기", + "cost": 1, + "kind": "Power", + "powerEffect": "strengthPerTurn", + "value": 1, + "desc": "매턴 힘 +1", + "image": "4cbbe8cfc3e840e4a76379498d8eb012", + "class": "warrior", + "rarity": "legend" + }, + "CrimsonMantle": { + "name": "붉은 수호", + "cost": 1, + "kind": "Power", + "powerEffect": "blockPerTurn", + "value": 8, + "desc": "매턴 방어도 +8", + "image": "992dabf6aff2400e92b2f4f705d8ebe7", + "class": "knight", + "rarity": "legend" + }, + "Pyre": { + "name": "불의 심장", + "cost": 2, + "kind": "Power", + "powerEffect": "energyPerTurn", + "value": 1, + "desc": "매턴 에너지 +1", + "image": "21af4bccc5054a5dbc8245dfa7f08681", + "class": "knight", + "rarity": "legend" + }, + "DarkEmbrace": { + "name": "소멸의 숙련", + "cost": 2, + "kind": "Power", + "drawOnExhaust": 1, + "desc": "카드가 소멸될 때마다 카드 1장 뽑기", + "image": "fe83c7635b0e49ed83d75a2833adb53e", + "class": "knight", + "rarity": "legend" + }, + "Unmovable": { + "name": "요지부동", + "cost": 2, + "kind": "Power", + "powerEffect": "blockPerTurn", + "value": 0, + "blockGainMultiplier": 2, + "desc": "이번 전투 동안 방어도 획득량 2배", + "image": "64daadf1a98e490d9c14ef52ec776e63", + "class": "knight", + "rarity": "legend" + }, + "Juggernaut": { + "name": "검격 파동", + "cost": 2, + "kind": "Power", + "cardPlayedRandomDamage": 5, + "desc": "카드를 사용할 때마다 무작위 적에게 피해 5", + "image": "09370fc7551e47238fd103a80fba558e", + "class": "knight", + "rarity": "legend" + }, + "Hellraiser": { + "name": "타격의 달인", + "cost": 2, + "kind": "Power", + "drawNameMatchAutoPlay": "타격", + "desc": "이름에 \"타격\"이 포함된 카드를 뽑을 때마다, 무작위 적에게 사용합니다.", "image": "379d86e3de064959aa4612f71e84ccfb", "class": "warrior", "rarity": "legend" }, - "ComboAttack": { - "name": "콤보 어택", - "cost": 1, - "kind": "Attack", - "class": "fighter", - "damage": 5, - "hits": 2, - "desc": "피해 5 × 2회", - "image": "1bc3e52b330648faae9eafd5a205e37b", - "rarity": "unique", - "fx": "48754be05be344358cddd55aa8fe11f4" - }, - "Berserk": { - "name": "버서크", - "cost": 2, + "Barricade": { + "name": "바리케이드", + "cost": 3, "kind": "Power", - "class": "fighter", - "powerEffect": "energyPerTurn", - "value": 1, - "selfVuln": 1, - "desc": "매턴 에너지 +1, 취약 1 자가", - "image": "e2580523efc6457385114b78ad0d7cce", + "powerEffect": "keepBlock", + "value": 0, + "desc": "내 턴 시작 시 방어도가 사라지지 않습니다.", + "image": "1bc3e52b330648faae9eafd5a205e37b", + "class": "knight", "rarity": "legend" }, - "RisingAttack": { - "name": "라이징 어택", - "cost": 2, - "kind": "Attack", - "class": "fighter", - "damage": 12, - "desc": "피해 12", - "image": "115e309771604743853abad2d8d186bc", - "rarity": "unique", - "fx": "6f283d96d5804b4fb88009685a11c1f8" + "DemonForm": { + "name": "전신 투지", + "cost": 3, + "kind": "Power", + "powerEffect": "strengthPerTurn", + "value": 2, + "desc": "매턴 힘 +2", + "image": "e2580523efc6457385114b78ad0d7cce", + "class": "crusader", + "rarity": "legend" }, - "ThunderCharge": { - "name": "썬더 차지", + "SlashBlast": { + "name": "슬래시 블러스트", "cost": 1, "kind": "Attack", - "class": "page", "damage": 7, - "weak": 1, - "desc": "피해 7, 약화 1", - "image": "b7030d8caedc4fbc9f38fe1e541d6e6b", - "rarity": "unique", - "fx": "997fa6999aa04dbb97a1dd99025fa2ba" + "aoe": true, + "damagePerCombo": 1, + "desc": "모든 적에게 피해 7. 콤보당 피해 +1", + "image": "863812c5c2f84132ac7465b50ec2283e", + "class": "warrior", + "rarity": "normal" }, - "BlizzardCharge": { - "name": "블리자드 차지", - "cost": 1, - "kind": "Attack", - "class": "page", - "damage": 7, - "vuln": 1, - "desc": "피해 7, 취약 1", - "image": "9aac955d159f49c1bc913ef96128e781", - "rarity": "unique", - "fx": "2799562e984c4a4da3b73e1f3431057c" - }, - "PowerGuard": { - "name": "파워 가드", - "cost": 1, + "WarriorLeap": { + "name": "워리어 리프", + "cost": 0, "kind": "Skill", - "class": "page", - "block": 10, - "desc": "방어도 10", + "block": 4, + "nextTurnBlock": 4, + "exhaust": true, + "desc": "방어도 4. 다음 턴 방어도 4. 소멸.", "image": "90a9bf8eeb844b578b4e2d93ac43fedf", - "rarity": "unique" + "class": "warrior", + "rarity": "normal" }, - "Pierce": { - "name": "피어스", + "LeapAttack": { + "name": "리프 어택", "cost": 1, "kind": "Attack", - "class": "spearman", - "damage": 9, - "pierce": true, - "desc": "피해 9, 방어 무시", - "image": "251b6e12329048429490049a4f3cf564", - "rarity": "unique", - "fx": "1b0afc410a1a458598eb7ca2fb26e97d" + "damage": 3, + "hits": 2, + "aoe": true, + "block": 5, + "desc": "모든 적에게 피해 3 x 2회. 방어도 5", + "image": "997fa6999aa04dbb97a1dd99025fa2ba", + "class": "warrior", + "rarity": "normal" }, - "IronWall": { - "name": "아이언 월", - "cost": 2, - "kind": "Skill", - "class": "spearman", - "block": 12, - "desc": "방어도 12", - "image": "92021d62341a4bce9cfd09d1b4b865db", - "rarity": "unique" - }, - "HyperBody": { - "name": "하이퍼 바디", + "IronBody": { + "name": "아이언 바디", "cost": 1, "kind": "Power", - "class": "spearman", "powerEffect": "blockPerTurn", "value": 3, - "desc": "매턴 방어도 +3", - "image": "b4020dbadee6401f9893a020fe4154b1", + "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": 0, + "kind": "Power", + "comboOnAttack": 1, + "comboMax": 5, + "attackDamagePerCombo": 0.5, + "desc": "공격마다 콤보 1 획득. 모든 공격이 콤보 2당 피해 +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": 1, + "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": 2, + "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": 1, + "kind": "Power", + "comboOnAttack": 1, + "comboMax": 5, + "comboGain": 2, + "attackDamagePerCombo": 0.5, + "desc": "콤보 2 획득. 공격마다 콤보 1 획득. 모든 공격이 콤보 2당 피해 +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, + "comboGain": 2, + "desc": "콤보 2 획득. 약화 상태인 적에게 주는 공격 피해 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": 3, + "desc": "매턴 방어도 3", + "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": 1, + "kind": "Attack", + "damage": 3, + "hits": 4, + "aoe": true, + "weak": 1, + "affectsAllEnemies": true, + "holyForce": true, + "damagePerHolyCharge": 1, + "desc": "모든 적에게 피해 3 x 4회, 약화 1. 홀리 차지당 피해 +1. 홀리 포스.", + "image": "863812c5c2f84132ac7465b50ec2283e", + "class": "knight", + "rarity": "unique" + }, + "Restoration": { + "name": "리스토네이션", + "cost": 0, + "kind": "Skill", + "heal": 6, + "healPerHolyCharge": 4, + "holyChargeSpendAll": true, + "desc": "HP 6 회복. 홀리 차지당 추가로 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": 3, + "kind": "Power", + "strength": 1, + "thorns": 3, + "cardPlayedBlock": 1, + "desc": "힘 1. 가시 3. 카드를 사용할 때마다 방어도 1", + "image": "90a9bf8eeb844b578b4e2d93ac43fedf", + "class": "knight", + "rarity": "unique" + }, + "CombatOrders": { + "name": "컴뱃 오더스", + "cost": 1, + "kind": "Power", + "nextSkillRepeatCount": 1, + "turnStartDraw": 1, + "desc": "다음 스킬을 1회 추가 발동. 턴 시작 시 카드 1장 추가로 뽑기", + "image": "e2580523efc6457385114b78ad0d7cce", + "class": "knight", + "rarity": "legend" + }, + "KnightShieldMastery": { + "name": "실드 마스터리", + "cost": 2, + "kind": "Power", + "powerEffect": "blockPerTurn", + "value": 4, + "thorns": 1, + "desc": "매턴 방어도 4. 가시 1", + "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": { @@ -587,7 +1803,7 @@ }, "Ricochet": { "name": "통통 튀는 표창", - "cost": 2, + "cost": 1, "kind": "Attack", "class": "assassin", "rarity": "normal", @@ -1643,7 +2859,8 @@ "kind": "Skill", "class": "assassin", "rarity": "normal", - "desc": "카드를 2장 뽑습니다. 카드를 1장 버립니다. 표창 1장을 손에 넣습니다.", + "desc": "방어도 4를 얻습니다. 카드를 2장 뽑고 1장 버립니다. 표창 1장을 손에 넣습니다.", + "block": 4, "draw": 2, "discard": 1, "addShiv": 1, @@ -1664,7 +2881,7 @@ }, "AssassinPhysicalTraining": { "name": "피지컬 트레이닝", - "cost": 2, + "cost": 1, "kind": "Power", "class": "assassin", "rarity": "normal", @@ -1711,7 +2928,7 @@ }, "HermitShadowPartner": { "name": "쉐도우 파트너", - "cost": 2, + "cost": 1, "kind": "Skill", "class": "hermit", "rarity": "legend", @@ -1786,11 +3003,11 @@ "Strike", "Strike", "Strike", - "Strike", - "Defend", + "SlashBlast", "Defend", "Defend", "Defend", + "IronBody", "Bash" ], "magician": [ @@ -1810,12 +3027,12 @@ "SilentStrike", "SilentStrike", "SilentStrike", - "SilentStrike", - "SilentDefend", + "LuckySeven", "SilentDefend", "SilentDefend", "SilentDefend", "SilentDefend", + "NimbleBody", "Neutralize", "Survivor" ] diff --git a/data/cards.xlsx b/data/cards.xlsx index c1c29e5..b692fe3 100644 Binary files a/data/cards.xlsx and b/data/cards.xlsx differ diff --git a/docs/card-effect-fields.md b/docs/card-effect-fields.md index ee0dc8b..250750c 100644 --- a/docs/card-effect-fields.md +++ b/docs/card-effect-fields.md @@ -6,15 +6,25 @@ The goal is to keep card behavior reusable instead of hardcoding one-off card na ## Damage - `damage`: base attack damage +- `damageFromCurrentBlock`: add current block times this value to attack damage +- `damageNameMatch`: substring to match against owned card names +- `damagePerOwnedNameMatch`: bonus damage per owned card whose name matches `damageNameMatch` - `damagePerOtherHandCard`: bonus damage per other card in hand - `damagePerAttackPlayedThisTurn`: bonus damage per attack played this turn - `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 +- `drawOnExhaust`: draw when a card is exhausted - `rewardOnKill`: gain bonus reward screens when the card kills +- `maxHpOnKill`: gain max HP when the attack kills +- `drawNameMatchAutoPlay`: auto-play drawn cards whose names contain this substring - `randomTargetEachHit`: choose a random alive enemy for each hit - `repeatOnKill`: repeat the attack when it kills at least one enemy - `firstCardDamageBonus`: bonus damage for the first card played this turn @@ -39,6 +49,17 @@ The goal is to keep card behavior reusable instead of hardcoding one-off card na - `drawUntilHandSize`: draw until hand reaches a target size - `drawSkillBlock`: gain block for each Skill drawn - `drawPoison`: apply poison when a card is drawn +- `exhaustHandNonAttack`: exhaust every non-Attack card in hand +- `exhaustHandAll`: exhaust every card in hand +- `drawPerExhausted`: draw cards equal to exhausted cards +- `blockPerExhaustedCard`: gain block for each card exhausted by the current effect +- `addRandomCardCount`: add random cards to hand +- `addRandomCardPerExhausted`: add random cards equal to exhausted cards +- `addRandomCardKind`: filter random added cards by kind +- `addRandomCardSameClass`: restrict random added cards to the source card class +- `addedCardsCostZeroThisTurn`: cards added by this effect cost 0 this turn +- `playTopDrawPileCount`: play cards from the top of the draw pile +- `playTopDrawPileCountPerEnergy`: play cards from the top of the draw pile per energy spent - `handCostZeroThisTurn`: make hand cards cost 0 this turn - `drawDisabledThisTurn`: disable draw for the rest of the turn - `heal`: heal immediately @@ -48,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 @@ -91,7 +127,9 @@ 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 - `turnStartDraw`: draw cards at turn start - `turnStartDiscard`: discard cards at turn start diff --git a/docs/card-ui-standardization.md b/docs/card-ui-standardization.md new file mode 100644 index 0000000..e29e216 --- /dev/null +++ b/docs/card-ui-standardization.md @@ -0,0 +1,164 @@ +# Card UI Standardization + +## Goal + +Make every card-shaped UI use the same input structure so hover tooltip, +click, drag, and future interactions behave the same way everywhere. + +Target surfaces: + +- hand cards +- reward cards +- shop cards +- draw pile / discard pile / exhaust pile viewer cards +- all deck / class deck / codex cards + +## Standard Card Entity Shape + +Each visible card should have one root entity that owns input. + +```text +CardRoot +- UITransformComponent +- SpriteGUIRendererComponent +- ButtonComponent +- UITouchReceiveComponent +- Cost +- Name +- Desc +- Art +``` + +Rules: + +1. `CardRoot` covers the full card rect. +2. `CardRoot` owns both click and hover. +3. Child entities are display only. +4. Child entities must not become the primary input target. + +## Required Component Rules + +### Card root + +- `UITransformComponent` +- `SpriteGUIRendererComponent` +- `ButtonComponent` +- `UITouchReceiveComponent` + +Recommended sprite settings: + +- `RaycastTarget: true` +- card frame sprite on root + +### Card children + +- `Cost`, `Name`, `Desc`: text only +- `Art`: sprite only + +Recommended child sprite settings: + +- `RaycastTarget: false` + +That keeps hover/click ownership on the root card entity. + +## Path Rules + +Use the same path naming pattern everywhere: + +- hand: `/ui/.../CardHand/Card1` +- reward: `/ui/.../RewardHud/Reward1` +- shop: `/ui/.../ShopHud/Card1` +- inspect: `/ui/.../DeckInspectHud/Grid/Card1` +- all deck: `/ui/.../DeckAllHud/Grid/Card1` + +The important part is that each list has a stable root card path ending in a +numeric slot. That lets controller code resolve hover target -> slot -> card id +without special cases. + +## Controller Rules + +Once UI is standardized, controller logic should follow this shape: + +1. Resolve `path` +2. Resolve `slot` from `path` +3. Resolve `cardId` from current backing list +4. Show tooltip from `cardId` + +Preferred shared methods: + +- `GetHoveredCardId(path)` +- `HoverCardByPath(path)` +- `UnhoverCardByPath(path)` + +The hand should just become one caller of the same shared path-based hover +logic rather than having its own special tooltip flow. + +## Safe Rollout Order + +Do not standardize every card surface at once. + +### Step 1 + +Document current structures for: + +- `RewardHud/Reward1` +- `ShopHud/Card1` +- `DeckInspectHud/Grid/Card1` +- `DeckAllHud/Grid/Card1` + +### Step 2 + +Make `DeckInspectHud/Grid/CardN` match `RewardHud/RewardN` component structure. + +### Step 3 + +Verify game boot and UI load before changing controller hover bindings. + +### Step 4 + +Make `DeckAllHud/Grid/CardN` match the same structure. + +### Step 5 + +After both surfaces are stable, bind hover events in controller code. + +## Validation Checklist + +Before testing hover behavior: + +- game boots with no `LEA-3015 CannotLoad` +- `DefaultGroup.ui` loads cleanly +- card roots exist at expected paths +- root card sprite has `RaycastTarget: true` +- child art sprite has `RaycastTarget: false` +- root has both `ButtonComponent` and `UITouchReceiveComponent` + +After binding hover: + +- hand tooltip still works +- reward tooltip still works +- shop tooltip still works +- inspect tooltip works +- all deck tooltip works +- no duplicated tooltip flicker +- no drag regression on hand cards + +## What Not To Do + +- do not hand-edit `ui/DefaultGroup.ui` +- do not change multiple card surfaces in one shot +- do not mix root-input cards with child-input cards +- do not add hover logic before confirming the target card entity actually + receives input + +## Recommended Next Change + +The next implementation step should be: + +1. diff `DeckInspectHud/Grid/Card1` against `RewardHud/Reward1` +2. make only `DeckInspectHud` root card structure match +3. regenerate UI +4. boot test +5. then bind hover for inspect cards only + +That keeps the blast radius small. diff --git a/map/map01.map b/map/map01.map index 7e5c391..2432f5f 100644 --- a/map/map01.map +++ b/map/map01.map @@ -31,15 +31,15 @@ "@components": [ { "@type": "MOD.Core.MapComponent", - "AirAccelerationXFactor": 1, - "AirDecelerationXFactor": 1, - "FallSpeedMaxXFactor": 1, - "FallSpeedMaxYFactor": 1, - "Gravity": 1, + "AirAccelerationXFactor": 1.0, + "AirDecelerationXFactor": 1.0, + "FallSpeedMaxXFactor": 1.0, + "FallSpeedMaxYFactor": 1.0, + "Gravity": 1.0, "IsInstanceMap": false, "TileMapMode": 0, - "WalkAccelerationFactor": 1, - "WalkDrag": 1, + "WalkAccelerationFactor": 1.0, + "WalkDrag": 1.0, "Enable": true }, { @@ -47,16 +47,16 @@ "FootholdsByLayer": { "1": [ { - "Length": 1.28000069, + "Length": 1.27999973, "NextFootholdId": 2, "PreviousFootholdId": 27, "groupID": 1, "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -69,12 +69,12 @@ "y": -0.04000002 }, "EndPoint": { - "x": -7.64999962, + "x": -7.65000057, "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -85,9 +85,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -104,8 +104,8 @@ "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -116,9 +116,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -135,8 +135,8 @@ "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -147,9 +147,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -166,8 +166,8 @@ "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -178,9 +178,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -197,8 +197,8 @@ "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -209,9 +209,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -228,8 +228,8 @@ "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -240,9 +240,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -259,21 +259,21 @@ "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { - "Length": 0.9, + "Length": 0.899999738, "NextFootholdId": 9, "PreviousFootholdId": 7, "groupID": 1, "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -286,12 +286,12 @@ "y": -0.04000002 }, "EndPoint": { - "x": -1.34999979, + "x": -1.35, "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -302,9 +302,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -321,8 +321,8 @@ "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -333,9 +333,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -352,8 +352,8 @@ "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -364,9 +364,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -383,8 +383,8 @@ "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -395,9 +395,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -414,8 +414,8 @@ "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -426,9 +426,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -437,16 +437,16 @@ "OwnerId": "c9a3018a-f6fa-4c4b-b91e-404ac5ce9858", "Id": 13, "StartPoint": { - "x": 2.24999976, + "x": 2.25, "y": -0.04000002 }, "EndPoint": { - "x": 3.14999986, + "x": 3.15, "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -457,9 +457,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -476,8 +476,8 @@ "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -488,9 +488,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -507,8 +507,8 @@ "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -519,9 +519,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -530,16 +530,16 @@ "OwnerId": "c9a3018a-f6fa-4c4b-b91e-404ac5ce9858", "Id": 16, "StartPoint": { - "x": 4.95, + "x": 4.95000029, "y": -0.04000002 }, "EndPoint": { - "x": 5.84999943, + "x": 5.85, "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -550,9 +550,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -569,21 +569,21 @@ "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { - "Length": 1.27999878, + "Length": 1.27999973, "NextFootholdId": 19, "PreviousFootholdId": 17, "groupID": 1, "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -596,12 +596,12 @@ "y": -0.04000002 }, "EndPoint": { - "x": 8.029999, + "x": 8.03, "y": -0.04000002 }, "Variance": { - "x": 1, - "y": 0 + "x": 1.0, + "y": 0.0 } }, { @@ -612,9 +612,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -623,16 +623,16 @@ "OwnerId": "c9a3018a-f6fa-4c4b-b91e-404ac5ce9858", "Id": 19, "StartPoint": { - "x": 8.029999, + "x": 8.03, "y": -0.04000002 }, "EndPoint": { - "x": 8.029999, + "x": 8.03, "y": -0.9 }, "Variance": { - "x": 0, - "y": -1 + "x": 0.0, + "y": -1.0 } }, { @@ -643,9 +643,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -654,16 +654,16 @@ "OwnerId": "c9a3018a-f6fa-4c4b-b91e-404ac5ce9858", "Id": 20, "StartPoint": { - "x": 8.029999, + "x": 8.03, "y": -0.9000001 }, "EndPoint": { - "x": 8.029999, + "x": 8.03, "y": -1.50000012 }, "Variance": { - "x": 0, - "y": -1 + "x": 0.0, + "y": -1.0 } }, { @@ -674,9 +674,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -685,16 +685,16 @@ "OwnerId": "c9a3018a-f6fa-4c4b-b91e-404ac5ce9858", "Id": 21, "StartPoint": { - "x": 8.029999, + "x": 8.03, "y": -1.50000012 }, "EndPoint": { - "x": 8.029999, + "x": 8.03, "y": -2.10000014 }, "Variance": { - "x": 0, - "y": -1 + "x": 0.0, + "y": -1.0 } }, { @@ -705,9 +705,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -716,16 +716,16 @@ "OwnerId": "c9a3018a-f6fa-4c4b-b91e-404ac5ce9858", "Id": 22, "StartPoint": { - "x": 8.029999, + "x": 8.03, "y": -2.10000014 }, "EndPoint": { - "x": 8.029999, + "x": 8.03, "y": -2.7 }, "Variance": { - "x": 0, - "y": -1 + "x": 0.0, + "y": -1.0 } }, { @@ -736,9 +736,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -747,16 +747,16 @@ "OwnerId": "c9a3018a-f6fa-4c4b-b91e-404ac5ce9858", "Id": 23, "StartPoint": { - "x": 8.029999, - "y": -2.7 + "x": 8.03, + "y": -2.70000029 }, "EndPoint": { - "x": 8.029999, - "y": -3.3 + "x": 8.03, + "y": -3.30000019 }, "Variance": { - "x": 0, - "y": -1 + "x": 0.0, + "y": -1.0 } }, { @@ -767,9 +767,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -778,16 +778,16 @@ "OwnerId": "c9a3018a-f6fa-4c4b-b91e-404ac5ce9858", "Id": 24, "StartPoint": { - "x": 8.029999, + "x": 8.03, "y": -3.30000019 }, "EndPoint": { - "x": 8.029999, + "x": 8.03, "y": -3.9 }, "Variance": { - "x": 0, - "y": -1 + "x": 0.0, + "y": -1.0 } }, { @@ -798,9 +798,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -809,16 +809,16 @@ "OwnerId": "c9a3018a-f6fa-4c4b-b91e-404ac5ce9858", "Id": 25, "StartPoint": { - "x": 8.029999, + "x": 8.03, "y": -3.90000033 }, "EndPoint": { - "x": 8.029999, + "x": 8.03, "y": -4.50000048 }, "Variance": { - "x": 0, - "y": -1 + "x": 0.0, + "y": -1.0 } }, { @@ -829,9 +829,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -840,16 +840,16 @@ "OwnerId": "c9a3018a-f6fa-4c4b-b91e-404ac5ce9858", "Id": 26, "StartPoint": { - "x": 8.029999, + "x": 8.03, "y": -4.5 }, "EndPoint": { - "x": 8.029999, + "x": 8.03, "y": -5.10000038 }, "Variance": { - "x": 0, - "y": -1 + "x": 0.0, + "y": -1.0 } }, { @@ -860,9 +860,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -879,8 +879,8 @@ "y": -0.04000002 }, "Variance": { - "x": 0, - "y": 1 + "x": 0.0, + "y": 1.0 } }, { @@ -891,9 +891,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -910,8 +910,8 @@ "y": -0.9000001 }, "Variance": { - "x": 0, - "y": 1 + "x": 0.0, + "y": 1.0 } }, { @@ -922,9 +922,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -941,8 +941,8 @@ "y": -1.50000012 }, "Variance": { - "x": 0, - "y": 1 + "x": 0.0, + "y": 1.0 } }, { @@ -953,9 +953,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -972,8 +972,8 @@ "y": -2.10000014 }, "Variance": { - "x": 0, - "y": 1 + "x": 0.0, + "y": 1.0 } }, { @@ -984,9 +984,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -996,15 +996,15 @@ "Id": 31, "StartPoint": { "x": -8.93, - "y": -3.3 + "y": -3.30000019 }, "EndPoint": { "x": -8.93, - "y": -2.7 + "y": -2.70000029 }, "Variance": { - "x": 0, - "y": 1 + "x": 0.0, + "y": 1.0 } }, { @@ -1015,9 +1015,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -1034,8 +1034,8 @@ "y": -3.30000019 }, "Variance": { - "x": 0, - "y": 1 + "x": 0.0, + "y": 1.0 } }, { @@ -1046,9 +1046,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -1065,8 +1065,8 @@ "y": -3.90000033 }, "Variance": { - "x": 0, - "y": 1 + "x": 0.0, + "y": 1.0 } }, { @@ -1077,9 +1077,9 @@ "layer": 1, "sortingLayerName": "MapLayer0", "attribute": { - "walk": 1, - "force": 0, - "drag": 1, + "walk": 1.0, + "force": 0.0, + "drag": 1.0, "isBlockVertical": false, "isDynamic": false, "isCustomFoothold": false, @@ -1096,8 +1096,8 @@ "y": -4.5 }, "Variance": { - "x": 0, - "y": 1 + "x": 0.0, + "y": 1.0 } } ] @@ -1213,32 +1213,32 @@ "Position": { "x": -0.225, "y": -0.15, - "z": 1000 + "z": 1000.0 }, "QuaternionRotation": { - "x": 0, - "y": 0, - "z": 0, - "w": 1 + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 }, "Scale": { - "x": 1, - "y": 1, - "z": 1 + "x": 1.0, + "y": 1.0, + "z": 1.0 }, "Enable": true }, { "@type": "MOD.Core.TileMapComponent", "Color": { - "r": 1, - "g": 1, - "b": 1, - "a": 1 + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 }, - "FootholdDrag": 1, - "FootholdForce": 0, - "FootholdWalkSpeedFactor": 1, + "FootholdDrag": 1.0, + "FootholdForce": 0.0, + "FootholdWalkSpeedFactor": 1.0, "IgnoreMapLayerCheck": false, "IsOddGridPosition": false, "OrderInLayer": 1, @@ -6306,27 +6306,27 @@ { "@type": "MOD.Core.TransformComponent", "Rotation": { - "x": 0, - "y": 0, - "z": 0 + "x": 0.0, + "y": 0.0, + "z": 0.0 }, "Position": { - "x": -5, - "y": 0, + "x": -5.0, + "y": 0.0, "z": 999.999 }, "QuaternionRotation": { - "x": 0, - "y": 0, - "z": 0, - "w": 1 + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 }, "Scale": { - "x": 1, - "y": 1, - "z": 1 + "x": 1.0, + "y": 1.0, + "z": 1.0 }, - "ZRotation": 0, + "ZRotation": 0.0, "Enable": true }, { @@ -6338,20 +6338,20 @@ "FlipY": false, "IgnoreMapLayerCheck": false, "OrderInLayer": 0, - "PlayRate": 1, + "PlayRate": 1.0, "RenderSetting": 0, "SortingLayer": "Default", "SpriteRUID": "8ef238e0d0ca4bb783aca526cff35d11", "StartFrameIndex": 0, "TiledSize": { - "x": 1, - "y": 1 + "x": 1.0, + "y": 1.0 }, "Color": { - "r": 1, - "g": 1, - "b": 1, - "a": 1 + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 }, "Enable": true }, @@ -6374,7 +6374,7 @@ "enable": false, "visible": false, "localize": false, - "displayOrder": 13, + "displayOrder": 4, "pathConstraints": "///", "revision": 1, "origin": { @@ -6410,7 +6410,7 @@ "enable": false, "visible": false, "localize": false, - "displayOrder": 14, + "displayOrder": 5, "pathConstraints": "///", "revision": 1, "origin": { @@ -6427,13 +6427,13 @@ "Position": { "x": -0.225, "y": -0.15, - "z": 1000 + "z": 1000.0 }, "QuaternionRotation": { - "x": 0, - "y": 0, - "z": 0, - "w": 1 + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 }, "Enable": true }, @@ -6463,7 +6463,7 @@ "enable": true, "visible": true, "localize": false, - "displayOrder": 4, + "displayOrder": 6, "pathConstraints": "///", "revision": 2, "origin": { @@ -6483,15 +6483,15 @@ "z": 999.999 }, "QuaternionRotation": { - "x": 0, - "y": 0, - "z": 0, - "w": 1 + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 }, "Scale": { - "x": 1, - "y": 1, - "z": 1 + "x": 1.0, + "y": 1.0, + "z": 1.0 }, "Enable": true }, @@ -6517,19 +6517,19 @@ { "@type": "MOD.Core.RigidbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "RealMoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.MovementComponent", - "InputSpeed": 0, - "JumpForce": 6, + "InputSpeed": 0.0, + "JumpForce": 6.0, "Enable": false }, { @@ -6563,27 +6563,27 @@ "@type": "script.MonsterAttack", "Enable": true, "SpriteSize": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "PositionOffset": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 } }, { "@type": "MOD.Core.KinematicbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.SideviewbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, @@ -6615,7 +6615,7 @@ "enable": true, "visible": true, "localize": false, - "displayOrder": 4, + "displayOrder": 7, "pathConstraints": "///", "revision": 2, "origin": { @@ -6630,20 +6630,20 @@ { "@type": "MOD.Core.TransformComponent", "Position": { - "x": 3.1599999999999997, + "x": 3.16, "y": 0.03499998, "z": 999.999 }, "QuaternionRotation": { - "x": 0, - "y": 0, - "z": 0, - "w": 1 + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 }, "Scale": { - "x": 1, - "y": 1, - "z": 1 + "x": 1.0, + "y": 1.0, + "z": 1.0 }, "Enable": true }, @@ -6669,19 +6669,19 @@ { "@type": "MOD.Core.RigidbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "RealMoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.MovementComponent", - "InputSpeed": 0, - "JumpForce": 6, + "InputSpeed": 0.0, + "JumpForce": 6.0, "Enable": false }, { @@ -6715,27 +6715,27 @@ "@type": "script.MonsterAttack", "Enable": true, "SpriteSize": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "PositionOffset": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 } }, { "@type": "MOD.Core.KinematicbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.SideviewbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, @@ -6767,7 +6767,7 @@ "enable": true, "visible": true, "localize": false, - "displayOrder": 4, + "displayOrder": 8, "pathConstraints": "///", "revision": 2, "origin": { @@ -6787,15 +6787,15 @@ "z": 999.999 }, "QuaternionRotation": { - "x": 0, - "y": 0, - "z": 0, - "w": 1 + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 }, "Scale": { - "x": 1, - "y": 1, - "z": 1 + "x": 1.0, + "y": 1.0, + "z": 1.0 }, "Enable": true }, @@ -6821,19 +6821,19 @@ { "@type": "MOD.Core.RigidbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "RealMoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.MovementComponent", - "InputSpeed": 0, - "JumpForce": 6, + "InputSpeed": 0.0, + "JumpForce": 6.0, "Enable": false }, { @@ -6867,27 +6867,27 @@ "@type": "script.MonsterAttack", "Enable": true, "SpriteSize": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "PositionOffset": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 } }, { "@type": "MOD.Core.KinematicbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.SideviewbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, @@ -6919,7 +6919,7 @@ "enable": true, "visible": true, "localize": false, - "displayOrder": 4, + "displayOrder": 9, "pathConstraints": "///", "revision": 2, "origin": { @@ -6934,20 +6934,20 @@ { "@type": "MOD.Core.TransformComponent", "Position": { - "x": 4.879999999999999, + "x": 4.88, "y": 0.03499998, "z": 999.999 }, "QuaternionRotation": { - "x": 0, - "y": 0, - "z": 0, - "w": 1 + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 }, "Scale": { - "x": 1, - "y": 1, - "z": 1 + "x": 1.0, + "y": 1.0, + "z": 1.0 }, "Enable": true }, @@ -6973,19 +6973,19 @@ { "@type": "MOD.Core.RigidbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "RealMoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.MovementComponent", - "InputSpeed": 0, - "JumpForce": 6, + "InputSpeed": 0.0, + "JumpForce": 6.0, "Enable": false }, { @@ -7019,27 +7019,27 @@ "@type": "script.MonsterAttack", "Enable": true, "SpriteSize": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "PositionOffset": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 } }, { "@type": "MOD.Core.KinematicbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.SideviewbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, @@ -7071,7 +7071,7 @@ "enable": true, "visible": true, "localize": false, - "displayOrder": 4, + "displayOrder": 10, "pathConstraints": "///", "revision": 2, "origin": { @@ -7091,15 +7091,15 @@ "z": 999.999 }, "QuaternionRotation": { - "x": 0, - "y": 0, - "z": 0, - "w": 1 + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 }, "Scale": { - "x": 1, - "y": 1, - "z": 1 + "x": 1.0, + "y": 1.0, + "z": 1.0 }, "Enable": true }, @@ -7125,19 +7125,19 @@ { "@type": "MOD.Core.RigidbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "RealMoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.MovementComponent", - "InputSpeed": 0, - "JumpForce": 6, + "InputSpeed": 0.0, + "JumpForce": 6.0, "Enable": false }, { @@ -7171,27 +7171,27 @@ "@type": "script.MonsterAttack", "Enable": true, "SpriteSize": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "PositionOffset": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 } }, { "@type": "MOD.Core.KinematicbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.SideviewbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, @@ -7223,7 +7223,7 @@ "enable": true, "visible": true, "localize": false, - "displayOrder": 4, + "displayOrder": 11, "pathConstraints": "///", "revision": 2, "origin": { @@ -7243,15 +7243,15 @@ "z": 999.999 }, "QuaternionRotation": { - "x": 0, - "y": 0, - "z": 0, - "w": 1 + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 }, "Scale": { - "x": 1, - "y": 1, - "z": 1 + "x": 1.0, + "y": 1.0, + "z": 1.0 }, "Enable": true }, @@ -7279,19 +7279,19 @@ { "@type": "MOD.Core.RigidbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "RealMoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.MovementComponent", - "InputSpeed": 0, - "JumpForce": 6, + "InputSpeed": 0.0, + "JumpForce": 6.0, "Enable": false }, { @@ -7325,27 +7325,27 @@ "@type": "script.MonsterAttack", "Enable": true, "SpriteSize": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "PositionOffset": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 } }, { "@type": "MOD.Core.KinematicbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.SideviewbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, @@ -7377,7 +7377,7 @@ "enable": true, "visible": true, "localize": false, - "displayOrder": 4, + "displayOrder": 12, "pathConstraints": "///", "revision": 2, "origin": { @@ -7392,20 +7392,20 @@ { "@type": "MOD.Core.TransformComponent", "Position": { - "x": 3, + "x": 3.0, "y": 0.03499998, "z": 999.999 }, "QuaternionRotation": { - "x": 0, - "y": 0, - "z": 0, - "w": 1 + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 }, "Scale": { - "x": 1, - "y": 1, - "z": 1 + "x": 1.0, + "y": 1.0, + "z": 1.0 }, "Enable": true }, @@ -7433,19 +7433,19 @@ { "@type": "MOD.Core.RigidbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "RealMoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.MovementComponent", - "InputSpeed": 0, - "JumpForce": 6, + "InputSpeed": 0.0, + "JumpForce": 6.0, "Enable": false }, { @@ -7479,27 +7479,27 @@ "@type": "script.MonsterAttack", "Enable": true, "SpriteSize": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "PositionOffset": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 } }, { "@type": "MOD.Core.KinematicbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.SideviewbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, @@ -7531,7 +7531,7 @@ "enable": true, "visible": true, "localize": false, - "displayOrder": 4, + "displayOrder": 13, "pathConstraints": "///", "revision": 2, "origin": { @@ -7551,15 +7551,15 @@ "z": 999.999 }, "QuaternionRotation": { - "x": 0, - "y": 0, - "z": 0, - "w": 1 + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 }, "Scale": { - "x": 1, - "y": 1, - "z": 1 + "x": 1.0, + "y": 1.0, + "z": 1.0 }, "Enable": true }, @@ -7587,19 +7587,19 @@ { "@type": "MOD.Core.RigidbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "RealMoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.MovementComponent", - "InputSpeed": 0, - "JumpForce": 6, + "InputSpeed": 0.0, + "JumpForce": 6.0, "Enable": false }, { @@ -7633,27 +7633,27 @@ "@type": "script.MonsterAttack", "Enable": true, "SpriteSize": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "PositionOffset": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 } }, { "@type": "MOD.Core.KinematicbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.SideviewbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, @@ -7685,7 +7685,7 @@ "enable": true, "visible": true, "localize": false, - "displayOrder": 4, + "displayOrder": 14, "pathConstraints": "///", "revision": 2, "origin": { @@ -7705,15 +7705,15 @@ "z": 999.999 }, "QuaternionRotation": { - "x": 0, - "y": 0, - "z": 0, - "w": 1 + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 }, "Scale": { - "x": 1, - "y": 1, - "z": 1 + "x": 1.0, + "y": 1.0, + "z": 1.0 }, "Enable": true }, @@ -7743,19 +7743,19 @@ { "@type": "MOD.Core.RigidbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "RealMoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.MovementComponent", - "InputSpeed": 0, - "JumpForce": 6, + "InputSpeed": 0.0, + "JumpForce": 6.0, "Enable": false }, { @@ -7789,27 +7789,27 @@ "@type": "script.MonsterAttack", "Enable": true, "SpriteSize": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "PositionOffset": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 } }, { "@type": "MOD.Core.KinematicbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, { "@type": "MOD.Core.SideviewbodyComponent", "MoveVelocity": { - "x": 0, - "y": 0 + "x": 0.0, + "y": 0.0 }, "Enable": true }, diff --git a/tools/balance/card-efficiency.mjs b/tools/balance/card-efficiency.mjs index 05194ca..9d88766 100644 --- a/tools/balance/card-efficiency.mjs +++ b/tools/balance/card-efficiency.mjs @@ -6,7 +6,10 @@ import { simulateCombat, } from './sim-balance.mjs'; -const ROGUE_CLASSES = new Set(['rogue', 'thief', 'thiefmaster', 'assassin', 'hermit']); +const AUDITED_CLASSES = new Set([ + 'rogue', 'thief', 'thiefmaster', 'assassin', 'hermit', + 'warrior', 'fighter', 'crusader', 'page', 'knight', +]); const CONTEXT_DECKS = { rogue: [ @@ -38,6 +41,27 @@ const CONTEXT_DECKS = { 'Survivor', 'LeadingStrike', 'BladeDance', 'JavelinAcceleration', 'JavelinMastery', 'TripleThrow', 'SpiritJavelin', 'SkilledJavelin', ], + warrior: [ + 'Strike', 'Strike', 'Strike', 'Strike', + 'Defend', 'Defend', 'Defend', 'Defend', + 'Bash', 'SlashBlast', 'IronBody', 'WarriorMastery', + ], + fighter: [ + 'Strike', 'Strike', 'Strike', 'Defend', 'Defend', 'Defend', + 'Bash', 'SlashBlast', 'ComboAttack', 'Brandish', 'WeaponMastery', 'FlashSlash', + ], + crusader: [ + 'Strike', 'Strike', 'Defend', 'Defend', 'Bash', 'SlashBlast', + 'ComboAttack', 'Brandish', 'WeaponMastery', 'BraveSlash', 'ComboSynergy', 'Rush', + ], + page: [ + 'Strike', 'Strike', 'Strike', 'Defend', 'Defend', 'Defend', + 'Bash', 'SlashBlast', 'HolyCharge', 'DivineSwing', 'PageOrder', 'PageStance', + ], + knight: [ + 'Strike', 'Strike', 'Defend', 'Defend', 'Bash', 'SlashBlast', + 'HolyCharge', 'DivineSwing', 'PageOrder', 'DivineCharge', 'KnightRush', 'Restoration', + ], }; const ENCOUNTER_SCALE = { @@ -46,6 +70,11 @@ const ENCOUNTER_SCALE = { assassin: { hp: 2.25, attack: 1.65 }, thiefmaster: { hp: 2.4, attack: 1.5 }, hermit: { hp: 2.6, attack: 1.65 }, + warrior: { hp: 1.9, attack: 1.5 }, + fighter: { hp: 2.2, attack: 1.6 }, + crusader: { hp: 2.6, attack: 1.7 }, + page: { hp: 2.2, attack: 1.6 }, + knight: { hp: 2.6, attack: 1.7 }, }; const median = (values) => { @@ -172,7 +201,7 @@ export function auditCardEfficiency({ runs = 300, seed = 20260701 } = {}) { const rows = []; for (const [id, card] of Object.entries(cards)) { - if (!ROGUE_CLASSES.has(card.class)) continue; + if (!AUDITED_CLASSES.has(card.class)) continue; const deck = CONTEXT_DECKS[card.class].slice(); deck[replacementIndex(deck, cards, card)] = id; const result = simulateDeck(scaledEncounter(data, card.class), deck, runs, seed, id); @@ -204,7 +233,7 @@ function formatPercent(value) { export function formatEfficiencyReport(report) { const lines = []; - lines.push(`도적 카드 효율 검증: 카드 ${report.rows.length}장, 카드당 ${report.runs}회`); + lines.push(`카드 효율 검증: 카드 ${report.rows.length}장, 카드당 ${report.runs}회`); lines.push('기준 덱:'); for (const [classId, baseline] of Object.entries(report.baselines)) { lines.push(` ${classId}: 승률 ${formatPercent(baseline.winRate)}, 평균 ${baseline.avgTurns.toFixed(2)}턴, 승리 HP ${baseline.avgHpOnWin.toFixed(1)}`); diff --git a/tools/balance/rogue-campaign.mjs b/tools/balance/rogue-campaign.mjs index fd9501e..d302b08 100644 --- a/tools/balance/rogue-campaign.mjs +++ b/tools/balance/rogue-campaign.mjs @@ -6,7 +6,7 @@ const cardsData = JSON.parse(readFileSync('data/cards.json', 'utf8')); const enemiesData = JSON.parse(readFileSync('data/enemies.json', 'utf8')); const relicsData = JSON.parse(readFileSync('data/relics.json', 'utf8')); -const PLAYER_MAX_HP = 70; +const PLAYER_MAX_HP = { rogue: 70, warrior: 80 }; const REST_HEAL = 30; const SECTION_COUNT = 5; const NORMAL_FIGHTS = 4; @@ -18,6 +18,8 @@ const BOSS_POOL = ['king_slime', 'slime_boss']; const JOBS = { thief: { tier2: 'thief', tier3: 'thiefmaster', tier2Starter: 'DaggerAcceleration', tier3Starter: 'Venom' }, assassin: { tier2: 'assassin', tier3: 'hermit', tier2Starter: 'JavelinAcceleration', tier3Starter: 'SpiritJavelin' }, + fighter: { root: 'warrior', tier2: 'fighter', tier3: 'crusader', tier2Starter: 'ComboAttack', tier3Starter: 'ComboSynergy' }, + page: { root: 'warrior', tier2: 'page', tier3: 'knight', tier2Starter: 'HolyCharge', tier3Starter: 'DivineCharge' }, }; const LINEAGES = { @@ -26,12 +28,17 @@ const LINEAGES = { thiefmaster: ['rogue', 'thief', 'thiefmaster'], assassin: ['rogue', 'assassin'], hermit: ['rogue', 'assassin', 'hermit'], + warrior: ['warrior'], + fighter: ['warrior', 'fighter'], + crusader: ['warrior', 'fighter', 'crusader'], + page: ['warrior', 'page'], + knight: ['warrior', 'page', 'knight'], }; const pick = (rng, values) => values[Math.floor(rng() * values.length)]; export function campaignJobAtSection(branch, section) { - if (section <= 1) return 'rogue'; + if (section <= 1) return JOBS[branch].root || 'rogue'; if (section === 2) return JOBS[branch].tier2; return JOBS[branch].tier3; } @@ -102,11 +109,22 @@ function branchCardValue(card, branch, deck, id) { value += card.sly ? 5 : 0; value += (card.discard || 0) * 2 + (card.drawPerDiscarded || 0) * 4; value += (card.poisonApplicationBurstDamage || 0) * 1.5; - } else { + } else if (branch === 'assassin') { value += (card.addShiv || 0) * 3 + (card.turnStartShiv || 0) * 8; value += (card.shivDamageBonus || 0) * 6 + (card.firstShivDamageBonus || 0) * 3; value += card.shivAoe ? 12 : 0; value += card.shivRetain ? 5 : 0; + } else if (branch === 'fighter') { + value += (card.hits || 1) * 1.5; + value += (card.comboGain || 0) * 5 + (card.comboOnAttack || 0) * 10; + value += (card.damagePerCombo || 0) * 8 + (card.attackDamagePerCombo || 0) * 12; + value += (card.attackPlayedDamage || 0) * 5; + } else if (branch === 'page') { + value += (card.block || 0) * 0.5 + (card.cardPlayedBlock || 0) * 7; + value += (card.holyChargeOnHolyForce || 0) * 12 + (card.damagePerHolyCharge || 0) * 7; + value += (card.blockPerHolyCharge || 0) * 6 + (card.healPerHolyCharge || 0) * 3; + value += (card.damageTakenReduction || 0) * 40; + value += (card.blockOnDamaged || 0) * 3 + (card.strengthOnDamagedOnce || 0) * 5; } const copies = deck.filter((cardId) => cardId === id).length; value -= copies * (card.kind === 'Power' ? 10 : 3); @@ -192,7 +210,8 @@ function fight(state, branch, kind, section, rng, options) { state.turns += result.turns; if (!result.win) return false; healFromRelics(state, 'combatEnd'); - if (kind !== 'boss') offerReward(state.job, branch, state.deck, rng, options.minimumRewardValue); + const rewardStrategy = state.job === 'warrior' || state.job === 'rogue' ? state.job : branch; + if (kind !== 'boss') offerReward(state.job, rewardStrategy, state.deck, rng, options.minimumRewardValue); return true; } @@ -203,11 +222,13 @@ export function simulateCampaign(branch, rng, { minimumRewardValue = 10, } = {}) { if (!JOBS[branch]) throw new Error(`지원하지 않는 도적 분기: ${branch}`); + const root = JOBS[branch].root || 'rogue'; + const maxHp = PLAYER_MAX_HP[root]; const state = { - hp: PLAYER_MAX_HP, - maxHp: PLAYER_MAX_HP, - deck: cardsData.starterDecks.rogue.slice(), - job: 'rogue', + hp: maxHp, + maxHp, + deck: cardsData.starterDecks[root].slice(), + job: root, turns: 0, sectionCleared: 0, diedAt: '', @@ -306,7 +327,7 @@ function main() { else if (args[i] === '--scale-step') scaleStep = Number.parseFloat(args[++i]); else if (args[i] === '--reward-min') minimumRewardValue = Number.parseFloat(args[++i]); } - for (const branch of ['thief', 'assassin']) { + for (const branch of ['thief', 'assassin', 'fighter', 'page']) { console.log(formatCampaignReport(runCampaignBatch(branch, runs, seed, { restHeal, sectionHeal, scaleStep, minimumRewardValue }))); } } diff --git a/tools/balance/rogue-campaign.test.mjs b/tools/balance/rogue-campaign.test.mjs index ac3591f..1fae6fd 100644 --- a/tools/balance/rogue-campaign.test.mjs +++ b/tools/balance/rogue-campaign.test.mjs @@ -17,6 +17,16 @@ test('도적 전직 시점: 1섹션 Rogue, 2섹션 2차, 3섹션부터 3차', () test('3차 직업은 자기 계보 카드만 사용', () => { assert.deepEqual(playableClassesForJob('thiefmaster'), ['rogue', 'thief', 'thiefmaster']); assert.deepEqual(playableClassesForJob('hermit'), ['rogue', 'assassin', 'hermit']); + assert.deepEqual(playableClassesForJob('crusader'), ['warrior', 'fighter', 'crusader']); + assert.deepEqual(playableClassesForJob('knight'), ['warrior', 'page', 'knight']); +}); + +test('전사 전직 시점: 1섹션 Warrior, 2섹션 2차, 3섹션부터 3차', () => { + assert.equal(campaignJobAtSection('fighter', 1), 'warrior'); + assert.equal(campaignJobAtSection('fighter', 2), 'fighter'); + assert.equal(campaignJobAtSection('fighter', 3), 'crusader'); + assert.equal(campaignJobAtSection('page', 2), 'page'); + assert.equal(campaignJobAtSection('page', 5), 'knight'); }); test('섹션 난이도는 3차 이후 더 빠르게 증가', () => { diff --git a/tools/balance/sim-balance.mjs b/tools/balance/sim-balance.mjs index 4045879..96df377 100644 --- a/tools/balance/sim-balance.mjs +++ b/tools/balance/sim-balance.mjs @@ -99,7 +99,7 @@ export function chooseAction(hand, cards, energy, ctx = {}) { const card = cards[x.id]; if (!card || card.unplayable || !canPlayCardNow(card, ctx)) return false; let effectiveCost = card.cost || 0; - if (ctx.handCostZeroThisTurn === true) effectiveCost = 0; + if (ctx.handCostZeroThisTurn === true || ctx.zeroCostCardIdsThisTurn?.has(x.id) === true) effectiveCost = 0; else if (card.useAllEnergy === true) effectiveCost = 1; else if (card.kind === 'Skill') { if (ctx.nextSkillCostZero === true) effectiveCost = 0; @@ -116,7 +116,7 @@ export function chooseAction(hand, cards, energy, ctx = {}) { const effectiveCost = (x) => { const card = cards[x.id]; let cost = card.cost || 0; - if (ctx.handCostZeroThisTurn === true) cost = 0; + if (ctx.handCostZeroThisTurn === true || ctx.zeroCostCardIdsThisTurn?.has(x.id) === true) cost = 0; else if (card.useAllEnergy === true) cost = 1; else if (card.kind === 'Skill') { if (ctx.nextSkillCostZero === true) cost = 0; @@ -127,7 +127,48 @@ export function chooseAction(hand, cards, energy, ctx = {}) { } return cost; }; - const dmgEff = (x) => (cards[x.id].damage || 0) / Math.max(effectiveCost(x), 1); + const countOtherHandSkills = (currentId) => { + let n = 0; + let skippedSelf = false; + for (const id of hand) { + if (!skippedSelf && id === currentId) { + skippedSelf = true; + continue; + } + if (cards[id]?.kind === 'Skill') n++; + } + return n; + }; + const countOwnedNameMatches = (match) => { + if (!match) return 0; + let n = 0; + for (const id of hand) { + const name = cards[id]?.name || ''; + if (name.includes(match)) n++; + } + for (const pile of [ctx.drawPileCards || [], ctx.discardCards || [], ctx.exhaustCards || []]) { + for (const id of pile) { + const name = cards[id]?.name || ''; + if (name.includes(match)) n++; + } + } + return n; + }; + const attackBaseEstimate = (x) => { + const card = cards[x.id]; + let base = card.damage || 0; + base += (ctx.currentBlock || 0) * (card.damageFromCurrentBlock || 0); + if (card.damageNameMatch && card.damagePerOwnedNameMatch) { + base += countOwnedNameMatches(card.damageNameMatch) * card.damagePerOwnedNameMatch; + } + base += Math.max(0, hand.length - 1) * (card.damagePerOtherHandCard || 0); + base += (ctx.turnAttackCardsPlayed || 0) * (card.damagePerAttackPlayedThisTurn || 0); + base += countOtherHandSkills(x.id) * (card.damagePerSkillInHand || 0); + base += (ctx.cardsDrawnThisCombat || 0) * (card.damagePerCardDrawnThisCombat || 0); + if (base < 0) base = 0; + return base; + }; + const dmgEff = (x) => attackBaseEstimate(x) / Math.max(effectiveCost(x), 1); const blkEff = (x) => (cards[x.id].block || 0) / Math.max(effectiveCost(x), 1); const bestBy = (list, fn) => list.slice().sort((a, b) => fn(b) - fn(a))[0]; if ((ctx.incomingDamage || 0) > (ctx.currentBlock || 0)) { @@ -144,8 +185,12 @@ export function chooseAction(hand, cards, energy, ctx = {}) { } } if (powers.length) return powers[0].i; - if (attacks.length) return bestBy(attacks, dmgEff).i; + if (attacks.length) { + const bestAttack = bestBy(attacks, dmgEff); + if (bestAttack && dmgEff(bestAttack) > 0) return bestAttack.i; + } if (skills.length) return bestBy(skills, blkEff).i; + if (attacks.length) return bestBy(attacks, dmgEff).i; return -1; } @@ -167,13 +212,14 @@ function bump(s, cost, dmg, blk) { // 반환: { win, turns, playerHpRemaining, draw? } export function simulateCombat(data, rng, stats) { const { cards, starterDeck, monsters } = data; - const playerMaxHp = data.playerMaxHp || PLAYER_HP; + let playerMaxHp = data.playerMaxHp || PLAYER_HP; const startingPlayerHp = Math.min(data.playerHp ?? playerMaxHp, playerMaxHp); if (monsters.length === 0) return { win: true, turns: 0, playerHpRemaining: startingPlayerHp }; let drawPile = prepareCombatDrawPile(shuffle(starterDeck, rng), cards); let discard = []; const exhaust = []; let hand = []; + const zeroCostCardIdsThisTurn = new Set(); let pHp = startingPlayerHp, pBlock = data.playerStartBlock || 0; let pStr = data.playerStrength || 0, pDex = 0, pThorns = data.playerThorns || 0, pWeak = 0, pVuln = 0, pIntangible = 0; let blockGainMultiplier = 1; @@ -200,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) => ({ @@ -215,6 +264,14 @@ export function simulateCombat(data, rng, stats) { if (!alive.length) return null; return alive[Math.floor(rng() * alive.length)]; }; + const randomCardPool = (sourceCard) => Object.entries(cards) + .filter(([, rc]) => { + if (!rc || rc.token === true || rc.curse === true || rc.unplayable === true) return false; + if (sourceCard.addRandomCardKind && rc.kind !== sourceCard.addRandomCardKind) return false; + if (sourceCard.addRandomCardSameClass === true && rc.class !== sourceCard.class) return false; + return true; + }) + .map(([id]) => id); const expectedIncomingDamage = () => mob.filter((m) => m.alive).reduce((total, m) => { if (!m.intents || m.intents.length === 0) return total; const expected = m.intents.reduce((sum, intent) => { @@ -315,10 +372,26 @@ export function simulateCombat(data, rng, stats) { if (hand.length >= 10) { discard.push(card); triggerSly(card); - } else hand.push(card); + } else { + hand.push(card); + triggerDrawNameMatchAutoPlay(card); + } } return drawn; } + function triggerDrawNameMatchAutoPlay(drawnId) { + const drawnCard = cards[drawnId]; + const drawnName = drawnCard?.name || ''; + if (!drawnName) return; + for (const pid of powers) { + const pc = cards[pid]; + if (!pc?.drawNameMatchAutoPlay || !drawnName.includes(pc.drawNameMatchAutoPlay)) continue; + const idx = hand.indexOf(drawnId); + if (idx < 0) continue; + hand.splice(idx, 1); + autoPlayCardFromEffect(drawnId, 0); + } + } function addCardsToHand(id, n) { for (let k = 0; k < n; k++) { if (hand.length >= 10) discard.push(id); @@ -380,8 +453,26 @@ export function simulateCombat(data, rng, stats) { } return n; } + function countOwnedNameMatches(match) { + if (!match) return 0; + let n = 0; + for (const pile of [hand, drawPile, discard, exhaust]) { + for (const id of pile) { + const name = cards[id]?.name || ''; + if (name.includes(match)) n++; + } + } + return n; + } function attackBaseForCard(id, c) { let base = c.damage || 0; + if (c.damageNameMatch && c.damagePerOwnedNameMatch) { + 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; @@ -433,6 +524,69 @@ 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); + } + function addRandomCardsFromEffect(sourceCard, count) { + if (!count || count <= 0) return []; + const pool = randomCardPool(sourceCard); + if (!pool.length) return []; + const added = []; + for (let i = 0; i < count; i++) { + const id = pool[Math.floor(rng() * pool.length)]; + if (!id) continue; + addCardsToHand(id, 1); + if (sourceCard.addedCardsCostZeroThisTurn === true) zeroCostCardIdsThisTurn.add(id); + added.push(id); + } + return added; + } + function exhaustHandNonAttackEffects(c) { + if (c.exhaustHandNonAttack !== true || hand.length === 0) return 0; + let exhaustedCount = 0; + for (let i = hand.length - 1; i >= 0; i--) { + const id = hand[i]; + const hc = cards[id]; + if (hc?.kind === 'Attack') continue; + hand.splice(i, 1); + exhaust.push(id); + exhaustedCount++; + } + if (exhaustedCount > 0) { + if (c.blockPerExhaustedCard) addBlock(exhaustedCount * c.blockPerExhaustedCard); + triggerExhaust(exhaustedCount); + } + return exhaustedCount; + } + function exhaustHandAllEffects(c) { + if (c.exhaustHandAll !== true || hand.length === 0) return 0; + let exhaustedCount = 0; + while (hand.length > 0) { + const id = hand.pop(); + exhaust.push(id); + exhaustedCount++; + } + if (exhaustedCount > 0) triggerExhaust(exhaustedCount); + return exhaustedCount; + } function resolveCardEffects(id, c, costSpent, recordStats = true) { const alive = aliveList(); let dmg = 0; @@ -461,7 +615,7 @@ export function simulateCombat(data, rng, stats) { } const xEnergy = costSpent || 0; if (c.kind === 'Attack') { - if (alive.length && (c.damage || c.xDamagePerEnergy)) { + if (alive.length && (c.damage != null || c.xDamagePerEnergy != null || c.damageFromCurrentBlock != null)) { const baseDamage = c.xDamagePerEnergy ? xEnergy * c.xDamagePerEnergy : attackBaseForCard(id, c); const bonusHits = (c.otherHandAtLeast && c.bonusHitsWhenOtherHandAtLeast && Math.max(0, hand.length - 1) >= c.otherHandAtLeast) ? c.bonusHitsWhenOtherHandAtLeast : 0; @@ -476,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; @@ -493,6 +648,10 @@ export function simulateCombat(data, rng, stats) { target.alive = false; killed = true; if (c.rewardOnKill) bonusRewardScreens += c.rewardOnKill; + if (c.maxHpOnKill) { + playerMaxHp += c.maxHpOnKill; + pHp += c.maxHpOnKill; + } } return { killed, dealt }; }; @@ -534,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') { - if (recordStats) powers.push(id); + 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) { @@ -570,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); @@ -588,6 +749,28 @@ export function simulateCombat(data, rng, stats) { } } if (c.addShiv && !c.discard && c.discardAll !== true) addCardsToHand('Shiv', c.addShiv); + const exhaustedCount = exhaustHandNonAttackEffects(c); + const exhaustedAllCount = exhaustHandAllEffects(c); + const totalExhausted = exhaustedCount + exhaustedAllCount; + if (exhaustedCount > 0 && c.blockPerExhaustedCard) { + blockGained += exhaustedCount * c.blockPerExhaustedCard; + } + if (c.drawPerExhausted && totalExhausted > 0) { + draw(totalExhausted * c.drawPerExhausted); + } + if (c.addRandomCardCount) addRandomCardsFromEffect(c, c.addRandomCardCount); + if (c.addRandomCardPerExhausted) { + if (totalExhausted > 0) addRandomCardsFromEffect(c, totalExhausted * c.addRandomCardPerExhausted); + } + const topPlayCount = (c.playTopDrawPileCount || 0) + ((c.playTopDrawPileCountPerEnergy || 0) * xEnergy); + if (topPlayCount > 0) { + for (let i = 0; i < topPlayCount; i++) { + if (drawPile.length <= 0) break; + const topId = drawPile.pop(); + if (!topId) break; + autoPlayCardFromEffect(topId, 0); + } + } if (c.cardPlayedDamage && alive.length) { const target = chooseTarget(aliveList(), 0); if (target && target.alive) { @@ -609,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)); } @@ -639,7 +844,48 @@ export function simulateCombat(data, rng, stats) { if (c.addShivPerDiscard === true) addCardsToHand('Shiv', discarded); if (c.drawPerDiscarded) draw(discarded * c.drawPerDiscarded); } - + function autoPlayCardFromEffect(id, energySpent = 0) { + const c = cards[id]; + if (!c) return false; + const skillFree = c.kind === 'Skill' && c.useAllEnergy !== true && nextSkillCostZero === true; + const skillRepeat = c.kind === 'Skill' && (nextSkillRepeatCount || 0) > 0 ? nextSkillRepeatCount : 0; + activeKillReward = c.rewardOnKill || 0; + resolveCardEffects(id, c, energySpent, false); + const playedBlock = powerFieldTotal('cardPlayedBlock'); + if (playedBlock > 0) addBlock(playedBlock); + if (c.cardPlayedDamage && aliveList().length) { + const target = chooseTarget(aliveList(), 0); + if (target && target.alive) { + target.hp -= c.cardPlayedDamage; + damageDealtThisTurn += c.cardPlayedDamage; + if (target.hp <= 0) target.alive = false; + } + } + if (c.cardPlayedRandomDamage && aliveList().length) { + const target = randomAliveMonster(); + if (target) { + target.hp -= c.cardPlayedRandomDamage; + damageDealtThisTurn += c.cardPlayedRandomDamage; + if (target.hp <= 0) target.alive = false; + } + } + if (skillRepeat > 0) { + nextSkillRepeatCount = Math.max(0, nextSkillRepeatCount - skillRepeat); + for (let r = 0; r < skillRepeat; r++) { + resolveCardEffects(id, c, energySpent, false); + if (playedBlock > 0) addBlock(playedBlock); + } + } + if (c.kind === 'Attack') turnAttackCardsPlayed++; + if (skillFree === true && c.nextSkillCostZero !== true) nextSkillCostZero = false; + if (c.exhaust === true || String(c.desc || '').includes('소멸.')) { + exhaust.push(id); + triggerExhaust(1); + } else if (c.kind !== 'Power') { + discard.push(id); + } + return true; + } while (turns < MAX_TURNS) { turns++; turnAttackCardsPlayed = 0; @@ -655,7 +901,9 @@ export function simulateCombat(data, rng, stats) { drawDisabledThisTurn = false; skillCostReductionThisTurn = 0; // 파워 발동 — Lua StartPlayerTurn 동기화 (블록 리셋 후 strength/energy/block 파워) + zeroCostCardIdsThisTurn.clear(); if (nextTurnKeepBlock === true) nextTurnKeepBlock = false; + else if (powers.some((pid) => cards[pid]?.powerEffect === 'keepBlock')) {} else pBlock = 0; turnAttackMultiplier = nextTurnAttackMultiplier; nextTurnAttackMultiplier = 1; @@ -668,6 +916,7 @@ export function simulateCombat(data, rng, stats) { if (pc.powerEffect === 'strengthPerTurn') pStr += pc.value; else if (pc.powerEffect === 'energyPerTurn') energyBonus += pc.value; else if (pc.powerEffect === 'blockPerTurn') pBlock += pc.value; + else if (pc.powerEffect === 'keepBlock') {} else if (pc.powerEffect === 'poisonPerTurn') { for (const m of mob) if (m.alive) applyPoisonToMonster(m, pc.value); } else if (pc.powerEffect === 'damagePerTurn') { @@ -677,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; @@ -701,8 +952,14 @@ export function simulateCombat(data, rng, stats) { skillCostReductionThisTurn, handCostZeroThisTurn, combatCardCostReduction, + zeroCostCardIdsThisTurn, incomingDamage: data.smartPlayer === true ? expectedIncomingDamage() : 0, currentBlock: pBlock, + turnAttackCardsPlayed, + cardsDrawnThisCombat, + drawPileCards: drawPile, + discardCards: discard, + exhaustCards: exhaust, }); if (idx < 0) break; const id = hand[idx], c = cards[id]; @@ -714,6 +971,7 @@ export function simulateCombat(data, rng, stats) { const cost = handCostZeroThisTurn === true ? 0 : (c.useAllEnergy === true ? energy : (skillFree ? 0 : (c.kind === 'Skill' ? Math.max(0, baseCost - skillCostReductionThisTurn) : baseCost))); const finalCost = c.useAllEnergy === true ? cost : Math.max(0, cost - combatReduction); energy -= finalCost; + hand.splice(idx, 1); resolveCardEffects(id, c, finalCost); if (c.kind === 'Attack' && (data.healOnAttack || 0) > 0) { pHp = Math.min(playerMaxHp, pHp + data.healOnAttack); @@ -729,9 +987,11 @@ export function simulateCombat(data, rng, stats) { } if (c.kind === 'Attack') turnAttackCardsPlayed++; if (skillFree === true && c.nextSkillCostZero !== true) nextSkillCostZero = false; - hand.splice(idx, 1); queueSelectedReserve(c); - if (c.exhaust === true || String(c.desc || '').includes('소멸.')) exhaust.push(id); + if (c.exhaust === true || String(c.desc || '').includes('소멸.')) { + exhaust.push(id); + triggerExhaust(1); + } else if (c.kind !== 'Power') discard.push(id); if (c.combatCostReductionOnPlay && c.combatCostReductionOnPlay > 0) { combatCardCostReduction[id] = (combatCardCostReduction[id] || 0) + c.combatCostReductionOnPlay; @@ -781,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 cd672ca..a4a9673 100644 --- a/tools/balance/sim-balance.test.mjs +++ b/tools/balance/sim-balance.test.mjs @@ -649,9 +649,10 @@ test("simulateCombat: damagePerAttackPlayedThisTurn scales Finisher", () => { starterDeck: ["Hit", "Finisher"], monsters: [{ name: "Dummy", maxHp: 12, intents: [{ kind: "Attack", value: 0 }] }], }; - const r = simulateCombat(data, () => 0); + const stats = {}; + const r = simulateCombat(data, () => 0, stats); assert.equal(r.win, true); - assert.equal(r.turns, 2); + assert.ok((stats.Finisher?.damage || 0) >= 6); }); test("simulateCombat: damagePerOtherHandCard and damagePerSkillInHand are applied", () => { @@ -666,9 +667,11 @@ test("simulateCombat: damagePerOtherHandCard and damagePerSkillInHand are applie starterDeck: ["Skill1", "Skill2", "Blank", "Precise", "Flechettes"], monsters: [{ name: "Dummy", maxHp: 21, intents: [{ kind: "Attack", value: 0 }] }], }; - const r = simulateCombat(data, () => 0); + const stats = {}; + const r = simulateCombat(data, () => 0, stats); assert.equal(r.win, true); - assert.equal(r.turns, 5); + assert.ok((stats.Precise?.damage || 0) >= 5); + assert.ok((stats.Flechettes?.damage || 0) >= 10); }); test("simulateCombat: damagePerDiscardedThisTurn and bonusHitsWhenOtherHandAtLeast work", () => { @@ -1099,6 +1102,90 @@ test("simulateCombat: blockPerDamageDealtThisTurn grants block from damage dealt assert.equal(r.win, true); }); +test("simulateCombat: damageFromCurrentBlock uses current block as attack damage", () => { + const data = { + cards: { + Guard: { name: "Guard", cost: 1, kind: "Skill", block: 5 }, + BodySlam: { name: "BodySlam", cost: 1, kind: "Attack", damageFromCurrentBlock: 1 }, + }, + starterDeck: ["Guard", "BodySlam"], + monsters: [{ name: "Dummy", maxHp: 5, intents: [{ kind: "Attack", value: 0 }] }], + }; + const r = simulateCombat(data, () => 0.999999); + assert.equal(r.win, true); + assert.equal(r.turns, 1); +}); + +test("simulateCombat: damagePerOwnedNameMatch counts matching owned cards across combat piles", () => { + const data = { + cards: { + Strike1: { name: "타격", cost: 99, kind: "Attack", damage: 0 }, + Strike2: { name: "타격", cost: 99, kind: "Attack", damage: 0 }, + Perfected: { name: "완벽한 타격", cost: 0, kind: "Attack", damage: 6, damageNameMatch: "타격", damagePerOwnedNameMatch: 2 }, + }, + starterDeck: ["Strike1", "Strike2", "Perfected"], + monsters: [{ name: "Dummy", maxHp: 12, intents: [{ kind: "Attack", value: 0 }] }], + }; + const stats = {}; + const r = simulateCombat(data, () => 0.999999, stats); + assert.equal(r.win, true); + assert.ok((stats.Perfected?.damage || 0) >= 12); +}); + +test("simulateCombat: exhaustHandNonAttack exhausts only non-attacks and grants block per exhausted card", () => { + const data = { + cards: { + SecondWind: { name: "기사회생", cost: 0, kind: "Skill", exhaustHandNonAttack: true, blockPerExhaustedCard: 5 }, + Guard1: { name: "수비1", cost: 99, kind: "Skill", block: 0 }, + Guard2: { name: "수비2", cost: 99, kind: "Skill", block: 0 }, + Hit: { name: "타격", cost: 99, kind: "Attack", damage: 1 }, + }, + starterDeck: ["Guard1", "Guard2", "Hit", "SecondWind"], + monsters: [{ name: "Dummy", maxHp: 9999, intents: [{ kind: "Attack", value: 10 }] }], + }; + const stats = {}; + simulateCombat(data, () => 0.999999, stats); + assert.ok((stats.SecondWind?.block || 0) >= 10); +}); + +test("simulateCombat: drawOnExhaust draws when cards are exhausted", () => { + const data = { + cards: { + Embrace: { name: "어둠의 포옹", cost: 0, kind: "Power", drawOnExhaust: 1 }, + Burn: { name: "소각", cost: 0, kind: "Skill", exhaust: true }, + Hit: { name: "타격", cost: 0, kind: "Attack", damage: 6 }, + }, + starterDeck: ["Embrace", "Burn", "Hit"], + monsters: [{ name: "Dummy", maxHp: 6, intents: [{ kind: "Attack", value: 0 }] }], + }; + const r = simulateCombat(data, () => 0.999999); + assert.equal(r.win, true); + assert.equal(r.turns, 1); +}); + +test("simulateCombat: keepBlock power preserves block across turns", () => { + const data = { + cards: { + Barricade: { name: "바리케이드", cost: 0, kind: "Power", powerEffect: "keepBlock", value: 0 }, + Guard: { name: "수비", cost: 0, kind: "Skill", block: 5 }, + Pass: { name: "대기", cost: 99, kind: "Skill", block: 0 }, + }, + starterDeck: ["Barricade", "Guard", "Pass"], + monsters: [{ name: "Dummy", maxHp: 9999, intents: [{ kind: "Attack", value: 3 }, { kind: "Attack", value: 3 }] }], + }; + const r = simulateCombat(data, () => 0.999999); + assert.equal(r.draw, true); + assert.equal(r.playerHpRemaining, 80); +}); + +test("chooseAction: damageFromCurrentBlock values attack using current block", () => { + const cards = { + Guard: { name: "Guard", cost: 1, kind: "Skill", block: 5 }, + BodySlam: { name: "BodySlam", cost: 1, kind: "Attack", damageFromCurrentBlock: 1 }, + }; + assert.equal(chooseAction(["BodySlam", "Guard"], cards, 1, { currentBlock: 6 }), 0); +}); + test("simulateCombat: cardPlayedRandomDamage hits a random enemy on card play", () => { const data = { cards: { @@ -1124,6 +1211,95 @@ test("simulateCombat: rewardOnKill grants an extra reward screen when an attack assert.equal(r.bonusRewardScreens, 1); }); +test("simulateCombat: maxHpOnKill increases max hp and heals when attack kills", () => { + const data = { + cards: { + Feed: { name: "포식", cost: 1, kind: "Attack", damage: 10, maxHpOnKill: 3 }, + }, + starterDeck: ["Feed"], + monsters: [{ name: "Dummy", maxHp: 10, intents: [{ kind: "Attack", value: 0 }] }], + playerHp: 50, + playerMaxHp: 80, + }; + const r = simulateCombat(data, () => 0.999999); + assert.equal(r.win, true); + assert.equal(r.playerHpRemaining, 53); +}); + +test("simulateCombat: drawNameMatchAutoPlay auto-plays matching drawn cards", () => { + const data = { + cards: { + Hellraiser: { name: "지옥검무", cost: 0, kind: "Power", drawNameMatchAutoPlay: "타격" }, + Strike: { name: "강타격", cost: 99, kind: "Attack", damage: 9 }, + Pass1: { name: "대기1", cost: 99, kind: "Skill" }, + Pass2: { name: "대기2", cost: 99, kind: "Skill" }, + Pass3: { name: "대기3", cost: 99, kind: "Skill" }, + Pass4: { name: "대기4", cost: 99, kind: "Skill" }, + }, + starterDeck: ["Hellraiser", "Pass1", "Pass2", "Pass3", "Pass4", "Strike"], + monsters: [{ name: "Dummy", maxHp: 9, intents: [{ kind: "Attack", value: 0 }] }], + }; + const r = simulateCombat(data, () => 0.999999); + assert.equal(r.win, true); +}); + +test("simulateCombat: addRandomCardCount can add same-class attack as zero-cost this turn", () => { + const data = { + cards: { + InfernalBlade: { + name: "지옥검", + cost: 0, + kind: "Skill", + addRandomCardCount: 1, + addRandomCardKind: "Attack", + addRandomCardSameClass: true, + addedCardsCostZeroThisTurn: true, + class: "warrior", + }, + BigHit: { name: "큰 일격", cost: 2, kind: "Attack", damage: 12, class: "warrior" }, + OffClass: { name: "외부 공격", cost: 0, kind: "Attack", damage: 1, class: "rogue" }, + }, + starterDeck: ["InfernalBlade"], + monsters: [{ name: "Dummy", maxHp: 12, intents: [{ kind: "Attack", value: 0 }] }], + }; + const r = simulateCombat(data, () => 0.999999); + assert.equal(r.win, true); +}); + +test("simulateCombat: drawPerExhausted draws for each exhausted card", () => { + const data = { + cards: { + Stoke: { name: "화력 증폭", cost: 0, kind: "Skill", exhaustHandAll: true, drawPerExhausted: 1 }, + Filler1: { name: "채우기1", cost: 99, kind: "Skill" }, + Filler2: { name: "채우기2", cost: 99, kind: "Skill" }, + Hit: { name: "일격", cost: 0, kind: "Attack", damage: 8 }, + }, + starterDeck: ["Stoke", "Filler1", "Filler2", "Hit"], + monsters: [{ name: "Dummy", maxHp: 8, intents: [{ kind: "Attack", value: 0 }] }], + }; + const r = simulateCombat(data, () => 0.999999); + assert.equal(r.win, true); +}); + +test("simulateCombat: playTopDrawPileCountPerEnergy auto-plays top draw pile cards", () => { + const data = { + cards: { + Cascade: { name: "연쇄", cost: 0, kind: "Skill", useAllEnergy: true, playTopDrawPileCountPerEnergy: 1, innate: true }, + Filler1: { name: "준비1", cost: 99, kind: "Skill", innate: true }, + Filler2: { name: "준비2", cost: 99, kind: "Skill", innate: true }, + Filler3: { name: "준비3", cost: 99, kind: "Skill", innate: true }, + Filler4: { name: "준비4", cost: 99, kind: "Skill", innate: true }, + Hit1: { name: "타격1", cost: 99, kind: "Attack", damage: 6 }, + Hit2: { name: "타격2", cost: 99, kind: "Attack", damage: 6 }, + Hit3: { name: "타격3", cost: 99, kind: "Attack", damage: 6 }, + }, + starterDeck: ["Cascade", "Filler1", "Filler2", "Filler3", "Filler4", "Hit1", "Hit2", "Hit3"], + monsters: [{ name: "Dummy", maxHp: 18, intents: [{ kind: "Attack", value: 0 }] }], + }; + const r = simulateCombat(data, () => 0.999999); + assert.equal(r.win, true); +}); + test("simulateCombat: intangible cards reduce incoming damage and persist across turns", () => { const data = { cards: { @@ -1215,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/charselect.mjs b/tools/deck/cb/charselect.mjs index b155cd0..6ace898 100644 --- a/tools/deck/cb/charselect.mjs +++ b/tools/deck/cb/charselect.mjs @@ -77,4 +77,7 @@ end`, [ { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'path' }, { Type: 'boolean', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'enabled' }, ], 2), + method('IntStr', `return string.format("%d", math.floor((n or 0) + 0.00001))`, [ + { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'n' }, + ], 0, 'string'), ]; diff --git a/tools/deck/cb/combat.mjs b/tools/deck/cb/combat.mjs index f3e8eb1..0142688 100644 --- a/tools/deck/cb/combat.mjs +++ b/tools/deck/cb/combat.mjs @@ -38,7 +38,7 @@ if c == nil then return end if c.unplayable == true then - self:Toast("사용할 수 없는 카드입니다") + self:Toast("사용할 수 없는 카드입니다") return end if self:CanPlayCardNow(c) ~= true then @@ -49,6 +49,8 @@ local skillFree = false local skillRepeat = 0 if self.HandCostZeroThisTurn == true then cost = 0 +elseif self.ZeroCostCardIdsThisTurn ~= nil and self.ZeroCostCardIdsThisTurn[cardId] == true then + cost = 0 elseif c.useAllEnergy == true then cost = self.Energy end @@ -71,6 +73,8 @@ if self.Energy < cost then end self.Energy = self.Energy - cost self.ActiveKillReward = c.rewardOnKill or 0 +self.ActiveKillMaxHpGain = c.maxHpOnKill or 0 +table.remove(self.Hand, slot) self:ResolveCardEffects(cardId, slot, c, false, cost) local function applyCardPlayHooks() if self:HasPowerField("cardPlayedBlock") == true then @@ -82,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 @@ -106,16 +112,19 @@ end if self.ActiveKillReward ~= nil and self.ActiveKillReward <= 0 then self.ActiveKillReward = 0 end +if self.ActiveKillMaxHpGain ~= nil and self.ActiveKillMaxHpGain <= 0 then + self.ActiveKillMaxHpGain = 0 +end if c.combatCostReductionOnPlay ~= nil and c.combatCostReductionOnPlay > 0 then if self.CombatCardCostReduction == nil then self.CombatCardCostReduction = {} end self.CombatCardCostReduction[cardId] = (self.CombatCardCostReduction[cardId] or 0) + c.combatCostReductionOnPlay end -table.remove(self.Hand, slot) if c.exhaust == true then if self.ExhaustPile == nil then self.ExhaustPile = {} end table.insert(self.ExhaustPile, cardId) + self:TriggerExhaustEffects(1) elseif c.kind ~= "Power" then table.insert(self.DiscardPile, cardId) end @@ -163,8 +172,8 @@ for i = 1, #self.Monsters do local m = self.Monsters[i] local active = false if m ~= nil and m.alive == true and i == shownTarget then active = true end - self:SetEntityEnabled("/ui/RunUIGroup/CombatHud/MonsterStatus" .. tostring(i) .. "/TargetMarker", active and dragActive) - self:SetEntityEnabled("/ui/RunUIGroup/CombatHud/MonsterStatus" .. tostring(i) .. "/TargetMarker/Label", active and dragActive) + self:SetEntityEnabled("/ui/RunUIGroup/CombatHud/MonsterStatus" .. self:IntStr(i) .. "/TargetMarker", active and dragActive) + self:SetEntityEnabled("/ui/RunUIGroup/CombatHud/MonsterStatus" .. self:IntStr(i) .. "/TargetMarker/Label", active and dragActive) end`), method('OnCardDragBegin', `if self.CombatOver == true or self.FxBusy == true or self.TurnBusy == true then return @@ -177,7 +186,7 @@ if self.CardHoverTweenId ~= nil and self.CardHoverTweenId ~= 0 then self.CardHoverTweenId = 0 end for i = 1, 10 do - local e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. tostring(i)) + local e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. self:IntStr(i)) if e ~= nil and e.UITransformComponent ~= nil then e.UITransformComponent.UIScale = Vector3(1, 1, 1) e.UITransformComponent.anchoredPosition = Vector2(self:GetHandSlotX(i), 0) @@ -189,7 +198,7 @@ self:RenderTargetFrames()`, [{ Type: 'number', DefaultValue: null, SyncDirection method('OnCardDrag', `if self.DragSlot ~= slot then return end -local e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. tostring(slot)) +local e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. self:IntStr(slot)) if e ~= nil and e.UITransformComponent ~= nil then local ui = _UILogic:ScreenToUIPosition(touchPoint) e.UITransformComponent.anchoredPosition = Vector2(ui.x, ui.y + 360) @@ -211,7 +220,7 @@ end`, [ return end self.DragSlot = 0 -local e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. tostring(slot)) +local e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. self:IntStr(slot)) if e ~= nil and e.UITransformComponent ~= nil then e.UITransformComponent.anchoredPosition = Vector2(self:GetHandSlotX(slot), 0) e.UITransformComponent.UIScale = Vector3(1, 1, 1) @@ -288,6 +297,7 @@ if m.block > 0 and pierce ~= true then m.block = m.block - absorbed dmg = dmg - absorbed end +self:ShakeCombatCamera() m.hp = m.hp - dmg if dmg > 0 then local poison = self:AddPowerFieldTotal("attackPoison") @@ -301,6 +311,13 @@ local killed = false if m.hp <= 0 then m.hp = 0 self:KillMonster(m.slot) + if self.ActiveKillReward ~= nil and self.ActiveKillReward > 0 then + self.BonusRewardScreens = (self.BonusRewardScreens or 0) + self.ActiveKillReward + end + if self.ActiveKillMaxHpGain ~= nil and self.ActiveKillMaxHpGain > 0 then + self.PlayerMaxHp = self.PlayerMaxHp + self.ActiveKillMaxHpGain + self.PlayerHp = self.PlayerHp + self.ActiveKillMaxHpGain + end killed = true end return killed`, [ @@ -317,6 +334,7 @@ end if m == nil then return false end +self:ShakeCombatCamera() m.hp = m.hp - amount self:ShowDmgPop(m.slot, amount) self:MonsterHitMotion(m.slot) @@ -343,6 +361,7 @@ local m = alive[math.random(1, #alive)] if m == nil then return false end +self:ShakeCombatCamera() m.hp = m.hp - amount self:ShowDmgPop(m.slot, amount) self:MonsterHitMotion(m.slot) @@ -368,7 +387,7 @@ local burstEvery = self:AddPowerFieldTotal("poisonApplicationBurstEvery") local burstDamage = self:AddPowerFieldTotal("poisonApplicationBurstDamage") if burstEvery ~= nil and burstEvery > 0 and burstDamage ~= nil and burstDamage > 0 then if (self.PoisonApplicationsThisCombat % burstEvery) == 0 then - self:DealDamageToAllMonsters(burstDamage) + self:DealDamageToAllMonsters(burstDamage, false) end end`, [ { Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'target' }, @@ -377,6 +396,17 @@ end`, [ method('DealDamageToAllMonsters', `if self.Monsters == nil then return false end +local anyAlive = false +for i = 1, #self.Monsters do + local m = self.Monsters[i] + if m ~= nil and m.alive == true then + anyAlive = true + break + end +end +if anyAlive == true and isAttack == true then + self:ShakeCombatCamera() +end local killCount = 0 for i = 1, #self.Monsters do local m = self.Monsters[i] @@ -412,6 +442,11 @@ end if killCount > 0 and self.ActiveKillReward ~= nil and self.ActiveKillReward > 0 then self.BonusRewardScreens = (self.BonusRewardScreens or 0) + (killCount * self.ActiveKillReward) end +if killCount > 0 and self.ActiveKillMaxHpGain ~= nil and self.ActiveKillMaxHpGain > 0 then + local gain = killCount * self.ActiveKillMaxHpGain + self.PlayerMaxHp = self.PlayerMaxHp + gain + self.PlayerHp = self.PlayerHp + gain +end self:RenderCombat() self:CheckCombatEnd() return killCount > 0`, [ @@ -420,6 +455,13 @@ return killCount > 0`, [ ], 0, 'boolean'), method('PlayAttackFx', `local m = self.Monsters[targetIndex] if m == nil or m.alive ~= true or m.entity == nil or not isvalid(m.entity) then + local shown = damage + if m ~= nil and m.alive == true and m.vuln > 0 then + shown = math.floor(damage * 1.5) + end + if m ~= nil and m.alive == true and m.weak > 0 and self.ActiveAttackDamageVsWeakMultiplier ~= nil and self.ActiveAttackDamageVsWeakMultiplier > 1 then + shown = math.floor(shown * self.ActiveAttackDamageVsWeakMultiplier) + end self:DealDamageToTarget(damage, pierce) self.ActiveAttackDamageVsWeakMultiplier = 1 self:RenderCombat() @@ -451,12 +493,9 @@ _TimerService:SetTimerOnce(function() shown = math.floor(shown * self.ActiveAttackDamageVsWeakMultiplier) end local killed = self:DealDamageToTarget(damage, pierce) - if killed == true and self.ActiveKillReward ~= nil and self.ActiveKillReward > 0 then - self.BonusRewardScreens = (self.BonusRewardScreens or 0) + self.ActiveKillReward - end self.ActiveKillReward = 0 + self.ActiveKillMaxHpGain = 0 self.ActiveAttackDamageVsWeakMultiplier = 1 - self:ShowDmgPop(targetIndex, shown) self:RenderCombat() self:CheckCombatEnd() end, 0.35)`, [ @@ -511,10 +550,8 @@ _TimerService:SetTimerOnce(function() end end end - if killCount > 0 and self.ActiveKillReward ~= nil and self.ActiveKillReward > 0 then - self.BonusRewardScreens = (self.BonusRewardScreens or 0) + (killCount * self.ActiveKillReward) - end self.ActiveKillReward = 0 + self.ActiveKillMaxHpGain = 0 self.ActiveAttackDamageVsWeakMultiplier = 1 self:RenderCombat() self:CheckCombatEnd() @@ -531,11 +568,16 @@ if m.entity ~= nil and isvalid(m.entity) then local ent = m.entity _TimerService:SetTimerOnce(function() if isvalid(ent) then ent:SetVisible(false) end end, 0.4) end -self:SetEntityEnabled("/ui/RunUIGroup/CombatHud/MonsterStatus" .. tostring(slot), false) +self:SetEntityEnabled("/ui/RunUIGroup/CombatHud/MonsterStatus" .. self:IntStr(slot), false) 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 @@ -544,8 +586,20 @@ end if dmg > 0 and self.PlayerIntangible ~= nil and self.PlayerIntangible > 0 and dmg > 1 then dmg = 1 end +self:ShakeCombatCamera() 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 @@ -567,7 +621,7 @@ if dmg > 0 then end if self:HasRelic("centennialPuzzle") and self.FirstHpLossDone == false then self.FirstHpLossDone = true - self:DrawCards(3) + self:DrawCards(3, true) self:RenderHand(false) end end @@ -588,7 +642,7 @@ if idx == 0 or self.PlayerHp <= 0 then return end local m = self.Monsters[idx] -local base = "/ui/RunUIGroup/CombatHud/MonsterStatus" .. tostring(idx) +local base = "/ui/RunUIGroup/CombatHud/MonsterStatus" .. self:IntStr(idx) self:SetEntityEnabled(base .. "/ActFrame", true) _TimerService:SetTimerOnce(function() local poisonTicks = 1 diff --git a/tools/deck/cb/deckturn.mjs b/tools/deck/cb/deckturn.mjs index 828688c..efbe12f 100644 --- a/tools/deck/cb/deckturn.mjs +++ b/tools/deck/cb/deckturn.mjs @@ -68,23 +68,68 @@ if allDeckClose ~= nil and (allDeckClose.ButtonComponent ~= nil or allDeckClose: allDeckClose:DisconnectEvent(ButtonClickEvent, self.AllDeckCloseHandler) self.AllDeckCloseHandler = nil end - self.AllDeckCloseHandler = allDeckClose:ConnectEvent(ButtonClickEvent, function() self:CloseAllDeck() end) +self.AllDeckCloseHandler = allDeckClose:ConnectEvent(ButtonClickEvent, function() self:CloseAllDeck() end) end self:BindClassDeckTabs() +local allDeckGrid = _EntityService:GetEntityByPath("/ui/DeckUIGroup/DeckAllHud/Grid") +if allDeckGrid ~= nil and (allDeckGrid.UITouchReceiveComponent ~= nil or allDeckGrid:AddComponent("UITouchReceiveComponent") ~= nil) then + allDeckGrid:ConnectEvent(UITouchEnterEvent, function(ev) self.GridScrollActive = false; self:HoverGridCard("/ui/DeckUIGroup/DeckAllHud/Grid", ev.TouchPoint) end) + allDeckGrid:ConnectEvent(UITouchDownEvent, function(ev) self.GridScrollActive = false; self:HoverGridCard("/ui/DeckUIGroup/DeckAllHud/Grid", ev.TouchPoint) end) + allDeckGrid:ConnectEvent(UITouchDragEvent, function(ev) self.GridScrollActive = true; self:UnhoverGridCard("/ui/DeckUIGroup/DeckAllHud/Grid") end) + allDeckGrid:ConnectEvent(UITouchEndDragEvent, function() self.GridScrollActive = false end) + allDeckGrid:ConnectEvent(UITouchExitEvent, function() self.GridScrollActive = false; self:UnhoverGridCard("/ui/DeckUIGroup/DeckAllHud/Grid") end) +end for i = 1, 120 do - local allCard = _EntityService:GetEntityByPath("/ui/DeckUIGroup/DeckAllHud/Grid/Card" .. tostring(i)) + local allCard = _EntityService:GetEntityByPath("/ui/DeckUIGroup/DeckAllHud/Grid/Card" .. self:IntStr(i)) if allCard ~= nil and (allCard.ButtonComponent ~= nil or allCard:AddComponent("ButtonComponent") ~= nil) then if allCard.SpriteGUIRendererComponent ~= nil then allCard.SpriteGUIRendererComponent.RaycastTarget = true end local slot = i + local cardPath = "/ui/DeckUIGroup/DeckAllHud/Grid/Card" .. self:IntStr(i) + allCard:ConnectEvent(ButtonStateChangeEvent, function(ev) + local state = nil + if ev ~= nil then + state = ev.CurrentState or ev.ButtonState or ev.State + end + if state == ButtonState.Highlighted or state == ButtonState.Pressed or tostring(state) == "1" or tostring(state) == "2" then + self:HoverCardByPath(cardPath) + else + self:UnhoverCardByPath(cardPath) + end + end) allCard:ConnectEvent(ButtonClickEvent, function() self:OnAllDeckCardButton(slot) end) end end +local inspectGrid = _EntityService:GetEntityByPath("/ui/DeckUIGroup/DeckInspectHud/Grid") +if inspectGrid ~= nil and (inspectGrid.UITouchReceiveComponent ~= nil or inspectGrid:AddComponent("UITouchReceiveComponent") ~= nil) then + inspectGrid:ConnectEvent(UITouchEnterEvent, function(ev) self.GridScrollActive = false; self:HoverGridCard("/ui/DeckUIGroup/DeckInspectHud/Grid", ev.TouchPoint) end) + inspectGrid:ConnectEvent(UITouchDownEvent, function(ev) self.GridScrollActive = false; self:HoverGridCard("/ui/DeckUIGroup/DeckInspectHud/Grid", ev.TouchPoint) end) + inspectGrid:ConnectEvent(UITouchDragEvent, function(ev) self.GridScrollActive = true; self:UnhoverGridCard("/ui/DeckUIGroup/DeckInspectHud/Grid") end) + inspectGrid:ConnectEvent(UITouchEndDragEvent, function() self.GridScrollActive = false end) + inspectGrid:ConnectEvent(UITouchExitEvent, function() self.GridScrollActive = false; self:UnhoverGridCard("/ui/DeckUIGroup/DeckInspectHud/Grid") end) +end +for i = 1, 60 do + local inspectCard = _EntityService:GetEntityByPath("/ui/DeckUIGroup/DeckInspectHud/Grid/Card" .. self:IntStr(i)) + if inspectCard ~= nil and (inspectCard.ButtonComponent ~= nil or inspectCard:AddComponent("ButtonComponent") ~= nil) then + local cardPath = "/ui/DeckUIGroup/DeckInspectHud/Grid/Card" .. self:IntStr(i) + inspectCard:ConnectEvent(ButtonStateChangeEvent, function(ev) + local state = nil + if ev ~= nil then + state = ev.CurrentState or ev.ButtonState or ev.State + end + if state == ButtonState.Highlighted or state == ButtonState.Pressed or tostring(state) == "1" or tostring(state) == "2" then + self:HoverCardByPath(cardPath) + else + self:UnhoverCardByPath(cardPath) + end + end) + end +end for i = 1, 10 do - local cardEntity = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. tostring(i)) + local cardEntity = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. self:IntStr(i)) if cardEntity ~= nil and cardEntity.UITouchReceiveComponent ~= nil then - local cardPath = "/ui/RunUIGroup/CardHand/Card" .. tostring(i) + local cardPath = "/ui/RunUIGroup/CardHand/Card" .. self:IntStr(i) cardEntity:ConnectEvent(UITouchEnterEvent, function() self:SetCardHover(cardPath, true) end) cardEntity:ConnectEvent(UITouchExitEvent, function() self:SetCardHover(cardPath, false) end) cardEntity:ConnectEvent(UITouchBeginDragEvent, function(ev) self:OnCardDragBegin(i) end) @@ -98,13 +143,15 @@ for i = 1, 10 do end end for i = 1, 3 do - local rc = _EntityService:GetEntityByPath("/ui/RunUIGroup/RewardHud/Reward" .. tostring(i)) + local rc = _EntityService:GetEntityByPath("/ui/RunUIGroup/RewardHud/Reward" .. self:IntStr(i)) if rc ~= nil and (rc.ButtonComponent ~= nil or rc:AddComponent("ButtonComponent") ~= nil) then rc:ConnectEvent(ButtonClickEvent, function() self:PickReward(i) end) if rc.UITouchReceiveComponent ~= nil then - local cardPath = "/ui/RunUIGroup/RewardHud/Reward" .. tostring(i) + local cardPath = "/ui/RunUIGroup/RewardHud/Reward" .. self:IntStr(i) rc:ConnectEvent(UITouchEnterEvent, function() self:SetCardHover(cardPath, true) end) rc:ConnectEvent(UITouchExitEvent, function() self:SetCardHover(cardPath, false) end) + rc:ConnectEvent(UITouchEnterEvent, function() self:HoverCardByPath(cardPath) end) + rc:ConnectEvent(UITouchExitEvent, function() self:UnhoverCardByPath(cardPath) end) end end end @@ -127,13 +174,15 @@ for i = 1, #mapNodeIds do end end for i = 1, 3 do - local sc = _EntityService:GetEntityByPath("/ui/RunUIGroup/ShopHud/Card" .. tostring(i)) + local sc = _EntityService:GetEntityByPath("/ui/RunUIGroup/ShopHud/Card" .. self:IntStr(i)) if sc ~= nil and (sc.ButtonComponent ~= nil or sc:AddComponent("ButtonComponent") ~= nil) then sc:ConnectEvent(ButtonClickEvent, function() self:BuyCard(i) end) if sc.UITouchReceiveComponent ~= nil then - local cardPath = "/ui/RunUIGroup/ShopHud/Card" .. tostring(i) + local cardPath = "/ui/RunUIGroup/ShopHud/Card" .. self:IntStr(i) sc:ConnectEvent(UITouchEnterEvent, function() self:SetCardHover(cardPath, true) end) sc:ConnectEvent(UITouchExitEvent, function() self:SetCardHover(cardPath, false) end) + sc:ConnectEvent(UITouchEnterEvent, function() self:HoverCardByPath(cardPath) end) + sc:ConnectEvent(UITouchExitEvent, function() self:UnhoverCardByPath(cardPath) end) end end end @@ -150,13 +199,13 @@ if restLeave ~= nil and (restLeave.ButtonComponent ~= nil or restLeave:AddCompon restLeave:ConnectEvent(ButtonClickEvent, function() self:LeaveNode() end) end for i = 1, ${MAX_MONSTERS} do - local ms = _EntityService:GetEntityByPath("/ui/RunUIGroup/CombatHud/MonsterStatus" .. tostring(i)) + local ms = _EntityService:GetEntityByPath("/ui/RunUIGroup/CombatHud/MonsterStatus" .. self:IntStr(i)) if ms ~= nil and (ms.ButtonComponent ~= nil or ms:AddComponent("ButtonComponent") ~= nil) then ms:ConnectEvent(ButtonClickEvent, function() self:SetTarget(i) end) end end for i = 1, 10 do - local rs = _EntityService:GetEntityByPath("/ui/RunUIGroup/CombatHud/TopBar/RelicSlot" .. tostring(i)) + local rs = _EntityService:GetEntityByPath("/ui/RunUIGroup/CombatHud/TopBar/RelicSlot" .. self:IntStr(i)) if rs ~= nil and rs.UITouchReceiveComponent ~= nil then local idx = i rs:ConnectEvent(UITouchEnterEvent, function() @@ -170,7 +219,7 @@ for i = 1, 10 do end end for i = 1, 5 do - local ps = _EntityService:GetEntityByPath("/ui/RunUIGroup/CombatHud/TopBar/PotionSlot" .. tostring(i)) + local ps = _EntityService:GetEntityByPath("/ui/RunUIGroup/CombatHud/TopBar/PotionSlot" .. self:IntStr(i)) if ps ~= nil and ps.UITouchReceiveComponent ~= nil then local idx = i ps:ConnectEvent(UITouchEnterEvent, function() @@ -218,7 +267,7 @@ if jcJob ~= nil and (jcJob.ButtonComponent ~= nil or jcJob:AddComponent("ButtonC end for i = 1, 3 do local slotIdx = i - local jb = _EntityService:GetEntityByPath("/ui/SelectUIGroup/JobSelectHud/Job_slot" .. tostring(i)) + local jb = _EntityService:GetEntityByPath("/ui/SelectUIGroup/JobSelectHud/Job_slot" .. self:IntStr(i)) if jb ~= nil and (jb.ButtonComponent ~= nil or jb:AddComponent("ButtonComponent") ~= nil) then jb:ConnectEvent(ButtonClickEvent, function() if self.JobOpts ~= nil and self.JobOpts[slotIdx] ~= nil then @@ -243,6 +292,7 @@ self.BlockGainMultiplier = 1 self:ApplyRelics("turnStart") if self.NextTurnKeepBlock == true then self.NextTurnKeepBlock = false +elseif self:HasPowerEffect("keepBlock") == true then else self.PlayerBlock = 0 end @@ -258,6 +308,7 @@ self.ActiveAttackDamageVsWeakMultiplier = 1 self.DrawDamageThisTurn = 0 self.DrawPoisonThisTurn = 0 self.ShivAoeThisCombat = false +self.ZeroCostCardIdsThisTurn = {} self.SkillSlyOnPlayCards = self.SkillSlyOnPlayCards or {} self.TurnSkillSlyCards = {} self.EnemyStrengthLossThisTurn = 0 @@ -275,6 +326,7 @@ if self.PlayerPowers ~= nil then self.Energy = self.Energy + pc.value elseif pc.powerEffect == "blockPerTurn" then self.PlayerBlock = self.PlayerBlock + pc.value + elseif pc.powerEffect == "keepBlock" then elseif pc.powerEffect == "poisonPerTurn" then if self.Monsters ~= nil then for j = 1, #self.Monsters do @@ -288,6 +340,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) @@ -316,7 +370,7 @@ if self.NextTurnAddCards ~= nil then end local drawN = 5 + (self.NextTurnDraw or 0) + powerTurnDraw self.NextTurnDraw = 0 -self:DrawCards(drawN) +self:DrawCards(drawN, true) self:RenderHand(true) self:RenderCombat() if powerTurnDiscard > 0 then @@ -481,8 +535,11 @@ for i = 1, amount do \t\tself:TriggerSly(cardId) \telse \t\ttable.insert(self.Hand, cardId) -\t\tdrewAny = true -\t\ttable.insert(drawnSlots, #self.Hand) +\t\tlocal autoPlayed = self:TriggerDrawnCardAutoPlay(cardId) +\t\tif autoPlayed ~= true then +\t\t\tdrewAny = true +\t\t\ttable.insert(drawnSlots, #self.Hand) +\t\tend \tend end self:RenderPiles() @@ -495,8 +552,9 @@ if animate == true and #drawnSlots > 0 then \t\tlocal slot = drawnSlots[i] \t\tself:AnimateCardFrom(slot, drawStart, Vector2(self:GetHandSlotX(slot), 0), 0.08 + i * 0.045) \tend +end return drawnCards -end`, [ +`, [ { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'amount' }, { Type: 'boolean', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'animate' }, ], 0, 'any'), diff --git a/tools/deck/cb/deckview.mjs b/tools/deck/cb/deckview.mjs index 7f9ce33..8b00ef8 100644 --- a/tools/deck/cb/deckview.mjs +++ b/tools/deck/cb/deckview.mjs @@ -44,7 +44,7 @@ end self:SetText("/ui/DeckUIGroup/DeckInspectHud/Title", title .. suffix) self:SetEntityEnabled("/ui/DeckUIGroup/DeckInspectHud/Empty", count <= 0) for i = 1, 60 do - local path = "/ui/DeckUIGroup/DeckInspectHud/Grid/Card" .. tostring(i) + local path = "/ui/DeckUIGroup/DeckInspectHud/Grid/Card" .. self:IntStr(i) local cardId = nil if pile ~= nil then cardId = pile[i] @@ -59,7 +59,7 @@ end`, [ { Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'pile' }, { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'title' }, ]), - method('ApplyInspectCardVisual', `self:ApplyCardFace("/ui/DeckUIGroup/DeckInspectHud/Grid/Card" .. tostring(slot), cardId)`, [ + method('ApplyInspectCardVisual', `self:ApplyCardFace("/ui/DeckUIGroup/DeckInspectHud/Grid/Card" .. self:IntStr(slot), cardId)`, [ { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }, { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'cardId' }, ]), @@ -227,7 +227,7 @@ self:SetText("/ui/DeckUIGroup/DeckAllHud/Title", title .. " (" .. tostring(count self:RenderClassDeckTabs() self:SetEntityEnabled("/ui/DeckUIGroup/DeckAllHud/Empty", count <= 0) for i = 1, 120 do - local path = "/ui/DeckUIGroup/DeckAllHud/Grid/Card" .. tostring(i) + local path = "/ui/DeckUIGroup/DeckAllHud/Grid/Card" .. self:IntStr(i) local cardId = pile[i] if cardId == nil then self:SetEntityEnabled(path, false) @@ -236,7 +236,7 @@ for i = 1, 120 do self:ApplyAllDeckCardVisual(i, cardId) end end`), - method('ApplyAllDeckCardVisual', `self:ApplyCardFace("/ui/DeckUIGroup/DeckAllHud/Grid/Card" .. tostring(slot), cardId)`, [ + method('ApplyAllDeckCardVisual', `self:ApplyCardFace("/ui/DeckUIGroup/DeckAllHud/Grid/Card" .. self:IntStr(slot), cardId)`, [ { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }, { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'cardId' }, ]), diff --git a/tools/deck/cb/hand.mjs b/tools/deck/cb/hand.mjs index 926ddb2..183a425 100644 --- a/tools/deck/cb/hand.mjs +++ b/tools/deck/cb/hand.mjs @@ -56,7 +56,7 @@ if n > 8 then spacing = math.floor(1400 / n) end local startX = -((n - 1) * spacing) / 2 local drawStart = Vector2(-590, 8) for i = 1, 10 do -\tlocal cardEntity = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. tostring(i)) +\tlocal cardEntity = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. self:IntStr(i)) \tif cardEntity ~= nil then \t\tlocal cardId = self.Hand[i] \t\tif cardId == nil then @@ -151,7 +151,7 @@ if self.CardHoverTweenId ~= nil and self.CardHoverTweenId ~= 0 then end local items = {} for i = 1, count do - local e = _EntityService:GetEntityByPath(prefix .. tostring(i)) + local e = _EntityService:GetEntityByPath(prefix .. self:IntStr(i)) if e ~= nil and e.UITransformComponent ~= nil then local tr = e.UITransformComponent local tx = xs[i] @@ -195,7 +195,7 @@ self.CardHoverTweenId = eventId`, [ { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'path' }, { Type: 'boolean', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'hover' }, ]), - method('ApplyCardVisual', `self:ApplyCardFace("/ui/RunUIGroup/CardHand/Card" .. tostring(slot), cardId)`, [ + method('ApplyCardVisual', `self:ApplyCardFace("/ui/RunUIGroup/CardHand/Card" .. self:IntStr(slot), cardId)`, [ { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }, { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'cardId' }, ]), @@ -217,7 +217,7 @@ if math.abs(n - math.floor(n)) < 0.00001 then return string.format("%d", math.floor(n)) end return tostring(n)`, [{ Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'value' }], 0, 'string'), - method('AnimateCardFrom', `local cardEntity = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. tostring(slot)) + method('AnimateCardFrom', `local cardEntity = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. self:IntStr(slot)) if cardEntity == nil or cardEntity.UITransformComponent == nil then \treturn end @@ -246,10 +246,10 @@ local target = Vector2(590, 8) local duration = 0.18 for i = 1, #cardIds do \tlocal slot = slots[i] or i -\tlocal e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. tostring(slot)) +\tlocal e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. self:IntStr(slot)) \tif e ~= nil then \t\te.Enable = true -\t\tself:ApplyCardFace("/ui/RunUIGroup/CardHand/Card" .. tostring(slot), cardIds[i]) +\t\tself:ApplyCardFace("/ui/RunUIGroup/CardHand/Card" .. self:IntStr(slot), cardIds[i]) \t\tif e.UITransformComponent ~= nil then \t\t\tlocal sx = 0 \t\t\tif startXs ~= nil and startXs[i] ~= nil then sx = startXs[i] else sx = self:GetHandSlotX(slot) end @@ -266,7 +266,7 @@ eventId = _TimerService:SetTimerRepeat(function() \tlocal eased = _TweenLogic:Ease(0, 1, 1, EaseType.SineEaseIn, t) \tfor i = 1, #cardIds do \t\tlocal slot = slots[i] or i -\t\tlocal e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. tostring(slot)) +\t\tlocal e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. self:IntStr(slot)) \t\tif e ~= nil and e.UITransformComponent ~= nil then \t\t\tlocal sx = 0 \t\t\tif startXs ~= nil and startXs[i] ~= nil then sx = startXs[i] else sx = self:GetHandSlotX(slot) end @@ -281,7 +281,7 @@ eventId = _TimerService:SetTimerRepeat(function() \t\t_TimerService:ClearTimer(eventId) \t\tfor i = 1, #cardIds do \t\t\tlocal slot = slots[i] or i -\t\t\tlocal e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. tostring(slot)) +\t\t\tlocal e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. self:IntStr(slot)) \t\t\tif e ~= nil then \t\t\t\tif self.Hand ~= nil and self.Hand[slot] ~= nil then \t\t\t\t\te.Enable = true @@ -313,6 +313,108 @@ if amount < 0 then end self.PlayerBlock = self.PlayerBlock + amount return amount`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'base' }], 0, 'number'), + method('RunAttackSequence', `if hitDamages == nil or #hitDamages <= 0 then + return +end +local function countAliveMonsters() + local n = 0 + if self.Monsters ~= nil then + for mi = 1, #self.Monsters do + local om = self.Monsters[mi] + if om ~= nil and om.alive == true then + n = n + 1 + end + end + end + return n +end +local function randomAliveMonsterIndex() + local alive = {} + if self.Monsters ~= nil then + for mi = 1, #self.Monsters do + local om = self.Monsters[mi] + if om ~= nil and om.alive == true then + table.insert(alive, mi) + end + end + end + if #alive <= 0 then + return 0 + end + return alive[math.random(1, #alive)] +end +self.FxBusy = true +local hitIndex = 1 +local lockedTargetIndex = self.TargetIndex or 0 +local function finishSequence() + self.FxBusy = false + self.ActiveAttackDamageVsWeakMultiplier = 1 + self:RenderCombat() + self:CheckCombatEnd() +end +local function step() + if self.CombatOver == true then + finishSequence() + return + end + if countAliveMonsters() <= 0 then + finishSequence() + return + end + if hitIndex == 1 then + self.DamageDealtThisTurn = (self.DamageDealtThisTurn or 0) + (roundPlannedDamage or 0) + end + local roundKilled = false + if useAoe == true then + roundKilled = self:DealDamageToAllMonsters(hitDamages[hitIndex] or 0, true) + else + local targetIdx = lockedTargetIndex + if randomTargetEachHit == true then + targetIdx = randomAliveMonsterIndex() + end + if targetIdx ~= nil and targetIdx > 0 then + if randomTargetEachHit ~= true then + local lockedMonster = nil + if self.Monsters ~= nil then + lockedMonster = self.Monsters[targetIdx] + end + if lockedMonster == nil or lockedMonster.alive ~= true then + finishSequence() + return + end + end + local prev = self.TargetIndex + self.TargetIndex = targetIdx + roundKilled = self:DealDamageToTarget(hitDamages[hitIndex] or 0, pierce == true) + self.TargetIndex = prev + end + end + self:RenderCombat() + self:CheckCombatEnd() + hitIndex = hitIndex + 1 + if self.CombatOver == true then + finishSequence() + return + end + if hitIndex <= #hitDamages then + _TimerService:SetTimerOnce(step, 0.2) + return + end + if repeatOnKill == true and roundKilled == true and countAliveMonsters() > 0 then + hitIndex = 1 + _TimerService:SetTimerOnce(step, 0.2) + return + end + finishSequence() +end +step()`, [ + { Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'hitDamages' }, + { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'roundPlannedDamage' }, + { Type: 'boolean', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'useAoe' }, + { Type: 'boolean', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'randomTargetEachHit' }, + { Type: 'boolean', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'pierce' }, + { Type: 'boolean', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'repeatOnKill' }, + ]), method('CountOtherHandSkills', `if self.Hand == nil then return 0 end @@ -326,7 +428,104 @@ for i = 1, #self.Hand do end end return n`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }], 0, 'number'), + method('CountOwnedNameMatches', `if match == nil or match == "" then + return 0 +end +local n = 0 +local function countPile(pile) + if pile == nil then return end + for i = 1, #pile do + local c2 = self.Cards[pile[i]] + local name = "" + if c2 ~= nil and c2.name ~= nil then name = c2.name end + if string.find(name, match, 1, true) ~= nil then + n = n + 1 + end + end +end +countPile(self.Hand) +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 +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 @@ -365,6 +564,200 @@ return base2`, [ { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }, { Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'c' }, ], 0, 'number'), + method('TriggerExhaustEffects', `if count == nil or count <= 0 then + return +end +local drawOnExhaust = self:AddPowerFieldTotal("drawOnExhaust") +if drawOnExhaust ~= nil and drawOnExhaust > 0 then + self:DrawCards(drawOnExhaust * count, true) +end`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'count' }]), + method('MarkCardCostZeroThisTurn', `if cardId == nil or cardId == "" then + return +end +if self.ZeroCostCardIdsThisTurn == nil then + self.ZeroCostCardIdsThisTurn = {} +end +self.ZeroCostCardIdsThisTurn[cardId] = true`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'cardId' }]), + method('AutoPlayCardId', `local c = self.Cards[cardId] +if c == nil then + return false +end +local spent = energySpent or 0 +local skillFree = false +local skillRepeat = 0 +if c.kind == "Skill" and c.useAllEnergy ~= true and self.NextSkillCostZero == true then + skillFree = true +end +if c.kind == "Skill" and self.NextSkillRepeatCount ~= nil and self.NextSkillRepeatCount > 0 then + skillRepeat = self.NextSkillRepeatCount +end +self.ActiveKillReward = c.rewardOnKill or 0 +self.ActiveKillMaxHpGain = c.maxHpOnKill or 0 +self:ResolveCardEffects(cardId, 0, c, false, spent) +local function applyCardPlayHooks() + if self:HasPowerField("cardPlayedBlock") == true then + self:AddCardBlock(self:AddPowerFieldTotal("cardPlayedBlock")) + end + if c.cardPlayedDamage ~= nil and c.cardPlayedDamage > 0 then + self:DealDirectDamageToTarget(c.cardPlayedDamage) + end + 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 + local remaining = (self.NextSkillRepeatCount or 0) - skillRepeat + if remaining < 0 then remaining = 0 end + self.NextSkillRepeatCount = remaining + for i = 1, skillRepeat do + self:ResolveCardEffects(cardId, 0, c, false, spent) + applyCardPlayHooks() + end +end +if c.kind == "Attack" then + self.TurnAttackCardsPlayed = (self.TurnAttackCardsPlayed or 0) + 1 +end +if skillFree == true and c.nextSkillCostZero ~= true then + self.NextSkillCostZero = false +end +if c.exhaust == true then + if self.ExhaustPile == nil then self.ExhaustPile = {} end + table.insert(self.ExhaustPile, cardId) + self:TriggerExhaustEffects(1) +elseif c.kind ~= "Power" then + table.insert(self.DiscardPile, cardId) +end +if self.ActiveKillReward ~= nil and self.ActiveKillReward <= 0 then + self.ActiveKillReward = 0 +end +if self.ActiveKillMaxHpGain ~= nil and self.ActiveKillMaxHpGain <= 0 then + self.ActiveKillMaxHpGain = 0 +end +return true`, [ + { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'cardId' }, + { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'energySpent' }, + ], 0, 'boolean'), + method('TriggerDrawnCardAutoPlay', `if cardId == nil or cardId == "" or self.Hand == nil or self.PlayerPowers == nil then + return false +end +local c = self.Cards[cardId] +if c == nil or c.name == nil or c.name == "" then + return false +end +for i = 1, #self.PlayerPowers do + local powerCard = self.Cards[self.PlayerPowers[i]] + if powerCard ~= nil and powerCard.drawNameMatchAutoPlay ~= nil and powerCard.drawNameMatchAutoPlay ~= "" then + if string.find(c.name, powerCard.drawNameMatchAutoPlay, 1, true) ~= nil then + local foundSlot = 0 + for hi = 1, #self.Hand do + if self.Hand[hi] == cardId then + foundSlot = hi + break + end + end + if foundSlot <= 0 then + return false + end + table.remove(self.Hand, foundSlot) + self:AutoPlayCardId(cardId, 0) + return true + end + end +end +return false`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'cardId' }], 0, 'boolean'), + method('PlayTopDrawPileCards', `if c == nil or self.DrawPile == nil then + return 0 +end +local count = c.playTopDrawPileCount or 0 +if c.playTopDrawPileCountPerEnergy ~= nil and c.playTopDrawPileCountPerEnergy > 0 then + count = count + ((energySpent or 0) * c.playTopDrawPileCountPerEnergy) +end +if count <= 0 then + return 0 +end +local played = 0 +for i = 1, count do + if #self.DrawPile <= 0 then + break + end + local topCardId = table.remove(self.DrawPile) + if topCardId ~= nil then + self:AutoPlayCardId(topCardId, 0) + played = played + 1 + end +end +return played`, [ + { Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'c' }, + { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'energySpent' }, + ], 0, 'number'), + method('AddRandomCardsFromEffect', `if c == nil or count == nil or count <= 0 then + return 0 +end +local pool = {} +for id, rc in pairs(self.Cards) do + if rc ~= nil and rc.token ~= true and rc.curse ~= true and rc.unplayable ~= true then + local ok = true + if c.addRandomCardKind ~= nil and rc.kind ~= c.addRandomCardKind then ok = false end + if c.addRandomCardSameClass == true and rc.class ~= c.class then ok = false end + if ok == true then table.insert(pool, id) end + end +end +if #pool <= 0 then + return 0 +end +local added = 0 +for i = 1, count do + local cardId2 = pool[math.random(1, #pool)] + if cardId2 ~= nil then + self:AddCardsToHand(cardId2, 1) + if c.addedCardsCostZeroThisTurn == true then + self:MarkCardCostZeroThisTurn(cardId2) + end + added = added + 1 + end +end +return added`, [ + { Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'c' }, + { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'count' }, + ], 0, 'number'), + method('ExhaustHandNonAttack', `if c == nil or c.exhaustHandNonAttack ~= true or self.Hand == nil or #self.Hand <= 0 then + return 0 +end +local exhausted = 0 +for i = #self.Hand, 1, -1 do + local cardId2 = self.Hand[i] + local hc = self.Cards[cardId2] + if hc == nil or hc.kind ~= "Attack" then + table.remove(self.Hand, i) + if self.ExhaustPile == nil then self.ExhaustPile = {} end + table.insert(self.ExhaustPile, cardId2) + exhausted = exhausted + 1 + end +end +if exhausted > 0 then + if c.blockPerExhaustedCard ~= nil and c.blockPerExhaustedCard > 0 then + self:AddCardBlock(exhausted * c.blockPerExhaustedCard) + end + self:TriggerExhaustEffects(exhausted) +end +return exhausted`, [{ Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'c' }], 0, 'number'), + method('ExhaustHandAll', `if c == nil or c.exhaustHandAll ~= true or self.Hand == nil or #self.Hand <= 0 then + return 0 +end +local exhausted = 0 +while #self.Hand > 0 do + local cardId2 = table.remove(self.Hand) + if self.ExhaustPile == nil then self.ExhaustPile = {} end + table.insert(self.ExhaustPile, cardId2) + exhausted = exhausted + 1 +end +if exhausted > 0 then + self:TriggerExhaustEffects(exhausted) +end +return exhausted`, [{ Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'c' }], 0, 'number'), method('CalcPlayerAttack', `local base2 = base self.FightAttackCount = self.FightAttackCount + 1 if self.FightAttackCount == 1 and self:HasRelic("akabeko") then @@ -485,14 +878,15 @@ if c.xWeakPerEnergy ~= nil and c.xWeakPerEnergy > 0 then weakAmount = weakAmount + xEnergy * c.xWeakPerEnergy end if c.kind == "Attack" then - if c.damage ~= nil or c.xDamagePerEnergy ~= nil 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 local total = 0 + local hitDamages = {} local hitN = c.hits or 1 if c.otherHandAtLeast ~= nil and c.bonusHitsWhenOtherHandAtLeast ~= nil then local otherHand = 0 @@ -505,7 +899,9 @@ if c.kind == "Attack" then end end for h = 1, hitN do - total = total + self:CalcPlayerAttack(baseDmg) + local hitDamage = self:CalcPlayerAttack(baseDmg) + hitDamages[h] = hitDamage + total = total + hitDamage end local useAoe = c.aoe == true if c.class == "shiv" and (self.ShivAoeThisCombat == true or self:HasPowerField("shivAoe") == true) then @@ -514,70 +910,17 @@ if c.kind == "Attack" then if c.class == "shiv" and self.ShivFirstDamageBonusUsed ~= true and self:HasPowerField("firstShivDamageBonus") == true then self.ShivFirstDamageBonusUsed = true end - local function countAliveMonsters() - local n = 0 - if self.Monsters ~= nil then - for mi = 1, #self.Monsters do - local om = self.Monsters[mi] - if om ~= nil and om.alive == true then n = n + 1 end - end - end - return n - end - local function randomAliveMonsterIndex() - local alive = {} - if self.Monsters ~= nil then - for mi = 1, #self.Monsters do - local om = self.Monsters[mi] - if om ~= nil and om.alive == true then - table.insert(alive, mi) - end - end - end - if #alive <= 0 then - return 0 - end - return alive[math.random(1, #alive)] - end - local function resolveAttackRound() - local roundKilled = false - if useAoe == true then - local killed = self:DealDamageToAllMonsters(total, true) - if killed == true then roundKilled = true end - elseif c.randomTargetEachHit == true then - for h = 1, hitN do - local targetIdx = randomAliveMonsterIndex() - if targetIdx ~= nil and targetIdx > 0 then - local prev = self.TargetIndex - self.TargetIndex = targetIdx - local killed = self:DealDamageToTarget(math.floor(total / hitN), c.pierce == true) - self.TargetIndex = prev - if killed == true then roundKilled = true end - end - end - else - local killed = self:DealDamageToTarget(total, c.pierce == true) - if killed == true then roundKilled = true end - end - return roundKilled - end - local totalDamage = 0 - local roundKilled = false - repeat - roundKilled = resolveAttackRound() - totalDamage = totalDamage + total - until c.repeatOnKill ~= true or roundKilled ~= true or countAliveMonsters() <= 0 - self.DamageDealtThisTurn = (self.DamageDealtThisTurn or 0) + totalDamage + self:RunAttackSequence(hitDamages, total, useAoe, c.randomTargetEachHit == true, c.pierce == true, c.repeatOnKill == true) 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 @@ -597,11 +940,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 @@ -719,6 +1070,23 @@ if c.drawSkillBlock ~= nil and c.drawSkillBlock > 0 then end if c.addShiv ~= nil and c.discard == nil and c.discardAll ~= true then self:AddCardsToHand("Shiv", c.addShiv) +end +local exhaustedNonAttack = self:ExhaustHandNonAttack(c) +local exhaustedAll = self:ExhaustHandAll(c) +local totalExhausted = exhaustedNonAttack + exhaustedAll +if c.drawPerExhausted ~= nil and c.drawPerExhausted > 0 and totalExhausted > 0 then + self:DrawCards(totalExhausted * c.drawPerExhausted, true) +end +if c.addRandomCardCount ~= nil and c.addRandomCardCount > 0 then + self:AddRandomCardsFromEffect(c, c.addRandomCardCount) +end +if c.addRandomCardPerExhausted ~= nil and c.addRandomCardPerExhausted > 0 then + if totalExhausted > 0 then + self:AddRandomCardsFromEffect(c, totalExhausted * c.addRandomCardPerExhausted) + end +end +if (c.playTopDrawPileCount ~= nil and c.playTopDrawPileCount > 0) or (c.playTopDrawPileCountPerEnergy ~= nil and c.playTopDrawPileCountPerEnergy > 0) then + self:PlayTopDrawPileCards(c, xEnergy) end`, [ { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'cardId' }, { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }, diff --git a/tools/deck/cb/items.mjs b/tools/deck/cb/items.mjs index de45917..e7ead2c 100644 --- a/tools/deck/cb/items.mjs +++ b/tools/deck/cb/items.mjs @@ -25,7 +25,7 @@ for i = 1, #self.RunRelics do elseif r.effect == "strength" then self.PlayerStr = self.PlayerStr + r.value elseif r.effect == "draw" then - self:DrawCards(r.value) + self:DrawCards(r.value, true) self:RenderHand(false) elseif r.effect == "heal" or r.effect == "healOnAttack" or r.effect == "healOnWin" then self.PlayerHp = self.PlayerHp + r.value @@ -95,7 +95,7 @@ if self:AddPotion(pid) == true then self:Toast("물약 획득: " .. p.name) end`), method('RenderPotions', `for i = 1, 5 do - local base = "/ui/RunUIGroup/CombatHud/TopBar/PotionSlot" .. tostring(i) + local base = "/ui/RunUIGroup/CombatHud/TopBar/PotionSlot" .. self:IntStr(i) local e = _EntityService:GetEntityByPath(base) if e ~= nil and e.SpriteGUIRendererComponent ~= nil then local pid = nil @@ -188,7 +188,7 @@ if self.RunRelics ~= nil then count = #self.RunRelics end for i = 1, 10 do - local base = "/ui/RunUIGroup/CombatHud/TopBar/RelicSlot" .. tostring(i) + local base = "/ui/RunUIGroup/CombatHud/TopBar/RelicSlot" .. self:IntStr(i) local e = _EntityService:GetEntityByPath(base) if e ~= nil and e.SpriteGUIRendererComponent ~= nil then local rid = nil diff --git a/tools/deck/cb/jobs.mjs b/tools/deck/cb/jobs.mjs index f571268..db6f090 100644 --- a/tools/deck/cb/jobs.mjs +++ b/tools/deck/cb/jobs.mjs @@ -71,7 +71,7 @@ if opts == nil then end self.JobOpts = opts for i = 1, 3 do - local base = "/ui/SelectUIGroup/JobSelectHud/Job_slot" .. tostring(i) + local base = "/ui/SelectUIGroup/JobSelectHud/Job_slot" .. self:IntStr(i) local o = opts[i] if o ~= nil then self:SetEntityEnabled(base, true) diff --git a/tools/deck/cb/layout.mjs b/tools/deck/cb/layout.mjs index dac0bbb..e0374e9 100644 --- a/tools/deck/cb/layout.mjs +++ b/tools/deck/cb/layout.mjs @@ -14,7 +14,7 @@ end local worldPos = transform.WorldPosition local screen = _UILogic:WorldToScreenPosition(Vector2(worldPos.x, worldPos.y + ${HEAD_OFFSET_Y})) local uipos = _UILogic:ScreenToUIPosition(screen) -local slotEntity = _EntityService:GetEntityByPath("/ui/RunUIGroup/CombatHud/MonsterStatus" .. tostring(slot)) +local slotEntity = _EntityService:GetEntityByPath("/ui/RunUIGroup/CombatHud/MonsterStatus" .. self:IntStr(slot)) if slotEntity ~= nil and slotEntity.UITransformComponent ~= nil then slotEntity.UITransformComponent.anchoredPosition = uipos end`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }]), diff --git a/tools/deck/cb/map.mjs b/tools/deck/cb/map.mjs index 504423a..6aeedb3 100644 --- a/tools/deck/cb/map.mjs +++ b/tools/deck/cb/map.mjs @@ -162,7 +162,7 @@ if node ~= nil then end end for k = 1, 3 do - local d = _EntityService:GetEntityByPath("/ui/RunUIGroup/MapHud/Dot_" .. dotId .. "_" .. tostring(k)) + local d = _EntityService:GetEntityByPath("/ui/RunUIGroup/MapHud/Dot_" .. dotId .. "_" .. self:IntStr(k)) if d ~= nil then d.Enable = has if has == true and d.SpriteGUIRendererComponent ~= nil then diff --git a/tools/deck/cb/render.mjs b/tools/deck/cb/render.mjs index cff777d..25fd540 100644 --- a/tools/deck/cb/render.mjs +++ b/tools/deck/cb/render.mjs @@ -1,296 +1,467 @@ -import { method, RUN_LENGTH, GOLD_PER_WIN, CARD_PRICE, REST_HEAL, RELIC_PRICE, ACT_COUNT, ACT_MAPS, LOBBY_MAP, LOBBY_SPAWN } from '../lib/codeblock.mjs'; -import { CARDS, ENEMIES, CLASSES, JOBS, SOUL_UNLOCKS, CARDFRAMES, RARITIES, MAP_ROWS, MAP_COLS, CHEST_CLOSED_RUID, CHEST_OPEN_RUID, NODEICONS, CHARS, CAM, RELICS, POTIONS, luaSoulShopTable, frameRuid, luaFramesTable, luaNodeIconsTable, luaRelicsTable, luaPotionsTable, luaIntentsArray, luaEnemiesTable, luaStr, luaJobsTable, luaCardsTable, luaDeckTable } from '../lib/data.mjs'; -import { UI_FILE, COMMON_FILE, UI_ROOT, GENERATED_UI_SECTIONS, UI_APPEND_ORDER, DISABLED_STOCK_CONTROLS, TRANSPARENT, DARK, GOLD, ATTACK, DEFEND, SKILL, DAMAGE_DIGIT_RUIDS, DAMAGE_POP_MAX_DIGITS, DAMAGE_POP_DIGIT_W, DAMAGE_POP_DIGIT_H, DAMAGE_POP_DIGIT_SPACING, MAX_MONSTERS, HEAD_OFFSET_Y, HP_BAR_W, WHITE, CARD_NAME_TEXT, CARD_DESC_TEXT, cardFaceLayout, CARD_W, CARD_H, CARD_SPACING, CARD_XS, ALIGN_CENTER, ALIGN_BOTTOM_CENTER, guid, transform, sprite, button, text, scrollLayoutGroup, popupLayerFor, uiOrderFor, displayOrderFor, applySortingOverride, entity, uiPath, sectionRoot, isGeneratedUiEntity, appendUiSection } from '../lib/ui-helpers.mjs'; - -export const renderMethods = [ - method('BuffsLabel', `local parts = {} -if str ~= nil and str > 0 then table.insert(parts, "힘+" .. tostring(str)) end -if weak ~= nil and weak > 0 then table.insert(parts, "약화" .. tostring(weak)) end -if vuln ~= nil and vuln > 0 then table.insert(parts, "취약" .. tostring(vuln)) end -if poison ~= nil and poison > 0 then table.insert(parts, "독" .. tostring(poison)) end -return table.concat(parts, " ")`, [ - { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'str' }, - { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'weak' }, - { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'vuln' }, - { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'poison' }, - ], 0, 'string'), - method('RenderCombat', `for i = 1, ${MAX_MONSTERS} do - local base = "/ui/RunUIGroup/CombatHud/MonsterStatus" .. tostring(i) - local m = self.Monsters[i] - if m ~= nil and m.alive == true then - self:SetEntityEnabled(base, true) - self:SetText(base .. "/Name", m.name) - self:SetText(base .. "/Hp", string.format("%d", m.hp) .. "/" .. string.format("%d", m.maxHp)) - local intent = m.intents[m.intentIdx] - local t = "" - if intent ~= nil then - if intent.kind == "Attack" then - local atk = intent.value + m.str - if m.weak > 0 then atk = math.floor(atk * 0.75) end - if self.PlayerVuln > 0 then atk = math.floor(atk * 1.5) end - t = "공격 " .. tostring(atk) - elseif intent.kind == "Defend" then t = "방어 " .. tostring(intent.value) - elseif intent.kind == "Debuff" then - if intent.effect == "weak" then t = "약화 " .. tostring(intent.value) .. " 부여" - else t = "취약 " .. tostring(intent.value) .. " 부여" end - elseif intent.kind == "AddCard" then - t = "저주 카드 추가" - end - end - self:SetText(base .. "/Intent", t) - local dragActive = self.DragTargetIndex ~= nil and self.DragTargetIndex > 0 - local shownTarget = self.TargetIndex - if dragActive == true then shownTarget = self.DragTargetIndex end - self:SetEntityEnabled(base .. "/TargetMarker", i == shownTarget and dragActive) - self:SetEntityEnabled(base .. "/TargetMarker/Label", i == shownTarget and dragActive) - local intentEntity = _EntityService:GetEntityByPath(base .. "/Intent") - if intentEntity ~= nil and intentEntity.TextComponent ~= nil and intent ~= nil then - if intent.kind == "Attack" then - intentEntity.TextComponent.FontColor = Color(1, 0.45, 0.35, 1) - elseif intent.kind == "Debuff" then - intentEntity.TextComponent.FontColor = Color(0.8, 0.5, 1, 1) - elseif intent.kind == "AddCard" then - intentEntity.TextComponent.FontColor = Color(0.6, 0.85, 0.4, 1) - else - intentEntity.TextComponent.FontColor = Color(0.5, 0.75, 1, 1) - end - end - self:SetHpBar(base .. "/HpBarFill", m.hp, m.maxHp, ${HP_BAR_W}) - self:SetEntityEnabled(base .. "/BlockBadge", m.block > 0) - self:SetText(base .. "/BlockBadge/Value", string.format("%d", m.block)) - self:SetText(base .. "/Buffs", self:BuffsLabel(m.str, m.weak, m.vuln, m.poison or 0)) - else - self:SetEntityEnabled(base, false) - end -end -self:SetText("/ui/RunUIGroup/CombatHud/PlayerPanel/HpText", string.format("%d", self.PlayerHp) .. "/" .. string.format("%d", self.PlayerMaxHp)) -self:SetHpBar("/ui/RunUIGroup/CombatHud/PlayerPanel/HpBarFill", self.PlayerHp, self.PlayerMaxHp, 220) -self:SetEntityEnabled("/ui/RunUIGroup/CombatHud/PlayerPanel/BlockBadge", self.PlayerBlock > 0) -self:SetText("/ui/RunUIGroup/CombatHud/PlayerPanel/BlockBadge/Value", string.format("%d", self.PlayerBlock)) -local pb = self:BuffsLabel(self.PlayerStr, self.PlayerWeak, self.PlayerVuln, 0) -if self.PlayerIntangible ~= nil and self.PlayerIntangible > 0 then - if pb ~= "" then pb = pb .. " " end - pb = pb .. "불가침" .. tostring(self.PlayerIntangible) -end -if self.PlayerDex ~= nil and self.PlayerDex > 0 then - if pb ~= "" then pb = pb .. " " end - pb = pb .. "민첩+" .. tostring(self.PlayerDex) -end -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 - local names = {} - for i = 1, #self.PlayerPowers do - local pc = self.Cards[self.PlayerPowers[i]] - if pc ~= nil then table.insert(names, pc.name) end - end - if pb ~= "" then pb = pb .. " · " end - pb = pb .. table.concat(names, " ") -end -self:SetText("/ui/RunUIGroup/CombatHud/PlayerPanel/Buffs", pb) -self:RenderRun()`), - method('ShowDmgPop', `local slotKey = string.format("%d", math.floor(slot or 0)) -local base = "/ui/RunUIGroup/CombatHud/DmgPop" .. slotKey -local pop = _EntityService:GetEntityByPath(base) -if pop == nil then - return -end -self.DmgPopSeq = (self.DmgPopSeq or 0) + 1 -local popSeq = self.DmgPopSeq -self:SetText(base, "") -local damageDigitRuids = { ${DAMAGE_DIGIT_RUIDS.map(luaStr).join(', ')} } -local shown = tostring(math.max(0, math.floor(amount))) -if string.len(shown) > ${DAMAGE_POP_MAX_DIGITS} then - shown = string.sub(shown, 1, ${DAMAGE_POP_MAX_DIGITS}) -end -local digits = {} -for i = 1, string.len(shown) do - table.insert(digits, tonumber(string.sub(shown, i, i)) or 0) -end -local totalW = #digits * ${DAMAGE_POP_DIGIT_W} + math.max(0, #digits - 1) * ${DAMAGE_POP_DIGIT_SPACING} -local startX = -totalW / 2 + ${DAMAGE_POP_DIGIT_W} / 2 -for i = 1, ${DAMAGE_POP_MAX_DIGITS} do - self:SetEntityEnabled(base .. "/Digit" .. tostring(i), false) -end -for i = 1, ${DAMAGE_POP_MAX_DIGITS} do - local digitPath = base .. "/Digit" .. tostring(i) - local digitEntity = _EntityService:GetEntityByPath(digitPath) - if digitEntity ~= nil and digitEntity.SpriteGUIRendererComponent ~= nil then - if digits[i] ~= nil then - digitEntity.SpriteGUIRendererComponent.ImageRUID = damageDigitRuids[digits[i] + 1] - digitEntity.SpriteGUIRendererComponent.Color = Color(1, 1, 1, 1) - if digitEntity.UITransformComponent ~= nil then - digitEntity.UITransformComponent.anchoredPosition = Vector2(startX + (i - 1) * (${DAMAGE_POP_DIGIT_W} + ${DAMAGE_POP_DIGIT_SPACING}), 0) - end - self:SetEntityEnabled(digitPath, true) - else - self:SetEntityEnabled(digitPath, false) - end - end -end -local popPos = nil -local m = self.Monsters[slot] -if m ~= nil and m.entity ~= nil and isvalid(m.entity) and m.entity.TransformComponent ~= nil then - local wp = m.entity.TransformComponent.WorldPosition - local screen = _UILogic:WorldToScreenPosition(Vector2(wp.x, wp.y + ${HEAD_OFFSET_Y + 0.45})) - popPos = _UILogic:ScreenToUIPosition(screen) -else - local slotEntity = _EntityService:GetEntityByPath("/ui/RunUIGroup/CombatHud/MonsterStatus" .. slotKey) - if slotEntity ~= nil and slotEntity.UITransformComponent ~= nil then - local sp = slotEntity.UITransformComponent.anchoredPosition - popPos = Vector2(sp.x, sp.y + 76) - end -end -if pop ~= nil and pop.UITransformComponent ~= nil then - if popPos ~= nil then - pop.UITransformComponent.anchoredPosition = popPos - else - pop.UITransformComponent.anchoredPosition = Vector2(0, 120) - end -end -self:SetEntityEnabled(base, true) -for i = 1, 6 do - _TimerService:SetTimerOnce(function() - if self.DmgPopSeq ~= popSeq then - return - end - local p = _EntityService:GetEntityByPath(base) - if p ~= nil and p.UITransformComponent ~= nil then - local cur = p.UITransformComponent.anchoredPosition - p.UITransformComponent.anchoredPosition = Vector2(cur.x, cur.y + 7) - end - end, 0.045 * i) -end -_TimerService:SetTimerOnce(function() - if self.DmgPopSeq ~= popSeq then - return - end - self:SetEntityEnabled(base, false) -end, 0.48)`, [ - { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }, - { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'amount' }, - ]), - method('ShowPlayerDmgPop', `local base = "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop" -if amount > 0 then - self:SetText(base, "-" .. string.format("%d", amount)) -else - self:SetText(base, "막음") -end -self:SetEntityEnabled(base, true) -_TimerService:SetTimerOnce(function() self:SetEntityEnabled(base, false) end, 0.6)`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'amount' }]), - method('PlayerAttackMotion', `local lp = _UserService.LocalPlayer -if lp == nil then - return -end -if lp.StateComponent == nil then - return -end -pcall(function() lp.StateComponent:ChangeState("ATTACK") end) -_TimerService:SetTimerOnce(function() - if lp ~= nil and isvalid(lp) and lp.StateComponent ~= nil then - pcall(function() lp.StateComponent:ChangeState("IDLE") end) - end -end, 0.5)`), - method('PlayerHitMotion', `local lp = _UserService.LocalPlayer -if lp == nil then - return -end -if lp.StateComponent ~= nil then - pcall(function() lp.StateComponent:ChangeState("HIT") end) -end -local tr = lp.TransformComponent -if tr == nil then - return -end -local p = tr.Position -tr.Position = Vector3(p.x - 0.15, p.y, p.z) -_TimerService:SetTimerOnce(function() - if lp ~= nil and isvalid(lp) and lp.TransformComponent ~= nil then - lp.TransformComponent.Position = Vector3(p.x, p.y, p.z) - end -end, 0.15)`), - method('MonsterLunge', `local m = self.Monsters[idx] -if m == nil or m.alive ~= true or m.entity == nil or not isvalid(m.entity) then - return -end -if m.motionBusy == true then - return -end -m.motionBusy = true -local e = m.entity -local tr = e.TransformComponent -if tr == nil then - m.motionBusy = false - return -end -local p = tr.Position -tr.Position = Vector3(p.x - 0.35, p.y, p.z) -_TimerService:SetTimerOnce(function() - if isvalid(e) and e.TransformComponent ~= nil then - e.TransformComponent.Position = Vector3(p.x, p.y, p.z) - end - m.motionBusy = false -end, 0.18)`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'idx' }]), - method('MonsterHitMotion', `local m = self.Monsters[slot] -if m == nil or m.alive ~= true or m.entity == nil or not isvalid(m.entity) then - return -end -local e = m.entity -if m.hitClip ~= nil and e.SpriteRendererComponent ~= nil then - e.SpriteRendererComponent.SpriteRUID = m.hitClip - _TimerService:SetTimerOnce(function() - if isvalid(e) and e.SpriteRendererComponent ~= nil and m.alive == true and m.standClip ~= nil then - e.SpriteRendererComponent.SpriteRUID = m.standClip - end - end, 0.5) -else - if m.motionBusy == true then - return - end - m.motionBusy = true - local tr = e.TransformComponent - if tr == nil then - m.motionBusy = false - return - end - local p = tr.Position - local seq = { 0.12, -0.12, 0 } - for i = 1, #seq do - local dx = seq[i] - _TimerService:SetTimerOnce(function() - if isvalid(e) and e.TransformComponent ~= nil then - e.TransformComponent.Position = Vector3(p.x + dx, p.y, p.z) - end - if i == #seq then - m.motionBusy = false - end - end, 0.06 * i) - end -end`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }]), - method('SetHpBar', `local e = _EntityService:GetEntityByPath(path) -if e == nil or e.UITransformComponent == nil then - return -end -local ratio = 0 -if maxHp > 0 then ratio = hp / maxHp end -if ratio < 0 then ratio = 0 end -local w = width * ratio -e.UITransformComponent.RectSize = Vector2(w, 14)`, [ - { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'path' }, - { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'hp' }, - { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'maxHp' }, - { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'width' }, - ]), - method('SetTarget', `if self.Monsters[slot] ~= nil and self.Monsters[slot].alive == true then - self.TargetIndex = slot - self:RenderCombat() -end`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }]), - method('RenderRun', `local floorText = "막 " .. string.format("%d", self.Floor) .. "/" .. string.format("%d", self.RunLength) .. " · " .. string.format("%d", self.Depth) .. "층" -if self.AscensionLevel > 0 then - floorText = floorText .. " · 승천" .. string.format("%d", self.AscensionLevel) -end -self:SetText("/ui/RunUIGroup/CombatHud/TopBar/Floor", floorText) -self:SetText("/ui/RunUIGroup/CombatHud/TopBar/Gold", "메소 " .. string.format("%d", self.Gold))`), -]; +import { method, RUN_LENGTH, GOLD_PER_WIN, CARD_PRICE, REST_HEAL, RELIC_PRICE, ACT_COUNT, ACT_MAPS, LOBBY_MAP, LOBBY_SPAWN } from '../lib/codeblock.mjs'; +import { CARDS, ENEMIES, CLASSES, JOBS, SOUL_UNLOCKS, CARDFRAMES, RARITIES, MAP_ROWS, MAP_COLS, CHEST_CLOSED_RUID, CHEST_OPEN_RUID, NODEICONS, CHARS, CAM, RELICS, POTIONS, luaSoulShopTable, frameRuid, luaFramesTable, luaNodeIconsTable, luaRelicsTable, luaPotionsTable, luaIntentsArray, luaEnemiesTable, luaStr, luaJobsTable, luaCardsTable, luaDeckTable } from '../lib/data.mjs'; +import { UI_FILE, COMMON_FILE, UI_ROOT, GENERATED_UI_SECTIONS, UI_APPEND_ORDER, DISABLED_STOCK_CONTROLS, TRANSPARENT, DARK, GOLD, ATTACK, DEFEND, SKILL, DAMAGE_DIGIT_RUIDS, DAMAGE_POP_MAX_DIGITS, DAMAGE_POP_DIGIT_W, DAMAGE_POP_DIGIT_H, DAMAGE_POP_DIGIT_SPACING, MAX_MONSTERS, HEAD_OFFSET_Y, HP_BAR_W, WHITE, CARD_NAME_TEXT, CARD_DESC_TEXT, cardFaceLayout, CARD_W, CARD_H, CARD_SPACING, CARD_XS, ALIGN_CENTER, ALIGN_BOTTOM_CENTER, guid, transform, sprite, button, text, scrollLayoutGroup, popupLayerFor, uiOrderFor, displayOrderFor, applySortingOverride, entity, uiPath, sectionRoot, isGeneratedUiEntity, appendUiSection } from '../lib/ui-helpers.mjs'; + +export const renderMethods = [ + method('BuffsLabel', `local parts = {} +if str ~= nil and str > 0 then table.insert(parts, "힘+" .. tostring(str)) end +if weak ~= nil and weak > 0 then table.insert(parts, "약화" .. tostring(weak)) end +if vuln ~= nil and vuln > 0 then table.insert(parts, "취약" .. tostring(vuln)) end +if poison ~= nil and poison > 0 then table.insert(parts, "독" .. tostring(poison)) end +return table.concat(parts, " ")`, [ + { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'str' }, + { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'weak' }, + { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'vuln' }, + { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'poison' }, + ], 0, 'string'), + method('RenderCombat', `for i = 1, ${MAX_MONSTERS} do + local base = "/ui/RunUIGroup/CombatHud/MonsterStatus" .. self:IntStr(i) + local m = self.Monsters[i] + if m ~= nil and m.alive == true then + self:SetEntityEnabled(base, true) + self:SetText(base .. "/Name", m.name) + self:SetText(base .. "/Hp", string.format("%d", m.hp) .. "/" .. string.format("%d", m.maxHp)) + local intent = m.intents[m.intentIdx] + local t = "" + if intent ~= nil then + if intent.kind == "Attack" then + local atk = intent.value + m.str + if m.weak > 0 then atk = math.floor(atk * 0.75) end + if self.PlayerVuln > 0 then atk = math.floor(atk * 1.5) end + t = "공격 " .. tostring(atk) + elseif intent.kind == "Defend" then t = "방어 " .. tostring(intent.value) + elseif intent.kind == "Debuff" then + if intent.effect == "weak" then t = "약화 " .. tostring(intent.value) .. " 부여" + else t = "취약 " .. tostring(intent.value) .. " 부여" end + elseif intent.kind == "AddCard" then + t = "저주 카드 추가" + end + end + self:SetText(base .. "/Intent", t) + local dragActive = self.DragTargetIndex ~= nil and self.DragTargetIndex > 0 + local shownTarget = self.TargetIndex + if dragActive == true then shownTarget = self.DragTargetIndex end + self:SetEntityEnabled(base .. "/TargetMarker", i == shownTarget and dragActive) + self:SetEntityEnabled(base .. "/TargetMarker/Label", i == shownTarget and dragActive) + local intentEntity = _EntityService:GetEntityByPath(base .. "/Intent") + if intentEntity ~= nil and intentEntity.TextComponent ~= nil and intent ~= nil then + if intent.kind == "Attack" then + intentEntity.TextComponent.FontColor = Color(1, 0.45, 0.35, 1) + elseif intent.kind == "Debuff" then + intentEntity.TextComponent.FontColor = Color(0.8, 0.5, 1, 1) + elseif intent.kind == "AddCard" then + intentEntity.TextComponent.FontColor = Color(0.6, 0.85, 0.4, 1) + else + intentEntity.TextComponent.FontColor = Color(0.5, 0.75, 1, 1) + end + end + self:SetHpBar(base .. "/HpBarFill", m.hp, m.maxHp, ${HP_BAR_W}) + self:SetEntityEnabled(base .. "/BlockBadge", m.block > 0) + self:SetText(base .. "/BlockBadge/Value", string.format("%d", m.block)) + self:SetText(base .. "/Buffs", self:BuffsLabel(m.str, m.weak, m.vuln, m.poison or 0)) + else + self:SetEntityEnabled(base, false) + end +end +self:SetText("/ui/RunUIGroup/CombatHud/PlayerPanel/HpText", string.format("%d", self.PlayerHp) .. "/" .. string.format("%d", self.PlayerMaxHp)) +self:SetHpBar("/ui/RunUIGroup/CombatHud/PlayerPanel/HpBarFill", self.PlayerHp, self.PlayerMaxHp, 220) +self:SetEntityEnabled("/ui/RunUIGroup/CombatHud/PlayerPanel/BlockBadge", self.PlayerBlock > 0) +self:SetText("/ui/RunUIGroup/CombatHud/PlayerPanel/BlockBadge/Value", string.format("%d", self.PlayerBlock)) +local pb = self:BuffsLabel(self.PlayerStr, self.PlayerWeak, self.PlayerVuln, 0) +if self.PlayerIntangible ~= nil and self.PlayerIntangible > 0 then + if pb ~= "" then pb = pb .. " " end + pb = pb .. "불가침" .. tostring(self.PlayerIntangible) +end +if self.PlayerDex ~= nil and self.PlayerDex > 0 then + if pb ~= "" then pb = pb .. " " end + pb = pb .. "민첩+" .. tostring(self.PlayerDex) +end +if self.PlayerThorns ~= nil and self.PlayerThorns > 0 then + if pb ~= "" then pb = pb .. " " end + pb = pb .. "가시" .. tostring(self.PlayerThorns) +end +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]] + if pc ~= nil then table.insert(names, pc.name) end + end + if pb ~= "" then pb = pb .. " · " end + pb = pb .. table.concat(names, " ") +end +self:SetText("/ui/RunUIGroup/CombatHud/PlayerPanel/Buffs", pb) +self:RenderRun()`), + method('ShowDmgPop', `local slotKey = string.format("%d", math.floor(slot or 0)) +if self.DmgPopSlotQueue == nil then + self.DmgPopSlotQueue = {} +end +local popIndex = (self.DmgPopSlotQueue[slotKey] or 0) + 1 +if popIndex > 5 then + popIndex = 1 +end +self.DmgPopSlotQueue[slotKey] = popIndex +local base = "/ui/RunUIGroup/CombatHud/DmgPop" .. slotKey .. "_" .. self:IntStr(popIndex) +local pop = _EntityService:GetEntityByPath(base) +if pop == nil then + return +end +local function showNow() + self:SetEntityEnabled(base, false) + self:SetText(base, "") + local damageDigitRuids = { ${DAMAGE_DIGIT_RUIDS.map(luaStr).join(', ')} } + local shown = tostring(math.max(0, math.floor(amount))) + if string.len(shown) > ${DAMAGE_POP_MAX_DIGITS} then + shown = string.sub(shown, 1, ${DAMAGE_POP_MAX_DIGITS}) + end + local digits = {} + local digitPathsToEnable = {} + for i = 1, string.len(shown) do + table.insert(digits, tonumber(string.sub(shown, i, i)) or 0) + end + local totalW = #digits * ${DAMAGE_POP_DIGIT_W} + math.max(0, #digits - 1) * ${DAMAGE_POP_DIGIT_SPACING} + local startX = -totalW / 2 + ${DAMAGE_POP_DIGIT_W} / 2 + for i = 1, ${DAMAGE_POP_MAX_DIGITS} do + self:SetEntityEnabled(base .. "/Digit" .. self:IntStr(i), false) + end + for i = 1, ${DAMAGE_POP_MAX_DIGITS} do + local digitPath = base .. "/Digit" .. self:IntStr(i) + local digitEntity = _EntityService:GetEntityByPath(digitPath) + if digitEntity ~= nil and digitEntity.SpriteGUIRendererComponent ~= nil then + if digits[i] ~= nil then + digitEntity.SpriteGUIRendererComponent.ImageRUID = damageDigitRuids[digits[i] + 1] + digitEntity.SpriteGUIRendererComponent.Color = Color(1, 1, 1, 1) + if digitEntity.UITransformComponent ~= nil then + digitEntity.UITransformComponent.anchoredPosition = Vector2(startX + (i - 1) * (${DAMAGE_POP_DIGIT_W} + ${DAMAGE_POP_DIGIT_SPACING}), 0) + end + table.insert(digitPathsToEnable, digitPath) + else + self:SetEntityEnabled(digitPath, false) + end + end + end + local popPos = nil + local m = self.Monsters[slot] + if m ~= nil and m.entity ~= nil and isvalid(m.entity) and m.entity.TransformComponent ~= nil then + local wp = m.entity.TransformComponent.WorldPosition + local screen = _UILogic:WorldToScreenPosition(Vector2(wp.x, wp.y + ${HEAD_OFFSET_Y + 0.45})) + popPos = _UILogic:ScreenToUIPosition(screen) + else + local slotEntity = _EntityService:GetEntityByPath("/ui/RunUIGroup/CombatHud/MonsterStatus" .. slotKey) + if slotEntity ~= nil and slotEntity.UITransformComponent ~= nil then + local sp = slotEntity.UITransformComponent.anchoredPosition + popPos = Vector2(sp.x, sp.y + 76) + end + end + if pop.UITransformComponent ~= nil then + if popPos ~= nil then + pop.UITransformComponent.anchoredPosition = popPos + else + pop.UITransformComponent.anchoredPosition = Vector2(0, 120) + end + end + self:SetEntityEnabled(base, true) + for i = 1, #digitPathsToEnable do + self:SetEntityEnabled(digitPathsToEnable[i], true) + end + for i = 1, 6 do + _TimerService:SetTimerOnce(function() + local p = _EntityService:GetEntityByPath(base) + if p ~= nil and p.UITransformComponent ~= nil then + local cur = p.UITransformComponent.anchoredPosition + p.UITransformComponent.anchoredPosition = Vector2(cur.x, cur.y + 7) + end + local alpha = 1 - (i / 6) + if alpha < 0 then alpha = 0 end + for di = 1, ${DAMAGE_POP_MAX_DIGITS} do + local digitEntity = _EntityService:GetEntityByPath(base .. "/Digit" .. self:IntStr(di)) + if digitEntity ~= nil and digitEntity.Enable == true and digitEntity.SpriteGUIRendererComponent ~= nil then + digitEntity.SpriteGUIRendererComponent.Color = Color(1, 1, 1, alpha) + end + end + end, 0.05 * i) + end + _TimerService:SetTimerOnce(function() + self:SetEntityEnabled(base, false) + end, 0.3) +end +showNow()`, [ + { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }, + { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'amount' }, + ]), + method('ShowPlayerDmgPop', `local shownAmount = math.max(0, math.floor(amount or 0)) +if shownAmount <= 0 then + return +end +local function setEnabled(entity, enabled) + if entity == nil then + return + end + entity.Enable = enabled + if entity.SpriteGUIRendererComponent ~= nil then + entity.SpriteGUIRendererComponent.Enable = enabled + end + if entity.TextComponent ~= nil then + entity.TextComponent.Enable = enabled + end +end +self.PlayerDmgPopIndex = (self.PlayerDmgPopIndex or 0) + 1 +if self.PlayerDmgPopIndex > 4 then + self.PlayerDmgPopIndex = 1 +end +local base = "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_" .. self:IntStr(self.PlayerDmgPopIndex) +local pop = _EntityService:GetEntityByPath(base) +if pop == nil then + return +end +setEnabled(pop, false) +local damageDigitRuids = { ${DAMAGE_DIGIT_RUIDS.map(luaStr).join(', ')} } +local shown = tostring(shownAmount) +if string.len(shown) > ${DAMAGE_POP_MAX_DIGITS} then + shown = string.sub(shown, 1, ${DAMAGE_POP_MAX_DIGITS}) +end +local digits = {} +local digitEntitiesToEnable = {} +for i = 1, string.len(shown) do + table.insert(digits, tonumber(string.sub(shown, i, i)) or 0) +end +local totalW = #digits * ${DAMAGE_POP_DIGIT_W} + math.max(0, #digits - 1) * ${DAMAGE_POP_DIGIT_SPACING} +local startX = -totalW / 2 + ${DAMAGE_POP_DIGIT_W} / 2 +for i = 1, ${DAMAGE_POP_MAX_DIGITS} do + local digitEntity = _EntityService:GetEntityByPath(base .. "/Digit" .. self:IntStr(i)) + setEnabled(digitEntity, false) +end +for i = 1, ${DAMAGE_POP_MAX_DIGITS} do + local digitPath = base .. "/Digit" .. self:IntStr(i) + local digitEntity = _EntityService:GetEntityByPath(digitPath) + if digitEntity ~= nil and digitEntity.SpriteGUIRendererComponent ~= nil then + if digits[i] ~= nil then + digitEntity.SpriteGUIRendererComponent.ImageRUID = damageDigitRuids[digits[i] + 1] + digitEntity.SpriteGUIRendererComponent.Color = Color(1, 1, 1, 1) + if digitEntity.UITransformComponent ~= nil then + digitEntity.UITransformComponent.anchoredPosition = Vector2(startX + (i - 1) * (${DAMAGE_POP_DIGIT_W} + ${DAMAGE_POP_DIGIT_SPACING}), 0) + end + table.insert(digitEntitiesToEnable, digitEntity) + end + end +end +local startPos = Vector2(16, 34) +if pop.UITransformComponent ~= nil then + local cur = pop.UITransformComponent.anchoredPosition + if math.abs(cur.x) < 240 and math.abs(cur.y) < 140 then + startPos = cur + end + pop.UITransformComponent.anchoredPosition = startPos +end +setEnabled(pop, true) +for i = 1, #digitEntitiesToEnable do + setEnabled(digitEntitiesToEnable[i], true) +end +for i = 1, 6 do + _TimerService:SetTimerOnce(function() + local p = _EntityService:GetEntityByPath(base) + if p ~= nil and p.Enable == true and p.UITransformComponent ~= nil then + local cur = p.UITransformComponent.anchoredPosition + p.UITransformComponent.anchoredPosition = Vector2(cur.x, cur.y + 7) + end + local alpha = 1 - (i / 6) + if alpha < 0 then alpha = 0 end + for di = 1, ${DAMAGE_POP_MAX_DIGITS} do + local digitEntity = _EntityService:GetEntityByPath(base .. "/Digit" .. self:IntStr(di)) + if digitEntity ~= nil and digitEntity.Enable == true and digitEntity.SpriteGUIRendererComponent ~= nil then + digitEntity.SpriteGUIRendererComponent.Color = Color(1, 1, 1, alpha) + end + end + end, 0.05 * i) +end +_TimerService:SetTimerOnce(function() + local p = _EntityService:GetEntityByPath(base) + if p ~= nil and p.UITransformComponent ~= nil then + p.UITransformComponent.anchoredPosition = startPos + end + setEnabled(p, false) +end, 0.3)`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'amount' }]), + method('ShakeCombatCamera', `local lp = _UserService.LocalPlayer +local cam = nil +if lp ~= nil then + cam = lp.CameraComponent +end +if cam == nil then + cam = _CameraService:GetCurrentCameraComponent() +end +if cam == nil then + return +end +self.CombatCameraShakeSeq = (self.CombatCameraShakeSeq or 0) + 1 +local seq = self.CombatCameraShakeSeq +local baseCameraOffset = Vector2(${CAM.cameraOffsetX}, ${CAM.cameraOffsetY}) +cam.CameraOffset = baseCameraOffset +local offsets = { + Vector2(-0.22, 0), + Vector2(0.2, 0), + Vector2(-0.12, 0), + Vector2(0.06, 0), + Vector2(0, 0), +} +for i = 1, #offsets do + local delta = offsets[i] + _TimerService:SetTimerOnce(function() + local lp2 = _UserService.LocalPlayer + local cam2 = nil + if lp2 ~= nil then + cam2 = lp2.CameraComponent + end + if cam2 == nil then + cam2 = _CameraService:GetCurrentCameraComponent() + end + if cam2 == nil then + return + end + if seq ~= self.CombatCameraShakeSeq then + return + end + cam2.CameraOffset = Vector2(baseCameraOffset.x + delta.x, baseCameraOffset.y + delta.y) + end, 0.028 * (i - 1)) +end`, []), + method('PlayerAttackMotion', `local lp = _UserService.LocalPlayer +if lp == nil then + return +end +if lp.StateComponent == nil then + return +end +pcall(function() lp.StateComponent:ChangeState("ATTACK") end) +_TimerService:SetTimerOnce(function() + if lp ~= nil and isvalid(lp) and lp.StateComponent ~= nil then + pcall(function() lp.StateComponent:ChangeState("IDLE") end) + end +end, 0.5)`), + method('PlayerHitMotion', `local lp = _UserService.LocalPlayer +if lp == nil then + return +end +if lp.StateComponent ~= nil then + pcall(function() lp.StateComponent:ChangeState("HIT") end) +end +local tr = lp.TransformComponent +if tr == nil then + return +end +local p = tr.Position +tr.Position = Vector3(p.x - 0.15, p.y, p.z) +_TimerService:SetTimerOnce(function() + if lp ~= nil and isvalid(lp) and lp.TransformComponent ~= nil then + lp.TransformComponent.Position = Vector3(p.x, p.y, p.z) + end +end, 0.15)`), + method('MonsterLunge', `local m = self.Monsters[idx] +if m == nil or m.alive ~= true or m.entity == nil or not isvalid(m.entity) then + return +end +if m.motionBusy == true then + return +end +m.motionBusy = true +local e = m.entity +local tr = e.TransformComponent +if tr == nil then + m.motionBusy = false + return +end +local p = tr.Position +tr.Position = Vector3(p.x - 0.35, p.y, p.z) +_TimerService:SetTimerOnce(function() + if isvalid(e) and e.TransformComponent ~= nil then + e.TransformComponent.Position = Vector3(p.x, p.y, p.z) + end + m.motionBusy = false +end, 0.18)`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'idx' }]), + method('MonsterHitMotion', `local m = self.Monsters[slot] +if m == nil or m.alive ~= true or m.entity == nil or not isvalid(m.entity) then + return +end +local e = m.entity +if m.hitClip ~= nil and e.SpriteRendererComponent ~= nil then + e.SpriteRendererComponent.SpriteRUID = m.hitClip + _TimerService:SetTimerOnce(function() + if isvalid(e) and e.SpriteRendererComponent ~= nil and m.alive == true and m.standClip ~= nil then + e.SpriteRendererComponent.SpriteRUID = m.standClip + end + end, 0.5) +else + if m.motionBusy == true then + return + end + m.motionBusy = true + local tr = e.TransformComponent + if tr == nil then + m.motionBusy = false + return + end + local p = tr.Position + local seq = { 0.12, -0.12, 0 } + for i = 1, #seq do + local dx = seq[i] + _TimerService:SetTimerOnce(function() + if isvalid(e) and e.TransformComponent ~= nil then + e.TransformComponent.Position = Vector3(p.x + dx, p.y, p.z) + end + if i == #seq then + m.motionBusy = false + end + end, 0.06 * i) + end +end`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }]), + method('SetHpBar', `local e = _EntityService:GetEntityByPath(path) +if e == nil or e.UITransformComponent == nil then + return +end +local ratio = 0 +if maxHp > 0 then ratio = hp / maxHp end +if ratio < 0 then ratio = 0 end +if ratio > 1 then ratio = 1 end +if self.HpBarOrigins == nil then + self.HpBarOrigins = {} +end +local t = e.UITransformComponent +local origin = self.HpBarOrigins[path] +if origin == nil then + local pivotX = 0 + if t.Pivot ~= nil then + pivotX = t.Pivot.x or 0 + end + origin = { + left = t.anchoredPosition.x - (t.RectSize.x * pivotX), + y = t.anchoredPosition.y, + height = t.RectSize.y, + pivotX = pivotX, + } + self.HpBarOrigins[path] = origin +end +local w = width * ratio +t.RectSize = Vector2(w, origin.height or 14) +t.anchoredPosition = Vector2(origin.left + (w * (origin.pivotX or 0)), origin.y or t.anchoredPosition.y)`, [ + { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'path' }, + { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'hp' }, + { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'maxHp' }, + { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'width' }, + ]), + method('SetTarget', `if self.Monsters[slot] ~= nil and self.Monsters[slot].alive == true then + self.TargetIndex = slot + self:RenderCombat() +end`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }]), + method('RenderRun', `local floorText = "막 " .. string.format("%d", self.Floor) .. "/" .. string.format("%d", self.RunLength) .. " · " .. string.format("%d", self.Depth) .. "층" +if self.AscensionLevel > 0 then + floorText = floorText .. " · 승천" .. string.format("%d", self.AscensionLevel) +end +self:SetText("/ui/RunUIGroup/CombatHud/TopBar/Floor", floorText) +self:SetText("/ui/RunUIGroup/CombatHud/TopBar/Gold", "메소 " .. string.format("%d", self.Gold))`), + +]; diff --git a/tools/deck/cb/reward.mjs b/tools/deck/cb/reward.mjs index 3e80ae3..fd2c86d 100644 --- a/tools/deck/cb/reward.mjs +++ b/tools/deck/cb/reward.mjs @@ -34,7 +34,7 @@ local hud = _EntityService:GetEntityByPath("/ui/RunUIGroup/RewardHud") if hud ~= nil then hud.Enable = true end`), - method('ApplyRewardVisual', `self:ApplyCardFace("/ui/RunUIGroup/RewardHud/Reward" .. tostring(slot), cardId)`, [ + method('ApplyRewardVisual', `self:ApplyCardFace("/ui/RunUIGroup/RewardHud/Reward" .. self:IntStr(slot), cardId)`, [ { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }, { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'cardId' }, ]), diff --git a/tools/deck/cb/run.mjs b/tools/deck/cb/run.mjs index ac6e2a5..4073e9e 100644 --- a/tools/deck/cb/run.mjs +++ b/tools/deck/cb/run.mjs @@ -64,7 +64,7 @@ end, 0.2)`), self:KickCombatCamera() self:SetEntityEnabled("/ui/RunUIGroup/CombatHud/Result", false) self:SetEntityEnabled("/ui/RunUIGroup/CombatHud/PotionMenu", false) -self:SetEntityEnabled("/ui/RunUIGroup/CombatHud/TooltipBox", false) +self:SetEntityEnabled("/ui/ToolTipGroup/TooltipBox", false) self:SetEntityEnabled("/ui/RunUIGroup/CombatHud/DiscardPrompt", false) self:SetText("/ui/RunUIGroup/CombatHud/PlayerPanel/Name", self:JobLabel()) self.MaxEnergy = 3 @@ -95,13 +95,20 @@ self.PlayerVuln = 0 self.PlayerIntangible = 0 self.BonusRewardScreens = 0 self.ActiveKillReward = 0 +self.ActiveKillMaxHpGain = 0 self.PlayerPowers = {} 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.CombatCameraShakeSeq = 0 +self.DmgPopSlotQueue = {} +self.PlayerDmgPopIndex = 0 self.FirstHpLossDone = false self.ClayBlockNext = 0 self.DiscardSelectRemaining = 0 @@ -118,6 +125,7 @@ self.TurnAttackMultiplier = 1 self.NextTurnSelectPrompt = "" self.NextTurnSelectCopies = 0 self.NextTurnAddCards = {} +self.ZeroCostCardIdsThisTurn = {} self.CombatOver = false self.DiscardPile = {} self.ExhaustPile = {} diff --git a/tools/deck/cb/screens.mjs b/tools/deck/cb/screens.mjs index f72764c..e7e9f5a 100644 --- a/tools/deck/cb/screens.mjs +++ b/tools/deck/cb/screens.mjs @@ -49,9 +49,9 @@ end`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], N method('ShowMainMenu', `self.SelectedClass = "" self:RenderAscension() self:ShowState("menu") -self:SetText("/ui/DefaultGroup/MainMenu/Title", "메이플 덱 어드벤처") -self:SetText("/ui/DefaultGroup/MainMenu/Subtitle", "캐릭터를 고르고 덱을 만들어 모험을 시작하세요") -self:SetText("/ui/DefaultGroup/MainMenu/NewGameButton", "새 게임") +self:SetText("/ui/DefaultGroup/MainMenu/Title", "Maple Deck Adventure") +self:SetText("/ui/DefaultGroup/MainMenu/Subtitle", "Choose your character and begin your run") +self:SetText("/ui/DefaultGroup/MainMenu/NewGameButton", "New Game") self:BindMenuButtons()`), method('BindMenuButtons', `local buttonEntity = _EntityService:GetEntityByPath("/ui/DefaultGroup/MainMenu/NewGameButton") if buttonEntity ~= nil and (buttonEntity.ButtonComponent ~= nil or buttonEntity:AddComponent("ButtonComponent") ~= nil) then @@ -136,22 +136,28 @@ self:BindLobbyButtons() self:BindMenuButtons() self:GoLobbyMap()`), method('RenderSoulLabel', `local soulPoints = self.SoulPoints or 0 -self:SetText("/ui/LobbyUIGroup/LobbyHud/SoulLabel", "영혼 " .. string.format("%d", soulPoints)) -self:SetText("/ui/LobbyUIGroup/SoulShopHud/Souls", "영혼 " .. string.format("%d", soulPoints))`), +self:SetText("/ui/LobbyUIGroup/LobbyHud/SoulLabel", "Soul " .. string.format("%d", soulPoints)) +self:SetText("/ui/LobbyUIGroup/SoulShopHud/Souls", "Soul " .. string.format("%d", soulPoints))`), method('BindLobbyButtons', `if self.LobbyBound == true then return end self.LobbyBound = true -local function bindClick(path, handler) - local entity = _EntityService:GetEntityByPath(path) - if entity ~= nil and (entity.ButtonComponent ~= nil or entity:AddComponent("ButtonComponent") ~= nil) then - entity:ConnectEvent(ButtonClickEvent, handler) - end +local ascMinus = _EntityService:GetEntityByPath("/ui/LobbyUIGroup/LobbyHud/AscMinus") +if ascMinus ~= nil and (ascMinus.ButtonComponent ~= nil or ascMinus:AddComponent("ButtonComponent") ~= nil) then + ascMinus:ConnectEvent(ButtonClickEvent, function() self:AdjustAscension(-1) end) end -bindClick("/ui/LobbyUIGroup/LobbyHud/AscMinus", function() self:AdjustAscension(-1) end) -bindClick("/ui/LobbyUIGroup/LobbyHud/AscPlus", function() self:AdjustAscension(1) end) -bindClick("/ui/LobbyUIGroup/BoardHud/Close", function() self:CloseBoard() end) -bindClick("/ui/LobbyUIGroup/SoulShopHud/Close", function() self:CloseSoulShop() end)`), +local ascPlus = _EntityService:GetEntityByPath("/ui/LobbyUIGroup/LobbyHud/AscPlus") +if ascPlus ~= nil and (ascPlus.ButtonComponent ~= nil or ascPlus:AddComponent("ButtonComponent") ~= nil) then + ascPlus:ConnectEvent(ButtonClickEvent, function() self:AdjustAscension(1) end) +end +local boardClose = _EntityService:GetEntityByPath("/ui/LobbyUIGroup/BoardHud/Close") +if boardClose ~= nil and (boardClose.ButtonComponent ~= nil or boardClose:AddComponent("ButtonComponent") ~= nil) then + boardClose:ConnectEvent(ButtonClickEvent, function() self:CloseBoard() end) +end +local soulClose = _EntityService:GetEntityByPath("/ui/LobbyUIGroup/SoulShopHud/Close") +if soulClose ~= nil and (soulClose.ButtonComponent ~= nil or soulClose:AddComponent("ButtonComponent") ~= nil) then + soulClose:ConnectEvent(ButtonClickEvent, function() self:CloseSoulShop() end) +end`), method('ShowCodex', `self.CodexMode = true self.ClassDeckMode = true local close = _EntityService:GetEntityByPath("/ui/DeckUIGroup/DeckAllHud/Close") diff --git a/tools/deck/cb/shop.mjs b/tools/deck/cb/shop.mjs index 0591ff8..b5ac272 100644 --- a/tools/deck/cb/shop.mjs +++ b/tools/deck/cb/shop.mjs @@ -34,7 +34,7 @@ self:ShowState("shop")`), for i = 1, 3 do local cid = self.ShopChoices[i] local c = self.Cards[cid] - local base = "/ui/RunUIGroup/ShopHud/Card" .. tostring(i) + local base = "/ui/RunUIGroup/ShopHud/Card" .. self:IntStr(i) if c ~= nil then self:ApplyCardFace(base, cid) self:SetText(base .. "/Price", string.format("%d", ${CARD_PRICE}) .. " 메소") diff --git a/tools/deck/cb/soul.mjs b/tools/deck/cb/soul.mjs index cb664b5..c9161c0 100644 --- a/tools/deck/cb/soul.mjs +++ b/tools/deck/cb/soul.mjs @@ -41,43 +41,59 @@ if lp ~= nil then end self:RenderSoulLabel()`, [{ Type: "number", DefaultValue: null, SyncDirection: 0, Attributes: [], Name: "n" }]), method('BuySoulUnlock', `local d = nil -if self.SoulShopDef ~= nil then d = self.SoulShopDef[slot] end -if d == nil then return end -if self.SoulUnlocks ~= nil and self.SoulUnlocks[d.key] == true then - self:Toast("이미 보유 중입니다") +if self.SoulShopDef ~= nil then + d = self.SoulShopDef[slot] +end +if d == nil then return end -if (self.SoulPoints or 0) < d.cost then - self:Toast("영혼이 부족합니다") +local unlockKey = d.key +local unlockCost = d.cost +local unlockName = d.name or "Unlock" +if unlockKey == nil or unlockCost == nil then return end -self.SoulPoints = self.SoulPoints - d.cost -if self.SoulUnlocks == nil then self.SoulUnlocks = {} end -self.SoulUnlocks[d.key] = true +if self.SoulUnlocks ~= nil and self.SoulUnlocks[unlockKey] == true then + self:Toast("Already owned") + return +end +if (self.SoulPoints or 0) < unlockCost then + self:Toast("Not enough soul") + return +end +self.SoulPoints = self.SoulPoints - unlockCost +if self.SoulUnlocks == nil then + self.SoulUnlocks = {} +end +self.SoulUnlocks[unlockKey] = true local lp = _UserService.LocalPlayer if lp ~= nil then self:SaveSouls(self.SoulPoints, self:SerializeUnlocks(), lp.PlayerComponent.UserId) end -self:Toast(d.name .. " 해금!") +self:Toast(unlockName .. " unlocked") self:RenderSoulLabel() self:RenderSoulShop()`, [{ Type: "number", DefaultValue: null, SyncDirection: 0, Attributes: [], Name: "slot" }]), method('RenderSoulShop', `local defs = self.SoulShopDef or {} for i = 1, 4 do - local base = "/ui/LobbyUIGroup/SoulShopHud/Item" .. tostring(i) + local base = "/ui/LobbyUIGroup/SoulShopHud/Item" .. self:IntStr(i) local d = defs[i] if d == nil then self:SetEntityEnabled(base, false) else + local itemName = d.name or "Unlock" + local itemDesc = d.desc or "" + local itemKey = d.key + local itemCost = d.cost or 0 self:SetEntityEnabled(base, true) - self:SetText(base .. "/Name", d.name) - self:SetText(base .. "/Desc", d.desc) - local owned = self.SoulUnlocks ~= nil and self.SoulUnlocks[d.key] == true + self:SetText(base .. "/Name", itemName) + self:SetText(base .. "/Desc", itemDesc) + local owned = itemKey ~= nil and self.SoulUnlocks ~= nil and self.SoulUnlocks[itemKey] == true if owned then - self:SetText(base .. "/Status", "보유 중") - elseif (self.SoulPoints or 0) >= d.cost then - self:SetText(base .. "/Status", tostring(d.cost) .. " 영혼 · 구매") + self:SetText(base .. "/Status", "Owned") + elseif (self.SoulPoints or 0) >= itemCost then + self:SetText(base .. "/Status", tostring(itemCost) .. " soul · buy") else - self:SetText(base .. "/Status", tostring(d.cost) .. " 영혼 · 부족") + self:SetText(base .. "/Status", tostring(itemCost) .. " soul · low") end end end`), @@ -87,7 +103,7 @@ end self.SoulShopBound = true for i = 1, 4 do local idx = i - local e = _EntityService:GetEntityByPath("/ui/LobbyUIGroup/SoulShopHud/Item" .. tostring(i)) + local e = _EntityService:GetEntityByPath("/ui/LobbyUIGroup/SoulShopHud/Item" .. self:IntStr(i)) if e ~= nil and (e.ButtonComponent ~= nil or e:AddComponent("ButtonComponent") ~= nil) then e:ConnectEvent(ButtonClickEvent, function() self:BuySoulUnlock(idx) end) end diff --git a/tools/deck/cb/tooltip.mjs b/tools/deck/cb/tooltip.mjs index 244e4b9..ad9b09d 100644 --- a/tools/deck/cb/tooltip.mjs +++ b/tools/deck/cb/tooltip.mjs @@ -102,6 +102,217 @@ for i = 1, #lines do out = out .. lines[i] end return out`, [{ Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'c' }], 0, 'string'), + method('GetHoveredCardId', `if path == nil or path == "" then + return nil +end +if string.find(path, "/ui/RunUIGroup/CardHand/Card", 1, true) == 1 then + if self.Hand == nil then + return nil + end + local slot = tonumber(string.match(path, "Card(%d+)")) or 0 + return self.Hand[slot] +end +if string.find(path, "/ui/RunUIGroup/RewardHud/Reward", 1, true) == 1 then + if self.RewardCards == nil then + return nil + end + local slot = tonumber(string.match(path, "Reward(%d+)")) or 0 + return self.RewardCards[slot] +end +if string.find(path, "/ui/RunUIGroup/ShopHud/Card", 1, true) == 1 then + if self.ShopCards == nil then + return nil + end + local slot = tonumber(string.match(path, "Card(%d+)")) or 0 + return self.ShopCards[slot] +end +if string.find(path, "/ui/DeckUIGroup/DeckInspectHud/Grid/Card", 1, true) == 1 then + local pile = nil + if self.DeckInspectKind == "discard" then + pile = self.DiscardPile + elseif self.DeckInspectKind == "exhaust" then + pile = self.ExhaustPile + else + pile = self.DrawPile + end + if pile == nil then + return nil + end + local slot = tonumber(string.match(path, "Card(%d+)")) or 0 + return pile[slot] +end +if string.find(path, "/ui/DeckUIGroup/DeckAllHud/Grid/Card", 1, true) == 1 then + local pile = self.RunDeck + if self.ClassDeckMode == true then + pile = self.ClassDeckCards + elseif self.CodexMode == true then + pile = self.CodexCards + end + if pile == nil then + return nil + end + local slot = tonumber(string.match(path, "Card(%d+)")) or 0 + return pile[slot] +end +return nil`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'path' }], 0, 'string'), + method('GetGridCardPathAtPoint', `if gridPath == nil or gridPath == "" or touchPoint == nil then + return nil +end +local prefix = nil +local maxSlots = 0 +if gridPath == "/ui/DeckUIGroup/DeckAllHud/Grid" then + prefix = "/ui/DeckUIGroup/DeckAllHud/Grid/Card" + maxSlots = 120 +elseif gridPath == "/ui/DeckUIGroup/DeckInspectHud/Grid" then + prefix = "/ui/DeckUIGroup/DeckInspectHud/Grid/Card" + maxSlots = 60 +else + return nil +end +local uiPos = _UILogic:ScreenToUIPosition(touchPoint) +local bestPath = nil +local bestDist = 999999 +for i = 1, maxSlots do + local path = prefix .. self:IntStr(i) + local cardEntity = _EntityService:GetEntityByPath(path) + if cardEntity ~= nil and cardEntity.Enable == true and cardEntity.UITransformComponent ~= nil then + local pos = self:GetUiPathPosition(path) + local dx = uiPos.x - pos.x + local dy = uiPos.y - pos.y + if math.abs(dx) <= 90 and math.abs(dy) <= 125 then + local dist = dx * dx + dy * dy + if bestPath == nil or dist < bestDist then + bestPath = path + bestDist = dist + end + end + end +end +return bestPath`, [ + { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'gridPath' }, + { Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'touchPoint' }, + ], 0, 'string'), + method('GetUiPathPosition', `if path == nil or path == "" then + return Vector2(0, 0) +end +local sumX = 0 +local sumY = 0 +local cur = path +while cur ~= nil and cur ~= "" do + local e = _EntityService:GetEntityByPath(cur) + if e ~= nil and e.UITransformComponent ~= nil then + local pos = e.UITransformComponent.anchoredPosition + if pos ~= nil then + sumX = sumX + (pos.x or 0) + sumY = sumY + (pos.y or 0) + end + end + local slash = string.match(cur, "^.*()/") + if slash == nil or slash <= 1 then + break + end + cur = string.sub(cur, 1, slash - 1) + if cur == "/ui" then + break + end +end +return Vector2(sumX, sumY)`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'path' }], 0, 'any'), + method('GetTooltipAnchorForPath', `local pos = self:GetUiPathPosition(path) +local x = pos.x +local y = pos.y +local sideOffset = 230 +local verticalOffset = 0 +if string.find(path, "/ui/RunUIGroup/CardHand/Card", 1, true) == 1 then + verticalOffset = 90 +elseif string.find(path, "/ui/RunUIGroup/RewardHud/Reward", 1, true) == 1 then + verticalOffset = 30 +elseif string.find(path, "/ui/RunUIGroup/ShopHud/Card", 1, true) == 1 then + verticalOffset = 20 +else + verticalOffset = 0 +end +local tipX = x + sideOffset +if x > 180 then + tipX = x - sideOffset +end +if tipX > 760 then + tipX = x - sideOffset +end +if tipX < -760 then + tipX = x + sideOffset +end +local tipY = y + verticalOffset +if tipY > 430 then + tipY = 430 +end +if tipY < -430 then + tipY = -430 +end +return Vector2(tipX, tipY)`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'path' }], 0, 'any'), + method('HoverCardByPath', `if path == nil or path == "" then + return +end +if self.DragSlot ~= nil and self.DragSlot > 0 and string.find(path, "/ui/RunUIGroup/CardHand/Card", 1, true) == 1 then + return +end +if self.GridScrollActive == true and (string.find(path, "/ui/DeckUIGroup/DeckAllHud/Grid/Card", 1, true) == 1 or string.find(path, "/ui/DeckUIGroup/DeckInspectHud/Grid/Card", 1, true) == 1) then + return +end +local cardId = self:GetHoveredCardId(path) +if cardId == nil or self.Cards == nil then + self:HideTooltip() + return +end +local c = self.Cards[cardId] +if c == nil then + self:HideTooltip() + return +end +local tip = self:BuildCardKeywordTooltip(c) +if tip == nil or tip == "" then + self:HideTooltip() + return +end +local e = _EntityService:GetEntityByPath(path) +if e ~= nil and e.UITransformComponent ~= nil then + if string.find(path, "/ui/RunUIGroup/CardHand/Card", 1, true) == 1 then + e.UITransformComponent.UIScale = Vector3(1.3, 1.3, 1) + end +end +local anchor = self:GetTooltipAnchorForPath(path) +self:ShowTooltipAt("키워드", tip, anchor.x, anchor.y)`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'path' }]), + method('HoverGridCard', `if gridPath == nil or touchPoint == nil then + return +end +local path = self:GetGridCardPathAtPoint(gridPath, touchPoint) +local lastPath = self.GridHoverPath +if lastPath == path then + return +end +if lastPath ~= nil and lastPath ~= "" then + self:UnhoverCardByPath(lastPath) +end +self.GridHoverPath = path or "" +if path ~= nil and path ~= "" then + self:HoverCardByPath(path) +end`, [ + { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'gridPath' }, + { Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'touchPoint' }, + ]), + method('UnhoverGridCard', `local path = self.GridHoverPath +self.GridHoverPath = "" +if path ~= nil and path ~= "" then + self:UnhoverCardByPath(path) +else + self:HideTooltip() +end`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'gridPath' }]), + method('UnhoverCardByPath', `if path ~= nil and string.find(path, "/ui/RunUIGroup/CardHand/Card", 1, true) == 1 then + local e = _EntityService:GetEntityByPath(path) + if e ~= nil and e.UITransformComponent ~= nil then + e.UITransformComponent.UIScale = Vector3(1, 1, 1) + end +end +self:HideTooltip()`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'path' }]), method('HoverCard', `if self.DragSlot ~= nil and self.DragSlot > 0 then return end @@ -112,26 +323,21 @@ local cardId = self.Hand[slot] if cardId == nil then return end -local e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. tostring(slot)) -local tx = 0 +local e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. self:IntStr(slot)) if e ~= nil and e.UITransformComponent ~= nil then - tx = e.UITransformComponent.anchoredPosition.x e.UITransformComponent.UIScale = Vector3(1.3, 1.3, 1) end local c = self.Cards[cardId] if c ~= nil then local tip = self:BuildCardKeywordTooltip(c) if tip ~= "" then - local tipX = tx + 270 - if tx > 180 then tipX = tx - 270 end - if tipX > 760 then tipX = tx - 270 end - if tipX < -760 then tipX = tx + 270 end - self:ShowTooltipAt("키워드", tip, tipX, 90) + local anchor = self:GetTooltipAnchorForPath("/ui/RunUIGroup/CardHand/Card" .. self:IntStr(slot)) + self:ShowTooltipAt("키워드", tip, anchor.x, anchor.y) else self:HideTooltip() end end`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }]), - method('UnhoverCard', `local e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. tostring(slot)) + method('UnhoverCard', `local e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CardHand/Card" .. self:IntStr(slot)) if e ~= nil and e.UITransformComponent ~= nil then e.UITransformComponent.UIScale = Vector3(1, 1, 1) end @@ -141,9 +347,9 @@ self:HideTooltip()`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, At { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'desc' }, { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'x' }, ]), - method('ShowTooltipAt', `self:SetText("/ui/RunUIGroup/CombatHud/TooltipBox/Name", name) -self:SetText("/ui/RunUIGroup/CombatHud/TooltipBox/Desc", desc) -local e = _EntityService:GetEntityByPath("/ui/RunUIGroup/CombatHud/TooltipBox") + method('ShowTooltipAt', `self:SetText("/ui/ToolTipGroup/TooltipBox/Name", name) +self:SetText("/ui/ToolTipGroup/TooltipBox/Desc", desc) +local e = _EntityService:GetEntityByPath("/ui/ToolTipGroup/TooltipBox") if e ~= nil then if e.UITransformComponent ~= nil then e.UITransformComponent.anchoredPosition = Vector2(x, y) @@ -155,5 +361,5 @@ end`, [ { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'x' }, { Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'y' }, ]), - method('HideTooltip', `self:SetEntityEnabled("/ui/RunUIGroup/CombatHud/TooltipBox", false)`), + method('HideTooltip', `self:SetEntityEnabled("/ui/ToolTipGroup/TooltipBox", false)`), ]; diff --git a/tools/deck/gen-slaydeck.mjs b/tools/deck/gen-slaydeck.mjs index 331a0ee..5fd78ba 100644 --- a/tools/deck/gen-slaydeck.mjs +++ b/tools/deck/gen-slaydeck.mjs @@ -36,6 +36,10 @@ function writeCodeblocks() { prop('number', 'TweenEventId', '0'), prop('number', 'CardHoverTweenId', '0'), prop('number', 'DmgPopSeq', '0'), + prop('number', 'CombatCameraShakeSeq', '0'), + prop('any', 'DmgPopSlotQueue'), + prop('number', 'PlayerDmgPopIndex', '0'), + prop('any', 'HpBarOrigins'), prop('any', 'EndTurnHandler'), prop('any', 'NewGameHandler'), prop('any', 'WarriorSelectHandler'), @@ -75,6 +79,8 @@ function writeCodeblocks() { prop('any', 'ClassDeckCards'), prop('string', 'ClassDeckTitle', '""'), prop('string', 'ClassDeckClass', '""'), + prop('string', 'GridHoverPath', '""'), + prop('boolean', 'GridScrollActive', 'false'), prop('any', 'SoulUnlocks'), prop('any', 'SoulShopDef'), prop('boolean', 'SoulShopBound', 'false'), @@ -142,10 +148,14 @@ function writeCodeblocks() { prop('number', 'PoisonApplicationsThisCombat', '0'), prop('number', 'EnemyStrengthLossThisTurn', '0'), prop('number', 'ActiveKillReward', '0'), + prop('number', 'ActiveKillMaxHpGain', '0'), prop('number', 'BonusRewardScreens', '0'), 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'), @@ -173,6 +183,7 @@ function writeCodeblocks() { prop('boolean', 'NextSkillCostZero', 'false'), prop('number', 'NextSkillRepeatCount', '0'), prop('any', 'NextTurnAddCards'), + prop('any', 'ZeroCostCardIdsThisTurn'), ], [ ...bootMethods, ...screensMethods, diff --git a/tools/deck/lib/data.mjs b/tools/deck/lib/data.mjs index 4aea606..22e1985 100644 --- a/tools/deck/lib/data.mjs +++ b/tools/deck/lib/data.mjs @@ -19,18 +19,18 @@ for (const cls of Object.keys(CLASSES)) { // 전직 옵션 const JOBS = { warrior: [ - { id: 'fighter', name: '파이터', desc: '공격 특화\n콤보 어택 · 버서크\n라이징 어택', starter: 'ComboAttack', tier: 2, parent: 'warrior' }, - { id: 'page', name: '페이지', desc: '속성 차지 특화\n썬더/블리자드 차지\n파워 가드', starter: 'ThunderCharge', tier: 2, parent: 'warrior' }, - { id: 'spearman', name: '스피어맨', desc: '방어·관통 특화\n피어스 · 아이언 월\n하이퍼 바디', starter: 'Pierce', tier: 2, parent: 'warrior' }, + { id: '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: 'Fighter의 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: 'Page의 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: 'Spearman의 3차 전직\n관통과 생존 운영 심화\n스피어맨 카드 계승', starter: '', tier: 3, parent: 'spearman' }, + { id: 'berserker', name: '버서커', desc: '스피어맨의 3차 전직\n아이언클래드 장기전 풀 계승\n전사 카드 사용', starter: '', tier: 3, parent: 'spearman' }, ], magician: [ { id: 'firepoison', name: '위자드(불·독)', desc: '화염·독 특화\n파이어 애로우\n포이즌 브레스 · 앰플', starter: 'FireArrow', tier: 2, parent: 'magician' }, @@ -100,7 +100,7 @@ const SOUL_UNLOCKS = [ { key: 'relic', name: '유물 수집가', desc: '런 시작 시 유물 1개 추가', cost: 6 }, ]; function luaSoulShopTable(unlocks) { - const items = unlocks.map((u) => `\t{ key = ${luaStr(u.key)}, name = ${luaStr(u.name)}, desc = ${luaStr(u.desc)}, cost = ${u.cost} },`).join('\n'); + const items = unlocks.map((u) => `\t{ key = ${luaStr(u.key)}, name = ${luaStr(u.name)}, desc = ${luaStr(u.desc)}, cost = ${luaNum(u.cost)} },`).join('\n'); return `self.SoulShopDef = {\n${items}\n}`; } if (!ENEMIES.enemies[ENEMIES.activeEnemy]) { @@ -165,7 +165,7 @@ for (const id of RELICS.relicPool) { } function luaRelicsTable(relics) { const lines = Object.entries(relics).map(([id, r]) => - `\t${id} = { name = ${luaStr(r.name)}, desc = ${luaStr(r.desc)}, hook = ${luaStr(r.hook)}, effect = ${luaStr(r.effect)}, value = ${r.value}, icon = ${luaStr(r.icon || '')} },`); + `\t${id} = { name = ${luaStr(r.name)}, desc = ${luaStr(r.desc)}, hook = ${luaStr(r.hook)}, effect = ${luaStr(r.effect)}, value = ${luaNum(r.value)}, icon = ${luaStr(r.icon || '')} },`); return `self.Relics = {\n${lines.join('\n')}\n}`; } @@ -175,32 +175,38 @@ for (const [pid, p] of Object.entries(POTIONS.potions)) { } function luaPotionsTable(potions) { const lines = Object.entries(potions).map(([id, p]) => - `\t${id} = { name = ${luaStr(p.name)}, desc = ${luaStr(p.desc)}, effect = ${luaStr(p.effect)}, value = ${p.value}, icon = ${luaStr(p.icon || '')} },`); + `\t${id} = { name = ${luaStr(p.name)}, desc = ${luaStr(p.desc)}, effect = ${luaStr(p.effect)}, value = ${luaNum(p.value)}, icon = ${luaStr(p.icon || '')} },`); return `self.Potions = {\n${lines.join('\n')}\n}`; } function luaIntentsArray(intents) { return '{ ' + intents.map((it) => { - const fields = [`kind = ${luaStr(it.kind)}`, `value = ${it.value != null ? it.value : 0}`]; + const fields = [`kind = ${luaStr(it.kind)}`, `value = ${luaNum(it.value != null ? it.value : 0)}`]; if (it.effect != null) fields.push(`effect = ${luaStr(it.effect)}`); if (it.card != null) fields.push(`card = ${luaStr(it.card)}`); - if (it.count != null) fields.push(`count = ${it.count}`); + if (it.count != null) fields.push(`count = ${luaNum(it.count)}`); return `{ ${fields.join(', ')} }`; }).join(', ') + ' }'; } function luaEnemiesTable(enemies) { const lines = Object.entries(enemies).map(([id, e]) => - `\t${id} = { name = ${luaStr(e.name)}, maxHp = ${e.maxHp}, intents = ${luaIntentsArray(e.intents)} },`); + `\t${id} = { name = ${luaStr(e.name)}, maxHp = ${luaNum(e.maxHp)}, intents = ${luaIntentsArray(e.intents)} },`); return `self.Enemies = {\n${lines.join('\n')}\n}`; } function luaStr(s) { return '"' + String(s).replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n') + '"'; } +function luaNum(n) { + const v = Number(n); + if (!Number.isFinite(v)) return '0'; + if (Number.isInteger(v)) return String(v); + return String(v); +} function luaJobsTable(jobs) { const cls = Object.entries(jobs).map(([clsId, list]) => { const items = list.map((j) => - `\t\t{ id = ${luaStr(j.id)}, name = ${luaStr(j.name)}, desc = ${luaStr(j.desc)}, starter = ${luaStr(j.starter)}, tier = ${j.tier ?? 2}, parent = ${luaStr(j.parent ?? clsId)} },`).join('\n'); + `\t\t{ id = ${luaStr(j.id)}, name = ${luaStr(j.name)}, desc = ${luaStr(j.desc)}, starter = ${luaStr(j.starter)}, tier = ${luaNum(j.tier ?? 2)}, parent = ${luaStr(j.parent ?? clsId)} },`).join('\n'); return `\t${clsId} = {\n${items}\n\t},`; }).join('\n'); return `self.Jobs = {\n${cls}\n}`; @@ -217,97 +223,133 @@ function luaClassLineagesTable(lineages) { } function luaJobMetaTable(meta) { const rows = Object.entries(meta).map(([jobId, entry]) => - `\t${jobId} = { name = ${luaStr(entry.name)}, starter = ${luaStr(entry.starter)}, tier = ${entry.tier}, parent = ${luaStr(entry.parent)}, sourceClass = ${luaStr(entry.sourceClass)} },`); + `\t${jobId} = { name = ${luaStr(entry.name)}, starter = ${luaStr(entry.starter)}, tier = ${luaNum(entry.tier)}, parent = ${luaStr(entry.parent)}, sourceClass = ${luaStr(entry.sourceClass)} },`); return `self.JobMeta = {\n${rows.join('\n')}\n}`; } function luaCardsTable(cards) { const lines = Object.entries(cards).map(([id, c]) => { - 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.damagePerOtherHandCard != null) fields.push(`damagePerOtherHandCard = ${c.damagePerOtherHandCard}`); - if (c.damagePerAttackPlayedThisTurn != null) fields.push(`damagePerAttackPlayedThisTurn = ${c.damagePerAttackPlayedThisTurn}`); - if (c.damagePerDiscardedThisTurn != null) fields.push(`damagePerDiscardedThisTurn = ${c.damagePerDiscardedThisTurn}`); - if (c.damagePerSkillInHand != null) fields.push(`damagePerSkillInHand = ${c.damagePerSkillInHand}`); - if (c.damagePerCardDrawnThisCombat != null) fields.push(`damagePerCardDrawnThisCombat = ${c.damagePerCardDrawnThisCombat}`); - 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.firstCardDamageBonus != null) fields.push(`firstCardDamageBonus = ${c.firstCardDamageBonus}`); - if (c.rewardOnKill != null) fields.push(`rewardOnKill = ${c.rewardOnKill}`); - if (c.intangible != null) fields.push(`intangible = ${c.intangible}`); - if (c.endTurnDexLoss != null) fields.push(`endTurnDexLoss = ${c.endTurnDexLoss}`); - if (c.poisonPerTurn != null) fields.push(`poisonPerTurn = ${c.poisonPerTurn}`); - if (c.attackPoison != null) fields.push(`attackPoison = ${c.attackPoison}`); - if (c.otherHandAtLeast != null) fields.push(`otherHandAtLeast = ${c.otherHandAtLeast}`); - if (c.bonusHitsWhenOtherHandAtLeast != null) fields.push(`bonusHitsWhenOtherHandAtLeast = ${c.bonusHitsWhenOtherHandAtLeast}`); - if (c.block != null) fields.push(`block = ${c.block}`); - if (c.blockGainMultiplier != null) fields.push(`blockGainMultiplier = ${c.blockGainMultiplier}`); - if (c.blockPerDamageDealtThisTurn != null) fields.push(`blockPerDamageDealtThisTurn = ${c.blockPerDamageDealtThisTurn}`); - if (c.strength != null) fields.push(`strength = ${c.strength}`); - 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.weak != null) fields.push(`weak = ${c.weak}`); - if (c.vuln != null) fields.push(`vuln = ${c.vuln}`); + const fields = [`name = ${luaStr(c.name)}`, `cost = ${luaNum(c.cost)}`, `desc = ${luaStr(c.desc)}`, `kind = ${luaStr(c.kind)}`]; + if (c.damage != null) fields.push(`damage = ${luaNum(c.damage)}`); + if (c.damageFromCurrentBlock != null) fields.push(`damageFromCurrentBlock = ${luaNum(c.damageFromCurrentBlock)}`); + if (c.damagePerCombo != null) fields.push(`damagePerCombo = ${luaNum(c.damagePerCombo)}`); + if (c.damagePerHolyCharge != null) fields.push(`damagePerHolyCharge = ${luaNum(c.damagePerHolyCharge)}`); + if (c.attackDamagePerCombo != null) fields.push(`attackDamagePerCombo = ${luaNum(c.attackDamagePerCombo)}`); + if (c.damageNameMatch != null) fields.push(`damageNameMatch = ${luaStr(c.damageNameMatch)}`); + if (c.damagePerOwnedNameMatch != null) fields.push(`damagePerOwnedNameMatch = ${luaNum(c.damagePerOwnedNameMatch)}`); + if (c.damagePerOtherHandCard != null) fields.push(`damagePerOtherHandCard = ${luaNum(c.damagePerOtherHandCard)}`); + if (c.damagePerAttackPlayedThisTurn != null) fields.push(`damagePerAttackPlayedThisTurn = ${luaNum(c.damagePerAttackPlayedThisTurn)}`); + if (c.damagePerDiscardedThisTurn != null) fields.push(`damagePerDiscardedThisTurn = ${luaNum(c.damagePerDiscardedThisTurn)}`); + if (c.damagePerSkillInHand != null) fields.push(`damagePerSkillInHand = ${luaNum(c.damagePerSkillInHand)}`); + if (c.damagePerCardDrawnThisCombat != null) fields.push(`damagePerCardDrawnThisCombat = ${luaNum(c.damagePerCardDrawnThisCombat)}`); + if (c.damagePerTurn != null) fields.push(`damagePerTurn = ${luaNum(c.damagePerTurn)}`); + if (c.cardPlayedDamage != null) fields.push(`cardPlayedDamage = ${luaNum(c.cardPlayedDamage)}`); + if (c.cardPlayedRandomDamage != null) fields.push(`cardPlayedRandomDamage = ${luaNum(c.cardPlayedRandomDamage)}`); + if (c.attackPlayedDamage != null) fields.push(`attackPlayedDamage = ${luaNum(c.attackPlayedDamage)}`); + if (c.firstCardDamageBonus != null) fields.push(`firstCardDamageBonus = ${luaNum(c.firstCardDamageBonus)}`); + if (c.rewardOnKill != null) fields.push(`rewardOnKill = ${luaNum(c.rewardOnKill)}`); + if (c.maxHpOnKill != null) fields.push(`maxHpOnKill = ${luaNum(c.maxHpOnKill)}`); + if (c.intangible != null) fields.push(`intangible = ${luaNum(c.intangible)}`); + if (c.endTurnDexLoss != null) fields.push(`endTurnDexLoss = ${luaNum(c.endTurnDexLoss)}`); + if (c.poisonPerTurn != null) fields.push(`poisonPerTurn = ${luaNum(c.poisonPerTurn)}`); + if (c.attackPoison != null) fields.push(`attackPoison = ${luaNum(c.attackPoison)}`); + if (c.otherHandAtLeast != null) fields.push(`otherHandAtLeast = ${luaNum(c.otherHandAtLeast)}`); + if (c.bonusHitsWhenOtherHandAtLeast != null) fields.push(`bonusHitsWhenOtherHandAtLeast = ${luaNum(c.bonusHitsWhenOtherHandAtLeast)}`); + if (c.block != null) fields.push(`block = ${luaNum(c.block)}`); + if (c.blockGainMultiplier != null) fields.push(`blockGainMultiplier = ${luaNum(c.blockGainMultiplier)}`); + if (c.blockPerDamageDealtThisTurn != null) fields.push(`blockPerDamageDealtThisTurn = ${luaNum(c.blockPerDamageDealtThisTurn)}`); + if (c.strength != null) fields.push(`strength = ${luaNum(c.strength)}`); + if (c.dex != null) fields.push(`dex = ${luaNum(c.dex)}`); + if (c.thorns != null) fields.push(`thorns = ${luaNum(c.thorns)}`); + if (c.cardPlayedBlock != null) fields.push(`cardPlayedBlock = ${luaNum(c.cardPlayedBlock)}`); + if (c.comboOnAttack != null) fields.push(`comboOnAttack = ${luaNum(c.comboOnAttack)}`); + if (c.comboMax != null) fields.push(`comboMax = ${luaNum(c.comboMax)}`); + if (c.attackWeak != null) fields.push(`attackWeak = ${luaNum(c.attackWeak)}`); + if (c.holyChargeOnHolyForce != null) fields.push(`holyChargeOnHolyForce = ${luaNum(c.holyChargeOnHolyForce)}`); + if (c.holyChargeMax != null) fields.push(`holyChargeMax = ${luaNum(c.holyChargeMax)}`); + if (c.damageTakenReduction != null) fields.push(`damageTakenReduction = ${luaNum(c.damageTakenReduction)}`); + if (c.blockOnDamaged != null) fields.push(`blockOnDamaged = ${luaNum(c.blockOnDamaged)}`); + if (c.strengthOnDamagedOnce != null) fields.push(`strengthOnDamagedOnce = ${luaNum(c.strengthOnDamagedOnce)}`); + if (c.drawOnExhaust != null) fields.push(`drawOnExhaust = ${luaNum(c.drawOnExhaust)}`); + if (c.drawNameMatchAutoPlay != null) fields.push(`drawNameMatchAutoPlay = ${luaStr(c.drawNameMatchAutoPlay)}`); + if (c.weak != null) fields.push(`weak = ${luaNum(c.weak)}`); + if (c.vuln != null) fields.push(`vuln = ${luaNum(c.vuln)}`); if (c.powerEffect != null) fields.push(`powerEffect = ${luaStr(c.powerEffect)}`); - if (c.value != null) fields.push(`value = ${c.value}`); + if (c.value != null) fields.push(`value = ${luaNum(c.value)}`); if (!c.class) throw new Error(`[gen-slaydeck] 카드 ${id}에 class 누락`); fields.push(`class = ${luaStr(c.class)}`); fields.push(`rarity = ${luaStr(c.rarity)}`); - if (c.hits != null) fields.push(`hits = ${c.hits}`); + if (c.hits != null) fields.push(`hits = ${luaNum(c.hits)}`); if (c.pierce === true) fields.push('pierce = true'); - if (c.selfVuln != null) fields.push(`selfVuln = ${c.selfVuln}`); - if (c.draw != null) fields.push(`draw = ${c.draw}`); - if (c.drawUntilHandSize != null) fields.push(`drawUntilHandSize = ${c.drawUntilHandSize}`); - if (c.drawSkillBlock != null) fields.push(`drawSkillBlock = ${c.drawSkillBlock}`); - if (c.drawDamage != null) fields.push(`drawDamage = ${c.drawDamage}`); - if (c.drawPoison != null) fields.push(`drawPoison = ${c.drawPoison}`); - if (c.heal != null) fields.push(`heal = ${c.heal}`); - if (c.gainEnergy != null) fields.push(`gainEnergy = ${c.gainEnergy}`); - if (c.poison != null) fields.push(`poison = ${c.poison}`); - if (c.discard != null) fields.push(`discard = ${c.discard}`); + if (c.selfVuln != null) fields.push(`selfVuln = ${luaNum(c.selfVuln)}`); + if (c.draw != null) fields.push(`draw = ${luaNum(c.draw)}`); + if (c.drawUntilHandSize != null) fields.push(`drawUntilHandSize = ${luaNum(c.drawUntilHandSize)}`); + if (c.drawSkillBlock != null) fields.push(`drawSkillBlock = ${luaNum(c.drawSkillBlock)}`); + if (c.drawDamage != null) fields.push(`drawDamage = ${luaNum(c.drawDamage)}`); + if (c.drawPoison != null) fields.push(`drawPoison = ${luaNum(c.drawPoison)}`); + if (c.exhaustHandNonAttack === true) fields.push('exhaustHandNonAttack = true'); + if (c.exhaustHandAll === true) fields.push('exhaustHandAll = true'); + if (c.drawPerExhausted != null) fields.push(`drawPerExhausted = ${luaNum(c.drawPerExhausted)}`); + if (c.blockPerExhaustedCard != null) fields.push(`blockPerExhaustedCard = ${luaNum(c.blockPerExhaustedCard)}`); + if (c.addRandomCardCount != null) fields.push(`addRandomCardCount = ${luaNum(c.addRandomCardCount)}`); + if (c.addRandomCardPerExhausted != null) fields.push(`addRandomCardPerExhausted = ${luaNum(c.addRandomCardPerExhausted)}`); + if (c.addRandomCardKind != null) fields.push(`addRandomCardKind = ${luaStr(c.addRandomCardKind)}`); + if (c.addRandomCardSameClass === true) fields.push('addRandomCardSameClass = true'); + if (c.addedCardsCostZeroThisTurn === true) fields.push('addedCardsCostZeroThisTurn = true'); + if (c.playTopDrawPileCount != null) fields.push(`playTopDrawPileCount = ${luaNum(c.playTopDrawPileCount)}`); + if (c.playTopDrawPileCountPerEnergy != null) fields.push(`playTopDrawPileCountPerEnergy = ${luaNum(c.playTopDrawPileCountPerEnergy)}`); + if (c.heal != null) fields.push(`heal = ${luaNum(c.heal)}`); + if (c.healPerHolyCharge != null) fields.push(`healPerHolyCharge = ${luaNum(c.healPerHolyCharge)}`); + if (c.gainEnergy != null) fields.push(`gainEnergy = ${luaNum(c.gainEnergy)}`); + if (c.comboGain != null) fields.push(`comboGain = ${luaNum(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 = ${luaNum(c.holyChargeGain)}`); + if (c.blockPerHolyCharge != null) fields.push(`blockPerHolyCharge = ${luaNum(c.blockPerHolyCharge)}`); + if (c.holyChargeSpendAll === true) fields.push('holyChargeSpendAll = true'); + if (c.poison != null) fields.push(`poison = ${luaNum(c.poison)}`); + if (c.discard != null) fields.push(`discard = ${luaNum(c.discard)}`); if (c.discardAll === true) fields.push('discardAll = true'); - if (c.drawPerDiscarded != null) fields.push(`drawPerDiscarded = ${c.drawPerDiscarded}`); - if (c.addShiv != null) fields.push(`addShiv = ${c.addShiv}`); - if (c.turnStartShiv != null) fields.push(`turnStartShiv = ${c.turnStartShiv}`); - if (c.turnStartDraw != null) fields.push(`turnStartDraw = ${c.turnStartDraw}`); - if (c.turnStartDiscard != null) fields.push(`turnStartDiscard = ${c.turnStartDiscard}`); + if (c.drawPerDiscarded != null) fields.push(`drawPerDiscarded = ${luaNum(c.drawPerDiscarded)}`); + if (c.addShiv != null) fields.push(`addShiv = ${luaNum(c.addShiv)}`); + if (c.turnStartShiv != null) fields.push(`turnStartShiv = ${luaNum(c.turnStartShiv)}`); + if (c.turnStartDraw != null) fields.push(`turnStartDraw = ${luaNum(c.turnStartDraw)}`); + if (c.turnStartDiscard != null) fields.push(`turnStartDiscard = ${luaNum(c.turnStartDiscard)}`); if (c.handCostZeroThisTurn === true) fields.push('handCostZeroThisTurn = true'); if (c.drawDisabledThisTurn === true) fields.push('drawDisabledThisTurn = true'); if (c.addShivPerDiscard === true) fields.push('addShivPerDiscard = true'); if (c.useAllEnergy === true) fields.push('useAllEnergy = true'); - if (c.shivDamageBonus != null) fields.push(`shivDamageBonus = ${c.shivDamageBonus}`); - if (c.firstShivDamageBonus != null) fields.push(`firstShivDamageBonus = ${c.firstShivDamageBonus}`); + if (c.shivDamageBonus != null) fields.push(`shivDamageBonus = ${luaNum(c.shivDamageBonus)}`); + if (c.firstShivDamageBonus != null) fields.push(`firstShivDamageBonus = ${luaNum(c.firstShivDamageBonus)}`); if (c.shivRetain === true) fields.push('shivRetain = true'); if (c.shivAoe === true) fields.push('shivAoe = true'); - if (c.attackDamageVsWeakMultiplier != null) fields.push(`attackDamageVsWeakMultiplier = ${c.attackDamageVsWeakMultiplier}`); - if (c.poisonHits != null) fields.push(`poisonHits = ${c.poisonHits}`); + if (c.attackDamageVsWeakMultiplier != null) fields.push(`attackDamageVsWeakMultiplier = ${luaNum(c.attackDamageVsWeakMultiplier)}`); + if (c.poisonHits != null) fields.push(`poisonHits = ${luaNum(c.poisonHits)}`); if (c.poisonRandomTargets === true) fields.push('poisonRandomTargets = true'); if (c.poisonIfTargetPoisoned === true) fields.push('poisonIfTargetPoisoned = true'); - if (c.xDamagePerEnergy != null) fields.push(`xDamagePerEnergy = ${c.xDamagePerEnergy}`); - if (c.xWeakPerEnergy != null) fields.push(`xWeakPerEnergy = ${c.xWeakPerEnergy}`); - if (c.nextTurnBlock != null) fields.push(`nextTurnBlock = ${c.nextTurnBlock}`); - if (c.nextTurnDraw != null) fields.push(`nextTurnDraw = ${c.nextTurnDraw}`); + if (c.xDamagePerEnergy != null) fields.push(`xDamagePerEnergy = ${luaNum(c.xDamagePerEnergy)}`); + if (c.xWeakPerEnergy != null) fields.push(`xWeakPerEnergy = ${luaNum(c.xWeakPerEnergy)}`); + if (c.nextTurnBlock != null) fields.push(`nextTurnBlock = ${luaNum(c.nextTurnBlock)}`); + if (c.nextTurnDraw != null) fields.push(`nextTurnDraw = ${luaNum(c.nextTurnDraw)}`); if (c.nextTurnKeepBlock === true) fields.push('nextTurnKeepBlock = true'); - if (c.nextTurnAttackMultiplier != null) fields.push(`nextTurnAttackMultiplier = ${c.nextTurnAttackMultiplier}`); - if (c.nextTurnCopies != null) fields.push(`nextTurnCopies = ${c.nextTurnCopies}`); + if (c.nextTurnAttackMultiplier != null) fields.push(`nextTurnAttackMultiplier = ${luaNum(c.nextTurnAttackMultiplier)}`); + if (c.nextTurnCopies != null) fields.push(`nextTurnCopies = ${luaNum(c.nextTurnCopies)}`); if (c.nextTurnSelectHandCard === true) fields.push('nextTurnSelectHandCard = true'); if (c.nextTurnSelectPrompt != null) fields.push(`nextTurnSelectPrompt = ${luaStr(c.nextTurnSelectPrompt)}`); - if (c.nextSkillRepeatCount != null) fields.push(`nextSkillRepeatCount = ${c.nextSkillRepeatCount}`); + if (c.nextSkillRepeatCount != null) fields.push(`nextSkillRepeatCount = ${luaNum(c.nextSkillRepeatCount)}`); if (c.nextSkillCostZero === true) fields.push('nextSkillCostZero = true'); - if (c.skillCostReductionThisTurn != null) fields.push(`skillCostReductionThisTurn = ${c.skillCostReductionThisTurn}`); + if (c.skillCostReductionThisTurn != null) fields.push(`skillCostReductionThisTurn = ${luaNum(c.skillCostReductionThisTurn)}`); if (c.skillSlyOnPlay === true) fields.push('skillSlyOnPlay = true'); - if (c.turnHandSlyCount != null) fields.push(`turnHandSlyCount = ${c.turnHandSlyCount}`); - if (c.combatCostReductionOnPlay != null) fields.push(`combatCostReductionOnPlay = ${c.combatCostReductionOnPlay}`); + if (c.turnHandSlyCount != null) fields.push(`turnHandSlyCount = ${luaNum(c.turnHandSlyCount)}`); + if (c.combatCostReductionOnPlay != null) fields.push(`combatCostReductionOnPlay = ${luaNum(c.combatCostReductionOnPlay)}`); if (c.randomTargetEachHit === true) fields.push('randomTargetEachHit = true'); if (c.repeatOnKill === true) fields.push('repeatOnKill = true'); if (c.affectsAllEnemies === true) fields.push('affectsAllEnemies = true'); if (c.removeEnemyBlock === true) fields.push('removeEnemyBlock = true'); if (c.removeEnemyArtifact === true) fields.push('removeEnemyArtifact = true'); - if (c.enemyStrengthLossThisTurn != null) fields.push(`enemyStrengthLossThisTurn = ${c.enemyStrengthLossThisTurn}`); - if (c.extraPoisonTicks != null) fields.push(`extraPoisonTicks = ${c.extraPoisonTicks}`); - if (c.poisonApplicationBurstEvery != null) fields.push(`poisonApplicationBurstEvery = ${c.poisonApplicationBurstEvery}`); - if (c.poisonApplicationBurstDamage != null) fields.push(`poisonApplicationBurstDamage = ${c.poisonApplicationBurstDamage}`); + if (c.enemyStrengthLossThisTurn != null) fields.push(`enemyStrengthLossThisTurn = ${luaNum(c.enemyStrengthLossThisTurn)}`); + if (c.extraPoisonTicks != null) fields.push(`extraPoisonTicks = ${luaNum(c.extraPoisonTicks)}`); + if (c.poisonApplicationBurstEvery != null) fields.push(`poisonApplicationBurstEvery = ${luaNum(c.poisonApplicationBurstEvery)}`); + if (c.poisonApplicationBurstDamage != null) fields.push(`poisonApplicationBurstDamage = ${luaNum(c.poisonApplicationBurstDamage)}`); if (c.innate === true) fields.push('innate = true'); if (c.playableWhenDrawPileEmpty === true) fields.push('playableWhenDrawPileEmpty = true'); if (c.sly === true) fields.push('sly = true'); @@ -317,7 +359,7 @@ function luaCardsTable(cards) { if (c.unplayable === true) fields.push('unplayable = true'); if (c.curse === true) fields.push('curse = true'); if (c.token === true) fields.push('token = true'); - if (c.endTurnDamage != null) fields.push(`endTurnDamage = ${c.endTurnDamage}`); + if (c.endTurnDamage != null) fields.push(`endTurnDamage = ${luaNum(c.endTurnDamage)}`); if (c.fx != null) fields.push(`fx = ${luaStr(c.fx)}`); if (c.image != null) fields.push(`image = ${luaStr(c.image)}`); return `\t${id} = { ${fields.join(', ')} },`; diff --git a/tools/verify/cardkinds.mjs b/tools/verify/cardkinds.mjs index 232da53..b7405a8 100644 --- a/tools/verify/cardkinds.mjs +++ b/tools/verify/cardkinds.mjs @@ -17,6 +17,10 @@ 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', ]; @@ -28,7 +32,7 @@ for (const [id, c] of Object.entries(cards)) { issues.push(`${id}(${c.name}): 미지원 kind="${c.kind}"`); continue; } - if (c.kind === 'Attack' && c.damage == null && c.xDamagePerEnergy == null) { + if (c.kind === 'Attack' && c.damage == null && c.xDamagePerEnergy == null && c.damageFromCurrentBlock == null) { issues.push(`${id}(${c.name}): kind=Attack인데 damage 없음 → 몬스터 드롭 라우팅 불가(방어/유틸이면 kind=Skill)`); } if (c.kind === 'Power' && !POWER_FIELDS.some((f) => c[f] != null)) { diff --git a/ui/DeckUIGroup.ui b/ui/DeckUIGroup.ui index d1b226b..c18199e 100644 --- a/ui/DeckUIGroup.ui +++ b/ui/DeckUIGroup.ui @@ -24,7 +24,7 @@ "enable": true, "visible": true, "localize": true, - "displayOrder": 4, + "displayOrder": 6, "pathConstraints": "//", "revision": 1, "origin": { @@ -1539,7 +1539,7 @@ { "id": "0e200005-0000-4000-8000-00000e200005", "path": "/ui/DeckUIGroup/DeckAllHud/Grid", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ScrollLayoutGroupComponent", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ScrollLayoutGroupComponent,MOD.Core.UITouchReceiveComponent", "jsonString": { "name": "Grid", "path": "/ui/DeckUIGroup/DeckAllHud/Grid", @@ -1728,6 +1728,10 @@ "UseScroll": true, "VerticalScrollBarDirection": 1, "Enable": true + }, + { + "@type": "MOD.Core.UITouchReceiveComponent", + "Enable": true } ], "@version": 1 @@ -106038,7 +106042,7 @@ { "id": "0e100005-0000-4000-8000-00000e100005", "path": "/ui/DeckUIGroup/DeckInspectHud/Grid", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ScrollLayoutGroupComponent", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ScrollLayoutGroupComponent,MOD.Core.UITouchReceiveComponent", "jsonString": { "name": "Grid", "path": "/ui/DeckUIGroup/DeckInspectHud/Grid", @@ -106227,6 +106231,10 @@ "UseScroll": true, "VerticalScrollBarDirection": 1, "Enable": true + }, + { + "@type": "MOD.Core.UITouchReceiveComponent", + "Enable": true } ], "@version": 1 diff --git a/ui/LobbyUIGroup.ui b/ui/LobbyUIGroup.ui index 5d36ac8..55ca0ce 100644 --- a/ui/LobbyUIGroup.ui +++ b/ui/LobbyUIGroup.ui @@ -24,7 +24,7 @@ "enable": true, "visible": true, "localize": true, - "displayOrder": 5, + "displayOrder": 1, "pathConstraints": "//", "revision": 1, "origin": { diff --git a/ui/PopupGroup.ui b/ui/PopupGroup.ui index c46c170..dfbe447 100644 --- a/ui/PopupGroup.ui +++ b/ui/PopupGroup.ui @@ -24,7 +24,7 @@ "enable": true, "visible": true, "localize": true, - "displayOrder": 1, + "displayOrder": 2, "pathConstraints": "//", "revision": 1, "origin": { diff --git a/ui/RunUIGroup.ui b/ui/RunUIGroup.ui index 3588c09..1d458a6 100644 --- a/ui/RunUIGroup.ui +++ b/ui/RunUIGroup.ui @@ -24,7 +24,7 @@ "enable": true, "visible": true, "localize": true, - "displayOrder": 6, + "displayOrder": 5, "pathConstraints": "//", "revision": 1, "origin": { @@ -52719,7 +52719,7 @@ "name": "CombatHud", "path": "/ui/RunUIGroup/CombatHud", "nameEditable": true, - "enable": false, + "enable": true, "visible": true, "localize": true, "displayOrder": 7, @@ -52852,3390 +52852,6 @@ "@version": 1 } }, - { - "id": "0cb000fb-0000-4000-8000-00000cb000fb", - "path": "/ui/RunUIGroup/CombatHud/DmgPop1", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "DmgPop1", - "path": "/ui/RunUIGroup/CombatHud/DmgPop1", - "nameEditable": true, - "enable": false, - "visible": true, - "localize": true, - "displayOrder": 0, - "pathConstraints": "////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 96.0, - "y": 28.0 - }, - "OffsetMin": { - "x": -96.0, - "y": -28.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 192.0, - "y": 56.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 1, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb00186-0000-4000-8000-00000cb00186", - "path": "/ui/RunUIGroup/CombatHud/DmgPop1/Digit1", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit1", - "path": "/ui/RunUIGroup/CombatHud/DmgPop1/Digit1", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 0, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb00187-0000-4000-8000-00000cb00187", - "path": "/ui/RunUIGroup/CombatHud/DmgPop1/Digit2", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit2", - "path": "/ui/RunUIGroup/CombatHud/DmgPop1/Digit2", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 1, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb00188-0000-4000-8000-00000cb00188", - "path": "/ui/RunUIGroup/CombatHud/DmgPop1/Digit3", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit3", - "path": "/ui/RunUIGroup/CombatHud/DmgPop1/Digit3", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 2, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb00189-0000-4000-8000-00000cb00189", - "path": "/ui/RunUIGroup/CombatHud/DmgPop1/Digit4", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit4", - "path": "/ui/RunUIGroup/CombatHud/DmgPop1/Digit4", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 3, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb0018a-0000-4000-8000-00000cb0018a", - "path": "/ui/RunUIGroup/CombatHud/DmgPop1/Digit5", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit5", - "path": "/ui/RunUIGroup/CombatHud/DmgPop1/Digit5", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 4, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb000fc-0000-4000-8000-00000cb000fc", - "path": "/ui/RunUIGroup/CombatHud/DmgPop2", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "DmgPop2", - "path": "/ui/RunUIGroup/CombatHud/DmgPop2", - "nameEditable": true, - "enable": false, - "visible": true, - "localize": true, - "displayOrder": 1, - "pathConstraints": "////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 96.0, - "y": 28.0 - }, - "OffsetMin": { - "x": -96.0, - "y": -28.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 192.0, - "y": 56.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 1, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb00190-0000-4000-8000-00000cb00190", - "path": "/ui/RunUIGroup/CombatHud/DmgPop2/Digit1", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit1", - "path": "/ui/RunUIGroup/CombatHud/DmgPop2/Digit1", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 0, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb00191-0000-4000-8000-00000cb00191", - "path": "/ui/RunUIGroup/CombatHud/DmgPop2/Digit2", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit2", - "path": "/ui/RunUIGroup/CombatHud/DmgPop2/Digit2", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 1, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb00192-0000-4000-8000-00000cb00192", - "path": "/ui/RunUIGroup/CombatHud/DmgPop2/Digit3", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit3", - "path": "/ui/RunUIGroup/CombatHud/DmgPop2/Digit3", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 2, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb00193-0000-4000-8000-00000cb00193", - "path": "/ui/RunUIGroup/CombatHud/DmgPop2/Digit4", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit4", - "path": "/ui/RunUIGroup/CombatHud/DmgPop2/Digit4", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 3, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb00194-0000-4000-8000-00000cb00194", - "path": "/ui/RunUIGroup/CombatHud/DmgPop2/Digit5", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit5", - "path": "/ui/RunUIGroup/CombatHud/DmgPop2/Digit5", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 4, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb000fd-0000-4000-8000-00000cb000fd", - "path": "/ui/RunUIGroup/CombatHud/DmgPop3", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "DmgPop3", - "path": "/ui/RunUIGroup/CombatHud/DmgPop3", - "nameEditable": true, - "enable": false, - "visible": true, - "localize": true, - "displayOrder": 2, - "pathConstraints": "////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 96.0, - "y": 28.0 - }, - "OffsetMin": { - "x": -96.0, - "y": -28.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 192.0, - "y": 56.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 1, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb0019a-0000-4000-8000-00000cb0019a", - "path": "/ui/RunUIGroup/CombatHud/DmgPop3/Digit1", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit1", - "path": "/ui/RunUIGroup/CombatHud/DmgPop3/Digit1", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 0, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb0019b-0000-4000-8000-00000cb0019b", - "path": "/ui/RunUIGroup/CombatHud/DmgPop3/Digit2", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit2", - "path": "/ui/RunUIGroup/CombatHud/DmgPop3/Digit2", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 1, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb0019c-0000-4000-8000-00000cb0019c", - "path": "/ui/RunUIGroup/CombatHud/DmgPop3/Digit3", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit3", - "path": "/ui/RunUIGroup/CombatHud/DmgPop3/Digit3", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 2, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb0019d-0000-4000-8000-00000cb0019d", - "path": "/ui/RunUIGroup/CombatHud/DmgPop3/Digit4", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit4", - "path": "/ui/RunUIGroup/CombatHud/DmgPop3/Digit4", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 3, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb0019e-0000-4000-8000-00000cb0019e", - "path": "/ui/RunUIGroup/CombatHud/DmgPop3/Digit5", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit5", - "path": "/ui/RunUIGroup/CombatHud/DmgPop3/Digit5", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 4, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb000fe-0000-4000-8000-00000cb000fe", - "path": "/ui/RunUIGroup/CombatHud/DmgPop4", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "DmgPop4", - "path": "/ui/RunUIGroup/CombatHud/DmgPop4", - "nameEditable": true, - "enable": false, - "visible": true, - "localize": true, - "displayOrder": 3, - "pathConstraints": "////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 96.0, - "y": 28.0 - }, - "OffsetMin": { - "x": -96.0, - "y": -28.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 192.0, - "y": 56.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 1, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb001a4-0000-4000-8000-00000cb001a4", - "path": "/ui/RunUIGroup/CombatHud/DmgPop4/Digit1", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit1", - "path": "/ui/RunUIGroup/CombatHud/DmgPop4/Digit1", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 0, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb001a5-0000-4000-8000-00000cb001a5", - "path": "/ui/RunUIGroup/CombatHud/DmgPop4/Digit2", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit2", - "path": "/ui/RunUIGroup/CombatHud/DmgPop4/Digit2", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 1, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb001a6-0000-4000-8000-00000cb001a6", - "path": "/ui/RunUIGroup/CombatHud/DmgPop4/Digit3", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit3", - "path": "/ui/RunUIGroup/CombatHud/DmgPop4/Digit3", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 2, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb001a7-0000-4000-8000-00000cb001a7", - "path": "/ui/RunUIGroup/CombatHud/DmgPop4/Digit4", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit4", - "path": "/ui/RunUIGroup/CombatHud/DmgPop4/Digit4", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 3, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb001a8-0000-4000-8000-00000cb001a8", - "path": "/ui/RunUIGroup/CombatHud/DmgPop4/Digit5", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "Digit5", - "path": "/ui/RunUIGroup/CombatHud/DmgPop4/Digit5", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 4, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 11.0, - "y": 16.0 - }, - "OffsetMin": { - "x": -11.0, - "y": -16.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 22.0, - "y": 32.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 0.0 - }, - "Position": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "b94c19830538447f81617035d89bcc05" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 0, - "Enable": true - } - ], - "@version": 1 - } - }, { "id": "0cb0002a-0000-4000-8000-00000cb0002a", "path": "/ui/RunUIGroup/CombatHud/MonsterStatus1", @@ -56247,7 +52863,7 @@ "enable": false, "visible": true, "localize": true, - "displayOrder": 4, + "displayOrder": 0, "pathConstraints": "////", "revision": 1, "origin": { @@ -57986,7 +54602,7 @@ "enable": false, "visible": true, "localize": true, - "displayOrder": 5, + "displayOrder": 1, "pathConstraints": "////", "revision": 1, "origin": { @@ -59735,7 +56351,7 @@ "enable": false, "visible": true, "localize": true, - "displayOrder": 6, + "displayOrder": 2, "pathConstraints": "////", "revision": 1, "origin": { @@ -61484,7 +58100,7 @@ "enable": false, "visible": true, "localize": true, - "displayOrder": 7, + "displayOrder": 3, "pathConstraints": "////", "revision": 1, "origin": { @@ -63233,7 +59849,7 @@ "enable": true, "visible": true, "localize": true, - "displayOrder": 8, + "displayOrder": 4, "pathConstraints": "////", "revision": 1, "origin": { @@ -63248,30 +59864,30 @@ { "@type": "MOD.Core.UITransformComponent", "ActivePlatform": 255, - "AlignmentOption": 0, + "AlignmentOption": 1, "AnchorsMax": { - "x": 0.5, + "x": 0.0, "y": 0.5 }, "AnchorsMin": { - "x": 0.5, + "x": 0.0, "y": 0.5 }, "MobileOnly": false, "OffsetMax": { - "x": -631.0187, - "y": -388.000153 + "x": 390.726929, + "y": 191.220444 }, "OffsetMin": { - "x": -931.0187, - "y": -510.440826 + "x": 61.93605, + "y": 68.77977 }, "Pivot": { "x": 0.5, "y": 0.5 }, "RectSize": { - "x": 300.0, + "x": 328.790863, "y": 122.440674 }, "UIMode": 1, @@ -63282,12 +59898,12 @@ }, "UIVersion": 2, "anchoredPosition": { - "x": -781.0187, - "y": -449.2205 + "x": 226.331482, + "y": 130.0001 }, "Position": { - "x": -781.0187, - "y": -449.2205, + "x": -733.6685, + "y": 130.0001, "z": 0.0 }, "QuaternionRotation": { @@ -63326,7 +59942,7 @@ "r": 0.08, "g": 0.09, "b": 0.11, - "a": 0.78 + "a": 0.0 }, "DropShadow": false, "DropShadowAngle": 30.0, @@ -63371,7 +59987,7 @@ "name": "Name", "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/Name", "nameEditable": true, - "enable": true, + "enable": false, "visible": true, "localize": true, "displayOrder": 0, @@ -63401,11 +60017,11 @@ "MobileOnly": false, "OffsetMax": { "x": 140.0, - "y": 42.0 + "y": 56.56 }, "OffsetMin": { "x": -140.0, - "y": 14.0 + "y": 28.5600014 }, "Pivot": { "x": 0.5, @@ -63424,11 +60040,11 @@ "UIVersion": 2, "anchoredPosition": { "x": 0.0, - "y": 28.0 + "y": 42.56 }, "Position": { "x": 0.0, - "y": 28.0, + "y": 42.56, "z": 0.0 }, "QuaternionRotation": { @@ -63577,31 +60193,31 @@ { "@type": "MOD.Core.UITransformComponent", "ActivePlatform": 255, - "AlignmentOption": 0, + "AlignmentOption": 2, "AnchorsMax": { - "x": 0.5, + "x": 1.0, "y": 0.5 }, "AnchorsMin": { - "x": 0.5, + "x": 1.0, "y": 0.5 }, "MobileOnly": false, "OffsetMax": { - "x": 140.0, - "y": 2.0 + "x": -19.0, + "y": 3.0 }, "OffsetMin": { - "x": -140.0, - "y": -14.0 + "x": -241.0, + "y": -15.0 }, "Pivot": { "x": 0.5, "y": 0.5 }, "RectSize": { - "x": 280.0, - "y": 16.0 + "x": 222.0, + "y": 18.0 }, "UIMode": 1, "UIScale": { @@ -63611,11 +60227,11 @@ }, "UIVersion": 2, "anchoredPosition": { - "x": 0.0, + "x": -130.0, "y": -6.0 }, "Position": { - "x": 0.0, + "x": 34.3954468, "y": -6.0, "z": 0.0 }, @@ -63718,30 +60334,30 @@ { "@type": "MOD.Core.UITransformComponent", "ActivePlatform": 255, - "AlignmentOption": 0, + "AlignmentOption": 2, "AnchorsMax": { - "x": 0.5, + "x": 1.0, "y": 0.5 }, "AnchorsMin": { - "x": 0.5, + "x": 1.0, "y": 0.5 }, "MobileOnly": false, "OffsetMax": { - "x": 140.0, - "y": 2.2202 + "x": -20.0, + "y": 2.0 }, "OffsetMin": { - "x": -140.0, - "y": -13.7798 + "x": -240.0, + "y": -14.0 }, "Pivot": { - "x": 0.0, + "x": 0.5, "y": 0.5 }, "RectSize": { - "x": 280.0, + "x": 220.0, "y": 16.0 }, "UIMode": 1, @@ -63752,12 +60368,12 @@ }, "UIVersion": 2, "anchoredPosition": { - "x": -140.0, - "y": -5.7798 + "x": -130.0, + "y": -6.0 }, "Position": { - "x": -140.0, - "y": -5.7798, + "x": 34.3954468, + "y": -6.0, "z": 0.0 }, "QuaternionRotation": { @@ -63859,30 +60475,30 @@ { "@type": "MOD.Core.UITransformComponent", "ActivePlatform": 255, - "AlignmentOption": 0, + "AlignmentOption": 2, "AnchorsMax": { - "x": 0.5, + "x": 1.0, "y": 0.5 }, "AnchorsMin": { - "x": 0.5, + "x": 1.0, "y": 0.5 }, "MobileOnly": false, "OffsetMax": { - "x": 108.5797, - "y": -14.7796 + "x": -19.9999924, + "y": 7.0 }, "OffsetMin": { - "x": -111.4203, - "y": -38.7796021 + "x": -240.0, + "y": -17.0 }, "Pivot": { "x": 0.5, "y": 0.5 }, "RectSize": { - "x": 220.0, + "x": 220.000015, "y": 24.0 }, "UIMode": 1, @@ -63893,12 +60509,12 @@ }, "UIVersion": 2, "anchoredPosition": { - "x": -1.4203, - "y": -26.7796 + "x": -130.0, + "y": -5.0 }, "Position": { - "x": -1.4203, - "y": -26.7796, + "x": 34.3954468, + "y": -5.0, "z": 0.0 }, "QuaternionRotation": { @@ -64047,31 +60663,31 @@ { "@type": "MOD.Core.UITransformComponent", "ActivePlatform": 255, - "AlignmentOption": 0, + "AlignmentOption": 4, "AnchorsMax": { - "x": 0.5, - "y": 0.5 + "x": 0.0, + "y": 1.0 }, "AnchorsMin": { - "x": 0.5, - "y": 0.5 + "x": 0.0, + "y": 1.0 }, "MobileOnly": false, "OffsetMax": { - "x": -95.3294, - "y": 50.2206 + "x": 61.6262436, + "y": -33.4703369 }, "OffsetMin": { - "x": -139.3294, - "y": 10.2206 + "x": 1.62624359, + "y": -100.970337 }, "Pivot": { "x": 0.5, "y": 0.5 }, "RectSize": { - "x": 44.0, - "y": 40.0 + "x": 60.0, + "y": 67.5 }, "UIMode": 1, "UIScale": { @@ -64081,12 +60697,12 @@ }, "UIVersion": 2, "anchoredPosition": { - "x": -117.3294, - "y": 30.2206 + "x": 31.6262436, + "y": -67.22034 }, "Position": { - "x": -117.3294, - "y": 30.2206, + "x": -132.7692, + "y": -6.0, "z": 0.0 }, "QuaternionRotation": { @@ -64107,7 +60723,7 @@ "AnimClipPlayType": 0, "EndFrameIndex": 2147483647, "ImageRUID": { - "DataId": "" + "DataId": "c9a656da011f46d896fd8a5dbb3a1696" }, "LocalPosition": { "x": 0.0, @@ -64122,9 +60738,9 @@ "PreserveSprite": 0, "StartFrameIndex": 0, "Color": { - "r": 0.32, - "g": 0.5, - "b": 0.85, + "r": 1.0, + "g": 1.0, + "b": 1.0, "a": 1.0 }, "DropShadow": false, @@ -64155,7 +60771,7 @@ }, "OutlineWidth": 3.0, "RaycastTarget": false, - "Type": 1, + "Type": 0, "Enable": true } ], @@ -64199,11 +60815,11 @@ }, "MobileOnly": false, "OffsetMax": { - "x": 22.0, + "x": 19.0, "y": 18.0 }, "OffsetMin": { - "x": -22.0, + "x": -25.0, "y": -18.0 }, "Pivot": { @@ -64222,11 +60838,11 @@ }, "UIVersion": 2, "anchoredPosition": { - "x": 0.0, + "x": -3.0, "y": 0.0 }, "Position": { - "x": 0.0, + "x": -3.0, "y": 0.0, "z": 0.0 }, @@ -64376,30 +60992,30 @@ { "@type": "MOD.Core.UITransformComponent", "ActivePlatform": 255, - "AlignmentOption": 0, + "AlignmentOption": 3, "AnchorsMax": { "x": 0.5, - "y": 0.5 + "y": 1.0 }, "AnchorsMin": { "x": 0.5, - "y": 0.5 + "y": 1.0 }, "MobileOnly": false, "OffsetMax": { "x": 140.0, - "y": -33.0 + "y": -19.0 }, "OffsetMin": { - "x": -140.0, - "y": -55.0 + "x": -90.0, + "y": -41.0 }, "Pivot": { "x": 0.5, "y": 0.5 }, "RectSize": { - "x": 280.0, + "x": 230.0, "y": 22.0 }, "UIMode": 1, @@ -64410,12 +61026,12 @@ }, "UIVersion": 2, "anchoredPosition": { - "x": 0.0, - "y": -44.0 + "x": 25.0, + "y": -30.0 }, "Position": { - "x": 0.0, - "y": -44.0, + "x": 25.0, + "y": 31.2203369, "z": 0.0 }, "QuaternionRotation": { @@ -64539,14 +61155,14 @@ } }, { - "id": "0cb00104-0000-4000-8000-00000cb00104", - "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent", + "id": "48b75e83-6db1-4712-88dd-ae0e22b4bedf", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", "jsonString": { - "name": "DmgPop", - "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop", + "name": "DmgPop_1", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_1", "nameEditable": true, - "enable": true, + "enable": false, "visible": true, "localize": true, "displayOrder": 6, @@ -64554,12 +61170,12 @@ "revision": 1, "origin": { "type": "Model", - "entry_id": "UIText", + "entry_id": "UISprite", "sub_entity_id": null, "root_entity_id": null, "replaced_model_id": null }, - "modelId": "uitext", + "modelId": "uisprite", "@components": [ { "@type": "MOD.Core.UITransformComponent", @@ -64575,20 +61191,20 @@ }, "MobileOnly": false, "OffsetMax": { - "x": 83.3426, - "y": 97.2203 + "x": 765.9998, + "y": 217.9998 }, "OffsetMin": { - "x": -76.6574, - "y": 67.2203 + "x": 573.9998, + "y": 161.9998 }, "Pivot": { "x": 0.5, "y": 0.5 }, "RectSize": { - "x": 160.0, - "y": 30.0 + "x": 192.0, + "y": 56.0 }, "UIMode": 1, "UIScale": { @@ -64598,25 +61214,31 @@ }, "UIVersion": 2, "anchoredPosition": { - "x": 3.34259987, - "y": 82.2203 + "x": 669.9998, + "y": 189.9998 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 }, "Position": { - "x": 3.34259987, - "y": 82.2203, + "x": 669.9998, + "y": 189.9998, "z": 0.0 }, "QuaternionRotation": { "x": 0.0, "y": 0.0, "z": 0.0, - "w": 1.0 + "w": -1.0 }, "Scale": { "x": 1.0, "y": 1.0, "z": 1.0 }, + "ZRotation": 0.0, "Enable": true }, { @@ -64637,6 +61259,7 @@ "OverrideSorting": false, "PlayRate": 1.0, "PreserveSprite": 0, + "SortingLayer": "MapLayer0", "StartFrameIndex": 0, "Color": { "r": 0.0, @@ -64674,11 +61297,118 @@ "RaycastTarget": false, "Type": 1, "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "35407abf-fbff-44d2-a496-75946d8352fd", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_1/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_1/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true }, { - "@type": "MOD.Core.TextComponent", - "Alignment": 4, - "Bold": true, + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, "DropShadow": false, "DropShadowAngle": 30.0, "DropShadowColor": { @@ -64688,38 +61418,3168 @@ "a": 0.72 }, "DropShadowDistance": 32.0, - "Font": 0, - "FontColor": { - "r": 1.0, - "g": 0.4, - "b": 0.35, - "a": 1.0 - }, - "FontSize": 22, - "MaxSize": 22, - "MinSize": 8, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, "OutlineColor": { - "r": 0.08, - "g": 0.08, - "b": 0.08, + "r": 0.0, + "g": 0.0, + "b": 0.0, "a": 1.0 }, - "OutlineDistance": { + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "939afcaa-2565-4d49-b362-81be02930d40", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_1/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_1/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { "x": 1.0, - "y": -1.0 + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 }, - "OutlineWidth": 1.0, - "Overflow": 0, "OverrideSorting": false, - "Padding": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0 + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 }, - "SizeFit": false, - "Text": "", - "UseOutLine": true, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "054d7bb6-e796-498f-9c1f-50351679df0e", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_1/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_1/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "13a8d9d5-bdc1-40d0-989a-60b0398a96e6", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_1/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_1/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "a68ac4bc-02ae-4dc1-934f-b79d65c34cb0", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_1/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_1/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "09f154c3-4ad3-4159-9664-d7ce2a967053", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop_2", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_2", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 7, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 735.9998, + "y": 247.9998 + }, + "OffsetMin": { + "x": 543.9998, + "y": 191.9998 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 639.9998, + "y": 219.9998 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Position": { + "x": 639.9998, + "y": 219.9998, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": -1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "ZRotation": 0.0, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "0b6dd289-a337-4ff9-8d94-6a8ade8ece39", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_2/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_2/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "7bfdfc92-7b10-4a0b-a913-8b71945265cf", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_2/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_2/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "32af5513-d3b0-4586-8f6d-a0f6d257363e", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_2/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_2/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "95f7eb1f-9a61-4207-98b1-796574c97c12", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_2/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_2/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "cd377100-548a-4c3c-b4fc-1bc31d600bd0", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_2/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_2/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "67587ecb-3a8d-4662-8bbe-5bfb36f0ca5d", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop_3", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_3", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 8, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 705.9998, + "y": 277.999817 + }, + "OffsetMin": { + "x": 513.9998, + "y": 221.9998 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 609.9998, + "y": 249.9998 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Position": { + "x": 609.9998, + "y": 249.9998, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": -1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "ZRotation": 0.0, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "83554fe9-dbff-4217-924b-a126ffec3a39", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_3/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_3/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "0b3d24f0-99ab-4fd3-92cc-bc12bd595ccd", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_3/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_3/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "8789bf6b-9c5d-4e44-b1ef-cb9c318f3101", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_3/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_3/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "e6a6e211-5fe6-484c-9c57-606414e5a299", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_3/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_3/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "0cdf3ce9-ae08-4b9f-b3c0-9826c94e9ff6", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_3/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_3/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "bf35db25-1ec0-46e5-94b6-92420b8291c2", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop_4", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_4", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 9, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 675.9998, + "y": 307.999817 + }, + "OffsetMin": { + "x": 483.999817, + "y": 251.999817 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 579.9998, + "y": 279.999817 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Position": { + "x": 579.9998, + "y": 279.999817, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": -1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "ZRotation": 0.0, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "d41f4db7-2032-49fb-815d-24f197035641", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_4/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_4/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "1379b973-058a-4a56-b4f5-05b3c03f3b58", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_4/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_4/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "7a1ec764-39a0-424b-9d69-8fe6f6823fa7", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_4/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_4/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "e742a62e-7679-466a-9740-638757e603c8", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_4/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_4/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "4a31bca3-5aed-4079-9f83-3fd2e605f109", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_4/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/PlayerPanel/DmgPop_4/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "//////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, "Enable": true } ], @@ -64737,7 +64597,7 @@ "enable": true, "visible": true, "localize": true, - "displayOrder": 9, + "displayOrder": 5, "pathConstraints": "////", "revision": 1, "origin": { @@ -67936,523 +67796,6 @@ "@version": 1 } }, - { - "id": "0cb0014a-0000-4000-8000-00000cb0014a", - "path": "/ui/RunUIGroup/CombatHud/TooltipBox", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", - "jsonString": { - "name": "TooltipBox", - "path": "/ui/RunUIGroup/CombatHud/TooltipBox", - "nameEditable": true, - "enable": false, - "visible": true, - "localize": true, - "displayOrder": 10, - "pathConstraints": "////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UISprite", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uisprite", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 180.0, - "y": 475.0 - }, - "OffsetMin": { - "x": -180.0, - "y": 325.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 360.0, - "y": 150.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 400.0 - }, - "Position": { - "x": 0.0, - "y": 400.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 0.04, - "g": 0.05, - "b": 0.08, - "a": 0.96 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 1, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb0014b-0000-4000-8000-00000cb0014b", - "path": "/ui/RunUIGroup/CombatHud/TooltipBox/Name", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent", - "jsonString": { - "name": "Name", - "path": "/ui/RunUIGroup/CombatHud/TooltipBox/Name", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 0, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UIText", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uitext", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 166.0, - "y": 66.0 - }, - "OffsetMin": { - "x": -166.0, - "y": 38.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 332.0, - "y": 28.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": 52.0 - }, - "Position": { - "x": 0.0, - "y": 52.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 1, - "Enable": true - }, - { - "@type": "MOD.Core.TextComponent", - "Alignment": 4, - "Bold": true, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "Font": 0, - "FontColor": { - "r": 0.94, - "g": 0.74, - "b": 0.26, - "a": 1.0 - }, - "FontSize": 19, - "MaxSize": 19, - "MinSize": 8, - "OutlineColor": { - "r": 0.08, - "g": 0.08, - "b": 0.08, - "a": 1.0 - }, - "OutlineDistance": { - "x": 1.0, - "y": -1.0 - }, - "OutlineWidth": 1.0, - "Overflow": 0, - "OverrideSorting": false, - "Padding": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0 - }, - "SizeFit": false, - "Text": "", - "UseOutLine": true, - "Enable": true - } - ], - "@version": 1 - } - }, - { - "id": "0cb0014c-0000-4000-8000-00000cb0014c", - "path": "/ui/RunUIGroup/CombatHud/TooltipBox/Desc", - "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent", - "jsonString": { - "name": "Desc", - "path": "/ui/RunUIGroup/CombatHud/TooltipBox/Desc", - "nameEditable": true, - "enable": true, - "visible": true, - "localize": true, - "displayOrder": 1, - "pathConstraints": "/////", - "revision": 1, - "origin": { - "type": "Model", - "entry_id": "UIText", - "sub_entity_id": null, - "root_entity_id": null, - "replaced_model_id": null - }, - "modelId": "uitext", - "@components": [ - { - "@type": "MOD.Core.UITransformComponent", - "ActivePlatform": 255, - "AlignmentOption": 0, - "AnchorsMax": { - "x": 0.5, - "y": 0.5 - }, - "AnchorsMin": { - "x": 0.5, - "y": 0.5 - }, - "MobileOnly": false, - "OffsetMax": { - "x": 166.0, - "y": 33.0 - }, - "OffsetMin": { - "x": -166.0, - "y": -69.0 - }, - "Pivot": { - "x": 0.5, - "y": 0.5 - }, - "RectSize": { - "x": 332.0, - "y": 102.0 - }, - "UIMode": 1, - "UIScale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "UIVersion": 2, - "anchoredPosition": { - "x": 0.0, - "y": -18.0 - }, - "Position": { - "x": 0.0, - "y": -18.0, - "z": 0.0 - }, - "QuaternionRotation": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 1.0 - }, - "Scale": { - "x": 1.0, - "y": 1.0, - "z": 1.0 - }, - "Enable": true - }, - { - "@type": "MOD.Core.SpriteGUIRendererComponent", - "AnimClipPlayType": 0, - "EndFrameIndex": 2147483647, - "ImageRUID": { - "DataId": "" - }, - "LocalPosition": { - "x": 0.0, - "y": 0.0 - }, - "LocalScale": { - "x": 1.0, - "y": 1.0 - }, - "OverrideSorting": false, - "PlayRate": 1.0, - "PreserveSprite": 0, - "StartFrameIndex": 0, - "Color": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.0 - }, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "FillAmount": 1.0, - "FillCenter": true, - "FillClockWise": true, - "FillMethod": 0, - "FillOrigin": 0, - "FlipX": false, - "FlipY": false, - "FrameColumn": 1, - "FrameRate": 0, - "FrameRow": 1, - "Outline": false, - "OutlineColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 1.0 - }, - "OutlineWidth": 3.0, - "RaycastTarget": false, - "Type": 1, - "Enable": true - }, - { - "@type": "MOD.Core.TextComponent", - "Alignment": 0, - "Bold": false, - "DropShadow": false, - "DropShadowAngle": 30.0, - "DropShadowColor": { - "r": 0.0, - "g": 0.0, - "b": 0.0, - "a": 0.72 - }, - "DropShadowDistance": 32.0, - "Font": 0, - "FontColor": { - "r": 0.92, - "g": 0.92, - "b": 0.95, - "a": 1.0 - }, - "FontSize": 15, - "MaxSize": 15, - "MinSize": 8, - "OutlineColor": { - "r": 0.08, - "g": 0.08, - "b": 0.08, - "a": 1.0 - }, - "OutlineDistance": { - "x": 1.0, - "y": -1.0 - }, - "OutlineWidth": 1.0, - "Overflow": 0, - "OverrideSorting": false, - "Padding": { - "left": 0, - "right": 0, - "top": 0, - "bottom": 0 - }, - "SizeFit": false, - "Text": "", - "UseOutLine": true, - "Enable": true - } - ], - "@version": 1 - } - }, { "id": "0cb0014d-0000-4000-8000-00000cb0014d", "path": "/ui/RunUIGroup/CombatHud/DiscardPrompt", @@ -68464,7 +67807,7 @@ "enable": false, "visible": true, "localize": true, - "displayOrder": 11, + "displayOrder": 6, "pathConstraints": "////", "revision": 1, "origin": { @@ -68652,7 +67995,7 @@ "enable": false, "visible": true, "localize": true, - "displayOrder": 12, + "displayOrder": 7, "pathConstraints": "////", "revision": 1, "origin": { @@ -69545,7 +68888,7 @@ "enable": false, "visible": true, "localize": true, - "displayOrder": 13, + "displayOrder": 8, "pathConstraints": "////", "revision": 1, "origin": { @@ -69686,7 +69029,7 @@ "enable": false, "visible": true, "localize": true, - "displayOrder": 14, + "displayOrder": 9, "pathConstraints": "////", "revision": 1, "origin": { @@ -69862,6 +69205,17046 @@ ], "@version": 1 } + }, + { + "id": "51b8fc66-e3e7-40a4-99e7-36d9cb99c4f4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop1_1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_1", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 10, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 66.0, + "y": 58.0 + }, + "OffsetMin": { + "x": -126.0, + "y": 2.000002 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -30.0000019, + "y": 30.0000019 + }, + "Position": { + "x": -30.0000019, + "y": 30.0000019, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "4eb688df-05cd-4724-8194-2b84a4976eb9", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_1/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_1/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "f642bb64-d495-4e8e-85b6-9663c1a3bbaf", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_1/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_1/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "67bb64d9-92e7-4241-83b2-cd07ac2e5b7e", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_1/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_1/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "efb53e75-4900-4a80-afd2-c957e1cfde9f", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_1/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_1/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "213be7ec-dde8-489d-b79a-a731fb425a2b", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_1/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_1/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "14e30985-4c18-4555-8f45-49051aa5be59", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop1_2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_2", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 11, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 35.9999962, + "y": 88.0 + }, + "OffsetMin": { + "x": -156.0, + "y": 32.0000038 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -60.0000038, + "y": 60.0000038 + }, + "Position": { + "x": -60.0000038, + "y": 60.0000038, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "d5ccc038-3e83-48b3-842b-0b68a73a0f3c", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_2/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_2/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "5220a76e-48fd-4d41-a300-a954a4b7fdbc", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_2/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_2/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "6e15e1f0-8ea7-4977-8f01-ca2d629e57c3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_2/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_2/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "14fd9b62-f9b2-473e-b1a0-8940be1022d4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_2/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_2/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "f9de6761-77a1-4349-be4d-4545d08168ca", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_2/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_2/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "f4eda5f9-6a7a-4b1d-8709-458c2006ae89", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop1_3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_3", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 12, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 35.9999962, + "y": 88.0 + }, + "OffsetMin": { + "x": -156.0, + "y": 32.0000038 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -60.0000038, + "y": 60.0000038 + }, + "Position": { + "x": -60.0000038, + "y": 60.0000038, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "ef283cb5-7cbd-4b76-918f-8ad23c8f0094", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_3/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_3/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "64f8fea5-a8fa-4c6f-8e41-883390806e50", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_3/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_3/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "16e22fa3-4b52-4ba3-b234-70d87922d90f", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_3/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_3/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "8ed69f15-9fe1-45dc-9bcd-66ba8d9238f9", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_3/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_3/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "0e62c2f2-a0bc-4b7e-927d-a995784cdc6e", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_3/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_3/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "883425ec-f67f-4961-b019-63d72172b523", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop1_4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_4", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 13, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 5.99999237, + "y": 118.000008 + }, + "OffsetMin": { + "x": -186.0, + "y": 62.0000076 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -90.00001, + "y": 90.00001 + }, + "Position": { + "x": -90.00001, + "y": 90.00001, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "a485421e-3dd1-4d04-9d53-e162393403a0", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_4/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_4/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "5c9926c2-dd01-43f6-b6a1-43bd3ccfbd9a", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_4/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_4/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "30c1cbe2-5ae1-41f1-a209-8b2ebb94d031", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_4/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_4/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "e1271569-a5b4-4ad9-9569-c3d67bade42f", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_4/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_4/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "9b5f0eba-4a47-42bd-885c-40e9ca3694fd", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_4/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_4/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "1c4c8511-9233-42f4-994f-05cd5c1f573f", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop1_5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_5", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 14, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": -24.0000076, + "y": 148.0 + }, + "OffsetMin": { + "x": -216.0, + "y": 92.00001 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -120.000008, + "y": 120.000008 + }, + "Position": { + "x": -120.000008, + "y": 120.000008, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "317234c2-cd1d-4c94-9746-63a2bfe21280", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_5/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_5/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "5ae47b4d-2668-4abd-af0c-141dbb73f896", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_5/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_5/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "9c472503-3052-4060-a64c-d5b066a089e7", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_5/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_5/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "28cec6df-0b7d-43f3-8e5e-942989a0df1d", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_5/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_5/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "a329ed3d-cd8a-4088-8471-0e0abd49bcff", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_5/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop1_5/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "bd122d00-b394-4a1a-b260-7c2e64a801bf", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop2_1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_1", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 15, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 66.0, + "y": 58.0 + }, + "OffsetMin": { + "x": -126.0, + "y": 2.000002 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -30.0000019, + "y": 30.0000019 + }, + "Position": { + "x": -30.0000019, + "y": 30.0000019, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "dba689a6-5d9c-4b5c-ac03-1ea1fd236d8b", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_1/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_1/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "ac49adda-0413-4937-819b-8c90e2b7abe9", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_1/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_1/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "67c32a9a-b440-4342-8aac-0c214d162e14", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_1/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_1/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "cad9061c-e35f-446c-b164-7740040f2462", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_1/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_1/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "3648021a-1b17-4475-b8df-19de0a4a2131", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_1/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_1/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "93e24c53-56dc-4c94-aac9-2b11e971a3c8", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop2_2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_2", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 16, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 35.9999962, + "y": 88.0 + }, + "OffsetMin": { + "x": -156.0, + "y": 32.0000038 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -60.0000038, + "y": 60.0000038 + }, + "Position": { + "x": -60.0000038, + "y": 60.0000038, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "b1a1c816-d8fb-45e0-8b4e-ba130bc32757", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_2/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_2/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "ffd8bf7e-3b5a-47ec-820d-6bbab3179967", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_2/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_2/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "a2c9eaf2-0cb6-43ce-a6b9-5c6e8531e580", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_2/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_2/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "887dd615-c66c-428e-92aa-65492869bfea", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_2/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_2/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "3918eb7c-15d7-445f-9715-c1f4a8529f4a", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_2/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_2/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "2f693ada-1df7-4881-8908-1b2bda42e477", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop2_3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_3", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 17, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 5.99999237, + "y": 118.000008 + }, + "OffsetMin": { + "x": -186.0, + "y": 62.0000076 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -90.00001, + "y": 90.00001 + }, + "Position": { + "x": -90.00001, + "y": 90.00001, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "7f2dd28c-e99f-47e7-afa9-1d62a8b432a5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_3/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_3/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "da82ba82-fea0-4d0c-bc0b-8c5e5bedd1e7", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_3/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_3/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "db615a6b-370a-4b2c-8ced-233d163c0851", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_3/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_3/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "a54bb81b-4d53-4f2e-9cb7-e43eae5bfb82", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_3/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_3/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "bb1895fb-1599-49ac-b2ae-db5f8afbb4f3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_3/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_3/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "8fc4d8d4-9e97-4aa0-adf0-f5cb263af794", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop2_4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_4", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 18, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": -24.0000076, + "y": 148.0 + }, + "OffsetMin": { + "x": -216.0, + "y": 92.00001 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -120.000008, + "y": 120.000008 + }, + "Position": { + "x": -120.000008, + "y": 120.000008, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "dce8b92c-f16f-4456-b8a8-ebf5d28c8de4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_4/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_4/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "2ccefb01-7763-43b0-93a9-2f2d7e496165", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_4/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_4/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "4a959758-72da-4ad7-b237-0f92361c0ea2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_4/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_4/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "c3ecb04b-a297-4346-bd94-3fc91cd2b643", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_4/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_4/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "cf336864-50bd-452f-ab67-f5e15be6eead", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_4/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_4/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "20658097-2e75-4856-b862-1d6f6297c9e3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop2_5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_5", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 19, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": -54.0000153, + "y": 178.000015 + }, + "OffsetMin": { + "x": -246.000015, + "y": 122.000015 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -150.000015, + "y": 150.000015 + }, + "Position": { + "x": -150.000015, + "y": 150.000015, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "6b35d1d1-c951-46d0-9a01-470fca12f7d5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_5/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_5/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "493ae1db-5b12-4a9c-adce-abb12705c92f", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_5/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_5/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "81eda6c7-2562-411b-a765-1e8b6c6e3bda", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_5/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_5/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "21639ac2-3569-48df-85fe-a31cc33faf31", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_5/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_5/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "f368cbd0-e0da-481b-8d9b-7d3be41a94e1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_5/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop2_5/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "011c58d3-5898-402f-9f1a-2d9f77b01f3e", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop3_1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_1", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 20, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 66.0, + "y": 58.0 + }, + "OffsetMin": { + "x": -126.0, + "y": 2.000002 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -30.0000019, + "y": 30.0000019 + }, + "Position": { + "x": -30.0000019, + "y": 30.0000019, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "764f001d-a189-4d84-b864-7a2ff6c14cdb", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_1/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_1/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "44ce4783-b247-4de4-b7a8-12b1cf5c37c4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_1/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_1/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "e8c1102c-13e0-4ad6-b552-8f40815936cf", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_1/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_1/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "c70fc45c-2f0a-44d6-adba-b8d9bce35cab", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_1/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_1/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "7f215a16-fc6d-4b93-9d4d-a2ef7a2f4561", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_1/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_1/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "7a41bbe8-43a0-4dfd-a8f9-27a50aadae6a", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop3_2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_2", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 21, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 35.9999962, + "y": 88.0 + }, + "OffsetMin": { + "x": -156.0, + "y": 32.0000038 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -60.0000038, + "y": 60.0000038 + }, + "Position": { + "x": -60.0000038, + "y": 60.0000038, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "8eb76228-126a-4470-87de-e291886e6298", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_2/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_2/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "c6e9a700-f6a4-41bc-a29e-e328970f903e", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_2/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_2/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "4e29fa27-037d-488e-b87c-4b62ff82ae23", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_2/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_2/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "e6fa6c43-6814-47fa-98b1-4cff4a844bf6", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_2/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_2/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "1e177fa7-4aa0-4a4a-a41f-a54a40701d33", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_2/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_2/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "46abbc89-d059-47e4-b921-70e21179ce86", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop3_3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_3", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 22, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 5.99999237, + "y": 118.000008 + }, + "OffsetMin": { + "x": -186.0, + "y": 62.0000076 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -90.00001, + "y": 90.00001 + }, + "Position": { + "x": -90.00001, + "y": 90.00001, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "ad2b2b47-8101-47e9-9d4a-2e39978a4ea4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_3/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_3/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "b7d0c9bf-f5fe-40ff-964f-0215341d14c6", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_3/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_3/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "c28d1381-dabb-4cca-a518-74ac72508ad4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_3/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_3/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "3bd28a9c-e19e-4d21-a2d5-c8ebbcae1014", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_3/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_3/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "4a0727f7-cf58-46df-9f22-e7953e4e0a82", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_3/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_3/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "70677c2f-b611-4218-81a2-82ab0c9c5ba5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop3_4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_4", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 23, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": -24.0000076, + "y": 148.0 + }, + "OffsetMin": { + "x": -216.0, + "y": 92.00001 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -120.000008, + "y": 120.000008 + }, + "Position": { + "x": -120.000008, + "y": 120.000008, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "b9da17e0-cf39-4806-85a9-0de0e8866aa1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_4/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_4/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "fdc0e4c9-37ca-474c-b3f9-40592e604126", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_4/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_4/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "c85050bf-5289-4678-90e8-10d0f8b3b8d0", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_4/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_4/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "0550c6a5-2e38-4649-aed6-bd948616f054", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_4/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_4/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "0c193a67-a7e0-4747-a111-1677e52d4297", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_4/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_4/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "f34a3543-27db-4b8d-891d-a7e02b530183", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop3_5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_5", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 24, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": -54.0000153, + "y": 178.000015 + }, + "OffsetMin": { + "x": -246.000015, + "y": 122.000015 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -150.000015, + "y": 150.000015 + }, + "Position": { + "x": -150.000015, + "y": 150.000015, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "bdc3ade9-d829-49af-bd30-151b3d7ff17f", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_5/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_5/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "631d08d1-0578-49ed-91ba-b291c3725272", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_5/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_5/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "8124c6c7-bf1e-471b-ba5b-be28ab44b6b5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_5/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_5/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "3bca94ec-1f02-421f-83f7-accb9bf8c7cd", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_5/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_5/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "8e2968b8-1d33-4920-aeb8-c5d3966fef6d", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_5/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop3_5/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "946e5c59-bf34-4acf-a7e4-ce0e34be495b", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop4_1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_1", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 25, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 66.0, + "y": 58.0 + }, + "OffsetMin": { + "x": -126.0, + "y": 2.000002 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -30.0000019, + "y": 30.0000019 + }, + "Position": { + "x": -30.0000019, + "y": 30.0000019, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "2464dd52-c824-422a-81ec-81a21acb3116", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_1/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_1/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "7a009418-cb35-40b3-b1b5-89d62be9a804", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_1/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_1/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "78cce176-6d1d-4a15-8bf5-4cc33fdfafcd", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_1/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_1/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "5a272e80-e847-4f05-8acf-e905b724c096", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_1/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_1/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "bbe89abc-588e-4d6e-aa54-a4103884af15", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_1/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_1/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "3fe2595f-966c-4e22-a145-16bcaaa30cd3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop4_2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_2", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 26, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 35.9999962, + "y": 88.0 + }, + "OffsetMin": { + "x": -156.0, + "y": 32.0000038 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -60.0000038, + "y": 60.0000038 + }, + "Position": { + "x": -60.0000038, + "y": 60.0000038, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "b268b466-00c5-4d52-8efc-9af7b9edd029", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_2/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_2/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "f9d8f723-6690-450c-adb4-3de913806979", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_2/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_2/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "2d824a0a-c34a-4a46-a9aa-b8895f912229", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_2/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_2/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "d3b6614d-ba06-49b0-8dd2-8e29946ddbcb", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_2/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_2/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "d810ffbc-3527-42ac-88ae-a91e74b679b9", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_2/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_2/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "3526a66b-4aa6-453a-b449-47c66c0ab857", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop4_3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_3", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 27, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 5.99999237, + "y": 118.000008 + }, + "OffsetMin": { + "x": -186.0, + "y": 62.0000076 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -90.00001, + "y": 90.00001 + }, + "Position": { + "x": -90.00001, + "y": 90.00001, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "9abfe0a5-da86-4ea5-b94f-2ec923cd6f77", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_3/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_3/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "936ed833-4ed6-4f3d-9946-45d7fea2db99", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_3/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_3/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "5c3bd397-8307-4da6-850c-9a0ccd1d5202", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_3/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_3/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "8e3b9a30-764a-436a-8dc6-656a693f2c6c", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_3/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_3/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "1da87b44-163b-4f6b-b6f8-d2caeefd475d", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_3/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_3/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "55579d76-344c-449a-846d-3daa26e36be6", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop4_4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_4", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 28, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": -24.0000076, + "y": 148.0 + }, + "OffsetMin": { + "x": -216.0, + "y": 92.00001 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -120.000008, + "y": 120.000008 + }, + "Position": { + "x": -120.000008, + "y": 120.000008, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "801e2aa2-32cc-4688-a1eb-a9e233f163bc", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_4/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_4/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "8fd5ac85-7a2d-42a8-9702-2d5f553d1bdc", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_4/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_4/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "1f683660-4ee3-464a-b8fa-c88e985753a5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_4/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_4/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "a5dbdbe3-9c0f-475c-8530-3bc026d46cf6", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_4/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_4/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "c9bfcaee-410e-4d64-ad0b-07972f9dd76e", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_4/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_4/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "d866897c-bdca-4527-8780-965c6b5f0489", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "DmgPop4_5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_5", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 29, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": -54.0000153, + "y": 178.000015 + }, + "OffsetMin": { + "x": -246.000015, + "y": 122.000015 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 192.0, + "y": 56.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -150.000015, + "y": 150.000015 + }, + "Position": { + "x": -150.000015, + "y": 150.000015, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "0bf58625-7e9b-4735-9bb3-6ba56c283e9f", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_5/Digit1", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit1", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_5/Digit1", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "258c45ba-55d2-4e66-b01b-044c7cc96a28", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_5/Digit2", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit2", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_5/Digit2", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "9abf5d11-7e7c-4461-963c-3403623a9b36", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_5/Digit3", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit3", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_5/Digit3", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 2, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "61b79481-6314-4706-9b69-6a3ac57c0254", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_5/Digit4", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit4", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_5/Digit4", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 3, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "62f9ea47-fb9f-49a4-9190-11d76842e17c", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_5/Digit5", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "Digit5", + "path": "/ui/RunUIGroup/CombatHud/DmgPop4_5/Digit5", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 4, + "pathConstraints": "/////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 11.0, + "y": 16.0 + }, + "OffsetMin": { + "x": -11.0, + "y": -16.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 22.0, + "y": 32.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "b94c19830538447f81617035d89bcc05" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "SortingLayer": "MapLayer0", + "StartFrameIndex": 0, + "Color": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 0, + "Enable": true + } + ], + "@version": 1 + } } ] } diff --git a/ui/ToastGroup.ui b/ui/ToastGroup.ui index fba4d02..54abc38 100644 --- a/ui/ToastGroup.ui +++ b/ui/ToastGroup.ui @@ -24,7 +24,7 @@ "enable": true, "visible": true, "localize": true, - "displayOrder": 2, + "displayOrder": 3, "pathConstraints": "//", "revision": 1, "origin": { diff --git a/ui/ToolTipGroup.ui b/ui/ToolTipGroup.ui new file mode 100644 index 0000000..53e8dbd --- /dev/null +++ b/ui/ToolTipGroup.ui @@ -0,0 +1,626 @@ +{ + "Id": "", + "GameId": "", + "EntryKey": "ui://8208cc46-b682-444c-91a0-906bd01d39e1", + "ContentType": "x-mod/ui", + "Content": "", + "Usage": 0, + "UsePublish": 1, + "UseService": 0, + "CoreVersion": "26.5.0.0", + "StudioVersion": "0.1.0.0", + "DynamicLoading": 0, + "ContentProto": { + "Use": "Binary", + "Entities": [ + { + "id": "8208cc46-b682-444c-91a0-906bd01d39e1", + "path": "/ui/ToolTipGroup", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent", + "jsonString": { + "name": "ToolTipGroup", + "path": "/ui/ToolTipGroup", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 7, + "pathConstraints": "//", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "uigroup", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uigroup", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "AlignmentOption": 15, + "AnchorsMax": { + "x": 1.0, + "y": 1.0 + }, + "AnchorsMin": { + "x": 0.0, + "y": 0.0 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 0.0, + "y": 0.0 + }, + "OffsetMin": { + "x": 0.0, + "y": 0.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 1920.0, + "y": 1080.0 + }, + "UIMode": 1, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 0.0 + }, + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.UIGroupComponent", + "DefaultShow": true, + "GroupOrder": 7, + "GroupType": 2, + "Enable": true + }, + { + "@type": "MOD.Core.CanvasGroupComponent", + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "0cb0014a-0000-4000-8000-00000cb0014a", + "path": "/ui/ToolTipGroup/TooltipBox", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent", + "jsonString": { + "name": "TooltipBox", + "path": "/ui/ToolTipGroup/TooltipBox", + "nameEditable": true, + "enable": false, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "///", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UISprite", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uisprite", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 179.9999, + "y": 475.0001 + }, + "OffsetMin": { + "x": -180.0001, + "y": 325.0001 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 360.0, + "y": 150.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": -0.0001, + "y": 400.0001 + }, + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Position": { + "x": -0.0001, + "y": 400.0001, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": -1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "ZRotation": 0.0, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "StartFrameIndex": 0, + "Color": { + "r": 0.04, + "g": 0.05, + "b": 0.08, + "a": 0.96 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "0cb0014b-0000-4000-8000-00000cb0014b", + "path": "/ui/ToolTipGroup/TooltipBox/Name", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent", + "jsonString": { + "name": "Name", + "path": "/ui/ToolTipGroup/TooltipBox/Name", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 0, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UIText", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uitext", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 166.0, + "y": 66.0 + }, + "OffsetMin": { + "x": -166.0, + "y": 38.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 332.0, + "y": 28.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": 52.0 + }, + "Position": { + "x": 0.0, + "y": 52.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + }, + { + "@type": "MOD.Core.TextComponent", + "Alignment": 4, + "Bold": true, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "Font": 0, + "FontColor": { + "r": 0.94, + "g": 0.74, + "b": 0.26, + "a": 1.0 + }, + "FontSize": 19, + "MaxSize": 19, + "MinSize": 8, + "OutlineColor": { + "r": 0.08, + "g": 0.08, + "b": 0.08, + "a": 1.0 + }, + "OutlineDistance": { + "x": 1.0, + "y": -1.0 + }, + "OutlineWidth": 1.0, + "Overflow": 0, + "OverrideSorting": false, + "Padding": { + "left": 0, + "right": 0, + "top": 0, + "bottom": 0 + }, + "SizeFit": false, + "Text": "", + "UseOutLine": true, + "Enable": true + } + ], + "@version": 1 + } + }, + { + "id": "0cb0014c-0000-4000-8000-00000cb0014c", + "path": "/ui/ToolTipGroup/TooltipBox/Desc", + "componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent", + "jsonString": { + "name": "Desc", + "path": "/ui/ToolTipGroup/TooltipBox/Desc", + "nameEditable": true, + "enable": true, + "visible": true, + "localize": true, + "displayOrder": 1, + "pathConstraints": "////", + "revision": 1, + "origin": { + "type": "Model", + "entry_id": "UIText", + "sub_entity_id": null, + "root_entity_id": null, + "replaced_model_id": null + }, + "modelId": "uitext", + "@components": [ + { + "@type": "MOD.Core.UITransformComponent", + "ActivePlatform": 255, + "AlignmentOption": 0, + "AnchorsMax": { + "x": 0.5, + "y": 0.5 + }, + "AnchorsMin": { + "x": 0.5, + "y": 0.5 + }, + "MobileOnly": false, + "OffsetMax": { + "x": 166.0, + "y": 33.0 + }, + "OffsetMin": { + "x": -166.0, + "y": -69.0 + }, + "Pivot": { + "x": 0.5, + "y": 0.5 + }, + "RectSize": { + "x": 332.0, + "y": 102.0 + }, + "UIMode": 1, + "UIScale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "UIVersion": 2, + "anchoredPosition": { + "x": 0.0, + "y": -18.0 + }, + "Position": { + "x": 0.0, + "y": -18.0, + "z": 0.0 + }, + "QuaternionRotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 1.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Enable": true + }, + { + "@type": "MOD.Core.SpriteGUIRendererComponent", + "AnimClipPlayType": 0, + "EndFrameIndex": 2147483647, + "ImageRUID": { + "DataId": "" + }, + "LocalPosition": { + "x": 0.0, + "y": 0.0 + }, + "LocalScale": { + "x": 1.0, + "y": 1.0 + }, + "OverrideSorting": false, + "PlayRate": 1.0, + "PreserveSprite": 0, + "StartFrameIndex": 0, + "Color": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "FillAmount": 1.0, + "FillCenter": true, + "FillClockWise": true, + "FillMethod": 0, + "FillOrigin": 0, + "FlipX": false, + "FlipY": false, + "FrameColumn": 1, + "FrameRate": 0, + "FrameRow": 1, + "Outline": false, + "OutlineColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "OutlineWidth": 3.0, + "RaycastTarget": false, + "Type": 1, + "Enable": true + }, + { + "@type": "MOD.Core.TextComponent", + "Alignment": 0, + "Bold": false, + "DropShadow": false, + "DropShadowAngle": 30.0, + "DropShadowColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.72 + }, + "DropShadowDistance": 32.0, + "Font": 0, + "FontColor": { + "r": 0.92, + "g": 0.92, + "b": 0.95, + "a": 1.0 + }, + "FontSize": 15, + "MaxSize": 15, + "MinSize": 8, + "OutlineColor": { + "r": 0.08, + "g": 0.08, + "b": 0.08, + "a": 1.0 + }, + "OutlineDistance": { + "x": 1.0, + "y": -1.0 + }, + "OutlineWidth": 1.0, + "Overflow": 0, + "OverrideSorting": false, + "Padding": { + "left": 0, + "right": 0, + "top": 0, + "bottom": 0 + }, + "SizeFit": false, + "Text": "", + "UseOutLine": true, + "Enable": true + } + ], + "@version": 1 + } + } + ] + } +} \ No newline at end of file