Elin:解析/フィート: Difference between revisions

From Ylvapedia
(Elin:Code Analysis/Featsの日本語ページを作成。中身は未翻訳)
 
m (デフォルトソートなどを設定)
Line 1: Line 1:
{{DISPLAYTITLE:解析/フィート}}
{{解析}}
{{解析}}
{{Untranslated}}
{{Untranslated}}
Line 760: Line 761:
[[Category:JA]]
[[Category:JA]]
[[Category:Elin Spoiler]]
[[Category:Elin Spoiler]]
{{DEFAULTSORT:カイセキ,フィート}}

Revision as of 13:25, 25 January 2025



Version EA23.74: This article is at least 20 minor version or a major version behind the latest stable release of Elin. Please help update the page.

フィートにはいくつかの種類があります。

  1. 種族フィート:種族選択時に獲得します。
  2. 職業フィート:職業に応じて獲得します。
  3. 後天フィート:レベルアップおよびフィートポイントの消費によって獲得します。

このページでは、実際の効果はプレイヤーからは見えないフィートの一部を紹介します。

コードにおけるフィートの記述:索引

public const int featStamina = 1612; x
public const int featCHA = 1627; x
public const int featWIL = 1626; x
public const int featMAG = 1625; x
public const int featLER = 1624; x
public const int featPER = 1623; x
public const int featEND = 1622; x
public const int featDEX = 1621; x
public const int featSTR = 1620; x
public const int featLuck = 1628; x
public const int featSwordsage = 1418; *
public const int featLife = 1610; x
public const int featManaMeat = 1421; *
public const int featExecutioner = 1420; *
public const int featMilitant = 1419; *
public const int featWitch = 1417; x
public const int featInquisitor = 1416; x
public const int featFoxMaid = 1415; x
public const int featWhiteVixen = 1414; *
public const int featFairysan = 1413;
public const int featLuckyCat = 1412;
public const int featSPD = 1629; x
public const int featMana = 1611; x
public const int featHardy = 1630; x
public const int featLonelySoul = 1646; 
public const int featEvade = 1632; x
public const int featEarthStrength = 1411;
public const int featChef = 1658; 
public const int featManaCost = 1657; x
public const int featScavenger = 1656; 
public const int featModelBeliever = 1655; x
public const int featDreamWaker = 1653;
public const int featRapidArrow = 1652;
public const int featMagicManner = 1651;
public const int featGourmet = 1650;
public const int featDefender = 1649;
public const int featDefense = 1631;
public const int featRapidMagic = 1648;
public const int featParty = 1645;
public const int featBodyParts = 1644;
public const int featSorter = 1643;
public const int featSleeper = 1642;
public const int featResCurse = 1641;
public const int featAnimalLover = 1640;
public const int featFaith = 1636; x
public const int featMartial = 1635; x
public const int featNegotiate = 1634; x
public const int featSpotting = 1633; x
public const int featSummoner = 1647; x
public const int featReboot = 1410;
public const int featHeavyCasting = 1654;
public const int featPaladin2 = 1408; *
public const int featShiva = 1224;
public const int featLoyal = 1225;
public const int featUnderground = 1226;
public const int featServant = 1227;
public const int featDemigod = 1228;
public const int featLittleOne = 1229;
public const int featAdam = 1230;
public const int featNirvana = 1231;
public const int featCosmicHorror = 1233;
public const int featAcidBody = 1223;
public const int featHeavyEater = 1234;
public const int featNorland = 1236;
public const int featRoran = 1237;
public const int featGod_element1 = 1300;
public const int featGod_earth1 = 1305;
public const int featGod_wind1 = 1310;
public const int featGod_machine1 = 1315;
public const int featGod_healing1 = 1320;
public const int featGod_harvest1 = 1325;
public const int featGod_luck1 = 1330;
public const int featGod_moonshadow1 = 1350;
public const int featGod_trickery1 = 1345;
public const int featGod_strife1 = 1355;
public const int featGod_harmony1 = 1335;
public const int featGod_oblivion1 = 1340;
public const int featLightEater = 1235;
public const int featSplit = 1222;
public const int featSpike = 1221;
public const int featFate = 1220;
public const int featBoost = 1409; *
public const int featSlowFood = 1200; *
public const int featManaBond = 1201; *
public const int featFastLearner = 1202; *
public const int featGrowParts = 1203; x
public const int featFairyWeak = 1204; x
public const int featCannibalism = 1205; *
public const int featMelilithCurse = 1206; x
public const int featFoxBless = 1207; *
public const int featFoxLearn = 1208; *
public const int featFluffyTail = 1209; x
public const int featUndead = 1210; x
public const int featSnail = 1211; *
public const int featFairyResist = 1212; x
public const int featElea = 1213; x
public const int featManaPrecision = 1214; x
public const int featDwarf = 1215; *
public const int featSuccubus = 1216; x
public const int featGolem = 1217; x
public const int featMetal = 1218; *
public const int featElderCrab = 1219;
public const int featBaby = 1232; 
public const int featWarrior = 1400; *
public const int featThief = 1401; x
public const int featFarmer = 1403; *
public const int featArcher = 1404; *
public const int featPianist = 1405; *
public const int featTourist = 1406; *
public const int featWizard = 1402; x 
public const int featPaladin = 1407; *
  • すべてのフィートは整数(レベル)で表示されています。 111種類のフィートがあります。
    • 「*」マークのついているものだけをこのページでは見ていきます。
    • 「x」マークがついているものは、効果がすべてゲーム内で表示されているものです。
    • マークがついていないものは、コード解析班がまだそのフィートを見つけていないことを意味します。
  • 自分で効果を確認したい場合は、その番号をコード内で検索してください。

