Skip to content

EA 23.277 Nightly Patch 1

February 25, 2026

22 files modified.

Important Changes

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

ACT (1)

cs
public virtual bool CanPerform() 

ActSlime (1)

cs
public override bool Perform() 
public override bool ValidatePerform(Chara _cc, Card _tc, Point _tp) 

ACT

public virtual bool Perform()

cs
		return true;
	}

	public virtual bool CanPerform() 
	{ 
		return true; 
	} 
	public bool Perform(Chara _cc, Card _tc = null, Point _tp = null)
	{
		if (!CanPerform(_cc, _tc, _tp))

public bool Perform(Chara _cc, Card _tc = null, Point _tp = null)

cs
		return Perform();
	}

	public virtual bool ValidatePerform(Chara _cc, Card _tc, Point _tp) 
	{ 
		return true; 
	} 
	public virtual bool CanPerform() 
	{ 
		return true; 
	} 
	public bool CanPerform(Chara _cc, Card _tc = null, Point _tp = null)
	{
		CC = _cc;

AI_Eat

public override IEnumerable<Status> Run()

cs
	{
		yield return DoGotoSpot<TraitSpotDining>(base.KeepRunning);
	}
	int max = ((target.SelfWeight < 100) ? 1 : (2 + (int)Mathf.Sqrt(target.SelfWeight * 2 / 3))); 
	int num = ((target.SelfWeight < 100) ? 1 : (2 + (int)Mathf.Sqrt(target.SelfWeight * 2 / 3))); 
	int turn = 0;
	bool isFeastFood = EClass._zone.HasField(10001) && target.GetBool(128);
	num = num * 100 / (100 + owner.Evalue(1663) * 100); 
	if (num < 1) 
	{ 
		num = 1; 
	} 
	Progress_Custom seq = new Progress_Custom
	{
		cancelWhenMoved = false,

public override IEnumerable<Status> Run()

cs
					FoodEffect.Proc(owner, target.Thing);
				}
			}
		}.SetDuration(max, 5); 
		}.SetDuration(num, 5); 
		yield return Do(seq);
	}
}

AI_Idle

public override IEnumerable<Status> Run()

cs
				if (randomPoint2 != null)
				{
					Chara chara3 = EClass._zone.SpawnMob("cocoon", randomPoint2);
					owner.Say("layegg", owner); 
					owner.Say("egglay", owner); 
					chara3.SetHostility(owner.OriginalHostility);
				}
			}

ActSlime

public override bool CanPerform()

