Skip to content

EA 23.197 Nightly

September 10, 2025

22 files modified.

Important Changes

Possible breaking changes. Click the filename to view the chunk.

AI_TendAnimal (1)

cs
public override bool ShouldAllyAttack(Chara tg) 

AI_Fuck

public enum FuckType

cs

	public override bool CancelWhenDamaged => !ntr;

	public override bool ShouldAllyAttack(Chara tg) 
	{ 
		return tg != target; 
	} 
	public override IEnumerable<Status> Run()
	{
		if (target == null)

public void Finish()

cs
		{
			EClass.player.stats.kimo++;
		}
		if (ntr) 
		{ 
			chara2.things.Find<TraitDreamBug>()?.ModNum(-1); 
		} 
		if (!ntr || !chara.HasElement(1239) || chara2.HasElement(1216))
		{
			break;

AI_TendAnimal

public class AI_TendAnimal : AI_Fuck

cs
public class AI_TendAnimal : AI_Fuck
{
	public override FuckType Type => FuckType.tame;
	public override bool ShouldAllyAttack(Chara tg) 
	{ 
		return tg != target; 
	} 
}

AM_Build

public override void RotateUnderMouse()

cs

	public override void InputWheel(int wheel)
	{
		if (!EInput.isAltDown && !EInput.isCtrlDown) 
		if (recipe.MaxAltitude > 0) 
		{
			if (recipe.MaxAltitude > 0) 
			{ 
				ModAltitude(wheel); 
				EClass.screen.tileSelector.RefreshMouseInfo(force: true); 
			} 
			else
			{ 
				base.InputWheel(wheel); 
			} 
			ModAltitude(wheel); 
			EClass.screen.tileSelector.RefreshMouseInfo(force: true); 
		} 
		else
		{ 
			base.InputWheel(wheel); 
		}
	}

ActEffect

public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
			case EffectId.Arrow:
				attackSource = AttackSource.MagicArrow;
				break;
			case EffectId.Hand:
				attackSource = AttackSource.MagicHand; 
				break; 
			case EffectId.Sword:
				attackSource = AttackSource.MagicSword;
				break;

ActNTR

public class ActNTR : Ability

cs
{
	public override bool CanPerform()
	{
		if (Act.TC.isChara && (Act.TC.Chara.conSleep != null || Act.CC.HasElement(1239) || Act.TC.Evalue(418) < 0)) 
		if (Act.TC == null || !Act.TC.isChara) 
		{
			return Act.TC.Evalue(418) <= 0; 
			return false; 
		} 
		Chara chara = Act.TC.Chara; 
		bool flag = chara.things.Find<TraitDreamBug>() != null; 
		if (!flag && Act.TC.Evalue(418) > 0) 
		{ 
			return false; 
		} 
		if (chara.conSleep != null || Act.CC.HasElement(1239) || chara.Evalue(418) < 0) 
		{ 
			return true; 
		} 
		if (flag) 
		{ 
			if (!chara.IsDisabled && !chara.isConfused && !chara.HasCondition<ConFreeze>() && !chara.HasCondition<ConDim>()) 
			{ 
				return chara.HasCondition<ConFear>(); 
			} 
			return true; 
		}
		return false;
	}

AttackProcess

public void Prepare(Chara _CC, Thing _weapon, Card _TC = null, Point _TP = null,

cs
			toHitBase = toHitBase * 75 / 100;
		}
		penetration = Mathf.Clamp(weaponSkill.Value / 10 + 5, 5, 20) + CC.Evalue(92);
		if (CC.HasElement(1244)) 
		if (CC.HasElement(1246)) 
		{
			penetration += 25;
		}

public void Prepare(Chara _CC, Thing _weapon, Card _TC = null, Point _TP = null,

cs
		toHitBase = EClass.curve((IsCane ? CC.WIL : CC.DEX) / 4 + weaponSkill.GetParent(CC).Value / 3 + weaponSkill.Value, 50, 25) + 50;
		toHitFix = CC.HIT + weapon.HIT;
		penetration = weapon.Penetration + CC.Evalue(92);
		if (CC.HasElement(1244)) 
		{ 
			penetration += 25; 
		} 
		if (IsCane)
		{
			toHitBase += 50;

public bool CalcHit()

cs
		crit = true;
		return true;
	}
	if (CC.HasElement(1244) && CC.HasCondition<ConSevenSense>()) 
	if (CC.HasCondition<ConSevenSense>() && (CC.HasElement(1244) || CC.HasElement(1246))) 
	{
		return true;
	}

AttackSource

public enum AttackSource

cs
	Shockwave,
	MagicSword,
	MoonSpear,
	MagicArrow 
	MagicArrow, 
	MagicHand 
}

BaseWidgetNotice

public void _RefreshAll()

cs

	public void Sort()
	{
		IList<BaseNotification> list = this.list.Copy(); 
		list.Sort((BaseNotification a, BaseNotification b) => b.GetSortVal() - a.GetSortVal());
		for (int i = 0; i < list.Count; i++)
		{

ButtonAbility

public static bool TryUse(Act act, Card tg = null, Point pos = null, Card cataly

cs
	{
		EClass.player.EndTurn();
	}
	else if (EClass.pc.UseAbility(act.source.alias, tg, pos, flag)) 
	else if (EClass.pc.UseAbility(act.source.alias, tg, pos, flag) && EClass.pc.HasNoGoal) 
	{
		EClass.player.EndTurn();
	}

Card

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
			{
				num3++;
			}
			if (attackSource == AttackSource.MagicHand && origin != null && origin.HasElement(1246)) 
			{ 
				num3++; 
			} 
			dmg = Element.GetResistDamage(dmg, Evalue(e.source.aliasRef), num3);
			dmg = dmg * 100 / (100 + Mathf.Clamp(Evalue(961) * 5, -50, 200));
			dmg = dmg * Mathf.Max(100 - Evalue(93), 10) / 100;

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
							Chara.AddCondition<ConFractured>((int)Mathf.Max(10f, 30f - Mathf.Sqrt(Evalue(436))));
							hp = Mathf.Min(half * (int)Mathf.Sqrt(Evalue(436) * 2) / 100, MaxHP / 3);
						});
						goto IL_0e69; 
						goto IL_0e94; 
					}
				}
				if (zoneInstanceBout != null && (bool)LayerDrama.Instance)

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
						if (EClass.player.invlunerable)
						{
							EvadeDeath(null);
							goto IL_0e69; 
							goto IL_0e94; 
						}
					}
					if (Evalue(1220) > 0 && Chara.stamina.value >= (IsPC ? (Chara.stamina.max / 2) : (Chara.stamina.max / 3 * 2)))

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
			}
		}
	}
	goto IL_0e69; 
	IL_0e69: 
	goto IL_0e94; 
	IL_0e94: 
	if (trait.CanBeAttacked)
	{
		renderer.PlayAnime(AnimeID.HitObj);

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
		Chara.AddCondition<ConBoost>(Power);
		Chara.Cure(CureType.Boss);
		Chara.HealHP(MaxHP / 2);
		EClass.player.forceTalk = true; 
	}
	if (origin != null && origin.isChara && attackSource != AttackSource.Finish)
	{

void EvadeDeath(Action action)

cs
	}
	void Heal()
	{
		target.Cure(CureType.Death); 
		target.Cure(CureType.HealComplete); 
		foreach (Chara member in EClass.pc.party.members)
		{
			member.Cure(CureType.Death); 
			member.Cure(CureType.HealComplete); 
		}
	}
	void ProcAbsorb()

