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

From Ylvapedia
Jump to navigation Jump to search
Line 53: Line 53:
*この値は、キャラクターがPCである場合、孤独な魂のフィートによって最終的に修正されます。
*この値は、キャラクターがPCである場合、孤独な魂のフィートによって最終的に修正されます。


==Maximum Stamina==
==最大スタミナ==
<syntaxhighlight lang="c#" line="1">
<syntaxhighlight lang="c#" line="1">
public void CalculateMaxStamina()
public void CalculateMaxStamina()
Line 77: Line 77:
</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.
** 1 END は基本体力値を1増加させます。
** '''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).
** 例えば、両手武器のレベルが50であれば、基本体力値 += 50。料理のレベルが50であれば、さらに+= 50と続きます。
** This means, if the base number is less than 30, return that value.
** '''最大体力値の主な決定要因は、保有するスキルの合計レベルであり、耐久力(END)ではありません。'''
** For each point of additional base num, the return is diminished.
* 基本体力値は「CURVE」関数を通過します(基本体力値、30、10、60)。
** Base num 60, output is 44.8
** これは、基本体力値が30未満の場合、その値を返すことを意味します。
** Base num 90, output is 53.36
** 基本体力値が大きくなるほど、出力のメリットは減少します。例えば:
** Base num 300, output is 77.9
*** 基本体力値60の場合、出力は44.8です。
** Base num 1500, output is 110.0
*** 基本体力値90の場合、出力は53.36です。
** Base num 15000, output is 195.6
*** 基本体力値300の場合、出力は77.9です。
** There is no maximum stamina, however it becomes '''much harder to raise''' after about 120.
*** 基本体力値1500の場合、出力は110.0です。
* The output number is increased by 15, then modified by the vigor(Evalue(62))% of player.
*** 基本体力値15000の場合、出力は195.6です。
** So a player with 1500 of total skill levels will have a base stamina about 125, modified by the vigor of said character.
*** スタミナの限界こそ存在しませんが、約120を超えると'''非常に上げにくくなります'''
** A new player with 20 END and 40 total skill level will only have 60 maximum stamina.
* この出力数値をさらに15増加し、その後にプレイヤーの活力%によって修正されます。
** したがって、合計スキルレベルが1500のプレイヤーは、最大スタミナが約125になり、そのキャラクターの活力によって修正されます。
** 耐久力(END)が20で、合計スキルレベルが40の新しいPCは、最大スタミナが60しかありません。


==Carryweight Limit==
==Carryweight Limit==

Revision as of 16:22, 10 December 2024


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

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

最大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%。
    • キャラクターのレアリティは現在調査中ですが、おそらくネフィアのボスモンスターに適用されます。
  • この値は、キャラクターがPCである場合、孤独な魂のフィートによって最終的に修正されます。

Maximum 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以降はレベルアップしても最大HPは上がることはない。(レベルごとに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%。
    • キャラクターのレアリティは現在調査中ですが、おそらくネフィアのボスモンスターに適用されます。
  • この値は、キャラクターがPCである場合、孤独な魂のフィートによって最終的に修正されます。

最大スタミナ

	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しかありません。

Carryweight Limit

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

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

There are many factors influencing the sanity of players. We pick the main ones in the code for analysis:

	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;
  • 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.
    • 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.
	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);
  • 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.
		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));
				}
  • 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.
		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;
		}
  • 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.
  • 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 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%.
  • 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.