Files
autogame-17_feishu-doc/cache/aHR0cHM6Ly9hdXRvZ2FtZS5mZWlzaHUuY24vd2lraS9DdHRUd29yYlNpekVjaWtKdURzY1Y3WURuSGM.json

4 lines
14 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"title": "劫掠者系统",
"content": "[UNSUPPORTED BLOCK TYPE: 19]\n\n\n- 劫掠者袭击由【接近 → 集结 → 开打 → 结算】构成,不是突然刷一屏怪。\n\n- 劫掠者会优先向定居点关键区域推进;当打不到人、也没有明确目标时,会转而尝试搜刮物资。\n\n- 劫掠者只会从容器里拿走部分“生存资源类物品”,拿到后会立刻撤退,并在消息栏提示你被偷走了什么。\n\n- 定居点越富、战胜的轮次越多,下一次袭击的规模与配装会更强;如果你打得很艰难甚至死人,下次会稍微缓和。\n\n\n# \n一、劫掠者定义\n\n\n劫掠者机制带给玩家主要的生存压力玩家实力越强劫掠者强度越强。\n\n成功奖励击杀劫掠者主要获得劫掠者掉落相关的装备奖励\n\n失败代价如果袭击结束时还有活着的劫掠者系统会按概率让他们进入“搜刮”阶段他们会去容器里拿走特定类别物品拿到后立刻撤退并在消息里提示“某某带着xx逃走了”这就是“损失材料/装备”的来源。\n\n\n\n## 二、劫掠者规则\n\n\n\n## 2.1.劫掠者刷新条件\n\n必须要满足以下条件才会刷新劫掠者\n\n- 营地至少要有 3 个NPC\n\n- 营地仅有幽灵状态的NPC时\n\n- 所有玩家附近没有BOSS\n\n而且刷新只会发生在「进入夜晚的那一刻」\n\n\n\n## 2.2.劫掠者刷新时间\n\n劫掠者刷新是一个随机的数值\n\n范围大致在5400~9000秒每一个营地独立计算\n\n当触发条件不足比如说在打BOSS的时候会改成一个比较短的频率3001200 秒,再找下一个也晚重新尝试触发\n\n\n\n\n\n## 2.3.劫掠者怪物类型\n\n劫掠者的怪物人形怪为主\n\n根据劫掠者刷新轮次推进会出现不同劫掠者势力在【消息栏】劫掠者出现时会出现提醒\n\n![Image](token:D0eBbLszGoY20yxAAYgcHILknXd)\n\n「劫掠者」即将出现袭击【userName】的营地\n\n「邪教徒」即将出现袭击【userName】的营地\n\n\n\n[UNSUPPORTED BLOCK TYPE: 31]\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n轮次\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n袭击点\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n劫掠者池子\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n邪教徒池子\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n……\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n属性增长走level表吧用对应的等级\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n-1\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n1\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n2个劫掠者\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n0\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n2\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n2个劫掠者\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n1\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n2\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n3个劫掠者\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n2个混沌教战士\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n……\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n2\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n3\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n3个劫掠者\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n2个混沌教战士\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n……\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n3\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n3\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n3个劫掠者\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n2个混沌教战士\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n……\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n4\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n4\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n3个劫掠者+1劫掠者小队长\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n……\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n5\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n4\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n3个劫掠者+1劫掠者小队长\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n……\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n6\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n5\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n3个劫掠者+1劫掠者小队长\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n……\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n7\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n5\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n3个劫掠者+2劫掠者小队长\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n……\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n8\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n6\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n3个劫掠者+2劫掠者小队长\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n……\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n9\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n6\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n3个劫掠者+2劫掠者小队长\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n……\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n[UNSUPPORTED BLOCK TYPE: 32]\n\n\n\n\n\n# 三、袭击事件整体流\n\n\n\n劫掠者行为并不是“刷一群怪就结束”而是一场有明确生命周期的【定居点袭击事件】。事件从生成到结束按阶段推进\n\n\n\n## 3.1「接近阶段」\n\n在定居点边缘选定一个“刷怪方向 + 中心刷怪点”并预计算一批可用的刷怪tile。\n\n## 3.2「预备阶段」\n\n在定居点边缘按“波次/节奏”持续刷入劫掠者,并给每个劫掠者一个“开打倒计时”。\n\n## 3.3「交战阶段」\n\n劫掠者开始推进/战斗;当满足结束条件后,事件结算,劫掠者要么撤退,要么转入搜刮。\n\n\n\n\n\n# 四、刷怪与来袭方向\n\n\n\n## 4.1 来袭方向、劫掠者刷新点(中心点)\n\n系统会在定居点已加载区域的边缘包含角落按一个方向「10000」虚幻单位选择一块区域\n\n从中随机找一个可行走区域的地块作为中心刷怪点。\n\n\n\n接下来并不会把整个边缘都作为刷怪点而是\n\n以中心点为圆心在约 ±6400 的范围内筛选可用的没有被占用,形成刷新区域(真正用于刷怪的位置集合)。\n\n\n\n\n\n## 4.2 「预备阶段」阶段:按波次刷入\n\n不是瞬间把全部敌人拍到你脸上而是持续进场给玩家“逐渐升温”的压力曲线。\n\n\n\n准备阶段包含两段时间\n\n- 刷怪期(例如 60s持续生成劫掠者\n\n- 等待期(例如 20s刷完后给提醒玩家「劫掠者」已经出现袭击【userName】的营地\n\n\n\n刷怪节奏可以理解为“分波推进”\n\n- 事件有一个默认波次数(例如 6 波)\n\n- 每到一个刷怪tick会往“额外刷怪缓冲”里加上总刷怪数 / 波次数)\n\n- 缓冲每满 1就从召唤区域 中随机挑一个点尝试刷出一个劫掠者\n\n- 如果某次刷怪失败(位置/生成条件不合适),会稍微延后再试\n\n\n\n# 五、劫掠者行为逻辑(核心:状态机 + 触发)\n\n\n\n劫掠者有一个非常关键的“行为阶段枚举”可以当成行为树的大状态\n\n\n\n- 「预备阶段」:准备/集结(还没正式进攻)\n\n- 突袭阶段:进攻/战斗(推进到目标点、追人打人)\n\n- 搜刮:搜刮(找箱子/容器,挑值钱的可拿物品)\n\n- 撤退:撤退(带着战利品跑路,逃出后结算“被偷走了什么”)\n\n\n\n## 5.1 从 「预备阶段」 到 突袭阶段\n\n开打有两类触发\n\n\n\n## 1) 倒计时触发 \n\n每个劫掠者都带一个“开打倒计时”。倒计时归零后切到 突袭阶段,并且会触发事件进入“已开打”状态\n\n\n\n## 2) 受击/报警触发 \n\n如果某个劫掠者在 「预备阶段」 阶段受到攻击会向同一“组”突袭阶段Group的附近劫掠者广播\n\n强制它们一起进入 突袭阶段,并同步启动“全体开打”。\n\n\n\n- 玩家偷袭/先手会“提前引爆冲突”,避免出现打了半天对面还在原地发呆的体验。\n\n\n\n## 5.2 突袭阶段 时的“目标感”:\n\n> 设计含义:劫掠者不是纯随机游荡,而是会“朝定居点关键区推进”。\n事件会给劫掠者分配一个攻击目标点 「袭击点」\n\n袭击点\n\n常优先代表定营地旗帜、箱子\n\n\n\n当劫掠者接近到一定距离6400*6400的距离就认为“抵达”然后清空该目标转为更自由的战斗/搜寻行为。\n\n\n\n# 六、搜刮逻辑\n\n\n\n## 6.1 何时开始“想去搜刮”\n\n\n\n劫掠者只有在“突袭/交战阶段”才会产生“想去搜刮”的倾向。它的判断方式不是看时间,而是看自己是否长期处于“没有明确事情可做”的状态。\n\n\n\n### 6.1.1 如何判断为「没有明确的事情可做」\n\n当劫掠者处于突袭阶段时每次逻辑更新都会检查两件事\n\n\n\n- 是否已经没有“袭击点”(也就是没有继续推进到定居点关键位置的目标点)。\n\n- 是否也没有“当前战斗目标”(既没有锁定要攻击的人,也没有正在追击或交战的对象)。\n\n\n\n如果这两项同时成立说明它既不需要推进也打不到人于是会把“找不到目标计数”加 1。\n\n\n\n只要之后重新出现任意一种明确目标例如重新获得袭击点、重新锁定到战斗目标、被攻击而进入交战这个计数就会清零重新开始累计。\n\n\n\n### 6.1.2 无事可做之后做什么\n\n\n\n当劫掠者判断为「无事可做」时会以当前的位置往一个范围比较小的区域随机的点巡逻\n\n\n\n当“找不到目标计数”累计到阈值时劫掠者会被判定为“愿意开始搜刮”。\n\n\n```\n劫掠者「找不到目标计数」的阈值 = 当前剩余劫掠者数量 / 2\n```\n\n\n\n每X秒判断一次根据具体性能需求设置时间就行的没有性能需求就3秒判断一次\n\n\n本次劫掠者收尾真实概率 = 上一次劫掠者收尾概率第一轮为50% + (当前波次揭露者数量 /「找不到目标计数」揭露者)*2% \n\n\n\n\n\n## 6.2 搜刮对象与范围\n\n\n\n### 6.2.1.可以收刮的东西\n\n搜刮行为会在一定半径内约 半径5000虚幻单位之内搜索“带库存的容器/物件”(例如箱子等),然后只从特定物品类别里挑选:\n\n- 材料、原始食物、鱼、食物、种子\n\n(GameplayTags=((TagName=\"TopDown.Items.Type.Material\")))\n\n(GameplayTags=((TagName=\"TopDown.Items.Type.Consumable.Food.RawFood.\")))\n\n(GameplayTags=((TagName=\"TopDown.Items.Type.Camp.Fishing.Fish\")))\n\n(GameplayTags=((TagName=\"TopDown.Items.Type.Camp.Farm.Seed\")))\n\n(GameplayTags=((TagName=\"TopDown.Items.Type.Consumable.Food.CookedFood\")))\n\n\n\n### 6.2.2.如何选择可以收刮的物品\n\n\n\n进行抢夺时劫掠者可以抢走的物品\n\n\n\n在候选中劫掠者会更偏向选择价值更高的那批\n\n\n\n根据物品的价值选择所有容器中低于「可搜刮物品的价值」中最高的10个\n\n每个候选物品会计算一个“价值”对应商品的售价\n\n```\n「可搜刮物品的价值」= 劫掠者最大生命上限 /5\n```\n\n\n\n当选定要劫掠的物品之后劫掠者实际收刮的物品数量\n\n\n\n```\n实际收刮的物品数量 = 「可搜刮物品的价值」/ 「选定物品价值」\n```\n\n\n\n## 6.3 并发/抢夺避免预定箱子reservedLoot\n\n为了避免多个劫掠者冲同一个箱子同一格反复抖动做了“预定”\n\n当某个劫掠者锁定到某个箱子时会把这个目标写入全局预定表。\n\n其他劫掠者在筛选目标时会跳过跳过这个箱子。\n\n\n\n\n\n\n\n## 6.4 一旦拿到东西:立刻 撤退 + 消息提示\n\n劫掠者成功从容器扣走物品后会把战利品同步到自身状态carryingLoot并立刻切换到 撤退。\n\n当它成功撤离后会给定居点队员发送“某某带着xx逃走了”的消息提示。\n\n\n\n\n\n\n\n# 七、事件结束与结算\n\n\n\n## 7.1 「交战阶段」 阶段:什么时候算“这场袭击结束”\n\n结束条件不是只看“怪死没死光”还会综合“战斗是否已经明显结束/转入收尾”:\n\n- 如果所有劫掠者都死了直接结束defeated\n\n- 如果剩余劫掠者比例很低:更容易触发结束(进入收尾)\n\n- 如果大量劫掠者已经“想搜刮”:也会加速结束(战斗降温,准备进入结算)\n\n- 如果定居者死亡过多:也会触发更快结束(相当于系统判定你已经被打穿)\n\n\n\n## 7.2 结束后:撤退 or 开始搜刮(概率)\n\n事件结束时\n\n- 如果劫掠者被你全灭:结算为“击退/消灭”\n\n- 如果仍有劫掠者存活:会根据“存活比例”计算一个搜刮概率,决定:\n\n - start搜刮全体进入 搜刮趁乱抢资源m\n\n - 否则:全体进入 撤退(直接撤离)\n\n- 即使你没全杀光,只要压低对方存活比例,也能显著降低“被搜刮”的风险。\n\n\n\n## 7.3 下一次难度的动态调整(类似“自适应难度”)\n\n系统会记录“本次是否有定居者死亡”\n\n- 如果这次有定居者死亡,劫掠者撤退成功:轮次 -1最低下限为0\n\n- 如果这次没有定居者死亡,劫掠者撤退成功:轮次+1 (不会高于最高轮次)\n\n- 如果这次没有定居者死亡,劫掠者没撤退成功:轮次+2不会高于最高轮次\n\n"
}