// Package domain 定义境界/渡劫/破界相关的领域常量与通用计算。 package domain import "fmt" const ( // 角色境界状态 RealmStatusNormal = "normal" RealmStatusTribulationPending = "tribulation_pending" RealmStatusBreakthroughReady = "breakthrough_ready" // 渡劫类型 TribulationTypeNormal = "normal" TribulationTypeHeartDevil = "heart_devil" TribulationTypeQiDeviation = "qi_deviation" TribulationTypeChaos = "chaos" TribulationTypeHeti = "heti" // 渡劫结果 TribulationResultSuccess = "success" TribulationResultFail = "fail" TribulationResultBacklash = "backlash" TribulationResultDeath = "death" TribulationResultPending = "pending" // 突破记录来源/目标状态 BreakthroughSourceWorldTierKey = "source_world_tier" BreakthroughTargetWorldTierKey = "target_world_tier" ) var ( // RealmNames 大境界名称 RealmNames = map[int32]string{ 1: "炼气期", 2: "筑基期", 3: "金丹期", 4: "元婴期", 5: "化神期", 6: "合体期", } // MinorRealmNames 小境界名称 MinorRealmNames = map[int32]string{ 1: "初期", 2: "中期", 3: "圆满", } ) // RealmFullName 返回完整境界名,如 "筑基期·中期"。 func RealmFullName(tier, minor int32) string { name := RealmNames[tier] if name == "" { name = "未知境界" } minorName := MinorRealmNames[minor] if minorName == "" { minorName = "未知" } return fmt.Sprintf("%s·%s", name, minorName) } // ExpConfigKey 返回当前小境界升级到下一小境界所需修为的 Nacos 配置键。 func ExpConfigKey(tier, minor int32) string { return fmt.Sprintf("realm.exp.l%d_m%d_to_next", tier, minor) } // DefaultExpToNext 当 Nacos 未配置时使用的默认修为阈值。 // 数值按境界指数放大,同一境界内中期→圆满显著高于初期→中期。 func DefaultExpToNext(tier, minor int32) int64 { var base int64 switch tier { case 1: base = 1000 case 2: base = 5000 case 3: base = 25000 case 4: base = 120000 case 5: base = 600000 case 6: base = 3000000 default: base = 1000 } switch minor { case 1: return base case 2: return base * 5 / 2 case 3: return base * 10 default: return base } } // TribulationBaseRateKey 返回渡劫基础成功率配置键。 // isBig 为 true 表示大境界渡劫(圆满→下境初期),false 表示层内小境界突破。 func TribulationBaseRateKey(tier int32, isBig bool) string { if isBig { return fmt.Sprintf("tribulation.base_rate_l%d_big", tier) } return fmt.Sprintf("tribulation.base_rate_l%d_small", tier) } // DefaultTribulationBaseRate 默认渡劫基础成功率。 func DefaultTribulationBaseRate(tier int32, isBig bool) float64 { if isBig { switch tier { case 2: return 0.55 case 3: return 0.50 case 4: return 0.45 case 5: return 0.40 case 6: return 0.35 } return 0.50 } switch tier { case 2: return 0.70 case 3: return 0.65 case 4: return 0.60 case 5: return 0.55 case 6: return 0.50 } return 1.0 } // ThunderLayerCoef 雷劫境界系数。 func ThunderLayerCoef(tier int32) float64 { switch tier { case 2: return 1.0 case 3: return 1.2 case 4: return 1.5 case 5: return 1.8 case 6: return 2.2 } return 1.0 } // FireLayerCoef 业火境界系数。 func FireLayerCoef(tier int32) float64 { switch tier { case 2: return 1.0 case 3: return 1.3 case 4: return 1.6 case 5: return 2.0 case 6: return 2.5 } return 1.0 }