@opfr/services 1.7.0 → 1.8.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/dist/index.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Schema as c, models as d, model as l, connect as Qe, Types as Ye } from "mongoose";
2
- import { QuestStatus as q, DEFAULT_FACTION as Ge, EFFECT_KEYS as We, EQUIPMENT_SLOT as Ie, CHARACTERISTICS as Ve, getComputedCharacteristicValue as Xe, getCurrentLevel as Je, HP_PER_VITALITY as Ze, DEFAULT_MAX_HP as et, transformToDBBuff as tt, RANK_IDS_WITHOUT_BASIC as ge, STORY_MESSAGE_ARGS as nt, STORY_ACTION_TYPES as rt, STORY_STEP_TYPES as at, STORY_SPEAKER_TYPES as st, chapterOne as oe, speakers as it } from "@opfr/definitions";
2
+ import { QuestStatus as A, DEFAULT_FACTION as Ge, EFFECT_KEYS as We, EQUIPMENT_SLOT as Ie, CHARACTERISTICS as Ve, getComputedCharacteristicValue as Xe, getCurrentLevel as Je, HP_PER_VITALITY as Ze, DEFAULT_MAX_HP as et, transformToDBBuff as tt, RANK_IDS_WITHOUT_BASIC as ge, STORY_MESSAGE_ARGS as nt, STORY_ACTION_TYPES as rt, STORY_STEP_TYPES as at, STORY_SPEAKER_TYPES as st, chapterOne as oe, speakers as it } from "@opfr/definitions";
3
3
  import ut from "node-cache";
4
4
  import * as Ue from "events";
5
5
  import { filterNullAndUndefined as L, recordToArray as B, arrayToRecord as Te, mergeObjects as Q, seededRandom as ct, sortBy as pe, randomBetween as Ee, hasExpire as de, isString as ot, capitalizeAllWords as dt, pickNthByOdds as Se, pickFrom as lt, sameDay as Oe, yesterday as Y, exclude as P } from "@opfr/utils-lang";
@@ -52,14 +52,14 @@ class f extends y {
52
52
  }), r;
53
53
  }
54
54
  }
55
- const De = new Ue.EventEmitter(), S = (n, e, t) => {
55
+ const De = new Ue.EventEmitter(), g = (n, e, t) => {
56
56
  De.emit(n, e, t);
57
57
  }, La = (n) => {
58
58
  for (const [e, t] of Object.entries(n))
59
59
  De.on(e, (r, a) => {
60
60
  t(r, a);
61
61
  });
62
- }, w = {
62
+ }, S = {
63
63
  USER: "middleware/quest/USER",
64
64
  USER_INVENTORY: "middleware/quest/USER_INVENTORY",
65
65
  USER_META: "middleware/quest/USER_META",
@@ -84,20 +84,20 @@ const De = new Ue.EventEmitter(), S = (n, e, t) => {
84
84
  required: !0,
85
85
  index: !0
86
86
  },
87
- status: { type: String, default: q.IN_PROGRESS, index: 1 },
87
+ status: { type: String, default: A.IN_PROGRESS, index: 1 },
88
88
  lastCompletionDate: Date,
89
89
  streak: Number
90
90
  },
91
91
  { minimize: !1 }
92
92
  );
