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