Elin:解析/基本ステータス

From Ylvapedia
Revision as of 16:15, 10 December 2024 by Inno (talk | contribs) (→‎Maximum MP)
Jump to navigation Jump to search


このページでは、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である場合、孤独な魂のフィートによって最終的に修正されます。

Maximum Stamina

	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;

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

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.