Merge pull request 'feat(bandit): 사일런트 도적 덱 추가' (#53) from codex/bandit-silent-deck into main
This commit was merged in pull request #53.
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -1,14 +1,41 @@
|
||||
{
|
||||
"frames": {
|
||||
"warrior": { "normal": "4bb57ef88ef449fdaf958f6cf37fe44b", "unique": "4f71c124c8bc4e13b5e9fad392995f68", "legend": "6d741a60c60743cb98ee740a1e2dbfed" },
|
||||
"magician": { "normal": "d788d09f6f50467ebc67f01dec45f9e2", "unique": "f5def2e8022b4e59a17d3c16414034fe", "legend": "cff71f2e472041ce80c6fbd296f42e2d" },
|
||||
"bandit": { "normal": "9487b06867bc46269ed1d855420f457f", "unique": "b3081fb2fb1445fa90b12b01481a78ef", "legend": "c357d2daf31a489d95b8fa47e50dd879" }
|
||||
"warrior": {
|
||||
"normal": "4bb57ef88ef449fdaf958f6cf37fe44b",
|
||||
"unique": "4f71c124c8bc4e13b5e9fad392995f68",
|
||||
"legend": "6d741a60c60743cb98ee740a1e2dbfed"
|
||||
},
|
||||
"magician": {
|
||||
"normal": "d788d09f6f50467ebc67f01dec45f9e2",
|
||||
"unique": "f5def2e8022b4e59a17d3c16414034fe",
|
||||
"legend": "cff71f2e472041ce80c6fbd296f42e2d"
|
||||
},
|
||||
"bandit": {
|
||||
"normal": "9487b06867bc46269ed1d855420f457f",
|
||||
"unique": "b3081fb2fb1445fa90b12b01481a78ef",
|
||||
"legend": "c357d2daf31a489d95b8fa47e50dd879"
|
||||
}
|
||||
},
|
||||
"classToFrame": {
|
||||
"warrior": "warrior", "fighter": "warrior", "page": "warrior", "spearman": "warrior",
|
||||
"magician": "magician", "firepoison": "magician", "icelightning": "magician", "cleric": "magician",
|
||||
"thief": "bandit", "assassin": "bandit", "bandit": "bandit",
|
||||
"curse": "bandit"
|
||||
"warrior": "warrior",
|
||||
"fighter": "warrior",
|
||||
"page": "warrior",
|
||||
"spearman": "warrior",
|
||||
"magician": "magician",
|
||||
"firepoison": "magician",
|
||||
"icelightning": "magician",
|
||||
"cleric": "magician",
|
||||
"thief": "bandit",
|
||||
"assassin": "bandit",
|
||||
"bandit": "bandit",
|
||||
"curse": "bandit",
|
||||
"shiv": "bandit",
|
||||
"poisoner": "bandit",
|
||||
"trickster": "bandit"
|
||||
},
|
||||
"rewardWeights": { "normal": 70, "unique": 25, "legend": 5 }
|
||||
"rewardWeights": {
|
||||
"normal": 70,
|
||||
"unique": 25,
|
||||
"legend": 5
|
||||
}
|
||||
}
|
||||
|
||||
738
data/cards.json
738
data/cards.json
@@ -492,6 +492,730 @@
|
||||
"unplayable": true,
|
||||
"curse": true,
|
||||
"endTurnDamage": 2
|
||||
},
|
||||
"SilentStrike": {
|
||||
"name": "타격",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"damage": 6,
|
||||
"desc": "피해 6."
|
||||
},
|
||||
"SilentDefend": {
|
||||
"name": "수비",
|
||||
"cost": 1,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"block": 5,
|
||||
"desc": "방어도 5."
|
||||
},
|
||||
"Neutralize": {
|
||||
"name": "무력화",
|
||||
"cost": 0,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"damage": 3,
|
||||
"weak": 1,
|
||||
"desc": "피해 3. 약화 1 부여."
|
||||
},
|
||||
"Survivor": {
|
||||
"name": "생존자",
|
||||
"cost": 1,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"block": 8,
|
||||
"draw": 1,
|
||||
"desc": "방어도 8. 카드 1장 드로우."
|
||||
},
|
||||
"Acrobatics": {
|
||||
"name": "곡예",
|
||||
"cost": 1,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"draw": 3,
|
||||
"desc": "카드 3장 드로우."
|
||||
},
|
||||
"Backflip": {
|
||||
"name": "백플립",
|
||||
"cost": 1,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"block": 5,
|
||||
"draw": 2,
|
||||
"desc": "방어도 5. 카드 2장 드로우."
|
||||
},
|
||||
"Bane": {
|
||||
"name": "파멸",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"damage": 7,
|
||||
"hits": 2,
|
||||
"desc": "피해 7을 2회."
|
||||
},
|
||||
"BladeDance": {
|
||||
"name": "칼날 춤",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"damage": 4,
|
||||
"hits": 3,
|
||||
"desc": "시브식 공격: 피해 4를 3회."
|
||||
},
|
||||
"CloakAndDagger": {
|
||||
"name": "망토와 단검",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"block": 6,
|
||||
"damage": 4,
|
||||
"desc": "방어도 6. 피해 4."
|
||||
},
|
||||
"DaggerSpray": {
|
||||
"name": "단검 분사",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"damage": 4,
|
||||
"hits": 2,
|
||||
"aoe": true,
|
||||
"desc": "모든 적에게 피해 4를 2회."
|
||||
},
|
||||
"DaggerThrow": {
|
||||
"name": "단검 투척",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"damage": 9,
|
||||
"draw": 1,
|
||||
"desc": "피해 9. 카드 1장 드로우."
|
||||
},
|
||||
"DeadlyPoison": {
|
||||
"name": "맹독",
|
||||
"cost": 1,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"poison": 5,
|
||||
"desc": "독 5 부여."
|
||||
},
|
||||
"Deflect": {
|
||||
"name": "흘리기",
|
||||
"cost": 0,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"block": 4,
|
||||
"desc": "방어도 4."
|
||||
},
|
||||
"DodgeAndRoll": {
|
||||
"name": "회피와 구르기",
|
||||
"cost": 1,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"block": 8,
|
||||
"desc": "방어도 8."
|
||||
},
|
||||
"FlyingKnee": {
|
||||
"name": "날아차기",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"damage": 8,
|
||||
"desc": "피해 8."
|
||||
},
|
||||
"Outmaneuver": {
|
||||
"name": "책략",
|
||||
"cost": 1,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"powerEffect": "energyPerTurn",
|
||||
"value": 1,
|
||||
"desc": "매 턴 에너지 +1."
|
||||
},
|
||||
"PiercingWail": {
|
||||
"name": "꿰뚫는 비명",
|
||||
"cost": 1,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"weak": 3,
|
||||
"desc": "약화 3 부여."
|
||||
},
|
||||
"PoisonedStab": {
|
||||
"name": "독 찌르기",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"damage": 6,
|
||||
"poison": 3,
|
||||
"desc": "피해 6. 독 3 부여."
|
||||
},
|
||||
"Prepared": {
|
||||
"name": "준비",
|
||||
"cost": 0,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"draw": 1,
|
||||
"desc": "카드 1장 드로우."
|
||||
},
|
||||
"QuickSlash": {
|
||||
"name": "빠른 베기",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"damage": 8,
|
||||
"draw": 1,
|
||||
"desc": "피해 8. 카드 1장 드로우."
|
||||
},
|
||||
"Slice": {
|
||||
"name": "얇게 베기",
|
||||
"cost": 0,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"damage": 6,
|
||||
"desc": "피해 6."
|
||||
},
|
||||
"SneakyStrike": {
|
||||
"name": "기습 타격",
|
||||
"cost": 2,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"damage": 12,
|
||||
"desc": "피해 12."
|
||||
},
|
||||
"SuckerPunch": {
|
||||
"name": "불시의 일격",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "normal",
|
||||
"damage": 7,
|
||||
"weak": 1,
|
||||
"desc": "피해 7. 약화 1 부여."
|
||||
},
|
||||
"Accuracy": {
|
||||
"name": "정확도",
|
||||
"cost": 1,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"powerEffect": "strengthPerTurn",
|
||||
"value": 1,
|
||||
"desc": "시브 지원: 매 턴 힘 +1."
|
||||
},
|
||||
"AllOutAttack": {
|
||||
"name": "총공격",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"damage": 10,
|
||||
"aoe": true,
|
||||
"desc": "모든 적에게 피해 10."
|
||||
},
|
||||
"Backstab": {
|
||||
"name": "등 찌르기",
|
||||
"cost": 0,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"damage": 11,
|
||||
"desc": "피해 11."
|
||||
},
|
||||
"Blur": {
|
||||
"name": "잔상",
|
||||
"cost": 1,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"block": 8,
|
||||
"desc": "방어도 8."
|
||||
},
|
||||
"BouncingFlask": {
|
||||
"name": "튕기는 플라스크",
|
||||
"cost": 2,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"poison": 9,
|
||||
"desc": "독 9 부여."
|
||||
},
|
||||
"CalculatedGamble": {
|
||||
"name": "계산된 도박",
|
||||
"cost": 0,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"draw": 3,
|
||||
"desc": "카드 3장 드로우."
|
||||
},
|
||||
"Caltrops": {
|
||||
"name": "마름쇠",
|
||||
"cost": 1,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"powerEffect": "blockPerTurn",
|
||||
"value": 3,
|
||||
"desc": "매 턴 방어도 +3."
|
||||
},
|
||||
"Catalyst": {
|
||||
"name": "촉매",
|
||||
"cost": 1,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"poison": 8,
|
||||
"desc": "독 8 부여."
|
||||
},
|
||||
"Choke": {
|
||||
"name": "목 조르기",
|
||||
"cost": 2,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"damage": 12,
|
||||
"vuln": 2,
|
||||
"desc": "피해 12. 취약 2 부여."
|
||||
},
|
||||
"Concentrate": {
|
||||
"name": "집중",
|
||||
"cost": 0,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"powerEffect": "energyPerTurn",
|
||||
"value": 1,
|
||||
"desc": "매 턴 에너지 +1."
|
||||
},
|
||||
"CripplingCloud": {
|
||||
"name": "불구름",
|
||||
"cost": 2,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"poison": 4,
|
||||
"weak": 2,
|
||||
"desc": "독 4와 약화 2 부여."
|
||||
},
|
||||
"Dash": {
|
||||
"name": "질주",
|
||||
"cost": 2,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"block": 10,
|
||||
"damage": 10,
|
||||
"desc": "방어도 10. 피해 10."
|
||||
},
|
||||
"Distraction": {
|
||||
"name": "교란",
|
||||
"cost": 1,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"draw": 1,
|
||||
"desc": "카드 1장 드로우."
|
||||
},
|
||||
"EndlessAgony": {
|
||||
"name": "끝없는 고통",
|
||||
"cost": 0,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"damage": 4,
|
||||
"hits": 2,
|
||||
"desc": "피해 4를 2회."
|
||||
},
|
||||
"EscapePlan": {
|
||||
"name": "탈출 계획",
|
||||
"cost": 0,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"block": 3,
|
||||
"draw": 1,
|
||||
"desc": "카드 1장 드로우. 방어도 3."
|
||||
},
|
||||
"Eviscerate": {
|
||||
"name": "절개",
|
||||
"cost": 3,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"damage": 7,
|
||||
"hits": 3,
|
||||
"desc": "피해 7을 3회."
|
||||
},
|
||||
"Expertise": {
|
||||
"name": "전문가",
|
||||
"cost": 1,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"draw": 3,
|
||||
"desc": "카드 3장 드로우."
|
||||
},
|
||||
"Finisher": {
|
||||
"name": "마무리",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"damage": 6,
|
||||
"hits": 2,
|
||||
"desc": "피해 6을 2회."
|
||||
},
|
||||
"Flechettes": {
|
||||
"name": "플레셰트",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"damage": 4,
|
||||
"hits": 3,
|
||||
"desc": "피해 4를 3회."
|
||||
},
|
||||
"Footwork": {
|
||||
"name": "발놀림",
|
||||
"cost": 1,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"powerEffect": "blockPerTurn",
|
||||
"value": 2,
|
||||
"desc": "매 턴 방어도 +2."
|
||||
},
|
||||
"HeelHook": {
|
||||
"name": "발뒤꿈치 걸기",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"damage": 5,
|
||||
"draw": 1,
|
||||
"desc": "피해 5. 카드 1장 드로우."
|
||||
},
|
||||
"InfiniteBlades": {
|
||||
"name": "무한의 칼날",
|
||||
"cost": 1,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"powerEffect": "strengthPerTurn",
|
||||
"value": 1,
|
||||
"desc": "시브 지원: 매 턴 힘 +1."
|
||||
},
|
||||
"LegSweep": {
|
||||
"name": "다리 걸기",
|
||||
"cost": 2,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"block": 11,
|
||||
"weak": 2,
|
||||
"desc": "방어도 11. 약화 2 부여."
|
||||
},
|
||||
"MasterfulStab": {
|
||||
"name": "달인의 찌르기",
|
||||
"cost": 0,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"damage": 12,
|
||||
"desc": "피해 12."
|
||||
},
|
||||
"NoxiousFumes": {
|
||||
"name": "유독 가스",
|
||||
"cost": 1,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"powerEffect": "strengthPerTurn",
|
||||
"value": 1,
|
||||
"desc": "독 강화: 매 턴 힘 +1."
|
||||
},
|
||||
"Predator": {
|
||||
"name": "포식자",
|
||||
"cost": 2,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"damage": 15,
|
||||
"draw": 2,
|
||||
"desc": "피해 15. 카드 2장 드로우."
|
||||
},
|
||||
"Reflex": {
|
||||
"name": "반사 신경",
|
||||
"cost": 0,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"draw": 2,
|
||||
"desc": "카드 2장 드로우."
|
||||
},
|
||||
"RiddleWithHoles": {
|
||||
"name": "벌집 만들기",
|
||||
"cost": 2,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"damage": 3,
|
||||
"hits": 5,
|
||||
"desc": "피해 3을 5회."
|
||||
},
|
||||
"Setup": {
|
||||
"name": "설치",
|
||||
"cost": 1,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"draw": 1,
|
||||
"desc": "카드 1장 드로우."
|
||||
},
|
||||
"Skewer": {
|
||||
"name": "꿰뚫기",
|
||||
"cost": 2,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"damage": 7,
|
||||
"hits": 3,
|
||||
"desc": "피해 7을 3회."
|
||||
},
|
||||
"Tactician": {
|
||||
"name": "전술가",
|
||||
"cost": 0,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"powerEffect": "energyPerTurn",
|
||||
"value": 1,
|
||||
"desc": "매 턴 에너지 +1."
|
||||
},
|
||||
"Terror": {
|
||||
"name": "공포",
|
||||
"cost": 1,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"vuln": 5,
|
||||
"desc": "취약 5 부여."
|
||||
},
|
||||
"WellLaidPlans": {
|
||||
"name": "치밀한 계획",
|
||||
"cost": 1,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "unique",
|
||||
"powerEffect": "blockPerTurn",
|
||||
"value": 2,
|
||||
"desc": "매 턴 방어도 +2."
|
||||
},
|
||||
"AThousandCuts": {
|
||||
"name": "천 개의 상처",
|
||||
"cost": 2,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"powerEffect": "strengthPerTurn",
|
||||
"value": 1,
|
||||
"desc": "매 턴 힘 +1."
|
||||
},
|
||||
"Adrenaline": {
|
||||
"name": "아드레날린",
|
||||
"cost": 0,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"draw": 2,
|
||||
"strength": 1,
|
||||
"desc": "힘 +1. 카드 2장 드로우."
|
||||
},
|
||||
"AfterImage": {
|
||||
"name": "잔상 효과",
|
||||
"cost": 1,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"powerEffect": "blockPerTurn",
|
||||
"value": 1,
|
||||
"desc": "매 턴 방어도 +1."
|
||||
},
|
||||
"Alchemize": {
|
||||
"name": "연금술",
|
||||
"cost": 1,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"heal": 8,
|
||||
"desc": "HP 8 회복."
|
||||
},
|
||||
"BulletTime": {
|
||||
"name": "불릿 타임",
|
||||
"cost": 2,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"powerEffect": "energyPerTurn",
|
||||
"value": 2,
|
||||
"desc": "매 턴 에너지 +2."
|
||||
},
|
||||
"Burst": {
|
||||
"name": "폭발",
|
||||
"cost": 1,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"powerEffect": "strengthPerTurn",
|
||||
"value": 1,
|
||||
"desc": "매 턴 힘 +1."
|
||||
},
|
||||
"CorpseExplosion": {
|
||||
"name": "시체 폭발",
|
||||
"cost": 2,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"poison": 6,
|
||||
"vuln": 2,
|
||||
"desc": "독 6과 취약 2 부여."
|
||||
},
|
||||
"DieDieDie": {
|
||||
"name": "죽어 죽어 죽어",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"damage": 13,
|
||||
"aoe": true,
|
||||
"desc": "모든 적에게 피해 13."
|
||||
},
|
||||
"Doppelganger": {
|
||||
"name": "도플갱어",
|
||||
"cost": 2,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"draw": 3,
|
||||
"desc": "카드 3장 드로우."
|
||||
},
|
||||
"Envenom": {
|
||||
"name": "맹독 바르기",
|
||||
"cost": 2,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"powerEffect": "strengthPerTurn",
|
||||
"value": 1,
|
||||
"desc": "독 지원: 매 턴 힘 +1."
|
||||
},
|
||||
"GlassKnife": {
|
||||
"name": "유리 칼",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"damage": 8,
|
||||
"hits": 2,
|
||||
"desc": "피해 8을 2회."
|
||||
},
|
||||
"GrandFinale": {
|
||||
"name": "대단원",
|
||||
"cost": 0,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"damage": 50,
|
||||
"aoe": true,
|
||||
"desc": "모든 적에게 피해 50."
|
||||
},
|
||||
"Malaise": {
|
||||
"name": "불쾌감",
|
||||
"cost": 2,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"weak": 3,
|
||||
"desc": "약화 3 부여."
|
||||
},
|
||||
"Nightmare": {
|
||||
"name": "악몽",
|
||||
"cost": 3,
|
||||
"kind": "Skill",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"draw": 3,
|
||||
"desc": "카드 3장 드로우."
|
||||
},
|
||||
"PhantasmalKiller": {
|
||||
"name": "환영 살인마",
|
||||
"cost": 1,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"powerEffect": "strengthPerTurn",
|
||||
"value": 2,
|
||||
"desc": "매 턴 힘 +2."
|
||||
},
|
||||
"StormOfSteel": {
|
||||
"name": "강철 폭풍",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"damage": 4,
|
||||
"hits": 5,
|
||||
"desc": "피해 4를 5회."
|
||||
},
|
||||
"ToolsOfTheTrade": {
|
||||
"name": "거래의 도구",
|
||||
"cost": 1,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"powerEffect": "energyPerTurn",
|
||||
"value": 1,
|
||||
"desc": "매 턴 에너지 +1."
|
||||
},
|
||||
"Unload": {
|
||||
"name": "난사",
|
||||
"cost": 1,
|
||||
"kind": "Attack",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"damage": 14,
|
||||
"desc": "피해 14."
|
||||
},
|
||||
"WraithForm": {
|
||||
"name": "망령화",
|
||||
"cost": 3,
|
||||
"kind": "Power",
|
||||
"class": "bandit",
|
||||
"rarity": "legend",
|
||||
"powerEffect": "blockPerTurn",
|
||||
"value": 8,
|
||||
"desc": "매 턴 방어도 +8."
|
||||
}
|
||||
},
|
||||
"starterDecks": {
|
||||
@@ -530,6 +1254,20 @@
|
||||
"DarkSight",
|
||||
"DarkSight",
|
||||
"DoubleStab"
|
||||
],
|
||||
"bandit": [
|
||||
"SilentStrike",
|
||||
"SilentStrike",
|
||||
"SilentStrike",
|
||||
"SilentStrike",
|
||||
"SilentStrike",
|
||||
"SilentDefend",
|
||||
"SilentDefend",
|
||||
"SilentDefend",
|
||||
"SilentDefend",
|
||||
"SilentDefend",
|
||||
"Neutralize",
|
||||
"Survivor"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { readFileSync, writeFileSync } from 'node:fs';
|
||||
import { readFileSync, writeFileSync } from 'node:fs';
|
||||
|
||||
const CARDS = JSON.parse(readFileSync('data/cards.json', 'utf8'));
|
||||
const ENEMIES = JSON.parse(readFileSync('data/enemies.json', 'utf8'));
|
||||
@@ -6,6 +6,7 @@ const ENEMIES = JSON.parse(readFileSync('data/enemies.json', 'utf8'));
|
||||
// 검증 (fail-fast): 잘못된 데이터면 생성 중단
|
||||
const CLASSES = {
|
||||
warrior: { label: '전사', maxHp: 80 },
|
||||
bandit: { label: '도적', maxHp: 70 },
|
||||
magician: { label: '마법사', maxHp: 70 },
|
||||
thief: { label: '도적', maxHp: 75 },
|
||||
};
|
||||
@@ -27,6 +28,11 @@ const JOBS = {
|
||||
{ id: 'icelightning', name: '위자드(썬·콜)', desc: '광역·빙결 특화\n썬더 볼트(전체)\n콜드 빔 · 칠링 스텝', starter: 'ThunderBolt' },
|
||||
{ id: 'cleric', name: '클레릭', desc: '회복·축복 특화\n힐 · 블레스\n홀리 애로우', starter: 'Heal' },
|
||||
],
|
||||
bandit: [
|
||||
{ id: 'shiv', name: 'Shiv', desc: 'Many small attacks\nBlade Dance\nAccuracy · After Image', starter: 'BladeDance' },
|
||||
{ id: 'poisoner', name: 'Poison', desc: 'Poison scaling\nDeadly Poison\nCatalyst · Noxious Fumes', starter: 'DeadlyPoison' },
|
||||
{ id: 'trickster', name: 'Trickster', desc: 'Draw and tempo\nAcrobatics\nAdrenaline · Tools', starter: 'Acrobatics' },
|
||||
],
|
||||
thief: [
|
||||
{ id: 'assassin', name: '어쌔신', desc: '표창·치명타 특화\n크리티컬 스로우\n쉐도우 스타 · 클로', starter: 'CriticalThrow' },
|
||||
{ id: 'bandit', name: '시프', desc: '단검 연타 특화\n새비지 블로우\n스틸 · 메소 가드', starter: 'SavageBlow' },
|
||||
@@ -1506,12 +1512,13 @@ function upsertUi() {
|
||||
path: cardPath,
|
||||
modelId: 'uisprite',
|
||||
entryId: 'UISprite',
|
||||
componentNames: 'MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent',
|
||||
componentNames: 'MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.UITouchReceiveComponent',
|
||||
displayOrder: i,
|
||||
components: [
|
||||
transform({ parentW: 1920, parentH: 1080, anchor: { x: 0.5, y: 0.5 }, pivot: { x: 0.5, y: 0.5 }, size: { x: CARD_W, y: CARD_H }, pos: { x: rewardXs[i - 1], y: 0 } }),
|
||||
sprite({ dataId: CARDFRAMES.frames.warrior.normal, color: WHITE, type: 0, raycast: true }),
|
||||
button(),
|
||||
{ '@type': 'MOD.Core.UITouchReceiveComponent', Enable: true },
|
||||
],
|
||||
}));
|
||||
const rewardLayout = cardFaceLayout(CARD_W);
|
||||
@@ -1727,12 +1734,13 @@ function upsertUi() {
|
||||
path: cardPath,
|
||||
modelId: 'uisprite',
|
||||
entryId: 'UISprite',
|
||||
componentNames: 'MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent',
|
||||
componentNames: 'MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.UITouchReceiveComponent',
|
||||
displayOrder: i,
|
||||
components: [
|
||||
transform({ parentW: 1920, parentH: 1080, anchor: { x: 0.5, y: 0.5 }, pivot: { x: 0.5, y: 0.5 }, size: { x: CARD_W, y: CARD_H }, pos: { x: shopXs[i - 1], y: 20 } }),
|
||||
sprite({ dataId: CARDFRAMES.frames.warrior.normal, color: WHITE, type: 0, raycast: true }),
|
||||
button(),
|
||||
{ '@type': 'MOD.Core.UITouchReceiveComponent', Enable: true },
|
||||
],
|
||||
}));
|
||||
const shopLayout = cardFaceLayout(CARD_W);
|
||||
@@ -2311,9 +2319,10 @@ function upsertUi() {
|
||||
],
|
||||
}));
|
||||
const classCards = [
|
||||
{ key: 'Warrior', label: '\uC804\uC0AC', desc: '\uAC15\uD55C \uACF5\uACA9\uACFC \uBC29\uC5B4', x: -360, enabled: true, tint: { r: 0.74, g: 0.32, b: 0.28, a: 1 } },
|
||||
{ key: 'Thief', label: '\uB3C4\uC801', desc: '\uBE60\uB978 \uB2E8\uAC80 \uC5F0\uD0C0', x: 0, enabled: true, tint: { r: 0.5, g: 0.32, b: 0.6, a: 1 } },
|
||||
{ key: 'Mage', label: '\uB9C8\uBC95\uC0AC', desc: '\uB9C8\uBC95 \uC6D0\uAC70\uB9AC \uB51C\uB7EC', x: 360, enabled: true, tint: { r: 0.3, g: 0.4, b: 0.75, a: 1 } },
|
||||
{ key: 'Warrior', label: '\uC804\uC0AC', desc: '\uAC15\uD55C \uACF5\uACA9\uACFC \uBC29\uC5B4', x: -540, enabled: true, tint: { r: 0.74, g: 0.32, b: 0.28, a: 1 } },
|
||||
{ key: 'Thief', label: '\uB3C4\uC801', desc: '\uBE60\uB978 \uB2E8\uAC80 \uC5F0\uD0C0', x: -180, enabled: true, tint: { r: 0.5, g: 0.32, b: 0.6, a: 1 } },
|
||||
{ key: 'Bandit', label: '\uC0AC\uC77C\uB7F0\uD2B8', desc: '\uB3C5\u00B7\uB2E8\uAC80\u00B7\uB4DC\uB85C\uC6B0', x: 180, enabled: true, tint: { r: 0.26, g: 0.5, b: 0.34, a: 1 } },
|
||||
{ key: 'Mage', label: '\uB9C8\uBC95\uC0AC', desc: '\uB9C8\uBC95 \uC6D0\uAC70\uB9AC \uB51C\uB7EC', x: 540, enabled: true, tint: { r: 0.3, g: 0.4, b: 0.75, a: 1 } },
|
||||
];
|
||||
for (let i = 0; i < classCards.length; i++) {
|
||||
const cls = classCards[i];
|
||||
@@ -2698,11 +2707,13 @@ function writeCodeblocks() {
|
||||
prop('number', 'MaxEnergy', '3'),
|
||||
prop('number', 'Turn', '0'),
|
||||
prop('number', 'TweenEventId', '0'),
|
||||
prop('number', 'CardHoverTweenId', '0'),
|
||||
prop('any', 'EndTurnHandler'),
|
||||
prop('any', 'NewGameHandler'),
|
||||
prop('any', 'WarriorSelectHandler'),
|
||||
prop('any', 'MageSelectHandler'),
|
||||
prop('any', 'ThiefSelectHandler'),
|
||||
prop('any', 'BanditSelectHandler'),
|
||||
prop('any', 'MageSelectHandler'),
|
||||
prop('any', 'AscMinusHandler'),
|
||||
prop('any', 'AscPlusHandler'),
|
||||
prop('any', 'JobOpts'),
|
||||
@@ -2899,14 +2910,6 @@ if warrior ~= nil and warrior.ButtonComponent ~= nil then
|
||||
end
|
||||
self.WarriorSelectHandler = warrior:ConnectEvent(ButtonClickEvent, function() self:SelectClass("warrior") end)
|
||||
end
|
||||
local mage = _EntityService:GetEntityByPath("/ui/DefaultGroup/CharacterSelectHud/MageButton")
|
||||
if mage ~= nil and mage.ButtonComponent ~= nil then
|
||||
if self.MageSelectHandler ~= nil then
|
||||
mage:DisconnectEvent(ButtonClickEvent, self.MageSelectHandler)
|
||||
self.MageSelectHandler = nil
|
||||
end
|
||||
self.MageSelectHandler = mage:ConnectEvent(ButtonClickEvent, function() self:SelectClass("magician") end)
|
||||
end
|
||||
local thief = _EntityService:GetEntityByPath("/ui/DefaultGroup/CharacterSelectHud/ThiefButton")
|
||||
if thief ~= nil and thief.ButtonComponent ~= nil then
|
||||
if self.ThiefSelectHandler ~= nil then
|
||||
@@ -2915,6 +2918,22 @@ if thief ~= nil and thief.ButtonComponent ~= nil then
|
||||
end
|
||||
self.ThiefSelectHandler = thief:ConnectEvent(ButtonClickEvent, function() self:SelectClass("thief") end)
|
||||
end
|
||||
local bandit = _EntityService:GetEntityByPath("/ui/DefaultGroup/CharacterSelectHud/BanditButton")
|
||||
if bandit ~= nil and bandit.ButtonComponent ~= nil then
|
||||
if self.BanditSelectHandler ~= nil then
|
||||
bandit:DisconnectEvent(ButtonClickEvent, self.BanditSelectHandler)
|
||||
self.BanditSelectHandler = nil
|
||||
end
|
||||
self.BanditSelectHandler = bandit:ConnectEvent(ButtonClickEvent, function() self:SelectClass("bandit") end)
|
||||
end
|
||||
local mage = _EntityService:GetEntityByPath("/ui/DefaultGroup/CharacterSelectHud/MageButton")
|
||||
if mage ~= nil and mage.ButtonComponent ~= nil then
|
||||
if self.MageSelectHandler ~= nil then
|
||||
mage:DisconnectEvent(ButtonClickEvent, self.MageSelectHandler)
|
||||
self.MageSelectHandler = nil
|
||||
end
|
||||
self.MageSelectHandler = mage:ConnectEvent(ButtonClickEvent, function() self:SelectClass("magician") end)
|
||||
end
|
||||
local start = _EntityService:GetEntityByPath("/ui/DefaultGroup/CharacterSelectHud/StartButton")
|
||||
if start ~= nil and start.ButtonComponent ~= nil then
|
||||
if self.StartGameHandler ~= nil then
|
||||
@@ -3155,8 +3174,18 @@ if thief ~= nil and thief.SpriteGUIRendererComponent ~= nil then
|
||||
thief.SpriteGUIRendererComponent.Color = Color(0.16, 0.2, 0.26, 1)
|
||||
end
|
||||
end
|
||||
local bandit = _EntityService:GetEntityByPath("/ui/DefaultGroup/CharacterSelectHud/BanditButton")
|
||||
if bandit ~= nil and bandit.SpriteGUIRendererComponent ~= nil then
|
||||
if self.SelectedClass == "bandit" then
|
||||
bandit.SpriteGUIRendererComponent.Color = Color(0.28, 0.36, 0.46, 1)
|
||||
else
|
||||
bandit.SpriteGUIRendererComponent.Color = Color(0.16, 0.2, 0.26, 1)
|
||||
end
|
||||
end
|
||||
if self.SelectedClass == "warrior" then
|
||||
self:SetText("/ui/DefaultGroup/CharacterSelectHud/Status", "전사 선택됨")
|
||||
elseif self.SelectedClass == "bandit" then
|
||||
self:SetText("/ui/DefaultGroup/CharacterSelectHud/Status", "사일런트 선택됨")
|
||||
elseif self.SelectedClass == "magician" then
|
||||
self:SetText("/ui/DefaultGroup/CharacterSelectHud/Status", "마법사 선택됨")
|
||||
elseif self.SelectedClass == "thief" then
|
||||
@@ -3164,7 +3193,7 @@ elseif self.SelectedClass == "thief" then
|
||||
else
|
||||
self:SetText("/ui/DefaultGroup/CharacterSelectHud/Status", "직업을 선택하고 시작하세요")
|
||||
end`),
|
||||
method('StartNewGame', `if self.SelectedClass ~= "warrior" and self.SelectedClass ~= "magician" and self.SelectedClass ~= "thief" then
|
||||
method('StartNewGame', `if self.SelectedClass ~= "warrior" and self.SelectedClass ~= "bandit" and self.SelectedClass ~= "magician" and self.SelectedClass ~= "thief" then
|
||||
self:SetText("/ui/DefaultGroup/CharacterSelectHud/Status", "직업을 먼저 선택하세요")
|
||||
return
|
||||
end
|
||||
@@ -3178,7 +3207,10 @@ end`, [
|
||||
]),
|
||||
method('StartRun', `if self.SelectedClass == "magician" then
|
||||
self.PlayerMaxHp = ${CLASSES.magician.maxHp}
|
||||
self.RunDeck = { ${CARDS.starterDecks.magician.map(luaStr).join(', ')} }
|
||||
self.RunDeck = { ${CARDS.starterDecks.magician.map(luaStr).join(', ')} }
|
||||
elseif self.SelectedClass == "bandit" then
|
||||
self.PlayerMaxHp = ${CLASSES.bandit.maxHp}
|
||||
self.RunDeck = { ${CARDS.starterDecks.bandit.map(luaStr).join(', ')} }
|
||||
elseif self.SelectedClass == "thief" then
|
||||
self.PlayerMaxHp = ${CLASSES.thief.maxHp}
|
||||
self.RunDeck = { ${CARDS.starterDecks.thief.map(luaStr).join(', ')} }
|
||||
@@ -3407,6 +3439,9 @@ end
|
||||
for i = 1, 10 do
|
||||
local cardEntity = _EntityService:GetEntityByPath("/ui/DefaultGroup/CardHand/Card" .. tostring(i))
|
||||
if cardEntity ~= nil and cardEntity.UITouchReceiveComponent ~= nil then
|
||||
local cardPath = "/ui/DefaultGroup/CardHand/Card" .. tostring(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)
|
||||
cardEntity:ConnectEvent(UITouchDragEvent, function(ev) self:OnCardDrag(i, ev.TouchPoint) end)
|
||||
cardEntity:ConnectEvent(UITouchEndDragEvent, function(ev) self:OnCardDragEnd(i, ev.TouchPoint) end)
|
||||
@@ -3418,6 +3453,11 @@ for i = 1, 3 do
|
||||
local rc = _EntityService:GetEntityByPath("/ui/DefaultGroup/RewardHud/Reward" .. tostring(i))
|
||||
if rc ~= nil and rc.ButtonComponent ~= nil then
|
||||
rc:ConnectEvent(ButtonClickEvent, function() self:PickReward(i) end)
|
||||
if rc.UITouchReceiveComponent ~= nil then
|
||||
local cardPath = "/ui/DefaultGroup/RewardHud/Reward" .. tostring(i)
|
||||
rc:ConnectEvent(UITouchEnterEvent, function() self:SetCardHover(cardPath, true) end)
|
||||
rc:ConnectEvent(UITouchExitEvent, function() self:SetCardHover(cardPath, false) end)
|
||||
end
|
||||
end
|
||||
end
|
||||
local skip = _EntityService:GetEntityByPath("/ui/DefaultGroup/RewardHud/Skip")
|
||||
@@ -3442,6 +3482,11 @@ for i = 1, 3 do
|
||||
local sc = _EntityService:GetEntityByPath("/ui/DefaultGroup/ShopHud/Card" .. tostring(i))
|
||||
if sc ~= nil and sc.ButtonComponent ~= nil then
|
||||
sc:ConnectEvent(ButtonClickEvent, function() self:BuyCard(i) end)
|
||||
if sc.UITouchReceiveComponent ~= nil then
|
||||
local cardPath = "/ui/DefaultGroup/ShopHud/Card" .. tostring(i)
|
||||
sc:ConnectEvent(UITouchEnterEvent, function() self:SetCardHover(cardPath, true) end)
|
||||
sc:ConnectEvent(UITouchExitEvent, function() self:SetCardHover(cardPath, false) end)
|
||||
end
|
||||
end
|
||||
end
|
||||
local shopLeave = _EntityService:GetEntityByPath("/ui/DefaultGroup/ShopHud/Leave")
|
||||
@@ -3582,7 +3627,8 @@ if self.PlayerVuln > 0 then self.PlayerVuln = self.PlayerVuln - 1 end
|
||||
self:RenderHand(false)
|
||||
self:RenderPiles()
|
||||
self:EnemyTurn()`),
|
||||
method('DrawCards', `for i = 1, amount do
|
||||
method('DrawCards', `local drawnSlots = {}
|
||||
for i = 1, amount do
|
||||
\tif #self.DrawPile <= 0 then
|
||||
\t\tself:RecycleDiscardIntoDraw()
|
||||
\tend
|
||||
@@ -3594,9 +3640,23 @@ self:EnemyTurn()`),
|
||||
\t\ttable.insert(self.DiscardPile, cardId)
|
||||
\telse
|
||||
\t\ttable.insert(self.Hand, cardId)
|
||||
\t\tif #self.Hand <= 5 then
|
||||
\t\t\ttable.insert(drawnSlots, #self.Hand)
|
||||
\t\tend
|
||||
\tend
|
||||
end
|
||||
self:RenderPiles()`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'amount' }]),
|
||||
self:RenderPiles()
|
||||
if animate == true and #drawnSlots > 0 then
|
||||
\tself:RenderHand(false)
|
||||
\tlocal drawStart = Vector2(-590, 8)
|
||||
\tfor i = 1, #drawnSlots do
|
||||
\t\tlocal slot = drawnSlots[i]
|
||||
\t\tself:AnimateCardFrom(slot, drawStart, Vector2((slot - 3) * 200, 0), 0.08 + i * 0.045)
|
||||
\tend
|
||||
end`, [
|
||||
{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'amount' },
|
||||
{ Type: 'boolean', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'animate' },
|
||||
]),
|
||||
method('RecycleDiscardIntoDraw', `if self.DiscardPile == nil or #self.DiscardPile <= 0 then
|
||||
\treturn
|
||||
end
|
||||
@@ -3754,6 +3814,9 @@ if c == nil then
|
||||
end
|
||||
local e = _EntityService:GetEntityByPath(base)
|
||||
if e ~= nil and e.SpriteGUIRendererComponent ~= nil then
|
||||
if e.UITransformComponent ~= nil then
|
||||
e.UITransformComponent.UIScale = Vector3(1, 1, 1)
|
||||
end
|
||||
local frames = self.CardFrames[self.ClassToFrame[c.class] or "warrior"]
|
||||
local ruid = nil
|
||||
if frames ~= nil then
|
||||
@@ -3781,6 +3844,87 @@ end`, [
|
||||
{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'base' },
|
||||
{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'cardId' },
|
||||
]),
|
||||
method('SetCardHover', `local prefix = ""
|
||||
local count = 0
|
||||
local xs = {}
|
||||
local baseY = 0
|
||||
local hoverIndex = 0
|
||||
local push = 110
|
||||
if string.find(path, "/ui/DefaultGroup/CardHand/Card") == 1 then
|
||||
if self.DragSlot ~= nil and self.DragSlot > 0 then
|
||||
return
|
||||
end
|
||||
prefix = "/ui/DefaultGroup/CardHand/Card"
|
||||
count = 5
|
||||
xs = { ${CARD_XS.join(', ')} }
|
||||
baseY = 0
|
||||
hoverIndex = tonumber(string.match(path, "Card(%d+)")) or 0
|
||||
elseif string.find(path, "/ui/DefaultGroup/RewardHud/Reward") == 1 then
|
||||
prefix = "/ui/DefaultGroup/RewardHud/Reward"
|
||||
count = 3
|
||||
xs = { -300, 0, 300 }
|
||||
baseY = 0
|
||||
hoverIndex = tonumber(string.match(path, "Reward(%d+)")) or 0
|
||||
elseif string.find(path, "/ui/DefaultGroup/ShopHud/Card") == 1 then
|
||||
prefix = "/ui/DefaultGroup/ShopHud/Card"
|
||||
count = 3
|
||||
xs = { -300, 0, 300 }
|
||||
baseY = 20
|
||||
hoverIndex = tonumber(string.match(path, "Card(%d+)")) or 0
|
||||
end
|
||||
if count <= 0 then
|
||||
return
|
||||
end
|
||||
if self.CardHoverTweenId ~= nil and self.CardHoverTweenId ~= 0 then
|
||||
_TimerService:ClearTimer(self.CardHoverTweenId)
|
||||
self.CardHoverTweenId = 0
|
||||
end
|
||||
local items = {}
|
||||
for i = 1, count do
|
||||
local e = _EntityService:GetEntityByPath(prefix .. tostring(i))
|
||||
if e ~= nil and e.UITransformComponent ~= nil then
|
||||
local tr = e.UITransformComponent
|
||||
local tx = xs[i]
|
||||
local ty = baseY
|
||||
local sc = 1
|
||||
if hover == true and hoverIndex > 0 then
|
||||
if i == hoverIndex and e.Enable == true then
|
||||
sc = 1.5
|
||||
elseif i < hoverIndex then
|
||||
tx = tx - push
|
||||
elseif i > hoverIndex then
|
||||
tx = tx + push
|
||||
end
|
||||
end
|
||||
table.insert(items, { tr = tr, sx = tr.anchoredPosition.x, sy = tr.anchoredPosition.y, ss = tr.UIScale.x, tx = tx, ty = ty, ts = sc })
|
||||
end
|
||||
end
|
||||
local elapsed = 0
|
||||
local duration = 0.12
|
||||
local eventId = 0
|
||||
eventId = _TimerService:SetTimerRepeat(function()
|
||||
elapsed = elapsed + 1 / 60
|
||||
local t = math.min(elapsed / duration, 1)
|
||||
local eased = _TweenLogic:Ease(0, 1, 1, EaseType.SineEaseOut, t)
|
||||
for i = 1, #items do
|
||||
local it = items[i]
|
||||
local x = it.sx + (it.tx - it.sx) * eased
|
||||
local y = it.sy + (it.ty - it.sy) * eased
|
||||
local s = it.ss + (it.ts - it.ss) * eased
|
||||
it.tr.anchoredPosition = Vector2(x, y)
|
||||
it.tr.UIScale = Vector3(s, s, 1)
|
||||
end
|
||||
if t >= 1 then
|
||||
_TimerService:ClearTimer(eventId)
|
||||
if self.CardHoverTweenId == eventId then
|
||||
self.CardHoverTweenId = 0
|
||||
end
|
||||
end
|
||||
end, 1 / 60)
|
||||
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/DefaultGroup/CardHand/Card" .. tostring(slot), cardId)`, [
|
||||
{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' },
|
||||
{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'cardId' },
|
||||
@@ -3910,7 +4054,7 @@ if c.kind ~= "Power" then
|
||||
table.insert(self.DiscardPile, cardId)
|
||||
end
|
||||
if c.draw ~= nil then
|
||||
self:DrawCards(c.draw)
|
||||
self:DrawCards(c.draw, true)
|
||||
end
|
||||
self:RenderHand(false)
|
||||
self:RenderPiles()
|
||||
@@ -3922,6 +4066,18 @@ end
|
||||
if self.Hand == nil or self.Hand[slot] == nil then
|
||||
return
|
||||
end
|
||||
if self.CardHoverTweenId ~= nil and self.CardHoverTweenId ~= 0 then
|
||||
_TimerService:ClearTimer(self.CardHoverTweenId)
|
||||
self.CardHoverTweenId = 0
|
||||
end
|
||||
local cardXs = { ${CARD_XS.join(', ')} }
|
||||
for i = 1, 5 do
|
||||
local e = _EntityService:GetEntityByPath("/ui/DefaultGroup/CardHand/Card" .. tostring(i))
|
||||
if e ~= nil and e.UITransformComponent ~= nil then
|
||||
e.UITransformComponent.UIScale = Vector3(1, 1, 1)
|
||||
e.UITransformComponent.anchoredPosition = Vector2(cardXs[i], 0)
|
||||
end
|
||||
end
|
||||
self.DragSlot = slot`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }]),
|
||||
method('OnCardDrag', `if self.DragSlot ~= slot then
|
||||
return
|
||||
@@ -3942,6 +4098,7 @@ local cardXs = { ${CARD_XS.join(', ')} }
|
||||
local e = _EntityService:GetEntityByPath("/ui/DefaultGroup/CardHand/Card" .. tostring(slot))
|
||||
if e ~= nil and e.UITransformComponent ~= nil then
|
||||
e.UITransformComponent.anchoredPosition = Vector2(cardXs[slot], 0)
|
||||
e.UITransformComponent.UIScale = Vector3(1, 1, 1)
|
||||
end
|
||||
self:ResolveCardDrop(slot, touchPoint)`, [
|
||||
{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' },
|
||||
@@ -4327,6 +4484,8 @@ self:SetEntityEnabled("/ui/DefaultGroup/JobSelectHud", true)`),
|
||||
end
|
||||
if self.SelectedClass == "warrior" then
|
||||
return "전사"
|
||||
elseif self.SelectedClass == "bandit" then
|
||||
return "도적"
|
||||
elseif self.SelectedClass == "magician" then
|
||||
return "마법사"
|
||||
elseif self.SelectedClass == "thief" then
|
||||
|
||||
@@ -27394,7 +27394,7 @@
|
||||
{
|
||||
"id": "0e700002-0000-4000-8000-00000e700002",
|
||||
"path": "/ui/DefaultGroup/RewardHud/Reward1",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.UITouchReceiveComponent",
|
||||
"jsonString": {
|
||||
"name": "Reward1",
|
||||
"path": "/ui/DefaultGroup/RewardHud/Reward1",
|
||||
@@ -27574,6 +27574,10 @@
|
||||
"OverrideSorting": false,
|
||||
"Transition": 1,
|
||||
"Enable": true
|
||||
},
|
||||
{
|
||||
"@type": "MOD.Core.UITouchReceiveComponent",
|
||||
"Enable": true
|
||||
}
|
||||
],
|
||||
"@version": 1
|
||||
@@ -28287,7 +28291,7 @@
|
||||
{
|
||||
"id": "0e700009-0000-4000-8000-00000e700009",
|
||||
"path": "/ui/DefaultGroup/RewardHud/Reward2",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.UITouchReceiveComponent",
|
||||
"jsonString": {
|
||||
"name": "Reward2",
|
||||
"path": "/ui/DefaultGroup/RewardHud/Reward2",
|
||||
@@ -28467,6 +28471,10 @@
|
||||
"OverrideSorting": false,
|
||||
"Transition": 1,
|
||||
"Enable": true
|
||||
},
|
||||
{
|
||||
"@type": "MOD.Core.UITouchReceiveComponent",
|
||||
"Enable": true
|
||||
}
|
||||
],
|
||||
"@version": 1
|
||||
@@ -29180,7 +29188,7 @@
|
||||
{
|
||||
"id": "0e700010-0000-4000-8000-00000e700010",
|
||||
"path": "/ui/DefaultGroup/RewardHud/Reward3",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.UITouchReceiveComponent",
|
||||
"jsonString": {
|
||||
"name": "Reward3",
|
||||
"path": "/ui/DefaultGroup/RewardHud/Reward3",
|
||||
@@ -29360,6 +29368,10 @@
|
||||
"OverrideSorting": false,
|
||||
"Transition": 1,
|
||||
"Enable": true
|
||||
},
|
||||
{
|
||||
"@type": "MOD.Core.UITouchReceiveComponent",
|
||||
"Enable": true
|
||||
}
|
||||
],
|
||||
"@version": 1
|
||||
@@ -63537,7 +63549,7 @@
|
||||
{
|
||||
"id": "0e800003-0000-4000-8000-00000e800003",
|
||||
"path": "/ui/DefaultGroup/ShopHud/Card1",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.UITouchReceiveComponent",
|
||||
"jsonString": {
|
||||
"name": "Card1",
|
||||
"path": "/ui/DefaultGroup/ShopHud/Card1",
|
||||
@@ -63717,6 +63729,10 @@
|
||||
"OverrideSorting": false,
|
||||
"Transition": 1,
|
||||
"Enable": true
|
||||
},
|
||||
{
|
||||
"@type": "MOD.Core.UITouchReceiveComponent",
|
||||
"Enable": true
|
||||
}
|
||||
],
|
||||
"@version": 1
|
||||
@@ -64618,7 +64634,7 @@
|
||||
{
|
||||
"id": "0e80000b-0000-4000-8000-00000e80000b",
|
||||
"path": "/ui/DefaultGroup/ShopHud/Card2",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.UITouchReceiveComponent",
|
||||
"jsonString": {
|
||||
"name": "Card2",
|
||||
"path": "/ui/DefaultGroup/ShopHud/Card2",
|
||||
@@ -64798,6 +64814,10 @@
|
||||
"OverrideSorting": false,
|
||||
"Transition": 1,
|
||||
"Enable": true
|
||||
},
|
||||
{
|
||||
"@type": "MOD.Core.UITouchReceiveComponent",
|
||||
"Enable": true
|
||||
}
|
||||
],
|
||||
"@version": 1
|
||||
@@ -65699,7 +65719,7 @@
|
||||
{
|
||||
"id": "0e800013-0000-4000-8000-00000e800013",
|
||||
"path": "/ui/DefaultGroup/ShopHud/Card3",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.UITouchReceiveComponent",
|
||||
"jsonString": {
|
||||
"name": "Card3",
|
||||
"path": "/ui/DefaultGroup/ShopHud/Card3",
|
||||
@@ -65879,6 +65899,10 @@
|
||||
"OverrideSorting": false,
|
||||
"Transition": 1,
|
||||
"Enable": true
|
||||
},
|
||||
{
|
||||
"@type": "MOD.Core.UITouchReceiveComponent",
|
||||
"Enable": true
|
||||
}
|
||||
],
|
||||
"@version": 1
|
||||
@@ -233257,11 +233281,11 @@
|
||||
},
|
||||
"MobileOnly": false,
|
||||
"OffsetMax": {
|
||||
"x": -225,
|
||||
"x": -405,
|
||||
"y": 205
|
||||
},
|
||||
"OffsetMin": {
|
||||
"x": -495,
|
||||
"x": -675,
|
||||
"y": -125
|
||||
},
|
||||
"Pivot": {
|
||||
@@ -233280,11 +233304,11 @@
|
||||
},
|
||||
"UIVersion": 2,
|
||||
"anchoredPosition": {
|
||||
"x": -360,
|
||||
"x": -540,
|
||||
"y": 40
|
||||
},
|
||||
"Position": {
|
||||
"x": -360,
|
||||
"x": -540,
|
||||
"y": 40,
|
||||
"z": 0
|
||||
},
|
||||
@@ -233962,11 +233986,11 @@
|
||||
},
|
||||
"MobileOnly": false,
|
||||
"OffsetMax": {
|
||||
"x": 135,
|
||||
"x": -45,
|
||||
"y": 205
|
||||
},
|
||||
"OffsetMin": {
|
||||
"x": -135,
|
||||
"x": -315,
|
||||
"y": -125
|
||||
},
|
||||
"Pivot": {
|
||||
@@ -233985,11 +234009,11 @@
|
||||
},
|
||||
"UIVersion": 2,
|
||||
"anchoredPosition": {
|
||||
"x": 0,
|
||||
"x": -180,
|
||||
"y": 40
|
||||
},
|
||||
"Position": {
|
||||
"x": 0,
|
||||
"x": -180,
|
||||
"y": 40,
|
||||
"z": 0
|
||||
},
|
||||
@@ -234632,11 +234656,11 @@
|
||||
},
|
||||
{
|
||||
"id": "0e000070-0000-4000-8000-00000e000070",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/MageButton",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/BanditButton",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
|
||||
"jsonString": {
|
||||
"name": "MageButton",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/MageButton",
|
||||
"name": "BanditButton",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/BanditButton",
|
||||
"nameEditable": true,
|
||||
"enable": true,
|
||||
"visible": true,
|
||||
@@ -234667,11 +234691,11 @@
|
||||
},
|
||||
"MobileOnly": false,
|
||||
"OffsetMax": {
|
||||
"x": 495,
|
||||
"x": 315,
|
||||
"y": 205
|
||||
},
|
||||
"OffsetMin": {
|
||||
"x": 225,
|
||||
"x": 45,
|
||||
"y": -125
|
||||
},
|
||||
"Pivot": {
|
||||
@@ -234690,11 +234714,11 @@
|
||||
},
|
||||
"UIVersion": 2,
|
||||
"anchoredPosition": {
|
||||
"x": 360,
|
||||
"x": 180,
|
||||
"y": 40
|
||||
},
|
||||
"Position": {
|
||||
"x": 360,
|
||||
"x": 180,
|
||||
"y": 40,
|
||||
"z": 0
|
||||
},
|
||||
@@ -234820,6 +234844,711 @@
|
||||
},
|
||||
{
|
||||
"id": "0e00007a-0000-4000-8000-00000e00007a",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/BanditButton/Name",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
|
||||
"jsonString": {
|
||||
"name": "Name",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/BanditButton/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": 115,
|
||||
"y": 135
|
||||
},
|
||||
"OffsetMin": {
|
||||
"x": -115,
|
||||
"y": 81
|
||||
},
|
||||
"Pivot": {
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"RectSize": {
|
||||
"x": 230,
|
||||
"y": 54
|
||||
},
|
||||
"UIMode": 1,
|
||||
"UIScale": {
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"UIVersion": 2,
|
||||
"anchoredPosition": {
|
||||
"x": 0,
|
||||
"y": 108
|
||||
},
|
||||
"Position": {
|
||||
"x": 0,
|
||||
"y": 108,
|
||||
"z": 0
|
||||
},
|
||||
"QuaternionRotation": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0,
|
||||
"w": 1
|
||||
},
|
||||
"Scale": {
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"Enable": true
|
||||
},
|
||||
{
|
||||
"@type": "MOD.Core.SpriteGUIRendererComponent",
|
||||
"AnimClipPlayType": 0,
|
||||
"EndFrameIndex": 2147483647,
|
||||
"ImageRUID": {
|
||||
"DataId": ""
|
||||
},
|
||||
"LocalPosition": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"LocalScale": {
|
||||
"x": 1,
|
||||
"y": 1
|
||||
},
|
||||
"OverrideSorting": false,
|
||||
"PlayRate": 1,
|
||||
"PreserveSprite": 0,
|
||||
"StartFrameIndex": 0,
|
||||
"Color": {
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 0
|
||||
},
|
||||
"DropShadow": false,
|
||||
"DropShadowAngle": 30,
|
||||
"DropShadowColor": {
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 0.72
|
||||
},
|
||||
"DropShadowDistance": 32,
|
||||
"FillAmount": 1,
|
||||
"FillCenter": true,
|
||||
"FillClockWise": true,
|
||||
"FillMethod": 0,
|
||||
"FillOrigin": 0,
|
||||
"FlipX": false,
|
||||
"FlipY": false,
|
||||
"FrameColumn": 1,
|
||||
"FrameRate": 0,
|
||||
"FrameRow": 1,
|
||||
"Outline": false,
|
||||
"OutlineColor": {
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 1
|
||||
},
|
||||
"OutlineWidth": 3,
|
||||
"RaycastTarget": false,
|
||||
"Type": 1,
|
||||
"Enable": true
|
||||
},
|
||||
{
|
||||
"@type": "MOD.Core.TextComponent",
|
||||
"Alignment": 4,
|
||||
"Bold": true,
|
||||
"DropShadow": false,
|
||||
"DropShadowAngle": 30,
|
||||
"DropShadowColor": {
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 0.72
|
||||
},
|
||||
"DropShadowDistance": 32,
|
||||
"Font": 0,
|
||||
"FontColor": {
|
||||
"r": 0.94,
|
||||
"g": 0.74,
|
||||
"b": 0.26,
|
||||
"a": 1
|
||||
},
|
||||
"FontSize": 34,
|
||||
"MaxSize": 34,
|
||||
"MinSize": 8,
|
||||
"OutlineColor": {
|
||||
"r": 0.08,
|
||||
"g": 0.08,
|
||||
"b": 0.08,
|
||||
"a": 1
|
||||
},
|
||||
"OutlineDistance": {
|
||||
"x": 1,
|
||||
"y": -1
|
||||
},
|
||||
"OutlineWidth": 1,
|
||||
"Overflow": 0,
|
||||
"OverrideSorting": false,
|
||||
"Padding": {
|
||||
"left": 0,
|
||||
"right": 0,
|
||||
"top": 0,
|
||||
"bottom": 0
|
||||
},
|
||||
"SizeFit": false,
|
||||
"Text": "사일런트",
|
||||
"UseOutLine": true,
|
||||
"Enable": true
|
||||
}
|
||||
],
|
||||
"@version": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0e000084-0000-4000-8000-00000e000084",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/BanditButton/Portrait",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
|
||||
"jsonString": {
|
||||
"name": "Portrait",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/BanditButton/Portrait",
|
||||
"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": 71,
|
||||
"y": 79
|
||||
},
|
||||
"OffsetMin": {
|
||||
"x": -71,
|
||||
"y": -63
|
||||
},
|
||||
"Pivot": {
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"RectSize": {
|
||||
"x": 142,
|
||||
"y": 142
|
||||
},
|
||||
"UIMode": 1,
|
||||
"UIScale": {
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"UIVersion": 2,
|
||||
"anchoredPosition": {
|
||||
"x": 0,
|
||||
"y": 8
|
||||
},
|
||||
"Position": {
|
||||
"x": 0,
|
||||
"y": 8,
|
||||
"z": 0
|
||||
},
|
||||
"QuaternionRotation": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0,
|
||||
"w": 1
|
||||
},
|
||||
"Scale": {
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"Enable": true
|
||||
},
|
||||
{
|
||||
"@type": "MOD.Core.SpriteGUIRendererComponent",
|
||||
"AnimClipPlayType": 0,
|
||||
"EndFrameIndex": 2147483647,
|
||||
"ImageRUID": {
|
||||
"DataId": ""
|
||||
},
|
||||
"LocalPosition": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"LocalScale": {
|
||||
"x": 1,
|
||||
"y": 1
|
||||
},
|
||||
"OverrideSorting": false,
|
||||
"PlayRate": 1,
|
||||
"PreserveSprite": 0,
|
||||
"StartFrameIndex": 0,
|
||||
"Color": {
|
||||
"r": 0.26,
|
||||
"g": 0.5,
|
||||
"b": 0.34,
|
||||
"a": 1
|
||||
},
|
||||
"DropShadow": false,
|
||||
"DropShadowAngle": 30,
|
||||
"DropShadowColor": {
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 0.72
|
||||
},
|
||||
"DropShadowDistance": 32,
|
||||
"FillAmount": 1,
|
||||
"FillCenter": true,
|
||||
"FillClockWise": true,
|
||||
"FillMethod": 0,
|
||||
"FillOrigin": 0,
|
||||
"FlipX": false,
|
||||
"FlipY": false,
|
||||
"FrameColumn": 1,
|
||||
"FrameRate": 0,
|
||||
"FrameRow": 1,
|
||||
"Outline": false,
|
||||
"OutlineColor": {
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 1
|
||||
},
|
||||
"OutlineWidth": 3,
|
||||
"RaycastTarget": false,
|
||||
"Type": 1,
|
||||
"Enable": true
|
||||
}
|
||||
],
|
||||
"@version": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0e00008e-0000-4000-8000-00000e00008e",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/BanditButton/Desc",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
|
||||
"jsonString": {
|
||||
"name": "Desc",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/BanditButton/Desc",
|
||||
"nameEditable": true,
|
||||
"enable": true,
|
||||
"visible": true,
|
||||
"localize": true,
|
||||
"displayOrder": 2,
|
||||
"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": 115,
|
||||
"y": -80
|
||||
},
|
||||
"OffsetMin": {
|
||||
"x": -115,
|
||||
"y": -130
|
||||
},
|
||||
"Pivot": {
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"RectSize": {
|
||||
"x": 230,
|
||||
"y": 50
|
||||
},
|
||||
"UIMode": 1,
|
||||
"UIScale": {
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"UIVersion": 2,
|
||||
"anchoredPosition": {
|
||||
"x": 0,
|
||||
"y": -105
|
||||
},
|
||||
"Position": {
|
||||
"x": 0,
|
||||
"y": -105,
|
||||
"z": 0
|
||||
},
|
||||
"QuaternionRotation": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0,
|
||||
"w": 1
|
||||
},
|
||||
"Scale": {
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"Enable": true
|
||||
},
|
||||
{
|
||||
"@type": "MOD.Core.SpriteGUIRendererComponent",
|
||||
"AnimClipPlayType": 0,
|
||||
"EndFrameIndex": 2147483647,
|
||||
"ImageRUID": {
|
||||
"DataId": ""
|
||||
},
|
||||
"LocalPosition": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"LocalScale": {
|
||||
"x": 1,
|
||||
"y": 1
|
||||
},
|
||||
"OverrideSorting": false,
|
||||
"PlayRate": 1,
|
||||
"PreserveSprite": 0,
|
||||
"StartFrameIndex": 0,
|
||||
"Color": {
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 0
|
||||
},
|
||||
"DropShadow": false,
|
||||
"DropShadowAngle": 30,
|
||||
"DropShadowColor": {
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 0.72
|
||||
},
|
||||
"DropShadowDistance": 32,
|
||||
"FillAmount": 1,
|
||||
"FillCenter": true,
|
||||
"FillClockWise": true,
|
||||
"FillMethod": 0,
|
||||
"FillOrigin": 0,
|
||||
"FlipX": false,
|
||||
"FlipY": false,
|
||||
"FrameColumn": 1,
|
||||
"FrameRate": 0,
|
||||
"FrameRow": 1,
|
||||
"Outline": false,
|
||||
"OutlineColor": {
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 1
|
||||
},
|
||||
"OutlineWidth": 3,
|
||||
"RaycastTarget": false,
|
||||
"Type": 1,
|
||||
"Enable": true
|
||||
},
|
||||
{
|
||||
"@type": "MOD.Core.TextComponent",
|
||||
"Alignment": 4,
|
||||
"Bold": false,
|
||||
"DropShadow": false,
|
||||
"DropShadowAngle": 30,
|
||||
"DropShadowColor": {
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 0.72
|
||||
},
|
||||
"DropShadowDistance": 32,
|
||||
"Font": 0,
|
||||
"FontColor": {
|
||||
"r": 0.86,
|
||||
"g": 0.9,
|
||||
"b": 0.94,
|
||||
"a": 1
|
||||
},
|
||||
"FontSize": 20,
|
||||
"MaxSize": 20,
|
||||
"MinSize": 8,
|
||||
"OutlineColor": {
|
||||
"r": 0.08,
|
||||
"g": 0.08,
|
||||
"b": 0.08,
|
||||
"a": 1
|
||||
},
|
||||
"OutlineDistance": {
|
||||
"x": 1,
|
||||
"y": -1
|
||||
},
|
||||
"OutlineWidth": 1,
|
||||
"Overflow": 0,
|
||||
"OverrideSorting": false,
|
||||
"Padding": {
|
||||
"left": 0,
|
||||
"right": 0,
|
||||
"top": 0,
|
||||
"bottom": 0
|
||||
},
|
||||
"SizeFit": false,
|
||||
"Text": "독·단검·드로우",
|
||||
"UseOutLine": true,
|
||||
"Enable": true
|
||||
}
|
||||
],
|
||||
"@version": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0e000071-0000-4000-8000-00000e000071",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/MageButton",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
|
||||
"jsonString": {
|
||||
"name": "MageButton",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/MageButton",
|
||||
"nameEditable": true,
|
||||
"enable": true,
|
||||
"visible": true,
|
||||
"localize": true,
|
||||
"displayOrder": 13,
|
||||
"pathConstraints": "////",
|
||||
"revision": 1,
|
||||
"origin": {
|
||||
"type": "Model",
|
||||
"entry_id": "UIButton",
|
||||
"sub_entity_id": null,
|
||||
"root_entity_id": null,
|
||||
"replaced_model_id": null
|
||||
},
|
||||
"modelId": "uibutton",
|
||||
"@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,
|
||||
"y": 205
|
||||
},
|
||||
"OffsetMin": {
|
||||
"x": 405,
|
||||
"y": -125
|
||||
},
|
||||
"Pivot": {
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"RectSize": {
|
||||
"x": 270,
|
||||
"y": 330
|
||||
},
|
||||
"UIMode": 1,
|
||||
"UIScale": {
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"UIVersion": 2,
|
||||
"anchoredPosition": {
|
||||
"x": 540,
|
||||
"y": 40
|
||||
},
|
||||
"Position": {
|
||||
"x": 540,
|
||||
"y": 40,
|
||||
"z": 0
|
||||
},
|
||||
"QuaternionRotation": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0,
|
||||
"w": 1
|
||||
},
|
||||
"Scale": {
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"Enable": true
|
||||
},
|
||||
{
|
||||
"@type": "MOD.Core.SpriteGUIRendererComponent",
|
||||
"AnimClipPlayType": 0,
|
||||
"EndFrameIndex": 2147483647,
|
||||
"ImageRUID": {
|
||||
"DataId": ""
|
||||
},
|
||||
"LocalPosition": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"LocalScale": {
|
||||
"x": 1,
|
||||
"y": 1
|
||||
},
|
||||
"OverrideSorting": false,
|
||||
"PlayRate": 1,
|
||||
"PreserveSprite": 0,
|
||||
"StartFrameIndex": 0,
|
||||
"Color": {
|
||||
"r": 0.16,
|
||||
"g": 0.2,
|
||||
"b": 0.26,
|
||||
"a": 1
|
||||
},
|
||||
"DropShadow": false,
|
||||
"DropShadowAngle": 30,
|
||||
"DropShadowColor": {
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 0.72
|
||||
},
|
||||
"DropShadowDistance": 32,
|
||||
"FillAmount": 1,
|
||||
"FillCenter": true,
|
||||
"FillClockWise": true,
|
||||
"FillMethod": 0,
|
||||
"FillOrigin": 0,
|
||||
"FlipX": false,
|
||||
"FlipY": false,
|
||||
"FrameColumn": 1,
|
||||
"FrameRate": 0,
|
||||
"FrameRow": 1,
|
||||
"Outline": false,
|
||||
"OutlineColor": {
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 1
|
||||
},
|
||||
"OutlineWidth": 3,
|
||||
"RaycastTarget": true,
|
||||
"Type": 1,
|
||||
"Enable": true
|
||||
},
|
||||
{
|
||||
"@type": "MOD.Core.ButtonComponent",
|
||||
"Colors": {
|
||||
"NormalColor": {
|
||||
"r": 1,
|
||||
"g": 1,
|
||||
"b": 1,
|
||||
"a": 1
|
||||
},
|
||||
"HighlightedColor": {
|
||||
"r": 0.9607843,
|
||||
"g": 0.9607843,
|
||||
"b": 0.9607843,
|
||||
"a": 1
|
||||
},
|
||||
"PressedColor": {
|
||||
"r": 0.784313738,
|
||||
"g": 0.784313738,
|
||||
"b": 0.784313738,
|
||||
"a": 1
|
||||
},
|
||||
"SelectedColor": {
|
||||
"r": 0.9607843,
|
||||
"g": 0.9607843,
|
||||
"b": 0.9607843,
|
||||
"a": 1
|
||||
},
|
||||
"DisabledColor": {
|
||||
"r": 0.784313738,
|
||||
"g": 0.784313738,
|
||||
"b": 0.784313738,
|
||||
"a": 0.5019608
|
||||
},
|
||||
"ColorMultiplier": 1,
|
||||
"FadeDuration": 0.1
|
||||
},
|
||||
"ImageRUIDs": {
|
||||
"HighlightedSprite": null,
|
||||
"PressedSprite": null,
|
||||
"SelectedSprite": null,
|
||||
"DisabledSprite": null
|
||||
},
|
||||
"KeyCode": 0,
|
||||
"OverrideSorting": false,
|
||||
"Transition": 1,
|
||||
"Enable": true
|
||||
}
|
||||
],
|
||||
"@version": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0e00007b-0000-4000-8000-00000e00007b",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/MageButton/Name",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
|
||||
"jsonString": {
|
||||
@@ -235007,7 +235736,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0e000084-0000-4000-8000-00000e000084",
|
||||
"id": "0e000085-0000-4000-8000-00000e000085",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/MageButton/Portrait",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
|
||||
"jsonString": {
|
||||
@@ -235148,7 +235877,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0e00008e-0000-4000-8000-00000e00008e",
|
||||
"id": "0e00008f-0000-4000-8000-00000e00008f",
|
||||
"path": "/ui/DefaultGroup/CharacterSelectHud/MageButton/Desc",
|
||||
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
|
||||
"jsonString": {
|
||||
|
||||
Reference in New Issue
Block a user