職業フィート

featSwordsage (霊符の知識)

    case MixType.Talisman:
		{
			int num2 = EClass.pc.Evalue(1418);
			Thing thing4 = ai.ings[1];
			SourceElement.Row source2 = (thing4.trait as TraitSpellbook).source;
			int num3 = thing4.c_charges * source2.charge * (100 + num2 * 50) / 500 + 1;
			int num4 = 100;
			Thing thing5 = ThingGen.Create("talisman").SetNum(num3);
			thing5.refVal = source2.id;
			thing5.encLV = num4 * (100 + num2 * 10) / 100;
			thing.ammoData = thing5;
			thing.c_ammo = num3;
			EClass.pc.Say("talisman", thing, thing5);
			thing4.Destroy();
			break;
		}
  • The "talisman mastery 2" trait of swordmage positively influence the effect of created talismans. Specifically:
    • The number of charges created by swordmage will be (magic_book_charges * num_of_charge_gained_if_read * 2 / 5) + 1.
    • For a normal PC, the number of charges will be (magic_book_charges * num_of_charge_gained_if_read * 1 / 5) + 1.
      • For example, for a magic book with 3 reads left with each read giving PC 10 charges, the number of talisman charge by swordmage would be 13, while by normal PC would be 7.
    • The talisman level created by swordmage is fixed at 120, while fixed at 100 by normal PC.

featManameat (マナの体)

	if (Evalue(1421) >= 2 && base.hp <= MaxHP / (9 - Evalue(1421) * 2))
		{
			num4 /= 2;
		}
	PlayEffect("cast");
	mana.Mod(-num4);
  • If the feat Mana body is at least level 2, then if the character's HP is lower than a threshold, all mana cost is cut by 50%.
    • Specifically, if feat Level is 2, when HP <= 20% Maximum HP, if feat Level is 3, when HP <= 33% Maximum HP.
    if (Evalue(1421) > 0)
		{
			int num6 = 0;
			int num7 = dmg;
			if (hp > 0)
			{
				num7 = dmg - hp;
				hp -= dmg;
				num6 += dmg;
				if (hp < 0 && Chara.mana.value >= 0)
				{
					num6 += hp;
					hp = 0;
				}
			}
			if (hp <= 0)
			{
				if (Evalue(1421) >= 2)
				{
					num7 /= 2;
				}
				dmg = num7;
				if (Chara.mana.value > 0)
				{
					num7 -= Chara.mana.value;
					Chara.mana.value -= dmg;
					num6 += dmg;
				}
				if (Chara.mana.value <= 0)
				{
					hp -= num7;
					num6 += num7;
				}
			}
			dmg = num6;
		}
  • It seems, that this mana cost reduction by 50% is also applied when HP is equal or less than 0 (only when Mana body >= level 2).
    • This effectively cut the damage these character recieved when HP is 0 by 50%.

