Skip to content

EA 23.239 Nightly Patch 1

November 24, 2025

24 files modified. 1 new file created.

Important Changes

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

AttackProcess (1)

cs
public static int GetTwoHandEncBonus(Chara CC) 
public static int GetTwoHandEncBonus(Chara CC, Thing w) 

ABILITY

public class ABILITY

cs

	public const int ActRush = 6450;

	public const int ActGazeMana = 6623; 
	public const int ActBash = 5052;

	public const int ActZap = 5051; 
	public const int AI_Sleep = 5050;

	public const int TaskReadBoard = 5019; 
	public const int TaskFarm = 5020;

	public const int TaskTrain = 5021;

public class ABILITY

cs

	public const int ActCancelTask = 5033;

	public const int ActZap = 5051; 
	public const int GoalIdle = 5034;

	public const int TaskMoveInstalled = 5036; 
	public const int TaskBuild = 5035; 

	public const int ActNoItem = 5037; 
	public const int AI_OpenLock = 5049; 

	public const int ActThrow = 5038; 
	public const int ActItem = 5048; 

	public const int AI_Fish = 5039; 
	public const int ActPick = 5047; 

	public const int ActRanged = 5040; 
	public const int ActInstall = 5046; 

	public const int AI_Read = 5041; 
	public const int AI_Drink = 5045; 

	public const int ActKick = 5042; 
	public const int ActChat = 5044; 
	public const int ActGazeMana = 6623; 

	public const int AI_TendAnimal = 5043;

	public const int ActChat = 5044; 
	public const int AI_Read = 5041; 

	public const int AI_Drink = 5045; 
	public const int ActRanged = 5040; 

	public const int ActInstall = 5046; 
	public const int AI_Fish = 5039; 

	public const int ActPick = 5047; 
	public const int ActThrow = 5038; 

	public const int ActItem = 5048; 
	public const int ActNoItem = 5037; 

	public const int AI_OpenLock = 5049; 
	public const int TaskMoveInstalled = 5036; 

	public const int TaskBuild = 5035; 
	public const int ActKick = 5042; 

	public const int ActDrainBlood = 6626;

public class ABILITY

cs

	public const int ActInsult = 6630;

	public const int ActCatHuffing = 6627; 
	public const int breathe_Nether = 50206; 

	public const int breathe_Sound = 50207;

public class ABILITY

cs

	public const int breathe_Void = 50216;

	public const int TaskReadBoard = 5019; 
	public const int TaskPick = 5018;

	public const int TaskTalk = 5017;

	public const int TaskTame = 5016;

	public const int TaskAttack = 5015; 
	public const int ActCatHuffing = 6627; 

	public const int TaskPlow = 5014; 
	public const int TaskAttack = 5015; 

	public const int ActWait = 5000; 
	public const int ActAttack = 5013; 

	public const int ActMelee = 5001; 
	public const int AI_Goto = 5012; 

	public const int Melee = 5002; 
	public const int TaskCut = 5011; 

	public const int Ranged = 5003; 
	public const int TaskDig = 5010; 

	public const int Sleep = 5004; 
	public const int TaskMine = 5009; 

	public const int Wait = 5005; 
	public const int General = 5008; 

	public const int breathe_Poison = 50205; 
	public const int Use = 5007; 

	public const int Shoot = 5006;

	public const int General = 5008; 
	public const int Wait = 5005; 

	public const int TaskMine = 5009; 
	public const int Sleep = 5004; 

	public const int TaskDig = 5010; 
	public const int Ranged = 5003; 

	public const int TaskCut = 5011; 
	public const int Melee = 5002; 

	public const int AI_Goto = 5012; 
	public const int ActMelee = 5001; 

	public const int ActAttack = 5013; 
	public const int ActWait = 5000; 

	public const int Use = 5007; 
	public const int TaskPlow = 5014; 

	public const int breathe_Mind = 50204;

	public const int breathe_Nether = 50206; 
	public const int breathe_Poison = 50205; 

	public const int breathe_Lightning = 50202;

public class ABILITY