cs
		return true;
	}

	public override bool Perform() 
	public override bool ValidatePerform(Chara _cc, Card _tc, Point _tp) 
	{
		if (Act.CC.hunger.GetPhase() < 3 && !EClass.debug.enable) 
		if (Act.CC.hunger.GetPhase() < 3 && !EClass.debug.godFood) 
		{
			Msg.Say("not_hungry");
			return false;
		}
		return true; 
	} 
	public override bool Perform() 
	{ 
		Act.CC.SetAI(new AI_Fuck
		{
			target = Act.TC.Chara,

ActThrow

public static EffectIRenderer Throw(Card c, Point p, Card target, Thing t, Throw

cs
	EffectIRenderer result = null;
	if (c.isSynced || p.IsSync)
	{
		result = Effect.Get<EffectIRenderer>((t.trait is TraitBall || t.HasTag(CTAG.throwBall)) ? "throw_ball" : "throw").Play((c.isChara && c.Chara.host != null) ? c.Chara.host : c, t, c.pos, p, 0.2f); 
		result = Effect.Get<EffectIRenderer>((t.trait is TraitBall || t.HasTag(CTAG.throwBall) || method == ThrowMethod.Reward) ? "throw_ball" : "throw").Play((c.isChara && c.Chara.host != null) ? c.Chara.host : c, t, c.pos, p, 0.2f); 
		t.renderer.SetFirst(first: false, c.renderer.position);
	}
	if (!t.HasElement(410) || method == ThrowMethod.Punish)

AnimeID

public enum AnimeID

cs
	Truck,
	PlayMusic,
	QuakeMini,
	Gravity 
	Gravity, 
	Kiss 
}

Biography

public string TextBio(Chara c)

cs

	public string TextBio2(Chara c)
	{
		return Lang.Parse("heightWeight", height.ToString() ?? "", weight.ToString() ?? "") + " " + ((c.material.alias == "meat") ? "" : c.material.GetName().ToTitleCase(wholeText: true)); 
		return Lang.Parse("heightWeight", height.ToFormat(), weight.ToFormat()) + " " + ((c.material.alias == "meat") ? "" : c.material.GetName().ToTitleCase(wholeText: true)); 
	}

	public string TextBioSlave(Chara c)

public string TextBirthDate(Chara c, bool _age = false)

cs

	public string TextAppearance()
	{
		return Lang.Parse("heightWeight", height.ToString() ?? "", weight.ToString() ?? ""); 
		return Lang.Parse("heightWeight", height.ToFormat(), weight.ToFormat()); 
	}
}

CardRenderer

public void PlayAnime(AnimeID id, Point dest)

cs
	if (transAnimeData == null)
	{
		anime = null;
		Debug.Log("Anime not found:" + id); 
		return;
	}
	anime = new TransAnime

public void PlayAnime(AnimeID id, Point dest)

cs
		data = transAnimeData,
		renderer = this
	}.Init();
	if (id == AnimeID.Attack || (uint)(id - 18) <= 1u) 
	if (id == AnimeID.Attack || (uint)(id - 18) <= 1u || id == AnimeID.Kiss) 
	{
		anime.dest = dest;
	}

Chara

public void HoldCard(Card t, int num = -1)

cs
	if (IsPC && t.isNPCProperty)
	{
		t.isNPCProperty = false;
		EClass.player.ModKarma(-1); 
		pos.TryWitnessCrime(this); 
		if (!t.GetBool(128)) 
		{ 
			EClass.player.ModKarma(-1); 
			pos.TryWitnessCrime(this); 
		} 
	}
	PickHeld();
	if (t.isChara)

public bool UseAbility(Act a, Card tc = null, Point pos = null, bool pt = false)

cs
	{
		return false;
	}
	if (!a.ValidatePerform(this, tc, pos)) 
	{ 
		return false; 
	} 
	if (a.source.proc.TryGet(0) == "Heal" && HasElement(1422) && !IsPC)
	{
		List<int> list = new List<int> { 8400, 8401, 8402, 8403, 8404, 8405 };

public bool UseAbility(Act a, Card tc = null, Point pos = null, bool pt = false)

cs
			LayerAbility.SetDirty(a);
		}
	}
	else if (a.source.langAct.Length != 0 && tc != null) 
	else
	{
		string text = a.source.langAct[0]; 
		string text2 = ((a.source.langAct.Length >= 2) ? a.source.langAct[1] : ""); 
		if (text == "spell_hand") 
		{ 
			string[] list2 = Lang.GetList("attack" + race.meleeStyle.IsEmpty("Touch")); 
			string @ref = text2.lang(list2[4]); 
			Say(tc.IsPCParty ? "cast_hand_ally" : "cast_hand", this, tc, @ref, tc.IsPCParty ? list2[1] : list2[2]); 
		} 
		else
		if (IsPC && HasElement(1274) && a.vPotential < 0 && !flag2) 
		{
			Say(text, this, tc, text2.IsEmpty() ? "" : text2.lang()); 
			Msg.Say("noSpellStock"); 
			EInput.Consume(); 
			return false; 
		}
		if (a.source.id == 6630) 
		if (a.source.langAct.Length != 0 && tc != null) 
		{
			Talk("insult_" + (base.IsMale ? "m" : "f")); 
			string text = a.source.langAct[0]; 
			string text2 = ((a.source.langAct.Length >= 2) ? a.source.langAct[1] : ""); 
			if (text == "spell_hand") 
			{ 
				string[] list2 = Lang.GetList("attack" + race.meleeStyle.IsEmpty("Touch")); 
				string @ref = text2.lang(list2[4]); 
				Say(tc.IsPCParty ? "cast_hand_ally" : "cast_hand", this, tc, @ref, tc.IsPCParty ? list2[1] : list2[2]); 
			} 
			else
			{ 
				Say(text, this, tc, text2.IsEmpty() ? "" : text2.lang()); 
			} 
			if (a.source.id == 6630) 
			{ 
				Talk("insult_" + (base.IsMale ? "m" : "f")); 
			} 
		}
	}
	switch (cost.type)

public bool UseAbility(Act a, Card tc = null, Point pos = null, bool pt = false)

