@opfr/quests 1.1.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/assets/berry.webp +0 -0
- package/assets/success_COMMON.webp +0 -0
- package/assets/success_EPIC.webp +0 -0
- package/assets/success_LEGENDARY.webp +0 -0
- package/assets/success_MYTHIC.webp +0 -0
- package/assets/success_RARE.webp +0 -0
- package/assets/xp.webp +0 -0
- package/dist/canvas.d.ts +9 -0
- package/dist/canvas.d.ts.map +1 -0
- package/dist/canvas.js +102 -0
- package/dist/canvas.js.map +1 -0
- package/dist/class/crewBaseQuest.d.ts +14 -0
- package/dist/class/crewBaseQuest.d.ts.map +1 -0
- package/dist/class/crewBaseQuest.js +70 -0
- package/dist/class/crewBaseQuest.js.map +1 -0
- package/dist/class/userBaseQuest.d.ts +20 -0
- package/dist/class/userBaseQuest.d.ts.map +1 -0
- package/dist/class/userBaseQuest.js +100 -0
- package/dist/class/userBaseQuest.js.map +1 -0
- package/dist/constants.d.ts +5 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +13 -0
- package/dist/constants.js.map +1 -0
- package/dist/events/callbacks.d.ts +4 -0
- package/dist/events/callbacks.d.ts.map +1 -0
- package/dist/events/callbacks.js +53 -0
- package/dist/events/callbacks.js.map +1 -0
- package/dist/events/event.d.ts +7 -0
- package/dist/events/event.d.ts.map +1 -0
- package/dist/events/event.js +12 -0
- package/dist/events/event.js.map +1 -0
- package/dist/events/index.d.ts +3 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +10 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/types.d.ts +5 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +2 -0
- package/dist/events/types.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.es.js +5189 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/index.umd.js +4 -0
- package/dist/quests/alcohols.d.ts +224 -0
- package/dist/quests/alcohols.d.ts.map +1 -0
- package/dist/quests/alcohols.js +325 -0
- package/dist/quests/alcohols.js.map +1 -0
- package/dist/quests/background.d.ts +34 -0
- package/dist/quests/background.d.ts.map +1 -0
- package/dist/quests/background.js +45 -0
- package/dist/quests/background.js.map +1 -0
- package/dist/quests/berry.d.ts +60 -0
- package/dist/quests/berry.d.ts.map +1 -0
- package/dist/quests/berry.js +75 -0
- package/dist/quests/berry.js.map +1 -0
- package/dist/quests/bet.d.ts +84 -0
- package/dist/quests/bet.d.ts.map +1 -0
- package/dist/quests/bet.js +109 -0
- package/dist/quests/bet.js.map +1 -0
- package/dist/quests/birthday.d.ts +14 -0
- package/dist/quests/birthday.d.ts.map +1 -0
- package/dist/quests/birthday.js +17 -0
- package/dist/quests/birthday.js.map +1 -0
- package/dist/quests/botPing.d.ts +17 -0
- package/dist/quests/botPing.d.ts.map +1 -0
- package/dist/quests/botPing.js +20 -0
- package/dist/quests/botPing.js.map +1 -0
- package/dist/quests/characteristics.d.ts +310 -0
- package/dist/quests/characteristics.d.ts.map +1 -0
- package/dist/quests/characteristics.js +400 -0
- package/dist/quests/characteristics.js.map +1 -0
- package/dist/quests/craft.d.ts +170 -0
- package/dist/quests/craft.d.ts.map +1 -0
- package/dist/quests/craft.js +245 -0
- package/dist/quests/craft.js.map +1 -0
- package/dist/quests/crewCarpenter.d.ts +70 -0
- package/dist/quests/crewCarpenter.d.ts.map +1 -0
- package/dist/quests/crewCarpenter.js +95 -0
- package/dist/quests/crewCarpenter.js.map +1 -0
- package/dist/quests/crewDaily.d.ts +27 -0
- package/dist/quests/crewDaily.d.ts.map +1 -0
- package/dist/quests/crewDaily.js +39 -0
- package/dist/quests/crewDaily.js.map +1 -0
- package/dist/quests/crewDisintegration.d.ts +16 -0
- package/dist/quests/crewDisintegration.d.ts.map +1 -0
- package/dist/quests/crewDisintegration.js +19 -0
- package/dist/quests/crewDisintegration.js.map +1 -0
- package/dist/quests/crewLevel.d.ts +65 -0
- package/dist/quests/crewLevel.d.ts.map +1 -0
- package/dist/quests/crewLevel.js +80 -0
- package/dist/quests/crewLevel.js.map +1 -0
- package/dist/quests/crewMoney.d.ts +65 -0
- package/dist/quests/crewMoney.d.ts.map +1 -0
- package/dist/quests/crewMoney.js +80 -0
- package/dist/quests/crewMoney.js.map +1 -0
- package/dist/quests/crewSize.d.ts +65 -0
- package/dist/quests/crewSize.d.ts.map +1 -0
- package/dist/quests/crewSize.js +80 -0
- package/dist/quests/crewSize.js.map +1 -0
- package/dist/quests/crewVocal.d.ts +65 -0
- package/dist/quests/crewVocal.d.ts.map +1 -0
- package/dist/quests/crewVocal.js +90 -0
- package/dist/quests/crewVocal.js.map +1 -0
- package/dist/quests/draw.d.ts +55 -0
- package/dist/quests/draw.d.ts.map +1 -0
- package/dist/quests/draw.js +80 -0
- package/dist/quests/draw.js.map +1 -0
- package/dist/quests/edito.d.ts +17 -0
- package/dist/quests/edito.d.ts.map +1 -0
- package/dist/quests/edito.js +22 -0
- package/dist/quests/edito.js.map +1 -0
- package/dist/quests/everyone.d.ts +15 -0
- package/dist/quests/everyone.d.ts.map +1 -0
- package/dist/quests/everyone.js +18 -0
- package/dist/quests/everyone.js.map +1 -0
- package/dist/quests/games.d.ts +135 -0
- package/dist/quests/games.d.ts.map +1 -0
- package/dist/quests/games.js +220 -0
- package/dist/quests/games.js.map +1 -0
- package/dist/quests/index.d.ts +6 -0
- package/dist/quests/index.d.ts.map +1 -0
- package/dist/quests/index.js +14 -0
- package/dist/quests/index.js.map +1 -0
- package/dist/quests/items.d.ts +117 -0
- package/dist/quests/items.d.ts.map +1 -0
- package/dist/quests/items.js +172 -0
- package/dist/quests/items.js.map +1 -0
- package/dist/quests/joinCrew.d.ts +12 -0
- package/dist/quests/joinCrew.d.ts.map +1 -0
- package/dist/quests/joinCrew.js +15 -0
- package/dist/quests/joinCrew.js.map +1 -0
- package/dist/quests/level.d.ts +114 -0
- package/dist/quests/level.d.ts.map +1 -0
- package/dist/quests/level.js +145 -0
- package/dist/quests/level.js.map +1 -0
- package/dist/quests/premium.d.ts +16 -0
- package/dist/quests/premium.d.ts.map +1 -0
- package/dist/quests/premium.js +19 -0
- package/dist/quests/premium.js.map +1 -0
- package/dist/quests/raid.d.ts +55 -0
- package/dist/quests/raid.d.ts.map +1 -0
- package/dist/quests/raid.js +80 -0
- package/dist/quests/raid.js.map +1 -0
- package/dist/quests/randomMessage.d.ts +55 -0
- package/dist/quests/randomMessage.d.ts.map +1 -0
- package/dist/quests/randomMessage.js +80 -0
- package/dist/quests/randomMessage.js.map +1 -0
- package/dist/quests/recipe.d.ts +60 -0
- package/dist/quests/recipe.d.ts.map +1 -0
- package/dist/quests/recipe.js +86 -0
- package/dist/quests/recipe.js.map +1 -0
- package/dist/quests/report.d.ts +15 -0
- package/dist/quests/report.d.ts.map +1 -0
- package/dist/quests/report.js +20 -0
- package/dist/quests/report.js.map +1 -0
- package/dist/quests/sendMessage.d.ts +60 -0
- package/dist/quests/sendMessage.d.ts.map +1 -0
- package/dist/quests/sendMessage.js +85 -0
- package/dist/quests/sendMessage.js.map +1 -0
- package/dist/quests/shop.d.ts +61 -0
- package/dist/quests/shop.d.ts.map +1 -0
- package/dist/quests/shop.js +86 -0
- package/dist/quests/shop.js.map +1 -0
- package/dist/quests/timeInVoice.d.ts +60 -0
- package/dist/quests/timeInVoice.d.ts.map +1 -0
- package/dist/quests/timeInVoice.js +85 -0
- package/dist/quests/timeInVoice.js.map +1 -0
- package/dist/quests/title.d.ts +34 -0
- package/dist/quests/title.d.ts.map +1 -0
- package/dist/quests/title.js +43 -0
- package/dist/quests/title.js.map +1 -0
- package/dist/quests/tournament.d.ts +234 -0
- package/dist/quests/tournament.d.ts.map +1 -0
- package/dist/quests/tournament.js +277 -0
- package/dist/quests/tournament.js.map +1 -0
- package/dist/quests/userCrew.d.ts +30 -0
- package/dist/quests/userCrew.d.ts.map +1 -0
- package/dist/quests/userCrew.js +36 -0
- package/dist/quests/userCrew.js.map +1 -0
- package/dist/quests/userDaily.d.ts +78 -0
- package/dist/quests/userDaily.d.ts.map +1 -0
- package/dist/quests/userDaily.js +113 -0
- package/dist/quests/userDaily.js.map +1 -0
- package/dist/quests/userXpToCrew.d.ts +60 -0
- package/dist/quests/userXpToCrew.d.ts.map +1 -0
- package/dist/quests/userXpToCrew.js +75 -0
- package/dist/quests/userXpToCrew.js.map +1 -0
- package/dist/quests/work.d.ts +55 -0
- package/dist/quests/work.d.ts.map +1 -0
- package/dist/quests/work.js +80 -0
- package/dist/quests/work.js.map +1 -0
- package/dist/quests/writeDifferentChat.d.ts +60 -0
- package/dist/quests/writeDifferentChat.d.ts.map +1 -0
- package/dist/quests/writeDifferentChat.js +85 -0
- package/dist/quests/writeDifferentChat.js.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +11 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +70 -0
- package/dist/utils.js.map +1 -0
- package/package.json +45 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/assets/xp.webp
ADDED
|
Binary file
|
package/dist/canvas.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CanvasInstance } from '@opfr/canvas';
|
|
2
|
+
import type { ObjectId } from '@opfr/services';
|
|
3
|
+
import type { CrewBaseQuest } from './class/crewBaseQuest';
|
|
4
|
+
import type { UserBaseQuest } from './class/userBaseQuest';
|
|
5
|
+
export declare const questCanvas: <T extends CrewBaseQuest | UserBaseQuest>(quest: T, userId: ObjectId, canvas: CanvasInstance<string, string>, { berry, xp }: {
|
|
6
|
+
berry: number;
|
|
7
|
+
xp: number;
|
|
8
|
+
}) => Promise<Buffer<ArrayBufferLike>>;
|
|
9
|
+
//# sourceMappingURL=canvas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../src/canvas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,eAAO,MAAM,WAAW,GAAU,CAAC,SAAS,aAAa,GAAG,aAAa,EACvE,OAAO,CAAC,EACR,QAAQ,QAAQ,EAChB,QAAQ,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,eAAe;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,qCAwJ7C,CAAC"}
|
package/dist/canvas.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { CanvasOrigin, nextAllToXAxis } from '@opfr/canvas';
|
|
2
|
+
import { RANKS, progressiveBadgeTypeGuard } from '@opfr/definitions';
|
|
3
|
+
import { ornamentService, userQuestService, userService } from '@opfr/services';
|
|
4
|
+
import { formatNumber } from '@opfr/utils-lang';
|
|
5
|
+
import { getFactionTitle } from './utils';
|
|
6
|
+
export const questCanvas = async (quest, userId, canvas, { berry, xp }) => {
|
|
7
|
+
const user = await userService.getByObjectId(userId);
|
|
8
|
+
const multiplier = await userQuestService.getStreakMultiplier(userId, quest.id);
|
|
9
|
+
const factionTitle = await getFactionTitle(userId, user.faction);
|
|
10
|
+
const { badge, isFactionBadge, rankId, name, description, daily, secret, titleId, } = quest;
|
|
11
|
+
const title = await ornamentService.get(titleId ?? '');
|
|
12
|
+
canvas
|
|
13
|
+
.Image()
|
|
14
|
+
.setImageName(`quest_success_${rankId}`)
|
|
15
|
+
.setDimensions(2080, 636)
|
|
16
|
+
.draw();
|
|
17
|
+
if (badge) {
|
|
18
|
+
canvas
|
|
19
|
+
.Image()
|
|
20
|
+
.setImageName(progressiveBadgeTypeGuard(badge)
|
|
21
|
+
? `cropped_badge_${badge.img}_${rankId}`
|
|
22
|
+
: `cropped_badge_${badge.img}`)
|
|
23
|
+
.setOrigin(CanvasOrigin.CENTER)
|
|
24
|
+
.setScale(2)
|
|
25
|
+
.setPosition(370, 318)
|
|
26
|
+
.draw();
|
|
27
|
+
}
|
|
28
|
+
else if (isFactionBadge && user.faction !== 'citizen') {
|
|
29
|
+
canvas
|
|
30
|
+
.Image()
|
|
31
|
+
.setImageName(`cropped_badge_${user.faction}_${rankId}`)
|
|
32
|
+
.setOrigin(CanvasOrigin.CENTER)
|
|
33
|
+
.setScale(2)
|
|
34
|
+
.setPosition(370, 318)
|
|
35
|
+
.draw();
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
canvas
|
|
39
|
+
.Image()
|
|
40
|
+
.setImageName(`badge_default_${rankId}`)
|
|
41
|
+
.setScale(2)
|
|
42
|
+
.setOrigin(CanvasOrigin.CENTER)
|
|
43
|
+
.setPosition(370, 318)
|
|
44
|
+
.draw();
|
|
45
|
+
}
|
|
46
|
+
canvas
|
|
47
|
+
.Text(daily ? 'QUÊTE JOURNALIÈRE TERMINÉE !' : 'SUCCÈS DÉBLOQUÉ !')
|
|
48
|
+
.setPosition(739, 100)
|
|
49
|
+
.setFont('text', 70)
|
|
50
|
+
.setColor(RANKS[rankId].color)
|
|
51
|
+
.draw();
|
|
52
|
+
canvas
|
|
53
|
+
.Text(name)
|
|
54
|
+
.setPosition(739, 325)
|
|
55
|
+
.setOrigin(CanvasOrigin.BOTTOM_LEFT)
|
|
56
|
+
.setFont('poppins', name.length >= 35 ? 65 - (name.length - 35) : 65)
|
|
57
|
+
.draw();
|
|
58
|
+
canvas
|
|
59
|
+
.Text(secret ? 'Succès caché' : description)
|
|
60
|
+
.setPosition(739, 360)
|
|
61
|
+
.setFont('poppins_italic', 35)
|
|
62
|
+
.draw();
|
|
63
|
+
canvas
|
|
64
|
+
.Text(`Récompenses: ${formatNumber(berry)}${daily && multiplier > 1
|
|
65
|
+
? ` (+${formatNumber(berry * (multiplier - 1))})`
|
|
66
|
+
: ''} `)
|
|
67
|
+
.setPosition(739, 520)
|
|
68
|
+
.setFont('poppins', 35)
|
|
69
|
+
.setOrigin(CanvasOrigin.LEFT)
|
|
70
|
+
.draw(berry !== 0)
|
|
71
|
+
.next((instance, options) => nextAllToXAxis(instance.Image(), options))
|
|
72
|
+
.setImageName('quest_berry')
|
|
73
|
+
.setDimensions(50, 79)
|
|
74
|
+
.draw(berry !== 0)
|
|
75
|
+
.next((instance, options) => nextAllToXAxis(instance.Text(` / ${formatNumber(xp)}${daily && multiplier > 1
|
|
76
|
+
? ` (+${formatNumber(xp * (multiplier - 1))})`
|
|
77
|
+
: ''} `), options))
|
|
78
|
+
.draw(xp !== 0)
|
|
79
|
+
.next((instance, options) => nextAllToXAxis(instance.Image(), options))
|
|
80
|
+
.setImageName('quest_xp')
|
|
81
|
+
.setDimensions(57, 59)
|
|
82
|
+
.draw(xp !== 0)
|
|
83
|
+
.next((instance, options) => nextAllToXAxis(instance.Text(` combo x${multiplier}`), options))
|
|
84
|
+
.draw(daily && multiplier > 1)
|
|
85
|
+
.next((instance, options) => nextAllToXAxis(instance.Text(' et la possibilité '), options))
|
|
86
|
+
.draw(isFactionBadge && user.faction === 'citizen')
|
|
87
|
+
.next((instance, options) => nextAllToXAxis(instance.Text('de choisir ta faction'), options))
|
|
88
|
+
.setFont('poppins_bold', 35)
|
|
89
|
+
.draw(isFactionBadge && user.faction === 'citizen')
|
|
90
|
+
.next((instance, options) => nextAllToXAxis(instance.Text(' et le titre '), options))
|
|
91
|
+
.setFont('poppins', 35)
|
|
92
|
+
.draw(Boolean(titleId) || (isFactionBadge && user.faction !== 'citizen'))
|
|
93
|
+
.next((instance, options) => nextAllToXAxis(instance.Text(title?.name ?? ''), options))
|
|
94
|
+
.setFont('poppins_bold', 35)
|
|
95
|
+
.setColor((title?.rankId && RANKS[title.rankId].color) ?? 'white')
|
|
96
|
+
.draw(Boolean(title))
|
|
97
|
+
.next((instance, options) => nextAllToXAxis(instance.Text(factionTitle?.name ?? ''), options))
|
|
98
|
+
.setColor((factionTitle?.rankId && RANKS[factionTitle.rankId].color) ?? 'white')
|
|
99
|
+
.draw(isFactionBadge && Boolean(factionTitle));
|
|
100
|
+
return await canvas.encode('webp');
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=canvas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../src/canvas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIhD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,KAAQ,EACR,MAAgB,EAChB,MAAsC,EACtC,EAAE,KAAK,EAAE,EAAE,EAAiC,EAC5C,EAAE;IACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,mBAAmB,CAC3D,MAAM,EACN,KAAK,CAAC,EAAE,CACT,CAAC;IACF,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAEjE,MAAM,EACJ,KAAK,EACL,cAAc,EACd,MAAM,EACN,IAAI,EACJ,WAAW,EACX,KAAK,EACL,MAAM,EACN,OAAO,GACR,GAAG,KAAK,CAAC;IAEV,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAEvD,MAAM;SACH,KAAK,EAAE;SACP,YAAY,CAAC,iBAAiB,MAAM,EAAE,CAAC;SACvC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC;SACxB,IAAI,EAAE,CAAC;IACV,IAAI,KAAK,EAAE,CAAC;QACV,MAAM;aACH,KAAK,EAAE;aACP,YAAY,CACX,yBAAyB,CAAC,KAAK,CAAC;YAC9B,CAAC,CAAC,iBAAiB,KAAK,CAAC,GAAG,IAAI,MAAM,EAAE;YACxC,CAAC,CAAC,iBAAiB,KAAK,CAAC,GAAG,EAAE,CACjC;aACA,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC;aAC9B,QAAQ,CAAC,CAAC,CAAC;aACX,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;aACrB,IAAI,EAAE,CAAC;IACZ,CAAC;SAAM,IAAI,cAAc,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACxD,MAAM;aACH,KAAK,EAAE;aACP,YAAY,CAAC,iBAAiB,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC;aACvD,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC;aAC9B,QAAQ,CAAC,CAAC,CAAC;aACX,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;aACrB,IAAI,EAAE,CAAC;IACZ,CAAC;SAAM,CAAC;QACN,MAAM;aACH,KAAK,EAAE;aACP,YAAY,CAAC,iBAAiB,MAAM,EAAE,CAAC;aACvC,QAAQ,CAAC,CAAC,CAAC;aACX,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC;aAC9B,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;aACrB,IAAI,EAAE,CAAC;IACZ,CAAC;IAED,MAAM;SACH,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,mBAAmB,CAAC;SAClE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;SAC7B,IAAI,EAAE,CAAC;IAEV,MAAM;SACH,IAAI,CAAC,IAAI,CAAC;SACV,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;SACrB,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC;SACnC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACpE,IAAI,EAAE,CAAC;IAEV,MAAM;SACH,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;SAC3C,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,IAAI,EAAE,CAAC;IAEV,MAAM;SACH,IAAI,CACH,gBAAgB,YAAY,CAAC,KAAK,CAAC,GACjC,KAAK,IAAI,UAAU,GAAG,CAAC;QACrB,CAAC,CAAC,MAAM,YAAY,CAAC,KAAK,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAG;QACjD,CAAC,CAAC,EACN,GAAG,CACJ;SACA,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;SAC5B,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;SAEjB,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;SACtE,YAAY,CAAC,aAAa,CAAC;SAC3B,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC;SACrB,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;SAEjB,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAC1B,cAAc,CACZ,QAAQ,CAAC,IAAI,CACX,MAAM,YAAY,CAAC,EAAE,CAAC,GACpB,KAAK,IAAI,UAAU,GAAG,CAAC;QACrB,CAAC,CAAC,MAAM,YAAY,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAG;QAC9C,CAAC,CAAC,EACN,GAAG,CACJ,EACD,OAAO,CACR,CACF;SACA,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;SAEd,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;SACtE,YAAY,CAAC,UAAU,CAAC;SACxB,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC;SACrB,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;SAEd,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAC1B,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,UAAU,EAAE,CAAC,EAAE,OAAO,CAAC,CAChE;SACA,IAAI,CAAC,KAAK,IAAI,UAAU,GAAG,CAAC,CAAC;SAE7B,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAC1B,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC,CAC9D;SACA,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;SAElD,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAC1B,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC,CAChE;SACA,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;SAElD,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAC1B,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,CACxD;SACA,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;SAExE,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAC1B,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAC1D;SACA,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;SACjE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAEpB,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAC1B,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CACjE;SACA,QAAQ,CACP,CAAC,YAAY,EAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CACtE;SACA,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAEjD,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type QUEST_MIDDLEWARE_EVENT_NAME } from '@opfr/services';
|
|
2
|
+
import type { ObjectId, QuestMiddlewareEventName } from '@opfr/services';
|
|
3
|
+
import { UserBaseQuest } from './userBaseQuest';
|
|
4
|
+
export type CrewQuestMiddlewareEventName = Extract<QuestMiddlewareEventName, typeof QUEST_MIDDLEWARE_EVENT_NAME.CREW | typeof QUEST_MIDDLEWARE_EVENT_NAME.CREW_META | typeof QUEST_MIDDLEWARE_EVENT_NAME.CREW_ORNAMENTS | typeof QUEST_MIDDLEWARE_EVENT_NAME.CREW_QUEST | typeof QUEST_MIDDLEWARE_EVENT_NAME.CREW_STATS_ENGAGEMENT | typeof QUEST_MIDDLEWARE_EVENT_NAME.CREW_STATS_FREQUENCY>;
|
|
5
|
+
export declare abstract class CrewBaseQuest extends UserBaseQuest {
|
|
6
|
+
abstract readonly berry: number;
|
|
7
|
+
abstract readonly xp: number;
|
|
8
|
+
abstract readonly crew: true;
|
|
9
|
+
static crewDependencies: CrewQuestMiddlewareEventName[];
|
|
10
|
+
completeForCrew(crewId: ObjectId): Promise<void>;
|
|
11
|
+
applyCrewReward(crewId: ObjectId): Promise<void>;
|
|
12
|
+
isCompletedForCrew(crew: ObjectId): Promise<boolean>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=crewBaseQuest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crewBaseQuest.d.ts","sourceRoot":"","sources":["../../src/class/crewBaseQuest.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,2BAA2B,EAIjC,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAQ,QAAQ,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAI/E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAChD,wBAAwB,EACtB,OAAO,2BAA2B,CAAC,IAAI,GACvC,OAAO,2BAA2B,CAAC,SAAS,GAC5C,OAAO,2BAA2B,CAAC,cAAc,GACjD,OAAO,2BAA2B,CAAC,UAAU,GAC7C,OAAO,2BAA2B,CAAC,qBAAqB,GACxD,OAAO,2BAA2B,CAAC,oBAAoB,CAC1D,CAAC;AAEF,8BAAsB,aAAc,SAAQ,aAAa;IACvD,kBAA2B,KAAK,EAAE,MAAM,CAAC;IACzC,kBAA2B,EAAE,EAAE,MAAM,CAAC;IAEtC,kBAA2B,IAAI,EAAE,IAAI,CAAC;IAEtC,OAAc,gBAAgB,EAAE,4BAA4B,EAAE,CAAM;IAE9D,eAAe,CAAC,MAAM,EAAE,QAAQ;IA+ChC,eAAe,CAAC,MAAM,EAAE,QAAQ;IAMhC,kBAAkB,CAAC,IAAI,EAAE,QAAQ;CAkBxC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { QuestStatus } from '@opfr/definitions';
|
|
2
|
+
import { crewOrnamentsService, crewQuestService, userCrewService, } from '@opfr/services';
|
|
3
|
+
import { sameDay } from '@opfr/utils-lang';
|
|
4
|
+
import { emitQuestCompleteEvent } from '../events';
|
|
5
|
+
import { UserBaseQuest } from './userBaseQuest';
|
|
6
|
+
export class CrewBaseQuest extends UserBaseQuest {
|
|
7
|
+
static crewDependencies = [];
|
|
8
|
+
async completeForCrew(crewId) {
|
|
9
|
+
if (await this.isCompletedForCrew(crewId)) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const TODAY_START = new Date();
|
|
13
|
+
TODAY_START.setHours(0, 0, 0, 0);
|
|
14
|
+
let resultDoc;
|
|
15
|
+
if (this.daily) {
|
|
16
|
+
resultDoc = await crewQuestService.completeQuest({
|
|
17
|
+
lastCompletionDate: { $lt: TODAY_START },
|
|
18
|
+
questId: this.id,
|
|
19
|
+
crew: crewId,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
else if (this.repeatable) {
|
|
23
|
+
resultDoc = await crewQuestService.completeQuest({
|
|
24
|
+
questId: this.id,
|
|
25
|
+
crew: crewId,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
resultDoc = await crewQuestService.completeQuest({
|
|
30
|
+
questId: this.id,
|
|
31
|
+
crew: crewId,
|
|
32
|
+
status: QuestStatus.IN_PROGRESS,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
if (!resultDoc) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const allUserIds = await userCrewService.getAllUserIdsFromCrew(crewId);
|
|
39
|
+
const completedUserIds = [];
|
|
40
|
+
await this.applyCrewReward(crewId);
|
|
41
|
+
for (const userId of allUserIds) {
|
|
42
|
+
const userReward = await this.complete(userId, false);
|
|
43
|
+
if (userReward) {
|
|
44
|
+
completedUserIds.push(userId);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
emitQuestCompleteEvent(completedUserIds, this);
|
|
48
|
+
}
|
|
49
|
+
async applyCrewReward(crewId) {
|
|
50
|
+
if (this.badge) {
|
|
51
|
+
await crewOrnamentsService.unlockBadge(crewId, this.badge, this.rankId);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async isCompletedForCrew(crew) {
|
|
55
|
+
const { lastCompletionDate, status } = await crewQuestService.get({
|
|
56
|
+
crew,
|
|
57
|
+
questId: this.id,
|
|
58
|
+
});
|
|
59
|
+
if (this.repeatable) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
if (this.daily) {
|
|
63
|
+
return (status === 'COMPLETED' &&
|
|
64
|
+
!!lastCompletionDate &&
|
|
65
|
+
sameDay(lastCompletionDate, new Date()));
|
|
66
|
+
}
|
|
67
|
+
return status === 'COMPLETED';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=crewBaseQuest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crewBaseQuest.js","sourceRoot":"","sources":["../../src/class/crewBaseQuest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseQuest } from '@opfr/definitions';
|
|
2
|
+
import type { QUEST_MIDDLEWARE_EVENT_NAME, QuestMiddlewareEventName } from '@opfr/services';
|
|
3
|
+
import { type ObjectId, type UserMeta } from '@opfr/services';
|
|
4
|
+
import type { QuestValidationDocumentMap } from '../types';
|
|
5
|
+
export type UserQuestMiddlewareEventName = Extract<QuestMiddlewareEventName, typeof QUEST_MIDDLEWARE_EVENT_NAME.USER | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_CREW | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_META | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_QUEST | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_INVENTORY | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_ORNAMENT | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_STATS_CASINO | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_STATS_CREW | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_STATS_ECONOMY | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_STATS_ENGAGEMENT | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_STATS_FLAGS | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_STATS_FREQUENCY | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_STATS_INVENTORY>;
|
|
6
|
+
export declare abstract class UserBaseQuest extends BaseQuest {
|
|
7
|
+
abstract readonly berry: number | ((userMeta: UserMeta) => number);
|
|
8
|
+
abstract readonly xp: number | ((userMeta: UserMeta) => number);
|
|
9
|
+
static dependencies: UserQuestMiddlewareEventName[];
|
|
10
|
+
abstract isValidated(documentMap: QuestValidationDocumentMap, userId: ObjectId): Promise<boolean>;
|
|
11
|
+
complete(userId: ObjectId, withEventEmit: boolean): Promise<true | undefined>;
|
|
12
|
+
applyReward(user: ObjectId): Promise<void>;
|
|
13
|
+
getComputedRewards(userId: ObjectId): Promise<{
|
|
14
|
+
xp: number;
|
|
15
|
+
berry: number;
|
|
16
|
+
}>;
|
|
17
|
+
specificQuestCompletion(userId: ObjectId): Promise<void>;
|
|
18
|
+
isCompleted(user: ObjectId): Promise<boolean>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=userBaseQuest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userBaseQuest.d.ts","sourceRoot":"","sources":["../../src/class/userBaseQuest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EACV,2BAA2B,EAC3B,wBAAwB,EACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAOd,MAAM,gBAAgB,CAAC;AAKxB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAE3D,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAChD,wBAAwB,EACtB,OAAO,2BAA2B,CAAC,IAAI,GACvC,OAAO,2BAA2B,CAAC,SAAS,GAC5C,OAAO,2BAA2B,CAAC,SAAS,GAC5C,OAAO,2BAA2B,CAAC,UAAU,GAC7C,OAAO,2BAA2B,CAAC,cAAc,GACjD,OAAO,2BAA2B,CAAC,aAAa,GAChD,OAAO,2BAA2B,CAAC,iBAAiB,GACpD,OAAO,2BAA2B,CAAC,eAAe,GAClD,OAAO,2BAA2B,CAAC,kBAAkB,GACrD,OAAO,2BAA2B,CAAC,qBAAqB,GACxD,OAAO,2BAA2B,CAAC,gBAAgB,GACnD,OAAO,2BAA2B,CAAC,oBAAoB,GACvD,OAAO,2BAA2B,CAAC,oBAAoB,CAC1D,CAAC;AAEF,8BAAsB,aAAc,SAAQ,SAAS;IACnD,kBAA2B,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC;IAC5E,kBAA2B,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC;IAEzE,OAAc,YAAY,EAAE,4BAA4B,EAAE,CAAM;IAEhE,QAAQ,CAAC,WAAW,CAClB,WAAW,EAAE,0BAA0B,EACvC,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,OAAO,CAAC;IAEb,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO;IA2CjD,WAAW,CAAC,IAAI,EAAE,QAAQ;IAoB1B,kBAAkB,CAAC,MAAM,EAAE,QAAQ;;;;IAgBnC,uBAAuB,CAAC,MAAM,EAAE,QAAQ;IASxC,WAAW,CAAC,IAAI,EAAE,QAAQ;CAkBjC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { BaseQuest, QuestStatus } from '@opfr/definitions';
|
|
2
|
+
import { userInventoryService, userMetaService, userOrnamentService, userQuestService, userService, } from '@opfr/services';
|
|
3
|
+
import { isFunction, sameDay } from '@opfr/utils-lang';
|
|
4
|
+
import { emitQuestCompleteEvent } from '../events';
|
|
5
|
+
import { DailyAll } from '../quests/userDaily';
|
|
6
|
+
export class UserBaseQuest extends BaseQuest {
|
|
7
|
+
static dependencies = [];
|
|
8
|
+
async complete(userId, withEventEmit) {
|
|
9
|
+
const TODAY_START = new Date();
|
|
10
|
+
TODAY_START.setHours(0, 0, 0, 0);
|
|
11
|
+
let resultDoc;
|
|
12
|
+
if (await this.isCompleted(userId)) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (this.daily) {
|
|
16
|
+
resultDoc = await userQuestService.completeQuest({
|
|
17
|
+
lastCompletionDate: { $lt: TODAY_START },
|
|
18
|
+
questId: this.id,
|
|
19
|
+
user: userId,
|
|
20
|
+
}, true);
|
|
21
|
+
}
|
|
22
|
+
else if (this.repeatable) {
|
|
23
|
+
resultDoc = await userQuestService.completeQuest({
|
|
24
|
+
questId: this.id,
|
|
25
|
+
user: userId,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
resultDoc = await userQuestService.completeQuest({
|
|
30
|
+
questId: this.id,
|
|
31
|
+
user: userId,
|
|
32
|
+
status: QuestStatus.IN_PROGRESS,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
if (!resultDoc) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
await this.specificQuestCompletion(userId);
|
|
39
|
+
await this.applyReward(userId);
|
|
40
|
+
if (withEventEmit) {
|
|
41
|
+
emitQuestCompleteEvent([userId], this);
|
|
42
|
+
}
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
async applyReward(user) {
|
|
46
|
+
if (!this.crew) {
|
|
47
|
+
if (this.titleId) {
|
|
48
|
+
await userOrnamentService.unlockTitle(user, this.titleId);
|
|
49
|
+
}
|
|
50
|
+
if (this.badge) {
|
|
51
|
+
await userOrnamentService.unlockBadge(user, this.badge, this.rankId);
|
|
52
|
+
}
|
|
53
|
+
if (this.isFactionBadge) {
|
|
54
|
+
await userOrnamentService.unlockFactionBadge(user, this.rankId);
|
|
55
|
+
}
|
|
56
|
+
if (this.asset) {
|
|
57
|
+
await userOrnamentService.unlockProfileAsset(user, this.asset);
|
|
58
|
+
}
|
|
59
|
+
if (this.items) {
|
|
60
|
+
await userInventoryService.addItems(user, this.items);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async getComputedRewards(userId) {
|
|
65
|
+
const dailyAllId = new DailyAll().id;
|
|
66
|
+
const multiplier = this.daily
|
|
67
|
+
? await userQuestService.getStreakMultiplier(userId, dailyAllId)
|
|
68
|
+
: 1;
|
|
69
|
+
const userMeta = await userMetaService.get(userId);
|
|
70
|
+
return {
|
|
71
|
+
xp: (isFunction(this.xp) ? this.xp(userMeta) : this.xp) * multiplier,
|
|
72
|
+
berry: (isFunction(this.berry) ? this.berry(userMeta) : this.berry) *
|
|
73
|
+
multiplier,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
async specificQuestCompletion(userId) {
|
|
77
|
+
if (this.id === 'be_level_10') {
|
|
78
|
+
await userService.canChooseFaction(userId, true);
|
|
79
|
+
}
|
|
80
|
+
if (this.id !== 'be_level_10' && this.id.startsWith('be_level_')) {
|
|
81
|
+
await userService.canChangeFaction(userId, true);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async isCompleted(user) {
|
|
85
|
+
const { lastCompletionDate, status } = await userQuestService.get({
|
|
86
|
+
user,
|
|
87
|
+
questId: this.id,
|
|
88
|
+
});
|
|
89
|
+
if (this.repeatable) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
if (this.daily) {
|
|
93
|
+
return (status === 'COMPLETED' &&
|
|
94
|
+
!!lastCompletionDate &&
|
|
95
|
+
sameDay(lastCompletionDate, new Date()));
|
|
96
|
+
}
|
|
97
|
+
return status === 'COMPLETED';
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=userBaseQuest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userBaseQuest.js","sourceRoot":"","sources":["../../src/class/userBaseQuest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const BET_MIN_VALUE: 10;
|
|
2
|
+
export declare const BET_MAX_VALUE: 10000000;
|
|
3
|
+
export declare const EDITO_READ: 100;
|
|
4
|
+
export declare const QUEST_ASSET_IMAGES: readonly ["berry", "success_COMMON", "success_RARE", "success_EPIC", "success_LEGENDARY", "success_MYTHIC", "xp"];
|
|
5
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,EAAG,EAAW,CAAC;AACzC,eAAO,MAAM,aAAa,EAAG,QAAmB,CAAC;AAEjD,eAAO,MAAM,UAAU,EAAG,GAAY,CAAC;AAEvC,eAAO,MAAM,kBAAkB,mHAQrB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const BET_MIN_VALUE = 10;
|
|
2
|
+
export const BET_MAX_VALUE = 10_000_000;
|
|
3
|
+
export const EDITO_READ = 100;
|
|
4
|
+
export const QUEST_ASSET_IMAGES = [
|
|
5
|
+
'berry',
|
|
6
|
+
'success_COMMON',
|
|
7
|
+
'success_RARE',
|
|
8
|
+
'success_EPIC',
|
|
9
|
+
'success_LEGENDARY',
|
|
10
|
+
'success_MYTHIC',
|
|
11
|
+
'xp',
|
|
12
|
+
];
|
|
13
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,EAAW,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,UAAmB,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAY,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO;IACP,gBAAgB;IAChB,cAAc;IACd,cAAc;IACd,mBAAmB;IACnB,gBAAgB;IAChB,IAAI;CACI,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { QuestMiddlewareEventName } from '@opfr/services';
|
|
2
|
+
import { type QuestMiddlewareEventReceiverCallback } from '@opfr/services';
|
|
3
|
+
export declare const buildQuestMiddlewareEventCallback: <T extends QuestMiddlewareEventName>(eventName: T, isCrewEvent: boolean) => QuestMiddlewareEventReceiverCallback<T>;
|
|
4
|
+
//# sourceMappingURL=callbacks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callbacks.d.ts","sourceRoot":"","sources":["../../src/events/callbacks.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,KAAK,oCAAoC,EAAE,MAAM,gBAAgB,CAAC;AAuD3E,eAAO,MAAM,iCAAiC,GAC3C,CAAC,SAAS,wBAAwB,EACjC,WAAW,CAAC,EACZ,aAAa,OAAO,KACnB,oCAAoC,CAAC,CAAC,CAOxC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { userCrewService, } from '@opfr/services';
|
|
2
|
+
import {} from '@opfr/services';
|
|
3
|
+
import { camelcase } from '@opfr/utils-lang';
|
|
4
|
+
import { getQuestsByCrewDependency, getQuestsByDependency } from '../utils';
|
|
5
|
+
const crewEventCallback = async (eventName, crewId, document) => {
|
|
6
|
+
const quests = getQuestsByCrewDependency(eventName);
|
|
7
|
+
const docName = camelcase(eventName.split('/')[1]);
|
|
8
|
+
for (const QuestClass of quests) {
|
|
9
|
+
if (!('crewDependencies' in QuestClass)) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const crewQuest = new QuestClass();
|
|
13
|
+
if (await crewQuest.isCompletedForCrew(crewId))
|
|
14
|
+
continue;
|
|
15
|
+
if (await crewQuest.isValidated({ [docName]: document }, crewId)) {
|
|
16
|
+
await crewQuest.completeForCrew(crewId);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const userEventCallback = async (eventName, userId, document) => {
|
|
21
|
+
const quests = getQuestsByDependency(eventName);
|
|
22
|
+
const docName = camelcase(eventName.split('/')[1]);
|
|
23
|
+
for (const QuestClass of quests) {
|
|
24
|
+
if ('crewDependencies' in QuestClass) {
|
|
25
|
+
const crewQuest = new QuestClass();
|
|
26
|
+
const userCrew = await userCrewService.get(userId);
|
|
27
|
+
if (!userCrew || !userCrew.crew)
|
|
28
|
+
continue;
|
|
29
|
+
if (await crewQuest.isCompletedForCrew(userCrew.crew))
|
|
30
|
+
continue;
|
|
31
|
+
if (await crewQuest.isValidated({ [docName]: document }, userCrew.crew)) {
|
|
32
|
+
await crewQuest.completeForCrew(userCrew.crew);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
const userQuest = new QuestClass();
|
|
37
|
+
if (await userQuest.isCompleted(userId))
|
|
38
|
+
continue;
|
|
39
|
+
if (await userQuest.isValidated({ [docName]: document }, userId)) {
|
|
40
|
+
await userQuest.complete(userId, true);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
export const buildQuestMiddlewareEventCallback = (eventName, isCrewEvent) => async (objectId, document) => {
|
|
46
|
+
if (isCrewEvent) {
|
|
47
|
+
await crewEventCallback(eventName, objectId, document);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
await userEventCallback(eventName, objectId, document);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=callbacks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../src/events/callbacks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Types } from 'mongoose';
|
|
2
|
+
import type { CrewBaseQuest } from '../class/crewBaseQuest';
|
|
3
|
+
import type { UserBaseQuest } from '../class/userBaseQuest';
|
|
4
|
+
import type { CompletedQuestEventCallbackReceiver } from './types';
|
|
5
|
+
export declare const emitQuestCompleteEvent: (userIds: Types.ObjectId[], quest: UserBaseQuest | CrewBaseQuest) => void;
|
|
6
|
+
export declare const onQuestCompleteEvent: (callback: CompletedQuestEventCallbackReceiver) => void;
|
|
7
|
+
//# sourceMappingURL=event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/events/event.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,SAAS,CAAC;AAMnE,eAAO,MAAM,sBAAsB,GACjC,SAAS,KAAK,CAAC,QAAQ,EAAE,EACzB,OAAO,aAAa,GAAG,aAAa,SAGrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,UAAU,mCAAmC,SAK9C,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as events from 'events';
|
|
2
|
+
const eventEmitter = new events.EventEmitter();
|
|
3
|
+
const COMPLETED_QUEST_EVENT_NAME = 'quest/COMPLETED_QUEST';
|
|
4
|
+
export const emitQuestCompleteEvent = (userIds, quest) => {
|
|
5
|
+
eventEmitter.emit(COMPLETED_QUEST_EVENT_NAME, userIds, quest);
|
|
6
|
+
};
|
|
7
|
+
export const onQuestCompleteEvent = (callback) => {
|
|
8
|
+
eventEmitter.on(COMPLETED_QUEST_EVENT_NAME, (userIds, quest) => {
|
|
9
|
+
callback(userIds, quest);
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/events/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAOjC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;AAE/C,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AAE3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,OAAyB,EACzB,KAAoC,EACpC,EAAE;IACF,YAAY,CAAC,IAAI,CAAC,0BAA0B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,QAA6C,EAC7C,EAAE;IACF,YAAY,CAAC,EAAE,CAAC,0BAA0B,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAC7D,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAQA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { QUEST_MIDDLEWARE_EVENT_NAME, registerQuestMiddlewareEvents, } from '@opfr/services';
|
|
2
|
+
import { arrayToRecord } from '@opfr/utils-lang';
|
|
3
|
+
import { buildQuestMiddlewareEventCallback } from './callbacks';
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './event';
|
|
6
|
+
registerQuestMiddlewareEvents(arrayToRecord(Object.values(QUEST_MIDDLEWARE_EVENT_NAME).map(value => [
|
|
7
|
+
value,
|
|
8
|
+
buildQuestMiddlewareEventCallback(value, value.startsWith('middleware/CREW')),
|
|
9
|
+
])));
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAEhE,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,6BAA6B,CAC3B,aAAa,CACX,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IACtD,KAAK;IACL,iCAAiC,CAC/B,KAAK,EACL,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CACpC;CACF,CAAC,CACH,CACF,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Types } from 'mongoose';
|
|
2
|
+
import type { CrewBaseQuest } from '../class/crewBaseQuest';
|
|
3
|
+
import type { UserBaseQuest } from '../class/userBaseQuest';
|
|
4
|
+
export type CompletedQuestEventCallbackReceiver = (userIds: Types.ObjectId[], quest: UserBaseQuest | CrewBaseQuest) => void;
|
|
5
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,MAAM,mCAAmC,GAAG,CAChD,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EACzB,KAAK,EAAE,aAAa,GAAG,aAAa,KACjC,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AAEzB,mBAAmB,SAAS,CAAC"}
|