mirror of
https://github.com/setube/ogame-vue-ts.git
synced 2026-05-12 16:05:12 +08:00
feat: 新手保护及NPC攻击概率优化
为积分低于1000的玩家增加新手保护,NPC不会侦查或攻击。优化NPC攻击概率逻辑:中立NPC按正常概率攻击,敌对NPC攻击概率翻倍,提升游戏平衡性。
This commit is contained in:
@@ -82,6 +82,12 @@ export const calculateDynamicBehavior = (playerPoints: number): DynamicBehaviorC
|
|||||||
* 检查NPC是否应该侦查玩家
|
* 检查NPC是否应该侦查玩家
|
||||||
*/
|
*/
|
||||||
export const shouldNPCSpyPlayer = (npc: NPC, player: Player, currentTime: number, config: DynamicBehaviorConfig): boolean => {
|
export const shouldNPCSpyPlayer = (npc: NPC, player: Player, currentTime: number, config: DynamicBehaviorConfig): boolean => {
|
||||||
|
// 新手保护:积分低于1000的玩家不会被侦查
|
||||||
|
const playerPoints = player.points || 0
|
||||||
|
if (playerPoints < 1000) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
const lastSpyTime = npc.lastSpyTime || 0
|
const lastSpyTime = npc.lastSpyTime || 0
|
||||||
|
|
||||||
// 检查是否达到侦查间隔
|
// 检查是否达到侦查间隔
|
||||||
@@ -110,6 +116,12 @@ export const shouldNPCSpyPlayer = (npc: NPC, player: Player, currentTime: number
|
|||||||
* 检查NPC是否应该攻击玩家
|
* 检查NPC是否应该攻击玩家
|
||||||
*/
|
*/
|
||||||
export const shouldNPCAttackPlayer = (npc: NPC, player: Player, currentTime: number, config: DynamicBehaviorConfig): boolean => {
|
export const shouldNPCAttackPlayer = (npc: NPC, player: Player, currentTime: number, config: DynamicBehaviorConfig): boolean => {
|
||||||
|
// 新手保护:积分低于1000的玩家不会被攻击
|
||||||
|
const playerPoints = player.points || 0
|
||||||
|
if (playerPoints < 1000) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
const lastAttackTime = npc.lastAttackTime || 0
|
const lastAttackTime = npc.lastAttackTime || 0
|
||||||
|
|
||||||
// 检查是否达到攻击间隔
|
// 检查是否达到攻击间隔
|
||||||
@@ -117,20 +129,24 @@ export const shouldNPCAttackPlayer = (npc: NPC, player: Player, currentTime: num
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查外交关系 - 只有中立和敌对NPC才会攻击
|
// 检查外交关系
|
||||||
const relation = npc.relations?.[player.id]
|
const relation = npc.relations?.[player.id]
|
||||||
if (relation) {
|
if (relation) {
|
||||||
if (relation.status === RelationStatus.Friendly) {
|
if (relation.status === RelationStatus.Friendly) {
|
||||||
// 友好NPC不攻击玩家
|
// 友好NPC不攻击玩家
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
if (relation.status === RelationStatus.Neutral) {
|
||||||
|
// 中立NPC有概率攻击玩家(使用正常概率)
|
||||||
|
return Math.random() < config.attackProbability
|
||||||
|
}
|
||||||
if (relation.status === RelationStatus.Hostile) {
|
if (relation.status === RelationStatus.Hostile) {
|
||||||
// 敌对NPC攻击概率翻倍
|
// 敌对NPC攻击概率翻倍(更激进)
|
||||||
return Math.random() < Math.min(config.attackProbability * 2.0, 1.0)
|
return Math.random() < Math.min(config.attackProbability * 2.0, 1.0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 中立或无关系:正常概率攻击
|
// 无关系的NPC:使用正常概率攻击
|
||||||
return Math.random() < config.attackProbability
|
return Math.random() < config.attackProbability
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user