cs
	}
	if (flag3 && !isDead)
	{
		if (IsPC && flag2 && a.vBase == 0 && a.PotentialAsStock) 
		if (IsPC && flag2 && elements.Base(a.id) == 0 && a.PotentialAsStock) 
		{
			elements.ModBase(a.id, 1);
		}

public void Kiss(Chara c)

cs
	EClass.player.forceTalk = true;
	Talk("kiss", null, null, IsPC);
	PlaySound("kiss");
	renderer.PlayAnime(AnimeID.Kiss, c); 
	int num = 2 + EClass.rnd(4) + ((!c.IsPC && c.affinity.CurrentStage < Affinity.Stage.Fond) ? (-EClass.rnd(10)) : 0);
	c.ShowEmo((num > 0) ? Emo.love : Emo.sad);
	if (num > 0 && EClass.rnd(IsPC ? 100 : 5000) == 0)

public void Kiss(Chara c)

cs
				c.Say("affinityNone", c, EClass.pc);
			}
		}
		Effect.Get("love")._Play(pos, isSynced ? renderer.position : pos.Position(), 0f, c.pos); 
	}

	public void Slap(Chara c, bool slapToDeath = false)

public void ShowDialog()

cs
		}
		if (EClass._zone is Zone_Music || EClass._zone is Zone_Wedding)
		{
			ShowDialog("_chara", "party"); 
			ShowDialog("_chara", (!(EClass._zone is Zone_Wedding)) ? "party" : (IsPCParty ? "wedding_love" : "wedding")); 
			return;
		}
		if (EClass.game.quests.OnShowDialog(this))

CharaAbility

public void Add(int id, int chance, bool pt)

cs
			owner._listAbility = new List<int>();
		}
		owner._listAbility.Add(id * ((!pt) ? 1 : (-1)));
		if (owner.IsPC && owner.HasElement(1274)) 
		{ 
			Element element = owner.elements.GetElement(id); 
			if (element == null) 
			{ 
				owner.elements.ModBase(id, 1); 
			} 
			else if (!(element is Spell)) 
			{ 
				element.vPotential = 0; 
			} 
		} 
		Refresh();
		if (owner.IsPC) 
		{ 
			LayerAbility.Redraw(); 
		} 
	}

	public void AddRandom()

public void AddRandom()

cs
	public void Remove(int id)
	{
		owner._listAbility.Remove(id);
		if (owner.IsPC && owner.HasElement(1274) && owner.HasElement(id) && owner._listAbility.IndexOf(id) == -1) 
		{ 
			Element element = EClass.pc.elements.GetElement(id); 
			if (!(element is Spell)) 
			{ 
				element.vPotential = -1; 
			} 
		} 
		if (owner._listAbility.Count == 0)
		{
			owner._listAbility = null;
		}
		Refresh();
		if (owner.IsPC) 
		{ 
			LayerAbility.Redraw(); 
		} 
	}

	public bool Has(int id)

CoreDebug

public void QuickStart()

cs
	EClass.pc.elements.ModBase(61, lv / 2);
	EClass.pc.elements.ModBase(79, lv / 5);
	EClass.player.totalFeat = lv;
	EClass.pc.feat = 1000; 
	EClass.pc.SetLv(lv - 1);
	EClass.player.fame = EClass.pc.LV * 100;
	int idx = 0;

public void UpdateInput()

cs
	}
	if (Input.GetKeyDown(KeyCode.F3))
	{
		Chara c2 = EClass._map.charas.RandomItem(); 
		Thing thing = ThingGen.Create("musicbox_memory"); 
		thing.MakeRefFrom(c2, EClass.pc, simple: true); 
		EClass.pc.Pick(thing); 
		for (int i = 0; i < 10; i++) 
		{ 
			Thing thing = ThingGen.Create("egg_fertilized"); 
			thing.TryMakeRandomItem(40); 
			thing.SetEncLv(200); 
			EClass.pc.Pick(thing); 
		} 
		foreach (Chara deadChara in EClass._map.deadCharas) 
		{ 
			Debug.Log(deadChara); 
		} 
		EClass.core.steam.CheckUpdate(); 
		EClass.player.flags.loytelMartLv++; 
		Msg.Say("loytelmart:" + EClass.player.flags.loytelMartLv); 
		Guild.Fighter.relation.rank = 20; 
		Guild.Mage.relation.rank = 20; 
		Guild.Thief.relation.rank = 20; 
		Guild.Merchant.relation.rank = 20; 
		if (EClass.Branch != null) 
		{ 
			EClass.Branch.ModExp(EClass.Branch.GetNextExp()); 
		} 
		foreach (Chara item in EClass._map.charas.ToList()) 
		{ 
			item.AddExp(item.ExpToNext); 
			item.Vomit(); 
		} 
		EClass.pc.PlayEffect("boost"); 
		EClass.pc.PlaySound("boost"); 
		EClass.pc.elements.SetBase(306, 100); 
		EClass.pc.elements.SetBase(85, 100); 
		EClass.pc.feat += 10; 
		EClass.player.totalFeat += 10; 
		return;
	}
	if (Input.GetKeyDown(KeyCode.F4))

