原版相关内容

存放一些在mod中发现的原版相关的有趣内容

属性计算

符号定义:

  • 我们记kk表示一项工作速度的基础值,例如智人种的普通工作速度基础值为100%
  • 我们记GG表示全局工作速度
  • 我们定义算符: (a′)x(bM):=(1+a(x−1))(最大取b)(a')x(bM):=(1+a(x-1))(最大取b).
    对应游戏中的 权重a,最大值b. 在表格中,我们直接简记为a(bM)
  • 我们定义算符: (′c)y(dM):=(cy−c)(最大取d)('c)y(dM):=(cy-c)(最大取d).
    对应游戏中的 影响c,最大值(d/c +1). 在表格中,我们直接简记为c(dM)
  • 部分社交属性的权重带有豁免线.其会降低能力值过低对属性造成的影响
    具体为:当能力值<豁免线时,则使用 能力值/豁免线 代替能力值进行计算
    对应游戏中的 权重a,最大值b,如果低于豁免线. 在表格中,我们直接简记为(豁免线)a(bM)
    例如,教化能力的听觉权重为 (80%)0.9(1M),则对于30%听觉能力的人来说,其听觉对教化能力的实际影响为(1+0.9(0.3/0.8−1))(1M)=0.4375(1+0.9(0.3/0.8-1))(1M)=0.4375,从而30%听觉能力对教化能力造成总共42.75%影响.

工作速度计算主要分为两类

  • 乘算类:大部分计算走的都是乘算,例如各种工作速度/工作效率的计算方式.
    其大体结构为:kG×f(技能等级)×(操作权重′)操作能力×(视觉权重′)视觉能力kG\times f(技能等级)\times (操作权重')操作能力\times(视觉权重')视觉能力
    亦即: 基础值×全局工作速度×技能等级加成×加权后的操作能力×加权后的视觉能力
    例如,建造速度的公式为 kG×(0.3+0.0875建造)×(1′)操作×(0.2′)视觉(1M)kG\times(0.3+0.0875建造)\times(1')操作\times(0.2')视觉(1M)
    若某种族的建造速度基础值为1.2,全局工作速度1.35,建造10级,操作能力1.5,视觉能力0.6,则其实际建造速度为
    建造速度=1.2×1.35×(0.3+0.0875×10)×(1′)1.5×(0.2′)0.6(1M)=1.9035×(1+1×(1.5−1))×(1+0.2×(0.6−1))(1M)=1.9035×1.5×0.92=2.62683≈262%\begin{aligned} 建造速度&=1.2\times 1.35\times(0.3+0.0875\times 10)\times(1')1.5\times(0.2')0.6(1M)\\ &=1.9035\times (1+1\times(1.5-1))\times (1+0.2\times(0.6-1))(1M)\\ &=1.9035\times 1.5\times 0.92\\ &=2.62683\approx 262\% \end{aligned}
  • 加算类:主要用于战斗计算.通常使用(′c)y(dM)('c)y(dM)这种加算结构.几乎所有的加算最后都要再过一遍后期曲线
    例如,射击精度的公式为 k+射击等级+(′8)操作(1M)+(′12)视觉(12M)k+射击等级+('8)操作(1M)+('12)视觉(12M)
    若某种族的射击基础值为3,射击等级为10,操作能力1.3,视觉能力1.5,则其实际射击精度为
    射击精度=3+10+(′8)1.3(0M)+(′12)1.5(12M)=13+(8×1.3−8)(0M)+(12×1.5−12)(12M)=13+0+6=19\begin{aligned} 射击精度&=3+10+('8)1.3(0M)+('12)1.5(12M)\\ &=13+(8\times 1.3-8)(0M)+(12\times 1.5-12)(12M)\\ &=13+0+6=19 \end{aligned}

工作速度

属性名 技能加成 操作权重 视觉权重 额外权重
普通工作速度 1 1 0.5(1M)
建造速度 0.3+0.0875建造 1 0.2(1M)
打磨速度 0.3+0.0875建造 1 0.3(1M)
采矿速度 0.04+0.12采矿 1 0.5(1M)
深钻井操作速度 0.04+0.12采矿 1 0.5(1M)
屠宰速度 0.4+0.06烹饪 1 0.4(1M)
酿酒速度 0.4+0.06烹饪 1 0.3(1M)
种植速度 0.08+0.115种植 1 0.3(1M)
动物收集速度 0.04+0.12驯兽 1 0.5(1M)
钓鱼速度 0.75+0.025驯兽 0.5
机械族拆解速度 0.4+0.06手工 1 0.4(1M)
熔炼速度 1 1 0.3(1M)
手术速度 0.4+0.06医疗 1 0.7(1M)
治疗速度 0.4+0.06医疗 1 0.8(1.3M)
阅读速度 1+0.02智识 1(1M) 1意识
研究速度 0.08+0.115智识 0.5(1.1M) 0.5(1.1M)
驾驶能力 0.2+0.075智识 0.5 0.5 1意识
制药速度 0.3+0.0875智识 1 0.6(1M)
骇入速度 0.75+0.025智识 0.5(1.1M) 0.5(1.1M) 1意识(1.2M)
实体调查速率 0.08+0.115智识 0.5(1.1M) 0.5(1.1M)

工作效率

属性名 技能加成 操作权重 视觉权重
建造成功率 0.75+见表格 0.3 0.2(1M)
修理成功率 0.75+见表格 0.3 0.2(1M)
采矿效率 0.6+见表格 0.3(1M) 0.2(1M)
屠宰效率 0.75+0.025烹饪 0.9 0.4(1M)
植物收获效率 0.6+见表格 0.3 0.2(1M)
动物收集效率 0.6+见表格 0.3 0.2(1M)
钓鱼效率 0.3+见表格 0.3
机械族拆解效率 0.75+0.025手工 0.9 0.4(1M)
治疗质量 0.2+0.1医疗 1(1.4M) 0.7(1.4M)
手术成功率 0.1+见表格 1 0.4(1M)

社交

属性 技能加成 语言权重 听觉权重 操作权重 后处理
社交效果 0.82+0.0275×社交 (0.95)0.9(1M) (0.95)0.3(1M)
谈判能力 0.4+0.075×社交 (0.95)0.9(1M) (0.8)0.9(1M)
交易价格改善 0.015×社交 (0.95)0.9(1M) (0.8)0.9(1M)
拘捕成功率 0.6+0.075×社交 (0.95)0.9(1M)
驯服动物成功率 0.04+0.03×驯兽 (0.8)0.9(1M) (0.95)0.3(1M) (0.8)0.5(1M)
训练动物成功率 0.10+0.05×驯兽 (0.8)0.7(1M) (0.95)0.3(1M) (0.8)0.5(1M)
教化能力 0.3+0.0875×社交 (0.95)0.9(1M) (0.8)0.9(1M)
压制能力 0.05+0.0225×社交
狩猎隐蔽度 0.05×射击,0.05×驯兽

战斗相关

本部分全部使用加算而非乘算

属性 技能加成 操作影响 视觉影响 其他
近战命中率 +格斗 12(6M) 12(6M)
近战闪避率 +格斗 8(3.2M) 18移动
射击精度 +射击 8(0M) 12(12M)
迫击炮偏移 0.2-0.025射击 -0.5 -1(0M)
烹饪速度 +烹饪 16(8M) 4(2M) 乘全局工作速度G
活跃抑制速度 0.03+0.0075智识+0.0075社交 乘心灵敏感度

能力值

此部分内容对应 灰机wiki(年久失修了)或官方wiki

注意此部分只写部分简化后的结果,想知道详尽请看官方wiki

  • 意识=(0.2’)血液循环×(0.2’)呼吸能力×(0.1’)血液过滤×疼痛因子×脑效率
  • 移动能力=(0.2’)血液循环×(0.2’)呼吸能力×腿及其子部件效率×脊椎效率×骨盆效率
  • 操作能力=意识×臂及其子部件效率
  • 语言能力=意识×下颌效率×舌效率
  • 进食能力=意识×下颌效率×舌效率
  • 视觉能力=略微复杂,自己看wiki
  • 听觉能力=略微复杂,自己看wiki
  • 呼吸能力=肺平均效率×颈部效率×肋骨效率×胸骨效率
  • 血液过滤=肾平均效率×肝效率
  • 血液循环=心脏效率
  • 消化能力=(0.5’)胃效率×(0.5’)肝效率

角色市场价值

整体公式为

市场价值=(基础值×角色质量+植入物价值)×年龄曲线角色质量=(0.2+0.8×健康度)×能力乘数×技能等级乘数×生命阶段乘数+特性影响+0.2×魅力\begin{align*}市场价值&=(基础值×角色质量+植入物价值)×年龄曲线\\ 角色质量&=(0.2+0.8\times 健康度)\times 能力乘数\times 技能等级乘数\times 生命阶段乘数+特性影响+0.2×魅力\end{align*}

其中的具体变量意义为

  • 基础值:种族的基础价值
  • 年龄曲线:按(3岁,0.5)-(13岁,0.9)-(18岁,1)进行线性插值
  • 健康度=∏每个部位或断肢(1−min⁡(该部位总伤口值75×生命值系数,0.95))\displaystyle\prod_{每个部位或断肢}\left(1-\min\left(\frac{该部位总伤口值}{75\times 生命值系数},0.95\right)\right),其中疤痕不计入伤口计算
  • 能力乘数=∏所有能力项(0.5+0.5×能力值)\displaystyle\prod_{所有能力项} (0.5+0.5×能力值),缺失的能力值按0.6算
  • 技能等级乘数=计算平均技能等级(被禁用的技能按0计入),并按(0级,0.2)-(5.5级,1)-(20级,3)进行线性插值
  • 生命阶段乘数:3岁前固定为0.5,3~9岁固定为0.9,9~13岁固定为0.95,13岁以上为1
  • 特性:原版特性影响为 直来直去-0.15 烦人的声音-0.2 恶心的呼吸声-0.1 纵火狂-0.2 成瘾品爱好-0.1 成瘾品痴迷-0.15 懦弱-0.15

工作

植物生长时间

此处我直接抄的wiki,请直接参考官方wiki

实际生长时间约为游戏中"生长时间"值的1.8462倍

战斗

身体部位

此部分内容对应 灰机wiki或官方wiki,其中灰机wiki的命中率部分已经年久失修,请以官方wiki为准

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
名称                     血量 内外  覆盖率      命中率
躯干 40HP OS 100 15%
├─ 肋骨 30HP IS 3.6 3.6%
├─ 胸骨 20HP IS 1.5 1.5%
├─ 骨盆 25HP IS 2.5 2.5%
├─ 脊椎 25HP IS 2.5 2.5%
├─ 胃 20HP IS 2.5 2.5%
├─ 心脏 15HP IS 2 2%
├─ 左/右肺 15HP IS 2.5 2.5%
├─ 左/右肾 15HP IS 1.7 1.7%
├─ 肝 20HP IS 2.5 2.5%
├─ 腰 10HP OS 0 0%
├─ 颈部 25HP OS 7.5 1.5%
│ └─ 头 25HP OS 80 1.74%
│ ├─ 颅骨 25HP IS 18 0.216%
│ │ └─ 大脑 10HP IS 80 0.864%
│ ├─ 左/右眼 10HP OS 7 0.42%
│ ├─ 左/右耳 12HP OS 7 0.42%
│ ├─ 鼻 10HP OS 10 0.6%
│ └─ 下颌 20HP OS 15 0.8991%
│ └─ 舌 10HP IS 0.1 0.0009%
├─ 左/右肩 30HP OS 12 1.68%
│ ├─ 左/右锁骨 25HP IS 9 1.08%
│ └─ 左/右臂 30HP OS 77 6.0984%
│ ├─ 左/右肱骨 25HP IS 10 0.924%
│ ├─ 左/右桡骨 20HP IS 10 0.924%
│ └─ 左/右手 20HP OS 14 0.827904%
│ ├─ 左/右尾指 8HP OS 6 0.077616%
│ ├─ 左/右无名指 8HP OS 7 0.090552%
│ ├─ 左/右中指 8HP OS 8 0.103488%
│ ├─ 左/右食指 8HP OS 7 0.090552%
│ └─ 左/右拇指 8HP OS 8 0.103488%
└─ 左/右腿 30HP OS 14 9.8%
├─ 左/右股骨 25HP IS 10 1.4%
├─ 左/右胫骨 25HP IS 10 1.4%
└─ 左/右足 25HP OS 10 0.854%
├─ 左/右小趾 8HP OS 6 0.084%
├─ 左/右次小趾 8HP OS 7 0.098%
├─ 左/右三趾 8HP OS 8 0.112%
├─ 左/右二趾 8HP OS 9 0.126%
└─ 左/右大拇趾 8HP OS 9 0.126%

内/外部部位:部位被硬性分为内部部位和外部部位两种,此会影响一些伤害类型的目标选择
在原版智人种中,内部部位仅有:颅骨,大脑,舌,脊椎,肋骨,胸骨,心脏,肺,胃,肝,肾,锁骨,肱骨,桡骨,盆骨,股骨,胫骨

父/子部位:父部位与子部位是身体结构树中直接相连的上下级关系,某个部位直接挂接的上一级部位称为其父部位,直接挂接在它下面的部位称为其子部位

部位命中率:

  • 某部位及其子部位的命中率总和等于每一级父部位和其自身的覆盖率之积
    例如左足及五个左足趾总命中率为左足,左腿,躯干的覆盖率之积,即10%×14%×100%=1.4%10\%\times 14\%\times 100\%=1.4\%
  • 最子部位的命中率等于每一级父部位和其自身的覆盖率之积
    例如大脑的命中率为大脑,颅骨,头,颈部,躯干的覆盖率之积,即80%×18%×80%×7.5%×100%=0.864%80\%\times 18\%\times 80\%\times 7.5\%\times 100\%=0.864\%
  • 非最子部位的命中率等于每一级父部位和其自身的覆盖率之积,再和(1-直接子部位总覆盖率)乘积
    例如左手的命中率为左手,左臂,左肩,躯干的覆盖率之积和(1-五个指头覆盖率)的乘积,即14%×77%×12%×100%×(1−6%−7%−8%−7%−8%)=0.827904%14\%\times 77\%\times 12\%\times 100\%\times(1-6\%-7\%-8\%-7\%-8\%)=0.827904\%

远程

远程命中率公式为

命中率=(射击精度距离×距离乘数×武器精度×天气系数×致盲烟雾+黑暗亲和)×掩体×体型系数×处决或倒地 命中率=(射击精度^{距离}\times 距离乘数\times 武器精度\times 天气系数\times 致盲烟雾+黑暗亲和)\times 掩体\times 体型系数\times 处决或倒地

其中的具体变量意义为:

  • 射击精度:射手的精度,见灰机wiki或官方wiki
  • 距离:射手与目标间的距离,不包括射手所在格,例如 A空格B 的距离为2
  • 距离乘数:根据人物属性中的"精度系数(贴近/近/中/远)",进行线性插值.原版仅有"近视"基因修改了此数值.
  • 武器精度:武器在该距离下的精度
  • 天气系数:射手或目标至少有一人不在屋顶下时生效,各种雨天×80%,各种雾天×50%
  • 致盲烟雾:弹道路径上任意一格存在致盲烟雾,则×70%
  • 黑暗亲和:根据目标所处的光照环境,室内外黑暗环境+25%,室内外明亮环境-20%
  • 掩体:好像有点复杂不想研究
  • 体型系数:等于体型,但最大2最小0.5
  • 处决:目标倒地且距离小于4时,命中率×7.5
  • 倒地:目标倒地且距离大于4.5时,命中率×0.5

近战

武器近战伤害

此部分内容对应 灰机wiki或官方wiki

对于一个近战武器,我们设其各类型的伤害值分别为D1,D2,...,DnD_1,D_2,...,D_n,其对应的冷却时间为C1,C2,...,CnC_1,C_2,...,C_n

  1. 每种伤害被选中的权重为 伤害的平方 ,即 Di2D^2_i, 从而每种伤害的加权值为 Di×Di2∑Dk2=Di3∑Dk2D_i\times\dfrac{D_i^2}{\sum D^2_k}=\dfrac{D^3_i}{\sum D^2_k}
  2. 进而我们不难得出每次攻击的期望伤害为 DE=∑Di3∑Di2D_E=\dfrac{\sum D^3_i}{\sum D^2_i}
    每次攻击的期望冷却时间为 CE=∑CiDi2∑Di2C_E=\dfrac{\sum C_iD^2_i}{\sum D^2_i}
  3. 最终得到期望DPS为 DPS=DECE=∑Di3∑CiDi2DPS=\dfrac{D_E}{C_E}=\dfrac{\sum D^3_i}{\sum C_iD^2_i}

好麻烦好乱不想写了,之后有兴趣再说吧

护盾腰带

护盾腰带的"xxx%/s护盾充能速率"实际等价于每秒恢复xxx点盾
护盾腰带的伤害翻3.3倍,使用11伤害的武器攻击护盾腰带,实际会扣11*3.3=36.3点盾.注意该机制仅对护盾腰带生效,对盾螳,卫螽等不适用

伤害类型

如果你英文不错,建议参考官方wiki
如果你英文不好,可以参考本文以及灰机Wiki

另外还发现了一个blog写的不错旋风Monster的blog
还有灰机君的视频
谁懂花了两天拷打ai才搞明白机制然后发现有人造过轮子了的救赎感

过量保护

过量保护是一种对小人的防护机制,当单次攻击伤害大于击中部位的总血量时,有概率锁血,保留该部位的1点血量.具体概率为:

摧毁概率=(伤害量−当前血量)/部位总血量−最小过量范围最大过量范围−最小过量范围摧毁概率=\dfrac{(伤害量-当前血量)/部位总血量-最小过量范围}{最大过量范围-最小过量范围}

例如,割伤的过量范围为0% 10%0\%~10\%,若对满血40,现剩20血的部位造成23点割伤,则

摧毁概率=(23−20)/40−00.1−0=75%摧毁概率=\dfrac{(23-20)/40-0}{0.1-0}=75\%

从而在该例子中,有75%概率直接摧毁该部位,25%概率将该部位降至1血

链式传递

链式传递是伤害的一种传递机制,由伤害类型决定是否触发.当触发链式传递时,伤害会从受击部位出发,沿着器官树状图一路向父器官传递,直到遇到第一个外部部位,对该链条上的所有器官造成伤害(一般都是100%伤害)

例如,某部位树为:A(外部)-B(内部)-C(外部)-D(内部)-E(内部),无护甲,伤害100

  • 若受击部位为A(或C),他本身就是外部器官,从而不会传递,总计造成100伤害
  • 若受击器官为B(或D),其会向上传递,遇到第一个外部器官为A(或C),停止传递.从而这次伤害对AB(或CD)都造成100伤害,总计200伤害
  • 若受击器官为E,其会向上传递,途径D,他不是外部器官,接着传递;到达C,他是外部器官,停止传递.从而这次伤害对CDE都造成100伤害,总计300伤害
  • 注:在此例中,向上传递到C时已经是外部部位了,所以AB不会因BCD的传递而受伤

此机制会导致小人实际收到的伤害大于武器的面板伤害,在标准器官树和标准受击概率下,其期望伤害倍率为138.9%

割伤(Cut)

割伤是最常见的近战伤害类型.造成割伤时,有概率造成伤害分裂,将伤害增强并平均到多个部位.具体如下:

  • 有30%概率不分裂伤害,直接对部位造成伤害
  • 有45%概率将伤害分裂成两份,对每个部位造成70.6%伤害,总计141%
  • 有20%概率将伤害分裂成三份,对每个部位造成54.5%伤害,总计164%
  • 有5% 概率将伤害分裂成四份,对每个部位造成44.4%伤害,总计178%

以下内容是AI扒的,不一定正确仅供参考.我仅验证了伤害倍率是正确的
受伤流程如下:

  1. 选中一个外部部位作为初始受击部位,并对初始受击部位进行护甲减伤判定
  2. 根据概率决定分裂次数.30%概率不分裂,45%概率分裂一次,20%概率分裂成两次,5%概率分裂三次
  3. 在以下列表中随机选择分裂份数个部位,将其加入受击部位
    • 初始受击部位的子部位(例如足的子部位趾)
    • 初始受击部位的父部位(例如足的父部位腿)
    • 初始受击部位的父部位的子部位,不包括自己(例如足的父部位腿的子部位股骨)
  4. 对每个(初始)受击部位分别造成 2.4×伤害/(分裂份数+1.4)2.4\times 伤害/(分裂份数+1.4) 伤害,总计 2.4×伤害×分裂份数/(分裂份数+1.4)2.4\times 伤害\times 分裂份数/(分裂份数+1.4) 伤害
  5. 仅有不分裂时进行过量保护判定

割伤的期望伤害为 30%+45%×141%+20%×164%+5%×178%=1.35%30\%+45\%\times 141\%+20\%\times 164\%+5\%\times 178\%=1.35\%
割伤的过量范围为0%~10%,带入摧毁概率公式 摧毁概率=10×过量比例摧毁概率=10\times 过量比例,只需过量10%就能摧毁部位

**注意这段为猜测,尚未测试正确性!**由于护甲减伤判定是先于部位选择的,所以可以"逃护甲关税",例如,割伤击中了足,而众所周知rimworld的动力甲是不包括足部和手部的,假如此次割伤分裂到了足的父部位-腿上,那么伤害会绕过腿的护甲判定,直接对腿造成伤害,从而逃避了护甲.同样,也可能导致击中腿蔓延到足,导致足也减伤.后面所有护甲减伤先于部位选择的伤害类型都有可能由此问题.

刺伤(Stab)

刺伤分为近战刺伤和远程刺伤两种,其拥有独特的链式传递特性:

  • 造成近战刺伤时,有60%概率将40%伤害传递到内部的随机子部位,并将外部伤害衰减为原来的75%,造成总共115%伤害.
  • 造成远程刺伤时,若击中外部部位,则有60%概率将40%伤害传递到内部的随机子部位,并将外部伤害衰减为原来的75%,造成总共115%伤害
  • 造成远程刺伤时,若击中内部部位,则进行链式传递,对每个内部部位造成40%伤害,每个外部部位造成75%伤害,造成总共75%+40%x75\%+40\%x伤害,xx为内部部位个数

以下内容是AI扒的,不一定正确仅供参考.我仅验证了远程刺伤能够造成二次穿透,近战暂时未发现二次穿透
受伤流程:

  1. 选取初始受击部位:
    • 若是近战刺伤,随机选中一个外部部位作为受击部位
    • 若是远程刺伤,随机选中一个任意部位作为受击部位
  2. 若选中的部位是外部部位,则有60%概率选取其中一个内部子部位代替选中部位作为受击部位
  3. 对受击部位进行护甲减伤判定和过量保护判定
  4. 进行链式传递,对所有的内部部位造成40%伤害,对所有的外部部位造成75%伤害

例如,某部位树为:A(外部)-B(内部)-C(外部)-D(内部)-E(内部),无护甲,伤害100

  • 若为近战刺伤,则初始选中只能选中A/C(近战仅能选中外部部位),同时有60%概率传递到B/D(内部子部位),若传递,则A/C受到75伤害,B/D受到40伤害,总伤害115
  • 若为远程刺伤,则ABCDE都可作为初始选中(任意部位)
    1. 若选中A/C,则其同上面的近战,至多只能造成115伤害
    2. 当选中B/D时,由于B/D是内部部位,无法二次选中内部子部位,进行链式传递,造成115伤害
    3. 当选中E时,由于E是内部部位,无法二次选中内部子部位,进行链式传递,即C受到75伤害,D,E受到40伤害,总伤害155

近战刺伤仅能传递一次,期望伤害为 40%+60%×115%=109%40\%+60\%\times 115\%=109\%
远程刺伤理论传递无上限,但鉴于受击概率影响,期望伤害也并不会提高很多.
刺伤过量保护范围为40%~100%,带入摧毁概率公式 摧毁概率=(过量比例−0.4)/0.6摧毁概率=(过量比例-0.4)/0.6 ,得溢出100%才能摧毁,非常难摧毁部件

另外值得一提的是原版远程刺伤只有重标枪(25伤10穿),脊刺(30伤100穿)和骨刺射击(单爪兽7伤100穿).原版可造成两次传递的内部部位树有且仅有 头(外部)-颅骨-大脑

钝伤(Blunt)

钝伤除了众所周知的会把伤害延伸到父部位以外,还有40%概率吸走外部的10%~20%伤害,并对随机子部位造成10%~20%+20%~35%伤害

以下内容是AI扒的,不一定正确仅供参考.我仅验证了内部打击的正确性.
受击流程:

  1. 选中一个外部部位作为初始受击部位,并对初始受击部位进行护甲减伤判定
  2. 有40%概率触发内部打击,从伤害中抽取10%~20%,将外部实际受伤变为原始伤害的80%~90%
  3. 对受击部位造成伤害,若伤害溢出,则直接摧毁部位,并将溢出的伤害传递到其父部位,如此循环直至无溢出或无父部位
  4. 若触发内部打击,则对受击部位的随机子部位造成10%~20%(在2中被抽走的伤害)+20%~35%的伤害
  5. 若击中躯干及其非头部分支,有较低概率造成2s眩晕,若击中头及其分支,有较高概率造成2s眩晕

打躯干的眩晕概率表:

伤害占躯干耐久比例 眩晕概率
40%以下 0%
50% ~3%
90% ~15%

打头部分支的眩晕概率表:

伤害占躯干耐久比例 眩晕概率
4% 20%
10% ~38%
25% ~57%
50% 100%

钝伤的期望伤害为 100%+40%×(20%+35%)/2=111%100\%+40\%\times (20\%+35\%)/2=111\%
钝伤没有过量保护,伤害溢出必定破坏部位.
若选中了没有子部位的外部部位,同时触发了内部打击时,被抽走的10%~20%伤害将直接消失.

子弹伤(Bullet)

子弹伤是最常见的伤害类型了,当其命中内部子器官时候,会对父器官也造成同等伤害

受击流程如下:

  1. 选中任意部位作为初始受击部位,并计算护甲减伤
  2. 进行链式传递
  3. 对每个部位都进行过量保护判定

子弹伤的过量范围为0%~70%,同样非常难摧毁部件

炸伤(Bomb)

炸伤是爆炸武器的伤害类型,造成伤害时同样有概率分裂,最高造成双倍伤害

受击流程:

  1. 随机选择1~4个部位作为受击部位
  2. 将伤害均分到受击部位,并分别计算护甲减伤
  3. 进行链式传递

炸伤没有过量保护,原版的炸伤通常为固定10%穿甲

抓伤(Scratch)

动物的伤害类型,与割伤类似,固定选双目标,分别67%伤害,总共134%伤害

以下内容是AI扒的,不一定正确仅供参考.全部未经验证
受伤流程如下:

  1. 选中一个外部部位作为初始受击部位,并对初始受击部位进行护甲减伤判定
  2. 在以下列表中随机选择1个外部部位,将其加入受击部位
    • 初始受击部位的子部位(例如足的子部位趾)
    • 初始受击部位的父部位(例如足的父部位腿)
    • 初始受击部位的父部位的子部位(例如足的父部位腿的子部位股骨)
  3. 对这两个受击部位分别67%伤害,总共134%伤害.若不存在第二个受击部位,则仅对初始受击部位造成100%伤害
  4. 对每个部位都进行过量保护判定

杂类伤害

注意,本部分全是ai扒的,未进行任何验证

眩晕(Stun):每点stun伤害实际造成0.5s眩晕,不受体型影响

咬伤(Bite):动物撕咬伤害,与子弹伤相同,但仅命中外部部位(所以实际也无法造成额外伤害)

箭伤(Arrow/ArrowHighVelocity):完全同子弹伤

压伤(Crush):环境伤害(屋顶坍塌等),完全同子弹伤

捅(Poke):类似刺伤,但内部选中概率降为40%,伤害类型替换为钝伤(没有钝伤的特性)

烧伤(Flame/Burn):

  1. 随机选中任意部位,进行护甲减伤(热能护甲类别)
  2. 若伤害 ≥ 15,则分裂到多个部位(同炸伤逻辑)
  3. 若未被护甲减伤,有概率使目标着火

烧伤的特点是疼痛高,不流血

冻伤(Frostbite):无视护甲减伤的纯伤害,且仅从固定列表的权重随机选取部位受伤.

原版人类可受冻伤的部位及权重:

部位 冻伤权重
趾 10
手指 8
耳 5
鼻 5
颌骨 2
手 0.5
足 0.5

气化(Vaporize):业火炮的伤害,同炸伤

酸蚀(AcidBurn):同烧伤,但不会点燃目标

附加伤害(extraDamages)

本部分为AI扒取,进行了验证但又可能验证不完全,仅供参考

一些mod会定义附加伤害(extraDamages)和附加近战伤害(extraMeleeDamages),该伤害不受武器品质和小人近战伤害系数影响(是否受承伤系数影响取决于伤害定义),若未定义穿甲值(armorPenetration),则穿甲值为伤害×近战伤害系数×1.5%,否则为定义值

特别地,ai说原版仅有DamageWorker_Nerve这一个worker在附加伤害中会受到品质影响,原版应该是只有麻痹毒弩使用了该worker

衣物护甲

护甲计算

衣物护甲的计算方式为:

(基础值+材料防护能力×材料效果乘数)×品质偏移(基础值+材料防护能力\times 材料效果乘数)\times 品质偏移

  • 材料防护能力:材料的防御数值,即游戏中材料的"护甲-利器",以及服装显示的 材料(骇人皮革):127%
  • 材料效果乘数:服装自带的属性,即游戏中服装的 材料效果乘数 30%

材料整体分为金属/皮革/纤维三类.

  • 金属防护能力较低,但金属制品一般本身材料效果乘数高.通常在90%左右
  • 皮革或纤维自身防护能力高,但皮革纤维制品一般本身材料效果乘数低,通常在30%左右

例如:

  • 原版玻璃钢板甲的利防为 114%×90%=102114\%\times 90\%=102%.若为传奇品质,则为102%×1.8=183.6%102\%\times 1.8=183.6\%
  • 原版敲击兽大衣的利防为 208%×30%=62.4%208\%\times 30\%=62.4\%.若为传奇品质,则为62.4%×1.8=112.32%62.4\%\times 1.8=112.32\%

减伤计算

此部分可参考海星地联的视频

对于单层护甲,我们设护甲值为AA,武器穿甲值为PP,我们称ΔA:=A−P\Delta A:=A-P为有效护甲值.此时取一个[0,100][0,100]的随机数kk与其进行比较

  • 若k<ΔA/2k<\Delta A/2,则伤害无效
  • 若ΔA/2≤k<ΔA\Delta A/2\leq k<\Delta A,则伤害减半,并传递到下一层
  • 若ΔA≤k\Delta A\leq k,则无视该护甲

则当ΔA<100\Delta A<100时

  • 有ΔA/2\Delta A/2概率使得伤害无效
  • 有ΔA−ΔA/2=ΔA/2\Delta A-\Delta A/2=\Delta A/2的概率受到减半伤害
  • 有1−ΔA/2−ΔA/2=1−ΔA1-\Delta A/2-\Delta A/2=1-\Delta A概率受到全额伤害

从而其期望伤害为 ΔA2×12+(1−ΔA)=1−3ΔA4\dfrac{\Delta A}{2}\times\dfrac{1}{2}+(1-\Delta A)=1-\dfrac{3\Delta A}{4}

当100≤ΔA<200100\leq\Delta A<200时

  • 有ΔA/2\Delta A/2概率使得伤害无效
  • 不可能受到全额伤害,此时100≤ΔA100\leq\Delta A恒成立
  • 有1−ΔA/21-\Delta A/2概率受到减半伤害

从而此时数学期望为 12×(1−ΔA2)=12−ΔA4\dfrac{1}{2}\times\left(1-\dfrac{\Delta A}{2}\right)=\dfrac{1}{2}-\dfrac{\Delta A}{4}

从而整体公式为

{1,ΔA<01−3ΔA4,0≤ΔA<10012−ΔA4,100≤ΔA<2000,ΔA≤200\begin{cases} 1,&\Delta A<0\\ 1-\dfrac{3\Delta A}{4},&0\leq\Delta A<100\\ \dfrac{1}{2}-\dfrac{\Delta A}{4},&100\leq\Delta A<200\\ 0,&\Delta A\leq200 \end{cases}

若使用xx代替100ΔA100\Delta A,使用小数代替繁琐的分数,并去除1和0这两个极端值,则化为我们熟悉的公式:

{1−0.75x,x<10.5−0.25x,1≤ΔA<2\begin{cases} 1-0.75x,&x<1\\ 0.5-0.25x,&1\leq\Delta A<2\\ \end{cases}

换言之,当有效护甲值低于100%时,每点护甲增加折合0.75%的护甲承伤减少.当有效护甲高于100%时,每点护甲增加折合0.25%的护甲承伤减少

对于多层护甲,则是单层护甲的简单嵌套.由于乘法是有交换律的,实际先计算哪个没区别(实际会因为扣除耐久而有区别)

护甲曲线生成器

原版护甲分析

  • 极佳防弹头盔+极佳防弹背心+极佳防弹夹克+极佳防弹裤(81.9;130;71.5;71.5) 在20%穿甲下护甲承伤为43.1%

    点击看穿甲-承伤曲线

    ArmorPenetration(%)DamageMultiplier0204060800.000.250.500.751.0020%,0:431

  • 极佳钢铁简易头盔+极佳钢铁板甲(58.5;105.3) 在20%穿甲下护甲承伤为42.3%

    点击看穿甲-承伤曲线

    ArmorPenetration(%)DamageMultiplier0204060800.000.250.500.751.0020%,0:423

  • 传奇骑士头盔+传奇敲击兽皮防尘大衣+传奇防弹背心+传奇敲击兽皮T恤衫+传奇级防弹裤(200;112.3;180;74.9;99) 在20%穿甲下护甲承伤为15.2%

    点击看穿甲-承伤曲线

    ArmorPenetration(%)DamageMultiplier0204060800.000.250.500.751.0020%,0:152

  • 传奇骑士头盔+传奇骑士装甲+传奇敲击兽皮T恤衫(200;200;74.9) 在20%穿甲下护甲承伤为9.2%

    点击看穿甲-承伤曲线

    ArmorPenetration(%)DamageMultiplier0204060800.000.250.500.751.0020%,0:092

可以看到,在20%穿甲下,骑士套的护甲承伤系数为9.2%,大约相当于血量翻10.9倍.敲击兽皮防尘大衣的护甲承伤系数为15.2%,大约相当于血量翻6.6倍.

灵能

此部分内容对应 灰机wiki或官方wiki

文中的[影响]字样简写意为:持续时长受到目标心灵敏感度影响,即实际时长乘以目标心灵敏感度

1级灵能

  • 止痛:0.25s前摇25释放半径,8熵2%精神力消耗,为目标施加"心灵麻痹"状态,持续120s[影响],使其疼痛×10%
  • 重负:0.25s前摇30释放半径,8熵1%精神力消耗,为目标施加"心灵重负"状态,持续20s,使其移动能力最大40%,对友军使用-15好感
  • 麻痹:0.25s前摇25释放半径,12熵1%精神力消耗,对目标造成3s眩晕[影响],对友军使用-15好感
  • 恒星狭缝:0.2s前摇25释放半径14光亮半径,0熵8%精神力消耗,在目标位置生成"恒星狭缝",持续五天,造成14范围内亮度大于0,10半径内亮度大于50%
  • 信赖之语:2s前摇1释放半径,60%精神力消耗,降低囚犯12抵抗值
  • 块堆折跃:1s前摇25释放半径,14熵4%精神力消耗,把最近的最多5块岩石或钢渣块堆折跃分散到目标点附近

2级灵能

  • 致盲脉冲:1s前摇25释放半径4爆炸半径,20熵1%精神力消耗,对范围内生物施加"心灵致盲"状态,持续30s,视觉能力-50%×目标心灵敏感度,对友军使用-15好感
  • 熵转移:1s前摇25释放半径,无消耗,清空施法者心灵熵,并对目标施加"心灵休克"状态,持续一天,意识上限10%,对友军使用-15好感
  • 水传送:1s前摇25释放半径2爆炸半径,25熵1.5%精神力消耗,清除范围内火焰,并破除范围内隐身
  • 欢欣之语:2s前摇1释放半径,40%精神力消耗,对目标施加"欢欣暗示"状态,持续5天[影响],脑部效率-20% 心情+30

3级灵能

  • 召唤:0.25s前摇20释放半径,20熵1%精神力消耗,强制目标前往施法者,持续8s[影响],对友军使用-15好感
  • 眩晕脉冲:1s前摇25释放半径4爆炸半径,30熵2%精神力消耗,对范围内生物施加"心灵眩晕"状态,持续20s[影响],使目标随机徘徊,并有概率呕吐,对友军使用-15好感
  • 混乱折跃:0.25s前摇25释放半径,18熵2%精神力消耗,将目标随机传送至原位置外7至25格的位置,并造成1.17s到2s的随机眩晕,目标体型不得超过3.5
  • 迷爱之语:2s前摇1释放半径,50%精神力消耗,对目标施加"心灵迷爱"状态,持续8天[影响],使其对另一指定目标的恋爱相关系数×10,求婚选择权重×10,分手选择权重×0.1,性行为相关机会系数×10,看法+40

4级灵能

  • 折跃:0.25s前摇28释放半径,25熵2%精神力消耗,将目标传送至28格内且有视线的选定位置,并造成0.3s到1s的随机眩晕,目标体型不得超过3.5
  • 升壁:1s前摇25释放半径,35熵2%精神力消耗,在目标点生成十字形的5格"垒石"临时掩体,每个100耐久,持续166.7s
  • 烟雾:1s前摇25释放半径4爆炸半径,30熵2%精神力消耗,在目标点生成致盲烟雾
  • 注意集中:0.25s前摇28释放半径,15熵3%精神力消耗,对目标施加"心灵集中"状态,持续60s[影响],使其视觉听觉移动能力×130%
  • 宁神之语:2s前摇1释放半径,30%/50%/70%精神力消耗(轻微/较重/极重),结束目标精神状态(越狱除外),并施加"心灵休克"状态,持续246s[影响],使其意识上限10%,对于0%心灵敏感度的生物依然适用,且无负面效果

5级灵能

  • 激怒:0.25s前摇20释放半径,40熵4%精神力消耗,令目标陷入"狂暴"精神状态(机械体陷入"敌我识别系统错乱"精神状态),持续15s[影响],对友军使用-75好感
  • 隐身:1s前摇20释放半径,45熵3%精神力消耗,对目标施加"心灵隐形"状态,持续15s,使目标隐形
  • 闪电风暴:1s前摇20释放半径14爆炸半径,65熵4%精神力消耗,生成持续164s的局部闪电风暴,实际影响半径取整为14格,首次闪电延迟1至3s,之后每5.33至13.33s随机落雷,每次落雷为2爆炸半径内造成10点火焰伤害,无穿甲,并可能引燃目标,目标点必须无屋顶,对友军使用-35好感
  • 启迪之语:2s前摇1释放半径,80%精神力消耗,为殖民者施加合适的随机灵感
  • 远距离折跃:5s前摇5爆炸半径,70%精神力消耗,将半径5以内的己方生物折跃到有己方目标的已加载地图.在远征队使用时直接折跃整个远征队(不得负重过量)

6级灵能

  • 狂暴脉冲:1s前摇15释放半径3爆炸半径,65熵6%精神力消耗,令范围内目标陷入"狂暴"精神状态(机械体陷入"敌我识别系统错乱"精神状态),持续10s[影响],对友军使用-75好感
  • 猎杀人类脉冲:1s前摇35释放半径28爆炸半径,50熵4%精神力消耗,令范围内动物陷入"猎杀人类"精神状态,持续60s[影响],对友军使用-75好感
  • 群体混乱折跃:1s前摇25释放半径8爆炸半径,40熵3%精神力消耗,将范围内生物和物品随机传送至原位置外7至25格的位置,并造成1.17s到2s的随机眩晕,目标体型不得超过3.5,目的地需要可通行且有视线,对友军使用-5好感
  • 折跃护盾:1s前摇25释放半径5有效半径,65熵4%精神力消耗,生成持续15s的双向护盾,拦截射入射出子弹
  • 心灵震颤:12s不可打断6~60爆炸半径,50%精神力消耗,令6~60半径内生物陷入"狂暴"精神状态,持续4.8天[影响],并对施法者施加"心灵休克"状态,持续4.8天,使其意识上限10%.并使施法者所在地图及世界距离4格以内的其他地图和远行队会获得"心灵震颤回响"心情,持续10天,每人最多叠加3层,每层心情-12.所有派系好感-10,对友军使用则额外-65好感

成瘾品过量

此部分内容对应 灰机wiki或官方wiki

使用烈性成瘾品时,会为小人添加"成瘾品过量"状态,此状态每天固定下降100%

  • 0%~50% 无效果且不显示
  • 50%~75% 意识最大50% 平均0.3天触发一次呕吐
  • 75%~100% 意识最大10% 平均3天死亡 平均2.5天触发大脑化学损伤
  • 100% 死亡

具体机制如下

  • 随机过量:使用烈性成瘾品时,有概率直接将过量值调整为85%~99%.薄片1.5%概率,呀呦粉1%概率,活力水清醒丸0.5%概率
  • 累计过量:每次使用烈性成瘾品会增加 (18%∼35%)×体型(18\%\sim 35\%)\times 体型 的固定过量值

基因修正如下

  • 依赖基因:不会随机过量,不会随机成瘾,仍会累计过量,仍会耐受
  • 耐受基因:随机过量时有50%概率不随机过量,成瘾时有50%概率不成瘾,累计过量时有50%概率不累计过量,耐受累计减半
  • 免疫基因:不会随机过量,不会随机成瘾,不会累计过量,不会耐受

在不考虑随机过量的情况下,对于体型为nn的小人,两瓶药的最小安全间隔应为0.35/n0.35/n天,对于体型1的小人则为0.35天,即8.4小时.一天能磕三瓶药也不会累计过量
若不考虑随机过量仅考虑数学期望值,对于体型为nn的小人,两瓶药的期望安全间隔为(18+35)/2n(18+35)/2n天,对于体型为1的小人则为0.265天,即6.36小时,一天能磕四瓶药,基本不会累计过量(除非你脸太黑连续抽到35%)
同样的,对于耐受基因,期望安全间隔为0.1325天,即3.18小时磕一瓶药,一天能磕8瓶药基本不会累计过量

事件

此部分未经验证

罕见的敲击兽:0.7权重,最小间隔13天,数量2~6只

人口对事件概率影响

注意此部分全部为AI扒源码生成,本人未作任何验证,点开查看

一、基本概念

populationEffect 是 IncidentDef 中的一个属性,用于影响事件触发概率。它有以下枚举值:

枚举值 XML写法 偏移量 含义
None (不填写或None) - 无人口效果,事件概率不受人口意图影响
IncreaseMedium IncreaseMedium 0 中等增长 - 事件概率因子直接等于PopulationIntent
IncreaseEasy IncreaseEasy -0.4 简单增长 - 事件概率因子 = PopulationIntent - 0.4
IncreaseHard IncreaseHard +0.4 困难增长 - 事件概率因子 = PopulationIntent + 0.4

二、核心计算公式

事件触发概率因子(Population Intent Factor):

1
事件触发概率因子 = max(PopulationIntent + 偏移量, minIncChancePopulationIntentFactor)

参数说明:

  • minIncChancePopulationIntentFactor 默认值为 0.05 (定义在 StorytellerCompProperties 中)
  • PopulationIntent 是游戏动态计算的"人口意图"值

三、PopulationIntent 的计算

PopulationIntent 表示游戏 storyteller 想要增加人口的意图强度,取值范围通常为 -1.0 ~ 8.0

计算公式:

1
2
PopulationIntent = populationIntentFactorFromPopCurve(当前调整后人口) 
× populationIntentFactorFromPopAdaptDaysCurve(适应天数)

3.1 人口因子曲线 (populationIntentFactorFromPopCurve)

原版 BaseStoryteller 的曲线定义:

1
2
3
4
5
6
7
8
9
10
<populationIntentFactorFromPopCurve>
<points>
<li>0, 8.0</li>
<li>1, 2.0</li>
<li>4, 1.0</li>
<li>7, 0.35</li>
<li>11, 0.0</li>
<li>20,-1.0</li>
</points>
</populationIntentFactorFromPopCurve>
调整后人口 人口意图因子
0 8.0
1 2.0
4 1.0
7 0.35
11 0.0
20 -1.0

解读:

  • 人口越少,游戏越想给你加人口(因子高)
  • 人口越多(超过11人),游戏会不想给你加人口(因子为0甚至负数)
  • 这是游戏的负反馈机制,让殖民地人口趋于稳定

3.2 适应天数因子曲线 (populationIntentFactorFromPopAdaptDaysCurve)

1
2
3
4
5
6
<populationIntentFactorFromPopAdaptDaysCurve>
<points>
<li>( 0, 0)</li>
<li>( 8, 1)</li>
</points>
</populationIntentFactorFromPopAdaptDaysCurve>
适应天数 因子
0 0
8 1

解读:

  • 适应天数越高(你越适应了当前人口),游戏越想给你加人口
  • 适应天数 < 8天时,因子在 0~1 之间线性插值
  • 适应天数 ≥ 8天时,因子固定为 1

四、调整后人口 (AdjustedPopulation) 的计算

4.1 基本公式

1
调整后人口 = Σ 各殖民者/囚犯/奴隶的贡献值 + 任务借出人数

4.2 各类型单位的贡献值

类型 贡献值计算
成年殖民者 1.0
未成年殖民者 0.3~1.0 (按生物学年龄/成年年龄比例线性插值)
婴儿 0
可招募囚犯(成年) 0.5
不可招募囚犯(成年) 0.25
奴隶(成年) 0.75

4.3 源码参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// StorytellerUtilityPopulation.cs
private static float AdjustedPopulationValue(Pawn pawn)
{
if (pawn.DevelopmentalStage.Baby())
{
return 0f; // 婴儿贡献为0
}

// 未成年按年龄比例: 0.3 ~ 1.0
float num = (pawn.DevelopmentalStage.Adult() ? 1f : Mathf.Lerp(0.3f, 1f,
(float)pawn.ageTracker.AgeBiologicalYears / pawn.ageTracker.AdultMinAge));

if (pawn.IsPrisonerOfColony)
{
// 可招募囚犯: 0.5倍, 不可招募: 0.25倍
num = ((!pawn.guest.Recruitable) ? (num * 0.25f) : (num * 0.5f));
}
else if (pawn.IsSlaveOfColony)
{
num *= 0.75f; // 奴隶: 0.75倍
}
return num;
}

五、适应天数 (AdaptDays) 的机制

适应天数是一个动态值,表示殖民地对当前人口的"适应程度":

  • 增长: 随时间自然增长(每6小时增长约0.005天)
  • 减少: 当殖民者死亡或被击倒时减少
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!-- 死亡时减少的适应天数 -->
<adaptDaysLossFromColonistLostByPostPopulation>
<points>
<li>( 0, 30)</li> <!-- 人口≤11时减少30天 -->
<li>(11, 30)</li>
<li>(20, 20)</li> <!-- 人口20时减少20天 -->
</points>
</adaptDaysLossFromColonistLostByPostPopulation>

<!-- 被击倒时减少的适应天数 -->
<adaptDaysLossFromColonistViolentlyDownedByPopulation>
<points>
<li>(1, 8)</li>
<li>(2, 6)</li>
<li>(3, 6)</li>
<li>(11, 5)</li>
<li>(20, 3.5)</li>
</points>
</adaptDaysLossFromColonistViolentlyDownedByPopulation>

六、完整计算实例

场景假设:

  • 4个成年殖民者
  • 1个可招募成年囚犯
  • 1个未成年殖民者(生物学年龄10岁,成年年龄18岁)
  • 游戏已进行较久(适应天数 > 8)
  • 事件: HAR_LL_Id_a 年幼的决战种, populationEffect = IncreaseMedium

计算步骤:

Step 1: 计算调整后人口

1
2
3
4
5
成年殖民者: 4 × 1.0 = 4.0
可招募囚犯: 1 × 0.5 = 0.5
未成年殖民者: 1 × Lerp(0.3, 1.0, 10/18) = 1 × 0.7 ≈ 0.7

调整后人口 = 4.0 + 0.5 + 0.7 = 5.2

Step 2: 查人口因子曲线

1
2
人口 = 5.2 时,在曲线 (4, 1.0) 和 (7, 0.35) 之间插值
人口因子 ≈ 1.0 - (5.2-4)/(7-4) × (1.0-0.35) = 1.0 - 0.26 = 0.74

Step 3: 计算PopulationIntent

1
2
适应天数 > 8, 适应天数因子 = 1.0
PopulationIntent = 0.74 × 1.0 = 0.74

Step 4: 计算事件概率因子

1
2
IncreaseMedium 偏移量 = 0
事件概率因子 = max(0.74 + 0, 0.05) = 0.74

Step 5: 计算最终触发概率

1
2
最终概率 = baseChance × 当前人口因子 × 事件概率因子 × 其他修正
= 200 × ... × 0.74 × ...

七、各populationEffect的实际意义

IncreaseMedium (中等增长)

  • 偏移量 = 0
  • 事件概率直接跟随PopulationIntent波动
  • 人口少 → 高概率触发
  • 人口多 → 低概率触发
  • 最常用的设置,实现负反馈平衡

IncreaseEasy (简单增长)

  • 偏移量 = -0.4
  • 即使PopulationIntent较低,也能有不错的触发概率
  • 适合希望更频繁触发的人口增长事件

IncreaseHard (困难增长)

  • 偏移量 = +0.4
  • 需要更高的PopulationIntent才能触发
  • 适合不想频繁触发的人口增长事件

None

  • 不受人口意图影响
  • 触发概率仅取决于baseChance和其他因素
  • 适合与人口无关的事件

八、源码位置参考

文件 说明
Source/RimWorld/IncidentDef.cs 定义 populationEffect 字段
Source/RimWorld/IncidentPopulationEffect.cs 枚举定义
Source/RimWorld/StorytellerComp.cs 核心计算逻辑 IncidentChanceFactor_PopulationIntent
Source/RimWorld/StorytellerUtilityPopulation.cs PopulationIntent 计算
Source/RimWorld/StorytellerDef.cs 曲线定义
Defs/Core/Storyteller/Storytellers.xml 原版曲线参数

九、总结

populationEffect 是 RimWorld 讲述者系统的一部分,用于动态调整人口增长类事件的触发概率:

  1. 目的: 实现负反馈机制,让殖民地人口趋于稳定
  2. 机制: 根据当前人口和适应天数动态调整触发概率
  3. 应用: 人口少时多送人,人口多时少送人

对于 IncreaseMedium:

  • 这是最"中立"的设置
  • 事件触发概率完全取决于当前游戏状态
  • 当人口 ≤ 4 时,触发概率较高
  • 当人口 ≥ 11 时,触发概率接近或等于最低值 0.05
评论