cs

	public const int ActBladeStorm2 = 6665;

	public const int breathe_Darkness = 50203; 
	public const int ActWhirlwind = 6666; 

	public const int ActMissileBarrage = 6667; 
	public const int breathe_Darkness = 50203; 

	public const int ActSummonSpecial = 6800;

	public const int ActWhirlwind = 6666; 
	public const int StTaunt = 6700; 

	public const int StManaCost = 6720; 
	public const int ActMissileBarrage = 6667; 

	public const int breathe_Cold = 50201; 
	public const int ActHeadpat = 6904; 

	public const int breathe_Fire = 50200; 
	public const int SongSleep = 6750; 

	public const int SpTransmuteBat = 8793; 
	public const int SongTulip = 6751; 

	public const int breathe_ = 7000; 
	public const int SongValor = 6752; 

	public const int StTaunt = 6700; 
	public const int ActManaAbsorb = 6900; 

	public const int ActKizuamiTrick = 6903; 
	public const int ActJureHeal = 6901; 

	public const int ActLulwyTrick = 6902;

	public const int ActHeadpat = 6904; 
	public const int ActKizuamiTrick = 6903; 

	public const int ActManaAbsorb = 6900; 
	public const int StManaCost = 6720; 

	public const int SongValor = 6752; 
	public const int breathe_ = 7000; 

	public const int SongTulip = 6751; 
	public const int SpTransmuteBat = 8793; 

	public const int SongSleep = 6750; 
	public const int breathe_Fire = 50200; 

	public const int ActJureHeal = 6901; 
	public const int breathe_Cold = 50201; 

	public static readonly int[] IDS = new int[133]
	{
		6604, 5054, 5055, 6001, 6003, 6011, 6012, 6013, 6015, 6018,
		6019, 6020, 6050, 6400, 6410, 5053, 6420, 6500, 6600, 6601,
		6602, 6603, 6605, 6606, 6607, 6610, 6611, 6612, 6613, 6620,
		6621, 6450, 6623, 5052, 5050, 5020, 5021, 5022, 5023, 5024, 
		5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5051, 
		5034, 5036, 5037, 5038, 5039, 5040, 5041, 5042, 5043, 5044, 
		5045, 5046, 5047, 5048, 5049, 5035, 6626, 6622, 6630, 6627, 
		50207, 50208, 50209, 50210, 50211, 50212, 50213, 50214, 50215, 50216, 
		5019, 5018, 5017, 5016, 5015, 5014, 5000, 5001, 5002, 5003, 
		5004, 5005, 50205, 5006, 5008, 5009, 5010, 5011, 5012, 5013, 
		5007, 50204, 50206, 50202, 6631, 6640, 6641, 6642, 6650, 6660, 
		6661, 6662, 6663, 6664, 6665, 50203, 6667, 6800, 6666, 6720, 
		50201, 50200, 8793, 7000, 6700, 6903, 6902, 6904, 6900, 6752, 
		6751, 6750, 6901
		6621, 6450, 5052, 5051, 5050, 5019, 5020, 5021, 5022, 5023, 
		5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 
		5034, 5035, 5049, 5048, 5047, 5046, 5045, 5044, 6623, 5043, 
		5041, 5040, 5039, 5038, 5037, 5036, 5042, 6626, 6622, 6630, 
		50206, 50207, 50208, 50209, 50210, 50211, 50212, 50213, 50214, 50215, 
		50216, 5018, 5017, 5016, 6627, 5015, 5013, 5012, 5011, 5010, 
		5009, 5008, 5007, 5006, 5005, 5004, 5003, 5002, 5001, 5000, 
		5014, 50204, 50205, 50202, 6631, 6640, 6641, 6642, 6650, 6660, 
		6661, 6662, 6663, 6664, 6665, 6666, 50203, 6800, 6700, 6667, 
		6904, 6750, 6751, 6752, 6900, 6901, 6902, 6903, 6720, 7000, 
		8793, 50200, 50201
	};
}
public class Ability : Act

AttackProcess

public static int GetWeaponEnc(Chara CC, Thing w, int ele, bool addSelfEnc = fal

cs
	{
		num += EClass.pc.faction.charaElements.Value(ele);
	}
	num = num * (100 + GetTwoHandEncBonus(CC)) / 100; 
	num = num * (100 + GetTwoHandEncBonus(CC, w)) / 100; 
	if (addSelfEnc)
	{
		num += CC.Evalue(ele);

public static int GetWeaponEnc(Chara CC, Thing w, int ele, bool addSelfEnc = fal

cs
		return num;
	}

	public static int GetTwoHandEncBonus(Chara CC) 
	public static int GetTwoHandEncBonus(Chara CC, Thing w) 
	{
		if (CC == null || CC.body.GetAttackStyle() != AttackStyle.TwoHand) 
		if (CC == null || CC.body.GetAttackStyle() != AttackStyle.TwoHand || w == null || !w.IsWeapon) 
		{
			return 0;
		}

public bool Perform(int count, bool hasHit, float dmgMulti = 1f, bool maxRoll =

cs
			ModExpDef(150, 90);
			ModExpDef(151, 90);
		}
		ProcAbility(list, CC, TC, weaponSkill.Value * (100 + GetTwoHandEncBonus(CC)) / 100, subAttack); 
		ProcAbility(list, CC, TC, weaponSkill.Value * (100 + GetTwoHandEncBonus(CC, weapon)) / 100, subAttack); 
		return false;
	}
	if (TC.IsPC)

public bool Perform(int count, bool hasHit, float dmgMulti = 1f, bool maxRoll =

cs
			{
				int num10 = 25;
				int num11 = EClass.rnd(num * (100 + item.Value * 10) / 500 + 5);
				num11 = num11 * (100 + GetTwoHandEncBonus(CC)) / 100; 
				num11 = num11 * (100 + GetTwoHandEncBonus(CC, weapon)) / 100; 
				if (conWeapon == null && weapon != null && weapon.trait is TraitToolRangeCane)
				{
					num10 = 0;

public bool Perform(int count, bool hasHit, float dmgMulti = 1f, bool maxRoll =

cs
				}
			}
		}
		ProcAbility(list, CC, TC, weaponSkill.Value * (100 + GetTwoHandEncBonus(CC)) / 100, subAttack); 
		ProcAbility(list, CC, TC, weaponSkill.Value * (100 + GetTwoHandEncBonus(CC, weapon)) / 100, subAttack); 
	}
	if (!CC.IsAliveInCurrentZone || !TC.IsAliveInCurrentZone)
	{

public bool Perform(int count, bool hasHit, float dmgMulti = 1f, bool maxRoll =

cs
				}
				TC.Chara.AddCondition<ConParalyze>(EClass.rnd(2), force: true);
			}
			ProcShieldEncs(CC, TC, 500 + num13); 
			if (!TC.isRestrained) 
			{ 
				ProcShieldEncs(CC, TC, 500 + num13); 
			} 
			if (CC.IsAliveInCurrentZone)
			{
				CC.ModExp(123, 50);

BaseCondition

public virtual bool TryMove(Point p)

cs
		return true;
	}

	public virtual ElementContainer GetElementContainer() 
	{ 
		return elements; 
	} 
	public void SetElement(int id)
	{
		refVal = id;

public override void _WriteNote(UINote n, bool asChild = false)

cs
		}
		else if (elements != null && elements.Has(e.id) && elements.Value(e.id) != e.Value)
		{
			list.Add("modValue".lang(e.Name, ((e.Value < 0) ? "" : "+") + elements.Value(e.id) + " (" + e.Value + ")").TagColor(() => e.Value >= 0)); 
			list.Add("modValue".lang(e.Name, ((e.Value < 0) ? "" : "+") + elements.Value(e.id) + (e.source.tag.Contains("ratio") ? "%" : "") + " (" + e.Value + ")").TagColor(() => e.Value >= 0)); 
		}
		else
		{
			list.Add("modValue".lang(e.Name, ((e.Value < 0) ? "" : "+") + e.Value).TagColorGoodBad(() => e.Value >= 0)); 
			list.Add("modValue".lang(e.Name, ((e.Value < 0) ? "" : "+") + e.Value + (e.source.tag.Contains("ratio") ? "%" : "")).TagColorGoodBad(() => e.Value >= 0)); 
		}
	}
	if (list.Count <= 0)

Card

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

cs
			break;
		}
	}
	if (origin != null) 
	{ 
		dmg = dmg * (100 + origin.Evalue(94)) / 100; 
	} 
	Element e;
	if (ele == 0 || ele == 926)
	{

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

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_104d; 
						goto IL_1077; 
					}
				}
				if (zoneInstanceBout != null && (bool)LayerDrama.Instance)

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

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

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

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

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

