外观
月卡/终身卡 · 技术实现
「玩家设定 →」
1. 代码位置
| 层 | 类 | 职责 |
|---|---|---|
| Service | service/InventoryService | 使用道具激活:useItem 命中 MONTHLY_CARD_ID/LIFETIME_CARD_ID 时调 gameRepository.activateMonthlyCard 续期,并给 VIP 经验(VIP_ITEM_USE) |
| repository | repository/GameRepository | activateMonthlyCard(playerId, expireAt) 写特权 |
| domain | domain/ShopBalanceRules | 卡常量与成长倍率 |
| domain | domain/PlayerPrivilege | isMonthlyCardActive/isLifetimeCardActive(到期判定) |
2. 数据表
| 表 | 关键列 | 说明 |
|---|---|---|
player_privilege | monthly_card_expire_at、lifetime_card_expire_at | 月卡到期(V10 迁移加列)、终身卡(V57) |
vip_experience_change | player_id、delta、source=VIP_ITEM_USE | 激活卡片的 VIP 经验(V58) |
3. 配置与常量
- 卡片常量:
名称 数值 说明 welfareTicketIdWELFARE_TICKET_ID 4001L — rainbowStoneIdRAINBOW_STONE_ID 4002L — monthlyCardIdMONTHLY_CARD_ID 4003L — namingCardIdNAMING_CARD_ID 4004L — lifetimeCardIdLIFETIME_CARD_ID 4005L — welfareTicketNameWELFARE_TICKET_NAME "福利点券" — dailySignInRewardTicketsDAILY_SIGN_IN_REWARD_TICKETS 1_000 — rainbowStoneNameRAINBOW_STONE_NAME "五彩神石" — monthlyCardNameMONTHLY_CARD_NAME "月卡" — namingCardNameNAMING_CARD_NAME "冠名卡" — lifetimeCardNameLIFETIME_CARD_NAME "终身卡" — namingNameNAMING_NAME "冠名" — dailyWelfareChallengeLimitDAILY_WELFARE_CHALLENGE_LIMIT 100 — rainbowStonePriceRAINBOW_STONE_PRICE 100 — baseDailyStoneLimitBASE_DAILY_STONE_LIMIT 50 — monthlyCardExtraStoneLimitMONTHLY_CARD_EXTRA_STONE_LIMIT 50 — vipExtraStoneLimitPerLevelVIP_EXTRA_STONE_LIMIT_PER_LEVEL 20 — namingExtraStoneLimitNAMING_EXTRA_STONE_LIMIT 300 — serverDailyStoneLimitSERVER_DAILY_STONE_LIMIT 600 — worldHornLimitIdWORLD_HORN_LIMIT_ID 9501L 世界喇叭福利点券兑换(对齐 docs/33 §4.2) worldHornLimitNameWORLD_HORN_LIMIT_NAME "世界喇叭日限购" — worldHornPriceWORLD_HORN_PRICE 100 — dailyWorldHornLimitDAILY_WORLD_HORN_LIMIT 10 — rainbowStoneResonanceRatePerStoneRAINBOW_STONE_RESONANCE_RATE_PER_STONE 0.0004D 月卡/终身卡各提供 ×1.25,VIP5 提供 ×1.5,冠名提供 ×2.0 最终倍率;功法不再进入成长速率。 monthlyCardGrowthBaseContributionMONTHLY_CARD_GROWTH_BASE_CONTRIBUTION 1 — vip5GrowthBaseContributionVIP5_GROWTH_BASE_CONTRIBUTION 1 — vip5GrowthThresholdVIP5_GROWTH_THRESHOLD 5 — namingGrowthBaseContributionNAMING_GROWTH_BASE_CONTRIBUTION 1 — lifetimeCardGrowthBaseContributionLIFETIME_CARD_GROWTH_BASE_CONTRIBUTION 1 — monthlyCardFinalMultiplierMONTHLY_CARD_FINAL_MULTIPLIER 1.25D — lifetimeCardFinalMultiplierLIFETIME_CARD_FINAL_MULTIPLIER 1.25D — vip5FinalMultiplierVIP5_FINAL_MULTIPLIER 1.5D — namingFinalMultiplierNAMING_FINAL_MULTIPLIER 2.0D — baseGrowthRateBASE_GROWTH_RATE 5.0D — monthlyCardAttackSpeedBonusMONTHLY_CARD_ATTACK_SPEED_BONUS 2.0D — lifetimeCardAttackSpeedBonusLIFETIME_CARD_ATTACK_SPEED_BONUS 2.0D — vipAttackSpeedBonusPerLevelVIP_ATTACK_SPEED_BONUS_PER_LEVEL 0.2D — namingAttackSpeedBonusNAMING_ATTACK_SPEED_BONUS 3.0D — namingExtraTicketsNAMING_EXTRA_TICKETS 500 — mountDropRateMOUNT_DROP_RATE 0.001D 坐骑掉率,对齐进阶石 mountMaterialQtyEasyMOUNT_MATERIAL_QTY_EASY 50 坐骑/翅膀副本升级材料按怪物分级掉落(百次模型,NORMAL 100 颗/次) mountMaterialQtyNormalMOUNT_MATERIAL_QTY_NORMAL 100 — mountMaterialQtyHardMOUNT_MATERIAL_QTY_HARD 150 — mountMaterialQtyEliteMOUNT_MATERIAL_QTY_ELITE 200 — mountMaterialQtyBossMOUNT_MATERIAL_QTY_BOSS 250 — entryDungeonMaterialMultiplierENTRY_DUNGEON_MATERIAL_MULTIPLIER 0.40D — wingDropRateWING_DROP_RATE 0.001D 翅膀副本掉落与升级消耗(对齐 docs/翅膀玩法设计文档.md §5),数值镜像坐骑。 petDropRatePET_DROP_RATE 0.001D — welfareBaseTicketsWELFARE_BASE_TICKETS 10 福利怪掉落规则(加法模型,可叠加) monthlyCardExtraTicketsMONTHLY_CARD_EXTRA_TICKETS 100 — vipTicketBonusPerLevelVIP_TICKET_BONUS_PER_LEVEL 20 — maxVipLevelMAX_VIP_LEVEL 10 — vipThresholdsVIP_THRESHOLDS { 0, 100, 500, 1000, 3000, 5000, 10000, 20000, 50000, 100000, 500000 } VIP0 来源:emberfall-server/src/main/java/com/emberfall/domain/ShopBalanceRules.java· commit5916da43b88f343400acfdb20c97a5cc7927fdbdMONTHLY_CARD_ID=4003、LIFETIME_CARD_ID=4005、MONTHLY_CARD_FINAL_MULTIPLIER=1.25、LIFETIME_CARD_FINAL_MULTIPLIER=1.25(成长最终倍率 ×1.25)MONTHLY_CARD_ATTACK_SPEED_BONUS=2.0、LIFETIME_CARD_ATTACK_SPEED_BONUS=2.0(攻速 +2.0)- 每日神石额度 +50(
MONTHLY_CARD_EXTRA_STONE_LIMIT)、福利点券每档 +100(MONTHLY_CARD_EXTRA_TICKETS)
- yml 键:无(注意
V26__mount_wing_monthly_card_tier.sql月卡档位影响坐骑/翅膀等级上限)
4. 数据流简述
玩家购买/领取卡片道具(4003/4005)后,POST /api/inventory/use(InventoryService.useItem)识别卡片类型,调用 activateMonthlyCard 将 monthly_card_expire_at 顺延 30 天(终身卡置永久),同时 VipExperienceService 记 VIP_ITEM_USE 经验。此后 PlayerPrivilege.isMonthlyCardActive() 在成长倍率(×1.25)、攻速、每日神石额度、试炼入场/留存加成(trial.v2.entry.monthly-bonus)等处生效,到期自动失效。
5. 已知差异
无
6. 相关代码
- VIP(
VipExperienceService:卡片激活给经验) - 冠名卡(
ShopBalanceRules.NAMING_CARD_ID=4004) - 余烬试炼场(
trial.v2.entry.monthly-bonus/lifetime-bonus) - 坐骑/翅膀档位(V26:月卡档位等级上限)