是幸存者笔记,绝不是开发者笔记

破解保险箱

需求

  • 听力正常

  • 听诊器 或 听力增强CBM

算法

  1. 如果不满足需求, 只能直接拨动刻度盘, 每次花费 10s, 有 $\frac{1}{30^3}$ 的几率成功

  2. 满足要求, 则开始计算破解耗时

  3. 耗时 = MAX(150 - 20 * (机械学 - 3) - 10 * (感知 - 8), 30) 分钟

  4. 行动点数 = 耗时(秒) * 100

安装生化插件

需求

  • 无故障的无菌生化插件

算法

计算生化操作技能

  1. 等级 = 智力 * 4 + 主技能 * 4 + 次技能 * 3 + 最次技能 * 1
  2. 若职业为住院医师/生化外科医生, 等级 += 3
  3. 若职业为人体强化协会会员/全自动医疗仪专家, 等级 += 7
  4. 等级 = 等级 - MIN(40, 等级 - 等级 / 10)

计算安装成功率

  1. 若开启 MOD “完全可靠的医疗仪”, 并且使用全自动医疗仪安装, 则成功率 100%
  2. 计算生化操作技能等级: 若有全自动医疗仪, 则技能主次顺序为: 急救, 计算机学, 电子学. 反之顺序为: 电子学, 急救, 机械学.
  3. 计算协助智力点数,增加到生化操作技能上
  4. 难度参数 = 生化操作技能 / (4 * 生化插件安装难度)
  5. 成功率 = (100 * 难度参数) / 难度参数 + sqrt(难度参数)
  6. 耗时 = 难度参数 * 20分钟

备注

生化插件安装难度可查询: https://cdda-trunk.aloxaf.cn

回血速率

自然回血(无视吧,太少了)

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
at_rest_quality = if sleep 1 else 0

// 基本恢复速率, 曾经是 0.01
heal_rate = 0.0001
// 最终恢复速率
final_rate = 0.0

// healing_awake 参考
// 急速自愈 2.0 高速自愈 0.66 快速自愈 0.2 高速新陈代谢 0.2
// 虚弱 -0.002 衰退 -0.02 解体 -0.08
awake_rate = heal_rate * mutation_value("healing_awake")
if awake_rate > 0:
final_rate += awake_rate
elif at_rest_quality < 1:
final_rate += (1 - at_rest_quality) * awake_rate

// healing_rest 参考
// 急速自愈 1.5 高速自愈 0.5 快速自愈 0.5 高速新陈代谢 0.5
// 虚弱 -0.25 慢速自愈 -0.25 自愈弱化 -0.66 自愈无效 -0.9
asleep_rate = 0.0
if at_rest_quality > 0:
alseep_rate = at_rest_quality * heal_rate * (1 + mutation_value("healing_rest"))
if alseep_rate > 0.0:
final_rate += asleep_rate * (1 + healthy / 200)

// 身强力壮 0.2 钢筋铁骨 0.3 不可战胜 0.4
// 小个子 -0.05 毫不起眼 -0.25 瘦弱 -0.25 体型细小 -0.3 弱不禁风 -0.5 柴毁骨立 -0.75
primary_hp_mod = mutation_value( "hp_modifier" );
if primary_hp_mod < 0.0:
// HP mod can't get below -1.0
final_rate *= 1.0f + primary_hp_mod;

TL;DR

首先基本回血速率 0.0001(以前是 0.01)。

清醒回血速率为基本回血速率乘上特性加成,默认为 0(也就是不回血),最高可以由急速自愈提供 2.0 的加成。
睡眠回血速率为基本回血速率乘上特性加成,默认为 1(也就是只提供基本回血),最高急速自愈提供 2.5,最低自愈无效提提供 0.1(不增反减)。然后睡眠回血速率还会受到健康(-200~200)影响,最高翻倍,最低归 0(完全不回血)。

最终回血速率:白天就是清醒回血速率,晚上为两个相加,然后这个值再乘上特性加成,最高不可战胜提供 1.4,最低柴毁骨立提供 0.25。

这个数值非常小……一个没有任何特性健康为 0 的正常人睡 8 个小时大概能自然回血 3 点……

科学回血

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
42
43
44
45
46
rate_medicine = 0.0
bandaged_rate = 0.0
disinfected_rate = 0.0


// HEAL_RATE base_mods=2 scaling_mods=2
// HEAL_TORSO base_mods=50
// HEAL_TORSO base_mods=150
// level 1-2(极差) 3-4(不佳) 5-6(普通) 7-8(好)
// 9-10(良好) 11~12(优秀) 13-14(出色) 15-16(完美)
def effect::get_amount(arg):
ret = get("base_mods") + get("scaling_mods") * (min(8, level) - 1)

if bandaged:
bandaged_rate += bandaged.get_amount("HEAL_RATE") / 24hours

if body_part = head:
bandaged_rate *= bandaged.get_amount("HEAL_HEAD") / 100
if body_part = torso:
bandaged_rate *= bandaged.get_amount("HEAL_TORSO") / 100


if disinfected:
disinfected_rate += disinfected.get_amount("HEAL_RATE") / 24hours

