修改探索奖励获取机制及数值

This commit is contained in:
CounterFire2023 2024-04-08 15:25:39 +08:00
parent 40fa0c70a2
commit fa9d751a88
3 changed files with 24 additions and 16 deletions

View File

@ -18,11 +18,11 @@ export const CONFIRM_MAIL_HTML = `
export const MANUAL_OPEN_GAME = false
// 每一步能获得的最小分数
export const STEP_SCORE_MIN = 1
export const STEP_SCORE_MIN = 50
// 每一步能获得的最大分数
export const STEP_SCORE_MAX = 5
export const STEP_SCORE_MAX = 50
// 每一步能获得的宝箱的概率
export const STEP_CHEST_RATE = 0.1
export const STEP_CHEST_RATE = 0.3
// 宝箱各等级的概率
export const STEP_CHEST_LEVEL = [70, 85, 95, 100]
// 低保步数

View File

@ -355,17 +355,17 @@ class GameController extends BaseController {
$inc: { tickets: -step },
}
let { score, chests } = generateStepReward(user.id, user.activity, step)
if (chests.length > 0) {
updateData.maxNoChestCount = 0
} else {
if (record.maxNoChestCount + step >= RESET_STEP) {
updateData.maxNoChestCount = 0
const level = generateChestLevel()
chests.push(generateNewChest(user.id, user.activity, level, ChestStatusEnum.NORMAL))
} else {
updateData['$inc']['maxNoChestCount'] = step
}
}
// if (chests.length > 0) {
// updateData.maxNoChestCount = 0
// } else {
// if (record.maxNoChestCount + step >= RESET_STEP) {
// updateData.maxNoChestCount = 0
// const level = generateChestLevel()
// chests.push(generateNewChest(user.id, user.activity, level, ChestStatusEnum.NORMAL))
// } else {
// updateData['$inc']['maxNoChestCount'] = step
// }
// }
await ActivityGame.updateOne({ user: user.id, activity: user.activity }, updateData)
await updateRankScore({
user: user.id,

View File

@ -39,16 +39,24 @@ export const generateChestLevel = function (): number {
}
return level
}
/**
*
* // TODO:: 增加白名单和特殊种类nft的奖励
* @param uid
* @param activity
* @param step
* @returns
*/
export const generateStepReward = (uid: string, activity: string, step: number) => {
let score = 0
let chests = []
for (let i = 0; i < step; i++) {
score += Math.floor(Math.random() * (STEP_SCORE_MAX - STEP_SCORE_MIN + 1) + STEP_SCORE_MIN)
if (Math.random() < STEP_CHEST_RATE) {
let randomLevel = generateChestLevel()
let chest = generateNewChest(uid, activity, randomLevel, ChestStatusEnum.NORMAL)
chests.push(chest)
} else {
score += Math.floor(Math.random() * (STEP_SCORE_MAX - STEP_SCORE_MIN + 1) + STEP_SCORE_MIN)
}
}
return { score, chests }