Elin:解析/基本ステータス: Difference between revisions

From Ylvapedia
No edit summary
(18 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{解析}}
{{解析}}
{{Untranslated}}
{{バージョン|23.54}}
このページでは、PCとNPC基本ステータスに関する解析情報を記載しています。
このページでは、PCとNPC基本ステータスに関する解析情報を記載しています。


最終更新バージョンは'''EA23.46'''。
最終更新バージョンは'''EA23.54'''。


==最大HP==
==最大HP==
Line 20: Line 20:
**つまり、ゲーム開始時(レベル1)において、ENDが最大HPの最も大きな要素(1.04)であり、STR(0.04)や WIL(0.02)よりもはるかに大きい。
**つまり、ゲーム開始時(レベル1)において、ENDが最大HPの最も大きな要素(1.04)であり、STR(0.04)や WIL(0.02)よりもはるかに大きい。
**レベル25以上のキャラクターでは、ENDの各ポイントがHPの基本値を3増加させ、STRが1増加させ、WILが0.5増加させます。
**レベル25以上のキャラクターでは、ENDの各ポイントがHPの基本値を3増加させ、STRが1増加させ、WILが0.5増加させます。
**HPの基本値はさらにキャラクターのライフ値%によって修正されます。
**HPの基本値はさらにキャラクターの生命値%によって修正されます。


*キャラクター派閥の修正:
*キャラクター派閥の修正:
Line 26: Line 26:
**キャラクターがPC派閥に属していない場合、HPはキャラクターのレアリティによってさらに増幅されます。
**キャラクターがPC派閥に属していない場合、HPはキャラクターのレアリティによってさらに増幅されます。
**通常の場合、100%; High Qualityの場合、400%; Legendaryの場合、700%; Mythicalの場合、1000%; Artifactの場合、1300%。
**通常の場合、100%; High Qualityの場合、400%; Legendaryの場合、700%; Mythicalの場合、1000%; Artifactの場合、1300%。
**キャラクターのレアリティは'''現在調査中'''ですが、おそらくネフィアのボスモンスターに適用されます。
**ボスや進化したモンスターの'''レアリティはLegendary'''です。
**ユニークキャラクター、例えばフィアマ、グウェン、イノス・トゥラスは、'''Artifactのレアリティ'''であり、彼らがPCファクションに属していない場合、このHPバフが彼らに適用される可能性がある。('''要確認''')
*この値は、キャラクターがPCである場合、'''孤独な魂'''のフィートによって最終的に修正されます。
*この値は、キャラクターがPCである場合、'''孤独な魂'''のフィートによって最終的に修正されます。