Chara

public void SetFaith(Religion r)

cs

	public void HealAll()
	{
		Cure(CureType.Death); 
		Cure(CureType.HealComplete); 
		base.hp = MaxHP;
		mana.value = mana.max;
		stamina.value = stamina.max;

public override void Tick()

cs
		{
			pos.Things.ForeachReverse(delegate(Thing t)
			{
				if (t.trait.IgnoreOnSteppedWhenMoving) 
				{ 
					AI_Goto aI_Goto = ai.Current as AI_Goto; 
					if ((aI_Goto == null && !(ai is GoalManualMove)) || (aI_Goto != null && !aI_Goto.dest.Equals(pos))) 
					{ 
						return; 
					} 
				} 
				t.trait.OnStepped(this);
			});
			if (isDead)

public void Cure(CureType type, int p = 100, BlessedState state = BlessedState.N

cs
		}
		CureCondition<ConWait>();
		CureCondition<ConDisease>((EClass.rnd(20) + 10) * p / 100);
		bool flag2 = HasCondition<ConAnorexia>(); 
		base.c_vomit -= (flag2 ? 3 : 2) * p / 100; 
		bool flag3 = HasCondition<ConAnorexia>(); 
		base.c_vomit -= (flag3 ? 3 : 2) * p / 100; 
		if (base.c_vomit < 0)
		{
			base.c_vomit = 0;
			if (flag2) 
			if (flag3) 
			{
				RemoveCondition<ConAnorexia>();
			}

public void Cure(CureType type, int p = 100, BlessedState state = BlessedState.N

cs
	case CureType.Jure:
	case CureType.Boss:
	{
		bool flag2 = type == CureType.Death; 
		CureTempElements(p * 100, body: true, mind: true);
		for (int num = conditions.Count - 1; num >= 0; num--)
		{
			Condition condition = conditions[num];
			if (!(condition is ConAnorexia) || type == CureType.Death) 
			if (condition is ConAnorexia && !flag2) 
			{
				ConditionType type2 = condition.Type; 
				if ((uint)(type2 - 2) <= 2u || type2 == ConditionType.Stance) 
				{ 
					condition.Kill(); 
				} 
				else if (type == CureType.Death && condition.isPerfume) 
				continue; 
			} 
			switch (condition.Type) 
			{ 
			case ConditionType.Bad: 
			case ConditionType.Debuff: 
			case ConditionType.Disease: 
				condition.Kill(); 
				continue; 
			case ConditionType.Stance: 
				if (flag2) 
				{
					condition.Kill();
					continue; 
				}
				break; 
			} 
			if (flag2 && condition.isPerfume) 
			{ 
				condition.Kill(); 
			}
		}
		CureCondition<ConWait>();
		CureCondition<ConSleep>();
		if (type == CureType.Death || type == CureType.Boss) 
		if (flag2 || type == CureType.Boss) 
		{
			SAN.Mod(-20);
			RemoveCondition<ConBrightnessOfLife>();

public void RefreshFaithElement()

cs
		return;
	}
	faithElements = new ElementContainer();
	SourceElement.Row row2 = EClass.sources.elements.alias.TryGetValue("featGod_" + row.id + "1"); 
	if (row2 != null) 
	{ 
		faithElements.SetBase(row2.id, 1); 
	} 
	if (!HasCondition<ConExcommunication>())
	{
		SourceElement.Row row2 = EClass.sources.elements.alias.TryGetValue("featGod_" + row.id + "1"); 
		if (row2 != null) 
		{ 
			faithElements.SetBase(row2.id, 1); 
		} 
		int[] array = row.elements;
		int num = GetPietyValue() * (120 + Evalue(1407) * 15) / 100;
		for (int i = 0; i < array.Length; i += 2)

ConBoost

public class ConBoost : BaseBuff

cs
{
	public override void OnStart()
	{
		owner._CreateRenderer(); 
		if (!owner.IsPCC) 
		{ 
			owner._CreateRenderer(); 
		} 
	}

	public override void OnRemoved()
	{
		owner._CreateRenderer(); 
		if (!owner.IsPCC) 
		{ 
			owner._CreateRenderer(); 
		} 
	}

	public override RendererReplacer GetRendererReplacer()

ElementContainerCard

public void CheckSkillActions()

cs
		TryLearn(6700, 1649, 0);
		TryLearn(6720, 1657, 0);
		TryLearn(6450, 132, 5);
		TryLearn(6603, 6020, 50); 
	}
	void TryLearn(int eleAction, int reqEle, int lqlv)
	{

FACTION

public class FACTION

cs

	public const int bfVolcano = 3704;

	public const int bfTranquil = 3703; 
	public const int actBuildInspect = 4006;

	public const int actBuildRecipe = 4005;

public class FACTION

cs

	public const int actBuildMine = 4001;

	public const int bfTranquil = 3703; 
	public const int bfStart = 3900;

	public const int bfChitin = 3805;

public class FACTION

cs

	public const int bfLandmark3 = 3782;

	public const int bfHunt = 3705; 
	public const int bfLandmark1 = 3780;

	public const int bfBreed = 3710;

public class FACTION

cs

	public const int bfFish = 3706;

	public const int bfHunt = 3705; 
	public const int bfMushroom = 3801;

	public static readonly int[] IDS = new int[53]
	{
		3605, 2207, 3606, 3700, 3604, 3603, 3602, 3601, 3600, 3500,
		2206, 2120, 2204, 2203, 2202, 2201, 2200, 2119, 2118, 2117,
		2116, 3701, 2115, 2003, 2205, 3702, 3781, 3704, 4006, 4005, 
		4004, 4003, 4002, 4001, 3703, 3900, 3805, 3804, 3803, 3802, 
		4000, 3800, 3784, 3783, 3782, 3780, 3710, 3709, 3708, 3707, 
		3706, 3705, 3801
		2116, 3701, 2115, 2003, 2205, 3702, 3781, 3704, 3703, 4006, 
		4005, 4004, 4003, 4002, 4001, 3900, 3805, 3804, 3803, 3802, 
		4000, 3800, 3784, 3783, 3782, 3705, 3780, 3710, 3709, 3708, 
		3707, 3706, 3801
	};
}
public class Faction : EClass

FEAT

public class FEAT

cs

	public const int featPER = 1623;

	public const int featSPD = 1629; 
	public const int featLuck = 1628; 

	public const int featMAG = 1625;

public class FEAT

cs

	public const int featCHA = 1627;

	public const int featLuck = 1628; 
	public const int featStamina = 1612; 

	public const int featLER = 1624;

	public const int featStamina = 1612; 
	public const int featFairysan = 1413; 
	public const int featMana = 1611; 

	public const int featLife = 1610; 
	public const int featLuckyCat = 1412; 

	public const int featHealer = 1422;

public class FEAT

cs

	public const int featWhiteVixen = 1414;

	public const int featHardy = 1630; 
	public const int featFairysan = 1413; 

	public const int featMana = 1611; 
	public const int featSPD = 1629; 

	public const int featDefense = 1631; 
	public const int featLife = 1610; 

	public const int featSummoner = 1647; 
	public const int featHardy = 1630; 

	public const int featSpotting = 1633; 
	public const int featLonelySoul = 1646; 

	public const int featLuckyCat = 1412; 
	public const int featEvade = 1632; 
	public const int featEarthStrength = 1411; 

	public const int featFisher = 1659;

public class FEAT

cs

	public const int featGourmet = 1650;

	public const int featDefender = 1649; 
	public const int featDefense = 1631; 

	public const int featRapidMagic = 1648; 
	public const int featDefender = 1649; 

	public const int featLonelySoul = 1646; 
	public const int featSummoner = 1647; 

	public const int featParty = 1645;

public class FEAT

cs

	public const int featNegotiate = 1634;

	public const int featEvade = 1632; 
	public const int featSpotting = 1633; 

	public const int featEarthStrength = 1411; 
	public const int featRapidMagic = 1648; 
	public const int featReboot = 1410; 

	public const int featLooter = 1660;

	public const int featBoost = 1409; 
	public const int featPaladin2 = 1408; 

	public const int featServant = 1227;

public class FEAT

cs

	public const int featSevenSense = 1245;

	public const int featPegasus = 1246; 
	public const int featGod_element1 = 1300;

	public const int featGod_earth1 = 1305;

public class FEAT

cs

	public const int featGod_machine1 = 1315;

	public const int featGod_healing1 = 1320; 
	public const int featUnderground = 1226;

	public const int featLoyal = 1225;

public class FEAT

cs

	public const int featSlowFood = 1200;

	public const int featReboot = 1410; 
	public const int featBoost = 1409; 

	public const int featManaBond = 1201;

public class FEAT

cs

	public const int featFluffyTail = 1209;

	public const int featGod_harvest1 = 1325; 
	public const int featGod_healing1 = 1320; 

	public const int featUndead = 1210;

public class FEAT

cs

	public const int featSnail = 1211;

	public const int featGod_luck1 = 1330; 
	public const int featGod_harvest1 = 1325; 

	public const int featElder = 1238;

	public const int featGod_oblivion1 = 1340; 
	public const int featGod_harmony1 = 1335;

	public const int featGod_luck1 = 1330; 
	public const int featGod_trickery1 = 1345; 
	public const int featGod_moonshadow1 = 1350;

	public const int featGod_strife1 = 1355;

public class FEAT

cs

	public const int featPianist = 1405;

	public const int featTourist = 1406; 
	public const int featGod_trickery1 = 1345; 
	public const int featPaladin2 = 1408; 
	public const int featGod_oblivion1 = 1340; 

	public const int featPaladin = 1407;

	public static readonly int[] IDS = new int[122] 
	public const int featTourist = 1406; 
	public static readonly int[] IDS = new int[123] 
	{
		1620, 1621, 1622, 1623, 1629, 1625, 1626, 1627, 1628, 1624, 
		1612, 1413, 1610, 1422, 1421, 1420, 1419, 1418, 1417, 1416, 
		1415, 1414, 1630, 1611, 1631, 1647, 1633, 1412, 1659, 1658, 
		1657, 1656, 1655, 1654, 1653, 1652, 1651, 1650, 1649, 1648, 
		1646, 1645, 1644, 1643, 1642, 1641, 1640, 1636, 1635, 1634, 
		1632, 1411, 1660, 1409, 1227, 1228, 1229, 1230, 1231, 1232, 
		1233, 1234, 1235, 1236, 1237, 1239, 1240, 1241, 1242, 1243, 
		1244, 1245, 1300, 1305, 1310, 1315, 1320, 1226, 1225, 1224, 
		1223, 1200, 1410, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 
		1208, 1209, 1325, 1210, 1212, 1213, 1214, 1215, 1216, 1217, 
		1218, 1219, 1220, 1221, 1222, 1211, 1330, 1238, 1340, 1335, 
		1350, 1355, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1345, 
		1408, 1407
		1620, 1621, 1622, 1623, 1628, 1625, 1626, 1627, 1612, 1624, 
		1611, 1412, 1422, 1421, 1420, 1419, 1418, 1417, 1416, 1415, 
		1414, 1413, 1629, 1610, 1630, 1646, 1632, 1411, 1659, 1658, 
		1657, 1656, 1655, 1654, 1653, 1652, 1651, 1650, 1631, 1649, 
		1647, 1645, 1644, 1643, 1642, 1641, 1640, 1636, 1635, 1634, 
		1633, 1648, 1410, 1660, 1408, 1227, 1228, 1229, 1230, 1231, 
		1232, 1233, 1234, 1235, 1236, 1237, 1239, 1240, 1241, 1242, 
		1243, 1244, 1245, 1246, 1300, 1305, 1310, 1315, 1226, 1225, 
		1224, 1223, 1200, 1409, 1201, 1202, 1203, 1204, 1205, 1206, 
		1207, 1208, 1209, 1320, 1210, 1212, 1213, 1214, 1215, 1216, 
		1217, 1218, 1219, 1220, 1221, 1222, 1211, 1325, 1238, 1335, 
		1330, 1345, 1350, 1355, 1400, 1401, 1402, 1403, 1404, 1405, 
		1340, 1407, 1406
	};
}
public class Feat : Element

FoodEffect

public static void Proc(Chara c, Thing food, bool consume = true)

cs
				break;
			case "poison":
				ActEffect.Poison(c, EClass.pc, value.Value * 10);
				if (c.isDead) 
				if (!c.isDead) 
				{
					return; 
					break; 
				}
				break; 
				goto IL_0f04; 
			case "love":
				ActEffect.LoveMiracle(c, EClass.pc, value.Value * 10);
				break;

public static void Proc(Chara c, Thing food, bool consume = true)

cs
	{
		food.trait.OnDrink(c);
	}
	goto IL_0f04; 
	IL_0f04: 
	if (consume)
	{
		num7 += 5f;

NotificationCondition

public override bool ShouldRemove()

cs
public override int GetSortVal()
{
	int num = 5;
	WidgetStats instance = WidgetStats.Instance; 
	bool sort = instance.extra.sort; 
	switch (condition.Type)
	{
	case ConditionType.Stance:

public override int GetSortVal()

cs
			num = 10;
			break;
		case ConditionType.Debuff:
			num = 11; 
			num = (sort ? 11 : 10); 
			break;
		}
		if (condition is ConBuffStats)
		{
			num = 1;
		}
		return 8000000 + num * 100000 + condition.GetSortVal(); 
		if (condition is ConAwakening) 
		{ 
			num = 2; 
		} 
		return 8000000 + num * 100000 + (sort ? condition.GetSortVal() : instance.list.IndexOf(this)); 
	}

	public override void OnClick()

StatsMana

public override void Mod(int a)

cs
			a /= 10;
		}
		_ = BaseStats.CC.ShouldShowMsg;
		if (value >= 0) 
		{ 
			return; 
		} 
		int num = -value * 400 / (100 + BaseStats.CC.EvalueMax(303, -5) * 10); 
		if (BaseStats.CC.HasElement(1201)) 
		{ 
			num /= 3; 
		} 
		if (!BaseStats.CC.IsPC) 
		Chara cC = BaseStats.CC; 
		if (value < 0) 
		{
			num /= 5; 
			if (num < 10) 
			int num = -value * 400 / (100 + BaseStats.CC.EvalueMax(303, -5) * 10); 
			if (BaseStats.CC.HasElement(1201)) 
			{
				return; 
				num /= 3; 
			}
		} 
		BaseStats.CC.Say("mana_overflow", BaseStats.CC); 
		BaseStats.CC.DamageHP(num, 921, 100, AttackSource.ManaBackfire); 
		Chara cC = BaseStats.CC; 
		if (cC.IsAliveInCurrentZone) 
		{ 
			cC.elements.ModExp(303, Mathf.Clamp(-a * 10, 10, 200)); 
			if (cC.HasElement(1245) && !cC.HasCooldown(1245)) 
			if (!BaseStats.CC.IsPC) 
			{
				cC.AddCooldown(1245); 
				cC.AddCondition<ConSevenSense>(cC.Power); 
				cC.Cure(CureType.Boss); 
				cC.HealHP(cC.MaxHP / 2); 
				num /= 5; 
				if (num < 10) 
				{ 
					return; 
				} 
			}
			BaseStats.CC.Say("mana_overflow", BaseStats.CC); 
			BaseStats.CC.DamageHP(num, 921, 100, AttackSource.ManaBackfire); 
			if (cC.IsAliveInCurrentZone) 
			{ 
				cC.elements.ModExp(303, Mathf.Clamp(-a * 10, 10, 200)); 
			} 
		} 
		if (value <= 0 && cC.IsAliveInCurrentZone && cC.HasElement(1245) && !cC.HasCooldown(1245)) 
		{ 
			cC.AddCooldown(1245); 
			cC.AddCondition<ConSevenSense>(cC.Power); 
			cC.Cure(CureType.Boss); 
			cC.HealHP(cC.MaxHP / 2); 
			EClass.player.forceTalk = true; 
		}
	}
}

Trait

public virtual bool CanBeHeldAsFurniture

cs

	public virtual string LangUse => "actUse";

	public virtual bool IgnoreOnSteppedWhenMoving => false; 
	public virtual bool IsOn => owner.isOn;

	public virtual bool IsAnimeOn

TraitBasketGame

public class TraitBasketGame : TraitFloorSwitch

cs
public class TraitBasketGame : TraitFloorSwitch
{
	public override bool IgnoreOnSteppedWhenMoving => true; 
	public override void OnActivateTrap(Chara c)
	{
		if (c.IsPC)

TraitHitchingPost

public class TraitHitchingPost : TraitFloorSwitch

cs
public class TraitHitchingPost : TraitFloorSwitch
{
	public override bool IgnoreOnSteppedWhenMoving => true; 
	public override bool IsHomeItem => true;

	public override void OnActivateTrap(Chara c)

WidgetStats

using System.Collections.Generic;

cs
using System.Collections.Generic;
using Newtonsoft.Json; 

public class WidgetStats : BaseWidgetNotice
{
	public class Extra
	{ 
		[JsonProperty] 
		public bool sort; 
	} 
	public static WidgetStats Instance;

	public List<NotificationCondition> conditions = new List<NotificationCondition>();

public class WidgetStats : BaseWidgetNotice

cs

	public ItemNotice moldCooldown;

	public Extra extra => base.config.extra as Extra; 
	public override object CreateExtra() 
	{ 
		return new Extra(); 
	} 
	public static void RefreshAll()
	{
		if ((bool)Instance)

public override void OnRefresh()

cs
			}
		}
	}
	public override void OnSetContextMenu(UIContextMenu m) 
	{ 
		m.AddChild("setting").AddToggle("sort_always", extra.sort, delegate(bool a) 
		{ 
			extra.sort = a; 
		}); 
		SetBaseContextMenu(m); 
	} 
}