From a0ab4beaf482bd009960cfc11ec952793af377dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A6=E5=90=9B?= <73606411+setube@users.noreply.github.com> Date: Thu, 18 Dec 2025 04:47:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E6=89=8B=E4=BF=9D=E6=8A=A4?= =?UTF-8?q?=E5=8F=8ANPC=E6=94=BB=E5=87=BB=E6=A6=82=E7=8E=87=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为积分低于1000的玩家增加新手保护,NPC不会侦查或攻击。优化NPC攻击概率逻辑:中立NPC按正常概率攻击,敌对NPC攻击概率翻倍,提升游戏平衡性。 --- src/logic/npcBehaviorLogic.ts | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/logic/npcBehaviorLogic.ts b/src/logic/npcBehaviorLogic.ts index 1efb822..ff3b32a 100644 --- a/src/logic/npcBehaviorLogic.ts +++ b/src/logic/npcBehaviorLogic.ts @@ -82,6 +82,12 @@ export const calculateDynamicBehavior = (playerPoints: number): DynamicBehaviorC * 检查NPC是否应该侦查玩家 */ 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 // 检查是否达到侦查间隔 @@ -110,6 +116,12 @@ export const shouldNPCSpyPlayer = (npc: NPC, player: Player, currentTime: number * 检查NPC是否应该攻击玩家 */ 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 // 检查是否达到攻击间隔 @@ -117,20 +129,24 @@ export const shouldNPCAttackPlayer = (npc: NPC, player: Player, currentTime: num return false } - // 检查外交关系 - 只有中立和敌对NPC才会攻击 + // 检查外交关系 const relation = npc.relations?.[player.id] if (relation) { if (relation.status === RelationStatus.Friendly) { // 友好NPC不攻击玩家 return false } + if (relation.status === RelationStatus.Neutral) { + // 中立NPC有概率攻击玩家(使用正常概率) + return Math.random() < config.attackProbability + } if (relation.status === RelationStatus.Hostile) { - // 敌对NPC攻击概率翻倍 + // 敌对NPC攻击概率翻倍(更激进) return Math.random() < Math.min(config.attackProbability * 2.0, 1.0) } } - // 中立或无关系:正常概率攻击 + // 无关系的NPC:使用正常概率攻击 return Math.random() < config.attackProbability }