Kenshi
38 ratings
各種計算式のメモ
By Lucius
色々な計算式についての個人的な備忘録です。
以下について記載しています。
  • 武術・武器(pierce属性)・クロスボウのダメージ計算式
  • 生産・研究・建築・収穫速度
  • 戦闘関連の経験値
  • ピッキング・窃盗・暗殺の経験値
  • 防具・クロスボウ・義肢の価格

計算式に登場するいくつかの補正は勝手に名前を付けています。
2
   
Award
Favorite
Favorited
Unfavorite
各関数の説明
式に登場する関数について簡単に説明します。

int関数
端数を切り捨てます。
int(1.75) = 1
int(-2.1) = -2

pow関数
pow(2, 3) = 8

min関数
最小値を返します。
min(100, 200, -100) = -100

max関数
最大値を返します。
max(100, 200, -100) = 200

rand関数
指定した範囲内でランダムな実数を返します。
rand(20, 40) = 31.2345
武器のダメージ
cut damage
(cut damage 1 + (cut damage 99 - cut damage 1) * (武器スキル + 器用さ) / 2 * 武器の斬撃ダメージ * 0.01) * damage multiplier * damage output mult * 対種族ダメージ * power * 0.01

※1 武器の斬撃ダメージ < 武器の打撃ダメージの場合:cut damage 1 = blunt damage 1 * 0.4

blunt damage
(blunt damage 1 + (blunt damage 99 - blunt damage 1) * (武器スキル * 0.5 + 筋力 * 1.5) / 2 * 武器の打撃ダメージ * 0.01) * damage multiplier * damage output mult * 対種族ダメージ * power * 0.01

※1 武器の斬撃ダメージ ≧ 武器の打撃ダメージの場合:blunt damage 1 = 0

pierce damage
((武器スキル + 器用さ) * pierce damage multiplier * damage multiplier + 10) * 武器のpierce damage multiplier * damage output mult * 対種族ダメージ * power * 0.01

バニラでは動物武器のみ使用しています。
防具のハープーン耐性で軽減されます。

武器カテゴリと武器スキルの関係
武器スキルは武器カテゴリで決まります。

武器カテゴリ
武器スキル
SKILL_KATANAS
SKILL_SABERS
サーベル
SKILL_BLUNT
鈍器
SKILL_HEAVY
重武器
SKILL_HACKERS
鉈武器
SKILL_UNARMED
対象外
SKILL_BOW
クロスボウ
SKILL_TURRET
砲台
ATTACK_POLEARMS
長柄武器
ATTACK_ELEPHANT以上
武術

※1 SKILL_UNARMEDは武術用のダメージ計算を行うため、対象外
※2 SKILL_TURRETはアニメーションが対応不可(武術の攻撃アニメーションなら使用可能)
※3 NUM_SKILL_TYPESは使用厳禁(未初期化領域にアクセスしている)
武術のダメージ
武器カテゴリがSKILL_UNARMEDの場合のみこの式で計算します。
動物はダメージ計算に武術スキルを使用しますが、内部的に装備している武器カテゴリがSKILL_UNARMEDではないので、以下の計算式は使われません。

基本値
(0.0075 * 武術 + 0.25) * (打たれ強さ * unarmed damage mult + 筋力 + 10)

※1 基本値は最低値1

打撃率
1 - 0.006 * 武術

cut damage
基本値 * (1 - 打撃率) * damage output mult * 対種族ダメージ * power * 0.01

※1 cut damageは最低値0

blunt damage
基本値 * 打撃率 * damage output mult * 対種族ダメージ * power * 0.01

※1 blunt damageは最低値0
※2 以下は効果なし
  • unarmed damage bonus
  • damage multiplier

武術カテゴリの武器
武術カテゴリの武器を装備した場合は、種族のfists lv1性能を上書きします。(fists lv100はそもそも使われていません。)
ダメージ関連は以下の項目のみ使われています。
  • armour penetration
  • bleed mult
  • animal damage mult
  • human damage mult
  • robot damage mult
  • race damage
  • indoors mod

ステータス画面表示の武術ダメージについて
武術ダメージと書いてありますが、武器ダメージも表示されます。
  • 人型
    • 納刀時:武術ダメージ
      屋内では、素手なら武術を+8した時の武術ダメージが表示されますが、実際のindoors modが8以外でも+8で計算した結果が表示されます。(GUI左下の表示が屋内ボーナス+8で固定されている)
      また、武器を装備すると武器のindoors modで計算した結果が表示されます。(武器I枠が優先)

    • 抜刀時:使用武器のダメージ
      屋内で戦闘している場合は、素手でも実際のindoors modで計算した結果が表示されます。

  • 動物:内部的に装備している武器のダメージ
