@malib/gear 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs +2 -2
- package/index.d.ts +1 -14
- package/index.js +1356 -736
- package/internal.d.ts +14 -0
- package/lib/gear.d.ts +63 -50
- package/lib/gearicon.d.ts +9 -0
- package/lib/gearreq.d.ts +4 -4
- package/lib/logic/bonusstat.d.ts +34 -22
- package/lib/logic/enhancement.d.ts +37 -59
- package/lib/logic/scroll.d.ts +12 -11
- package/lib/logic/upgrade.d.ts +43 -50
- package/lib/potential.d.ts +6 -6
- package/lib/soul.d.ts +41 -3
- package/package.json +8 -2
- package/lib/logic/soul.d.ts +0 -41
package/index.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
class
|
|
1
|
+
class K {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.id = 0, this.origin = [0, 0];
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
class q {
|
|
2
7
|
constructor() {
|
|
3
8
|
this.base = 0, this.bonus = 0, this.upgrade = 0, this.enchant = 0;
|
|
4
9
|
}
|
|
@@ -16,25 +21,85 @@ class I {
|
|
|
16
21
|
}
|
|
17
22
|
}
|
|
18
23
|
var n = /* @__PURE__ */ ((t) => (t[t.incSTR = 1] = "incSTR", t[t.incSTRr = 2] = "incSTRr", t[t.incDEX = 3] = "incDEX", t[t.incDEXr = 4] = "incDEXr", t[t.incINT = 5] = "incINT", t[t.incINTr = 6] = "incINTr", t[t.incLUK = 7] = "incLUK", t[t.incLUKr = 8] = "incLUKr", t[t.incAllStat = 9] = "incAllStat", t[t.incMHP = 10] = "incMHP", t[t.incMMP = 11] = "incMMP", t[t.incMHPr = 12] = "incMHPr", t[t.incMMPr = 13] = "incMMPr", t[t.incMDF = 14] = "incMDF", t[t.incARC = 15] = "incARC", t[t.incAUT = 16] = "incAUT", t[t.incPAD = 17] = "incPAD", t[t.incMAD = 18] = "incMAD", t[t.incAD = 19] = "incAD", t[t.incPDD = 20] = "incPDD", t[t.incSpeed = 21] = "incSpeed", t[t.incJump = 22] = "incJump", t[t.knockback = 23] = "knockback", t[t.bdR = 24] = "bdR", t[t.incBDR = 25] = "incBDR", t[t.imdR = 26] = "imdR", t[t.incIMDR = 27] = "incIMDR", t[t.damR = 28] = "damR", t[t.nbdR = 29] = "nbdR", t[t.statR = 30] = "statR", t[t.incCHUC = 31] = "incCHUC", t[t.incPADr = 100] = "incPADr", t[t.incMADr = 101] = "incMADr", t[t.incPDDr = 102] = "incPDDr", t[t.incCr = 103] = "incCr", t[t.incDAMr = 104] = "incDAMr", t[t.RecoveryHP = 105] = "RecoveryHP", t[t.RecoveryMP = 106] = "RecoveryMP", t[t.face = 107] = "face", t[t.prop = 108] = "prop", t[t.time = 109] = "time", t[t.HP = 110] = "HP", t[t.MP = 111] = "MP", t[t.attackType = 112] = "attackType", t[t.ignoreTargetDEF = 113] = "ignoreTargetDEF", t[t.ignoreDAM = 114] = "ignoreDAM", t[t.ignoreDAMr = 115] = "ignoreDAMr", t[t.DAMreflect = 116] = "DAMreflect", t[t.mpconReduce = 117] = "mpconReduce", t[t.incMesoProp = 118] = "incMesoProp", t[t.incRewardProp = 119] = "incRewardProp", t[t.incAllskill = 120] = "incAllskill", t[t.RecoveryUP = 121] = "RecoveryUP", t[t.boss = 122] = "boss", t[t.level = 123] = "level", t[t.incTerR = 124] = "incTerR", t[t.incAsrR = 125] = "incAsrR", t[t.incEXPr = 126] = "incEXPr", t[t.reduceCooltime = 127] = "reduceCooltime", t[t.incSTRlv = 128] = "incSTRlv", t[t.incDEXlv = 129] = "incDEXlv", t[t.incINTlv = 130] = "incINTlv", t[t.incLUKlv = 131] = "incLUKlv", t[t.incMHPlv = 132] = "incMHPlv", t[t.incPADlv = 133] = "incPADlv", t[t.incMADlv = 134] = "incMADlv", t[t.incCriticaldamage = 135] = "incCriticaldamage", t[t.attackSpeed = 200] = "attackSpeed", t[t.setItemID = 201] = "setItemID", t[t.durability = 202] = "durability", t[t.reduceReq = 203] = "reduceReq", t[t.only = 1100] = "only", t[t.tradeBlock = 1101] = "tradeBlock", t[t.accountSharable = 1102] = "accountSharable", t[t.onlyEquip = 1103] = "onlyEquip", t[t.tradeAvailable = 1104] = "tradeAvailable", t[t.equipTradeBlock = 1105] = "equipTradeBlock", t[t.sharableOnce = 1106] = "sharableOnce", t[t.charismaEXP = 1107] = "charismaEXP", t[t.senseEXP = 1108] = "senseEXP", t[t.insightEXP = 1109] = "insightEXP", t[t.willEXP = 1110] = "willEXP", t[t.craftEXP = 1111] = "craftEXP", t[t.charmEXP = 1112] = "charmEXP", t[t.accountShareTag = 1113] = "accountShareTag", t[t.bossReward = 1114] = "bossReward", t[t.noPotential = 1115] = "noPotential", t[t.fixedPotential = 1116] = "fixedPotential", t[t.specialGrade = 1117] = "specialGrade", t[t.fixedGrade = 1118] = "fixedGrade", t[t.superiorEqp = 1119] = "superiorEqp", t[t.incPQEXPr = 1120] = "incPQEXPr", t[t.jokerToSetItem = 1121] = "jokerToSetItem", t[t.blockGoldHammer = 1122] = "blockGoldHammer", t[t.exceptUpgrade = 1123] = "exceptUpgrade", t[t.onlyUpgrade = 1124] = "onlyUpgrade", t[t.noLookChange = 1125] = "noLookChange", t[t.tucIgnoreForPotential = 1126] = "tucIgnoreForPotential", t))(n || {});
|
|
19
|
-
class
|
|
24
|
+
class W {
|
|
20
25
|
constructor() {
|
|
21
26
|
this.level = 0, this.str = 0, this.luk = 0, this.dex = 0, this.int = 0, this.job = 0, this.specJob = 0;
|
|
22
27
|
}
|
|
23
28
|
}
|
|
24
|
-
var
|
|
25
|
-
class
|
|
26
|
-
constructor() {
|
|
27
|
-
this.enchanted = !1, this.charge = 0, this.chargeOption = /* @__PURE__ */ new Map();
|
|
29
|
+
var o = /* @__PURE__ */ ((t) => (t[t.cap = 100] = "cap", t[t.faceAccessory = 101] = "faceAccessory", t[t.eyeAccessory = 102] = "eyeAccessory", t[t.earrings = 103] = "earrings", t[t.coat = 104] = "coat", t[t.longcoat = 105] = "longcoat", t[t.pants = 106] = "pants", t[t.shoes = 107] = "shoes", t[t.glove = 108] = "glove", t[t.cape = 110] = "cape", t[t.ring = 111] = "ring", t[t.pendant = 112] = "pendant", t[t.belt = 113] = "belt", t[t.medal = 114] = "medal", t[t.shoulder = 115] = "shoulder", t[t.pocket = 116] = "pocket", t[t.badge = 118] = "badge", t[t.android = 166] = "android", t[t.machineHeart = 167] = "machineHeart", t[t.shield = 109] = "shield", t[t.emblem = 119] = "emblem", t[t.powerSource = 119020] = "powerSource", t[t.shiningRod = 1212] = "shiningRod", t[t.tuner = 1213] = "tuner", t[t.breathShooter = 1214] = "breathShooter", t[t.soulShooter = 122] = "soulShooter", t[t.desperado = 123] = "desperado", t[t.energySword = 124] = "energySword", t[t.espLimiter = 126] = "espLimiter", t[t.chain = 127] = "chain", t[t.magicGauntlet = 128] = "magicGauntlet", t[t.ritualFan = 129] = "ritualFan", t[t.ohSword = 130] = "ohSword", t[t.ohAxe = 131] = "ohAxe", t[t.ohBlunt = 132] = "ohBlunt", t[t.dagger = 133] = "dagger", t[t.katara = 134] = "katara", t[t.cane = 136] = "cane", t[t.wand = 137] = "wand", t[t.staff = 138] = "staff", t[t.thSword = 140] = "thSword", t[t.chakram = 1404] = "chakram", t[t.thAxe = 141] = "thAxe", t[t.thBlunt = 142] = "thBlunt", t[t.spear = 143] = "spear", t[t.polearm = 144] = "polearm", t[t.bow = 145] = "bow", t[t.crossbow = 146] = "crossbow", t[t.claw = 147] = "claw", t[t.knuckle = 148] = "knuckle", t[t.gun = 149] = "gun", t[t.shovel = 150] = "shovel", t[t.pickaxe = 151] = "pickaxe", t[t.dualBowguns = 152] = "dualBowguns", t[t.handCannon = 153] = "handCannon", t[t.heavySword = 156] = "heavySword", t[t.longSword = 157] = "longSword", t[t.gauntletRevolver = 158] = "gauntletRevolver", t[t.ancientBow = 159] = "ancientBow", t[t.soulShield = 1098] = "soulShield", t[t.demonShield = 1099] = "demonShield", t[t.magicArrow = 135200] = "magicArrow", t[t.card = 135210] = "card", t[t.medallion = 135220] = "medallion", t[t.rosary = 135221] = "rosary", t[t.ironChain = 135222] = "ironChain", t[t.magicBook1 = 135223] = "magicBook1", t[t.magicBook2 = 135224] = "magicBook2", t[t.magicBook3 = 135225] = "magicBook3", t[t.arrowFletching = 135226] = "arrowFletching", t[t.bowThimble = 135227] = "bowThimble", t[t.daggerScabbard = 135228] = "daggerScabbard", t[t.charm = 135229] = "charm", t[t.orb = 135240] = "orb", t[t.dragonEssence = 135250] = "dragonEssence", t[t.soulRing = 135260] = "soulRing", t[t.magnum = 135270] = "magnum", t[t.wristBand = 135290] = "wristBand", t[t.farSight = 135291] = "farSight", t[t.powderKeg = 135292] = "powderKeg", t[t.mass = 135293] = "mass", t[t.document = 135294] = "document", t[t.magicMarble = 135295] = "magicMarble", t[t.arrowhead = 135296] = "arrowhead", t[t.jewel = 135297] = "jewel", t[t.powderKeg2 = 135298] = "powderKeg2", t[t.controller = 135300] = "controller", t[t.foxMarble = 135310] = "foxMarble", t[t.chessPiece = 135320] = "chessPiece", t[t.transmitter = 135330] = "transmitter", t[t.charge = 135340] = "charge", t[t.magicWing = 135350] = "magicWing", t[t.pathOfAbyss = 135360] = "pathOfAbyss", t[t.relic = 135370] = "relic", t[t.fanTassel = 135380] = "fanTassel", t[t.bracelet = 135400] = "bracelet", t[t.weaponBelt = 135401] = "weaponBelt", t[t.ornament = 135402] = "ornament", t[t.hexSeeker = 135403] = "hexSeeker", t[t.petEquip = 180] = "petEquip", t[t.machineEngine = 161] = "machineEngine", t[t.machineArms = 162] = "machineArms", t[t.machineLegs = 163] = "machineLegs", t[t.machineBody = 164] = "machineBody", t[t.machineTransistors = 165] = "machineTransistors", t[t.dragonMask = 194] = "dragonMask", t[t.dragonPendant = 195] = "dragonPendant", t[t.dragonWings = 196] = "dragonWings", t[t.dragonTail = 197] = "dragonTail", t))(o || {}), C = /* @__PURE__ */ ((t) => (t[t.normal = 0] = "normal", t[t.rare = 1] = "rare", t[t.epic = 2] = "epic", t[t.unique = 3] = "unique", t[t.legendary = 4] = "legendary", t[t.special = 5] = "special", t))(C || {});
|
|
30
|
+
class V {
|
|
31
|
+
constructor(c) {
|
|
32
|
+
this.enchanted = !1, this.charge = 0, this.chargeOption = /* @__PURE__ */ new Map(), this.gear = c;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 소울 인챈트를 적용합니다.
|
|
36
|
+
* @returns 적용했을 경우 `true`; 아닐 경우 `false`.
|
|
37
|
+
* 이미 소울 인챈트 상태이거나 장비 분류가 무기가 아닐 경우 `false`를 반환합니다.
|
|
38
|
+
*/
|
|
39
|
+
enchant() {
|
|
40
|
+
return this.enchanted || !M.isWeapon(this.gear.type) ? !1 : (this.enchanted = !0, this.soul = void 0, this.charge = 0, this.chargeOption.clear(), !0);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 소울 인챈트를 해제합니다.
|
|
44
|
+
* @returns 해제했을 경우 `true`; 아닐 경우 `false`.
|
|
45
|
+
* 소울 인챈트 상태가 아닐 경우 `false`를 반환합니다.
|
|
46
|
+
*/
|
|
47
|
+
disenchant() {
|
|
48
|
+
return this.enchanted ? (this.enchanted = !1, this.soul = void 0, this.charge = 0, this.chargeOption.clear(), !0) : !1;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 소울을 장착합니다.
|
|
52
|
+
* 소울 충전량으로 증가하는 옵션을 다시 계산합니다.
|
|
53
|
+
* 소울 인챈트가 적용된 상태에만 장착됩니다.
|
|
54
|
+
* @param soul 장착할 소울.
|
|
55
|
+
* @returns 장착했을 경우 `true`; 아닐 경우 `false`.
|
|
56
|
+
* 소울 인챈트 상태가 아닐 경우 `false`를 반환합니다.
|
|
57
|
+
*/
|
|
58
|
+
setSoul(c) {
|
|
59
|
+
return this.enchanted ? (this.soul = c, this.setCharge(this.charge), !0) : !1;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 장착된 소울을 제거합니다.
|
|
63
|
+
* @returns 제거했을 경우 `true`; 아닐 경우 `false`.
|
|
64
|
+
* 소울 인챈트 상태가 아니거나 장착된 소울이 없을 경우 `false`를 반환합니다.
|
|
65
|
+
*/
|
|
66
|
+
removeSoul() {
|
|
67
|
+
return !this.enchanted || !this.soul ? !1 : (this.soul = void 0, this.setCharge(this.charge), !0);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 소울 충전량을 설정합니다.
|
|
71
|
+
* 소울 충전량으로 증가하는 옵션을 다시 계산합니다.
|
|
72
|
+
* @param charge 설정할 소울 충전량.
|
|
73
|
+
* `0`부터 `1000`까지의 값으로 설정할 수 있습니다.
|
|
74
|
+
* @returns 적용했을 경우 `true`; 아닐 경우 `false`.
|
|
75
|
+
* 소울 인챈트 상태가 아니거나 설정할 소울 충전량이 0과 1000 사이의 값이 아닐 경우 `false`를 반환합니다.
|
|
76
|
+
*/
|
|
77
|
+
setCharge(c) {
|
|
78
|
+
if (!this.enchanted || c < 0 || c > 1e3)
|
|
79
|
+
return !1;
|
|
80
|
+
this.charge = c;
|
|
81
|
+
const s = this.gear.option(n.incPAD).base < this.gear.option(n.incMAD).base ? n.incMAD : n.incPAD;
|
|
82
|
+
return this.chargeOption.clear(), this.chargeOption.set(s, this.getChargeAD()), !0;
|
|
83
|
+
}
|
|
84
|
+
getChargeAD() {
|
|
85
|
+
if (!this.enchanted || this.charge === 0)
|
|
86
|
+
return 0;
|
|
87
|
+
const c = Math.min(Math.ceil(this.charge / 100) - 1, 5);
|
|
88
|
+
if (this.soul) {
|
|
89
|
+
const i = this.soul.multiplier;
|
|
90
|
+
return 10 + c * i;
|
|
91
|
+
}
|
|
92
|
+
return 5 + c;
|
|
28
93
|
}
|
|
29
94
|
}
|
|
30
|
-
class
|
|
95
|
+
class G {
|
|
31
96
|
constructor() {
|
|
32
|
-
this.name = "", this.skill = "", this.
|
|
97
|
+
this.name = "", this.skill = "", this.option = /* @__PURE__ */ new Map(), this.multiplier = 0;
|
|
33
98
|
}
|
|
34
99
|
}
|
|
35
100
|
const v = class {
|
|
36
101
|
constructor() {
|
|
37
|
-
this.itemID = 0, this.name = "", this.desc = "", this.icon =
|
|
102
|
+
this.itemID = 0, this.name = "", this.desc = "", this.icon = new K(), this.type = 0, this.req = new W(), this.props = /* @__PURE__ */ new Map(), this.options = /* @__PURE__ */ new Map(), this.totalUpgradeCount = 0, this.upgradeCount = 0, this.upgradeFailCount = 0, this.hammerCount = 0, this.maxStar = 0, this.star = 0, this.amazing = !1, this.canPotential = !1, this.grade = C.normal, this.potentials = [], this.additionalGrade = C.normal, this.additionalPotentials = [], this.soulWeapon = new V(this);
|
|
38
103
|
}
|
|
39
104
|
/**
|
|
40
105
|
* 업그레이드 가능 횟수
|
|
@@ -43,162 +108,154 @@ const v = class {
|
|
|
43
108
|
return this.totalUpgradeCount + this.hammerCount - this.upgradeCount - this.upgradeFailCount;
|
|
44
109
|
}
|
|
45
110
|
/**
|
|
46
|
-
* 현재 옵션과 기본 옵션의
|
|
47
|
-
* @returns 가중치가 적용된 옵션 차이의 합
|
|
111
|
+
* 가중치를 포함하여 계산한 현재 옵션과 기본 옵션의 차이
|
|
48
112
|
*/
|
|
49
113
|
get diff() {
|
|
50
114
|
let t = 0;
|
|
51
|
-
for (const [c,
|
|
52
|
-
t += Math.floor(
|
|
115
|
+
for (const [c, i] of this.options)
|
|
116
|
+
t += Math.floor(i.diff / v.getPropTypeWeight(c));
|
|
53
117
|
return t;
|
|
54
118
|
}
|
|
55
119
|
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
120
|
+
* 장비를 처음 획득했을 때 추가옵션이 존재했는지 여부
|
|
121
|
+
*
|
|
122
|
+
* *일부 저레벨 장비의 경우 인게임과 차이가 있습니다.*
|
|
123
|
+
*
|
|
124
|
+
* 장비 아이콘 왼쪽 위의 원이 채워져있으면 `true`; 아니면 `false`입니다.
|
|
125
|
+
*/
|
|
126
|
+
get isNewBonusType() {
|
|
127
|
+
return !!([...this.options.values()].some((c) => c.bonus > 0) && this.getPropValue(n.tradeAvailable) !== 1);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* 지정된 장비 옵션 종류과 연결된 옵션을 가져옵니다.
|
|
131
|
+
* @param type 장비 옵션 종류.
|
|
132
|
+
* @returns 장비 옵션 객체. 존재하지 않을 경우 장비에 추가한 뒤 반환합니다.
|
|
59
133
|
*/
|
|
60
134
|
option(t) {
|
|
61
|
-
return this.options.has(t) || this.options.set(t, new
|
|
135
|
+
return this.options.has(t) || this.options.set(t, new q()), this.options.get(t);
|
|
62
136
|
}
|
|
63
137
|
/**
|
|
64
|
-
* 장비
|
|
65
|
-
* @param type 장비 속성
|
|
66
|
-
* @returns 속성의
|
|
138
|
+
* 지정된 장비 속성 종류과 연결된 값을 가져옵니다.
|
|
139
|
+
* @param type 장비 속성 종류.
|
|
140
|
+
* @returns 속성의 값. 장비에 존재하지 않을 경우 추가하지 않고 `0`을 반환합니다.
|
|
67
141
|
*/
|
|
68
142
|
getPropValue(t) {
|
|
69
143
|
return this.props.get(t) ?? 0;
|
|
70
144
|
}
|
|
71
145
|
/**
|
|
72
|
-
* 장비
|
|
73
|
-
* @param type 장비 속성
|
|
74
|
-
* @returns 속성이 존재하고 값이 `0` 이상일 경우 `true`; 아닐 경우 `false
|
|
146
|
+
* 지정된 장비 속성 종류과 연결된 `boolean` 값을 가져옵니다.
|
|
147
|
+
* @param type 장비 속성 종류.
|
|
148
|
+
* @returns 속성이 존재하고 값이 `0` 이상일 경우 `true`; 아닐 경우 `false`.
|
|
75
149
|
*/
|
|
76
150
|
getBooleanValue(t) {
|
|
77
|
-
return
|
|
151
|
+
return (this.props.get(t) ?? 0) > 0;
|
|
78
152
|
}
|
|
79
153
|
/**
|
|
80
|
-
*
|
|
81
|
-
* @param type 장비
|
|
82
|
-
* @returns 주무기일 경우 `true`; 아닐 경우 `false
|
|
154
|
+
* 장비 분류가 주무기인지 여부를 확인합니다. 블레이드(`katara`)는 포함되지 않습니다.
|
|
155
|
+
* @param type 장비 분류.
|
|
156
|
+
* @returns 주무기일 경우 `true`; 아닐 경우 `false`.
|
|
83
157
|
*/
|
|
84
158
|
static isWeapon(t) {
|
|
85
159
|
return this.isLeftWeapon(t) || this.isDoubleHandWeapon(t);
|
|
86
160
|
}
|
|
87
161
|
/**
|
|
88
|
-
*
|
|
89
|
-
* @param type 장비
|
|
90
|
-
* @returns 한손무기일 경우 `true`; 아닐 경우 `false
|
|
162
|
+
* 장비 분류가 한손무기인지 여부를 확인합니다. 블레이드(`katara`)는 포함되지 않습니다.
|
|
163
|
+
* @param type 장비 분류.
|
|
164
|
+
* @returns 한손무기일 경우 `true`; 아닐 경우 `false`.
|
|
91
165
|
*/
|
|
92
166
|
static isLeftWeapon(t) {
|
|
93
|
-
return t >= 121 && t <= 139 && t !==
|
|
167
|
+
return t >= 121 && t <= 139 && t !== o.katara || Math.floor(t / 10) === 121;
|
|
94
168
|
}
|
|
95
169
|
/**
|
|
96
|
-
*
|
|
97
|
-
* @param type 장비
|
|
98
|
-
* @returns 두손무기일 경우 `true`; 아닐 경우 `false
|
|
170
|
+
* 장비 분류가 두손무기인지 여부를 확인합니다.
|
|
171
|
+
* @param type 장비 분류.
|
|
172
|
+
* @returns 두손무기일 경우 `true`; 아닐 경우 `false`.
|
|
99
173
|
*/
|
|
100
174
|
static isDoubleHandWeapon(t) {
|
|
101
175
|
return t >= 140 && t <= 149 || t >= 152 && t <= 159 || Math.floor(t / 10) === 140;
|
|
102
176
|
}
|
|
103
177
|
/**
|
|
104
|
-
*
|
|
105
|
-
* @param type 장비
|
|
106
|
-
* @returns 보조무기일 경우 `true`; 아닐 경우 `false
|
|
178
|
+
* 장비 분류가 보조무기인지 여부를 확인합니다. 블레이드(`katara`), 방패류가 포함됩니다.
|
|
179
|
+
* @param type 장비 분류.
|
|
180
|
+
* @returns 보조무기일 경우 `true`; 아닐 경우 `false`.
|
|
107
181
|
*/
|
|
108
182
|
static isSubWeapon(t) {
|
|
109
183
|
switch (t) {
|
|
110
|
-
case
|
|
111
|
-
case
|
|
112
|
-
case
|
|
113
|
-
case
|
|
184
|
+
case o.katara:
|
|
185
|
+
case o.shield:
|
|
186
|
+
case o.demonShield:
|
|
187
|
+
case o.soulShield:
|
|
114
188
|
return !0;
|
|
115
189
|
default:
|
|
116
190
|
return Math.floor(t / 1e3) === 135;
|
|
117
191
|
}
|
|
118
192
|
}
|
|
119
193
|
/**
|
|
120
|
-
*
|
|
121
|
-
* @param type 장비
|
|
122
|
-
* @returns 방패일 경우 `true`; 아닐 경우 `false
|
|
194
|
+
* 장비 분류가 방패인지 여부를 확인합니다.
|
|
195
|
+
* @param type 장비 분류.
|
|
196
|
+
* @returns 방패일 경우 `true`; 아닐 경우 `false`.
|
|
123
197
|
*/
|
|
124
198
|
static isShield(t) {
|
|
125
199
|
switch (t) {
|
|
126
|
-
case
|
|
127
|
-
case
|
|
128
|
-
case
|
|
200
|
+
case o.shield:
|
|
201
|
+
case o.demonShield:
|
|
202
|
+
case o.soulShield:
|
|
129
203
|
return !0;
|
|
130
204
|
default:
|
|
131
205
|
return !1;
|
|
132
206
|
}
|
|
133
207
|
}
|
|
134
208
|
/**
|
|
135
|
-
*
|
|
136
|
-
* @param type 장비
|
|
137
|
-
* @returns 방어구일 경우 `true`; 아닐 경우 `false
|
|
209
|
+
* 장비 분류가 방어구인지 여부를 확인합니다. 어깨장식이 포함되지 않고 방패가 포함됩니다.
|
|
210
|
+
* @param type 장비 분류.
|
|
211
|
+
* @returns 방어구일 경우 `true`; 아닐 경우 `false`.
|
|
138
212
|
*/
|
|
139
213
|
static isArmor(t) {
|
|
140
214
|
return t === 100 || t >= 104 && t <= 110;
|
|
141
215
|
}
|
|
142
216
|
/**
|
|
143
|
-
*
|
|
144
|
-
* @param type 장비
|
|
145
|
-
* @returns 장신구일 경우 `true`; 아닐 경우 `false
|
|
217
|
+
* 장비 분류가 장신구인지 여부를 확인합니다. 어깨장식이 포함됩니다.
|
|
218
|
+
* @param type 장비 분류.
|
|
219
|
+
* @returns 장신구일 경우 `true`; 아닐 경우 `false`.
|
|
146
220
|
*/
|
|
147
221
|
static isAccessory(t) {
|
|
148
222
|
return t >= 101 && t <= 103 || t >= 111 && t <= 113 || t === 115;
|
|
149
223
|
}
|
|
150
224
|
/**
|
|
151
|
-
*
|
|
152
|
-
* @param type 장비
|
|
153
|
-
* @returns 메카닉 장비일 경우 `true`; 아닐 경우 `false
|
|
225
|
+
* 장비 분류가 메카닉 장비인지 여부를 확인합니다.
|
|
226
|
+
* @param type 장비 분류.
|
|
227
|
+
* @returns 메카닉 장비일 경우 `true`; 아닐 경우 `false`.
|
|
154
228
|
*/
|
|
155
229
|
static isMechanicGear(t) {
|
|
156
230
|
return t >= 161 && t <= 165;
|
|
157
231
|
}
|
|
158
232
|
/**
|
|
159
|
-
*
|
|
160
|
-
* @param type 장비
|
|
161
|
-
* @returns 에반 드래곤 장비일 경우 `true`; 아닐 경우 `false
|
|
233
|
+
* 장비 분류가 에반 드래곤 장비인지 여부를 확인합니다.
|
|
234
|
+
* @param type 장비 분류.
|
|
235
|
+
* @returns 에반 드래곤 장비일 경우 `true`; 아닐 경우 `false`.
|
|
162
236
|
*/
|
|
163
237
|
static isDragonGear(t) {
|
|
164
238
|
return t >= 194 && t <= 197;
|
|
165
239
|
}
|
|
166
|
-
static specialCanPotential(t) {
|
|
167
|
-
switch (t) {
|
|
168
|
-
case i.soulShield:
|
|
169
|
-
case i.demonShield:
|
|
170
|
-
case i.katara:
|
|
171
|
-
case i.magicArrow:
|
|
172
|
-
case i.card:
|
|
173
|
-
case i.orb:
|
|
174
|
-
case i.dragonEssence:
|
|
175
|
-
case i.soulRing:
|
|
176
|
-
case i.magnum:
|
|
177
|
-
case i.emblem:
|
|
178
|
-
return !0;
|
|
179
|
-
default:
|
|
180
|
-
return !1;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
240
|
/**
|
|
184
241
|
* 장비 ID로부터 장비 분류를 계산합니다.
|
|
185
|
-
* @param gearID 장비 ID
|
|
186
|
-
* @returns 장비
|
|
242
|
+
* @param gearID 장비 ID.
|
|
243
|
+
* @returns 장비 분류.
|
|
187
244
|
*/
|
|
188
245
|
static getGearType(t) {
|
|
189
246
|
switch (Math.floor(t / 1e3)) {
|
|
190
247
|
case 1098:
|
|
191
|
-
return
|
|
248
|
+
return o.soulShield;
|
|
192
249
|
case 1099:
|
|
193
|
-
return
|
|
250
|
+
return o.demonShield;
|
|
194
251
|
case 1212:
|
|
195
|
-
return
|
|
252
|
+
return o.shiningRod;
|
|
196
253
|
case 1213:
|
|
197
|
-
return
|
|
254
|
+
return o.tuner;
|
|
198
255
|
case 1214:
|
|
199
|
-
return
|
|
256
|
+
return o.breathShooter;
|
|
200
257
|
case 1404:
|
|
201
|
-
return
|
|
258
|
+
return o.chakram;
|
|
202
259
|
}
|
|
203
260
|
if (Math.floor(t / 1e4) === 135)
|
|
204
261
|
switch (Math.floor(t / 100)) {
|
|
@@ -217,27 +274,20 @@ const v = class {
|
|
|
217
274
|
}
|
|
218
275
|
return Math.floor(t / 1e4);
|
|
219
276
|
}
|
|
220
|
-
static GetGender(t) {
|
|
221
|
-
switch (this.getGearType(t)) {
|
|
222
|
-
case i.emblem:
|
|
223
|
-
case i.powerSource:
|
|
224
|
-
return 2;
|
|
225
|
-
}
|
|
226
|
-
return Math.floor(t / 1e3) % 10;
|
|
227
|
-
}
|
|
228
277
|
/**
|
|
229
278
|
* 장비의 최대 강화 수치를 계산합니다.
|
|
230
|
-
* @param gear
|
|
231
|
-
* @returns 최대
|
|
279
|
+
* @param gear 계산할 장비.
|
|
280
|
+
* @returns 장비의 최대 강화 수치.
|
|
281
|
+
* 최대 업그레이드 가능 횟수가 `0`이거나 `onlyUpgrade` 속성이 존재하거나 메카닉 장비 또는 드래곤 장비일 경우 `0`입니다.
|
|
232
282
|
*/
|
|
233
283
|
static getMaxStar(t) {
|
|
234
284
|
if (t.totalUpgradeCount <= 0 || t.getBooleanValue(n.onlyUpgrade) || v.isMechanicGear(t.type) || v.isDragonGear(t.type))
|
|
235
285
|
return 0;
|
|
236
286
|
let c;
|
|
237
|
-
const
|
|
238
|
-
for (const
|
|
239
|
-
if (
|
|
240
|
-
c =
|
|
287
|
+
const i = t.req.level;
|
|
288
|
+
for (const s of v.starData)
|
|
289
|
+
if (i >= s[0])
|
|
290
|
+
c = s;
|
|
241
291
|
else
|
|
242
292
|
break;
|
|
243
293
|
return c === void 0 ? 0 : t.getBooleanValue(n.superiorEqp) ? c[2] : c[1];
|
|
@@ -274,7 +324,7 @@ M.starData = [
|
|
|
274
324
|
[130, 20, 12],
|
|
275
325
|
[140, 25, 15]
|
|
276
326
|
];
|
|
277
|
-
class
|
|
327
|
+
class g {
|
|
278
328
|
constructor() {
|
|
279
329
|
this.code = 0, this.optionType = 0, this.reqLevel = 0, this.summary = "", this.option = /* @__PURE__ */ new Map();
|
|
280
330
|
}
|
|
@@ -283,456 +333,1125 @@ class C {
|
|
|
283
333
|
*/
|
|
284
334
|
get convertSummary() {
|
|
285
335
|
const c = [...this.option.keys()];
|
|
286
|
-
c.sort((
|
|
287
|
-
let
|
|
288
|
-
for (const
|
|
289
|
-
|
|
290
|
-
`#${n[
|
|
291
|
-
(this.option.get(
|
|
336
|
+
c.sort((s, d) => n[d].length - n[s].length);
|
|
337
|
+
let i = this.summary;
|
|
338
|
+
for (const s of c)
|
|
339
|
+
i = i.replace(
|
|
340
|
+
`#${n[s]}`,
|
|
341
|
+
(this.option.get(s) ?? 0).toString()
|
|
292
342
|
);
|
|
293
|
-
return
|
|
343
|
+
return i;
|
|
294
344
|
}
|
|
295
345
|
/**
|
|
296
346
|
* 장비의 착용 가능 레벨로부터 잠재옵션의 레벨을 계산합니다.
|
|
297
|
-
* @param gearReqLevel 장비의 착용 가능
|
|
298
|
-
* @returns 잠재옵션
|
|
347
|
+
* @param gearReqLevel 장비의 착용 가능 레벨.
|
|
348
|
+
* @returns 잠재옵션 레벨. 1부터 25까지의 값입니다.
|
|
299
349
|
*/
|
|
300
350
|
static getPotentialLevel(c) {
|
|
301
|
-
return c <= 0 ? 1 : c >=
|
|
351
|
+
return c <= 0 ? 1 : c >= 250 ? 25 : Math.floor((c + 9) / 10);
|
|
302
352
|
}
|
|
303
353
|
/**
|
|
304
354
|
* 잠재옵션 분류와 장비 분류를 비교합니다.
|
|
305
|
-
* @param optionType 잠재옵션
|
|
306
|
-
* @param gearType 장비
|
|
307
|
-
* @returns 잠재옵션 분류가 장비 분류에 적용 가능한 경우 `true`; 아닌 경우 `false
|
|
355
|
+
* @param optionType 잠재옵션 분류.
|
|
356
|
+
* @param gearType 장비 분류.
|
|
357
|
+
* @returns 잠재옵션 분류가 장비 분류에 적용 가능한 경우 `true`; 아닌 경우 `false`.
|
|
308
358
|
*/
|
|
309
|
-
static checkOptionType(c,
|
|
359
|
+
static checkOptionType(c, i) {
|
|
310
360
|
switch (c) {
|
|
311
361
|
case 0:
|
|
312
362
|
return !0;
|
|
313
363
|
case 10:
|
|
314
|
-
return M.isWeapon(
|
|
364
|
+
return M.isWeapon(i) || M.isSubWeapon(i) || i === o.emblem;
|
|
315
365
|
case 11:
|
|
316
|
-
return !
|
|
366
|
+
return !g.checkOptionType(10, i);
|
|
317
367
|
case 20:
|
|
318
|
-
return M.isSubWeapon(
|
|
368
|
+
return M.isSubWeapon(i) || i === o.cap || i === o.coat || i === o.longcoat || i === o.pants || i === o.shoes || i === o.glove || i === o.cape || i === o.belt || i === o.shoulder;
|
|
319
369
|
case 40:
|
|
320
|
-
return
|
|
370
|
+
return i === o.faceAccessory || i === o.eyeAccessory || i === o.earrings || i === o.ring || i === o.pendant;
|
|
321
371
|
case 51:
|
|
322
|
-
return
|
|
372
|
+
return i === o.cap;
|
|
323
373
|
case 52:
|
|
324
|
-
return
|
|
374
|
+
return i === o.coat || i === o.longcoat;
|
|
325
375
|
case 53:
|
|
326
|
-
return
|
|
376
|
+
return i === o.pants;
|
|
327
377
|
case 54:
|
|
328
|
-
return
|
|
378
|
+
return i === o.glove;
|
|
329
379
|
case 55:
|
|
330
|
-
return
|
|
380
|
+
return i === o.shoes;
|
|
331
381
|
default:
|
|
332
382
|
return !1;
|
|
333
383
|
}
|
|
334
384
|
}
|
|
335
385
|
}
|
|
336
|
-
var
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
return
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
break;
|
|
412
|
-
case 169:
|
|
413
|
-
l = 173;
|
|
414
|
-
break;
|
|
415
|
-
case 203:
|
|
416
|
-
l = 207;
|
|
417
|
-
break;
|
|
418
|
-
case 293:
|
|
419
|
-
l = 297;
|
|
420
|
-
break;
|
|
421
|
-
case 337:
|
|
422
|
-
l = 342;
|
|
423
|
-
break;
|
|
424
|
-
}
|
|
425
|
-
const f = a > 180 ? 6 : a > 160 ? 5 : a > 110 ? 4 : 3;
|
|
426
|
-
return Math.ceil(l * r[o - 1] * f / 100);
|
|
427
|
-
} else {
|
|
428
|
-
const f = c.option(n.incMAD).base;
|
|
429
|
-
if (s === u.MAD && f >= l && (l = f), h) {
|
|
430
|
-
const m = a > 160 ? 18 : a > 150 ? 15 : a > 110 ? 12 : 9;
|
|
431
|
-
return Math.ceil(l * r[o - 1] * m / 100);
|
|
432
|
-
} else {
|
|
433
|
-
const m = a > 110 ? 4 : 3;
|
|
434
|
-
return Math.ceil(l * r[o - 1] * m / 100);
|
|
386
|
+
var l = /* @__PURE__ */ ((t) => (t[t.STR = 0] = "STR", t[t.DEX = 1] = "DEX", t[t.INT = 2] = "INT", t[t.LUK = 3] = "LUK", t[t.STR_DEX = 4] = "STR_DEX", t[t.STR_INT = 5] = "STR_INT", t[t.STR_LUK = 6] = "STR_LUK", t[t.DEX_INT = 7] = "DEX_INT", t[t.DEX_LUK = 8] = "DEX_LUK", t[t.INT_LUK = 9] = "INT_LUK", t[t.PDD = 10] = "PDD", t[t.PAD = 11] = "PAD", t[t.MAD = 12] = "MAD", t[t.MHP = 13] = "MHP", t[t.MMP = 14] = "MMP", t[t.speed = 15] = "speed", t[t.jump = 16] = "jump", t[t.damR = 17] = "damR", t[t.bdR = 18] = "bdR", t[t.allStatR = 19] = "allStatR", t[t.reduceReq = 20] = "reduceReq", t))(l || {});
|
|
387
|
+
function y(t, c, i) {
|
|
388
|
+
const s = x(t, c, i);
|
|
389
|
+
if (s.size === 0)
|
|
390
|
+
return !1;
|
|
391
|
+
for (const [d, a] of s)
|
|
392
|
+
t.option(d).bonus += a;
|
|
393
|
+
return !0;
|
|
394
|
+
}
|
|
395
|
+
function t0(t) {
|
|
396
|
+
for (const [, c] of t.options)
|
|
397
|
+
c.bonus = 0;
|
|
398
|
+
return !0;
|
|
399
|
+
}
|
|
400
|
+
function x(t, c, i) {
|
|
401
|
+
const s = $(c), d = _(t, c, i);
|
|
402
|
+
return d === 0 ? /* @__PURE__ */ new Map() : new Map(s.map((a) => [a, d]));
|
|
403
|
+
}
|
|
404
|
+
function _(t, c, i) {
|
|
405
|
+
const s = t.req.level, d = t.getBooleanValue(n.bossReward), a = t.type;
|
|
406
|
+
if (s < 0 || d && i < 3)
|
|
407
|
+
return 0;
|
|
408
|
+
switch (c) {
|
|
409
|
+
case l.STR:
|
|
410
|
+
case l.DEX:
|
|
411
|
+
case l.INT:
|
|
412
|
+
case l.LUK:
|
|
413
|
+
return (Math.floor(s / 20) + 1) * i;
|
|
414
|
+
case l.STR_DEX:
|
|
415
|
+
case l.STR_INT:
|
|
416
|
+
case l.STR_LUK:
|
|
417
|
+
case l.DEX_INT:
|
|
418
|
+
case l.DEX_LUK:
|
|
419
|
+
case l.INT_LUK:
|
|
420
|
+
return (Math.floor(s / 40) + 1) * i;
|
|
421
|
+
case l.PDD:
|
|
422
|
+
return (Math.floor(s / 20) + 1) * i;
|
|
423
|
+
case l.PAD:
|
|
424
|
+
case l.MAD:
|
|
425
|
+
if (M.isWeapon(a)) {
|
|
426
|
+
const m = d ? [0, 0, 1, 1.4666, 2.0166, 2.663, 3.4166] : [1, 2.222, 3.63, 5.325, 7.32, 8.777, 10.25];
|
|
427
|
+
let f = t.option(n.incPAD).base;
|
|
428
|
+
if (a === o.heavySword || a === o.longSword) {
|
|
429
|
+
if (a === o.longSword)
|
|
430
|
+
switch (f) {
|
|
431
|
+
case 100:
|
|
432
|
+
f = 102;
|
|
433
|
+
break;
|
|
434
|
+
case 103:
|
|
435
|
+
f = 105;
|
|
436
|
+
break;
|
|
437
|
+
case 105:
|
|
438
|
+
f = 107;
|
|
439
|
+
break;
|
|
440
|
+
case 112:
|
|
441
|
+
f = 114;
|
|
442
|
+
break;
|
|
443
|
+
case 117:
|
|
444
|
+
f = 121;
|
|
445
|
+
break;
|
|
446
|
+
case 135:
|
|
447
|
+
f = 139;
|
|
448
|
+
break;
|
|
449
|
+
case 169:
|
|
450
|
+
f = 173;
|
|
451
|
+
break;
|
|
452
|
+
case 203:
|
|
453
|
+
f = 207;
|
|
454
|
+
break;
|
|
455
|
+
case 293:
|
|
456
|
+
f = 297;
|
|
457
|
+
break;
|
|
458
|
+
case 337:
|
|
459
|
+
f = 342;
|
|
460
|
+
break;
|
|
435
461
|
}
|
|
462
|
+
const u = s > 180 ? 6 : s > 160 ? 5 : s > 110 ? 4 : 3;
|
|
463
|
+
return Math.ceil(f * m[i - 1] * u / 100);
|
|
464
|
+
} else {
|
|
465
|
+
const u = t.option(n.incMAD).base;
|
|
466
|
+
if (c === l.MAD && u >= f && (f = u), d) {
|
|
467
|
+
const e = s > 160 ? 18 : s > 150 ? 15 : s > 110 ? 12 : 9;
|
|
468
|
+
return Math.ceil(f * m[i - 1] * e / 100);
|
|
469
|
+
} else {
|
|
470
|
+
const e = s > 110 ? 4 : 3;
|
|
471
|
+
return Math.ceil(f * m[i - 1] * e / 100);
|
|
436
472
|
}
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
return o;
|
|
440
|
-
case u.MHP:
|
|
441
|
-
case u.MMP:
|
|
442
|
-
return Math.floor(a / 10) * 30 * o;
|
|
443
|
-
case u.speed:
|
|
444
|
-
case u.jump:
|
|
445
|
-
return M.isWeapon(e) ? 0 : o;
|
|
446
|
-
case u.damR:
|
|
447
|
-
return M.isWeapon(e) ? o : 0;
|
|
448
|
-
case u.bdR:
|
|
449
|
-
return a < 90 || !M.isWeapon(e) ? 0 : 2 * o;
|
|
450
|
-
case u.allStatR:
|
|
451
|
-
return a < 70 && !M.isWeapon(e) ? 0 : o;
|
|
452
|
-
case u.reduceReq:
|
|
453
|
-
return Math.min(5 * o, a);
|
|
454
|
-
default:
|
|
473
|
+
}
|
|
474
|
+
} else if (s < 60)
|
|
455
475
|
return 0;
|
|
456
|
-
|
|
476
|
+
return i;
|
|
477
|
+
case l.MHP:
|
|
478
|
+
case l.MMP:
|
|
479
|
+
return Math.floor(s / 10) * 30 * i;
|
|
480
|
+
case l.speed:
|
|
481
|
+
case l.jump:
|
|
482
|
+
return M.isWeapon(a) ? 0 : i;
|
|
483
|
+
case l.damR:
|
|
484
|
+
return M.isWeapon(a) ? i : 0;
|
|
485
|
+
case l.bdR:
|
|
486
|
+
return s < 90 || !M.isWeapon(a) ? 0 : 2 * i;
|
|
487
|
+
case l.allStatR:
|
|
488
|
+
return s < 70 && !M.isWeapon(a) ? 0 : i;
|
|
489
|
+
case l.reduceReq:
|
|
490
|
+
return Math.min(5 * i, s);
|
|
491
|
+
default:
|
|
492
|
+
return 0;
|
|
457
493
|
}
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
494
|
+
}
|
|
495
|
+
function $(t) {
|
|
496
|
+
switch (t) {
|
|
497
|
+
case l.STR:
|
|
498
|
+
return [n.incSTR];
|
|
499
|
+
case l.DEX:
|
|
500
|
+
return [n.incDEX];
|
|
501
|
+
case l.INT:
|
|
502
|
+
return [n.incINT];
|
|
503
|
+
case l.LUK:
|
|
504
|
+
return [n.incLUK];
|
|
505
|
+
case l.STR_DEX:
|
|
506
|
+
return [n.incSTR, n.incDEX];
|
|
507
|
+
case l.STR_INT:
|
|
508
|
+
return [n.incSTR, n.incINT];
|
|
509
|
+
case l.STR_LUK:
|
|
510
|
+
return [n.incSTR, n.incLUK];
|
|
511
|
+
case l.DEX_INT:
|
|
512
|
+
return [n.incDEX, n.incINT];
|
|
513
|
+
case l.DEX_LUK:
|
|
514
|
+
return [n.incDEX, n.incLUK];
|
|
515
|
+
case l.INT_LUK:
|
|
516
|
+
return [n.incINT, n.incLUK];
|
|
517
|
+
case l.PDD:
|
|
518
|
+
return [n.incPDD];
|
|
519
|
+
case l.PAD:
|
|
520
|
+
return [n.incPAD];
|
|
521
|
+
case l.MAD:
|
|
522
|
+
return [n.incMAD];
|
|
523
|
+
case l.MHP:
|
|
524
|
+
return [n.incMHP];
|
|
525
|
+
case l.MMP:
|
|
526
|
+
return [n.incMMP];
|
|
527
|
+
case l.speed:
|
|
528
|
+
return [n.incSpeed];
|
|
529
|
+
case l.jump:
|
|
530
|
+
return [n.incJump];
|
|
531
|
+
case l.damR:
|
|
532
|
+
return [n.damR];
|
|
533
|
+
case l.bdR:
|
|
534
|
+
return [n.bdR];
|
|
535
|
+
case l.allStatR:
|
|
536
|
+
return [n.statR];
|
|
537
|
+
case l.reduceReq:
|
|
538
|
+
return [n.reduceReq];
|
|
539
|
+
default:
|
|
540
|
+
return [];
|
|
505
541
|
}
|
|
506
542
|
}
|
|
507
|
-
const
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
543
|
+
const F = 25, X = 15;
|
|
544
|
+
function j(t, c = !1) {
|
|
545
|
+
if (t.getBooleanValue(n.incCHUC))
|
|
546
|
+
return !1;
|
|
547
|
+
if (t.getBooleanValue(n.superiorEqp))
|
|
548
|
+
return O(t);
|
|
549
|
+
if (t.star >= t.maxStar && !c || t.star >= F)
|
|
550
|
+
return !1;
|
|
551
|
+
t.star += 1;
|
|
552
|
+
const i = t.star, s = b(t, !1, !1), d = b(t, !1, !0), a = M.isWeapon(t.type) || t.type === o.katara, m = [
|
|
553
|
+
[n.incSTR, n.incDEX],
|
|
554
|
+
[n.incINT, n.incLUK],
|
|
555
|
+
[n.incDEX, n.incSTR],
|
|
556
|
+
[n.incLUK, n.incDEX],
|
|
557
|
+
[n.incSTR, n.incDEX]
|
|
558
|
+
], f = [
|
|
559
|
+
n.incSTR,
|
|
560
|
+
n.incDEX,
|
|
561
|
+
n.incINT,
|
|
562
|
+
n.incLUK
|
|
563
|
+
];
|
|
564
|
+
let u;
|
|
565
|
+
const e = t.req.job;
|
|
566
|
+
if (e === 0)
|
|
567
|
+
u = /* @__PURE__ */ new Set([
|
|
531
568
|
n.incSTR,
|
|
532
569
|
n.incDEX,
|
|
533
570
|
n.incINT,
|
|
534
571
|
n.incLUK
|
|
535
|
-
];
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
572
|
+
]);
|
|
573
|
+
else {
|
|
574
|
+
u = /* @__PURE__ */ new Set();
|
|
575
|
+
for (let h = 0; h < 5; h++)
|
|
576
|
+
if (e & 1 << h)
|
|
577
|
+
for (const r of m[h])
|
|
578
|
+
u.add(r);
|
|
579
|
+
}
|
|
580
|
+
for (const h of f)
|
|
581
|
+
(u.has(h) || i > 15 && (t.option(h).base > 0 || t.option(h).upgrade > 0)) && (t.option(h).enchant += s[i]);
|
|
582
|
+
if (a) {
|
|
583
|
+
const h = e === 0 || Math.floor(e / 2) % 2 === 1 || t.option(n.incMAD).upgrade > 0;
|
|
584
|
+
if (i > 15)
|
|
585
|
+
t.option(n.incPAD).enchant += d[i], h && (t.option(n.incMAD).enchant += d[i]);
|
|
545
586
|
else {
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
l.add(A);
|
|
551
|
-
}
|
|
552
|
-
for (const d of r)
|
|
553
|
-
(l.has(d) || s > 15 && (t.option(d).base > 0 || t.option(d).upgrade > 0)) && (t.option(d).enchant += o[s]);
|
|
554
|
-
if (h) {
|
|
555
|
-
const d = f === 0 || Math.floor(f / 2) % 2 === 1 || t.option(n.incMAD).upgrade > 0;
|
|
556
|
-
if (s > 15)
|
|
557
|
-
t.option(n.incPAD).enchant += a[s], d && (t.option(n.incMAD).enchant += a[s]);
|
|
558
|
-
else {
|
|
559
|
-
const A = t.option(n.incPAD).sum - t.option(n.incPAD).bonus;
|
|
560
|
-
if (t.option(n.incPAD).enchant += Math.floor(A / 50) + 1, d) {
|
|
561
|
-
const S = t.option(n.incMAD).sum - t.option(n.incMAD).bonus;
|
|
562
|
-
t.option(n.incMAD).enchant += Math.floor(S / 50) + 1;
|
|
563
|
-
}
|
|
587
|
+
const r = t.option(n.incPAD).sum - t.option(n.incPAD).bonus;
|
|
588
|
+
if (t.option(n.incPAD).enchant += Math.floor(r / 50) + 1, h) {
|
|
589
|
+
const A = t.option(n.incMAD).sum - t.option(n.incMAD).bonus;
|
|
590
|
+
t.option(n.incMAD).enchant += Math.floor(A / 50) + 1;
|
|
564
591
|
}
|
|
565
|
-
} else
|
|
566
|
-
t.option(n.incPAD).enchant += a[s], t.option(n.incMAD).enchant += a[s], t.type === i.glove && (f === 0 ? (t.option(n.incPAD).enchant += D.starforceGloveBonusAttData[s], t.option(n.incMAD).enchant += D.starforceGloveBonusAttData[s]) : Math.floor(f / 2) % 2 === 1 ? t.option(n.incMAD).enchant += D.starforceGloveBonusAttData[s] : t.option(n.incPAD).enchant += D.starforceGloveBonusAttData[s]);
|
|
567
|
-
if (!h && t.type !== i.machineHeart) {
|
|
568
|
-
const d = t.option(n.incPDD).sum - t.option(n.incPDD).bonus;
|
|
569
|
-
t.option(n.incPDD).enchant += Math.floor(d / 20) + 1;
|
|
570
592
|
}
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
i.cape,
|
|
577
|
-
i.ring,
|
|
578
|
-
i.pendant,
|
|
579
|
-
i.belt,
|
|
580
|
-
i.shoulder,
|
|
581
|
-
i.shield
|
|
582
|
-
];
|
|
583
|
-
return h ? (t.option(n.incMHP).enchant += D.starforceMhpData[s], t.option(n.incMMP).enchant += D.starforceMhpData[s]) : m.includes(t.type) && (t.option(n.incMHP).enchant += D.starforceMhpData[s]), t.type === i.shoes && (t.option(n.incSpeed).enchant += D.starforceSpeedJumpData[s], t.option(n.incJump).enchant += D.starforceSpeedJumpData[s]), !0;
|
|
593
|
+
} else
|
|
594
|
+
t.option(n.incPAD).enchant += d[i], t.option(n.incMAD).enchant += d[i], t.type === o.glove && (e === 0 ? (t.option(n.incPAD).enchant += E[i], t.option(n.incMAD).enchant += E[i]) : Math.floor(e / 2) % 2 === 1 ? t.option(n.incMAD).enchant += E[i] : t.option(n.incPAD).enchant += E[i]);
|
|
595
|
+
if (!a && t.type !== o.machineHeart) {
|
|
596
|
+
const h = t.option(n.incPDD).sum - t.option(n.incPDD).bonus;
|
|
597
|
+
t.option(n.incPDD).enchant += Math.floor(h / 20) + 1;
|
|
584
598
|
}
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
const
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
let A = h[o];
|
|
640
|
-
c && (e || t.type === i.shield) && (A += 1), t.option(m).enchant += A;
|
|
641
|
-
}
|
|
599
|
+
const D = [
|
|
600
|
+
o.cap,
|
|
601
|
+
o.coat,
|
|
602
|
+
o.longcoat,
|
|
603
|
+
o.pants,
|
|
604
|
+
o.cape,
|
|
605
|
+
o.ring,
|
|
606
|
+
o.pendant,
|
|
607
|
+
o.belt,
|
|
608
|
+
o.shoulder,
|
|
609
|
+
o.shield
|
|
610
|
+
];
|
|
611
|
+
return a ? (t.option(n.incMHP).enchant += U[i], t.option(n.incMMP).enchant += U[i]) : D.includes(t.type) && (t.option(n.incMHP).enchant += U[i]), t.type === o.shoes && (t.option(n.incSpeed).enchant += L[i], t.option(n.incJump).enchant += L[i]), !0;
|
|
612
|
+
}
|
|
613
|
+
function O(t) {
|
|
614
|
+
if (t.star >= t.maxStar)
|
|
615
|
+
return !1;
|
|
616
|
+
t.star += 1;
|
|
617
|
+
const c = t.star, i = b(t, !1, !1), s = b(t, !1, !0), d = [
|
|
618
|
+
n.incSTR,
|
|
619
|
+
n.incDEX,
|
|
620
|
+
n.incINT,
|
|
621
|
+
n.incLUK
|
|
622
|
+
];
|
|
623
|
+
for (const f of d)
|
|
624
|
+
t.option(f).base > 0 && (t.option(f).enchant += i[c]);
|
|
625
|
+
const a = [n.incPAD, n.incMAD];
|
|
626
|
+
for (const f of a)
|
|
627
|
+
t.option(f).base > 0 && (t.option(f).enchant += s[c]);
|
|
628
|
+
const m = t.option(n.incPDD).sum - t.option(n.incPDD).bonus;
|
|
629
|
+
return t.option(n.incPDD).enchant += Math.floor(m / 20) + 1, !0;
|
|
630
|
+
}
|
|
631
|
+
function n0(t, c = !1, i = !1) {
|
|
632
|
+
if (t.getBooleanValue(n.incCHUC) || t.getBooleanValue(n.superiorEqp) || t.star >= t.maxStar && !i || t.star >= X)
|
|
633
|
+
return !1;
|
|
634
|
+
t.amazing || (t.amazing = !0, t.maxStar = Math.min(t.maxStar, X)), t.star += 1;
|
|
635
|
+
const s = t.star, d = b(t, !0, !1), a = b(t, !0, !0), m = M.isWeapon(t.type) || t.type === o.katara, f = [
|
|
636
|
+
n.incSTR,
|
|
637
|
+
n.incDEX,
|
|
638
|
+
n.incINT,
|
|
639
|
+
n.incLUK
|
|
640
|
+
];
|
|
641
|
+
for (const D of f)
|
|
642
|
+
if (t.option(D).sum > 0) {
|
|
643
|
+
let r = d[s];
|
|
644
|
+
c && M.isAccessory(t.type) && (r += s > 5 ? 2 : 1), t.option(D).enchant += r;
|
|
645
|
+
}
|
|
646
|
+
const u = [n.incPAD, n.incMAD];
|
|
647
|
+
for (const D of u) {
|
|
648
|
+
const h = t.option(D).sum;
|
|
649
|
+
if (h > 0) {
|
|
650
|
+
m && (t.option(D).enchant += Math.floor(h / 50) + 1);
|
|
651
|
+
let r = a[s];
|
|
652
|
+
c && (m || t.type === o.shield) && (r += 1), t.option(D).enchant += r;
|
|
642
653
|
}
|
|
643
|
-
c && M.isArmor(t.type) && (t.option(n.incMHP).enchant += 50);
|
|
644
|
-
const f = t.option(n.incPDD).sum;
|
|
645
|
-
return t.option(n.incPDD).enchant += Math.floor(f / 20) + 1, !0;
|
|
646
|
-
}
|
|
647
|
-
/**
|
|
648
|
-
* 장비 강화를 초기화합니다.
|
|
649
|
-
* @param 강화를 초기화할 장비
|
|
650
|
-
* @returns 성공했을 경우 `true`; 아닐 경우 `false`
|
|
651
|
-
*/
|
|
652
|
-
resetEnhancement(t) {
|
|
653
|
-
if (t.getBooleanValue(n.incCHUC))
|
|
654
|
-
return !1;
|
|
655
|
-
t.star = 0, t.amazing = !1, t.maxStar = M.getMaxStar(t);
|
|
656
|
-
for (const [, c] of t.options)
|
|
657
|
-
c.enchant = 0;
|
|
658
|
-
return !0;
|
|
659
|
-
}
|
|
660
|
-
/**
|
|
661
|
-
* 스타포스 강화로 오르는 스탯을 다시 계산합니다.
|
|
662
|
-
*
|
|
663
|
-
* 놀라운 장비강화 주문서가 적용된 장비에는 적용되지 않습니다.
|
|
664
|
-
* @param 스탯을 다시 계산할 장비
|
|
665
|
-
* @returns 성공했을 경우 `true`; 아닐 경우 `false`
|
|
666
|
-
*/
|
|
667
|
-
recalculate(t) {
|
|
668
|
-
if (t.getBooleanValue(n.incCHUC) || t.amazing)
|
|
669
|
-
return !1;
|
|
670
|
-
const c = t.star;
|
|
671
|
-
this.resetEnhancement(t);
|
|
672
|
-
for (let s = 0; s < c; s++)
|
|
673
|
-
this.addStarforce(t, !0);
|
|
674
|
-
return !0;
|
|
675
654
|
}
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
655
|
+
c && M.isArmor(t.type) && (t.option(n.incMHP).enchant += 50);
|
|
656
|
+
const e = t.option(n.incPDD).sum;
|
|
657
|
+
return t.option(n.incPDD).enchant += Math.floor(e / 20) + 1, !0;
|
|
658
|
+
}
|
|
659
|
+
function z(t) {
|
|
660
|
+
if (t.getBooleanValue(n.incCHUC))
|
|
661
|
+
return !1;
|
|
662
|
+
t.star = 0, t.amazing = !1, t.maxStar = M.getMaxStar(t);
|
|
663
|
+
for (const [, c] of t.options)
|
|
664
|
+
c.enchant = 0;
|
|
665
|
+
return !0;
|
|
666
|
+
}
|
|
667
|
+
function i0(t) {
|
|
668
|
+
if (t.getBooleanValue(n.incCHUC) || t.amazing)
|
|
669
|
+
return !1;
|
|
670
|
+
const c = t.star;
|
|
671
|
+
z(t);
|
|
672
|
+
for (let i = 0; i < c; i++)
|
|
673
|
+
j(t, !0);
|
|
674
|
+
return !0;
|
|
675
|
+
}
|
|
676
|
+
function b(t, c, i) {
|
|
677
|
+
let s;
|
|
678
|
+
t.getBooleanValue(n.superiorEqp) ? i ? s = J : s = B : c ? i ? s = P : s = T : i ? M.isWeapon(t.type) || t.type === o.katara ? s = Q : s = Z : s = Y;
|
|
679
|
+
const d = t.req.level;
|
|
680
|
+
for (const a of [...s].reverse())
|
|
681
|
+
if (d >= a[0])
|
|
682
|
+
return a;
|
|
683
|
+
throw Error(`Gear has invalid reqLevel.
|
|
684
684
|
` + t);
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
};
|
|
688
|
-
let R = D;
|
|
689
|
-
R.MAX_STARFORCE = 25;
|
|
690
|
-
R.MAX_AMAZING = 15;
|
|
691
|
-
R.superiorAttData = [
|
|
685
|
+
}
|
|
686
|
+
const J = [
|
|
692
687
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
693
688
|
[110, 0, 0, 0, 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0],
|
|
694
689
|
[150, 0, 0, 0, 0, 0, 9, 10, 11, 12, 13, 15, 17, 19, 21, 23]
|
|
695
|
-
]
|
|
696
|
-
R.superiorStatData = [
|
|
690
|
+
], B = [
|
|
697
691
|
[0, 1, 2, 4, 7, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
698
692
|
[80, 2, 3, 5, 8, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
699
693
|
[110, 9, 10, 12, 15, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
700
694
|
[150, 19, 20, 22, 25, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
|
701
|
-
]
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
[
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
695
|
+
], Q = [
|
|
696
|
+
[
|
|
697
|
+
0,
|
|
698
|
+
0,
|
|
699
|
+
0,
|
|
700
|
+
0,
|
|
701
|
+
0,
|
|
702
|
+
0,
|
|
703
|
+
0,
|
|
704
|
+
0,
|
|
705
|
+
0,
|
|
706
|
+
0,
|
|
707
|
+
0,
|
|
708
|
+
0,
|
|
709
|
+
0,
|
|
710
|
+
0,
|
|
711
|
+
0,
|
|
712
|
+
0,
|
|
713
|
+
0,
|
|
714
|
+
0,
|
|
715
|
+
0,
|
|
716
|
+
0,
|
|
717
|
+
0,
|
|
718
|
+
0,
|
|
719
|
+
0,
|
|
720
|
+
0,
|
|
721
|
+
0,
|
|
722
|
+
0
|
|
723
|
+
],
|
|
724
|
+
[
|
|
725
|
+
108,
|
|
726
|
+
0,
|
|
727
|
+
0,
|
|
728
|
+
0,
|
|
729
|
+
0,
|
|
730
|
+
0,
|
|
731
|
+
0,
|
|
732
|
+
0,
|
|
733
|
+
0,
|
|
734
|
+
0,
|
|
735
|
+
0,
|
|
736
|
+
0,
|
|
737
|
+
0,
|
|
738
|
+
0,
|
|
739
|
+
0,
|
|
740
|
+
0,
|
|
741
|
+
4,
|
|
742
|
+
5,
|
|
743
|
+
5,
|
|
744
|
+
6,
|
|
745
|
+
7,
|
|
746
|
+
8,
|
|
747
|
+
9,
|
|
748
|
+
27,
|
|
749
|
+
28,
|
|
750
|
+
29
|
|
751
|
+
],
|
|
752
|
+
[
|
|
753
|
+
118,
|
|
754
|
+
0,
|
|
755
|
+
0,
|
|
756
|
+
0,
|
|
757
|
+
0,
|
|
758
|
+
0,
|
|
759
|
+
0,
|
|
760
|
+
0,
|
|
761
|
+
0,
|
|
762
|
+
0,
|
|
763
|
+
0,
|
|
764
|
+
0,
|
|
765
|
+
0,
|
|
766
|
+
0,
|
|
767
|
+
0,
|
|
768
|
+
0,
|
|
769
|
+
5,
|
|
770
|
+
6,
|
|
771
|
+
6,
|
|
772
|
+
7,
|
|
773
|
+
8,
|
|
774
|
+
9,
|
|
775
|
+
10,
|
|
776
|
+
28,
|
|
777
|
+
29,
|
|
778
|
+
30
|
|
779
|
+
],
|
|
780
|
+
[
|
|
781
|
+
128,
|
|
782
|
+
0,
|
|
783
|
+
0,
|
|
784
|
+
0,
|
|
785
|
+
0,
|
|
786
|
+
0,
|
|
787
|
+
0,
|
|
788
|
+
0,
|
|
789
|
+
0,
|
|
790
|
+
0,
|
|
791
|
+
0,
|
|
792
|
+
0,
|
|
793
|
+
0,
|
|
794
|
+
0,
|
|
795
|
+
0,
|
|
796
|
+
0,
|
|
797
|
+
6,
|
|
798
|
+
7,
|
|
799
|
+
7,
|
|
800
|
+
8,
|
|
801
|
+
9,
|
|
802
|
+
10,
|
|
803
|
+
11,
|
|
804
|
+
29,
|
|
805
|
+
30,
|
|
806
|
+
31
|
|
807
|
+
],
|
|
808
|
+
[
|
|
809
|
+
138,
|
|
810
|
+
0,
|
|
811
|
+
0,
|
|
812
|
+
0,
|
|
813
|
+
0,
|
|
814
|
+
0,
|
|
815
|
+
0,
|
|
816
|
+
0,
|
|
817
|
+
0,
|
|
818
|
+
0,
|
|
819
|
+
0,
|
|
820
|
+
0,
|
|
821
|
+
0,
|
|
822
|
+
0,
|
|
823
|
+
0,
|
|
824
|
+
0,
|
|
825
|
+
7,
|
|
826
|
+
8,
|
|
827
|
+
8,
|
|
828
|
+
9,
|
|
829
|
+
10,
|
|
830
|
+
11,
|
|
831
|
+
12,
|
|
832
|
+
30,
|
|
833
|
+
31,
|
|
834
|
+
32
|
|
835
|
+
],
|
|
836
|
+
[
|
|
837
|
+
148,
|
|
838
|
+
0,
|
|
839
|
+
0,
|
|
840
|
+
0,
|
|
841
|
+
0,
|
|
842
|
+
0,
|
|
843
|
+
0,
|
|
844
|
+
0,
|
|
845
|
+
0,
|
|
846
|
+
0,
|
|
847
|
+
0,
|
|
848
|
+
0,
|
|
849
|
+
0,
|
|
850
|
+
0,
|
|
851
|
+
0,
|
|
852
|
+
0,
|
|
853
|
+
8,
|
|
854
|
+
9,
|
|
855
|
+
9,
|
|
856
|
+
10,
|
|
857
|
+
11,
|
|
858
|
+
12,
|
|
859
|
+
13,
|
|
860
|
+
31,
|
|
861
|
+
32,
|
|
862
|
+
33
|
|
863
|
+
],
|
|
864
|
+
[
|
|
865
|
+
158,
|
|
866
|
+
0,
|
|
867
|
+
0,
|
|
868
|
+
0,
|
|
869
|
+
0,
|
|
870
|
+
0,
|
|
871
|
+
0,
|
|
872
|
+
0,
|
|
873
|
+
0,
|
|
874
|
+
0,
|
|
875
|
+
0,
|
|
876
|
+
0,
|
|
877
|
+
0,
|
|
878
|
+
0,
|
|
879
|
+
0,
|
|
880
|
+
0,
|
|
881
|
+
9,
|
|
882
|
+
9,
|
|
883
|
+
10,
|
|
884
|
+
11,
|
|
885
|
+
12,
|
|
886
|
+
13,
|
|
887
|
+
14,
|
|
888
|
+
32,
|
|
889
|
+
33,
|
|
890
|
+
34
|
|
891
|
+
],
|
|
892
|
+
[
|
|
893
|
+
198,
|
|
894
|
+
0,
|
|
895
|
+
0,
|
|
896
|
+
0,
|
|
897
|
+
0,
|
|
898
|
+
0,
|
|
899
|
+
0,
|
|
900
|
+
0,
|
|
901
|
+
0,
|
|
902
|
+
0,
|
|
903
|
+
0,
|
|
904
|
+
0,
|
|
905
|
+
0,
|
|
906
|
+
0,
|
|
907
|
+
0,
|
|
908
|
+
0,
|
|
909
|
+
13,
|
|
910
|
+
13,
|
|
911
|
+
14,
|
|
912
|
+
14,
|
|
913
|
+
15,
|
|
914
|
+
16,
|
|
915
|
+
17,
|
|
916
|
+
34,
|
|
917
|
+
35,
|
|
918
|
+
36
|
|
919
|
+
],
|
|
920
|
+
[
|
|
921
|
+
248,
|
|
922
|
+
0,
|
|
923
|
+
0,
|
|
924
|
+
0,
|
|
925
|
+
0,
|
|
926
|
+
0,
|
|
927
|
+
0,
|
|
928
|
+
0,
|
|
929
|
+
0,
|
|
930
|
+
0,
|
|
931
|
+
0,
|
|
932
|
+
0,
|
|
933
|
+
0,
|
|
934
|
+
0,
|
|
935
|
+
0,
|
|
936
|
+
0,
|
|
937
|
+
15,
|
|
938
|
+
15,
|
|
939
|
+
16,
|
|
940
|
+
16,
|
|
941
|
+
17,
|
|
942
|
+
18,
|
|
943
|
+
19,
|
|
944
|
+
36,
|
|
945
|
+
37,
|
|
946
|
+
38
|
|
947
|
+
]
|
|
948
|
+
], Z = [
|
|
949
|
+
[
|
|
950
|
+
0,
|
|
951
|
+
0,
|
|
952
|
+
0,
|
|
953
|
+
0,
|
|
954
|
+
0,
|
|
955
|
+
0,
|
|
956
|
+
0,
|
|
957
|
+
0,
|
|
958
|
+
0,
|
|
959
|
+
0,
|
|
960
|
+
0,
|
|
961
|
+
0,
|
|
962
|
+
0,
|
|
963
|
+
0,
|
|
964
|
+
0,
|
|
965
|
+
0,
|
|
966
|
+
0,
|
|
967
|
+
0,
|
|
968
|
+
0,
|
|
969
|
+
0,
|
|
970
|
+
0,
|
|
971
|
+
0,
|
|
972
|
+
0,
|
|
973
|
+
0,
|
|
974
|
+
0,
|
|
975
|
+
0
|
|
976
|
+
],
|
|
977
|
+
[
|
|
978
|
+
108,
|
|
979
|
+
0,
|
|
980
|
+
0,
|
|
981
|
+
0,
|
|
982
|
+
0,
|
|
983
|
+
0,
|
|
984
|
+
0,
|
|
985
|
+
0,
|
|
986
|
+
0,
|
|
987
|
+
0,
|
|
988
|
+
0,
|
|
989
|
+
0,
|
|
990
|
+
0,
|
|
991
|
+
0,
|
|
992
|
+
0,
|
|
993
|
+
0,
|
|
994
|
+
5,
|
|
995
|
+
6,
|
|
996
|
+
7,
|
|
997
|
+
8,
|
|
998
|
+
9,
|
|
999
|
+
10,
|
|
1000
|
+
12,
|
|
1001
|
+
13,
|
|
1002
|
+
15,
|
|
1003
|
+
17
|
|
1004
|
+
],
|
|
1005
|
+
[
|
|
1006
|
+
118,
|
|
1007
|
+
0,
|
|
1008
|
+
0,
|
|
1009
|
+
0,
|
|
1010
|
+
0,
|
|
1011
|
+
0,
|
|
1012
|
+
0,
|
|
1013
|
+
0,
|
|
1014
|
+
0,
|
|
1015
|
+
0,
|
|
1016
|
+
0,
|
|
1017
|
+
0,
|
|
1018
|
+
0,
|
|
1019
|
+
0,
|
|
1020
|
+
0,
|
|
1021
|
+
0,
|
|
1022
|
+
6,
|
|
1023
|
+
7,
|
|
1024
|
+
8,
|
|
1025
|
+
9,
|
|
1026
|
+
10,
|
|
1027
|
+
11,
|
|
1028
|
+
13,
|
|
1029
|
+
14,
|
|
1030
|
+
16,
|
|
1031
|
+
18
|
|
1032
|
+
],
|
|
1033
|
+
[
|
|
1034
|
+
128,
|
|
1035
|
+
0,
|
|
1036
|
+
0,
|
|
1037
|
+
0,
|
|
1038
|
+
0,
|
|
1039
|
+
0,
|
|
1040
|
+
0,
|
|
1041
|
+
0,
|
|
1042
|
+
0,
|
|
1043
|
+
0,
|
|
1044
|
+
0,
|
|
1045
|
+
0,
|
|
1046
|
+
0,
|
|
1047
|
+
0,
|
|
1048
|
+
0,
|
|
1049
|
+
0,
|
|
1050
|
+
7,
|
|
1051
|
+
8,
|
|
1052
|
+
9,
|
|
1053
|
+
10,
|
|
1054
|
+
11,
|
|
1055
|
+
12,
|
|
1056
|
+
14,
|
|
1057
|
+
16,
|
|
1058
|
+
18,
|
|
1059
|
+
20
|
|
1060
|
+
],
|
|
1061
|
+
[
|
|
1062
|
+
138,
|
|
1063
|
+
0,
|
|
1064
|
+
0,
|
|
1065
|
+
0,
|
|
1066
|
+
0,
|
|
1067
|
+
0,
|
|
1068
|
+
0,
|
|
1069
|
+
0,
|
|
1070
|
+
0,
|
|
1071
|
+
0,
|
|
1072
|
+
0,
|
|
1073
|
+
0,
|
|
1074
|
+
0,
|
|
1075
|
+
0,
|
|
1076
|
+
0,
|
|
1077
|
+
0,
|
|
1078
|
+
8,
|
|
1079
|
+
9,
|
|
1080
|
+
10,
|
|
1081
|
+
11,
|
|
1082
|
+
12,
|
|
1083
|
+
13,
|
|
1084
|
+
15,
|
|
1085
|
+
17,
|
|
1086
|
+
19,
|
|
1087
|
+
21
|
|
1088
|
+
],
|
|
1089
|
+
[
|
|
1090
|
+
148,
|
|
1091
|
+
0,
|
|
1092
|
+
0,
|
|
1093
|
+
0,
|
|
1094
|
+
0,
|
|
1095
|
+
0,
|
|
1096
|
+
0,
|
|
1097
|
+
0,
|
|
1098
|
+
0,
|
|
1099
|
+
0,
|
|
1100
|
+
0,
|
|
1101
|
+
0,
|
|
1102
|
+
0,
|
|
1103
|
+
0,
|
|
1104
|
+
0,
|
|
1105
|
+
0,
|
|
1106
|
+
9,
|
|
1107
|
+
10,
|
|
1108
|
+
11,
|
|
1109
|
+
12,
|
|
1110
|
+
13,
|
|
1111
|
+
14,
|
|
1112
|
+
16,
|
|
1113
|
+
18,
|
|
1114
|
+
20,
|
|
1115
|
+
22
|
|
1116
|
+
],
|
|
1117
|
+
[
|
|
1118
|
+
158,
|
|
1119
|
+
0,
|
|
1120
|
+
0,
|
|
1121
|
+
0,
|
|
1122
|
+
0,
|
|
1123
|
+
0,
|
|
1124
|
+
0,
|
|
1125
|
+
0,
|
|
1126
|
+
0,
|
|
1127
|
+
0,
|
|
1128
|
+
0,
|
|
1129
|
+
0,
|
|
1130
|
+
0,
|
|
1131
|
+
0,
|
|
1132
|
+
0,
|
|
1133
|
+
0,
|
|
1134
|
+
10,
|
|
1135
|
+
11,
|
|
1136
|
+
12,
|
|
1137
|
+
13,
|
|
1138
|
+
14,
|
|
1139
|
+
15,
|
|
1140
|
+
17,
|
|
1141
|
+
19,
|
|
1142
|
+
21,
|
|
1143
|
+
23
|
|
1144
|
+
],
|
|
1145
|
+
[
|
|
1146
|
+
198,
|
|
1147
|
+
0,
|
|
1148
|
+
0,
|
|
1149
|
+
0,
|
|
1150
|
+
0,
|
|
1151
|
+
0,
|
|
1152
|
+
0,
|
|
1153
|
+
0,
|
|
1154
|
+
0,
|
|
1155
|
+
0,
|
|
1156
|
+
0,
|
|
1157
|
+
0,
|
|
1158
|
+
0,
|
|
1159
|
+
0,
|
|
1160
|
+
0,
|
|
1161
|
+
0,
|
|
1162
|
+
12,
|
|
1163
|
+
13,
|
|
1164
|
+
14,
|
|
1165
|
+
15,
|
|
1166
|
+
16,
|
|
1167
|
+
17,
|
|
1168
|
+
19,
|
|
1169
|
+
21,
|
|
1170
|
+
23,
|
|
1171
|
+
25
|
|
1172
|
+
],
|
|
1173
|
+
[
|
|
1174
|
+
248,
|
|
1175
|
+
0,
|
|
1176
|
+
0,
|
|
1177
|
+
0,
|
|
1178
|
+
0,
|
|
1179
|
+
0,
|
|
1180
|
+
0,
|
|
1181
|
+
0,
|
|
1182
|
+
0,
|
|
1183
|
+
0,
|
|
1184
|
+
0,
|
|
1185
|
+
0,
|
|
1186
|
+
0,
|
|
1187
|
+
0,
|
|
1188
|
+
0,
|
|
1189
|
+
0,
|
|
1190
|
+
14,
|
|
1191
|
+
15,
|
|
1192
|
+
16,
|
|
1193
|
+
17,
|
|
1194
|
+
18,
|
|
1195
|
+
19,
|
|
1196
|
+
21,
|
|
1197
|
+
23,
|
|
1198
|
+
25,
|
|
1199
|
+
27
|
|
1200
|
+
]
|
|
1201
|
+
], Y = [
|
|
1202
|
+
[
|
|
1203
|
+
0,
|
|
1204
|
+
2,
|
|
1205
|
+
2,
|
|
1206
|
+
2,
|
|
1207
|
+
2,
|
|
1208
|
+
2,
|
|
1209
|
+
3,
|
|
1210
|
+
3,
|
|
1211
|
+
3,
|
|
1212
|
+
3,
|
|
1213
|
+
3,
|
|
1214
|
+
3,
|
|
1215
|
+
3,
|
|
1216
|
+
3,
|
|
1217
|
+
3,
|
|
1218
|
+
3,
|
|
1219
|
+
0,
|
|
1220
|
+
0,
|
|
1221
|
+
0,
|
|
1222
|
+
0,
|
|
1223
|
+
0,
|
|
1224
|
+
0,
|
|
1225
|
+
0,
|
|
1226
|
+
0,
|
|
1227
|
+
0,
|
|
1228
|
+
0
|
|
1229
|
+
],
|
|
1230
|
+
[
|
|
1231
|
+
108,
|
|
1232
|
+
2,
|
|
1233
|
+
2,
|
|
1234
|
+
2,
|
|
1235
|
+
2,
|
|
1236
|
+
2,
|
|
1237
|
+
3,
|
|
1238
|
+
3,
|
|
1239
|
+
3,
|
|
1240
|
+
3,
|
|
1241
|
+
3,
|
|
1242
|
+
3,
|
|
1243
|
+
3,
|
|
1244
|
+
3,
|
|
1245
|
+
3,
|
|
1246
|
+
3,
|
|
1247
|
+
3,
|
|
1248
|
+
3,
|
|
1249
|
+
3,
|
|
1250
|
+
3,
|
|
1251
|
+
3,
|
|
1252
|
+
3,
|
|
1253
|
+
3,
|
|
1254
|
+
0,
|
|
1255
|
+
0,
|
|
1256
|
+
0
|
|
1257
|
+
],
|
|
1258
|
+
[
|
|
1259
|
+
118,
|
|
1260
|
+
2,
|
|
1261
|
+
2,
|
|
1262
|
+
2,
|
|
1263
|
+
2,
|
|
1264
|
+
2,
|
|
1265
|
+
3,
|
|
1266
|
+
3,
|
|
1267
|
+
3,
|
|
1268
|
+
3,
|
|
1269
|
+
3,
|
|
1270
|
+
3,
|
|
1271
|
+
3,
|
|
1272
|
+
3,
|
|
1273
|
+
3,
|
|
1274
|
+
3,
|
|
1275
|
+
5,
|
|
1276
|
+
5,
|
|
1277
|
+
5,
|
|
1278
|
+
5,
|
|
1279
|
+
5,
|
|
1280
|
+
5,
|
|
1281
|
+
5,
|
|
1282
|
+
0,
|
|
1283
|
+
0,
|
|
1284
|
+
0
|
|
1285
|
+
],
|
|
1286
|
+
[
|
|
1287
|
+
128,
|
|
1288
|
+
2,
|
|
1289
|
+
2,
|
|
1290
|
+
2,
|
|
1291
|
+
2,
|
|
1292
|
+
2,
|
|
1293
|
+
3,
|
|
1294
|
+
3,
|
|
1295
|
+
3,
|
|
1296
|
+
3,
|
|
1297
|
+
3,
|
|
1298
|
+
3,
|
|
1299
|
+
3,
|
|
1300
|
+
3,
|
|
1301
|
+
3,
|
|
1302
|
+
3,
|
|
1303
|
+
7,
|
|
1304
|
+
7,
|
|
1305
|
+
7,
|
|
1306
|
+
7,
|
|
1307
|
+
7,
|
|
1308
|
+
7,
|
|
1309
|
+
7,
|
|
1310
|
+
0,
|
|
1311
|
+
0,
|
|
1312
|
+
0
|
|
1313
|
+
],
|
|
1314
|
+
[
|
|
1315
|
+
138,
|
|
1316
|
+
2,
|
|
1317
|
+
2,
|
|
1318
|
+
2,
|
|
1319
|
+
2,
|
|
1320
|
+
2,
|
|
1321
|
+
3,
|
|
1322
|
+
3,
|
|
1323
|
+
3,
|
|
1324
|
+
3,
|
|
1325
|
+
3,
|
|
1326
|
+
3,
|
|
1327
|
+
3,
|
|
1328
|
+
3,
|
|
1329
|
+
3,
|
|
1330
|
+
3,
|
|
1331
|
+
9,
|
|
1332
|
+
9,
|
|
1333
|
+
9,
|
|
1334
|
+
9,
|
|
1335
|
+
9,
|
|
1336
|
+
9,
|
|
1337
|
+
9,
|
|
1338
|
+
0,
|
|
1339
|
+
0,
|
|
1340
|
+
0
|
|
1341
|
+
],
|
|
1342
|
+
[
|
|
1343
|
+
148,
|
|
1344
|
+
2,
|
|
1345
|
+
2,
|
|
1346
|
+
2,
|
|
1347
|
+
2,
|
|
1348
|
+
2,
|
|
1349
|
+
3,
|
|
1350
|
+
3,
|
|
1351
|
+
3,
|
|
1352
|
+
3,
|
|
1353
|
+
3,
|
|
1354
|
+
3,
|
|
1355
|
+
3,
|
|
1356
|
+
3,
|
|
1357
|
+
3,
|
|
1358
|
+
3,
|
|
1359
|
+
11,
|
|
1360
|
+
11,
|
|
1361
|
+
11,
|
|
1362
|
+
11,
|
|
1363
|
+
11,
|
|
1364
|
+
11,
|
|
1365
|
+
11,
|
|
1366
|
+
0,
|
|
1367
|
+
0,
|
|
1368
|
+
0
|
|
1369
|
+
],
|
|
1370
|
+
[
|
|
1371
|
+
158,
|
|
1372
|
+
2,
|
|
1373
|
+
2,
|
|
1374
|
+
2,
|
|
1375
|
+
2,
|
|
1376
|
+
2,
|
|
1377
|
+
3,
|
|
1378
|
+
3,
|
|
1379
|
+
3,
|
|
1380
|
+
3,
|
|
1381
|
+
3,
|
|
1382
|
+
3,
|
|
1383
|
+
3,
|
|
1384
|
+
3,
|
|
1385
|
+
3,
|
|
1386
|
+
3,
|
|
1387
|
+
13,
|
|
1388
|
+
13,
|
|
1389
|
+
13,
|
|
1390
|
+
13,
|
|
1391
|
+
13,
|
|
1392
|
+
13,
|
|
1393
|
+
13,
|
|
1394
|
+
0,
|
|
1395
|
+
0,
|
|
1396
|
+
0
|
|
1397
|
+
],
|
|
1398
|
+
[
|
|
1399
|
+
198,
|
|
1400
|
+
2,
|
|
1401
|
+
2,
|
|
1402
|
+
2,
|
|
1403
|
+
2,
|
|
1404
|
+
2,
|
|
1405
|
+
3,
|
|
1406
|
+
3,
|
|
1407
|
+
3,
|
|
1408
|
+
3,
|
|
1409
|
+
3,
|
|
1410
|
+
3,
|
|
1411
|
+
3,
|
|
1412
|
+
3,
|
|
1413
|
+
3,
|
|
1414
|
+
3,
|
|
1415
|
+
15,
|
|
1416
|
+
15,
|
|
1417
|
+
15,
|
|
1418
|
+
15,
|
|
1419
|
+
15,
|
|
1420
|
+
15,
|
|
1421
|
+
15,
|
|
1422
|
+
0,
|
|
1423
|
+
0,
|
|
1424
|
+
0
|
|
1425
|
+
],
|
|
1426
|
+
[
|
|
1427
|
+
248,
|
|
1428
|
+
2,
|
|
1429
|
+
2,
|
|
1430
|
+
2,
|
|
1431
|
+
2,
|
|
1432
|
+
2,
|
|
1433
|
+
3,
|
|
1434
|
+
3,
|
|
1435
|
+
3,
|
|
1436
|
+
3,
|
|
1437
|
+
3,
|
|
1438
|
+
3,
|
|
1439
|
+
3,
|
|
1440
|
+
3,
|
|
1441
|
+
3,
|
|
1442
|
+
3,
|
|
1443
|
+
17,
|
|
1444
|
+
17,
|
|
1445
|
+
17,
|
|
1446
|
+
17,
|
|
1447
|
+
17,
|
|
1448
|
+
17,
|
|
1449
|
+
17,
|
|
1450
|
+
0,
|
|
1451
|
+
0,
|
|
1452
|
+
0
|
|
1453
|
+
]
|
|
1454
|
+
], P = [
|
|
736
1455
|
[0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 14],
|
|
737
1456
|
[80, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 9, 11, 13, 15],
|
|
738
1457
|
[90, 0, 0, 0, 0, 0, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16],
|
|
@@ -742,8 +1461,7 @@ R.amazingAttData = [
|
|
|
742
1461
|
[130, 0, 0, 0, 0, 0, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20],
|
|
743
1462
|
[140, 0, 0, 0, 0, 0, 8, 9, 10, 11, 12, 13, 15, 17, 19, 21],
|
|
744
1463
|
[150, 0, 0, 0, 0, 0, 9, 10, 11, 12, 13, 14, 16, 18, 20, 22]
|
|
745
|
-
]
|
|
746
|
-
R.amazingStatData = [
|
|
1464
|
+
], T = [
|
|
747
1465
|
[0, 1, 2, 4, 7, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
748
1466
|
[80, 2, 3, 5, 8, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
749
1467
|
[85, 3, 4, 6, 9, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
@@ -760,8 +1478,7 @@ R.amazingStatData = [
|
|
|
760
1478
|
[140, 17, 18, 20, 23, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
761
1479
|
[145, 18, 19, 21, 24, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
762
1480
|
[150, 19, 20, 22, 25, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
|
763
|
-
]
|
|
764
|
-
R.starforceGloveBonusAttData = [
|
|
1481
|
+
], E = [
|
|
765
1482
|
0,
|
|
766
1483
|
0,
|
|
767
1484
|
0,
|
|
@@ -788,8 +1505,7 @@ R.starforceGloveBonusAttData = [
|
|
|
788
1505
|
0,
|
|
789
1506
|
0,
|
|
790
1507
|
0
|
|
791
|
-
]
|
|
792
|
-
R.starforceMhpData = [
|
|
1508
|
+
], U = [
|
|
793
1509
|
0,
|
|
794
1510
|
5,
|
|
795
1511
|
5,
|
|
@@ -816,8 +1532,7 @@ R.starforceMhpData = [
|
|
|
816
1532
|
0,
|
|
817
1533
|
0,
|
|
818
1534
|
0
|
|
819
|
-
]
|
|
820
|
-
R.starforceSpeedJumpData = [
|
|
1535
|
+
], L = [
|
|
821
1536
|
0,
|
|
822
1537
|
0,
|
|
823
1538
|
0,
|
|
@@ -845,344 +1560,249 @@ R.starforceSpeedJumpData = [
|
|
|
845
1560
|
0,
|
|
846
1561
|
0
|
|
847
1562
|
];
|
|
848
|
-
class
|
|
849
|
-
constructor(c = "",
|
|
850
|
-
this.name = c, this.stat =
|
|
1563
|
+
class R {
|
|
1564
|
+
constructor(c = "", i) {
|
|
1565
|
+
this.name = c, this.stat = i ?? /* @__PURE__ */ new Map();
|
|
851
1566
|
}
|
|
852
1567
|
/**
|
|
853
|
-
* 주문의 흔적
|
|
854
|
-
* @param gear 적용할
|
|
855
|
-
* @param type 주문의 흔적 스탯
|
|
856
|
-
*
|
|
857
|
-
* `
|
|
858
|
-
*
|
|
859
|
-
* `GearPropType.incAllStat` / `GearPropType.incMHP`
|
|
860
|
-
* @param probability 주문의 흔적 성공 확률 %; 다음 값 중 하나입니다:
|
|
861
|
-
*
|
|
862
|
-
* `100` / `70` / `30` / `15`
|
|
863
|
-
* @returns 주문의 흔적 `Scroll`; 존재하지 않을 경우 `undefined`
|
|
1568
|
+
* 주문의 흔적 주문서를 생성합니다.
|
|
1569
|
+
* @param gear 주문의 흔적을 적용할 장비.
|
|
1570
|
+
* @param type 주문의 흔적 스탯 종류. `GearPropType` 타입이고
|
|
1571
|
+
* `incSTR` / `incDEX` / `incINT` / `incLUK` / `incAllStat` / `incMHP` 중 하나입니다.
|
|
1572
|
+
* @param probability 주문의 흔적 성공 확률. `100` / `70` / `30` / `15` 중 하나입니다.
|
|
1573
|
+
* @returns 주문의 흔적 주문서. 지정된 장비, 스탯, 확률을 만족하는 주문서가 존재하지 않을 경우 `undefined`를 반환합니다.
|
|
864
1574
|
*/
|
|
865
|
-
static getSpellTraceScroll(c,
|
|
866
|
-
const
|
|
867
|
-
let
|
|
868
|
-
const
|
|
869
|
-
switch (
|
|
1575
|
+
static getSpellTraceScroll(c, i, s) {
|
|
1576
|
+
const d = i === n.incINT ? n.incMAD : n.incPAD, a = c.req.level >= 115 ? 2 : c.req.level >= 75 ? 1 : 0;
|
|
1577
|
+
let m;
|
|
1578
|
+
const f = d === n.incMAD ? "마력" : "공격력";
|
|
1579
|
+
switch (i) {
|
|
870
1580
|
case n.incSTR:
|
|
871
|
-
|
|
1581
|
+
m = "힘";
|
|
872
1582
|
break;
|
|
873
1583
|
case n.incDEX:
|
|
874
|
-
|
|
1584
|
+
m = "민첩";
|
|
875
1585
|
break;
|
|
876
1586
|
case n.incINT:
|
|
877
|
-
|
|
1587
|
+
m = "지력";
|
|
878
1588
|
break;
|
|
879
1589
|
case n.incLUK:
|
|
880
|
-
|
|
1590
|
+
m = "운";
|
|
881
1591
|
break;
|
|
882
1592
|
case n.incAllStat:
|
|
883
|
-
|
|
1593
|
+
m = "올스탯";
|
|
884
1594
|
break;
|
|
885
1595
|
case n.incMHP:
|
|
886
|
-
|
|
1596
|
+
m = "체력";
|
|
887
1597
|
break;
|
|
888
1598
|
}
|
|
889
|
-
if (M.isWeapon(c.type) || c.type ===
|
|
890
|
-
if (
|
|
1599
|
+
if (M.isWeapon(c.type) || c.type === o.katara) {
|
|
1600
|
+
if (i === n.incAllStat)
|
|
891
1601
|
return;
|
|
892
|
-
let
|
|
893
|
-
switch (
|
|
1602
|
+
let u;
|
|
1603
|
+
switch (s) {
|
|
894
1604
|
case 100:
|
|
895
|
-
|
|
1605
|
+
u = [
|
|
896
1606
|
[1, 0],
|
|
897
1607
|
[2, 0],
|
|
898
1608
|
[3, 1]
|
|
899
1609
|
];
|
|
900
1610
|
break;
|
|
901
1611
|
case 70:
|
|
902
|
-
|
|
1612
|
+
u = [
|
|
903
1613
|
[2, 0],
|
|
904
1614
|
[3, 1],
|
|
905
1615
|
[5, 2]
|
|
906
1616
|
];
|
|
907
1617
|
break;
|
|
908
1618
|
case 30:
|
|
909
|
-
|
|
1619
|
+
u = [
|
|
910
1620
|
[3, 1],
|
|
911
1621
|
[5, 2],
|
|
912
1622
|
[7, 3]
|
|
913
1623
|
];
|
|
914
1624
|
break;
|
|
915
1625
|
case 15:
|
|
916
|
-
|
|
1626
|
+
u = [
|
|
917
1627
|
[5, 2],
|
|
918
1628
|
[7, 3],
|
|
919
1629
|
[9, 4]
|
|
920
1630
|
];
|
|
921
1631
|
break;
|
|
922
1632
|
}
|
|
923
|
-
const
|
|
924
|
-
[
|
|
925
|
-
[
|
|
1633
|
+
const e = u[a][0], D = u[a][1] * (i === n.incMHP ? 50 : 1), h = D > 0 ? `${s}% ${f}(${m}) 주문서` : `${s}% ${f} 주문서`, r = /* @__PURE__ */ new Map([
|
|
1634
|
+
[i, D],
|
|
1635
|
+
[d, e]
|
|
926
1636
|
]);
|
|
927
|
-
return new
|
|
928
|
-
} else if (
|
|
1637
|
+
return new R(h, r);
|
|
1638
|
+
} else if (s === 15)
|
|
929
1639
|
return;
|
|
930
|
-
if (c.type ===
|
|
931
|
-
let
|
|
932
|
-
switch (
|
|
1640
|
+
if (c.type === o.glove) {
|
|
1641
|
+
let u;
|
|
1642
|
+
switch (s) {
|
|
933
1643
|
case 100:
|
|
934
|
-
|
|
1644
|
+
u = [0, 1, 1];
|
|
935
1645
|
break;
|
|
936
1646
|
case 70:
|
|
937
|
-
|
|
1647
|
+
u = [1, 2, 2];
|
|
938
1648
|
break;
|
|
939
1649
|
case 30:
|
|
940
|
-
|
|
1650
|
+
u = [2, 3, 3];
|
|
941
1651
|
break;
|
|
942
1652
|
}
|
|
943
|
-
const
|
|
944
|
-
let
|
|
945
|
-
return
|
|
1653
|
+
const e = u[a];
|
|
1654
|
+
let D, h;
|
|
1655
|
+
return e === 0 ? (D = `${s}% 방어력 주문서`, h = /* @__PURE__ */ new Map([[n.incPDD, 3]])) : (D = `${s}% ${f} 주문서`, h = /* @__PURE__ */ new Map([[d, e]])), new R(D, h);
|
|
946
1656
|
}
|
|
947
|
-
if (M.isArmor(c.type) || c.type ===
|
|
948
|
-
if (
|
|
949
|
-
if (
|
|
1657
|
+
if (M.isArmor(c.type) || c.type === o.shoulder) {
|
|
1658
|
+
if (i === n.incAllStat) {
|
|
1659
|
+
if (s !== 30)
|
|
950
1660
|
return;
|
|
951
1661
|
const k = [
|
|
952
1662
|
[1, 30, 4],
|
|
953
1663
|
[2, 70, 7],
|
|
954
1664
|
[3, 120, 10]
|
|
955
|
-
],
|
|
956
|
-
[n.incSTR,
|
|
957
|
-
[n.incDEX,
|
|
958
|
-
[n.incINT,
|
|
959
|
-
[n.incLUK,
|
|
960
|
-
[n.incMHP,
|
|
961
|
-
[n.incPDD,
|
|
1665
|
+
], w = k[a][0], H = k[a][1], I = k[a][2], N = `${s}% ${m} 주문서`, S = /* @__PURE__ */ new Map([
|
|
1666
|
+
[n.incSTR, w],
|
|
1667
|
+
[n.incDEX, w],
|
|
1668
|
+
[n.incINT, w],
|
|
1669
|
+
[n.incLUK, w],
|
|
1670
|
+
[n.incMHP, H],
|
|
1671
|
+
[n.incPDD, I]
|
|
962
1672
|
]);
|
|
963
|
-
return c.upgradeCount === 3 && (c.req.job === 0 ? (
|
|
1673
|
+
return c.upgradeCount === 3 && (c.req.job === 0 ? (S.set(n.incMAD, 1), S.set(n.incPAD, 1)) : Math.floor(c.req.job / 2) % 2 === 1 ? S.set(n.incMAD, 1) : S.set(n.incPAD, 1)), new R(N, S);
|
|
964
1674
|
}
|
|
965
|
-
let
|
|
966
|
-
switch (
|
|
1675
|
+
let u;
|
|
1676
|
+
switch (s) {
|
|
967
1677
|
case 100:
|
|
968
|
-
|
|
1678
|
+
u = [
|
|
969
1679
|
[1, 5, 1],
|
|
970
1680
|
[2, 20, 2],
|
|
971
1681
|
[3, 30, 3]
|
|
972
1682
|
];
|
|
973
1683
|
break;
|
|
974
1684
|
case 70:
|
|
975
|
-
|
|
1685
|
+
u = [
|
|
976
1686
|
[2, 15, 2],
|
|
977
1687
|
[3, 40, 4],
|
|
978
1688
|
[4, 70, 5]
|
|
979
1689
|
];
|
|
980
1690
|
break;
|
|
981
1691
|
case 30:
|
|
982
|
-
|
|
1692
|
+
u = [
|
|
983
1693
|
[3, 30, 4],
|
|
984
1694
|
[5, 70, 7],
|
|
985
1695
|
[7, 120, 10]
|
|
986
1696
|
];
|
|
987
1697
|
break;
|
|
988
1698
|
}
|
|
989
|
-
const
|
|
990
|
-
[n.incMHP,
|
|
991
|
-
[n.incPDD,
|
|
1699
|
+
const e = i !== n.incMHP ? u[a][0] : 0, D = u[a][1] + (i === n.incMHP ? u[a][0] * 50 : 0), h = u[a][2], r = `${s}% ${m} 주문서`, A = /* @__PURE__ */ new Map([
|
|
1700
|
+
[n.incMHP, D],
|
|
1701
|
+
[n.incPDD, h]
|
|
992
1702
|
]);
|
|
993
|
-
return
|
|
1703
|
+
return e > 0 && A.set(i, e), c.upgradeCount === 3 && (c.req.job === 0 ? (A.set(n.incMAD, 1), A.set(n.incPAD, 1)) : Math.floor(c.req.job / 2) % 2 === 1 ? A.set(n.incMAD, 1) : A.set(n.incPAD, 1)), new R(r, A);
|
|
994
1704
|
}
|
|
995
1705
|
if (M.isAccessory(c.type)) {
|
|
996
|
-
if (
|
|
997
|
-
if (
|
|
1706
|
+
if (i === n.incAllStat) {
|
|
1707
|
+
if (s !== 30)
|
|
998
1708
|
return;
|
|
999
|
-
const
|
|
1709
|
+
const A = [
|
|
1000
1710
|
[1, 30, 4],
|
|
1001
1711
|
[2, 70, 7],
|
|
1002
1712
|
[3, 120, 10]
|
|
1003
|
-
][
|
|
1004
|
-
[n.incSTR,
|
|
1005
|
-
[n.incDEX,
|
|
1006
|
-
[n.incINT,
|
|
1007
|
-
[n.incLUK,
|
|
1713
|
+
][a][0], k = `${s}% ${m} 주문서`, w = /* @__PURE__ */ new Map([
|
|
1714
|
+
[n.incSTR, A],
|
|
1715
|
+
[n.incDEX, A],
|
|
1716
|
+
[n.incINT, A],
|
|
1717
|
+
[n.incLUK, A]
|
|
1008
1718
|
]);
|
|
1009
|
-
return new
|
|
1719
|
+
return new R(k, w);
|
|
1010
1720
|
}
|
|
1011
|
-
let
|
|
1012
|
-
switch (
|
|
1721
|
+
let u;
|
|
1722
|
+
switch (s) {
|
|
1013
1723
|
case 100:
|
|
1014
|
-
|
|
1724
|
+
u = [1, 1, 2];
|
|
1015
1725
|
break;
|
|
1016
1726
|
case 70:
|
|
1017
|
-
|
|
1727
|
+
u = [2, 2, 3];
|
|
1018
1728
|
break;
|
|
1019
1729
|
case 30:
|
|
1020
|
-
|
|
1730
|
+
u = [3, 4, 5];
|
|
1021
1731
|
break;
|
|
1022
1732
|
}
|
|
1023
|
-
const
|
|
1024
|
-
return new
|
|
1733
|
+
const e = u[a] * (i === n.incMHP ? 50 : 1), D = `${s}% ${m} 주문서`, h = /* @__PURE__ */ new Map([[i, e]]);
|
|
1734
|
+
return new R(D, h);
|
|
1025
1735
|
}
|
|
1026
|
-
if (c.type ===
|
|
1027
|
-
let
|
|
1028
|
-
switch (
|
|
1736
|
+
if (c.type === o.machineHeart) {
|
|
1737
|
+
let u;
|
|
1738
|
+
switch (s) {
|
|
1029
1739
|
case 100:
|
|
1030
|
-
|
|
1740
|
+
u = [1, 2, 3];
|
|
1031
1741
|
break;
|
|
1032
1742
|
case 70:
|
|
1033
|
-
|
|
1743
|
+
u = [2, 3, 5];
|
|
1034
1744
|
break;
|
|
1035
1745
|
case 30:
|
|
1036
|
-
|
|
1746
|
+
u = [3, 5, 7];
|
|
1037
1747
|
break;
|
|
1038
1748
|
}
|
|
1039
|
-
const
|
|
1040
|
-
return new
|
|
1749
|
+
const e = u[a], D = `${s}% ${m} 주문서`, h = /* @__PURE__ */ new Map([[d, e]]);
|
|
1750
|
+
return new R(D, h);
|
|
1041
1751
|
}
|
|
1042
1752
|
}
|
|
1043
1753
|
}
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
* 무기를 소울웨폰으로 변환합니다.
|
|
1047
|
-
* @param gear 적용할 장비
|
|
1048
|
-
* @returns 소울웨폰으로 변환되었을 경우 `true`; 아닐 경우 `false`
|
|
1049
|
-
*/
|
|
1050
|
-
enchant(c) {
|
|
1051
|
-
return c.soulSlot.enchanted || !M.isWeapon(c.type) ? !1 : (c.soulSlot.enchanted = !0, c.soulSlot.soul = void 0, c.soulSlot.charge = 0, c.soulSlot.chargeOption.clear(), !0);
|
|
1052
|
-
}
|
|
1053
|
-
/**
|
|
1054
|
-
* 소울웨폰을 원래의 무기로 되돌립니다.
|
|
1055
|
-
* @param gear 되돌릴 장비
|
|
1056
|
-
* @returns 되돌렸을 경우 `true`; 아닐 경우 `false`
|
|
1057
|
-
*/
|
|
1058
|
-
disenchant(c) {
|
|
1059
|
-
return c.soulSlot.enchanted ? (c.soulSlot.enchanted = !1, c.soulSlot.soul = void 0, c.soulSlot.charge = 0, c.soulSlot.chargeOption.clear(), !0) : !1;
|
|
1060
|
-
}
|
|
1061
|
-
/**
|
|
1062
|
-
* 소울웨폰에 소울을 장착합니다.
|
|
1063
|
-
* @param gear 소울을 장착할 장비
|
|
1064
|
-
* @param soul 장착할 소울
|
|
1065
|
-
* @returns 장착했을 경우 `true`; 아닐 경우 `false`
|
|
1066
|
-
*/
|
|
1067
|
-
setSoul(c, s) {
|
|
1068
|
-
return c.soulSlot.enchanted ? (c.soulSlot.soul = s, this.setCharge(c, c.soulSlot.charge), !0) : !1;
|
|
1069
|
-
}
|
|
1070
|
-
/**
|
|
1071
|
-
* 소울이 장착된 소울웨폰에서 소울을 제거합니다.
|
|
1072
|
-
* @param gear 소울을 제거할 장비
|
|
1073
|
-
* @returns 제거했을 경우 `true`; 아닐 경우 `false`
|
|
1074
|
-
*/
|
|
1075
|
-
removeSoul(c) {
|
|
1076
|
-
return !c.soulSlot.enchanted || !c.soulSlot.soul ? !1 : (c.soulSlot.soul = void 0, this.setCharge(c, c.soulSlot.charge), !0);
|
|
1077
|
-
}
|
|
1078
|
-
/**
|
|
1079
|
-
* 소울웨폰의 소울 충전량을 설정하고 옵션을 적용합니다.
|
|
1080
|
-
* 0부터 1000까지의 값으로 설정할 수 있습니다.
|
|
1081
|
-
* @param gear 소울 충전량을 설정할 장비
|
|
1082
|
-
* @param charge 소울 충전량
|
|
1083
|
-
* @returns 적용했을 경우 `true`; 아닐 경우 `false`
|
|
1084
|
-
*/
|
|
1085
|
-
setCharge(c, s) {
|
|
1086
|
-
if (!c.soulSlot.enchanted || s < 0 || s > 1e3)
|
|
1087
|
-
return !1;
|
|
1088
|
-
c.soulSlot.charge = s;
|
|
1089
|
-
const a = c.option(n.incPAD).base < c.option(n.incMAD).base ? n.incMAD : n.incPAD;
|
|
1090
|
-
return c.soulSlot.chargeOption.clear(), c.soulSlot.chargeOption.set(a, this.getChargeAD(c.soulSlot)), !0;
|
|
1091
|
-
}
|
|
1092
|
-
getChargeAD(c) {
|
|
1093
|
-
if (!c.enchanted)
|
|
1094
|
-
return 0;
|
|
1095
|
-
if (c.soul) {
|
|
1096
|
-
const s = c.soul.multiplier;
|
|
1097
|
-
return 10 + Math.min(Math.ceil(c.charge / 100), 5) * s;
|
|
1098
|
-
}
|
|
1099
|
-
return 5 + Math.min(Math.ceil(c.charge / 100), 5);
|
|
1100
|
-
}
|
|
1754
|
+
function c0(t) {
|
|
1755
|
+
return t.getBooleanValue(n.blockGoldHammer) || t.getBooleanValue(n.onlyUpgrade) || t.totalUpgradeCount <= 0 || t.hammerCount > 0 ? !1 : (t.hammerCount = 1, !0);
|
|
1101
1756
|
}
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
/**
|
|
1126
|
-
* 장비에 주문의 흔적 강화를 1회 적용합니다.
|
|
1127
|
-
* @param gear 강화를 적용할 장비
|
|
1128
|
-
* @param type 주문의 흔적 스탯 종류; 다음 값 중 하나입니다:
|
|
1129
|
-
*
|
|
1130
|
-
* `GearPropType.incSTR` / `GearPropType.incDEX` /
|
|
1131
|
-
* `GearPropType.incINT` / `GearPropType.incLUK` /
|
|
1132
|
-
* `GearPropType.incAllStat` / `GearPropType.incMHP`
|
|
1133
|
-
* @param probability 주문의 흔적 성공 확률 %; 다음 값 중 하나입니다:
|
|
1134
|
-
*
|
|
1135
|
-
* `100` / `70` / `30` / `15`
|
|
1136
|
-
* @returns 주문서가 적용됐을 경우 `true`; 아닐 경우 `false`
|
|
1137
|
-
*/
|
|
1138
|
-
applySpellTrace(c, s, o) {
|
|
1139
|
-
const a = w.getSpellTraceScroll(c, s, o);
|
|
1140
|
-
return a ? this.applyScroll(c, a) : !1;
|
|
1141
|
-
}
|
|
1142
|
-
/**
|
|
1143
|
-
* 장비의 업그레이드 가능 횟수를 실패로 1회 감소합니다.
|
|
1144
|
-
* @param gear 감소할 장비
|
|
1145
|
-
* @returns 감소됐을 경우 `true`; 아닐 경우 `false`
|
|
1146
|
-
*/
|
|
1147
|
-
addUpgradeFailCount(c) {
|
|
1148
|
-
return c.upgradeCountLeft < 1 ? !1 : (c.upgradeFailCount += 1, !0);
|
|
1149
|
-
}
|
|
1150
|
-
/**
|
|
1151
|
-
* 장비의 실패한 업그레이드 가능 횟수를 1회 복구합니다.
|
|
1152
|
-
* @param gear 복구할 장비
|
|
1153
|
-
* @returns 복구했을 경우 `true`; 아닐 경우 `false`
|
|
1154
|
-
*/
|
|
1155
|
-
restoreUpgradeCount(c) {
|
|
1156
|
-
return c.upgradeFailCount < 1 ? !1 : (c.upgradeFailCount -= 1, !0);
|
|
1157
|
-
}
|
|
1158
|
-
/**
|
|
1159
|
-
* 장비의 주문서, 황금망치 관련 속성을 초기화합니다.
|
|
1160
|
-
*
|
|
1161
|
-
* 아크 이노센트와 동일한 효과입니다. 놀라운 장비강화 주문서가 적용된 장비도 적용 가능하지만 오차가 발생할 수 있습니다.
|
|
1162
|
-
* @param gear 초기화할 장비
|
|
1163
|
-
* @returns 초기화했을 경우 `true`; 아닐 경우 `false`
|
|
1164
|
-
*/
|
|
1165
|
-
resetUpgrade(c) {
|
|
1166
|
-
c.upgradeCount = 0, c.upgradeFailCount = 0, c.hammerCount = 0;
|
|
1167
|
-
for (const [, s] of c.options)
|
|
1168
|
-
s.upgrade = 0;
|
|
1169
|
-
return !0;
|
|
1170
|
-
}
|
|
1757
|
+
function p(t, c) {
|
|
1758
|
+
if (t.upgradeCountLeft < 1)
|
|
1759
|
+
return !1;
|
|
1760
|
+
t.upgradeCount += 1;
|
|
1761
|
+
for (const [i, s] of c.stat)
|
|
1762
|
+
t.option(i).upgrade += s;
|
|
1763
|
+
return !0;
|
|
1764
|
+
}
|
|
1765
|
+
function s0(t, c, i) {
|
|
1766
|
+
const s = R.getSpellTraceScroll(t, c, i);
|
|
1767
|
+
return s ? p(t, s) : !1;
|
|
1768
|
+
}
|
|
1769
|
+
function o0(t) {
|
|
1770
|
+
return t.upgradeCountLeft < 1 ? !1 : (t.upgradeFailCount += 1, !0);
|
|
1771
|
+
}
|
|
1772
|
+
function l0(t) {
|
|
1773
|
+
return t.upgradeFailCount < 1 ? !1 : (t.upgradeFailCount -= 1, !0);
|
|
1774
|
+
}
|
|
1775
|
+
function u0(t) {
|
|
1776
|
+
t.upgradeCount = 0, t.upgradeFailCount = 0, t.hammerCount = 0;
|
|
1777
|
+
for (const [, c] of t.options)
|
|
1778
|
+
c.upgrade = 0;
|
|
1779
|
+
return !0;
|
|
1171
1780
|
}
|
|
1172
1781
|
export {
|
|
1173
|
-
|
|
1174
|
-
u as BonusStatType,
|
|
1175
|
-
R as EnhancementLogic,
|
|
1782
|
+
l as BonusStatType,
|
|
1176
1783
|
M as Gear,
|
|
1177
|
-
|
|
1784
|
+
K as GearIcon,
|
|
1785
|
+
q as GearOption,
|
|
1178
1786
|
n as GearPropType,
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1787
|
+
W as GearReq,
|
|
1788
|
+
o as GearType,
|
|
1789
|
+
g as Potential,
|
|
1790
|
+
C as PotentialGrade,
|
|
1791
|
+
R as Scroll,
|
|
1792
|
+
G as Soul,
|
|
1793
|
+
V as SoulWeapon,
|
|
1794
|
+
n0 as addAmazingEnhancement,
|
|
1795
|
+
y as addBonusStat,
|
|
1796
|
+
j as addStarforce,
|
|
1797
|
+
o0 as addUpgradeFailCount,
|
|
1798
|
+
c0 as applyGoldHammer,
|
|
1799
|
+
p as applyScroll,
|
|
1800
|
+
s0 as applySpellTrace,
|
|
1801
|
+
x as getBonusStatOption,
|
|
1802
|
+
_ as getBonusStatValue,
|
|
1803
|
+
i0 as recalculateStarforce,
|
|
1804
|
+
t0 as resetBonusStat,
|
|
1805
|
+
z as resetEnhancement,
|
|
1806
|
+
u0 as resetUpgrade,
|
|
1807
|
+
l0 as restoreUpgradeCount
|
|
1188
1808
|
};
|