cs
				EClass.player.codex.AddKill(id);
				if (Guild.Fighter.CanGiveContribution(Chara))
				{
					Guild.Fighter.AddContribution(5 + LV / 5); 
					Guild.Fighter.AddContribution(10 + Mathf.Min(LV, 200) / 5); 
				}
				if (Guild.Fighter.HasBounty(Chara))
				{
					int a = EClass.rndHalf(200 + LV * 20); 
					int a = EClass.rndHalf(200 + EClass.curve(LV, 20, 15) * 20); 
					Msg.Say("bounty", Chara, a.ToString() ?? "");
					EClass.pc.ModCurrency(a);
					SE.Pay();

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

cs
	{
		ActEffect.Proc(EffectId.Duplicate, this);
	}
	if (origin != null) 
	if (origin != null && !Chara.isRestrained) 
	{
		AttackProcess.ProcShieldEncs(Chara, origin);
	}

Chara

public override void OnCreate(int genLv)

cs
			SetFeat(1644, j + 1);
		}
	}
	string text = id; 
	if (text == "putty_mech_b" || text == "putty_mech") 
	switch (id) 
	{
	case "putty_mech_b": 
	case "putty_mech": 
	case "robot": 
		SetFeat(1248, 1 + EClass.rnd(5));
		break; 
	}
	InitStats();
	body.SetOwner(this);

public void TickConditions()

cs
			AddCondition<ConBurning>(1000, force: true);
		}
		break;
	case 15:
		if (HasElement(1250) && !HasCondition<ConVampire>()) 
		{ 
			AddCondition<ConVampire>(); 
		} 
		break; 
	}
	if (turn % 200 == 0)
	{

public override string GetHoverText()

cs
	{
		text2 += ("(" + faith.Name + ")").TagSize(14);
	}
	if (EClass.pc.HasElement(1250)) 
	if (EClass.pc.HasElement(6607)) 
	{
		s += CraftUtil.GetBloodText(this).TagSize(14).TagColor(EClass.Colors.colorBlood);
	}

ConBerserk

public override void SetOwner(Chara _owner, bool onDeserialize = false)

cs
	public override void OnRemoved()
	{
		owner.isBerserk = false;
		owner.ai.Cancel(); 
	}
}

ConDisease

public override bool PreventRegen

cs
		}
	}

	public override ElementContainer GetElementContainer() 
	{ 
		return ec; 
	} 
	public override void SetOwner(Chara _owner, bool onDeserialize = false)
	{
		base.SetOwner(_owner);

ConTransmuteBat

public override void OnStart()

cs
	public override void OnRemoved()
	{
		base.OnRemoved();
		owner.HealHP(owner.MaxHP / 2, HealSource.Item); 
		owner.HealHP(owner.MaxHP, HealSource.Item); 
		owner.SetCooldown(8793);
	}
}

+ConVampire

File Created
cs
using Newtonsoft.Json;

public class ConVampire : Condition
{
	public static int[] List_Vampire = new int[13]
	{
		70, 72, 71, 77, 74, 75, 76, 73, 60, 61,
		79, 300, 301
	};

	[JsonProperty]
	private ElementContainer ec = new ElementContainer();

	public override int GetPhase()
	{
		return 0;
	}

	public override ElementContainer GetElementContainer()
	{
		return ec;
	}

	public override void Tick()
	{
		if (EClass._zone.IsRegion || EClass.rnd(10) != 0)
		{
			return;
		}
		int num = List_Vampire.RandomItem();
		int num2 = ec.Value(num);
		if (EClass.world.date.IsNight)
		{
			int num3 = owner.elements.Base(num) / 5 + 5;
			switch (num)
			{
			case 60:
			case 61:
				num3 = 20;
				break;
			case 79:
				num3 = 20;
				break;
			}
			if (num2 < num3 && (float)EClass.rnd(100) >= 99f * (float)num2 / (float)num3)
			{
				ec.ModBase(num, 1);
			}
		}
		else if (num2 > 0)
		{
			ec.ModBase(num, -1);
		}
	}