==Maximum MP==
==最大MP==
<syntaxhighlight lang="c#" line="1">
<syntaxhighlight lang="c#" line="1">
public override int max => Mathf.Max(1, ((BaseStats.CC.MAG * 2 + BaseStats.CC.WIL + BaseStats.CC.LER / 2) * Mathf.Min(BaseStats.CC.LV, 25) / 25 + BaseStats.CC.MAG + 10)  
public override int max => Mathf.Max(1, ((BaseStats.CC.MAG * 2 + BaseStats.CC.WIL + BaseStats.CC.LER / 2) * Mathf.Min(BaseStats.CC.LV, 25) / 25 + BaseStats.CC.MAG + 10)  
Line 39: Line 40:


*レベルに基づくMP:
*レベルに基づくMP:
**レベル25まで、最大MPはレベルによって修正されます。レベル25以降はレベルアップしても最大HPは上がることはない。(レベルごとに4%)
**レベル25まで、最大MPはレベルによって修正されます。レベル25以降はレベルアップしても最大MPは上がることはない。(レベルごとに4%)
***例えば、キャラクターがレベル1から2に成長する場合、そのHPは基本値の二倍に増加します。
***例えば、キャラクターがレベル1から2に成長する場合、そのHPは基本値の二倍に増加します。
***計算式は:(2 * MAG + 1 * WIL + 0.5 * LER) * (レベルの4%)
***計算式は:(2 * MAG + 1 * WIL + 0.5 * LER) * (レベルの4%)
Line 45: Line 46:
**つまり、ゲーム開始時(レベル1)において、MAGが最大MPの最も大きな要素(1.04)であり、WIL(0.04)や LER(0.02)よりもはるかに大きい。
**つまり、ゲーム開始時(レベル1)において、MAGが最大MPの最も大きな要素(1.04)であり、WIL(0.04)や LER(0.02)よりもはるかに大きい。
**レベル25以上のキャラクターでは、MAGの各ポイントがMPの基本値を3増加させ、WILが1増加させ、LERが0.5増加させます。
**レベル25以上のキャラクターでは、MAGの各ポイントがMPの基本値を3増加させ、WILが1増加させ、LERが0.5増加させます。
*MPの基本値はさらにキャラクターのライフ値%によって修正されます。
*MPの基本値はさらにキャラクターのマナ値%によって修正されます。
*キャラクター派閥の修正:
*キャラクター派閥の修正:
**キャラクターがPC派閥に属している場合、MPは変わらない。
**キャラクターがPC派閥に属している場合、MPは変わらない。
**キャラクターがPC派閥に属していない場合、MPはキャラクターのレアリティによってさらに増幅されます。
**キャラクターがPC派閥に属していない場合、MPはキャラクターのレアリティによってさらに増幅されます。
**通常の場合、100%; High Qualityの場合、350%; Legendaryの場合、600%; Mythicalの場合、850%; Artifactの場合、1100%。
**通常の場合、100%; High Qualityの場合、350%; Legendaryの場合、600%; Mythicalの場合、850%; Artifactの場合、1100%。
**キャラクターのレアリティは現在調査中ですが、おそらくネフィアのボスモンスターに適用されます。
**ボスや進化したモンスターの'''レアリティはLegendary'''です。
**ユニークキャラクター、例えばフィアマ、グウェン、イノス・トゥラスは、'''Artifactのレアリティ'''であり、彼らがPCファクションに属していない場合、このMPバフが彼らに適用される可能性がある。('''要確認''')
*この値は、キャラクターがPCである場合、孤独な魂のフィートによって最終的に修正されます。
*この値は、キャラクターがPCである場合、孤独な魂のフィートによって最終的に修正されます。


==Maximum Stamina==
==進化したモンスターとネフィアボスのレアリティと基礎能力==
 
<syntaxhighlight lang="c#" line="1">
    public Rarity rarity = Rarity.Random;
public static SpawnSetting Evolved(int fixedLv = -1)
{
return new SpawnSetting
{
fixedLv = fixedLv,
rarity = Rarity.Legendary,
forcedHostility = Hostility.Neutral,
isEvolved = true,
tries = 10000
};
}
 
public static SpawnSetting Boss(int filterLv, int fixedLv = -1)
{
return new SpawnSetting
{
filterLv = filterLv - 2,
fixedLv = fixedLv,
rarity = Rarity.Legendary,
isBoss = true,
tries = 10000,
levelRange = 5,
forcedHostility = Hostility.Enemy
};
}
</syntaxhighlight>
 
* ネフィアのボスと進化したモンスターは、Rarity.Legendaryで生成されます。上記の分析結果に基づくと、生成されたモンスターは通常のバージョンの'''最大HPが700%、最大MPが600%'''になります」。でもネフィアボスの能力のバフは'''これだけじゃない'''気がする…
* ネフィアのボスは常に、ネフィアの深さからで-7レベルから+3レベルのモンスターの中から選ばれる('''確認が必要''')。
 
 
==最大スタミナ==
<syntaxhighlight lang="c#" line="1">
<syntaxhighlight lang="c#" line="1">
public void CalculateMaxStamina()
public void CalculateMaxStamina()
Line 77: Line 114:
</syntaxhighlight>
</syntaxhighlight>


The maximum stamina of chracters is determined by the following:
キャラクターの最大スタミナは以下の要素によって決まります:
* Each point of base endurance increase the base number by 1.
* For each skill a chracter have, increase this base number by the '''level of that skill'''.
** For example, two handed lvl 50, then num += 50, cooking lvl 50, then additional += 50, and so on.
** '''The main defining factor of Stamina maximum is the total level of skills you have, not END.'''
* The base number go through a CURVE function with (base, 30, 10, 60).
** This means, if the base number is less than 30, return that value.
** For each point of additional base num, the return is diminished.
** Base num 60, output is 44.8
** Base num 90, output is 53.36
** Base num 300, output is 77.9
** Base num 1500, output is 110.0
** Base num 15000, output is 195.6
** There is no maximum stamina, however it becomes '''much harder to raise''' after about 120.
* The output number is increased by 15, then modified by the vigor(Evalue(62))% of player.
** So a player with 1500 of total skill levels will have a base stamina about 125, modified by the vigor of said character.
** A new player with 20 END and 40 total skill level will only have 60 maximum stamina.


==Carryweight Limit==
* まずは'''基本体力値'''を計算します。
** 1 END は基本体力値を1増加させます。
** キャラクターが持っているスキルごとに、'''そのスキルのレベルに応じて'''基本体力値を増加させます。
** 例えば、両手武器のレベルが50であれば、基本体力値 += 50。料理のレベルが50であれば、さらに+= 50と続きます。
** '''最大体力値の主な決定要因は、保有するスキルの合計レベルであり、耐久力(END)ではありません。'''
* 基本体力値は「CURVE」関数を通過します(基本体力値、30、10、60)。
** これは、基本体力値が30未満の場合、その値を返すことを意味します。
** 基本体力値が大きくなるほど、出力のメリットは減少します。例えば:
*** 基本体力値60の場合、出力は44.8です。
*** 基本体力値90の場合、出力は53.36です。
*** 基本体力値300の場合、出力は77.9です。
*** 基本体力値1500の場合、出力は110.0です。
*** 基本体力値15000の場合、出力は195.6です。
*** スタミナの限界こそ存在しませんが、約120を超えると'''非常に上げにくくなります'''。
* この出力数値をさらに15増加し、その後にプレイヤーの活力%によって修正されます。
** したがって、合計スキルレベルが1500のプレイヤーは、最大スタミナが約125になり、そのキャラクターの活力によって修正されます。
** 耐久力(END)が20で、合計スキルレベルが40の新しいPCは、最大スタミナが60しかありません。
 
==運搬重量限界==
<syntaxhighlight lang="c#" line="1">
<syntaxhighlight lang="c#" line="1">
public override int WeightLimit => (base.STR * 500 + base.END * 250 + Evalue(207) * 2000) * ((!HasElement(1411)) ? 1 : 5) + 45000;
public override int WeightLimit => (base.STR * 500 + base.END * 250 + Evalue(207) * 2000) * ((!HasElement(1411)) ? 1 : 5) + 45000;
</syntaxhighlight>
</syntaxhighlight>


The carryweight limit of characters is determined by the following factors:
キャラクターの運搬重量限界は以下の要素によって決まります:
* Base limit is 0.5 * STR + 0.25 * END + 2 * Weightlifting skill. (Each "s" in game is 1000 in code.)
* If the character is golden knight, then this is further modified by 500%.
* A 45s base carry weight is added to the final result.


==Sanity==
*基本限界は、'''0.5s * STR + 0.25s * END + 2s * スキル「重量上げ」のレベル'''に基づきます。(ゲーム内の「s」はcodeでは1000に相当します。)
There are many factors influencing the sanity of players. We pick the main ones in the code for analysis:
*キャラクターが[[Elin:黄金の騎士|黄金の騎士]]である場合、これはさらに500%修正されます。
*最後に、45sの基本運搬重量が最終結果に加算されます。
 
==狂気度==
プレイヤーの狂気度に影響を与える要因は多数存在します。分析のために、コード内で主要な要因を選びます:


<syntaxhighlight lang="c#" line="1">
<syntaxhighlight lang="c#" line="1">
Line 128: Line 168:
break;
break;
</syntaxhighlight>
</syntaxhighlight>
* This is utilized when a player pray to god, and if the state of item used is "blessed", the character will have -5 Sanity value.
* プレイヤーが神に祈る際に、もし使用されるアイテムの状態が「祝福された」場合、キャラクターの狂気度が5を減少します。
** This is pretty strange, considering that the action of praying to god is never an item and can never be assigned the "blessed" state, thus the code is unused.
** どう考えてもこれは'''かなり変'''です。なぜなら、神に祈る行為はアイテム使用ではなく、「祝福された」状態を割り当てることもできないため、このコードは恐らく未使用です。


<syntaxhighlight lang="c#" line="1">
<syntaxhighlight lang="c#" line="1">
Line 142: Line 182:
</syntaxhighlight>
</syntaxhighlight>


* This effect happens when you use the Healing feather (or Jure's pillow?) (Lay hand would be EffectId.JureHeal), and modify you Sanity by -999.
* この効果は、癒しの羽根(または★ジュアの抱き枕?)を使用すると発生し、狂気度が-999になります。(「レイハンド」はEffectId.JureHealとなります。)


<syntaxhighlight lang="c#" line="1">
<syntaxhighlight lang="c#" line="1">
Line 161: Line 201:
</syntaxhighlight>
</syntaxhighlight>


* This effect happens when a PC reads strange book that is in the "Ero" type. The Sanity is modded with a random value from -1 to -5.
* この効果は、プレイヤーキャラクターが危ない本を読むと発生します。狂気度は-1から-5のランダムな値で変更されます。
 
<syntaxhighlight lang="c#" line="1">
<syntaxhighlight lang="c#" line="1">
case 914:
case 914:
Line 224: Line 265:
</syntaxhighlight>
</syntaxhighlight>


* There are two types of attacks that specifically increase the Sanity value, this is observed to be the main way people get Sanity value in daily life.
狂気度を増加させる攻撃は2種類であり、これは人々が狂気度を上昇する主なる要因であると観察されています。
* Element ID 914 or Mind Attack will have a 50% chance of increase your Sanity value by 0 - 1 for every attack received.
*Element ID 914または幻惑属性攻撃は、受けた攻撃ごとに50%の確率で狂気度が0 - 1増加します。
* Element ID 920 or Chaos Attack will have a chance of increase your Sanity value by 0 - 1 for every attack received. The chance depend on the Element power of the attack, and will range from 30% to 100%.
*Element ID 920または混沌属性攻撃は、受けた攻撃ごとに確率で狂気度が0 - 1増加します。この確率は攻撃のエレメントパワーによって異なり、30%から100%の範囲になります。
* A few other effects exist as a fixed increase in Sanity value. Doing the f thing will give Sanity value +10. Eating Human flesh (canniblism) gives a fixed Sanity value +15.
*狂気度を固定で増加させる効果もいくつか存在します。"気持ちいいこと"を行うと狂気度が10増加します('''要確認''')。人肉を食べること(カニバリズム)は固定で狂気度が15増加します。
 
==狂気度と眠気の関係==
<syntaxhighlight lang="c#" line="1">
    public class StatsSleepiness : Stats
    {
    public const int Sleepy = 1;
    public const int VerySleepy = 2;
 
    public const int VeryVerySleepy = 3;
 
    public override bool TrackPhaseChange => BaseStats.CC.IsPC;
    }
    ...
    public Stats sleepiness => Stats.Sleepiness.Set(_cints, 17, this);
    public Stats SAN => Stats.SAN.Set(_cints, 17, this);


    public bool CanSleep()
{
if (EClass._zone.events.GetEvent<ZoneEventQuest>() != null)
{
return false;
}
if (!EClass.debug.godMode && sleepiness.GetPhase() == 0)
{
return stamina.GetPhase() <= 1;
}
return true;
}
    public override int GetPhase()
{
return base.source.phase[(int)Mathf.Clamp(10f * (float)value / (float)max, 0f, 9f)];
}
public virtual void Set(int a)
{
value = a;
if (value < min)
{
value = min;
}
else if (value > max)
{
value = max;
}
}
</syntaxhighlight>
*面白いことに、キャラクターの狂気度と睡眠値は同じID(17)のパラメータによって決定している。
*実際にプレイの時も、眠気1段階は常に狂気度が40になった瞬間に発動している。つまり、睡眠値(眠気)と狂気度は常に連動していると見っても問題ないかと思います。
**実際に自分自身に「狂気の手」を連続で使って、たとえさっき起床したばかりとしでも、狂気度が40になった瞬間PCが眠気状態になるのは確認済み。
**狂気度は「ひどい眠気」の状態で「徐々に狂気度が上昇」ではなく、'''最初から時間とともに「徐々に上昇」して、ある段階に達すると「眠気」或いは「ひどい眠気」の状態になる'''のが正しと思います。
**狂気度は時間とともに0から上昇するという現象は確認済み。
*これは推測ですが、狂気度と睡眠値は元々異なる値になるはずだが、EA23.54の段階ではこの二つの値は一つになるバグが存在すると思います。
** 実際、どれだけElin Decompiledで探しても、時間とともにSAN値を増加するコードは見つかりませんでした。
** だが、時間とともにSleepinessを増加するコードはある。SAN=Sleepiness、だからSAN値も時間とともに増えているだけだと思います。


[[Category:JA]]
[[Category:JA]]
[[Category:Elin Spoiler]]
[[Category:Elin Spoiler]]
{{DEFAULTSORT:カイセキ,キホンステータス}}

Revision as of 15:31, 26 December 2024

バージョン EA23.54: この記事は、Elin最新の安定版リリースに遅れをとっていますが、信頼できる範囲にあるかもしれません。

このページでは、PCとNPC基本ステータスに関する解析情報を記載しています。

最終更新バージョンはEA23.54

最大HP

public override int MaxHP => Mathf.Max(1, ((base.END * 2 + base.STR + base.WIL / 2) * Mathf.Min(base.LV, 25) / 25 + base.END + 10) 
                             * Evalue(60) / 100 * ((IsPCFaction ? 100 : (100 + (int)base.rarity * 300)) + (IsPC ? (EClass.player.lastEmptyAlly * Evalue(1646)) : 0)) / 100);

最大HPは以下の要素によって決まります:

  • レベルに基づくHP:
    • レベル25まで、最大HPはレベルによって修正されます。レベル25以降はレベルアップしても最大HPは上がることはない。(レベルごとに4%)
      • 例えば、キャラクターがレベル1から2に成長する場合、そのHPは基本値の二倍に増加します。
      • 計算式は:(2 * END + 1 * STR + 0.5 * WIL) * (レベルの4%)
    • さらに、1 * ENDと10の基本HPがレベルに関係なく付与されます。
    • つまり、ゲーム開始時(レベル1)において、ENDが最大HPの最も大きな要素(1.04)であり、STR(0.04)や WIL(0.02)よりもはるかに大きい。
    • レベル25以上のキャラクターでは、ENDの各ポイントがHPの基本値を3増加させ、STRが1増加させ、WILが0.5増加させます。
    • HPの基本値はさらにキャラクターの生命値%によって修正されます。
  • キャラクター派閥の修正:
    • キャラクターがPC派閥に属している場合、HPは変わらない。
    • キャラクターがPC派閥に属していない場合、HPはキャラクターのレアリティによってさらに増幅されます。
    • 通常の場合、100%; High Qualityの場合、400%; Legendaryの場合、700%; Mythicalの場合、1000%; Artifactの場合、1300%。
    • ボスや進化したモンスターのレアリティはLegendaryです。
    • ユニークキャラクター、例えばフィアマ、グウェン、イノス・トゥラスは、Artifactのレアリティであり、彼らがPCファクションに属していない場合、このHPバフが彼らに適用される可能性がある。(要確認
  • この値は、キャラクターがPCである場合、孤独な魂のフィートによって最終的に修正されます。

最大MP

public override int max => Mathf.Max(1, ((BaseStats.CC.MAG * 2 + BaseStats.CC.WIL + BaseStats.CC.LER / 2) * Mathf.Min(BaseStats.CC.LV, 25) / 25 + BaseStats.CC.MAG + 10) 
                           * BaseStats.CC.Evalue(61) / 100 * ((BaseStats.CC.IsPCFaction ? 100 : (100 + (int)BaseStats.CC.rarity * 250)) 
                           + (BaseStats.CC.IsPC ? (EClass.player.lastEmptyAlly * BaseStats.CC.Evalue(1646)) : 0)) / 100);

最大MPは以下の要素によって決まります:

  • レベルに基づくMP:
    • レベル25まで、最大MPはレベルによって修正されます。レベル25以降はレベルアップしても最大MPは上がることはない。(レベルごとに4%)
      • 例えば、キャラクターがレベル1から2に成長する場合、そのHPは基本値の二倍に増加します。
      • 計算式は:(2 * MAG + 1 * WIL + 0.5 * LER) * (レベルの4%)
    • さらに、1 * MAGと10の基本MPがレベルに関係なく付与されます。
    • つまり、ゲーム開始時(レベル1)において、MAGが最大MPの最も大きな要素(1.04)であり、WIL(0.04)や LER(0.02)よりもはるかに大きい。
    • レベル25以上のキャラクターでは、MAGの各ポイントがMPの基本値を3増加させ、WILが1増加させ、LERが0.5増加させます。
  • MPの基本値はさらにキャラクターのマナ値%によって修正されます。
  • キャラクター派閥の修正:
    • キャラクターがPC派閥に属している場合、MPは変わらない。
    • キャラクターがPC派閥に属していない場合、MPはキャラクターのレアリティによってさらに増幅されます。
    • 通常の場合、100%; High Qualityの場合、350%; Legendaryの場合、600%; Mythicalの場合、850%; Artifactの場合、1100%。
    • ボスや進化したモンスターのレアリティはLegendaryです。
    • ユニークキャラクター、例えばフィアマ、グウェン、イノス・トゥラスは、Artifactのレアリティであり、彼らがPCファクションに属していない場合、このMPバフが彼らに適用される可能性がある。(要確認
  • この値は、キャラクターがPCである場合、孤独な魂のフィートによって最終的に修正されます。

進化したモンスターとネフィアボスのレアリティと基礎能力

    public Rarity rarity = Rarity.Random;
	public static SpawnSetting Evolved(int fixedLv = -1)
	{
		return new SpawnSetting
		{
			fixedLv = fixedLv,
			rarity = Rarity.Legendary,
			forcedHostility = Hostility.Neutral,
			isEvolved = true,
			tries = 10000
		};
	}

	public static SpawnSetting Boss(int filterLv, int fixedLv = -1)
	{
		return new SpawnSetting
		{
			filterLv = filterLv - 2,
			fixedLv = fixedLv,
			rarity = Rarity.Legendary,
			isBoss = true,
			tries = 10000,
			levelRange = 5,
			forcedHostility = Hostility.Enemy
		};
	}
  • ネフィアのボスと進化したモンスターは、Rarity.Legendaryで生成されます。上記の分析結果に基づくと、生成されたモンスターは通常のバージョンの最大HPが700%、最大MPが600%になります」。でもネフィアボスの能力のバフはこれだけじゃない気がする…
  • ネフィアのボスは常に、ネフィアの深さからで-7レベルから+3レベルのモンスターの中から選ばれる(確認が必要)。


最大スタミナ

	public void CalculateMaxStamina()
	{
		int num = base.END;
		int num2 = 0;
		foreach (Element value in elements.dict.Values)
		{
			if (value.source.category == "skill")
			{
				num = ((!IsPC) ? (num + Mathf.Max(value.ValueWithoutLink, 0)) : (num + Mathf.Max(value.vBase, 0)));
			}
		}
		num2 = EClass.curve(num, 30, 10, 60);
		if (num2 < 10)
		{
			num2 = 10;
		}
		_maxStamina = num2 + 15;
	}
    ....
    public override int max => BaseStats.CC._maxStamina * BaseStats.CC.Evalue(62) / 100;

キャラクターの最大スタミナは以下の要素によって決まります:

  • まずは基本体力値を計算します。
    • 1 END は基本体力値を1増加させます。
    • キャラクターが持っているスキルごとに、そのスキルのレベルに応じて基本体力値を増加させます。
    • 例えば、両手武器のレベルが50であれば、基本体力値 += 50。料理のレベルが50であれば、さらに+= 50と続きます。
    • 最大体力値の主な決定要因は、保有するスキルの合計レベルであり、耐久力(END)ではありません。
  • 基本体力値は「CURVE」関数を通過します(基本体力値、30、10、60)。
    • これは、基本体力値が30未満の場合、その値を返すことを意味します。
    • 基本体力値が大きくなるほど、出力のメリットは減少します。例えば:
      • 基本体力値60の場合、出力は44.8です。
      • 基本体力値90の場合、出力は53.36です。
      • 基本体力値300の場合、出力は77.9です。
      • 基本体力値1500の場合、出力は110.0です。
      • 基本体力値15000の場合、出力は195.6です。
      • スタミナの限界こそ存在しませんが、約120を超えると非常に上げにくくなります
  • この出力数値をさらに15増加し、その後にプレイヤーの活力%によって修正されます。
    • したがって、合計スキルレベルが1500のプレイヤーは、最大スタミナが約125になり、そのキャラクターの活力によって修正されます。
    • 耐久力(END)が20で、合計スキルレベルが40の新しいPCは、最大スタミナが60しかありません。

運搬重量限界

public override int WeightLimit => (base.STR * 500 + base.END * 250 + Evalue(207) * 2000) * ((!HasElement(1411)) ? 1 : 5) + 45000;

キャラクターの運搬重量限界は以下の要素によって決まります:

  • 基本限界は、0.5s * STR + 0.25s * END + 2s * スキル「重量上げ」のレベルに基づきます。(ゲーム内の「s」はcodeでは1000に相当します。)
  • キャラクターが黄金の騎士である場合、これはさらに500%修正されます。
  • 最後に、45sの基本運搬重量が最終結果に加算されます。

狂気度

プレイヤーの狂気度に影響を与える要因は多数存在します。分析のために、コード内で主要な要因を選びます:

	public void Cure(CureType type, int p = 100, BlessedState state = BlessedState.Normal)
	{
		bool flag = state == BlessedState.Blessed;
		switch (type)
		{
		case CureType.Heal:
		case CureType.Prayer:
			CureCondition<ConFear>();
			CureCondition<ConBlind>(2 * p / 100 + 5);
			CureCondition<ConPoison>(5 * p / 100 + 5);
			CureCondition<ConConfuse>(10 * p / 100 + 10);
			CureCondition<ConDim>(p / 100 + 5);
			CureCondition<ConBleed>(2 * p / 100 + 10);
			if (flag)
			{
				SAN.Mod(-5);
			}
			break;
  • プレイヤーが神に祈る際に、もし使用されるアイテムの状態が「祝福された」場合、キャラクターの狂気度が5を減少します。
    • どう考えてもこれはかなり変です。なぜなら、神に祈る行為はアイテム使用ではなく、「祝福された」状態を割り当てることもできないため、このコードは恐らく未使用です。
	case EffectId.RemedyJure:
		TC.HealHP(1000000, HealSource.Magic);
		TC.CureHost(CureType.Jure, power, state);
		TC.Say("heal_jure", TC);
		break;
    if (type == CureType.Jure)
			{
				SAN.Mod(-999);
  • この効果は、癒しの羽根(または★ジュアの抱き枕?)を使用すると発生し、狂気度が-999になります。(「レイハンド」はEffectId.JureHealとなります。)
		case Type.Dojin:
			c.PlaySound("wow");
			c.Say("book_decode", c, owner);
			if (!c.IsPC)
			{
				c.Talk("wow");
			}
			switch (BookType)
			{
			case Type.Ero:
				if (c.IsPC)
				{
					EClass.pc.SAN.Mod(-(EClass.rnd(5) + 1));
				}
  • この効果は、プレイヤーキャラクターが危ない本を読むと発生します。狂気度は-1から-5のランダムな値で変更されます。
		case 914:
			flag2 = false;
			if (EClass.rnd(3) != 0)
			{
				if (Chance(30 + eleP / 5, 100))
				{
					Chara.AddCondition<ConConfuse>(eleP);
				}
			}
			else if (Chance(30 + eleP / 5, 100))
			{
				Chara.AddCondition<ConSleep>(eleP);
			}
			if (Chance(50, 100))
			{
				Chara.SAN.Mod(EClass.rnd(2));
			}
			break;
            ...
		case 920:
			flag2 = false;
			if (Chance(5 + eleP / 25, 40))
			{
				Chara.AddCondition<ConBlind>(eleP / 2);
			}
			if (Chance(5 + eleP / 25, 40))
			{
				Chara.AddCondition<ConParalyze>(eleP / 2);
			}
			if (Chance(5 + eleP / 25, 40))
			{
				Chara.AddCondition<ConConfuse>(eleP / 2);
			}
			if (Chance(5 + eleP / 25, 40))
			{
				Chara.AddCondition<ConPoison>(eleP / 2);
			}
			if (Chance(5 + eleP / 25, 40))
			{
				Chara.AddCondition<ConSleep>(eleP / 2);
			}
			if (Chance(5 + eleP / 25, 40))
			{
				Chara.AddCondition<ConDim>(eleP / 2);
			}
			if (Chance(30 + eleP / 10, 100))
			{
				Chara.SAN.Mod(EClass.rnd(2));
			}
			break;
            ...
        bool Chance(int a, int max)
		{
			if (dmg > 0 || (origin != null && origin.HasElement(1345)))
			{
				return Mathf.Min(a, max) > EClass.rnd(100);
			}
			return false;
		}

狂気度を増加させる攻撃は2種類であり、これは人々が狂気度を上昇する主なる要因であると観察されています。

  • Element ID 914または幻惑属性攻撃は、受けた攻撃ごとに50%の確率で狂気度が0 - 1増加します。
  • Element ID 920または混沌属性攻撃は、受けた攻撃ごとに確率で狂気度が0 - 1増加します。この確率は攻撃のエレメントパワーによって異なり、30%から100%の範囲になります。
  • 狂気度を固定で増加させる効果もいくつか存在します。"気持ちいいこと"を行うと狂気度が10増加します(要確認)。人肉を食べること(カニバリズム)は固定で狂気度が15増加します。

狂気度と眠気の関係

    public class StatsSleepiness : Stats
    {
	    public const int Sleepy = 1;
 
    	public const int VerySleepy = 2;

    	public const int VeryVerySleepy = 3;

    	public override bool TrackPhaseChange => BaseStats.CC.IsPC;
    }
    ...
    public Stats sleepiness => Stats.Sleepiness.Set(_cints, 17, this);
    public Stats SAN => Stats.SAN.Set(_cints, 17, this);

    public bool CanSleep()
	{
		if (EClass._zone.events.GetEvent<ZoneEventQuest>() != null)
		{
			return false;
		}
		if (!EClass.debug.godMode && sleepiness.GetPhase() == 0)
		{
			return stamina.GetPhase() <= 1;
		}
		return true;
	}
    public override int GetPhase()
	{
		return base.source.phase[(int)Mathf.Clamp(10f * (float)value / (float)max, 0f, 9f)];
	}

	public virtual void Set(int a)
	{
		value = a;
		if (value < min)
		{
			value = min;
		}
		else if (value > max)
		{
			value = max;
		}
	}
  • 面白いことに、キャラクターの狂気度と睡眠値は同じID(17)のパラメータによって決定している。
  • 実際にプレイの時も、眠気1段階は常に狂気度が40になった瞬間に発動している。つまり、睡眠値(眠気)と狂気度は常に連動していると見っても問題ないかと思います。
    • 実際に自分自身に「狂気の手」を連続で使って、たとえさっき起床したばかりとしでも、狂気度が40になった瞬間PCが眠気状態になるのは確認済み。
    • 狂気度は「ひどい眠気」の状態で「徐々に狂気度が上昇」ではなく、最初から時間とともに「徐々に上昇」して、ある段階に達すると「眠気」或いは「ひどい眠気」の状態になるのが正しと思います。
    • 狂気度は時間とともに0から上昇するという現象は確認済み。
  • これは推測ですが、狂気度と睡眠値は元々異なる値になるはずだが、EA23.54の段階ではこの二つの値は一つになるバグが存在すると思います。
    • 実際、どれだけElin Decompiledで探しても、時間とともにSAN値を増加するコードは見つかりませんでした。
    • だが、時間とともにSleepinessを増加するコードはある。SAN=Sleepiness、だからSAN値も時間とともに増えているだけだと思います。