対種族ダメージ
以下の基準でrobot damage mult、animal damage mult、human damage multのいずれかが適用されます。
  • RACEのis robotがTrueの場合:robot damage mult
  • RACEのis robotがFalseかつANIMAL_CHARACTERの場合:animal damage mult
  • 上記以外:human damage mult
上記の値にrace damage * 0.01を掛けた値が対種族ダメージになります。

例)
  • robot damage mult:1.1
  • animal damage mult:0.5
  • human damage mult:1.0
  • race damage:
    • ビークシング:300
    • シェク:125
    • スケルトン:50
の場合は
  • 対ビークシング:1.5
  • 対ボーンドッグ:0.5
  • 対アイアンスパイダー:1.1
  • 対スケルトン:0.55
  • 対シェク:1.25
  • 対グリーンランド人:1.0
クロスボウのダメージ
pierce damage
rand(最小ダメージ, 最大ダメージ) * 高低差補正

最小ダメージ
int((pierce damage min 0 + (pierce damage min 1 - pierce damage min 0) * level * 0.01) * (bow damage 1 + (bow damage 99 - bow damage 1) * level * 0.01) * 全体ダメージ係数)

最大ダメージ
int((pierce damage max 0 + (pierce damage max 1 - pierce damage max 0) * level * 0.01) * (bow damage 1 + (bow damage 99 - bow damage 1) * level * 0.01) * 全体ダメージ係数)

※1 全体ダメージ係数は被ダメージにも効果があるため、設定値以上にダメージが増減する
※2 以下は効果なし
  • pierce damage multiplier
  • damage multiplier
  • damage output mult
  • bleed mult ※2.00で固定
  • animal damage mult
  • human damage mult
  • robot damage mult
  • race damage

高低差補正
発射地点とターゲットのY座標の差が約-300で最小値0.6、約300で最大値1.5
被ダメージ
ダメージの種類
4種類あります。
  • cut damage

  • blunt damage

  • pierce damage

  • stun damage
    斬撃耐性効率で発生します。
    打撃ではないので打撃耐性の対象外です。

耐久値
4種類あります。
  • flesh
    cut damage、blunt damage、pierce damageによって減少します。
    バニラはblunt permanent organ damageが0のため、blunt damageは計上されません。

  • stun
    stun damageとblunt damageによって増加します。
    バニラはblunt permanent organ damageが0のため、blunt damageは全てstunに計上されます。

  • blood
    cut damageとpierce damageによって減少します。

  • wear
    cut damage、blunt damage、pierce damageによって増加します。

最終的なダメージ
flesh damage
cut damage + pierce damage + blunt permanent organ damage * blunt damage

stun
stun damage + (1 - blunt permanent organ damage) * blunt damage

blood loss
(cut damage + pierce damage) * immediate blood loss * bleed mult * 種族のbleed rate

wear
(cut damage + blunt damage + pierce damage) * 0.04 * robot wear rate
ダメージ軽減
ダメージ耐性
damage resistance min + (damage resistance max - damage resistance min) * 打たれ強さ * 0.01

※1 打たれ強さ * 0.01は最低値0、最大値1
cut damage
cut damage * (1 - 合計斬撃耐性) * (1 - ダメージ耐性) * 全体ダメージ係数

blunt damage
blunt damage * (1 - 合計打撃耐性) * (1 - ダメージ耐性) * 全体ダメージ係数

pierce damage
(pierce damage - 合計ハープーン耐性) * (1 - ダメージ耐性) * 全体ダメージ係数

stun damage
(cut damage * 合計斬撃耐性 * 合計スタン率 + min(合計ハープーン耐性, pierce damage) * 合計スタン率) * (1 - ダメージ耐性) * 全体ダメージ係数
合計耐性
複雑なため、計算例を記載します。


    • 斬撃耐性:80% (0.8)
    • 打撃耐性:60% (0.6)
    • 斬撃耐性効率:90% (cut into stun 0.1)
    • ハープーン耐性:50
  • シャツ
    • 斬撃耐性:64% (0.64)
    • 打撃耐性:48% (0.48)
    • 斬撃耐性効率:50%(cut into stun 0.5)
    • ハープーン耐性:25

鎧の耐性により
  • 合計斬撃耐性:0.8
  • 合計打撃耐性:0.6
  • 合計スタン率:0.8 * 0.1 = 0.08
  • 合計ハープーン耐性:50