public void UpdateInput()

cs
		if (Input.GetKey(KeyCode.F9))
		{
			EClass.scene.paused = false;
			for (int i = 0; i < advanceMin; i++) 
			for (int j = 0; j < advanceMin; j++) 
			{
				EClass.game.updater.FixedUpdate();
			}

public void UpdateInput()

cs
	{
		if (Input.GetMouseButtonDown(0))
		{
			foreach (Card item in list) 
			foreach (Card item2 in list) 
			{
				Debug.Log(item.Name + "/" + item.dir + "/" + item.flipX + "/" + item.angle); 
				Debug.Log(item2.Name + "/" + item2.dir + "/" + item2.flipX + "/" + item2.angle); 
			}
		}
		if (Input.GetMouseButtonDown(1))

public void UpdateInput()

cs
		}
		if (key)
		{
			foreach (Card item2 in EClass._map.Roaming.all) 
			foreach (Card item3 in EClass._map.Roaming.all) 
			{
				EClass._zone.RemoveCard(item2); 
				EClass._zone.RemoveCard(item3); 
			}
		}
		else if (hitPoint.detail != null)

public void UpdateInput()

cs
		{
			break;
		}
		foreach (Card item3 in hitPoint.ListCards()) 
		foreach (Card item4 in hitPoint.ListCards()) 
		{
			item3.renderer.PlayAnime(num5.ToEnum<AnimeID>()); 
			item4.renderer.PlayAnime(num5.ToEnum<AnimeID>()); 
		}
		Debug.Log(num5.ToEnum<AnimeID>());
		break;

DOMAIN

public class DOMAIN

cs

	public const int domWind = 807;

	public const int domOblivion = 813; 
	public const int domEyth = 814; 

	public const int domMachine = 809;

public class DOMAIN

cs

	public const int domEarth = 812;

	public const int domEyth = 814; 
	public const int domOblivion = 813; 

	public const int domHarmony = 815;

public class DOMAIN

cs

	public static readonly int[] IDS = new int[16]
	{
		800, 806, 801, 802, 803, 804, 805, 807, 813, 809, 
		810, 811, 812, 814, 815, 808
		800, 806, 801, 802, 803, 804, 805, 807, 814, 809, 
		810, 811, 812, 813, 815, 808
	};
}
public class Domain : EClass

ENC

public class ENC

cs

	public const int absorbSP = 662;

	public const int bane_machine = 465; 
	public const int bane_god = 466; 
	public const int bane_fish = 467; 
	public const int bane_all = 468; 
	public const int strongStomach = 480; 
	public const int revealFaith = 481; 
	public const int force_weapon = 482;

	public const int optimizeMana = 483;

public class ENC

cs

	public const int creativeChef = 487;

	public const int revealFaith = 481; 
	public const int deathagony = 488; 
	public const int music_drunk = 489;

	public const int farsee = 490;

	public const int negateGravity = 491;

	public const int mod_ammo = 600; 
	public const int bane_man = 464; 

	public const int mod_reload = 601; 
	public const int bane_animal = 463; 

	public const int mod_rapid = 602; 
	public const int bane_fairy = 462; 

	public const int knightly = 438; 
	public const int bane_undead = 461; 

	public const int strongStomach = 480; 
	public const int eheluck = 663; 
	public const int defense_range = 435; 
	public const int guts = 436; 
	public const int parry = 437; 
	public const int knightly = 438; 

	public const int negateParry = 439;

	public const int bane_all = 468; 
	public const int sustain_STR = 440; 

	public const int sustain_DEX = 442; 
	public const int mod_ammo = 600; 
	public const int sustain_END = 441; 

	public const int sustain_PER = 443;

public class ENC

cs

	public const int bane_dragon = 460;

	public const int bane_undead = 461; 
	public const int bane_fairy = 462; 
	public const int bane_animal = 463; 
	public const int bane_man = 464; 
	public const int bane_machine = 465; 
	public const int sustain_DEX = 442; 

	public const int bane_god = 466; 
	public const int mod_reload = 601; 

	public const int bane_fish = 467; 
	public const int deathagony = 488; 

	public const int mod_ammo_knockback = 603;

	public const int sustain_END = 441; 
	public const int mod_ammo_recover = 604; 
	public const int mod_drill = 606; 
	public const int absorbMP = 661;

	public const int absorbHP = 660;