featExecutioner (死の神髄)

    if (CC.Evalue(1420) > 0)
		{
			int num3 = Mathf.Min(100, 100 - CC.hp * 100 / CC.MaxHP);
			if (num3 >= 50 && num3 * num3 * num3 * num3 / 3 > EClass.rnd(100000000))
			{
				return Crit();
			}
		}
	return true;
  • This is calculated after ALL other calculation is done. Such as Natural 20 hit, Natural 1 miss, etc.
    • A number (num3) is calculated through the percentage of HP left of a character. For example, if a character has 10% HP, that number is 90.
  • If the number is >= 50 (Character have less than 50% Max HP), we generate a random number, and test if num3^4 /3 is bigger than that number.
    • This effectively translate to a 33% Critical chance at 0 HP, and about 2% Critical chance at 50% HP.
  • Remember, this calculation is done after all other calculations, including all evasions. If player doesn't have this feat, this attack will hit anyway.
    • In other words, in order to trigger this effect, you have to first hit the enemy.

featPaladin (敬虔)

	public void RefreshFaithElement()
	{
        ...
		SourceElement.Row row2 = EClass.sources.elements.alias.TryGetValue("featGod_" + row.id + "1");
		if (row2 != null)
		{
			faithElements.SetBase(row2.id, 1);
		}
		if (!HasCondition<ConExcommunication>())
		{
			int[] array = row.elements;
			int num = GetPietyValue() * (120 + Evalue(1407) * 15) / 100;
			for (int i = 0; i < array.Length; i += 2)
			{
				int num2 = array[i + 1] * num / 50;
				if (array[i] == 79)
				{
					num2 = EClass.curve(num2, array[i + 1] * 2, 10, 50);
				}
				if (num2 >= 20 && array[i] >= 950 && array[i] < 970)
				{
					num2 = 20;
				}
				faithElements.SetBase(array[i], Mathf.Max(num2, 1));
			}
		}
		faithElements.SetParent(this);
	}
  • The benefit of feat Devout is about 12.5% per level of that feat (15 of 120).

featTourist (観光気分)

		case 1406:
			featRef[0] = (a * 20).ToString() ?? "";
			featRef[1] = (a * 5).ToString() ?? "";
			break;
        ...
		if (!sell)
			{
				p *= 1f + 0.2f * (float)c.Evalue(1406);
			}
		break;
        ...
        num = num * (float)(100 + EClass.pc.Evalue(1406) * 5) / 100f;
  • The price for tourist will be increase by 100% (0.2f * lvl 5), the stock of shops will be increased by 25% (100 + 5 * 5)/100.

featPianist (音楽家)

	if (p.progress > 2 && (EClass.rnd(100 + 50 * owner.Evalue(1405)) == 0 || 
           EClass.rnd(4 + (int)MathF.Max(0f, song.lv - playing.index * 25 - playing.index * playing.index / 2)) == 0))
			{
					playing.mistakes++;
					if (EClass.rnd(2) == 0)
					{
						LevelSong(2 + 2 * EClass.rnd(owner.Evalue(1405) + 1));
					}
					if (playing.mistakes >= 10)
					{
						playing.index = 0;
					}
					Cancel();
			}
    ...
    num = (EClass.rnd(c.LV * 2 + 1) + 1) * (100 + toolLv * 2 + owner.Evalue(1405) * 10) / 100;
  • The feat of Musician (lvl 2 by default) decrease the mistakes made by players
    • Specifically, if the song is of progress more than 2, the mistake possibility is decreased by 50%.
    • By a possibility of 50%, the experience of player's song is increased.
      • If normal player, the number of increase is 2.
      • If Musician, the number of increase is a number among 2, 4, 6.
  • This feat also increase the reward earned by player.
    • Specifically, increase 10% per level of feat (i.e. 20% total).