	public override void SetOwner(Chara _owner, bool onDeserialize = false)
	{
		base.SetOwner(_owner);
		ec.SetParent(owner);
	}

	public override void OnRemoved()
	{
		ec.SetParent();
	}
}

CoreDebug

public void UpdateInput()

cs
		if (targetChara != null)
		{
			EClass.pc.Pick(CraftUtil.MakeBloodMeal(EClass.pc, targetChara));
			EClass.pc.Pick(CraftUtil.MakeLoveLunch(targetChara)); 
		}
		targetChara.ScaleByPrincipal();
		if (EClass.game.quests.Get<QuestDebt>() == null)

CraftUtil

public static Thing MakeBloodMeal(Chara sucker, Chara feeder, bool msg = true)

cs
	Thing c_bloodData = feeder.c_bloodData;
	if (c_bloodData == null)
	{
		int seed = ((feeder.GetInt(118) == 0) ? (EClass.game.seed + feeder.uid) : feeder.GetInt(118)); 
		Rand.SetSeed(seed); 
		int num = ((feeder.GetInt(118) == 0) ? (EClass.game.seed + feeder.uid) : feeder.GetInt(118)); 
		Rand.SetSeed(num); 
		c_bloodData = ThingGen.CreateFromCategory("meal", 100);
		if (msg)
		{
			sucker.Say("food_blood", c_bloodData);
		}
		MakeDish(c_bloodData, 100, null, seed); 
		MakeDish(c_bloodData, 100, null, num + feeder.uid); 
		c_bloodData.elements.SetTo(709, 0);
		c_bloodData.elements.SetTo(708, 0);
		c_bloodData.elements.SetTo(701, 0);

public static Thing MakeBloodMeal(Chara sucker, Chara feeder, bool msg = true)

cs
			}
		}
		c_bloodData.elements.SetTo(2, Mathf.Min(EClass.curve(feeder.LV, 30, 10, 65), 200));
		c_bloodData.elements.ModBase(710, 15 + (int)Mathf.Min(Mathf.Sqrt(sucker.Evalue(6607) + Mathf.Max(sucker.LER, 0)), 50f)); 
		c_bloodData.elements.ModBase(710, 15 + (int)Mathf.Min(Mathf.Sqrt(sucker.Evalue(6607) + Mathf.Max(sucker.LER, 0)), 55f)); 
		return c_bloodData;
	}

public static Thing MakeLoveLunch(Chara c)

cs
	{
		thing.elements.SetBase(753, 0);
	}
	if (EClass.pc.HasElement(1250) && !thing.HasElement(710)) 
	{ 
		thing.elements.SetBase(710, 1); 
	} 
	Rand.SetSeed();
	return thing;
}

DOMAIN

``

cs

public class DOMAIN
{
	public const int domFaith = 802; 
	public const int domSurvival = 801; 
	public const int domComm = 805; 

	public const int domTest = 800; 
	public const int domArcane = 804; 

	public const int domElement = 806;

	public const int domTest = 800; 
	public const int domMiracle = 803;

	public const int domArcane = 804; 
	public const int domSurvival = 801; 

	public const int domComm = 805; 
	public const int domFaith = 802; 

	public const int domWind = 807;

	public const int domMachine = 809; 
	public const int domHarvest = 808; 

	public const int domLuck = 810;

public class DOMAIN

cs

	public const int domHarmony = 815;

	public const int domHarvest = 808; 
	public const int domMachine = 809; 

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

Date

public bool IsNight

cs
	{
		get
		{
			if (hour < 19) 
			if (hour < HourNight) 
			{
				return hour <= 5; 
				return hour <= HourMorning; 
			}
			return true;
		}
	}

	public int HourMorning => 5; 
	public int HourNight => 19; 
	public PeriodOfDay periodOfDay
	{
		get

ELEMENT

public class ELEMENT

cs

	public const int growth = 14;

	public const int lv = 1; 
	public const int hardness = 13; 

	public const int water = 15; 
	public const int size = 12; 

	public const int d = 3; 
	public const int weight = 11; 

	public const int socket = 5; 
	public const int nutrition = 10; 

	public const int quality = 2; 
	public const int socket = 5; 

	public const int weight = 11; 
	public const int d = 3; 

	public const int size = 12; 
	public const int water = 15; 

	public const int hardness = 13; 
	public const int lv = 1; 

	public const int nutrition = 10; 
	public const int quality = 2; 

	public static readonly int[] IDS = new int[36]
	{
		752, 753, 754, 755, 756, 762, 760, 761, 763, 765,
		751, 759, 750, 0, 25, 85, 29, 26, 24, 23,
		22, 21, 18, 17, 16, 20, 14, 1, 15, 3, 
		5, 2, 11, 12, 13, 10
		22, 21, 18, 17, 16, 20, 14, 13, 12, 11, 
		10, 5, 3, 15, 1, 2
	};
}
public class Element : EClass

public void WriteNote()

cs
		}
		foreach (Condition condition in c.conditions)
		{
			if (condition.elements != null) 
			if (condition.GetElementContainer() != null) 
			{
				AddText(condition.elements.Value(id), condition.Name); 
				AddText(condition.GetElementContainer().Value(id), condition.Name); 
			}
		}
		if (c.tempElements != null)

public virtual Act.Cost GetCost(Chara c)

