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

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 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] export const STEP_CHEST_LEVEL = [70, 85, 95, 100]
// 低保步数 // 低保步数

View File

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

View File

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