featArcher (射撃の名手) & featWarrior (武器の知識)

	dMulti = 0.6f + (float)(weaponSkill.GetParent(CC).Value + weaponSkill.Value / 2 + CC.Evalue(flag3 ? 304 : (IsRanged ? 133 : 132))) / 50f;
	dMulti += 0.05f * (float)CC.Evalue(IsRanged ? 1404 : 1400);
  • This feat increase the damage multiplier of ranged attack/melee attack by 0.05 per level of feat.
    • Not 5% flat, mind you. The default damage multiplier is 0.6, and with more skills, the effect of this feat is diminished.

featFarmer (農夫の足腰)

    int num = BaseStats.CC.Evalue(1403);
	if (a < 0 && num > 0)
		{
			a = a * 100 / (100 + EClass.rnd(num + 1) * 20);
			if (a == 0)
			{
				return;
			}
		}
  • For the feat of farmer "Farming Legs 2", the stamina cost of actions is randomly 100%, 83%, 72%.

featPaladin2 (防衛本能)

	foreach (Chara chara3 in EClass._map.charas)
		{
			if (Chara.IsFriendOrAbove(chara3) && chara3.HasElement(1408) && chara3.faith == EClass.game.religions.Healing && EClass.world.date.GetRawDay() != chara3.GetInt(58) && (!chara3.IsPCFaction || IsPCFaction))
					{
						Msg.alwaysVisible = true;
						Msg.Say("layhand", chara3, this);
						Msg.Say("pray_heal", this);
						hp = MaxHP;
						Chara.AddCondition<ConInvulnerable>();
						PlayEffect("revive");
						PlaySound("revive");
						chara3.SetInt(58, EClass.world.date.GetRawDay());
						return;
					}
				}
  • Remember that you can only use layhand ability on a character that is friend or above.

種族フィート

featMetal (メタル 999)

		case 1218:
			ModBase(950, a / 40, hide: false);
			ModBase(952, a / 40, hide: false);
			ModBase(955, a / 40, hide: false);
			ModBase(953, a / 40, hide: false);
			ModBase(958, a / 40, hide: false);
			ModBase(956, a / 40, hide: false);
			ModBase(954, a / 40, hide: false);
			ModBase(959, a / 40, hide: false);
			ModBase(964, a / 40, hide: false);
			ModBase(961, a / 40, hide: false);
			break;
       ...
	   if (HasElement(1218))
			{
				dmg = dmg * (1000 - Evalue(1218)) / 1000;
				if (dmg <= 0 && EClass.rnd(4) == 0)
				{
					dmg++;
				}
			}
  • The resistance granted to metal races only work when the feat is at very, very high level.
    • Specifically, level 999 grant 24 level resistance for each type of damage.
  • Furthermore, for any damage done, the damage is decreased sharply.
    • Specifically, level 999 grant a damage reduction of 99.9%, rounded down to nearest integer.
      • 1000 damage will become 1, and anything less than 999 is shrugged off.
    • But if the damage is reduced to 0 at last step, in 1/4 chances the damage is returned to 1.