シャツの耐性により
  • 合計斬撃耐性:0.8 + (1 - 0.8) * 0.64 = 0.928
  • 合計打撃耐性:0.6 + (1 - 0.6) * 0.48 = 0.792
  • 合計スタン率:0.08 + (1 - 0.8) * 0.64 * 0.5 = 0.144
  • 合計ハープーン耐性:50 + 25 = 75

※1 計算順は頭→鎧→脚→シャツ→靴→ベルト
※2 バックパックスロットの防具を装備するとメモリ破壊により、耐性がマイナスになる可能性があり、結果として即死ダメージを受ける

装甲貫通
合計斬撃耐性
合計斬撃耐性 * (1 - armour penetration)

※1 最大値0.9

合計打撃耐性
合計打撃耐性 * (1 - armour penetration)

※1 最大値0.9

armour penetrationが0の時はこの計算を行いません。
合計斬撃耐性または合計打撃耐性が既に0.9を超えている場合、armour penetrationが0よりもマイナスの方が与えるダメージが大きくなります。
自傷ダメージ
ヒットの種類とダメージ
  • 武器
    攻撃がブロックされた場合
    • cut damage = 5
    • blunt damage = 1

  • 金属
    is robotがTrueの相手にヒットした場合
    義肢にヒットした場合
    ヒットした部位がMETAL_PLATEの防具で軽減された場合
    • cut damage = 2
    • blunt damage = 2


  • ヒットした部位がCHAINの防具で軽減された場合
    • cut damage = 1
    • blunt damage = 1

  • その他
    • cut damage = 0
    • blunt damage = 1

cut damage
cut damage * (1 - (武術 * 0.01 + 打たれ強さ * 0.01) * 0.5) * fist injury mult * 全体ダメージ係数

blunt damage
blunt damage * (1 - (武術 * 0.01 + 打たれ強さ * 0.01) * 0.5) * fist injury mult * 全体ダメージ係数
防具の耐性
斬撃耐性
(armor class * (armor type 0 + (armor type 1 - armor type 0) * (level + level bonus) * 0.01) + cut def bonus * (level + level bonus) * 0.01) * スロット補正

※1 最大値はスロット補正適用前で0.9

打撃耐性
(armor class * (armor type 0 + (armor type 1 - armor type 0) * (level + level bonus) * 0.01) + blunt def bonus * (level + level bonus) * 0.01) * スロット補正

※1 最大値はスロット補正適用前で0.8

ハープーン耐性
(armor type 0 + (armor type 1 - armor type 0) * (level + level bonus) * 0.01) * pierce def mult * スロット補正

armor class
鎧クラス
cut
blunt
GEAR_CLOTH
0.4
0.1
GEAR_LIGHT
0.8
0.7
GEAR_MEDIUM
0.9
0.9
GEAR_HEAVY
1
1

armor type 0
素材
cut
blunt
pierce
CLOTH
0
0
0
LEATHER
0
0
0
CHAIN
0.05
0
0
METAL_PLATE
0.1
0
0

armor type 1
素材
cut
blunt
pierce
CLOTH
0.1
0.3
0
LEATHER
0.55
0.4
35
CHAIN
0.65
0.3
60
METAL_PLATE
0.85
0.6
90

スロット補正
スロット
cut
blunt
pierce
ATTACH_SHIRT以外
1
1
1
ATTACH_SHIRT
0.8
0.8
0.5
防具のステータス補正
隠密効果
(armor class 0 + (armor class 1 - armor class 0) * (level + level bonus) * 0.01) * (armor type 0 + (armor type 1 - armor type 0) * (level + level bonus) * 0.01) * stealth mult

※1 stealth mult < 0の場合:隠密効果 = 1
※2 ATTACH_HATの場合:最低値1

運動能力効果
(armor class 0 + (armor class 1 - armor class 0) * (level + level bonus) * 0.01) * athletics mult

※1 ATTACH_HAT、ATTACH_BODY、ATTACH_SHIRTの場合:運動能力効果 = 1

戦闘速度効果
(armor class 0 + (armor class 1 - armor class 0) * (level + level bonus) * 0.01) * combat speed mult

※1 ATTACH_HATの場合:戦闘速度効果 = 1

armor class 0
鎧クラス
隠密
運動能力
戦闘速度
GEAR_CLOTH
1
1
1
GEAR_LIGHT
1
1
1
GEAR_MEDIUM
0.9
0.85
1
GEAR_HEAVY
0
0.8
0.9

armor class 1
鎧クラス
隠密
運動能力
戦闘速度
GEAR_CLOTH
1
1
1
GEAR_LIGHT
1
1
1
GEAR_MEDIUM
0.9
1
1
GEAR_HEAVY
0.4
0.95
1