if body_part = head:
disinfected_rate *= disinfected.get_amount("HEAL_HEAD") / 100
if body_part = torso:
disinfected_rate *= disinfected.get_amount("HEAL_TORSO") / 100

rate_medicine += bandaged_rate + disinfected_rate
rate_medicine *= 1.0 + mutation_value("healing_resting")
rate_medicine *= 1.0 + at_rest_quality

if bandaged and disinfected:
rate_medicine *= 2

if healthy > 0:
rate_medicine *= 1.0 + healthy / 200
else:
rate_medicine *= 1.0 + healthy / 400

primary_hp_mod = mutation_value( "hp_modifier" );
if primary_hp_mod < 0.0:
// HP mod can't get below -1.0
rate_medicine *= 1.0f + primary_hp_mod;

TL;DR

运用医学手段后的回血,分为包扎回血和消毒回血,两者算法一致,主要受包扎/消毒效果影响。“极差”没有加成,“好”及以上可以翻八倍。其中头部和身体会再乘上特殊加成,头部 0.5,身体 1.5。

最终回血数值等于包扎回血加上消毒回血,再乘上特性加成(默认 1,最高急速自愈 2.5,最低自愈无效 0.1),如果在睡觉的话再翻倍,如果同时包扎&消毒就再翻倍,然后再乘上健康(取值 -200~200)加成(满值翻倍,负满值减半),然后如果有改变HP上限的特性(身强力壮、弱不禁风等等),也等比例应用到回血数值上。

一个没有特性健康为 0 正常人极差包扎+极差消毒,睡 8 个小时,四肢能回血 5 点。看起来很少,毕竟是“极差”的处理,如果是“良好”的话,这个数字就可以达到 40。所以提升急救学等级 & 使用更高级的包扎/消毒材料就很有必要了。

关于健康

虽然表面上说健康值范围是 -200~200,但通过饮食能达到的健康值上限基本为 10。同时因为辐射等原因健康值可能暴跌到负三四百甚至五六百。这个时候回血就会变成负值。。。

生化插件能耗改动

9702 以后,生化能量使用了焦耳热单位,最小单位为 mJ,同时由于数据类型的限制带来了一个上限:2147483647mJ,大约是 2100 kJ。因为是数据类型本身带来的限制,这个上限不大可能改变了。

当然这样生化插件就被削地不成样子了,于是 9748 后,生化插件的耗能也开始进行改动,究竟是强了还是弱了并不好说,把数据列举出来各位自行判断。(不过值得吐槽的是 CBM 界面的耗能显示没有调整,导致很多插件耗能显示为 0……)

注:1 W 即 1 J/s,也就是 1 J/回合。“1 J; 1 W”表示启动耗能 1 J,功率 1W

插件名 旧版耗能 新版耗能
肾上腺素泵 50 kJ 5 J
警报系统 1 / 600 kW 1 W
单分子刀刃 200 kJ 50 J
霰弹枪臂 5 kJ 50 J
血液分析 25 kJ 100 J
血液过滤 75 kJ 600 J
连锁闪电 125 kJ 100 kJ
生化合金爪 100 kJ 25 J
恒温机 1 kJ ; 1 / 24 kW 100 J ; 100 W
隐身系统 50 kJ ; 50 kW 30 kJ ; 30 kW
近身格斗强化 1 kJ ; 1 kW 20 J / 20 W
定向 EMP 100 kJ 50 kJ
EMP 发射器 20 kJ 50 kJ
湿气凝水器 200 kJ 720 kJ
绝缘电容系统 1 J ; 1 / 2 kW 5 J ; 5 W
闪光弹生成器 125 kJ 10 kJ
脑壳手电 1 kJ ; 1 / 150 kW 3 J ; 3 W
LED纹身 1 kJ ; 1 / 300 kW 1 J ; 1 W
内置辐射计 25 kJ 100 J
声纳之足 5 kJ ; 1 kW 200 J ; 200 W
热能防护 4 kJ ; 4 kW 1 kJ ; 1 kW
液压肌肉 17 kJ ; 17 kW 10 kJ ; 10 kW
红外视觉 5 kJ ; 1 kW 5 J / 5 W
指端激光枪 50 kJ 30 kJ
白细胞培育系统 10 kJ ; 1 / 3600 kW 5 J ; 5 W
指端开锁器 25 kJ 50 J
掌心电磁铁 50 kJ 10 kJ
记忆增强 10 kJ ; 1 / 600 kW 2 J ; 2 W
气象识别 10 kJ 10 J
人工黑夜制造机(注:范围从 15 缩小到 2 ) 15 kJ ; 15 kW 9 kJ ; 9 kW
植入式夜视仪 1 kJ ; 1 / 1000 kW 10 J ; 10 W
量子移动(待机) 1 kJ ; 1 kW 3 J ; 3 W
辐射清洗系统 50 kJ 4.5 kJ
远程控制(未改动) 1 / 24 kW 10 W
形象化嗅觉 1 kJ ; 1 / 6 kW 2 J ; 2 W
神奇闪避 1 kJ ; 1 / 10 kW 6 J ; 6 W
体液萃取 50 kJ 20 kJ