ダメージ
ダメージを受けるとは、敵 やその他のエンティティによって プレイヤーの耐久力が低下することである。
概要
Factorioでは、エンティティは耐久力を持ち、死亡もしくは破壊することができ、抵抗力を持っている。 ダメージとは、銃による射撃やバイターに噛まれるなどで、エンティティの耐久力を低下させる概念として定義される。 エンティティの抵抗力は、任意の攻撃からエンティティが受けるダメージをどの程度軽減できるかを定義する。
プレイヤーの最大耐久力は250である(エネルギーシールドを除く)。その他のエンティティの耐久力は、それぞれのエントリに記載されている。
実績
ダメージの概念は、以下の実績と直接関係している。
走れ、フォレスト、走れ 100本の木を自動車や戦車の衝突で破壊する |
放火魔 炎で1万本の木を破壊する |
ローラー作業 10個の巣を自動車や戦車の衝突で破壊する |
ゴーレム 一撃で500以上のダメージを受け、生存する |
足元にご注意ください 動いている機関車に轢かれて死ぬ |
ダメージの種類
ダメージの種類 | ダメージ源 |
---|---|
物理 | 弾薬 (通常/貫通/劣化ウラン), ショットガン弾薬 (通常/貫通), バイター, ディフェンダーカプセル |
衝撃 | (機関車/自動車/戦車との)衝突 |
火炎 | 火炎放射器, 火炎放射タレット |
酸 | ワーム, スピッター |
毒 | 毒素カプセル |
爆発 | ロケット弾, 炸裂ロケット弾, グレネード, クラスターグレネード, 長距離砲弾, 地雷 |
レーザー | レーザータレット, デストロイヤーカプセル, 携帯レーザー防御モジュール |
電気 | 携帯放電防御モジュール, ディストラクターカプセル |
貫通力
貫通力は戦車の弾薬に存在する。これは弾丸がそれ以上飛翔できなくなるまでに、どれだけの敵のHPにダメージを与えられるかを決定する。敵を貫通するためには、敵が弾丸によって殺される必要があり、殺傷するために与えられるダメージは現在の貫通力以下でなければならない。[1]ダメージを与えた分、貫通力も減少する。例えば、耐久力75の中型バイターを貫通力300の砲弾で撃つと、砲弾は4体の中型バイターを貫通して彼らを殺し、さらにもう1体のターゲットを破壊/損傷させることになる。
抵抗
抵抗には2つの側面がある。
減衰または "一律"の抵抗
減衰抵抗は、結果としてダメージが1を下回らない限り、指定した数値だけダメージを減少させる。結果的にダメージが1より小さくなる場合は、別の計算式を用いる。Rを一律の抵抗値、Dを元のダメージ、Mを一律の抵抗を考慮した後の修正ダメージとする。
R+1<D の場合
M=D-R
D>1 の場合
M=1/(R-D+2)
その他の場合
M=1/(R+1)
.
一律の抵抗が修正前のダメージに一致するか、より大きい場合、修正後のダメージは以下の表に示すように0に漸近する。
ダメージ | 一律抵抗 | 修正後ダメージ (抵抗 0%の場合) |
---|---|---|
5 | 0 | 5 |
5 | 1 | 4 |
5 | 2 | 3 |
5 | 3 | 2 |
5 | 4 | 1 |
5 | 5 | 1/2 |
5 | 6 | 1/3 |
5 | 7 | 1/4 |
5 | 8 | 1/5 |
... | ... | ... |
割合抵抗
割合抵抗は、ダメージを指定の割合減少させる。両方の抵抗が存在するとき、割合抵抗は一律/減衰抵抗の後に適用され、上記の「修正ダメージ」の値を変更し、指定された割合だけ減少させる。 この値が100%の場合、そのエンティティはそのダメージに対する耐性を持つ。一律抵抗はダメージを1以下に減らすことができないため、これはエンティティにダメージの種類に対する耐性を持たせる唯一の方法である。
例えば、物理ダメージに25%の抵抗をもつエンティティの場合、弾丸が命中して100物理ダメージが発生しても、実際に受けるダメージは100ではなく75になる。
割合抵抗のダメージを計算する式は以下のようになる。
Mを一律抵抗による修正後のダメージとし、Pを割合抵抗の値(十進表記。25%ならば0.25)とし、Fを最終的なダメージとする。
F = M * (1 - P)
Factorioでは、抵抗はUIで以下のように表記される。
減衰抵抗/割合抵抗(ダメージ種類)
火炎に10/20%抵抗と表示しているエンティティは、火炎に対して一律抵抗 10と 20%抵抗を持っている。このエンティティが30火炎ダメージを受けると、抵抗が適用された結果、耐久力が16ダメージを受ける。
上の場合を数式で表すと以下のようになる。
16最終ダメージ = (30初期ダメージ - 10一律抵抗) * 0.820% 抵抗
組み合わせた数式
D を(適切な種類の)初期ダメージとし、R を(ダメージに対して適切な種類の)一律抵抗値とし、Pを(ダメージと同じ種類の)割合抵抗の10進表記(例 20%=0.2)とし、Fを(適切な種類の)最終的に与えられるダメージとする。
R+1<D の場合
F = (D - R) * (1 - P)
D>1 の場合
F = (1 - P) / (R-D+2)
その他の場合
F = (1 - P) / (R+1)