armor type 0
素材
隠密
CLOTH
1
LEATHER
1
CHAIN
0.3
METAL_PLATE
0.1

armor type 1
素材
隠密
CLOTH
1
LEATHER
1
CHAIN
0.7
METAL_PLATE
0.8
義肢のステータス補正
最大HP
floor(2.5 + (HP + (HP 1 - HP) * level * 0.01) / 5) * 5

※1 一の位を5単位に四捨五入する計算です。
(例)192.5 ≦ x < 197.5なら195

水泳
swimming mult + (swimming mult 1 - swimming mult) * level * 0.01

運動能力
athletics mult + (athletics mult 1 - athletics mult) * t
  • athletics mult ≧ 1 または athletics mult 1 < 1の場合
    t = level * 0.01

  • 上記以外かつlevel ≧ 40の場合
    t = (level - 40) / 45
    athletics mult = 1
    ※1 tは最小値0、最大値1

  • 上記以外の場合
    t = (level - 5) / 35
    athletics mult 1 = 1
    ※1 tは最小値0、最大値1

その他
運動能力と同じ計算方法です。
武器の要求筋力と重量
要求筋力
以下2通りの計算結果の内、大きい方が要求筋力になります。
  • A = weight kg * weight mod
  • B = level * 0.01 * 2 * blunt damage multiplier * blunt damage mod * 40
人型キャラクターの拳(fists lv1)は、levelの代わりに補正込みの武術スキルレベルで計算します。
バニラでは武術 * 0.8が要求筋力に相当します。

重量
以下2通りの計算結果の内、大きい方が重量になります。
  • A = weight kg * weight mod
  • B = level * 0.01 * 2 * blunt damage multiplier * blunt damage mod * 40 * weapon inventory weight mult * weight mult
防具の重量
保護部位なし
weight kg

保護部位あり
armor type * total coverage * 0.05 * スロット補正

※1 最低値1

total coverage
各保護部位の合計値です。胸部のみ1.5倍(端数切捨て)で計算します。
この値は作製時間と材料の量にも使われます。

armor type
素材
重量
CLOTH
0.1
LEATHER
0.25
CHAIN
0.9
METAL_PLATE
1

スロット補正
スロット
重量
ATTACH_HAT
1.25
ATTACH_SHIRT
0.5
その他
1
クロスボウの重量
weight kg * weapon inventory weight mult
武器の作製時間
value * 2 / 3 * pow(level * 0.01, 2) / production speed

※1 最小値2、最大値32
防具の作製時間
保護部位なし
3 * armor type * スロット補正

保護部位あり
基本値 * armor type * スロット補正

基本値
(1 + 4 * level * 0.01) * total coverage * 0.01

※1 基本値は最低値1

armor type
素材
補正
CHAIN
2
CHAIN以外
1

スロット補正
スロット
補正
ATTACH_HAT
0.6
ATTACH_LEGS
0.45
ATTACH_SHIRT
3
ATTACH_BOOTS
0.5
その他
1
武器の価格
int(int(15 + 145 * sigmoid(4, level * 0.02 - 1)) * int(value * price mod) * sword price mult * global price mult)

※1 sigmoid(a, x)はゲインがaのシグモイド関数
防具の価格
保護部位なし、またはlevel ≦ 0
int(int(int(value * clothing price mult * global price mult) * relative price mult) * スロット補正)

保護部位あり、かつlevel > 0
int(int(int(int(value + (value 1 - value) * pow(level * 0.01, 2)) * armor price mult * global price mult) * relative price mult) * スロット補正)

※1 floatの計算方法と端数処理の関係で誤差が発生する
(40 * 0.01は0.4ではなく0.399999976になり、端数を切り捨てた結果、誤差が発生する)

スロット補正
スロット
補正
ATTACH_HAT
0.3
ATTACH_BODY
1.0
ATTACH_LEGS
0.5
ATTACH_SHIRT
1.5
ATTACH_BOOTS
0.2
ATTACH_BELT
1.0

valueとvalue 1
保護部位あり、かつlevel > 0の場合は、以下の通りです。
  • value
    鎧クラス\素材
    CLOTH
    LEATHER
    CHAIN
    METAL_PLATE
    GEAR_CLOTH
    20
    50
    100
    150
    GEAR_LIGHT
    80
    200
    400
    600
    GEAR_MEDIUM
    160
    400
    800
    1200
    GEAR_HEAVY
    80
    200
    400
    600

  • value 1
    鎧クラス\素材
    CLOTH
    LEATHER
    CHAIN
    METAL_PLATE
    GEAR_CLOTH
    4000
    5000
    7500
    7500
    GEAR_LIGHT
    24000
    30000
    45000
    45000
    GEAR_MEDIUM
    28000
    35000
    52500
    52500
    GEAR_HEAVY
    32000
    40000
    60000
    60000