featDwarf (蜜酒の虜)

		int orgPower = power;
		if (blessed || flag)
		{
			power *= 2;
		}
		case EffectId.Booze:
			TC.AddCondition<ConDrunk>(power);
			if (TC.HasElement(1215))
			{
				TC.Say("drunk_dwarf", TC);
				TC.AddCondition(Condition.Create(power + EClass.rnd(power), delegate(ConBuffStats con)
				{
					con.SetRefVal(Element.List_MainAttributes.RandomItem(), (int)id);
				}));
			}
			break;
  • The power of the random buff hillfolks receive is based on the power of alcohol (but if the alcohol power is always static, then it is static. Need Confirmation.). The base power of alcohol is further increased by a randomized 0 to 100% amount.
    • If the alcohol is blessed, its base power is also multiplied by 2. Try that next time when you are in a pinch.
  • One of your main attributes will be buffed. this include the major eight, and speed.
			if (host != null && host.ride == this && ((host.isConfused && EClass.rnd(2) == 0) || (host.isDrunk && EClass.rnd(IsIdle ? 2 : 8) == 0 && !host.HasElement(1215))))
			{
				flag = true;
			}
			if (flag && newPoint.Distance(pos) <= 1)
			{
				Point randomNeighbor = pos.GetRandomNeighbor();
				if (CanMoveTo(randomNeighbor, allowDestroyPath: false))
				{
					newPoint = randomNeighbor;
					if (isDrunk)
					{
						Talk("drunk");
					}
				}
  • When a person is drunk, there is a 50% chance of randomly moving to a neighboring position if this character is Idle (not moving), and 12.5% if the character is moving.
  • When a person is confused, there is a 50% chance of randomly moving too.
  • The Mead Blood feat negates the drunk part, but not the confused part.

featMilitant (前線指揮)

    int num = 0;
    if (owner.IsPCParty)
			{
				int id = e.id;
				if (id == 70 || (uint)(id - 72) <= 1u)
				{
					int num2 = 0;
					foreach (Chara member in EClass.pc.party.members)
					{
						if (member.Evalue(1419) > 0)
						{
							num2 += member.Evalue(1419);
						}
					}
					if (num2 > 0)
					{
						int num3 = 0;
						foreach (Chara chara in EClass._map.charas)
						{
							if (chara.IsHostile(EClass.pc))
							{
								num3++;
							}
						}
						if (num3 > 0)
						{
							num += Mathf.Max(1, (e.ValueWithoutLink + e.vLink) * (int)Mathf.Clamp(4f + Mathf.Sqrt(num3) * (float)num2 * 2f, 5f, 30f) / 100);
						}
					}
				}
			}
  • The Frontier Commander feat is applied to STR, DEX, PER. (70, 72,73)
  • For each character with the feat, num2 is increased by the level of that feat (1).
  • For each hostile character to PC in the current map, num3 is increased by 1.
  • The final bonus to that stat is calculated by:
    • At least 1,
    • The current value * Clamp(4 + sqrt(num3) * num2 * 2, 5, 30) / 100
      • At least 5% of the current value of that stat, at most 30%.
      • the bonus is determined by the Square root of number of enemy, times the amount of NPC with the feat, times 2, plus 4.
      • The maximum bonus is reached at 169 enemies if 1 character with feat, but only about 39 enemies if 2 characters.

featWhiteVixen (巫女)

    if (t.IsCursed && t.IsEquipmentOrRanged && c.HasElement(1414))
		{
			bool num = t.blessedState == BlessedState.Doomed;
			int num2 = 200 + t.LV * 3;
			if (t.rarity == Rarity.Legendary)
			{
				num2 *= 3;
			}
			if (t.rarity >= Rarity.Mythical)
			{
				num2 *= 5;
			}
			if (num)
			{
				num2 *= 2;
			}
			EClass.pc.PlayEffect("identify");
			EClass.pc.PlaySound("identify");
			c.PlayEffect("mutation");
			c.Say("draw_curse", c, t);
			t.Destroy();
			List<Element> list = new List<Element>();
			foreach (Element value in EClass.pc.elements.dict.Values)
			{
				if (value is Spell)
				{
					list.Add(value);
				}
			}
			if (list.Count == 0)
			{
				EClass.pc.SayNothingHappans();
				return;
			}
			Element element = list.RandomItem();
			EClass.pc.ModExp(element.id, num2);
			EClass.pc.Say("draw_curse2", EClass.pc, element.Name);
			return;
		}
  • The spell exp given to PC is determined by several factors.
    • Base value: 200 + 3 * LV of equipment
    • If Legendary (or Miracle), the value is increased to 300%.
    • If Mythical (or Godly), the value is increase to 500%.
    • If equipment is doomed, further times 2.

featSnail (かたつむり)

    if (idAct == "janitor" && EClass.rnd(5) == 0)
		{
			DoSomethingToCharaInRadius(4, null, delegate(Chara c)
			{
				if (c.HasElement(1211) && !(EClass._zone is Zone_Casino))
				{
					owner.Talk("snail");
					Thing t4 = ThingGen.Create("1142");
					ActThrow.Throw(owner, c.pos, t4);
				}
			});
			yield return Restart();
		}
  • Oh you poor snail...Hope you are doing ok, but this piece of code will ruin your day...
  • If a janitor sees a snail within 4 blocks, and they are not in the casino:
    • The janitor will generate a pot of salt water and throw it to the snail's position.
      • The id of salt water is hard coded though, and if the id change...
		case EffectId.SaltWater:
			if (TC.HasElement(1211))
			{
				TC.Say("drinkSaltWater_snail", TC);
				int dmg = ((TC.hp > 10) ? (TC.hp - EClass.rnd(10)) : 10000);
				TC.DamageHP(dmg, AttackSource.None, CC);
			}
			else if (TC.IsPC)
			{
				TC.Say("drinkSaltWater", TC);
			}
			break;
  • If a poor snail accidentally drank salt water, it will receive very, very high damage.
    • If the snail's HP is higher than 10, it's HP will be reduced to at most 10.
    • If the snail's HP is lower or equal to 10, then it will receive 10000 damage.
      • But if you are in autocombat, because the damage is not a source of Finish, it will at most leave you to 0 HP.

featFoxLearn (古き狐の血統)

	public int GetSpellExp(Chara c, Element e, int costMod = 100)
	{
		Act.Cost cost = e.GetCost(c);
		int num = cost.cost * ((cost.type == Act.CostType.SP) ? 20 : 5) * (100 + c.Evalue(1208) * 30) / 100 + 10;
		num = num * costMod / 100;
		if (!e.source.aliasParent.IsEmpty())
		{
			int num2 = ValueWithoutLink(e.source.aliasParent) - ValueWithoutLink(e.source.id);
			num = ((num2 < 0) ? (num * 100 / (100 - num2 * 25)) : (num * (100 + num2 * 5) / 100));
		}
		if (num < 0)
		{
			num = 0;
		}
		return num;
	}
  • The spell exp you earn is normally, the MP cost of spell times 5 + 10, if it is a SP skill, 20 * SP cost + 10.
  • This feat increase the exp gain (of cost) by 30% (without influencing the stable 10 part).
    • Need confirmation: Exactly how much exp is needed for spell to gain a level?

featFoxBless (狐守)

public void DamageHP(...)
    if (EClass.pc.HasElement(1207) && isChara)
			{
				int num = 0;
				int num2 = 0;
				foreach (Condition condition2 in Chara.conditions)
				{
					if (condition2.Type == ConditionType.Buff)
					{
						num++;
					}
					else if (condition2.Type == ConditionType.Debuff)
					{
						num2++;
					}
				}
				if (IsPCParty)
				{
					dmg = dmg * 100 / Mathf.Min(100 + num * 5, 120);
				}
				else
				{
					dmg = dmg * Mathf.Min(100 + num2 * 5, 120) / 100;
				}
			}
  • This feat is only utilized at damage calculation, and only apply when the feat is owned by PC.
  • The damage you and your ally will receive is reduced by 100/ 100 + 5 * x, where x is the number of buffs you have, to maximum of 4.
  • Similarly, the damage characters not in your party will receive is increased by 5% per each debuff they have, to maximum of 4.
    • This debuff will also apply to any character not in your party but in your faction, so beware.

featFastLearner (習得上手)

	public static int Learn(Chara c, Element e)
	{
		int num = Mathf.Max(1, e.CostLearn * (c.HasElement(1202) ? 80 : 100) / 100);
		if (e.source.tag.Contains("guild") && Guild.Current.relation.rank < 2)
		{
			return num * 2;
		}
		return num;
	}

	public static int Train(Chara c, Element _e)
	{
		Element element = c.elements.GetElement(_e.id);
		if (element.vTempPotential >= 1000)
		{
			return 0;
		}
		int num = Mathf.Max(1, element.CostTrain * (c.HasElement(1202) ? 80 : 100) / 100);
		if (element.source.tag.Contains("guild") && Guild.Current.relation.rank < 2)
		{
			return num * 2;
		}
		return num;
	}
  • The training & learning platinum cost will be decreased by 20%, rounding down to the nearest integer, but no less than 1.
  • Also, if the temporal potential is greater than 1000, no train can be done.
    • If you are a guild member, but rank is less than 1, then the cost of training is increased by 100%.
    public override int ExpToNext => (100 + base.Value * 10) * (100 - owner.Value(403)) / 100;
    ....
    public int ExpToNext => (50 + LV * 30) * (100 - Evalue(403)) / 100;
  • For each element, the lvlup exp needed to get to next level is decreased by 20%.
  • This also apply to the character level up, also decreased by 20%.

featManabond (マナの体)

    int num = -value * 400 / (100 + BaseStats.CC.Evalue(303) * 10);
		if (BaseStats.CC.HasElement(1201))
		{
			num /= 3;
		}
		if (!BaseStats.CC.IsPC)
		{
			num /= 5;
			if (num < 10)
			{
				return;
			}
		}
		BaseStats.CC.Say("mana_overflow", BaseStats.CC);
		BaseStats.CC.DamageHP(num, 921, 100, AttackSource.ManaBackfire);
		if (BaseStats.CC.IsAliveInCurrentZone)
		{
			BaseStats.CC.elements.ModExp(303, Mathf.Clamp(-a * 10, 10, 200));
		}
  • This might in fact become a thread on how mana overcasting damage works.
  • We first calculate a base damage. For each point of mana missing after using mana, 4 point of HP damage will be lost without skill.
    • With 10 level of Mana capacity, this damage will be cut in half. 20 level, 33%, 30 level, 25%, etc.
  • If you have the manabond feat, this damage will but further cut by 66%.
  • NPCs will also recieve mana overcasting damage, but will be cut by 80%, and if the final result is less then 10, take no damage.
    • Even so, this can still be exploited in some way, I think.
  • Finally, the experience gained with mana capacity skill is calculated with the mana used, instead of mana depleted, times 10.
    • For example, if you cast healing of Juere, which cost 100 mana when you only have 99, you will gain 1000 base experience in mana capacity, while only recieving minimal damage.

後天フィート

以下のフィートは、ゲームプレイやレベルアップなどによって獲得できます。

featCanniblism (Canniblism)

		if (EClass.rnd(c.IsHuman ? 5 : 20) == 0)
			{
				c.SetFeat(1205, 1, msg: true);
				flag4 = true;
			}
       ...
        if (flag4)
			{
				c.SetInt(31, EClass.world.date.GetRaw() + 10080);
			}
		}
	 	else if (flag4 && c.GetInt(31) < EClass.world.date.GetRaw())
		{
			c.SetFeat(1205, 0, msg: true);
		}
  • If you don't have this feat, and you eat human flesh, there is a 20% chance that you will gain the Canniblism feat.
    • If you are not human (i.e. if you don't consider eating human flesh as Canniblism), there is still 5% chance you will get this feat.
  • This feat will only last for 10080 minutes in game, i.e. a week of in game time. If you have another piece, this timer will refresh.


入手不可能なフィート

このセクションには、通常の手段では得られないフィートが含まれているため情報は鵜呑みにしないでください。ここに記載されているすべてのフィート効果は検証が必要です

featBoost (Boost)

	if (hp < MaxHP / 3 && HasElement(1409) && !Chara.HasCooldown(1409))
		{
			Chara.AddCooldown(1409);
			Chara.AddCondition<ConBoost>(Power);
			Chara.Cure(CureType.Boss);
			Chara.HealHP(MaxHP / 2);
		}
  • With this feat, when your HP is lower than 1/3 of your maximum, your HP will be healed immediately by 50%.
    • Boost condition will also be activated, and almost all debuffs and temporal stat decrease will be cured.
  • Not sure where this is used.