public class ENC

cs

	public const int sanctified = 432;

	public const int eheluck = 663; 
	public const int onlyPet = 655; 
	public const int mod_rapid = 602; 

	public const int noDamage = 654;

	public const int mod_precision = 605; 
	public const int living = 653; 

	public const int eco = 652;

public class ENC

cs

	public const int r_mana = 641;

	public const int living = 653; 
	public const int guts = 436; 
	public const int mod_scatter = 607; 
	public const int r_life = 640; 

	public const int mod_splash = 608; 
	public const int mod_frustration = 624; 

	public const int mod_talisman = 609; 
	public const int onlyPet = 655; 

	public const int mod_chaser = 620; 
	public const int mod_scatter = 607; 

	public const int parry = 437; 
	public const int mod_cleave = 622; 

	public const int defense_range = 435; 
	public const int mod_feint = 623; 

	public const int sustain_STR = 440; 
	public const int mod_ammo_recover = 604; 

	public const int mod_flurry = 621;

	public const int mod_cleave = 622; 
	public const int mod_precision = 605; 

	public const int mod_feint = 623; 
	public const int mod_chaser = 620; 

	public const int mod_frustration = 624; 
	public const int mod_talisman = 609; 

	public const int r_life = 640; 
	public const int mod_splash = 608; 
	public const int mod_drill = 606; 

	public static readonly int[] IDS = new int[107]
	{

public class ENC

cs
		425, 426, 427, 428, 429, 667, 414, 666, 424, 412,
		850, 410, 430, 380, 382, 383, 400, 865, 852, 851,
		411, 665, 402, 403, 404, 405, 406, 407, 408, 409,
		401, 664, 381, 662, 482, 483, 484, 485, 486, 487, 
		481, 488, 489, 490, 491, 600, 601, 602, 438, 480, 
		439, 468, 442, 443, 444, 445, 446, 447, 450, 460, 
		461, 462, 463, 464, 465, 466, 467, 603, 441, 604, 
		606, 661, 660, 656, 432, 663, 655, 654, 605, 652, 
		651, 650, 641, 653, 436, 607, 608, 609, 620, 437, 
		435, 440, 621, 622, 623, 624, 640
		401, 664, 381, 662, 465, 466, 467, 468, 480, 481, 
		482, 483, 484, 485, 486, 487, 489, 490, 491, 464, 
		463, 462, 461, 663, 435, 436, 437, 438, 439, 440, 
		600, 441, 443, 444, 445, 446, 447, 450, 460, 442, 
		601, 488, 603, 661, 660, 656, 432, 602, 654, 653, 
		652, 651, 650, 641, 640, 624, 655, 607, 622, 623, 
		604, 621, 605, 620, 609, 608, 606
	};
}

FACTION

``

cs

public class FACTION
{
	public const int bfIce = 3804; 
	public const int bfGum = 3803; 
	public const int bfSilica = 3802;

	public const int bfMushroom = 3801; 
	public const int bfLandmark4 = 3783; 

	public const int bfIce = 3804; 
	public const int bfCoal = 3800; 

	public const int bfLandmark5 = 3784;

	public const int bfLandmark4 = 3783; 
	public const int bfLandmark3 = 3782;

	public const int bfLandmark2 = 3781;

	public const int bfGum = 3803; 
	public const int bfCoal = 3800; 
	public const int bfMushroom = 3801; 

	public const int fAttraction = 2206; 
	public const int fRation = 2207; 

	public const int bfLandmark1 = 3780; 
	public const int fLoyal = 2117; 

	public const int fSafety = 2205; 
	public const int fAdmin = 2115; 

	public const int fFood = 2204; 
	public const int fEducation = 2116; 

	public const int fMoral = 2203; 
	public const int fLuck = 2118; 

	public const int fPromo = 2202; 
	public const int fTaxEvasion = 2119; 

	public const int fElec = 2201; 
	public const int fHeirloom = 2120; 

	public const int fSoil = 2200;

	public const int fHeirloom = 2120; 
	public const int fElec = 2201; 

	public const int fTaxEvasion = 2119; 
	public const int fPromo = 2202; 

	public const int fLuck = 2118; 
	public const int bfLandmark1 = 3780; 

	public const int fLoyal = 2117; 
	public const int fAttraction = 2206; 

	public const int fEducation = 2116; 
	public const int fSafety = 2205; 

	public const int fAdmin = 2115; 
	public const int fMoral = 2203; 

	public const int fConstruction = 2003; 
	public const int fFood = 2204; 