blueprintの価格
保護部位なし
int(int(int(value * relative price mult) * スロット補正) * blueprint price mult)

保護部位あり
int(int(int(int(value + (value 1 - value) * pow(0.4, 2)) * relative price mult) * スロット補正) * blueprint price mult)

※1 value、value 1は防具の価格と同様
※2 スロット補正は防具の価格と同様
クロスボウの価格
int(int(value + (value 1 - value) * pow(level * 0.01, 2)) * robotics price mult * global price mult)

※1 crossbow price multではなくrobotics price multを参照

blueprintの価格
int(int(value + (value 1 - value) * pow(0.4, 2)) * blueprint price mult)
義肢の価格
int(int(value + (value 1 - value) * pow(level * 0.01, 2)) * crossbow price mult * global price mult)

※1 robotics price multではなくcrossbow price multを参照
遠距離武器のリロード時間・精度・誤射回避率
リロード時間

最大リロード時間 - (最大リロード時間 - 最小リロード時間) * (使用スキル * 0.06 + 器用さ * 0.04)

最大リロード時間(クロスボウ)

reload time max + (reload time max 1 - reload time max) * level * 0.01

最小リロード時間(クロスボウ)

reload time min + (reload time min 1 - reload time min) * level * 0.01

精度

精度偏差 - 精度偏差 * (使用スキル * 0.05 + 知覚 * 0.05)

※1 accuracy perfect skill(必要スキル)は効果なし (実質的に100)

精度偏差(クロスボウ)

accuracy deviation at 0 skill + (accuracy deviation at 0 skill 1 - accuracy deviation at 0 skill) * level * 0.01

誤射回避率

精密射撃 * 1.5%
生産・研究・建築・収穫速度
生産速度
(0.5 + スキル * 0.009) * production speed * output rate / max operators * production mult * ゲーム設定の生産速度

研究速度
(0.5 + 科学 * 0.009) * output rate / max operators * production mult * ゲーム設定の研究速度 * 同時作業補正

建築速度
(0.3 + エンジニア * 0.017) * build speed * ゲーム設定の建築速度 * 同時作業補正

収穫速度
(0.5 + スキル * 0.009) * production speed * harvest rate / 24 * production mult

※1 production multは、output per dayがTrueなら48で割る
※2 同時作業補正については後述

複数人で同時に作業する場合の速度
各作業員の生産・研究・建築・収穫速度の合計値になりますが、
研究と建築は2人目以降に以下の補正(同時作業補正)がかかります。

研究
pow(0.6, N - 1)

建築
pow(0.75, N - 1)

また、1人目、2人目…はあらかじめ決まっており、
最初にスキル90のキャラAに建築させ、後からスキル1のキャラBを建築に参加させてたとしてもBが1人目、Aが2人目として計算される可能性があります。

ステータス画面の表示について
エンジニアに表示されている速度は、建築速度ではなく生産速度になっています。
また、有効桁数の関係で正確な値ではありません。(94.45で1.4と表示されますが実際は1.35005)
戦闘速度・攻撃速度・防御速度
戦闘速度
(0.5 + 0.5 * 負荷補正 * (1 - 筋力XP補正)) * 戦闘速度効果

負荷補正
1.5 - Encumbrance rate

※1 負荷補正は最大値1

筋力XP補正
筋力XP率 / weight strength diff max

※1 筋力XP補正は最小値0、最大値1
※2 バニラではSKILL_UNARMED以外で筋力XP率が最低0.1のため、装備補正なしだと戦闘速度が0.95になる

攻撃速度
(0.8 + 0.4 * (器用さ * 0.6 + 攻撃スキル * 0.4) * 0.01) * 戦闘速度

※1 最大値1.2
※2 SKILL_UNARMEDの場合:攻撃スキル = 武術、SKILL_UNARMED以外:攻撃スキル = 近接攻撃

防御速度
(0.6 + 3.4 * (器用さ * 0.6 + 防御スキル * 0.4) * 0.01) * 戦闘速度

※1 最大値4
※2 SKILL_UNARMEDの場合:防御スキル = 武術、SKILL_UNARMED以外:防御スキル = 近接防御
移動速度
単位はdm/s(デシメートル毎秒)です。GUIはmph(マイル毎時)に変換した値を表示します。