cs
			break;
		case 6663:
		case 6664:
		case 6665:
		{
			int num2 = -2;
			foreach (BodySlot slot in c.body.slots)

ENC

public class ENC

cs
public class ENC
{
	public const int negateBlind = 421; 
	public const int negatePoison = 420; 

	public const int invisibility = 415; 
	public const int encTail = 419; 
	public const int encHit = 414; 

	public const int seeInvisible = 416;

	public const int loving = 417;

	public const int innocence = 418; 
	public const int encHit = 414; 
	public const int encTail = 419; 
	public const int invisibility = 415; 

	public const int negatePoison = 420; 
	public const int negateBlind = 421; 

	public const int negateParalysis = 422; 
	public const int innocence = 418; 

	public const int negateSleep = 424; 
	public const int encRagnarok = 667; 

	public const int meleeDistance = 666; 
	public const int negateFear = 423; 

	public const int planter = 665;

public class ENC

cs

	public const int absorbMP = 661;

	public const int absorbHP = 660; 
	public const int slowCorruption = 412;

	public const int absorbHP = 660; 
	public const int permaCurse = 656; 

	public const int encRagnarok = 667; 
	public const int meleeDistance = 666; 

	public const int encSpell = 411;

public class ENC

cs

	public const int corruption = 409;

	public const int negateFear = 423; 
	public const int negateParalysis = 422; 

	public const int convertImpact = 865;

	public const int convertLightning = 852;

	public const int convertFire = 850; 
	public const int convertCold = 851; 

	public const int counter = 380;

public class ENC

cs

	public const int redirect_blaser = 383;

	public const int permaCurse = 656; 
	public const int onlyPet = 655; 

	public const int levitation = 401;

public class ENC

cs

	public const int throwReturn = 410;

	public const int onlyPet = 655; 
	public const int noDamage = 654; 

	public const int convertCold = 851; 
	public const int convertFire = 850; 

	public const int living = 653; 
	public const int eco = 652; 
	public const int sustain_MAG = 446; 

	public const int sustain_CHA = 447;

public class ENC

cs

	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 const int slot_rune = 484; 
	public const int sustain_WIL = 445; 

	public const int sustain_MAG = 446; 
	public const int slot_rune = 484; 

	public const int nonLethal = 485; 
	public const int sustain_LER = 444; 

	public const int sustain_WIL = 445; 
	public const int sustain_DEX = 442; 

	public const int sustain_PER = 443; 
	public const int living = 653; 

	public const int noDamage = 654; 
	public const int negateConfusion = 425; 

	public const int negateSteal = 426;

public class ENC

cs

	public const int sustain_END = 441;

	public const int sustain_DEX = 442; 
	public const int sustain_PER = 443; 

	public const int sustain_LER = 444; 
	public const int nonLethal = 485; 

	public const int safetyMeasure = 486; 
	public const int strongStomach = 480; 

	public const int revealFaith = 481; 
	public const int creativeChef = 487; 

	public const int deathagony = 488; 
	public const int mod_chaser = 620; 

	public const int negateConfusion = 425; 
	public const int negateSleep = 424; 
	public const int mod_feint = 623; 

	public const int mod_frustration = 624;

public class ENC

cs

	public const int r_mana = 641;

	public const int safetyMeasure = 486; 
	public const int r_DV = 650;

	public const int r_PV = 651; 
	public const int mod_talisman = 609; 

	public const int creativeChef = 487; 
	public const int mod_splash = 608; 

	public const int mod_flurry = 621;

	public const int mod_chaser = 620; 
	public const int mod_talisman = 609; 
	public const int mod_cleave = 622; 
	public const int mod_drill = 606; 

	public const int mod_scatter = 607;

	public const int mod_splash = 608; 
	public const int mod_ammo_recover = 604; 

	public const int mod_precision = 605; 
	public const int r_PV = 651; 

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

	public const int eco = 652; 
	public const int music_drunk = 489; 

	public const int mod_ammo = 600;

	public const int mod_reload = 601;

	public const int mod_rapid = 602; 
	public const int mod_drill = 606; 
	public const int mod_precision = 605; 

	public const int mod_feint = 623; 
	public const int mod_rapid = 602; 

	public const int mod_ammo_knockback = 603;

	public const int mod_ammo_recover = 604; 
	public const int mod_cleave = 622; 

	public static readonly int[] IDS = new int[104]
	{
		421, 415, 416, 417, 418, 414, 419, 420, 422, 424, 
		666, 665, 664, 663, 662, 661, 412, 660, 667, 411, 
		400, 409, 423, 865, 852, 850, 380, 381, 382, 383, 
		656, 401, 402, 403, 404, 405, 406, 407, 408, 410, 
		655, 851, 653, 447, 450, 460, 461, 462, 463, 464, 
		465, 466, 467, 468, 480, 482, 483, 484, 446, 485, 
		445, 443, 654, 426, 427, 428, 429, 430, 431, 435, 
		436, 437, 438, 439, 440, 441, 442, 444, 486, 481, 
		488, 425, 624, 640, 641, 650, 651, 487, 621, 620, 
		609, 622, 607, 608, 605, 489, 652, 600, 601, 602, 
		606, 623, 603, 604
		420, 419, 414, 416, 417, 415, 421, 418, 667, 423, 
		665, 664, 663, 662, 661, 660, 412, 656, 666, 411, 
		400, 409, 422, 865, 852, 851, 380, 381, 382, 383, 
		655, 401, 402, 403, 404, 405, 406, 407, 408, 410, 
		654, 850, 652, 446, 447, 450, 460, 461, 462, 463, 
		464, 465, 466, 467, 468, 481, 482, 483, 445, 484, 
		444, 442, 653, 425, 426, 427, 428, 429, 430, 431, 
		435, 436, 437, 438, 439, 440, 441, 443, 485, 480, 
		487, 620, 424, 623, 624, 640, 641, 486, 650, 609, 
		608, 621, 606, 607, 604, 651, 488, 489, 600, 601, 
		605, 602, 603, 622
	};
}

FACTION

public class FACTION

cs

	public const int bfLandmark4 = 3783;

	public const int bfBasin = 3709; 
	public const int bfLandmark5 = 3784;

	public const int bfLandmark3 = 3782; 
	public const int bfMonster = 3707;

	public const int bfFreshAir = 3708;

	public const int bfBasin = 3709; 
	public const int bfLandmark1 = 3780;

	public const int bfLandmark3 = 3782; 
	public const int fTaxEvasion = 2119; 
	public const int fLuck = 2118; 

	public const int fAdmin = 2115;

public class FACTION

cs

	public const int fLoyal = 2117;

	public const int fLuck = 2118; 
	public const int fTaxEvasion = 2119; 

	public const int fHeirloom = 2120;

public class FACTION

cs

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

FEAT

``

cs

public class FEAT
{
	public const int featStamina = 1612; 
	public const int featSTR = 1620; 

	public const int featLuck = 1628;

public class FEAT

cs

	public const int featHardy = 1630;

	public const int featSTR = 1620; 
	public const int featSPD = 1629;

	public const int featWhiteVixen = 1414;

	public const int featMana = 1611; 
	public const int featLife = 1610;

	public const int featHealer = 1422;

public class FEAT

cs

	public const int featLuckyCat = 1412;

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

	public const int featEvade = 1632;

public class FEAT

cs

	public const int featEternalYouth = 1243;

	public const int featBoost = 1409; 
	public const int featSevenSense = 1245; 

	public const int featPegasus = 1246;

public class FEAT

cs

	public const int featGoddess = 1290;

	public const int featCentaur = 1244; 
	public const int featBoost = 1409; 

	public const int featGod_element1 = 1300;

public class FEAT

cs

	public const int featGod_earth1 = 1305;

	public const int featSevenSense = 1245; 
	public const int featCentaur = 1244; 

	public const int featGod_machine1 = 1315;

	public const int featTourist = 1406; 
	public const int featPianist = 1405;

	public const int featArcher = 1404;

public class FEAT

cs

	public const int featWarrior = 1400;

	public const int featPaladin = 1407; 
	public const int featGod_strife1 = 1355;

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

	public const int featGod_wind1 = 1310; 
	public const int featGod_trickery1 = 1345; 

	public const int featGod_oblivion1 = 1340;

	public const int featGod_wind1 = 1310; 
	public const int featGod_harmony1 = 1335;

	public const int featGod_luck1 = 1330;

public class FEAT

cs

	public const int featGod_healing1 = 1320;

	public const int featGod_moonshadow1 = 1350; 
	public const int featTourist = 1406; 
	public const int featPaladin = 1407; 

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

FOOD

public class FOOD

cs

	public const int food_god = 758;

	public const int justcooked = 757; 
	public const int food_CHA = 700;

	public const int food_cat = 701;

public class FOOD

cs

	public const int food_blood = 710;

	public const int justcooked = 757; 
	public const int loseWeight = 706;

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

MUTATION

public class MUTATION

cs

	public const int mutationSkin = 1510;

	public const int mutationSkinN = 1511; 
	public const int mutationEye = 1512;

	public const int mutationEyeN = 1513; 
	public const int mutationDex = 1514;

	public const int mutationRegen = 1516;

	public const int mutationEyeN = 1513; 
	public const int mutationSkinN = 1511; 

	public const int mutationSpeed = 1518;

public class MUTATION

cs

	public const int mutationHairN = 1533;

	public const int mutationSpeedN = 1519; 
	public const int etherGravity = 1550;

	public const int mutationStr = 1520; 
	public const int mutationStrN = 1521;

	public const int mutationCha = 1522;

public class MUTATION

cs

	public const int mutationBrainN = 1525;

	public const int mutationStr = 1520; 
	public const int mutationSpeedN = 1519; 

	public const int mutationColdN = 1527;

public class MUTATION

cs

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

POLICY

``

cs

public class POLICY
{
	public const int store_ripoff = 2816; 
	public const int store_premium = 2817;

	public const int license_food = 2818;

public class POLICY

cs

	public const int legendary_heirloom = 2821;

	public const int celeb = 2822; 
	public const int milk_fan = 2825;

	public const int legendary_exhibition = 2823; 
	public const int license_stolen = 2824;

	public const int egg_fan = 2826;

public class POLICY

cs

	public const int license_slaver = 2828;

	public const int store_ripoff = 2816; 
	public const int legendary_exhibition = 2823; 
	public const int platinum_ticket = 2815;

	public const int faith_tax = 2501; 
	public const int celeb = 2822; 

	public const int suite_room = 2813; 
	public const int mass_exhibition = 2814; 

	public const int stop_growth = 2515; 
	public const int wealth_tax = 2500; 
	public const int bed_quality = 2812; 

	public const int taxfree = 2514;

public class POLICY

cs

	public const int vaccination = 2509;

	public const int nocturnal_life = 2508; 
	public const int stop_growth = 2515; 

	public const int inquisition = 2507; 
	public const int nocturnal_life = 2508; 

	public const int human_right = 2506;

public class POLICY

cs

	public const int prohibition = 2503;

	public const int wealth_tax = 2500; 
	public const int mass_exhibition = 2814; 
	public const int food_for_people = 2502; 

	public const int speed_growth = 2516; 
	public const int suite_room = 2813; 

	public const int energy_conservation = 2700; 
	public const int inquisition = 2507; 

	public const int food_for_people = 2502; 
	public const int speed_growth = 2516; 

	public const int trash_no = 2702; 
	public const int faith_tax = 2501; 

	public const int bed_quality = 2812; 
	public const int trash_sort = 2701; 

	public const int tourist_safety = 2811;

public class POLICY

cs

	public const int home_discount = 2800;

	public const int trash_sort = 2701; 
	public const int livestock_priv = 2715; 

	public const int forcePanty = 2712; 
	public const int energy_conservation = 2700; 

	public const int incomeTransfer = 2711;

	public const int livestock_priv = 2715; 
	public const int noMother = 2710; 

	public const int noAnimal = 2709; 
	public const int forcePanty = 2712; 

	public const int noDM = 2708;

public class POLICY

cs

	public const int weed_no = 2703;

	public const int noMother = 2710; 
	public const int trash_no = 2702; 
	public const int noAnimal = 2709; 

	public static readonly int[] IDS = new int[51]
	{
		2817, 2818, 2819, 2820, 2821, 2822, 2825, 2824, 2826, 2827, 
		2828, 2816, 2823, 2815, 2501, 2813, 2515, 2514, 2513, 2512, 
		2511, 2510, 2509, 2508, 2507, 2506, 2505, 2504, 2503, 2500, 
		2814, 2516, 2700, 2502, 2702, 2812, 2811, 2810, 2800, 2701, 
		2712, 2711, 2715, 2709, 2708, 2707, 2706, 2705, 2704, 2703, 
		2710
		2816, 2817, 2818, 2819, 2820, 2821, 2825, 2823, 2824, 2826, 
		2827, 2828, 2815, 2822, 2814, 2500, 2812, 2514, 2513, 2512, 
		2511, 2510, 2509, 2515, 2508, 2506, 2505, 2504, 2503, 2502, 
		2813, 2507, 2516, 2501, 2701, 2811, 2810, 2800, 2715, 2700, 
		2711, 2710, 2712, 2708, 2707, 2706, 2705, 2704, 2703, 2702, 
		2709
	};
}
public class Policy : EClass

SKILL

public class SKILL

cs
public class SKILL
{
	public const int eyeofmind = 134; 
	public const int marksman = 133;

	public const int tactics = 132;

public class SKILL

cs

	public const int shield = 123;

	public const int throwing = 108; 
	public const int armorHeavy = 122; 

	public const int armorLight = 120; 
	public const int weaponPolearm = 106; 

	public const int weaponBlunt = 111;

public class SKILL

cs

	public const int weaponCrossbow = 109;

	public const int strategy = 135; 
	public const int throwing = 108; 

	public const int weaponDagger = 107;

	public const int armorHeavy = 122; 
	public const int eyeofmind = 134; 

	public const int evasion = 150; 
	public const int armorLight = 120; 

	public const int riding = 226; 
	public const int strategy = 135; 
	public const int lumberjack = 225; 
	public const int evasionPlus = 151; 

	public const int stealth = 152;

public class SKILL

cs

	public const int mining = 220;

	public const int lumberjack = 225; 
	public const int riding = 226; 

	public const int parasite = 227;

public class SKILL

cs

	public const int music = 241;

	public const int climbing = 242; 
	public const int weaponPolearm = 106; 
	public const int weaponGun = 105; 

	public const int evasionPlus = 151; 
	public const int evasion = 150; 

	public const int weaponGun = 105; 
	public const int weaponBow = 104; 

	public const int DEX = 72; 
	public const int PER = 73; 

	public const int weaponStaff = 103; 
	public const int weaponAxe = 102; 

	public const int fireproof = 50;

public class SKILL

cs

	public const int END = 71;

	public const int weaponBow = 104; 
	public const int weaponStaff = 103; 

	public const int fishing = 245; 
	public const int DEX = 72; 

	public const int LER = 74;

public class SKILL

cs

	public const int antiMagic = 93;

	public const int dmgDealt = 94; 
	public const int martial = 100;

	public const int weaponSword = 101;

	public const int weaponAxe = 102; 
	public const int PER = 73; 
	public const int climbing = 242; 

	public const int gathering = 250; 
	public const int fishing = 245; 

	public const int vigor = 62;

	public const int blacksmith = 256; 
	public const int carpentry = 255; 

	public const int eleNether = 916;

	public const int eleSound = 917;

	public const int eleNerve = 918; 
	public const int eleHoly = 919; 

	public const int eleChaos = 920;

public class SKILL

cs

	public const int resDamage = 971;

	public const int carpentry = 255; 
	public const int gathering = 250; 

	public const int resPoison = 955;

	public const int eleMind = 914;

	public const int eleHoly = 919; 
	public const int eleNerve = 918; 

	public const int eleLightning = 912;

	public const int alchemy = 257; 
	public const int anatomy = 290; 

	public const int sculpture = 258; 
	public const int appraising = 289; 

	public const int jewelry = 259; 
	public const int eleDarkness = 913; 

	public const int weaving = 260; 
	public const int cooking = 287; 

	public const int handicraft = 261; 
	public const int farming = 286; 

	public const int lockpicking = 280; 
	public const int reading = 285; 
	public const int negotiation = 291; 

	public const int stealing = 281;

	public const int reading = 285; 
	public const int handicraft = 261; 

	public const int farming = 286; 
	public const int weaving = 260; 

	public const int cooking = 287; 
	public const int jewelry = 259; 

	public const int eleDarkness = 913; 
	public const int sculpture = 258; 

	public const int appraising = 289; 
	public const int alchemy = 257; 

	public const int anatomy = 290; 
	public const int blacksmith = 256; 

	public const int negotiation = 291; 
	public const int lockpicking = 280; 

	public const int investing = 292;

public class SKILL

cs

	public const int meditation = 301;

	public static readonly int[] IDS = new int[133] 
	public static readonly int[] IDS = new int[134] 
	{
		134, 133, 132, 131, 130, 123, 108, 120, 111, 110, 
		109, 135, 107, 122, 150, 226, 152, 200, 207, 210, 
		220, 225, 227, 230, 235, 237, 240, 241, 242, 106, 
		151, 105, 72, 103, 50, 51, 55, 56, 57, 60, 
		61, 64, 65, 66, 67, 68, 70, 71, 104, 245, 
		133, 132, 131, 130, 123, 122, 106, 111, 110, 109, 
		108, 107, 134, 120, 135, 225, 151, 152, 200, 207, 
		210, 220, 226, 227, 230, 235, 237, 240, 241, 105, 
		150, 104, 73, 102, 50, 51, 55, 56, 57, 60, 
		61, 64, 65, 66, 67, 68, 70, 71, 103, 72, 
		74, 75, 76, 77, 78, 79, 80, 90, 91, 92,
		93, 100, 101, 102, 73, 250, 62, 256, 916, 917, 
		918, 920, 921, 922, 923, 924, 925, 926, 950, 951, 
		93, 94, 100, 101, 242, 245, 62, 255, 916, 917, 
		919, 920, 921, 922, 923, 924, 925, 926, 950, 951, 
		952, 953, 915, 954, 956, 957, 958, 959, 960, 961,
		972, 962, 963, 964, 965, 970, 971, 255, 955, 914, 
		919, 912, 257, 258, 259, 260, 261, 280, 281, 285, 
		286, 287, 913, 289, 290, 291, 292, 288, 300, 911, 
		910, 293, 312, 311, 310, 313, 306, 305, 304, 303, 
		302, 307, 301
		972, 962, 963, 964, 965, 970, 971, 250, 955, 914, 
		918, 912, 290, 289, 913, 287, 286, 285, 291, 281, 
		261, 260, 259, 258, 257, 256, 280, 292, 288, 300, 
		911, 910, 293, 312, 311, 310, 313, 306, 305, 304, 
		303, 302, 307, 301
	};
}
public class Skill : Element

SLOT

public class SLOT

cs

	public const int neck = 31;

	public const int range = 41; 
	public const int head = 30; 

	public const int finger = 36;

	public const int token = 43; 
	public const int range = 41; 

	public const int head = 30; 
	public const int token = 43; 

	public const int ammo = 42;

	public static readonly int[] IDS = new int[16]
	{
		44, 32, 39, 45, 34, 38, 37, 35, 40, 33,
		31, 41, 36, 43, 30, 42
		31, 30, 36, 41, 43, 42
	};
}

SPELL

public class SPELL

cs

	public const int ball_Sound = 50107;

	public const int ball_Chaos = 50110; 
	public const int bolt_Sound = 50307;

	public const int ball_Chaos = 50110; 
	public const int hand_Sound = 50407;

	public const int arrow_Sound = 50507;

public class SPELL

cs
	50704, 50609, 50709, 50809, 50909, 51009, 51109, 51209, 51208, 51107,
	51007, 50907, 50805, 50905, 51005, 51105, 51205, 50106, 50505, 50306,
	50406, 50405, 50506, 50606, 50706, 50806, 50906, 50305, 51006, 51106,
	51206, 50107, 50110, 50307, 50407, 50507, 50607, 50707, 50105, 50807, 
	51206, 50107, 50307, 50110, 50407, 50507, 50607, 50707, 50105, 50807, 
	51204, 50605, 50705, 51212, 50410, 50115, 51214, 51114, 51014, 50914,
	50814, 50315, 50714, 50514, 50414, 50314, 50114, 51213, 51113, 50614,
	50415, 50515, 50615, 50604, 50916, 50816, 50716, 50616, 50516, 50416,

Thing

public override void WriteNote(UINote n, Action<UINote> onWriteNote = null, IIns

cs
				int num3 = e.Value;
				if (e.source.IsWeaponEnc && (!e.source.tag.Contains("modRanged") || e.id == 609) && isEquipped && root.isChara)
				{
					num3 = num3 * (100 + AttackProcess.GetTwoHandEncBonus(root.Chara)) / 100; 
					int num4 = e.id; 
					if (num4 != 482 && (uint)(num4 - 660) > 2u && num4 != 666) 
					{ 
						num3 = num3 * (100 + AttackProcess.GetTwoHandEncBonus(root.Chara, this)) / 100; 
					} 
				}
				string text13 = " (" + e.Value + ((e.Value == num3) ? "" : (" → " + num3)) + ")";
				string text14 = "_bracketLeft3".lang() + e.Name + "_bracketRight3".lang();

WidgetStatsBar

public void Refresh()

cs
				text2 = text2 + " (" + ele.ValueWithoutLink + ")";
			}
			int num = ((EMono.pc.tempElements != null) ? EMono.pc.tempElements.Value(ele.id) : 0);
			foreach (Condition condition in EMono.pc.conditions) 
			{ 
				num += (condition.GetElementContainer()?.GetElement(ele.id)?.Value).GetValueOrDefault(); 
			} 
			if (ele.DisplayValue < ele.ValueWithoutLink || num < 0)
			{
				fontColor = FontColor.Bad;