	public const int fRation = 2207; 
	public const int fConstruction = 2003; 

	public const int bfBreed = 3710;

public class FACTION

cs

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

FEAT

``

cs

public class FEAT
{
	public const int featDEX = 1621; 
	public const int featEND = 1622;

	public const int featPER = 1623;

	public const int featLER = 1624;

	public const int featSPD = 1629; 
	public const int featMAG = 1625; 

	public const int featWIL = 1626; 
	public const int featHardy = 1630; 

	public const int featCHA = 1627;

	public const int featLuck = 1628;

	public const int featHardy = 1630; 
	public const int featSPD = 1629; 

	public const int featMAG = 1625; 
	public const int featDefense = 1631; 

	public const int featSTR = 1620; 
	public const int featWIL = 1626; 

	public const int featSwordsage = 1418; 
	public const int featDEX = 1621; 
	public const int featMilitant = 1419; 
	public const int featStamina = 1612; 

	public const int featMana = 1611;

public class FEAT

cs

	public const int featExecutioner = 1420;

	public const int featMilitant = 1419; 
	public const int featEvade = 1632; 

	public const int featDefense = 1631; 
	public const int featSwordsage = 1418; 

	public const int featWitch = 1417;

	public const int featInquisitor = 1416; 
	public const int featStamina = 1612; 
	public const int featSTR = 1620; 

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

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

	public const int featNegotiate = 1634; 
	public const int featMartial = 1635; 

	public const int featFoxMaid = 1415; 
	public const int featInquisitor = 1416; 

	public const int featComat = 1750;

	public const int featFastEater = 1663; 
	public const int featGoldenFinger = 1662;

	public const int featDismantler = 1661;

public class FEAT

cs

	public const int featHeavyCasting = 1654;

	public const int featDreamWaker = 1653; 
	public const int featNegotiate = 1634; 

	public const int featSpotting = 1633; 
	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 featRapidMagic = 1648; 

	public const int featSummoner = 1647;

public class FEAT

cs

	public const int featFaith = 1636;

	public const int featMartial = 1635; 
	public const int featMagicManner = 1651; 
	public const int featRapidArrow = 1652; 

	public const int featWhiteVixen = 1414; 
	public const int featFoxMaid = 1415; 

	public const int featEternalYouth = 1243;

	public const int featLuckyCat = 1412; 
	public const int featFairysan = 1413; 

	public const int featBaby = 1232;

public class FEAT

cs

	public const int featBloodBond = 1249;

	public const int featFairysan = 1413; 
	public const int featVampire = 1250; 

	public const int featAshborn = 1251; 
	public const int featWhiteVixen = 1414; 

	public const int featAquatic = 1252;

public class FEAT

cs

	public const int featGod_earth1 = 1305;

	public const int featVampire = 1250; 
	public const int featAshborn = 1251; 

	public const int featGod_machine1 = 1315;

	public const int featThief = 1401; 
	public const int featWizard = 1402;

	public const int featFarmer = 1403;

public class FEAT

cs

	public const int featEarthStrength = 1411;

	public const int featLuckyCat = 1412; 
	public const int featGod_wind1 = 1310;

	public const int featGod_strife1 = 1355;

public class FEAT

cs

	public const int featWarrior = 1400;

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

FOOD

public class FOOD

cs
public class FOOD
{
	public const int food_poison = 702; 
	public const int food_cat = 701; 

	public const int food_CHA = 700;

	public const int food_poison = 702; 
	public const int food_god = 758; 
	public const int food_love = 703;

	public const int creativeDish = 764;

	public const int food_bug = 704; 
	public const int food_cat = 701; 
	public const int gainWeight = 705; 

	public const int loseWeight = 706;

	public const int kirimi = 707; 
	public const int food_bug = 704; 

	public const int gainWeight = 705; 
	public const int food_human = 708; 

	public const int food_undead = 709;

	public const int justcooked = 757;

	public const int food_god = 758; 
	public const int food_human = 708; 
	public const int kirimi = 707; 

	public const int food_blood = 710;