移動速度
(基本値 - 11) * 負傷補正 * 空腹補正 * (1 - Encumbrance rate) * 装備補正 + 11

※1 最低値11
※2 水深がごく浅い場合、最大値45

基本値
(年齢 * 0.5 + 0.5) * (speed min skill + (speed max skill - speed min skill) * 運動能力)

※1 人間の年齢は1

負傷補正
最大値1、最小値0

空腹補正
最大値1、最小値0.5

装備補正
A = 防具・バックパックの中で一番低い値
※1 パックパックを装備していない場合は、バックパックの補正を1とする

B = 防具の中で一番大きい値(最低1)
装備補正 = A * B * 右義足 * 左義足

水中移動速度
walk speed

※1 swimsがFalseの場合、2倍
※2 swimsがTrueかつ水深が深い場合は水泳になる

水泳速度
0.38 * 水泳 * swim speed mult * 負傷補正 * 空腹補正 * (1 - Encumbrance rate) * 右義足 * 左義足 * 右義手 * 左義手

※1 片腕が使えない場合、0.6倍
※2 最低値4
※3 両腕が使えない場合、水泳速度は1
※4 swimsがFalseの種族にとって水泳スキルや義肢の水泳補正は飾りです
獲得経験値
各種ステータスは実数型(float)で管理されており、獲得した経験値はそのまま現在のステータス値に加算されます。

獲得経験値
基本経験値 * レベル補正

※1 治療系のタスクは異なる計算式
※2 基本経験値 > 20の場合:獲得経験値 = 0
※3 レベル補正 > 20の場合:獲得経験値 = 0

基本経験値
種族や行動の成否、FCSの設定値などの要素で決まります。

レベル補正
pow( (Max level - スキルレベル) / Max level, 2)

※1 スキルレベルは、動物の年齢補正を含む全ての補正を除外した素の値
※2 BF_TRAINING以外の場合:Max level = 101
※3 BF_TRAININGの場合:Max level = output rate
※4 BF_TRAINING、かつスキルレベル > output rateの場合:獲得経験値 = 0

ステータス上限
ステータスが101に近づくにつれ獲得経験値が非常に小さくなり、浮動小数点演算による情報落ちが発生するため、正攻法では101に到達するより前にステータスが上がらなくなります。

バニラにおける理論上の上限値
スキル
生データ(LE)
10進(近似値)
FCSの表示
武術
C5CAC942
100.896034240722656
100.896
近接防御
C5D6C942
100.919471740722656
100.9195

MODで基本経験値を上限値の20にしたとしても100.955894で止まりますが、
トレーニングダミーは、output rateを102以上にすれば101を超えることが可能です。
経験値の種族補正について
基本経験値の計算に使われる種族補正値は、以下で決まります。(下が優先)
  • RACEのstats goodにあれば1.2
  • RACEのstats badにあれば0.8
  • STAT_STRENGTHはRACEのstrength
  • STAT_DEXTERITYはRACEのdexterity
ほとんどの場合、筋力ならSTAT_STRENGTH、近接攻撃ならSTAT_MELEE_ATTACK……のように使用スキルとEnum値が一致します。
例外は別途記載します。
基本経験値(戦闘)
近接攻撃、近接防御、武術、器用さ、回避、武器スキルが該当します。
打たれ強さと筋力も戦闘で経験値を得られますが、補正値が異なるため別途記載します。

基本経験値
0.025 * exp gain multiplier * xp rate * 戦力補正 * 種族補正 * 防御成否補正 * 全体ダメージ係数

xp rate
近接攻撃、近接防御、武術、武器スキルは1

器用さのxp rate
(武器のpierce damage multiplier + 武器のCut damage) / (武器のBlunt damage + 武器のpierce damage multiplier + 武器のCut damage)

※1 武器のBlunt damage + 武器のpierce damage multiplier + 武器のCut damage ≦ 0の場合:xp rate = 1
※2 SKILL_UNARMEDの場合:xp rate = 1

回避のxp rate
1 - Encumbrance rate

戦力補正
スキル差補正 * (1 + (敵の数 - 1) / 10)

※1 スキル差補正は最小値0.1、最大値6
※2 戦力補正は最大値10
※3 武器スキルは防御側でも相手の近接防御または武術でスキル差補正を計算
※4 敵の数は自身を攻撃対象にしているキャラクターをカウントする