93
93
  ve.post("findOneAndUpdate", function(n) {
94
- n && S(
95
- w.USER_QUEST,
94
+ n && g(
95
+ S.USER_QUEST,
96
96
  n.user._id,
97
97
  n
98
98
  );
99
99
  });
100
- const C = d?.UserQuest || l("UserQuest", ve), pt = new c({
100
+ const R = d?.UserQuest || l("UserQuest", ve), pt = new c({
101
101
  user: {
102
102
  type: c.Types.ObjectId,
103
103
  required: !0,
@@ -173,15 +173,15 @@ const C = d?.UserQuest || l("UserQuest", ve), pt = new c({
173
173
  { minimize: !1 }
174
174
  );
175
175
  Me.post("findOneAndUpdate", function(n) {
176
- n && S(
177
- w.USER_INVENTORY,
176
+ n && g(
177
+ S.USER_INVENTORY,
178
178
  n.user._id,
179
179
  n
180
180
  );
181
181
  });
182
182
  const Z = d?.UserInventory || l("UserInventory", Me), ht = new Ue.EventEmitter(), gt = (n, e) => {
183
183
  ht.emit(n, e);
184
- }, M = {
184
+ }, v = {
185
185
  multiplier: { type: Number, default: 0 },
186
186
  origin: String,
187
187
  expireAt: { type: Date, default: null },
@@ -208,33 +208,33 @@ const Z = d?.UserInventory || l("UserInventory", Me), ht = new Ue.EventEmitter()
208
208
  buffs: {
209
209
  cooldown: {
210
210
  casino: {
211
- type: [M],
211
+ type: [v],
212
212
  default: []
213
213
  },
214
214
  work: {
215
- type: [M],
215
+ type: [v],
216
216
  default: []
217
217
  }
218
218
  },
219
219
  berry: {
220
220
  work: {
221
- type: [M],
221
+ type: [v],
222
222
  default: []
223
223
  },
224
224
  global: {
225
- type: [M],
225
+ type: [v],
226
226
  default: []
227
227
  }
228
228
  },
229
229
  drop: {
230
230
  work: {
231
- type: [M],
231
+ type: [v],
232
232
  default: []
233
233
  }
234
234
  },
235
235
  xp: {
236
236
  global: {
237
- type: [M],
237
+ type: [v],
238
238
  default: []
239
239
  }
240
240
  }
@@ -261,13 +261,13 @@ const Z = d?.UserInventory || l("UserInventory", Me), ht = new Ue.EventEmitter()
261
261
  }
262
262
  });
263
263
  xe.post("findOneAndUpdate", async function(n) {
264
- n && (S(
265
- w.USER_META,
264
+ n && (g(
265
+ S.USER_META,
266
266
  n.user._id,
267
267
  n
268
268
  ), n.hp <= 0 && gt("death", n.user._id));
269
269
  });
270
- const v = d?.UserMeta || l("UserMeta", xe), qe = new c({
270
+ const D = d?.UserMeta || l("UserMeta", xe), Ae = new c({
271
271
  user: {
272
272
  type: c.Types.ObjectId,
273
273
  required: !0,
@@ -284,14 +284,14 @@ const v = d?.UserMeta || l("UserMeta", xe), qe = new c({
284
284
  unlockedBags: { type: [String], default: ["default"] },
285
285
  selectedBag: { type: String, default: "default" }
286
286
  });
287
- qe.post("findOneAndUpdate", function(n) {
288
- n && S(
289
- w.USER_ORNAMENT,
287
+ Ae.post("findOneAndUpdate", function(n) {
288
+ n && g(
289
+ S.USER_ORNAMENT,
290
290
  n.user._id,
291
291
  n
292
292
  );
293
293
  });
294
- const ee = d?.UserOrnament || l("UserOrnament", qe), St = new c({
294
+ const ee = d?.UserOrnament || l("UserOrnament", Ae), St = new c({
295
295
  user: {
296
296
  type: c.Types.ObjectId,
297
297
  required: !0,
@@ -310,7 +310,7 @@ const ee = d?.UserOrnament || l("UserOrnament", qe), St = new c({
310
310
  default: /* @__PURE__ */ new Map()
311
311
  }
312
312
  }
313
- }), F = d?.UserSettings || l("UserSettings", St), Ae = new c({
313
+ }), F = d?.UserSettings || l("UserSettings", St), qe = new c({
314
314
  user: {
315
315
  type: c.Types.ObjectId,
316
316
  required: !0,
@@ -345,14 +345,14 @@ const ee = d?.UserOrnament || l("UserOrnament", qe), St = new c({
345
345
  guessInOneTryCount: { type: Number, default: 0 }
346
346
  }
347
347
  });
348
- Ae.post("findOneAndUpdate", function(n) {
349
- n && S(
350
- w.USER_STATS_CASINO,
348
+ qe.post("findOneAndUpdate", function(n) {
349
+ n && g(
350
+ S.USER_STATS_CASINO,
351
351
  n.user._id,
352
352
  n
353
353
  );
354
354
  });
355
- const A = d?.UserStatsCasino || l("UserStatsCasino", Ae), ke = new c({
355
+ const q = d?.UserStatsCasino || l("UserStatsCasino", qe), ke = new c({
356
356
  user: {
357
357
  type: c.Types.ObjectId,
358
358
  required: !0,
@@ -363,8 +363,8 @@ const A = d?.UserStatsCasino || l("UserStatsCasino", Ae), ke = new c({
363
363
  totalSpentInShop: { type: Number, default: 0 }
364
364
  });
365
365
  ke.post("findOneAndUpdate", function(n) {
366
- n && S(
367
- w.USER_STATS_ECONOMY,
366
+ n && g(
367
+ S.USER_STATS_ECONOMY,
368
368
  n.user._id,
369
369
  n
370
370
  );
@@ -382,8 +382,8 @@ const te = d?.UserStatsEconomy || l("UserStatsEconomy", ke), Re = new c({
382
382
  writeDifferentChatIds: { type: [String], default: [] }
383
383
  });
384
384
  Re.post("findOneAndUpdate", function(n) {
385
- n && S(
386
- w.USER_STATS_ENGAGEMENT,
385
+ n && g(
386
+ S.USER_STATS_ENGAGEMENT,
387
387
  n.user._id,
388
388
  n
389
389
  );
@@ -411,13 +411,13 @@ const ne = d?.UserStatsEngagement || l(
411
411
  }
412
412
  });
413
413
  Ce.post("findOneAndUpdate", function(n) {
414
- n && S(
415
- w.USER_STATS_FLAGS,
414
+ n && g(
415
+ S.USER_STATS_FLAGS,
416
416
  n.user._id,
417
417
  n
418
418
  );
419
419
  });
420
- const re = d?.UserStatsFlags || l("UserStatsFlags", Ce), _e = new c({
420
+ const re = d?.UserStatsFlags || l("UserStatsFlags", Ce), Be = new c({
421
421
  user: {
422
422
  type: c.Types.ObjectId,
423
423
  required: !0,
@@ -429,17 +429,17 @@ const re = d?.UserStatsFlags || l("UserStatsFlags", Ce), _e = new c({
429
429
  lastTimeRead: { type: Date, default: /* @__PURE__ */ new Date(), index: !0 }
430
430
  }
431
431
  });
432
- _e.post("findOneAndUpdate", function(n) {
433
- n && S(
434
- w.USER_STATS_FREQUENCY,
432
+ Be.post("findOneAndUpdate", function(n) {
433
+ n && g(
434
+ S.USER_STATS_FREQUENCY,
435
435
  n.user._id,
436
436
  n
437
437
  );
438
438
  });
439
- const D = d?.UserStatsFrequency || l(
439
+ const O = d?.UserStatsFrequency || l(
440
440
  "UserStatsFrequency",
441
- _e
442
- ), Be = new c({
441
+ Be
442
+ ), _e = new c({
443
443
  user: {
444
444
  type: c.Types.ObjectId,
445
445
  required: !0,
@@ -466,16 +466,16 @@ const D = d?.UserStatsFrequency || l(
466
466
  totalCrafted: { type: Number, default: 0 }
467
467
  }
468
468
  });
469
- Be.post("findOneAndUpdate", function(n) {
470
- n && S(
471
- w.USER_STATS_INVENTORY,
469
+ _e.post("findOneAndUpdate", function(n) {
470
+ n && g(
471
+ S.USER_STATS_INVENTORY,
472
472
  n.user._id,
473
473
  n
474
474
  );
475
475
  });
476
476
  const k = d?.UserStatsInventory || l(
477
477
  "UserStatsInventory",
478
- Be
478
+ _e
479
479
  ), ye = new c({
480
480
  discordId: { type: String, required: !0, unique: !0 },
481
481
  scam: { type: Boolean, default: !1 },
@@ -485,20 +485,20 @@ const k = d?.UserStatsInventory || l(
485
485
  canChooseFaction: { type: Boolean, default: !1 }
486
486
  });
487
487
  ye.post("findOneAndUpdate", function(n) {
488
- n && S(w.USER, n._id, n);
488
+ n && g(S.USER, n._id, n);
489
489
  });
490
490
  ye.post("deleteOne", async function() {
491
491
  const n = this.getQuery()._id;
492
- await W.deleteOne({ user: n }), await V.deleteOne({ user: n }), await X.deleteOne({ user: n }), await J.deleteOne({ user: n }), await Z.deleteOne({ user: n }), await v.deleteOne({ user: n }), await ee.deleteOne({ user: n }), await C.deleteMany({ user: n }), await F.deleteOne({ user: n }), await A.deleteOne({ user: n }), await te.deleteOne({ user: n }), await ne.deleteOne({ user: n }), await re.deleteOne({ user: n }), await D.deleteOne({ user: n }), await k.deleteOne({ user: n });
492
+ await W.deleteOne({ user: n }), await V.deleteOne({ user: n }), await X.deleteOne({ user: n }), await J.deleteOne({ user: n }), await Z.deleteOne({ user: n }), await D.deleteOne({ user: n }), await ee.deleteOne({ user: n }), await R.deleteMany({ user: n }), await F.deleteOne({ user: n }), await q.deleteOne({ user: n }), await te.deleteOne({ user: n }), await ne.deleteOne({ user: n }), await re.deleteOne({ user: n }), await O.deleteOne({ user: n }), await k.deleteOne({ user: n });
493
493
  });
494
- const b = d?.User || l("User", ye);
494
+ const w = d?.User || l("User", ye);
495
495
  class wt extends f {
496
496
  getByObjectId(e) {
497
497
  return this.update({ _id: e }, {});
498
498
  }
499
499
  getNextBirthdays() {
500
500
  const e = /* @__PURE__ */ new Date(), t = e.getFullYear();
501
- return b.aggregate([
501
+ return w.aggregate([
502
502
  {
503
503
  $match: {
504
504
  birthday: { $ne: null }
@@ -549,7 +549,7 @@ class wt extends f {
549
549
  ]);
550
550
  }
551
551
  getFactionRanking(e) {
552
- return b.aggregate([
552
+ return w.aggregate([
553
553
  { $match: { faction: e } },
554
554
  {
555
555
  $lookup: {
@@ -572,7 +572,7 @@ class wt extends f {
572
572
  ]);
573
573
  }
574
574
  getGlobalRanking() {
575
- return b.aggregate([
575
+ return w.aggregate([
576
576
  {
577
577
  $lookup: {
578
578
  from: "usermetas",
@@ -594,7 +594,7 @@ class wt extends f {
594
594
  ]);
595
595
  }
596
596
  getBerryRanking() {
597
- return b.aggregate([
597
+ return w.aggregate([
598
598
  {
599
599
  $lookup: {
600
600
  from: "usermetas",
@@ -616,10 +616,10 @@ class wt extends f {
616
616
  ]);
617
617
  }
618
618
  getQuestRanking() {
619
- return C.aggregate([
619
+ return R.aggregate([
620
620
  {
621
621
  $match: {
622
- status: q.COMPLETED
622
+ status: A.COMPLETED
623
623
  }
624
624
  },
625
625
  {
@@ -663,7 +663,7 @@ class wt extends f {
663
663
  }
664
664
  getTodayAllBirthday() {
665
665
  const e = /* @__PURE__ */ new Date();
666
- return b.aggregate([
666
+ return w.aggregate([
667
667
  { $match: { birthday: { $ne: null } } },
668
668
  {
669
669
  $addFields: {
@@ -710,14 +710,14 @@ class wt extends f {
710
710
  );
711
711
  }
712
712
  }
713
- const bt = (n, e) => b.find(n, {}, e).lean(), p = (n) => n.toObject({ flattenMaps: !0, flattenObjectIds: !1 }), $t = (n) => b.create({
713
+ const bt = (n, e) => w.find(n, {}, e).lean(), p = (n) => n.toObject({ flattenMaps: !0, flattenObjectIds: !1 }), $t = (n) => w.create({
714
714
  discordId: n
715
715
  });
716
716
  async function It(n, { upsert: e = !0, ...t }) {
717
- const r = await b.findOne({ discordId: n }, {}, t).lean();
717
+ const r = await w.findOne({ discordId: n }, {}, t).lean();
718
718
  return !r && e ? p(await $t(n)) : r;
719
719
  }
720
- const Ut = (n, e) => b.findOneAndUpdate(n, e, {
720
+ const Ut = (n, e) => w.findOneAndUpdate(n, e, {
721
721
  upsert: !0,
722
722
  returnDocument: "after"
723
723
  }).lean();
@@ -789,11 +789,11 @@ class Mt extends f {
789
789
  function xt(n, e) {
790
790
  return N.find(n, {}, e).lean();
791
791
  }
792
- async function qt(n) {
792
+ async function At(n) {
793
793
  const e = await N.findOne(n).lean();
794
794
  return e || null;
795
795
  }
796
- async function At(n, e, t) {
796
+ async function qt(n, e, t) {
797
797
  return N.findOneAndUpdate(n, e, {
798
798
  ...t,
799
799
  returnDocument: "after"
@@ -813,13 +813,13 @@ class kt extends Mt {
813
813
  return `${e.toString()}/${t}`;
814
814
  }
815
815
  fetchFromDb(e) {
816
- return qt(e);
816
+ return At(e);
817
817
  }
818
818
  fetchManyFromDb(e, t) {
819
819
  return xt(e, t);
820
820
  }
821
821
  updateInDb(e, t, r = { upsert: !1 }) {
822
- return At(e, t, r);
822
+ return qt(e, t, r);
823
823
  }
824
824
  }
825
825
  const Rt = new kt(), Ct = new c(
@@ -836,7 +836,7 @@ const Rt = new kt(), Ct = new c(
836
836
  halfBonus: c.Types.Mixed
837
837
  },
838
838
  { minimize: !1 }
839
- ), K = d?.Panoplies || l("Panoplies", Ct), _t = (n, e) => K.find(n, {}, e).lean(), Bt = async (n, e) => K.find(n, {}, e).populate("equipments");
839
+ ), K = d?.Panoplies || l("Panoplies", Ct), Bt = (n, e) => K.find(n, {}, e).lean(), _t = async (n, e) => K.find(n, {}, e).populate("equipments");
840
840
  async function Ft(n) {
841
841
  const e = await K.findOne({ panoplyId: n }).lean();
842
842
  return e || null;
@@ -844,7 +844,7 @@ async function Ft(n) {
844
844
  const Nt = async (n) => K.findOne(n).populate("equipments");
845
845
  class Kt extends f {
846
846
  getAllPopulated() {
847
- return Bt({}, {});
847
+ return _t({}, {});
848
848
  }
849
849
  getPopulated(e) {
850
850
  return Nt({ panoplyId: e });
@@ -889,10 +889,10 @@ class Pt extends Kt {
889
889
  return Ft(e);
890
890
  }
891
891
  fetchManyFromDb(e, t) {
892
- return _t(e, t);
892
+ return Bt(e, t);
893
893
  }
894
894
  }
895
- const R = new Pt(), jt = new c(
895
+ const _ = new Pt(), jt = new c(
896
896
  {
897
897
  type: {
898
898
  type: String,
@@ -930,9 +930,9 @@ const R = new Pt(), jt = new c(
930
930
  type: Object
931
931
  },
932
932
  panoply: String
933
- }), _ = d?.Entities || l("Entities", zt), Yt = _.discriminator("item", Lt);
934
- _.discriminator("equipment", Qt);
935
- const Gt = async (n, e) => _.find(n, {}, e).lean(), Wt = async (n, e) => Yt.find(n, {}, e).lean();
933
+ }), C = d?.Entities || l("Entities", zt), Yt = C.discriminator("item", Lt);
934
+ C.discriminator("equipment", Qt);
935
+ const Gt = async (n, e) => C.find(n, {}, e).lean(), Wt = async (n, e) => Yt.find(n, {}, e).lean();
936
936
  class Vt extends f {
937
937
  isEntity(e) {
938
938
  return !!e && "entityId" in e;
@@ -992,7 +992,7 @@ class Vt extends f {
992
992
  intelligence: 0,
993
993
  wisdom: 0
994
994
  };
995
- const r = await R.getAllPopulated();
995
+ const r = await _.getAllPopulated();
996
996
  for (const a of Ie) {
997
997
  const s = e[a];
998
998
  s && (t = Q(
@@ -1002,7 +1002,7 @@ class Vt extends f {
1002
1002
  ));
1003
1003
  }
1004
1004
  for (const a of r) {
1005
- const s = R.hasPanoply(e, a);
1005
+ const s = _.hasPanoply(e, a);
1006
1006
  s && !("target" in s) && (t = Q(
1007
1007
  t,
1008
1008
  s,
@@ -1055,14 +1055,14 @@ class Vt extends f {
1055
1055
  );
1056
1056
  }
1057
1057
  }
1058
- const Xt = async (n) => await _.create({
1058
+ const Xt = async (n) => await C.create({
1059
1059
  ...n
1060
1060
  });
1061
1061
  async function Jt(n) {
1062
- const e = await _.findOne({ entityId: n }).lean();
1062
+ const e = await C.findOne({ entityId: n }).lean();
1063
1063
  return e || null;
1064
1064
  }
1065
- const Zt = (n, e) => _.findOneAndUpdate(n, e, {
1065
+ const Zt = (n, e) => C.findOneAndUpdate(n, e, {
1066
1066
  returnDocument: "after"
1067
1067
  }).lean();
1068
1068
  class en extends Vt {
@@ -1088,7 +1088,7 @@ class en extends Vt {
1088
1088
  return e.entityId;
1089
1089
  }
1090
1090
  }
1091
- const m = new en();
1091
+ const U = new en();
1092
1092
  class tn extends y {
1093
1093
  hasAlreadyFoundEntity(e, t) {
1094
1094
  return e.encyclopedia.includes(t);
@@ -1142,7 +1142,7 @@ class un extends y {
1142
1142
  const a = e.equippedItems?.[r];
1143
1143
  if (!a)
1144
1144
  continue;
1145
- const s = await m.fromDBToEquipableEquipment(a);
1145
+ const s = await U.fromDBToEquipableEquipment(a);
1146
1146
  t = Q(
1147
1147
  t,
1148
1148
  s.characteristics,
@@ -1165,17 +1165,23 @@ class un extends y {
1165
1165
  return (await this.get(e)).itemList;
1166
1166
  }
1167
1167
  async calcMinStreakForWorkLoot(e) {
1168
- const t = await this.get(e), r = (await R.getPanoplyBonus(t.equippedItems)).find(
1168
+ const t = await this.get(e), r = (await _.getPanoplyBonus(t.equippedItems)).find(
1169
1169
  ([a, s]) => a.panoplyId === "marine" && s !== null
1170
1170
  );
1171
1171
  return r && r[1] === "full" ? 10 : r && r[1] === "half" ? 20 : 1 / 0;
1172
1172
  }
1173
1173
  async hasRevolutionaryBuff(e) {
1174
1174
  const t = await this.get(e);
1175
- return (await R.getPanoplyBonus(t.equippedItems)).find(
1175
+ return (await _.getPanoplyBonus(t.equippedItems)).find(
1176
1176
  ([a, s]) => a.panoplyId === "revolutionary" && s !== null
1177
1177
  )?.[1] ?? null;
1178
1178
  }
1179
+ async hasRecipe(e, t) {
1180
+ return (await this.get(e)).recipes.includes(t);
1181
+ }
1182
+ async getRecipes(e) {
1183
+ return (await this.get(e)).recipes;
1184
+ }
1179
1185
  /*
1180
1186
  ** UPDATES
1181
1187
  */
@@ -1240,7 +1246,7 @@ class un extends y {
1240
1246
  r?.equipmentSave[t] && await this.equip(e, r.equipmentSave[t]);
1241
1247
  }
1242
1248
  async equip(e, t) {
1243
- const r = await O.getMaxHp(e), a = Object.fromEntries(
1249
+ const r = await E.getMaxHp(e), a = Object.fromEntries(
1244
1250
  B(t).map(([s, i]) => [
1245
1251
  `equippedItems.${s}`,
1246
1252
  i
@@ -1248,33 +1254,26 @@ class un extends y {
1248
1254
  );
1249
1255
  await this.update(e, {
1250
1256
  $set: a
1251
- }), await O.updateHp(e, r);
1257
+ }), await E.updateHp(e, r);
1252
1258
  }
1253
1259
  async unequip(e, t) {
1254
- const r = await O.getMaxHp(e);
1260
+ const r = await E.getMaxHp(e);
1255
1261
  await this.update(e, {
1256
1262
  $set: {
1257
1263
  [`equippedItems.${t}`]: null
1258
1264
  }
1259
- }), await O.updateHp(e, r);
1265
+ }), await E.updateHp(e, r);
1260
1266
  }
1261
1267
  async craftItem(e, t, r, a) {
1262
1268
  for (const { entityId: u, size: o } of t.entities)
1263
- await this.removeItem(e, u, o * r);
1269
+ await this.removeItem(e, u, (o ?? 1) * r);
1264
1270
  const { entityId: s, size: i } = t.result;
1265
- await m.isEntityId(s, m.isEquipment) ? await this.addEquipments(e, [{ entityId: s, seed: a }]) : await m.isEntityId(s, m.isItem) && await this.addItem(e, s, i * r);
1266
- }
1267
- async dismantleEntity(e, t, r, a, s) {
1268
- m.isEquipment(t) ? await this.removeEquipment(e, t.entityId, s) : m.isItem(t) && await this.removeItem(e, t.entityId, a);
1269
- for (const { entityId: i, quantity: u } of r)
1270
- await m.isEntityId(i, m.isItem) && await this.addItem(e, i, a * u);
1271
- await this.removeItem(e, "tools", 1);
1272
- }
1273
- async enchantItem(e, t, r, a, s) {
1274
- await this.removeItem(e, t, s * 4), await this.removeItem(e, a, s), await this.addItem(e, r, s);
1271
+ await U.isEntityId(s, U.isEquipment) ? await this.addEquipments(e, [{ entityId: s, seed: a }]) : await U.isEntityId(s, U.isItem) && await this.addItem(e, s, (i ?? 1) * r);
1275
1272
  }
1276
1273
  async unlockRecipe(e, t) {
1277
- await this.update(e, { $addToSet: { recipes: t } });
1274
+ await this.hasRecipe(e, t) || await this.update(e, {
1275
+ $push: { recipes: t }
1276
+ });
1278
1277
  }
1279
1278
  }
1280
1279
  const cn = (n) => Z.create({
@@ -1305,7 +1304,7 @@ class ln extends un {
1305
1304
  return dn(e, t);
1306
1305
  }
1307
1306
  }
1308
- const E = new ln();
1307
+ const M = new ln();
1309
1308
  class pn extends f {
1310
1309
  async getTotalCharacteristics(e) {
1311
1310
  const { characteristics: t, scrolls: r } = await this.get(e);
@@ -1364,7 +1363,7 @@ class pn extends f {
1364
1363
  t.booster ? 0.25 : 0
1365
1364
  );
1366
1365
  return a + s + t.buffs.xp.global.reduce(
1367
- (i, { expireAt: u, startAt: o, multiplier: h }) => o && o > /* @__PURE__ */ new Date() || u && de(u) ? i : i + h,
1366
+ (i, { expireAt: u, startAt: o, multiplier: m }) => o && o > /* @__PURE__ */ new Date() || u && de(u) ? i : i + m,
1368
1367
  0
1369
1368
  );
1370
1369
  }
@@ -1386,12 +1385,12 @@ class pn extends f {
1386
1385
  }
1387
1386
  async calcBuffMultiplier(e, t, r) {
1388
1387
  return (await this.get(e)).buffs[t][r].reduce(
1389
- (i, { expireAt: u, startAt: o, multiplier: h }) => i + (/* @__PURE__ */ new Date() >= (o ?? /* @__PURE__ */ new Date()) && (!u || !de(u)) ? h : 0),
1388
+ (i, { expireAt: u, startAt: o, multiplier: m }) => i + (/* @__PURE__ */ new Date() >= (o ?? /* @__PURE__ */ new Date()) && (!u || !de(u)) ? m : 0),
1390
1389
  1
1391
1390
  );
1392
1391
  }
1393
1392
  async getMaxHp(e) {
1394
- const t = await E.get(e), { vitality: r } = await this.getTotalCharacteristics(e), a = await E.getUserEquipmentsCharacteristics(
1393
+ const t = await M.get(e), { vitality: r } = await this.getTotalCharacteristics(e), a = await M.getUserEquipmentsCharacteristics(
1395
1394
  t
1396
1395
  );
1397
1396
  return (r + a.vitality) * Ze + et;
@@ -1401,7 +1400,7 @@ class pn extends f {
1401
1400
  return Math.min(t.hp / r, 1);
1402
1401
  }
1403
1402
  async hasCharacteristicRequirement(e, t) {
1404
- const r = await E.get(e), a = await E.getUserEquipmentsCharacteristics(
1403
+ const r = await M.get(e), a = await M.getUserEquipmentsCharacteristics(
1405
1404
  r
1406
1405
  ), s = Q(
1407
1406
  await this.getTotalCharacteristics(e),
@@ -1578,15 +1577,15 @@ class pn extends f {
1578
1577
  });
1579
1578
  }
1580
1579
  async updatePanoplyBuff(e, t, r, a) {
1581
- const s = await m.fromDBToEquipableEquipment(t), i = L(Object.values(r)), o = (await R.getAllPopulated()).find(
1582
- (g) => g.panoplyId === s.panoply
1580
+ const s = await U.fromDBToEquipableEquipment(t), i = L(Object.values(r)), o = (await _.getAllPopulated()).find(
1581
+ (h) => h.panoplyId === s.panoply
1583
1582
  );
1584
1583
  if (!o)
1585
1584
  return;
1586
- const h = o.equipments.filter(
1587
- (g) => (i.find(($) => g.entityId === $.entityId) || !a && s.entityId === g.entityId) && (a ? s.entityId !== g.entityId : !0)
1588
- ).length, I = h === o.equipments.length ? o.fullBonus : h >= o.equipments.length / 2 ? o.halfBonus : void 0;
1589
- o.halfBonus && "target" in o.halfBonus && await this.removeBuff(e, o.halfBonus), o.fullBonus && "target" in o.fullBonus && await this.removeBuff(e, o.fullBonus), I && "target" in I && await this.updateBuff(e, I);
1585
+ const m = o.equipments.filter(
1586
+ (h) => (i.find((b) => h.entityId === b.entityId) || !a && s.entityId === h.entityId) && (a ? s.entityId !== h.entityId : !0)
1587
+ ).length, $ = m === o.equipments.length ? o.fullBonus : m >= o.equipments.length / 2 ? o.halfBonus : void 0;
1588
+ o.halfBonus && "target" in o.halfBonus && await this.removeBuff(e, o.halfBonus), o.fullBonus && "target" in o.fullBonus && await this.removeBuff(e, o.fullBonus), $ && "target" in $ && await this.updateBuff(e, $);
1590
1589
  }
1591
1590
  async gainHp(e, t) {
1592
1591
  const r = await this.get(e), s = await this.getMaxHp(e) - r.hp;
@@ -1691,14 +1690,14 @@ class pn extends f {
1691
1690
  return await this.addBerry(e, a), a;
1692
1691
  }
1693
1692
  }
1694
- const yn = (n) => v.find(n).lean(), fn = async (n) => await v.create({
1693
+ const yn = (n) => D.find(n).lean(), fn = async (n) => await D.create({
1695
1694
  user: n
1696
1695
  });
1697
1696
  async function mn(n) {
1698
- const e = await v.findOne({ user: n }).lean();
1697
+ const e = await D.findOne({ user: n }).lean();
1699
1698
  return e || p(await fn(n));
1700
1699
  }
1701
- const hn = (n, e) => v.findOneAndUpdate({ user: n }, e, {
1700
+ const hn = (n, e) => D.findOneAndUpdate({ user: n }, e, {
1702
1701
  returnDocument: "after",
1703
1702
  upsert: !0
1704
1703
  }).lean();
@@ -1722,7 +1721,7 @@ class gn extends pn {
1722
1721
  return hn(e, t);
1723
1722
  }
1724
1723
  }
1725
- const O = new gn();
1724
+ const E = new gn();
1726
1725
  class Sn extends f {
1727
1726
  async updateSendDailyQuest(e, t) {
1728
1727
  await this.update(e, { $set: { sendDailyQuest: t } });
@@ -1783,7 +1782,7 @@ class Tn extends y {
1783
1782
  $set: {
1784
1783
  lockUserCommand: new Date(Date.now() + 2 * 3600 * 1e3)
1785
1784
  }
1786
- }), await O.gainHp(e, 1);
1785
+ }), await E.gainHp(e, 1);
1787
1786
  }
1788
1787
  async useCommand(e, t, r) {
1789
1788
  const { reminder: a } = await Fe.get(e);
@@ -1920,8 +1919,8 @@ const xn = new c(
1920
1919
  strength: Number
1921
1920
  },
1922
1921
  { minimize: !1 }
1923
- ), fe = d?.Ornaments || l("Ornaments", xn), qn = async (n, e) => fe.find(n, {}, e).lean();
1924
- async function An(n) {
1922
+ ), fe = d?.Ornaments || l("Ornaments", xn), An = async (n, e) => fe.find(n, {}, e).lean();
1923
+ async function qn(n) {
1925
1924
  const e = await fe.findOne({ ornamentId: n }).lean();
1926
1925
  return e || null;
1927
1926
  }
@@ -1936,10 +1935,10 @@ class Rn extends Mn {
1936
1935
  return kn(e, t);
1937
1936
  }
1938
1937
  fetchFromDb(e) {
1939
- return An(e);
1938
+ return qn(e);
1940
1939
  }
1941
1940
  fetchManyFromDb(e, t) {
1942
- return qn(e, t);
1941
+ return An(e, t);
1943
1942
  }
1944
1943
  getKey(e) {
1945
1944
  return e.ornamentId;
@@ -1948,13 +1947,13 @@ class Rn extends Mn {
1948
1947
  return e;
1949
1948
  }
1950
1949
  }
1951
- const U = new Rn();
1950
+ const I = new Rn();
1952
1951
  class Cn extends y {
1953
1952
  async unlockTitle(e, t) {
1954
- await U.isOrnamentIds([t], U.isTitle) && await this.update(e, { $addToSet: { unlockedTitles: t } });
1953
+ await I.isOrnamentIds([t], I.isTitle) && await this.update(e, { $addToSet: { unlockedTitles: t } });
1955
1954
  }
1956
1955
  async unlockTitles(e, t) {
1957
- await U.isOrnamentIds(t, U.isTitle) && await this.update(e, {
1956
+ await I.isOrnamentIds(t, I.isTitle) && await this.update(e, {
1958
1957
  $addToSet: { unlockedTitles: { $each: t } }
1959
1958
  });
1960
1959
  }
@@ -1962,17 +1961,17 @@ class Cn extends y {
1962
1961
  await this.update(e, { $set: { selectedTitle: t } });
1963
1962
  }
1964
1963
  async unlockBackground(e, t) {
1965
- await U.isOrnamentIds(
1964
+ await I.isOrnamentIds(
1966
1965
  [t],
1967
- U.isBackground
1966
+ I.isBackground
1968
1967
  ) && await this.update(e, {
1969
1968
  $addToSet: { unlockedBackgrounds: t }
1970
1969
  });
1971
1970
  }
1972
1971
  async unlockBackgrounds(e, t) {
1973
- await U.isOrnamentIds(
1972
+ await I.isOrnamentIds(
1974
1973
  t,
1975
- U.isBackground
1974
+ I.isBackground
1976
1975
  ) && await this.update(e, {
1977
1976
  $addToSet: { unlockedBackgrounds: { $each: t } }
1978
1977
  });
@@ -2018,12 +2017,12 @@ class Cn extends y {
2018
2017
  });
2019
2018
  }
2020
2019
  }
2021
- const _n = async (n) => await ee.create({
2020
+ const Bn = async (n) => await ee.create({
2022
2021
  user: n
2023
2022
  });
2024
- async function Bn(n) {
2023
+ async function _n(n) {
2025
2024
  const e = await ee.findOne({ user: n }).lean();
2026
- return e || p(await _n(n));
2025
+ return e || p(await Bn(n));
2027
2026
  }
2028
2027
  const Fn = async (n, e) => ee.findOneAndUpdate({ user: n }, e, {
2029
2028
  upsert: !0,
@@ -2040,7 +2039,7 @@ class Nn extends Cn {
2040
2039
  return e;
2041
2040
  }
2042
2041
  fetchFromDb(e) {
2043
- return Bn(e);
2042
+ return _n(e);
2044
2043
  }
2045
2044
  updateInDb(e, t) {
2046
2045
  return Fn(e, t);
@@ -2063,7 +2062,7 @@ class Kn extends f {
2063
2062
  return await this.isStreaking(e, t) ? 1 + Math.min(2, (r.streak ?? 0) / 10) : 1;
2064
2063
  }
2065
2064
  async getCompletedCount(e) {
2066
- return (await this.getMany({ user: e, status: q.COMPLETED })).length;
2065
+ return (await this.getMany({ user: e, status: A.COMPLETED })).length;
2067
2066
  }
2068
2067
  async completeQuest(e, t = !1) {
2069
2068
  const r = Y();
@@ -2089,7 +2088,7 @@ class Kn extends f {
2089
2088
  }
2090
2089
  } : {},
2091
2090
  lastCompletionDate: /* @__PURE__ */ new Date(),
2092
- status: q.COMPLETED
2091
+ status: A.COMPLETED
2093
2092
  }
2094
2093
  }
2095
2094
  ],
@@ -2098,17 +2097,17 @@ class Kn extends f {
2098
2097
  }
2099
2098
  }
2100
2099
  function Hn(n) {
2101
- return C.find(n).lean();
2100
+ return R.find(n).lean();
2102
2101
  }
2103
- const Pn = async (n) => await C.create({
2102
+ const Pn = async (n) => await R.create({
2104
2103
  ...n
2105
2104
  });
2106
2105
  async function jn(n) {
2107
- const e = await C.findOne(n).lean();
2106
+ const e = await R.findOne(n).lean();
2108
2107
  return e || p(await Pn(n));
2109
2108
  }
2110
2109
  function zn(n, e, t) {
2111
- return C.findOneAndUpdate(n, e, {
2110
+ return R.findOneAndUpdate(n, e, {
2112
2111
  upsert: !0,
2113
2112
  ...t,
2114
2113
  returnDocument: "after"
@@ -2189,9 +2188,9 @@ class Vn extends Qn {
2189
2188
  const $e = new Vn();
2190
2189
  class Xn extends y {
2191
2190
  async updateDailyReport(e) {
2192
- const t = await O.get(e), r = await we.get(e), a = await be.getMany({
2191
+ const t = await E.get(e), r = await we.get(e), a = await be.getMany({
2193
2192
  user: e,
2194
- status: q.COMPLETED
2193
+ status: A.COMPLETED
2195
2194
  }), s = await $e.get(e);
2196
2195
  await this.update(e, {
2197
2196
  $set: {
@@ -2214,14 +2213,14 @@ class Xn extends y {
2214
2213
  xpYesterday: a,
2215
2214
  berryYesterday: s,
2216
2215
  previousMessageSent: i
2217
- } = await this.get(e), u = await O.get(e), o = await be.getMany({
2216
+ } = await this.get(e), u = await E.get(e), o = await be.getMany({
2218
2217
  user: e,
2219
- status: q.COMPLETED
2220
- }), h = await we.get(e), I = await $e.get(e), { berry: g, xp: $ } = u, { voice: he, amount: He } = $, { unlockedBadges: Pe, unlockedBackgrounds: je, unlockedTitles: ze } = h;
2218
+ status: A.COMPLETED
2219
+ }), m = await we.get(e), $ = await $e.get(e), { berry: h, xp: b } = u, { voice: he, amount: He } = b, { unlockedBadges: Pe, unlockedBackgrounds: je, unlockedTitles: ze } = m;
2221
2220
  return {
2222
- berry: g - s,
2221
+ berry: h - s,
2223
2222
  xp: He - a,
2224
- message: I.messageSent - i,
2223
+ message: $.messageSent - i,
2225
2224
  voice: Oe(he.lastConnection, Y()) ? he.minutesInVoiceToday : 0,
2226
2225
  quest: P(
2227
2226
  o.map(({ questId: Le }) => Le),
@@ -2350,7 +2349,7 @@ const Ga = new ir(), ur = new c({
2350
2349
  }), x = d?.UserRank || l("UserRank", ur);
2351
2350
  class cr extends y {
2352
2351
  async computeAllXpRanks() {
2353
- const t = (await v.aggregate([
2352
+ const t = (await D.aggregate([
2354
2353
  {
2355
2354
  $setWindowFields: {
2356
2355
  sortBy: { "xp.amount": -1 },
@@ -2368,7 +2367,7 @@ class cr extends y {
2368
2367
  t.length > 0 && await x.bulkWrite(t), this.clearAll();
2369
2368
  }
2370
2369
  async computeAllBerryRanks() {
2371
- const t = (await v.aggregate([
2370
+ const t = (await D.aggregate([
2372
2371
  {
2373
2372
  $setWindowFields: {
2374
2373
  sortBy: { berry: -1 },
@@ -2386,7 +2385,7 @@ class cr extends y {
2386
2385
  t.length > 0 && await x.bulkWrite(t), this.clearAll();
2387
2386
  }
2388
2387
  async computeAllFactionRanks() {
2389
- const t = (await b.aggregate([
2388
+ const t = (await w.aggregate([
2390
2389
  {
2391
2390
  $lookup: {
2392
2391
  from: "usermetas",
@@ -2632,18 +2631,18 @@ const H = d?.UserStory || l("UserStory", Ke), Er = async (n, e, t, r, a) => awai
2632
2631
  continue;
2633
2632
  }
2634
2633
  if (o.actionType === "button") {
2635
- const I = e.find(
2636
- ($) => $.chapterId === t && $.sceneId === r && $.stepId === u
2634
+ const $ = e.find(
2635
+ (b) => b.chapterId === t && b.sceneId === r && b.stepId === u
2637
2636
  );
2638
- if (!I) {
2637
+ if (!$) {
2639
2638
  s.push({ step: o });
2640
2639
  break;
2641
2640
  }
2642
- const g = o.payload.find(
2643
- ($) => $.actionId === I.value
2641
+ const h = o.payload.find(
2642
+ (b) => b.actionId === $.value
2644
2643
  );
2645
- if (!g || (s.push({ step: o, selectedAction: g }), u === a)) break;
2646
- u = g.next;
2644
+ if (!h || (s.push({ step: o, selectedAction: h }), u === a)) break;
2645
+ u = h.next;
2647
2646
  continue;
2648
2647
  }
2649
2648
  if (s.push({ step: o }), u === a) break;
@@ -2667,13 +2666,13 @@ class Mr extends f {
2667
2666
  if (!u) return null;
2668
2667
  const o = u.scenes[a];
2669
2668
  if (!o) return null;
2670
- const h = s.status === "in_progress" && s.currentChapterId === r && s.currentSceneId === a;
2669
+ const m = s.status === "in_progress" && s.currentChapterId === r && s.currentSceneId === a;
2671
2670
  return vr(
2672
2671
  o,
2673
2672
  s.choices,
2674
2673
  r,
2675
2674
  a,
2676
- h ? s.currentStepId : void 0
2675
+ m ? s.currentStepId : void 0
2677
2676
  );
2678
2677
  }
2679
2678
  async start(e, t) {
@@ -2800,7 +2799,7 @@ class Mr extends f {
2800
2799
  );
2801
2800
  }
2802
2801
  }
2803
- const xr = (n, e = {}) => H.find(n, null, e).lean(), qr = (n, e) => H.findOne({ user: n, storyId: e }).lean(), Ar = (n, e) => H.findOneAndUpdate(n, e, {
2802
+ const xr = (n, e = {}) => H.find(n, null, e).lean(), Ar = (n, e) => H.findOne({ user: n, storyId: e }).lean(), qr = (n, e) => H.findOneAndUpdate(n, e, {
2804
2803
  returnDocument: "after"
2805
2804
  }).lean();
2806
2805
  class kr extends Mr {
@@ -2814,13 +2813,13 @@ class kr extends Mr {
2814
2813
  return { user: e.user, storyId: e.storyId };
2815
2814
  }
2816
2815
  fetchFromDb(e) {
2817
- return qr(e.user, e.storyId);
2816
+ return Ar(e.user, e.storyId);
2818
2817
  }
2819
2818
  fetchManyFromDb(e, t) {
2820
2819
  return xr(e, t);
2821
2820
  }
2822
2821
  updateInDb(e, t) {
2823
- return Ar(e, t);
2822
+ return qr(e, t);
2824
2823
  }
2825
2824
  }
2826
2825
  const Va = new kr();
@@ -2851,7 +2850,7 @@ class Rr extends y {
2851
2850
  const t = Y();
2852
2851
  t.setHours(0, 0, 0, 0);
2853
2852
  const r = /* @__PURE__ */ new Date();
2854
- r.setHours(0, 0, 0, 0), await A.updateOne(
2853
+ r.setHours(0, 0, 0, 0), await q.updateOne(
2855
2854
  {
2856
2855
  user: e,
2857
2856
  "bet666.last": {
@@ -2860,7 +2859,7 @@ class Rr extends y {
2860
2859
  }
2861
2860
  },
2862
2861
  { $inc: { "bet666.count": 1 }, $set: { "bet666.last": /* @__PURE__ */ new Date() } }
2863
- ), await A.updateOne(
2862
+ ), await q.updateOne(
2864
2863
  {
2865
2864
  user: e,
2866
2865
  "bet666.last": {
@@ -2903,14 +2902,14 @@ class Rr extends y {
2903
2902
  await this.update(e, { $inc: { "dice.drawWithDoubleSixCount": 1 } });
2904
2903
  }
2905
2904
  }
2906
- const Cr = async (n) => await A.create({
2905
+ const Cr = async (n) => await q.create({
2907
2906
  user: n
2908
2907
  });
2909
- async function _r(n) {
2910
- const e = await A.findOne({ user: n }).lean();
2908
+ async function Br(n) {
2909
+ const e = await q.findOne({ user: n }).lean();
2911
2910
  return e || p(await Cr(n));
2912
2911
  }
2913
- const Br = (n, e) => A.findOneAndUpdate({ user: n }, e, {
2912
+ const _r = (n, e) => q.findOneAndUpdate({ user: n }, e, {
2914
2913
  upsert: !0,
2915
2914
  returnDocument: "after"
2916
2915
  }).lean();
@@ -2925,10 +2924,10 @@ class Fr extends Rr {
2925
2924
  return e;
2926
2925
  }
2927
2926
  fetchFromDb(e) {
2928
- return _r(e);
2927
+ return Br(e);
2929
2928
  }
2930
2929
  updateInDb(e, t) {
2931
- return Br(e, t);
2930
+ return _r(e, t);
2932
2931
  }
2933
2932
  }
2934
2933
  const Xa = new Fr();
@@ -3036,7 +3035,7 @@ const Za = new Gr();
3036
3035
  class Wr extends y {
3037
3036
  async readEdito(e) {
3038
3037
  const t = /* @__PURE__ */ new Date();
3039
- t.setHours(0, 0, 0, 0), await D.updateOne(
3038
+ t.setHours(0, 0, 0, 0), await O.updateOne(
3040
3039
  {
3041
3040
  user: e,
3042
3041
  "edito.lastTimeRead": {
@@ -3047,7 +3046,7 @@ class Wr extends y {
3047
3046
  $inc: { "edito.readToday": 1 },
3048
3047
  $set: { "edito.lastTimeRead": /* @__PURE__ */ new Date() }
3049
3048
  }
3050
- ), await D.updateOne(
3049
+ ), await O.updateOne(
3051
3050
  {
3052
3051
  user: e,
3053
3052
  "edito.lastTimeRead": {
@@ -3061,7 +3060,7 @@ class Wr extends y {
3061
3060
  }
3062
3061
  async getTotalEditoReadToday() {
3063
3062
  const e = /* @__PURE__ */ new Date();
3064
- return e.setHours(0, 0, 0, 0), (await D.aggregate([
3063
+ return e.setHours(0, 0, 0, 0), (await O.aggregate([
3065
3064
  {
3066
3065
  $match: {
3067
3066
  "edito.lastTimeRead": { $gte: e },
@@ -3072,14 +3071,14 @@ class Wr extends y {
3072
3071
  ]))[0]?.total ?? 0;
3073
3072
  }
3074
3073
  }
3075
- const Vr = async (n) => await D.create({
3074
+ const Vr = async (n) => await O.create({
3076
3075
  user: n
3077
3076
  });
3078
3077
  async function Xr(n) {
3079
- const e = await D.findOne({ user: n }).lean();
3078
+ const e = await O.findOne({ user: n }).lean();
3080
3079
  return e || p(await Vr(n));
3081
3080
  }
3082
- const Jr = (n, e) => D.findOneAndUpdate({ user: n }, e, {
3081
+ const Jr = (n, e) => O.findOneAndUpdate({ user: n }, e, {
3083
3082
  upsert: !0,
3084
3083
  returnDocument: "after"
3085
3084
  }).lean();
@@ -3103,8 +3102,8 @@ class Zr extends Wr {
3103
3102
  const es = new Zr();
3104
3103
  class ea extends y {
3105
3104
  async updateCraftStats(e, t, r) {
3106
- const a = await m.get(r);
3107
- !a || !m.isItem(a) || await this.update(e, {
3105
+ const a = await U.get(r);
3106
+ !a || !U.isItem(a) || await this.update(e, {
3108
3107
  $inc: {
3109
3108
  "crafts.totalCrafted": t
3110
3109
  }
@@ -3190,59 +3189,48 @@ class aa extends ea {
3190
3189
  const ts = new aa();
3191
3190
  class sa extends f {
3192
3191
  async maxCraftQuantity(e, t) {
3193
- const r = await E.get(e);
3192
+ const r = await M.get(e);
3194
3193
  let a = 1 / 0;
3195
3194
  for (const s of t)
3196
3195
  a = Math.min(
3197
3196
  a,
3198
3197
  Math.floor(
3199
- (r.itemList[s.entityId] ?? 0) / s.size
3198
+ (r.itemList[s.entityId] ?? 0) / (s.size ?? 1)
3200
3199
  )
3201
3200
  );
3202
3201
  return a;
3203
3202
  }
3204
3203
  async hasEnoughItemsForRecipe(e, t, r) {
3205
- const a = await E.get(e);
3204
+ const a = await M.get(e);
3206
3205
  for (const s of t.entities)
3207
- if ((a.itemList[s.entityId] ?? 0) < s.size * r)
3206
+ if ((a.itemList[s.entityId] ?? 0) < (s.size ?? 1) * r)
3208
3207
  return !1;
3209
3208
  return !0;
3210
3209
  }
3211
- decodeCraftId(e) {
3212
- return e.split(";").map((t, r) => ({
3213
- entityId: t === "null" ? null : t,
3214
- index: r
3215
- }));
3216
- }
3217
- encodeCraftId(e) {
3218
- return e.map(({ entityId: t }) => `${t}`).join(";");
3219
- }
3220
3210
  async isValidRecipe(e) {
3221
- return !!(await this.getAll()).find((r) => r.craftId === e);
3211
+ return !!(await this.getAll()).find((r) => r.recipeId === e);
3222
3212
  }
3223
3213
  async getRecipeResult(e, t) {
3224
- const r = await E.get(e), a = (await R.getPanoplyBonus(r.equippedItems)).find(
3225
- ([s, i]) => s.panoplyId === "little_blacksmith" && i !== null
3226
- );
3227
- return a?.[1] === "full" && t === "chest_3" ? "chest_blacksmith_3" : a?.[1] === "half" && t === "chest_2" ? "chest_blacksmith_2" : a?.[1] === "half" && t === "chest_1" ? "chest_blacksmith_1" : t;
3214
+ return t;
3228
3215
  }
3229
3216
  }
3230
3217
  const ia = new c(
3231
3218
  {
3232
3219
  entityId: { type: String, required: !0 },
3233
- size: { type: Number, required: !0 }
3220
+ size: { type: Number, default: 1 }
3234
3221
  },
3235
3222
  { _id: !1 }
3236
3223
  ), ua = new c(
3237
3224
  {
3238
3225
  entityId: { type: String, required: !0 },
3239
- size: { type: Number, required: !0 }
3226
+ size: { type: Number }
3240
3227
  },
3241
3228
  { _id: !1 }
3242
3229
  ), ca = new c(
3243
3230
  {
3244
- craftId: { type: String, unique: !0, required: !0 },
3245
- name: { type: String, required: !0 },
3231
+ recipeId: { type: String, unique: !0, required: !0 },
3232
+ rankId: String,
3233
+ type: { type: String, required: !0 },
3246
3234
  entities: { type: [ia], required: !0 },
3247
3235
  result: { type: ua, required: !0 }
3248
3236
  },
@@ -3251,7 +3239,7 @@ const ia = new c(
3251
3239
  ...n
3252
3240
  }), da = async (n, e) => se.find(n, {}, e).lean();
3253
3241
  async function la(n) {
3254
- const e = await se.findOne({ craftId: n }).lean();
3242
+ const e = await se.findOne({ recipeId: n }).lean();
3255
3243
  return e || null;
3256
3244
  }
3257
3245
  const pa = (n, e) => se.findOneAndUpdate(n, e, {
@@ -3277,7 +3265,7 @@ class ya extends sa {
3277
3265
  return e;
3278
3266
  }
3279
3267
  getKey(e) {
3280
- return e.craftId;
3268
+ return e.recipeId;
3281
3269
  }
3282
3270
  }
3283
3271
  const ns = new ya(), fa = new c({
@@ -3492,10 +3480,10 @@ const Ma = new c({
3492
3480
  }
3493
3481
  }), me = d?.Settings || l("Settings", Ma), xa = (n) => me.create({
3494
3482
  guildId: n
3495
- }), qa = async (n) => {
3483
+ }), Aa = async (n) => {
3496
3484
  const e = await me.findOne({ guildId: n }).lean();
3497
3485
  return e || p(await xa(n));
3498
- }, Aa = (n, e) => me.findOneAndUpdate(n, e, {
3486
+ }, qa = (n, e) => me.findOneAndUpdate(n, e, {
3499
3487
  upsert: !0,
3500
3488
  returnDocument: "after"
3501
3489
  }).lean();
@@ -3510,10 +3498,10 @@ class ka extends va {
3510
3498
  return e;
3511
3499
  }
3512
3500
  fetchFromDb(e) {
3513
- return qa(e);
3501
+ return Aa(e);
3514
3502
  }
3515
3503
  updateInDb(e, t) {
3516
- return Aa(e, t);
3504
+ return qa(e, t);
3517
3505
  }
3518
3506
  }
3519
3507
  const ss = new ka(), Ra = new c({
@@ -3521,9 +3509,9 @@ const ss = new ka(), Ra = new c({
3521
3509
  authorId: String,
3522
3510
  date: { type: Date, default: Date.now() },
3523
3511
  reason: { type: String, default: null }
3524
- }), ce = d?.Warn || l("Warn", Ra), Ca = (n) => ce.countDocuments(n), _a = (n) => ce.create({
3512
+ }), ce = d?.Warn || l("Warn", Ra), Ca = (n) => ce.countDocuments(n), Ba = (n) => ce.create({
3525
3513
  ...n
3526
- }), Ba = (n) => ce.findByIdAndDelete(n).lean();
3514
+ }), _a = (n) => ce.findByIdAndDelete(n).lean();
3527
3515
  class Fa extends f {
3528
3516
  getUserWarns(e) {
3529
3517
  return this.getMany({ warnedUserId: e });
@@ -3532,10 +3520,10 @@ class Fa extends f {
3532
3520
  return Ca({ warnedUserId: e });
3533
3521
  }
3534
3522
  async createWarn(e) {
3535
- await _a(e);
3523
+ await Ba(e);
3536
3524
  }
3537
3525
  async deleteWarn(e) {
3538
- const t = await Ba(e);
3526
+ const t = await _a(e);
3539
3527
  return t && this.invalidate(this.getKey(t)), t;
3540
3528
  }
3541
3529
  }
@@ -3567,14 +3555,14 @@ class cs extends Ye.ObjectId {
3567
3555
  }
3568
3556
  export {
3569
3557
  cs as ObjectId,
3570
- w as QUEST_MIDDLEWARE_EVENT_NAME,
3558
+ S as QUEST_MIDDLEWARE_EVENT_NAME,
3571
3559
  rs as banService,
3572
3560
  us as connectToServices,
3573
- S as emitQuestMiddlewareEvent,
3574
- m as entityService,
3561
+ g as emitQuestMiddlewareEvent,
3562
+ U as entityService,
3575
3563
  as as invitationService,
3576
- U as ornamentService,
3577
- R as panoplyService,
3564
+ I as ornamentService,
3565
+ _ as panoplyService,
3578
3566
  ns as recipeService,
3579
3567
  La as registerQuestMiddlewareEvents,
3580
3568
  Rt as reminderService,
@@ -3584,8 +3572,8 @@ export {
3584
3572
  Ya as userDailyReportService,
3585
3573
  le as userEncyclopediaService,
3586
3574
  Ga as userGamesService,
3587
- E as userInventoryService,
3588
- O as userMetaService,
3575
+ M as userInventoryService,
3576
+ E as userMetaService,
3589
3577
  we as userOrnamentService,
3590
3578
  be as userQuestService,
3591
3579
  Wa as userRankService,