	public static readonly int[] IDS = new int[14]
	{
		702, 700, 703, 764, 704, 701, 706, 707, 705, 709, 
		757, 758, 708, 710
		701, 700, 702, 758, 703, 764, 705, 706, 704, 708, 
		709, 757, 707, 710
	};
}

FoodEffect

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

cs
	}
	if (c2.HasElement(1200))
	{
		num2 *= 1f + (float)c2.Evalue(1200) * 0.25f; 
		num2 *= 1f + (float)c2.Evalue(1200) * 0.3f; 
	}
	if (!c2.IsPC)
	{

GameLang

public static string ConvertDrama(string text, Chara c = null)

cs
			stringBuilder.Append(text[i]);
		}
	}
	if ((bool)LayerDrama.Instance && LayerDrama.Instance.drama.tg != null) 
	{ 
		int gender = LayerDrama.Instance.drama.tg.gender; 
		stringBuilder.Replace("#tg_his", ((gender == 2) ? "his" : "her").lang()); 
		stringBuilder.Replace("#tg_him", ((gender == 2) ? "him" : "her").lang()); 
	} 
	if (DramaManager.TG != null)
	{
		stringBuilder.Replace("#tg", DramaManager.TG.Name);

LayerAbility

public void SelectGroup(string id)

cs
			foreach (Element value in ELayer.pc.elements.dict.Values)
			{
				string categorySub = value.source.categorySub;
				if (value.Value != 0 && (!config.hideDepletedSpell || !value.PotentialAsStock || value.vPotential > 0) && (value.id != 6020 || ELayer.pc.HasElement(1216))) 
				if (value.Value != 0 && (!config.hideDepletedSpell || ((!value.PotentialAsStock || value.vPotential > 0) && value.vPotential >= 0)) && (value.id != 6020 || ELayer.pc.HasElement(1216))) 
				{
					if (id == "favAbility" && ELayer.player.favAbility.Contains(value.id))
					{

MUTATION

public class MUTATION

cs
public class MUTATION
{
	public const int mutationDexN = 1515; 
	public const int mutationRegen = 1516; 

	public const int mutationSkin = 1510;

public class MUTATION

cs

	public const int mutationDex = 1514;

	public const int mutationRegen = 1516; 
	public const int mutationDexN = 1515; 

	public const int mutationSpeed = 1518; 
	public const int mutationRegenN = 1517; 
	public const int mutationSpeedN = 1519; 

	public const int etherPoisonHand = 1565;

public class MUTATION

cs

	public const int etherViolence = 1556;

	public const int etherNeck = 1555; 
	public const int mutationSpeed = 1518; 

	public const int mutationRegenN = 1517; 
	public const int etherWing = 1554; 

	public const int etherEye = 1553;

public class MUTATION

cs

	public const int etherUgly = 1551;

	public const int etherWing = 1554; 
	public const int mutationHairN = 1533; 
	public const int etherNeck = 1555; 

	public const int mutationSpeedN = 1519; 
	public const int mutationCha = 1522; 

	public const int mutationStr = 1520;

	public const int etherGravity = 1550; 
	public const int mutationStrN = 1521; 

	public const int mutationCha = 1522; 
	public const int etherGravity = 1550; 

	public const int mutationChaN = 1523;

	public const int mutationBrain = 1524;

	public const int mutationBrainN = 1525; 
	public const int mutationStrN = 1521; 
	public const int mutationCold = 1526; 

	public const int mutationColdN = 1527; 
	public const int mutationBrainN = 1525; 

	public const int mutationLightning = 1528;

public class MUTATION

cs

	public const int mutationHair = 1532;

	public const int mutationCold = 1526; 
	public const int mutationHairN = 1533; 
	public const int mutationColdN = 1527; 

	public static readonly int[] IDS = new int[40]
	{
		1515, 1510, 1511, 1512, 1513, 1514, 1516, 1518, 1565, 1564, 
		1563, 1562, 1561, 1560, 1559, 1558, 1557, 1556, 1555, 1517, 
		1553, 1552, 1551, 1554, 1533, 1519, 1520, 1550, 1522, 1523, 
		1524, 1525, 1521, 1527, 1528, 1529, 1530, 1531, 1532, 1526
		1516, 1510, 1511, 1512, 1513, 1514, 1515, 1517, 1519, 1565, 
		1564, 1563, 1562, 1561, 1560, 1559, 1558, 1557, 1556, 1518, 
		1554, 1553, 1552, 1551, 1555, 1522, 1520, 1521, 1550, 1523, 
		1524, 1526, 1525, 1528, 1529, 1530, 1531, 1532, 1533, 1527
	};
}
public class Mutation : Feat

POLICY

``

cs

public class POLICY
{
	public const int celeb = 2822; 
	public const int license_general = 2820;

	public const int legendary_heirloom = 2821;

	public const int celeb = 2822; 
	public const int legendary_exhibition = 2823;

	public const int breed_season = 2827; 
	public const int license_furniture = 2819; 

	public const int milk_fan = 2825;

	public const int egg_fan = 2826;

	public const int license_slaver = 2828; 
	public const int breed_season = 2827; 

	public const int license_furniture = 2819; 
	public const int license_slaver = 2828; 

	public const int license_stolen = 2824;

public class POLICY

cs

	public static readonly int[] IDS = new int[51]
	{
		2820, 2821, 2822, 2823, 2827, 2825, 2826, 2828, 2819, 2824, 
		2822, 2820, 2821, 2823, 2819, 2825, 2826, 2827, 2828, 2824, 
		2818, 2500, 2816, 2516, 2515, 2514, 2513, 2512, 2511, 2510,
		2700, 2509, 2507, 2506, 2505, 2504, 2502, 2501, 2817, 2508,
		2701, 2503, 2703, 2702, 2815, 2814, 2812, 2811, 2810, 2800,

WidgetHP

public class Extra

cs
		[JsonProperty]
		public int layout;

		[JsonProperty] 
		public int spacing; 
		[JsonProperty] 
		public int fontSize; 
		[JsonProperty]
		public bool showGauge;

public void Refresh()

cs
			EMono.pc.stamina.value = EMono.pc.stamina.max;
		}
	}
	grid.spacing = new Vector2(extra.spacing, 0f); 
	gaugeHP.hideBar = !extra.showGauge;
	gaugeMP.hideBar = !extra.showGauge;
	gaugeStamina.hideBar = !extra.showGauge;
	gaugeStamina.SetActive(extra.stamina);
	gaugeHP.textNow.SetSize(gaugeHP.textNow.orgSize + extra.fontSize); 
	gaugeMP.textNow.SetSize(gaugeMP.textNow.orgSize + extra.fontSize); 
	gaugeStamina.textNow.SetSize(gaugeStamina.textNow.orgSize + extra.fontSize); 
	gaugeHP.UpdateValue(EMono.pc.hp, EMono.pc.MaxHP);
	gaugeMP.UpdateValue(EMono.pc.mana.value, EMono.pc.mana.max);
	gaugeStamina.UpdateValue(EMono.pc.stamina.value, EMono.pc.stamina.max);
	Color c = EMono.Colors.Dark.gradientHP.Evaluate((float)EMono.pc.hp / (float)EMono.pc.MaxHP);
	gaugeHP.textNow.text = "".TagColor(c, EMono.pc.hp.ToString() ?? "") + (extra.showMax ? ("/" + EMono.pc.MaxHP) : ""); 
	gaugeHP.textNow.text = "".TagColor(c, EMono.pc.hp.ToString() ?? "") + (extra.showMax ? (" / " + EMono.pc.MaxHP) : ""); 
	c = EMono.Colors.Dark.gradientMP.Evaluate((float)EMono.pc.mana.value / (float)EMono.pc.mana.max);
	gaugeMP.textNow.text = "".TagColor(c, EMono.pc.mana.value.ToString() ?? "") + (extra.showMax ? ("/" + EMono.pc.mana.max) : ""); 
	gaugeMP.textNow.text = "".TagColor(c, EMono.pc.mana.value.ToString() ?? "") + (extra.showMax ? (" / " + EMono.pc.mana.max) : ""); 
	c = EMono.Colors.Dark.gradientSP.Evaluate((float)EMono.pc.stamina.value / (float)EMono.pc.stamina.max);
	gaugeStamina.textNow.text = "".TagColor(c, EMono.pc.stamina.value.ToString() ?? "") + (extra.showMax ? ("/" + EMono.pc.stamina.max) : ""); 
	gaugeStamina.textNow.text = "".TagColor(c, EMono.pc.stamina.value.ToString() ?? "") + (extra.showMax ? (" / " + EMono.pc.stamina.max) : ""); 
	goBarrier.SetActive(value: false);
	textBarrier.text = "10";
}

public override void OnSetContextMenu(UIContextMenu m)

cs
		Rebuild();
		ClampToScreen();
	}, 0f, 2f, isInt: true);
	uIContextMenu.AddSlider("spacing", (float n) => n.ToString() ?? "", extra.spacing, delegate(float a) 
	{ 
		extra.spacing = (int)a; 
	}, 0f, 100f, isInt: true); 
	uIContextMenu.AddSlider("fontSize", (float n) => n.ToString() ?? "", extra.fontSize, delegate(float a) 
	{ 
		extra.fontSize = (int)a; 
	}, -2f, 5f, isInt: true); 
	uIContextMenu.AddToggle("showGauge", extra.showGauge, delegate(bool a)
	{
		extra.showGauge = a;