防御成否補正
  • 攻撃側
    スキル
    回避成功
    防御成功
    防御or回避失敗
    近接攻撃
    0.25
    0.5
    1.0
    武器スキル
    0.1
    0.4
    1.0
    武術
    0.25
    0.5
    1.0
    器用さ
    0
    0.5
    1.0

  • 防御側
    スキル
    回避成功
    防御成功
    防御or回避失敗
    近接防御
    -
    0.25
    2.0
    武器スキル
    -
    0.1
    0.0
    回避
    0.4
    -
    0.8

種族補正
約半分は不具合で想定通りに機能しません。
  • 武術 (武器カテゴリSKILL_UNARMED)
    STAT_MARTIALARTSではなく、STAT_MELEE_ATTACKを参照します。
    ソルジャーボットはペナルティがなく、シェクとハイブソルジャーは1.2倍です。

  • 武器スキル及び動物の武術スキル
    STAT_KATANAS等は全て無効です。
    内部的にはSTAT_WEAPONSを参照しますが、基本経験値ではなく、スキル差補正の計算に適用されます。stats goodにSTAT_WEAPONSがあると自分の武器スキルを1.2倍した値と相手の近接防御 or 武術と比較するので、不利になります。

  • 防御成功時の近接防御
    STAT_MELEE_DEFENCEを参照しますが、武器スキルと同様の不具合により、種族ボーナスが不利になります。

  • 回避成功時の近接攻撃と武術
    STAT_MELEE_ATTACKを参照しますが、武器スキルと同様の不具合により、種族ボーナスが不利になります。
基本経験値(打たれ強さ)
死んだふり解除
0.025 * (敵の数 + 10) * exp gain multiplier * 打たれ強さXP率 * 種族補正

※1 打たれ強さXP率は腕の状態で変動
  • 両腕正常:3
  • 左腕損傷:4
  • 右腕損傷:5
  • 両腕損傷:6

被ダメージ
0.025 * exp gain multiplier * xp rate toughness * 戦力補正 * 種族補正

※1 戦力補正に含まれるスキル差補正は、現在の打たれ強さと軽減前の被ダメージの差で計算

四肢切断時
1.5 * exp gain multiplier * 種族補正

※1 義肢破損は対象外

自傷ダメージ
0.025 * exp gain multiplier * xp rate toughness * xp rate * 種族補正 * 全体ダメージ係数

xp rate
ヒット種類
xp rate
武器
0.5
金属
0.25
その他
0.05
基本経験値(戦闘時の筋力)
0.0275 * exp gain multiplier * xp rate * xp rate strength * 防御補正 * 種族補正 * 全体ダメージ係数

SKILL_UNARMEDのxp rate
Encumbrance rate

SKILL_UNARMED以外のxp rate
weight strength diff + min strength xp mult

weight strength diff
(武器の要求筋力 - 筋力) / weight strength diff 1x

※1 最小値0、最大値weight strength diff max

防御補正
防御or回避成功時は0.4倍
防御失敗時は0.1倍
攻撃側は常に1.0倍
基本経験値(ピッキング・窃盗・暗殺)
ピッキング
xp rate * 種族補正

※1 exp gain multiplierが使われない

ピッキングのxp rate
成功
失敗
1.2
0.24

窃盗
exp gain multiplier * xp rate * 種族補正

窃盗のxp rate
窃盗対象
成功
失敗
ドロップアイテム
0.1
-
収納容器
0.05
0.2
キャラクター
0.2
0.8

暗殺(ステルスKO)
exp gain multiplier * xp rate * target state * 種族補正

※1 収監の場合:target state = 0.07、就寝の場合:target state = 0.5、平常の場合:target state = 1

ステルスKOのxp rate
成功
失敗
0.5
1.5

暗殺(誘拐)
exp gain multiplier * xp rate * 種族補正

誘拐のxp rate
成功
失敗
0.5
1.5
基本経験値(誤射回避)
xp rate * exp gain multiplier * 種族補正

誤射回避のxp rate
成功
失敗
0.1
0.5

誤射回避の判定は、クロスボウや砲台の弾が標的以外に干渉した時に行われます。
回避に成功すれば弾がすり抜け、回避に失敗すれば命中します。
作業・歩行等の経験値について
詳細な式は不明ですが、以下の要素が関係しています。
  • exp gain multiplier
  • 種族補正
  • 運動能力XP率・筋力XP率

他にも以下の要因で獲得経験値が増加します。
  • ゲームスピードを上げる
    等倍と5倍で成長速度に差が出ます。
    また、RE_Kenshiでゲームスピードを上げるとステータス上限が経験値MODと同様にバニラより上になります。

  • キャラクターを大量に読み込む (移動による経験値のみ)
    5倍でゲーム内24時間放置してもステータスが1ビットも増加しない状態で、人口の多い街を読み込むと増加するようになります。
作物の数
ヨコ = int(sqrt(amount) * aspect + 0.5)
タテ = int(amount / ヨコ)

作物の数 = ヨコ * タテ

※1 amount未満になる場合がある(水耕栽培(麦)など)
鍵の耐久値
耐久値 = hardness

※1 セーブデータに保存される値(GUIは10倍で表示)
※2 参考までにバニラのhardnessは以下の通り
  • 枷:20
  • 檻:50
  • 古代の金庫:60
  • 金庫:90

鍵破壊の条件
筋力 > 耐久値 * 3

道具で耐久値を減らしてから破壊可能です。
また、道具を使う場合は、筋力が高いほど耐久値が速く減ります。
ポートレート
portrait_serialが増加するとともに向きがキャラクターからみて左から右、下から上へ変化します。

左右方向の周期は500でportrait_serial mod 500の値に応じて以下の通りになります。
0:左に約45度
250:正面
499:右に約45度

上下方向の周期は252でportrait_serial mod 252の値に応じて以下の通りになります。
0:下に約15度
83:正面
251:上に約30度

全体の周期は500と252の最小公倍数である31500になります。

※ FCSはportrait_serialを符号付き整数で解釈してしまうため、FCS上で負の値になっている場合は、2の32乗を加算してから計算してください。

左右方向の調整
portrait_serial + 504 * N

※ Nが正なら右、負なら左に回転

上下方向の調整
portrait_serial + 500 * N

※ Nが正なら下、負なら上に回転
改版履歴
重要な修正のみ記載
  • 2025/6/21
    • 戦闘経験値に追記
  • 2024/6/8
    • ポートレートを追加
  • 2024/4/28
    • 鍵関連を追加
  • 2024/1/21
    • 被ダメージ関連を追加
    • 武器ダメージ計算を追加
  • 2024/1/20
    • 経験値関連の整理
    • 誤射回避時の経験値を追加
    • 戦闘速度を追加
    • 装備関連を追加
  • 2024/1/11
    • 戦闘経験値の計算式を修正
      全体ダメージ係数が適用されていたので
    • 戦闘経験値の備考を修正
      武術の種族補正はSTAT_MARTIALARTSではなくSTAT_MELEE_ATTACKを参照していました
  • 2024/1/7
    • 防具価格計算の記載ミスを修正
  • 2024/1/5
    • 武術の計算式を修正
      武術が一定以下(-30とか)になると計算結果と実測値が合わなかったので
    • 全体ダメージ係数を除外
      ハープーン耐性によるダメージ軽減よりも後に適用されるので
4 Comments
FrankieWuzHere 4 May, 2024 @ 10:15am 
As you can see if you enter the level into the formula then multiply it by 20 (The XP I was getting at level 0) you'll find that it matches perfectly. At 552.6857 the result is 19.999997214438780511714537790413... However the game seems to round that to 20.
I hope this helps!
If you go above that level to lets say 552.6858 then the result is 20.000006.... which is over 20. If the multiplier is over 20 (Similar to the XP beforehand) then no XP is gained.
FrankieWuzHere 4 May, 2024 @ 10:14am 
Hello! I am writing again to hopefully help you with adding more information to here!
I pray that the translator is able to understand this. I have found the multiplier for experience gain based off your level. To easily explain it you can enter this formula into a graphing calculator
y = (1-x/101)²
Where y is the XP Multiplier and x is the Current level
I figured this out by modding the XP gain multiplier to be 40 (Instead of 3) so I would get 20 levels off assassinating a unit. Opening FCS to check my level after assassinating a character I found that I would gain the following levels.
At Level...
0 > 20
10.1 > 16.2
20.2 > 12.8
30.3 > 9.8
40.4 > 7.2
50.5 > 5
60.6 > 3.2
70.7 > 1.8
80.8 > 0.8
90.9 > 0.2
101 > 0
111.1 > 0.2
121.2 > 0.8
202 > 20
303 > 80
404 > 180
505 > 320
552.6857 > 400
Lucius  [author] 4 Oct, 2023 @ 6:00am 
Machine translation.

Perhaps lag due to NPC load delayed the experience gain process, resulting in slightly more experience gain.
However, I think the impact is very small compared to the game speed.
FrankieWuzHere 1 Oct, 2023 @ 12:54pm 
I don't speak Japanese but hopefully if you use a translator program to read this back to you it'll work.

This information is amazing! You did great! I never knew that str xp would continue to increase in a town when walking. Do you happen to know why that is the case?