Skip to content

EA 23.66 Hotfix 2

December 24, 2024

35 files modified. 2 new files created.

Important Changes

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

ConFreeze (1)

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

ConPoison (1)

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

ABILITY

@@ -4,8 +4,6 @@ public class ABILITY

cs
{
	public const int ActChat = 5044;

	public const int TaskBuild = 5035; 

	public const int TaskMoveInstalled = 5036;

	public const int ActNoItem = 5037;

@@ -32,11 +30,11 @@ public class ABILITY

cs

	public const int AI_OpenLock = 5049;

	public const int GoalIdle = 5034; 

	public const int AI_Sleep = 5050;

	public const int ActBash = 5052; 
	public const int TaskBuild = 5035; 

	public const int ActZap = 5051; 

	public const int TaskHarvest = 5053;

@@ -64,15 +62,15 @@ public class ABILITY

cs

	public const int ActPray = 6050;

	public const int ActZap = 5051; 

	public const int ActEscape = 6400;

	public const int ActCancelTask = 5033; 
	public const int ActBash = 5052; 

	public const int AI_Deconstruct = 5031; 
	public const int ActSuicide = 6410; 

	public const int ActMelee = 5001; 
	public const int GoalIdle = 5034; 

	public const int AI_Equip = 5032; 

	public const int Melee = 5002;

@@ -100,11 +98,11 @@ public class ABILITY

cs

	public const int TaskPlow = 5014;

	public const int AI_Equip = 5032; 

	public const int TaskAttack = 5015;

	public const int TaskTalk = 5017; 
	public const int ActCancelTask = 5033; 

	public const int TaskTame = 5016; 

	public const int TaskPick = 5018;

@@ -132,13 +130,15 @@ public class ABILITY

cs

	public const int AI_ReleaseHeld = 5030;

	public const int TaskTame = 5016; 
	public const int AI_Deconstruct = 5031; 

	public const int ActDuplicate = 6420; 
	public const int TaskTalk = 5017; 

	public const int ActSuicide = 6410; 
	public const int ActMelee = 5001; 

	public const int breathe_Darkness = 50203; 
	public const int ActDuplicate = 6420; 

	public const int ActCrabBreathe = 6500; 

	public const int ActLulwyTrick = 6902;

@@ -158,9 +158,9 @@ public class ABILITY

cs

	public const int breathe_Mind = 50204;

	public const int breathe_Poison = 50205; 
	public const int ActJureHeal = 6901; 

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

	public const int breathe_Sound = 50207;

@@ -178,19 +178,19 @@ public class ABILITY

cs

	public const int breathe_Cut = 50214;

	public const int ActJureHeal = 6901; 
	public const int ActWait = 5000; 

	public const int StManaCost = 6720; 
	public const int breathe_Nether = 50206; 

	public const int ActManaAbsorb = 6900;

	public const int ActGazeDim = 6620; 
	public const int breathe_Darkness = 50203; 

	public const int ActCurse = 6600; 
	public const int StManaCost = 6720; 

	public const int ActEntangle = 6601;

	public const int ActWait = 5000; 
	public const int ActCurse = 6600; 

	public const int ActDraw = 6602;

@@ -202,13 +202,11 @@ public class ABILITY

cs

	public const int ActTouchSleep = 6612;

	public const int StTaunt = 6700; 

	public const int ActGazeInsane = 6621;

	public const int ActGazeMutation = 6622;

	public const int ActDrainBlood = 6626; 
	public const int ActGazeDim = 6620; 

	public const int ActInsult = 6630;

@@ -226,22 +224,24 @@ public class ABILITY

cs

	public const int ActThrowPotion = 6661;

	public const int ActCrabBreathe = 6500; 
	public const int StTaunt = 6700; 

	public const int ActDrainBlood = 6626; 

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

ACT

@@ -359,7 +359,7 @@ bool DistCheck(Point p1, Point p2)

cs
					return false;
				}
			}
			else if (!Los.IsVisible(p1, p2)) 
			else if ((num != 1 || !CC.IsMultisize) && !Los.IsVisible(p1, p2)) 
			{
				return false;
			}

AI_Trolley

@@ -67,6 +67,10 @@ public override IEnumerable<Status> Run()

cs
		{
			yield return Stop();
		}
		if (owner.rarity >= Rarity.Legendary && owner.FindNearestNewEnemy()) 
		{ 
			yield return Stop(); 
		} 
		trolley.owner.dir = nextDir;
		Point point = GetPoint(dir);
		owner.SetDir(nextDir);

ActEffect

@@ -2266,7 +2266,7 @@ public static bool Wish(string s, string name, int power)

cs
				{
					num = 1;
				}
				if (r._origin == "artifact_summon") 
				if (thing.source._origin == "artifact_summon") 
				{
					num = 1;
				}

BaseCondition

@@ -108,6 +108,8 @@ public bool isPerfume

cs

	public virtual bool SyncRide => false;

	public virtual bool UseElements => base.source.elements.Length != 0; 

	public virtual int GainResistFactor => base.source.gainRes;

	public virtual int P2 => 0;

@@ -192,15 +194,22 @@ public virtual void SetOwner(Chara _owner, bool onDeserialize = false)

cs
		{
			owner.emoIcon = EmoIcon;
		}
		if (base.source.elements.Length != 0) 
		if (UseElements) 
		{
			elements = new ElementContainer();
			for (int i = 0; i < base.source.elements.Length; i += 2) 
			if (base.source.elements.Length != 0) 
			{
				elements.SetBase(GetElementSource(i).id, base.source.elements[i + 1].Calc(power, 0, P2)); 
				for (int i = 0; i < base.source.elements.Length; i += 2) 
				{ 
					elements.SetBase(GetElementSource(i).id, base.source.elements[i + 1].Calc(power, 0, P2)); 
				} 
			}
			elements.SetParent(owner);
		}
		if (onDeserialize) 
		{ 
			OnChangePhase(phase, phase); 
		} 
	}

	public SourceElement.Row GetElementSource(int i)

CINT

@@ -136,6 +136,8 @@ public class CINT

cs

	public const int isStolenFromPC = 116;

	public const int godEaten = 117; 

	public const int isTrained = 120;

	public const int isPrayed = 121;

Card

@@ -4465,7 +4465,16 @@ public void SpawnLoot(Card origin)

cs
		}
		if (!isBackerContent && !flag)
		{
			int num2 = 1; 
			int num2 = ((this.rarity >= Rarity.Legendary) ? 1 : 0); 
			if (EClass.rnd(20) == 0) 
			{ 
				num2++; 
			} 
			string text2 = id; 
			if (text2 == "big_daddy" || text2 == "santa") 
			{ 
				num2++; 
			} 
			List<Thing> list2 = new List<Thing>();
			foreach (Thing thing4 in things)
			{

@@ -4473,7 +4482,7 @@ public void SpawnLoot(Card origin)

cs
				{
					continue;
				}
				if (thing4.isGifted || thing4.rarity >= Rarity.Artifact) 
				if (thing4.isGifted || thing4.rarity >= Rarity.Artifact || thing4.trait.DropChance > EClass.rndf(1f)) 
				{
					list.Add(thing4);
				}

@@ -4483,7 +4492,7 @@ public void SpawnLoot(Card origin)

cs
					{
						list2.Add(thing4);
					}
					else if (EClass.rnd(200) == 0) 
					else if (EClass.rnd(150) == 0) 
					{
						list.Add(thing4);
					}

@@ -4501,65 +4510,43 @@ public void SpawnLoot(Card origin)

cs
					list.Add(list2[j]);
				}
			}
		} 
		if (!isBackerContent && id != "big_sister") 
		{ 
			foreach (Thing thing5 in things) 
			if (this.rarity >= Rarity.Legendary && !IsUnique && c_bossType != BossType.Evolved) 
			{
				if (thing5.HasTag(CTAG.gift) || thing5.trait is TraitChestMerchant) 
				{ 
					continue; 
				} 
				if (thing5.isGifted || thing5.rarity >= Rarity.Legendary || thing5.trait.DropChance > EClass.rndf(1f)) 
				int num3 = 0; 
				foreach (Card item3 in list) 
				{
					list.Add(thing5); 
				} 
				else if (thing5.IsEquipmentOrRanged) 
				{ 
					if (EClass.rnd(200) == 0) 
					if (item3.rarity >= Rarity.Legendary || item3.IsContainer) 
					{
						list.Add(thing5); 
						num3++; 
					}
				}
				else if (EClass.rnd(5) == 0) 
				if (num3 == 0) 
				{
					list.Add(thing5); 
					Rand.SetSeed(uid); 
					if (EClass.rnd((EClass._zone.events.GetEvent<ZoneEventDefenseGame>() != null) ? 3 : 2) == 0) 
					{ 
						Rarity rarity = ((EClass.rnd(20) == 0) ? Rarity.Mythical : Rarity.Legendary); 
						CardBlueprint.Set(new CardBlueprint
						{ 
							rarity = rarity 
						}); 
						Thing item = ThingGen.CreateFromFilter("eq", LV); 
						list.Add(item); 
					} 
					else if (EClass.rnd(3) == 0) 
					{ 
						list.Add(ThingGen.Create("medal")); 
					} 
					Rand.SetSeed(); 
				}
			}
		}
		int num3 = 0; 
		foreach (Card item3 in list) 
		{ 
			if (item3.rarity >= Rarity.Legendary || item3.IsContainer) 
			{ 
				num3++; 
			} 
		} 
		Rand.SetSeed(uid); 
		if (num3 == 0 && !isBackerContent && !flag && this.rarity >= Rarity.Legendary && !IsUnique && c_bossType != BossType.Evolved) 
		{ 
			if (EClass.rnd((EClass._zone.events.GetEvent<ZoneEventDefenseGame>() != null) ? 3 : 2) == 0) 
			{ 
				Rarity rarity = ((EClass.rnd(20) == 0) ? Rarity.Mythical : Rarity.Legendary); 
				CardBlueprint.Set(new CardBlueprint
				{ 
					rarity = rarity 
				}); 
				Thing item = ThingGen.CreateFromFilter("eq", LV); 
				list.Add(item); 
			} 
			else if (EClass.rnd(3) == 0) 
			{ 
				list.Add(ThingGen.Create("medal")); 
			} 
		} 
		Rand.SetSeed(); 
	}
	foreach (Thing thing6 in things) 
	foreach (Thing thing5 in things) 
	{
		if (thing6.GetInt(116) != 0) 
		if (thing5.GetInt(116) != 0) 
		{
			list.Add(thing6); 
			list.Add(thing5); 
		}
	}
	Point nearestPoint = GetRootCard().pos;

@@ -4569,6 +4556,10 @@ public void SpawnLoot(Card origin)

cs
	}
	foreach (Card item4 in list)
	{
		if (item4.parent == EClass._zone) 
		{ 
			continue; 
		} 
		item4.isHidden = false;
		item4.SetInt(116);
		EClass._zone.AddCard(item4, nearestPoint);

Chara

@@ -2128,37 +2128,40 @@ public bool CanInteractTo(Point p)

cs
	{
		return true;
	}
	int num = ((p.z >= pos.z) ? ((p.x > pos.x) ? 1 : ((p.z > pos.z) ? 2 : 3)) : 0); 
	if (EClass._map.cells[pos.x, pos.z].weights[num] == 0) 
	{ 
		return false; 
	} 
	if (p.x != pos.x && p.z != pos.z) 
	if (!IsMultisize) 
	{
		Cell[,] cells = EClass._map.cells; 
		int x = p.x; 
		int z = pos.z; 
		int num2 = ((z >= pos.z) ? ((x > pos.x) ? 1 : ((z > pos.z) ? 2 : 3)) : 0); 
		if (cells[pos.x, pos.z].weights[num2] == 0) 
		{ 
			return false; 
		} 
		num2 = ((z >= p.z) ? ((x > p.x) ? 1 : ((z > p.z) ? 2 : 3)) : 0); 
		if (cells[p.x, p.z].weights[num2] == 0) 
		{ 
			return false; 
		} 
		x = pos.x; 
		z = p.z; 
		num2 = ((z >= pos.z) ? ((x > pos.x) ? 1 : ((z > pos.z) ? 2 : 3)) : 0); 
		if (cells[pos.x, pos.z].weights[num2] == 0) 
		int num = ((p.z >= pos.z) ? ((p.x > pos.x) ? 1 : ((p.z > pos.z) ? 2 : 3)) : 0); 
		if (EClass._map.cells[pos.x, pos.z].weights[num] == 0) 
		{
			return false;
		}
		num2 = ((z >= p.z) ? ((x > p.x) ? 1 : ((z > p.z) ? 2 : 3)) : 0); 
		if (cells[p.x, p.z].weights[num2] == 0) 
		if (p.x != pos.x && p.z != pos.z) 
		{
			return false; 
			Cell[,] cells = EClass._map.cells; 
			int x = p.x; 
			int z = pos.z; 
			int num2 = ((z >= pos.z) ? ((x > pos.x) ? 1 : ((z > pos.z) ? 2 : 3)) : 0); 
			if (cells[pos.x, pos.z].weights[num2] == 0) 
			{ 
				return false; 
			} 
			num2 = ((z >= p.z) ? ((x > p.x) ? 1 : ((z > p.z) ? 2 : 3)) : 0); 
			if (cells[p.x, p.z].weights[num2] == 0) 
			{ 
				return false; 
			} 
			x = pos.x; 
			z = p.z; 
			num2 = ((z >= pos.z) ? ((x > pos.x) ? 1 : ((z > pos.z) ? 2 : 3)) : 0); 
			if (cells[pos.x, pos.z].weights[num2] == 0) 
			{ 
				return false; 
			} 
			num2 = ((z >= p.z) ? ((x > p.x) ? 1 : ((z > p.z) ? 2 : 3)) : 0); 
			if (cells[p.x, p.z].weights[num2] == 0) 
			{ 
				return false; 
			} 
		}
	}
	return true;

@@ -2218,9 +2221,14 @@ public MoveResult TryMoveTowards(Point p)

cs
	bool flag = true;
	Point point = null;
	_sharedPos.Set(p);
	if (CanDestroyPath() && TryMove(pos.GetPointTowards(_sharedPos)) == MoveResult.Success) 
	if (CanDestroyPath()) 
	{
		return MoveResult.Success; 
		if (TryMove(pos.GetPointTowards(_sharedPos)) == MoveResult.Success) 
		{ 
			return MoveResult.Success; 
		} 
		Debug.Log(CanMoveTo(pos)); 
		Debug.Log(pos.GetPointTowards(_sharedPos)); 
	}
	int num = pos.Distance(p);
	PathProgress pathProgress = PathManager.Instance.RequestPathImmediate(pos, p, this, PathManager.MoveType.Default, num + 4, 1);

@@ -2738,6 +2746,11 @@ public void DestroyPath(Point pos)

cs
				}
				broke = true;
			}
			if (_p.HasBridge) 
			{ 
				EClass._map.MineFloor(_p); 
				broke = true; 
			} 
			if (_p.HasObj && _p.IsBlocked)
			{
				EClass._map.MineObj(_p, null, this);

ConBuffStats

@@ -23,6 +23,8 @@ public override ConditionType Type

cs

	public override bool AllowMultipleInstance => true;

	public override bool UseElements => true; 

	public override int EvaluateTurn(int p)
	{
		if (base.refVal2 == 266)

@@ -87,7 +89,6 @@ public override bool CanStack(Condition c)

cs
public override void SetOwner(Chara _owner, bool onDeserialize = false)
{
	base.SetOwner(_owner);
	elements = new ElementContainer(); 
	elements.SetBase(base.refVal, CalcValue() * ((!isDebuff) ? 1 : (-1)));
	elements.SetParent(owner);
}

ConFreeze

@@ -1,11 +1,6 @@

cs
public class ConFreeze : Condition
{
	public override void SetOwner(Chara _owner, bool onDeserialize = false) 
	{ 
		base.SetOwner(_owner); 
		elements = new ElementContainer(); 
		elements.SetParent(owner); 
	} 
	public override bool UseElements => true; 

	public override void OnChangePhase(int lastPhase, int newPhase)
	{

ConPoison

@@ -2,14 +2,9 @@ public class ConPoison : BadCondition

cs
{
	public override Emo2 EmoIcon => Emo2.poison;

	public override bool PreventRegen => true; 
	public override bool UseElements => true; 

	public override void SetOwner(Chara _owner, bool onDeserialize = false) 
	{ 
		base.SetOwner(_owner); 
		elements = new ElementContainer(); 
		elements.SetParent(owner); 
	} 
	public override bool PreventRegen => true; 

	public override void OnChangePhase(int lastPhase, int newPhase)
	{

Core

@@ -746,9 +746,9 @@ public void ApplySkins()

cs
public static IniData GetElinIni()
{
	string pathIni = CorePath.PathIni;
	string ie = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
	try
	{
		string ie = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
		FileIniDataParser fileIniDataParser = new FileIniDataParser();
		if (!File.Exists(pathIni))
		{

@@ -771,6 +771,8 @@ public static IniData GetElinIni()

cs
	{
		Debug.Log(message);
		Debug.Log("exception: Failed to parse:" + pathIni);
		IO.DeleteFile(pathIni); 
		File.CreateText(pathIni).Close(); 
		return null;
	}
}

CoreDebug

@@ -905,6 +905,7 @@ public void UpdateInput()

cs
	}
	if (Input.GetKeyDown(KeyCode.F2))
	{
		EClass._zone.SpawnMob(EClass.pc.pos.GetNearestPoint(), SpawnSetting.Boss(EClass._zone.DangerLv)); 
		EClass.player.recipes.OnSleep();
		return;
	}

DOMAIN

@@ -2,42 +2,42 @@

cs

public class DOMAIN
{
	public const int domMiracle = 803; 

	public const int domFaith = 802; 
	public const int domArcane = 804; 

	public const int domTest = 800;

	public const int domArcane = 804; 

	public const int domSurvival = 801;

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

	public const int domEyth = 814; 
	public const int domMiracle = 803; 

	public const int domWind = 807; 
	public const int domComm = 805; 

	public const int domEarth = 812;

	public const int domElement = 806; 
	public const int domWind = 807; 

	public const int domOblivion = 813; 
	public const int domHarvest = 808; 

	public const int domHarmony = 815; 
	public const int domMachine = 809; 

	public const int domLuck = 810;

	public const int domMachine = 809; 
	public const int domHealing = 811; 

	public const int domHarvest = 808; 
	public const int domEyth = 814; 

	public const int domHealing = 811; 
	public const int domOblivion = 813; 

	public const int domElement = 806; 

	public const int domHarmony = 815; 

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

ELEMENT

@@ -5,10 +5,10 @@

cs

public class ELEMENT
{
	public const int justcooked = 757; 

	public const int hotspring = 756;

	public const int blood = 755; 

	public const int nerve = 754;

	public const int antidote = 753;

@@ -19,17 +19,15 @@ public class ELEMENT

cs

	public const int comfort = 750;

	public const int blood = 755; 

	public const int _void = 0;

	public const int socket = 5; 
	public const int d = 3; 

	public const int lv = 1;

	public const int quality = 2;

	public const int d = 3; 
	public const int socket = 5; 

	public const int nutrition = 10;

@@ -67,12 +65,11 @@ public class ELEMENT

cs

	public const int poison = 20;

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

ENC

@@ -1,28 +1,30 @@

cs
public class ENC
{
	public const int noDamage = 654; 

	public const int living = 653;

	public const int eco = 652;

	public const int r_PV = 651;

	public const int r_mana = 641; 

	public const int mod_drill = 606; 
	public const int r_DV = 650; 

	public const int mod_scatter = 607;

	public const int mod_precision = 605; 

	public const int mod_drill = 606; 

	public const int r_life = 640;

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

	public const int r_DV = 650; 
	public const int r_mana = 641; 

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

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

	public const int absorbHP = 660; 

	public const int absorbMP = 661;

@@ -36,21 +38,21 @@ public class ENC

cs

	public const int meleeDistance = 666;

	public const int convertCold = 851; 
	public const int convertLightning = 852; 

	public const int mod_precision = 605; 
	public const int mod_ammo_recover = 604; 

	public const int convertImpact = 865;

	public const int convertLightning = 852; 
	public const int convertFire = 850; 

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

	public const int mod_ammo_recover = 604; 
	public const int mod_ammo_knockback = 603; 

	public const int sustain_CHA = 447;

	public const int mod_rapid = 602; 
	public const int mod_reload = 601; 

	public const int breathing = 429;

@@ -62,10 +64,10 @@ public class ENC

cs

	public const int negateConfusion = 425;

	public const int negateSleep = 424; 

	public const int negateFear = 423;

	public const int negateParalysis = 422; 

	public const int negateBlind = 421;

	public const int negatePoison = 420;

@@ -104,24 +106,20 @@ public class ENC

cs

	public const int sustain_END = 441;

	public const int negateParalysis = 422; 

	public const int force_weapon = 482; 
	public const int negateSleep = 424; 

	public const int mod_reload = 601; 
	public const int bane_all = 468; 

	public const int mod_ammo = 600;

	public const int optimizeMana = 483;

	public const int sustain_DEX = 442; 
	public const int force_weapon = 482; 

	public const int revealFaith = 481;

	public const int strongStomach = 480;

	public const int bane_all = 468; 

	public const int bane_fish = 467;

	public const int bane_god = 466;

@@ -134,11 +132,11 @@ public class ENC

cs

	public const int bane_fairy = 462;

	public const int mod_ammo_knockback = 603; 
	public const int bane_undead = 461; 

	public const int bane_dragon = 460;

	public const int bane_undead = 461; 
	public const int mod_rapid = 602; 

	public const int sustain_MAG = 446;

@@ -148,15 +146,17 @@ public class ENC

cs

	public const int sustain_PER = 443;

	public const int sustain_DEX = 442; 

	public static readonly int[] IDS = new int[74]
	{
		654, 653, 652, 651, 641, 606, 607, 640, 655, 650, 
		656, 850, 661, 662, 663, 664, 665, 666, 851, 605, 
		865, 852, 660, 604, 447, 602, 429, 428, 427, 426, 
		425, 424, 423, 421, 420, 416, 415, 440, 412, 410, 
		409, 408, 407, 406, 405, 404, 403, 402, 401, 400, 
		411, 441, 422, 482, 601, 600, 483, 442, 481, 480, 
		468, 467, 466, 465, 464, 463, 462, 603, 460, 461, 
		446, 445, 444, 443
		653, 652, 651, 650, 607, 605, 606, 640, 654, 641, 
		655, 851, 660, 661, 662, 663, 664, 665, 666, 852, 
		604, 865, 850, 656, 603, 447, 601, 429, 428, 427, 
		426, 425, 423, 422, 421, 420, 416, 415, 440, 412, 
		410, 409, 408, 407, 406, 405, 404, 403, 402, 401, 
		400, 411, 441, 424, 468, 600, 483, 482, 481, 480, 
		467, 466, 465, 464, 463, 462, 461, 460, 602, 446, 
		445, 444, 443, 442
	};
}

ElementContainer

@@ -277,7 +277,7 @@ public void ModExp(int ele, int a, bool chain = false)

cs
		return;
	}
	int value = (element.UsePotential ? element.Potential : 100);
	if (element.UseExpMod) 
	if (element.UseExpMod && a >= 0) 
	{
		a = a * Mathf.Clamp(value, 10, 1000) / (100 + Mathf.Max(0, element.ValueWithoutLink) * 25);
		if (a >= 0 && EClass.rnd(element.ValueWithoutLink + 1) < 10)

FACTION

@@ -4,27 +4,25 @@

cs

public class FACTION
{
	public const int bfCave = 3500; 

	public const int bfPlain = 3600; 

	public const int bfForest = 3601; 
	public const int bfGeyser = 3701; 

	public const int bfSnow = 3602; 
	public const int bfFertile = 3700; 

	public const int bfSea = 3605;

	public const int bfBeach = 3604;

	public const int fRation = 2207; 
	public const int bfHill = 3603; 

	public const int bfFertile = 3700; 
	public const int bfSnow = 3602; 

	public const int bfGeyser = 3701; 
	public const int bfForest = 3601; 

	public const int bfRuin = 3702; 
	public const int bfPlain = 3600; 

	public const int bfHill = 3603; 
	public const int bfCave = 3500; 

	public const int fRation = 2207; 

	public const int fAttraction = 2206;

@@ -32,13 +30,9 @@ public class FACTION

cs

	public const int fFood = 2204;

	public const int fPromo = 2202; 

	public const int fElec = 2201; 

	public const int fSoil = 2200; 
	public const int fConstruction = 2003; 

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

	public const int fLuck = 2118;

@@ -48,20 +42,24 @@ public class FACTION

cs

	public const int fAdmin = 2115;

	public const int bfTranquil = 3703; 
	public const int fHeirloom = 2120; 

	public const int fConstruction = 2003; 
	public const int fSoil = 2200; 

	public const int fSafety = 2205; 
	public const int fElec = 2201; 

	public const int fHeirloom = 2120; 
	public const int bfRuin = 3702; 

	public const int bfVolcano = 3704; 
	public const int fSafety = 2205; 

	public const int bfFish = 3706; 
	public const int fTaxEvasion = 2119; 

	public const int bfTranquil = 3703; 

	public const int bfHunt = 3705;

	public const int bfVolcano = 3704; 

	public const int actBuildRecipe = 4005;

	public const int actBuildCollect = 4004;

@@ -82,40 +80,42 @@ public class FACTION

cs

	public const int bfGum = 3803;

	public const int actBuildInspect = 4006; 
	public const int bfSilica = 3802; 

	public const int bfMushroom = 3801; 
	public const int actBuildInspect = 4006; 

	public const int bfCoal = 3800;

	public const int bfLandmark5 = 3784; 

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

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

	public const int bfLandmark2 = 3781; 
	public const int bfFreshAir = 3708; 

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

	public const int bfBreed = 3710;

	public const int bfBasin = 3709; 
	public const int bfFish = 3706; 

	public const int bfFreshAir = 3708; 
	public const int bfLandmark2 = 3781; 

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

	public const int bfSilica = 3802; 
	public const int bfLandmark4 = 3783; 

	public const int bfLandmark5 = 3784; 

	public const int bfLandmark1 = 3780; 

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

FEAT

@@ -3,27 +3,27 @@

cs

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

	public const int featDEX = 1621; 
	public const int featCHA = 1627; 

	public const int featEND = 1622; 
	public const int featWIL = 1626; 

	public const int featLuck = 1628; 
	public const int featMAG = 1625; 

	public const int featLER = 1624;

	public const int featMAG = 1625; 
	public const int featPER = 1623; 

	public const int featWIL = 1626; 
	public const int featEND = 1622; 

	public const int featCHA = 1627; 
	public const int featDEX = 1621; 

	public const int featPER = 1623; 
	public const int featSTR = 1620; 

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

	public const int featMilitant = 1419; 
	public const int featSwordsage = 1418; 

	public const int featLife = 1610;

@@ -31,7 +31,7 @@ public class FEAT

cs

	public const int featExecutioner = 1420;

	public const int featSwordsage = 1418; 
	public const int featMilitant = 1419; 

	public const int featWitch = 1417;

@@ -43,6 +43,8 @@ public class FEAT

cs

	public const int featFairysan = 1413;

	public const int featLuckyCat = 1412; 

	public const int featSPD = 1629;

	public const int featMana = 1611;

@@ -53,7 +55,7 @@ public class FEAT

cs

	public const int featEvade = 1632;

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

	public const int featChef = 1658;

@@ -99,11 +101,11 @@ public class FEAT

cs

	public const int featSummoner = 1647;

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

	public const int featHeavyCasting = 1654;

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

	public const int featShiva = 1224;

@@ -121,11 +123,11 @@ public class FEAT

cs

	public const int featNirvana = 1231;

	public const int featBaby = 1232; 
	public const int featCosmicHorror = 1233; 

	public const int featHeavyEater = 1234; 
	public const int featAcidBody = 1223; 

	public const int featLightEater = 1235; 
	public const int featHeavyEater = 1234; 

	public const int featNorland = 1236;

@@ -145,17 +147,15 @@ public class FEAT

cs

	public const int featGod_luck1 = 1330;

	public const int featGod_harmony1 = 1335; 

	public const int featAcidBody = 1223; 

	public const int featGod_oblivion1 = 1340; 
	public const int featLightEater = 1235; 

	public const int featSplit = 1222;

	public const int featSpike = 1221; 

	public const int featFate = 1220;

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

	public const int featSlowFood = 1200;

@@ -197,16 +197,16 @@ public class FEAT

cs

	public const int featElderCrab = 1219;

	public const int featSpike = 1221; 

	public const int featGod_trickery1 = 1345; 
	public const int featGod_harmony1 = 1335; 

	public const int featCosmicHorror = 1233; 
	public const int featGod_oblivion1 = 1340; 

	public const int featWizard = 1402; 
	public const int featBaby = 1232; 

	public const int featGod_moonshadow1 = 1350;

	public const int featGod_trickery1 = 1345; 

	public const int featGod_strife1 = 1355;

	public const int featWarrior = 1400;

@@ -217,27 +217,27 @@ public class FEAT

cs

	public const int featArcher = 1404;

	public const int featTourist = 1406; 

	public const int featPianist = 1405;

	public const int featPaladin2 = 1408; 
	public const int featTourist = 1406; 

	public const int featWizard = 1402; 

	public const int featPaladin = 1407;

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

FOOD

@@ -1,18 +1,22 @@

cs
public class FOOD
{
	public const int food_CHA = 700; 

	public const int food_cat = 701;

	public const int food_CHA = 700; 
	public const int food_god = 758; 

	public const int justcooked = 757; 

	public const int food_poison = 702;

	public const int food_love = 703; 
	public const int gainWeight = 705; 

	public const int food_bug = 704;

	public const int gainWeight = 705; 
	public const int food_love = 703; 

	public const int loseWeight = 706;

	public static readonly int[] IDS = new int[7] { 701, 700, 702, 703, 704, 705, 706 }; 
	public static readonly int[] IDS = new int[9] { 700, 701, 758, 757, 702, 705, 704, 703, 706 }; 
}

FactionBranch

@@ -811,6 +811,10 @@ void GetOutcome(Hobby h)

cs
						Thing thing3 = ((!text.StartsWith("#")) ? ThingGen.Create(h.source.things[j], -1, num4) : ThingGen.CreateFromCategory(text.Replace("#", ""), num4));
						if (thing3 != null)
						{
							if (!thing3.trait.CanStack) 
							{ 
								num6 = 1; 
							} 
							thing3.SetNum(thing3.trait.CraftNum * num6);
							thing3.SetBlessedState(BlessedState.Normal);
							thing3.TryMakeRandomItem(num4);

FoodEffect

@@ -223,6 +223,25 @@ public static void Proc(Chara c, Thing food)

cs
			}
			switch (foodEffect[0])
			{
			case "god": 
			{ 
				int int2 = c.GetInt(117); 
				if (int2 < 10) 
				{ 
					foreach (Element value2 in c.elements.dict.Values) 
					{ 
						if (value2.IsMainAttribute) 
						{ 
							c.elements.ModPotential(value2.id, 2); 
						} 
					} 
				} 
				c.Say("little_eat", c); 
				c.PlaySound("ding_potential"); 
				c.elements.ModExp(306, -1000); 
				c.SetInt(117, int2 + 1); 
				break; 
			} 
			case "exp":
			{
				id = ((foodEffect.Length > 1) ? EClass.sources.elements.alias[foodEffect[1]].id : value.id);

@@ -272,11 +291,11 @@ public static void Proc(Chara c, Thing food)

cs
				c.PlaySound("ding_potential");
				int v = Mathf.Max(5 - @int / 2, 1);
				Debug.Log("sister eaten:" + @int + "/" + v);
				foreach (Element value2 in c.elements.dict.Values) 
				foreach (Element value3 in c.elements.dict.Values) 
				{
					if (value2.IsMainAttribute) 
					if (value3.IsMainAttribute) 
					{
						c.elements.ModPotential(value2.id, v); 
						c.elements.ModPotential(value3.id, v); 
					}
				}
				if (c.race.id == "mutant" && c.elements.Base(1230) < 10)

FortuneRollData

@@ -71,6 +71,10 @@ public void AddNote(UINote n)

cs
		{
			if (text3 == "mathammer")
			{
				if (idRef.IsEmpty()) 
				{ 
					idRef = "iron"; 
				} 
				text2 = "_of".lang(EClass.sources.materials.alias[idRef].GetName(), text2);
			}
		}

@@ -220,6 +224,10 @@ public void GetPrize(int grade, int seed)

cs
				break;
			case "goods_coin":
				EClass.player.luckycoin++;
				if (EClass.player.luckycoin >= 10) 
				{ 
					prize.claimed = true; 
				} 
				break;
			case "mathammer":
				card.ChangeMaterial(prize.idRef);

GoalCombat

@@ -82,7 +82,7 @@ public override IEnumerable<Status> Run()

cs
		{
			tc = (owner.enemy = null);
		}
		if (tc != null && !tc.isDead && tc.ExistsOnMap && tc.pos.IsInBounds && lostCount < 5) 
		if (tc != null && !tc.isDead && tc.ExistsOnMap && tc.pos.IsInBounds && lostCount < (owner.IsPowerful ? 50 : 5)) 
		{
			lostCount = ((!owner.CanSeeLos(tc)) ? (lostCount + 1) : 0);
		}

@@ -830,6 +830,7 @@ int HealFactor(Chara c)

cs
			continue;
		}
		Chara chara = owner;
		Debug.Log(ability2.act.Name + ":" + ability2.act.CanPerform(owner, ability2.tg ?? tc)); 
		if (ability2.act.CanPerform(owner, ability2.tg ?? tc) && owner.UseAbility(ability2.act, ability2.tg ?? tc, null, (ability2.act.HaveLongPressAction && ability2.pt) || ability2.aiPt))
		{
			if (EClass.debug.logCombat)

@@ -845,7 +846,7 @@ int HealFactor(Chara c)

cs
		Debug.Log(owner.Name + "/" + abilities.Count);
		foreach (ItemAbility ability3 in abilities)
		{
			Debug.Log(ability3.act.Name); 
			Debug.Log(ability3.act.Name + "/" + ability3.priority); 
		}
	}
	return false;

LayerDragGrid

@@ -1,4 +1,3 @@

cs
using System; 
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

@@ -185,28 +184,21 @@ public LayerDragGrid SetInv(InvOwnerDraglet owner, bool refuelFromLayerDragGrid

cs
		uiIngredients.Refresh();
		RefreshCost();
	});
	try
	if (owner is InvOwnerRefuel) 
	{
		if (owner is InvOwnerRefuel) 
		if (refuelFromLayerDragGrid) 
		{
			if (refuelFromLayerDragGrid) 
			{ 
				info.SetActive(enable: false); 
			} 
			else
			{ 
				Debug.Log(owner.owner); 
				info.InitFuel(owner.owner); 
			} 
			info.SetActive(enable: false); 
		}
		else
		{
			info.Init(owner.owner); 
			Debug.Log(owner.owner); 
			info.InitFuel(owner.owner); 
		}
	}
	catch (Exception ex) 
	else 
	{
		Debug.LogError(ex.Message); 
		info.Init(owner.owner); 
	}
	return this;
}

MUTATION

@@ -1,36 +1,32 @@

cs
public class MUTATION
{
	public const int mutationRegenN = 1517; 

	public const int mutationRegen = 1516;

	public const int mutationDexN = 1515; 
	public const int etherManaBattery = 1564; 

	public const int etherPoisonHand = 1565; 
	public const int mutationSkin = 1510; 

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

	public const int mutationEye = 1512;

	public const int mutationSkinN = 1511; 

	public const int mutationSpeed = 1518; 
	public const int mutationEyeN = 1513; 

	public const int mutationDex = 1514;

	public const int mutationSpeedN = 1519; 
	public const int mutationDexN = 1515; 

	public const int mutationSkin = 1510; 
	public const int mutationRegenN = 1517; 

	public const int mutationStrN = 1521; 
	public const int etherPoisonHand = 1565; 

	public const int etherManaBattery = 1564; 
	public const int mutationSpeedN = 1519; 

	public const int etherProvoke = 1563;

	public const int mutationStr = 1520; 
	public const int etherArmor = 1562; 

	public const int etherStupid = 1561; 
	public const int mutationSpeed = 1518; 

	public const int etherWeak = 1560;

@@ -50,21 +46,25 @@ public class MUTATION

cs

	public const int etherFeet = 1552;

	public const int etherArmor = 1562; 

	public const int etherUgly = 1551;

	public const int etherStupid = 1561; 

	public const int mutationStrN = 1521; 

	public const int mutationStr = 1520; 

	public const int mutationCha = 1522;

	public const int mutationBrain = 1524; 
	public const int mutationChaN = 1523; 

	public const int mutationBrainN = 1525;

	public const int mutationCold = 1526;

	public const int mutationColdN = 1527; 
	public const int mutationBrain = 1524; 

	public const int mutationChaN = 1523; 
	public const int mutationLightning = 1528; 

	public const int mutationLightningN = 1529;

@@ -72,16 +72,16 @@ public class MUTATION

cs

	public const int mutationBodyN = 1531;

	public const int etherGravity = 1550; 
	public const int mutationColdN = 1527; 

	public const int mutationLightning = 1528; 
	public const int etherGravity = 1550; 

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

POLICY

@@ -3,27 +3,29 @@

cs

public class POLICY
{
	public const int store_ripoff = 2816; 
	public const int bed_quality = 2812; 

	public const int incomeTransfer = 2711; 
	public const int platinum_ticket = 2815; 

	public const int home_discount = 2800; 
	public const int mass_exhibition = 2814; 

	public const int open_business = 2810; 
	public const int suite_room = 2813; 

	public const int tourist_safety = 2811; 
	public const int noMother = 2710; 

	public const int bed_quality = 2812; 
	public const int open_business = 2810; 

	public const int suite_room = 2813; 
	public const int home_discount = 2800; 

	public const int mass_exhibition = 2814; 
	public const int incomeTransfer = 2711; 

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

	public const int tourist_safety = 2811; 

	public const int store_premium = 2817;

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

	public const int license_furniture = 2819;

@@ -33,9 +35,7 @@ public class POLICY

cs

	public const int celeb = 2822;

	public const int noMother = 2710; 

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

	public const int milk_fan = 2825;

@@ -53,11 +53,11 @@ public class POLICY

cs

	public const int auto_farm = 2707;

	public const int noDM = 2708; 
	public const int food_for_people = 2502; 

	public const int wealth_tax = 2500; 
	public const int faith_tax = 2501; 

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

	public const int prohibition = 2503;

@@ -71,43 +71,43 @@ public class POLICY

cs

	public const int vaccination = 2509;

	public const int ban_radio = 2510; 

	public const int self_sufficient = 2511;

	public const int faith_tax = 2501; 
	public const int resident_tax = 2512; 

	public const int resident_wanted = 2513; 
	public const int ban_radio = 2510; 

	public const int taxTransfer = 2705; 
	public const int taxfree = 2514; 

	public const int resident_tax = 2512; 
	public const int stop_growth = 2515; 

	public const int border_watch = 2704; 
	public const int speed_growth = 2516; 

	public const int demon_invocation = 2706; 
	public const int energy_conservation = 2700; 

	public const int trash_sort = 2701; 

	public const int trash_no = 2702;

	public const int weed_no = 2703;

	public const int energy_conservation = 2700; 
	public const int border_watch = 2704; 

	public const int speed_growth = 2516; 
	public const int taxTransfer = 2705; 

	public const int stop_growth = 2515; 
	public const int demon_invocation = 2706; 

	public const int taxfree = 2514; 
	public const int resident_wanted = 2513; 

	public const int trash_sort = 2701; 
	public const int noDM = 2708; 

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

Point

@@ -824,18 +824,7 @@ public List<Chara> ListWitnesses(Chara criminal, int radius = 4, WitnessType typ

cs
				}
				break;
			case WitnessType.crime:
				if (criminal == null || item2.isBlind || item2.isConfused || (criminal.IsPCParty && (item2.IsPCFaction || item2.IsPCFactionMinion))) 
				{ 
					continue; 
				} 
				if (target == null) 
				{ 
					if (item2.OriginalHostility < Hostility.Neutral) 
					{ 
						continue; 
					} 
				} 
				else if (!target.IsFriendOrAbove(item2)) 
				if (criminal == null || item2.isBlind || item2.isConfused || (criminal.IsPCParty && (item2.IsPCFaction || item2.IsPCFactionMinion)) || (target == null && item2.OriginalHostility < Hostility.Neutral)) 
				{
					continue;
				}

RecipeCard

@@ -319,7 +319,7 @@ public void MakeDish(Thing t)

cs
		if (EClass.pc.HasElement(1658))
		{
			t.elements.SetBase(757, 1);
			t.c_dateCooked = EClass.world.date.GetRaw(); 
			t.c_dateCooked = EClass.world.date.GetRaw() + (EClass.pc.Evalue(1658) - 1) * 24 * 60; 
		}
	}

SKILL

@@ -1,28 +1,26 @@

cs
public class SKILL
{
	public const int shield = 123; 

	public const int tactics = 132;

	public const int twowield = 131;

	public const int twohand = 130;

	public const int shield = 123; 

	public const int armorHeavy = 122; 
	public const int fireproof = 50; 

	public const int weaponCrossbow = 109; 
	public const int armorLight = 120; 

	public const int weaponBlunt = 111;

	public const int weaponScythe = 110;

	public const int fireproof = 50; 

	public const int acidproof = 51; 
	public const int weaponCrossbow = 109; 

	public const int marksman = 133;

	public const int armorLight = 120; 
	public const int armorHeavy = 122; 

	public const int eyeofmind = 134;

@@ -42,10 +40,12 @@ public class SKILL

cs

	public const int digging = 230;

	public const int strategy = 135; 
	public const int acidproof = 51; 

	public const int riding = 226;

	public const int lumberjack = 225; 

	public const int mining = 220;

	public const int spotting = 210;

@@ -58,20 +58,16 @@ public class SKILL

cs

	public const int evasionPlus = 151;

	public const int lumberjack = 225; 
	public const int strategy = 135; 

	public const int PDR = 55;

	public const int martial = 100; 
	public const int weaponAxe = 102; 

	public const int evasionPerfect = 57;

	public const int fishing = 245;

	public const int life = 60; 

	public const int mana = 61; 

	public const int vigor = 62;

	public const int DV = 64;

@@ -94,13 +90,13 @@ public class SKILL

cs

	public const int LER = 74;

	public const int EDR = 56; 

	public const int WIL = 75;

	public const int CHA = 77; 
	public const int MAG = 76; 

	public const int LUC = 78; 
	public const int EDR = 56; 

	public const int CHA = 77; 

	public const int SPD = 79;

@@ -112,9 +108,9 @@ public class SKILL

cs

	public const int penetration = 92;

	public const int weaponSword = 101; 
	public const int martial = 100; 

	public const int weaponAxe = 102; 
	public const int weaponSword = 101; 

	public const int weaponStaff = 103;

@@ -126,7 +122,11 @@ public class SKILL

cs

	public const int throwing = 108;

	public const int MAG = 76; 
	public const int mana = 61; 

	public const int life = 60; 

	public const int LUC = 78; 

	public const int gathering = 250;

@@ -140,6 +140,8 @@ public class SKILL

cs

	public const int eleNerve = 918;

	public const int eleHoly = 919; 

	public const int eleChaos = 920;

	public const int eleMagic = 921;

@@ -182,8 +184,6 @@ public class SKILL

cs

	public const int resCut = 964;

	public const int resImpact = 965; 

	public const int resDecay = 970;

	public const int resDamage = 971;

@@ -196,7 +196,7 @@ public class SKILL

cs

	public const int eleMind = 914;

	public const int eleHoly = 919; 
	public const int resImpact = 965; 

	public const int eleLightning = 912;

@@ -218,9 +218,9 @@ public class SKILL

cs

	public const int farming = 286;

	public const int eleDarkness = 913; 
	public const int cooking = 287; 

	public const int building = 288; 
	public const int eleDarkness = 913; 

	public const int appraising = 289;

@@ -230,15 +230,15 @@ public class SKILL

cs

	public const int investing = 292;

	public const int cooking = 287; 
	public const int building = 288; 

	public const int regeneration = 300;

	public const int eleCold = 911;

	public const int disarmTrap = 293; 
	public const int eleFire = 910; 

	public const int env = 313; 
	public const int disarmTrap = 293; 

	public const int fun = 312;

@@ -246,7 +246,7 @@ public class SKILL

cs

	public const int hygine = 310;

	public const int eleFire = 910; 
	public const int env = 313; 

	public const int faith = 306;

@@ -258,26 +258,26 @@ public class SKILL

cs

	public const int controlmana = 302;

	public const int memorization = 307; 

	public const int meditation = 301;

	public const int memorization = 307; 

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

SLOT

@@ -1,40 +1,40 @@

cs
public class SLOT
{
	public const int back = 33; 
	public const int waist = 37; 

	public const int arm = 34; 
	public const int neck = 31; 

	public const int hand = 35; 
	public const int token = 43; 

	public const int finger = 36; 
	public const int arm = 34; 

	public const int waist = 37; 
	public const int torso = 32; 

	public const int foot = 39; 
	public const int range = 41; 

	public const int toolbelt = 44;

	public const int token = 43; 
	public const int leg = 38; 

	public const int tool = 40; 
	public const int foot = 39; 

	public const int ammo = 42; 
	public const int tool = 40; 

	public const int torso = 32; 
	public const int lightsource = 45; 

	public const int leg = 38; 
	public const int back = 33; 

	public const int neck = 31; 
	public const int finger = 36; 

	public const int range = 41; 
	public const int ammo = 42; 

	public const int head = 30;

	public const int lightsource = 45; 
	public const int hand = 35; 

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

SPELL

@@ -1,23 +1,23 @@

cs
public class SPELL
{
	public const int hand_Acid = 50413; 

	public const int weapon_Poison = 50805; 
	public const int bolt_Nether = 50306; 

	public const int puddle_Poison = 50905; 
	public const int ball_Nerve = 50108; 

	public const int ball_Nether = 50106;

	public const int bolt_Cut = 50314; 

	public const int bolt_Nether = 50306; 

	public const int hand_Nether = 50406;

	public const int arrow_Nether = 50506;

	public const int funnel_Nether = 50606;

	public const int puddle_Sound = 50907; 

	public const int miasma_Sound = 50707; 

	public const int hand_Sound = 50407; 

	public const int miasma_Nether = 50706;

	public const int weapon_Nether = 50806;

@@ -26,25 +26,19 @@ public class SPELL

cs

	public const int ball_Sound = 50107;

	public const int ball_Cut = 50114; 

	public const int bolt_Sound = 50307; 

	public const int hand_Sound = 50407; 
	public const int funnel_Sound = 50607; 

	public const int arrow_Sound = 50507;

	public const int funnel_Sound = 50607; 

	public const int miasma_Sound = 50707; 
	public const int weapon_Sound = 50807; 

	public const int miasma_Poison = 50705; 
	public const int bolt_Sound = 50307; 

	public const int hand_Cut = 50414; 
	public const int hand_Mind = 50404; 

	public const int funnel_Poison = 50605; 
	public const int weapon_Poison = 50805; 

	public const int arrow_Poison = 50505; 
	public const int bolt_Darkness = 50303; 

	public const int hand_Darkness = 50403;

@@ -56,97 +50,93 @@ public class SPELL

cs

	public const int weapon_Darkness = 50803;

	public const int miasma_Cut = 50714; 

	public const int puddle_Darkness = 50903;

	public const int ball_Mind = 50104;

	public const int bolt_Mind = 50304;

	public const int weapon_Sound = 50807; 

	public const int hand_Mind = 50404; 
	public const int puddle_Poison = 50905; 

	public const int funnel_Mind = 50604; 
	public const int arrow_Mind = 50504; 

	public const int miasma_Mind = 50704;

	public const int funnel_Cut = 50614; 

	public const int weapon_Mind = 50804;

	public const int puddle_Mind = 50904;

	public const int ball_Poison = 50105;

	public const int arrow_Cut = 50514; 

	public const int bolt_Poison = 50305;

	public const int hand_Poison = 50405;

	public const int arrow_Mind = 50504; 
	public const int arrow_Poison = 50505; 

	public const int bolt_Acid = 50313; 
	public const int funnel_Poison = 50605; 

	public const int puddle_Sound = 50907; 
	public const int miasma_Poison = 50705; 

	public const int puddle_Acid = 50913; 
	public const int funnel_Mind = 50604; 

	public const int puddle_Chaos = 50910; 
	public const int bolt_Nerve = 50308; 

	public const int ball_Magic = 50111; 
	public const int bolt_Ether = 50312; 

	public const int funnel_Acid = 50613; 
	public const int arrow_Nerve = 50508; 

	public const int bolt_Magic = 50311; 
	public const int puddle_Magic = 50911; 

	public const int hand_Magic = 50411; 
	public const int ball_Ether = 50112; 

	public const int arrow_Magic = 50511; 
	public const int hand_Ether = 50412; 

	public const int funnel_Magic = 50611; 
	public const int arrow_Ether = 50512; 

	public const int miasma_Magic = 50711; 
	public const int funnel_Ether = 50612; 

	public const int weapon_Magic = 50811; 
	public const int miasma_Ether = 50712; 

	public const int weapon_Chaos = 50810; 
	public const int weapon_Ether = 50812; 

	public const int puddle_Magic = 50911; 
	public const int puddle_Ether = 50912; 

	public const int arrow_Acid = 50513; 
	public const int ball_Acid = 50113; 

	public const int bolt_Ether = 50312; 
	public const int bolt_Acid = 50313; 

	public const int bolt_Darkness = 50303; 
	public const int weapon_Magic = 50811; 

	public const int arrow_Ether = 50512; 
	public const int hand_Acid = 50413; 

	public const int funnel_Ether = 50612; 
	public const int funnel_Acid = 50613; 

	public const int miasma_Ether = 50712; 
	public const int miasma_Acid = 50713; 

	public const int weapon_Ether = 50812; 
	public const int weapon_Acid = 50813; 

	public const int puddle_Ether = 50912; 
	public const int puddle_Acid = 50913; 

	public const int ball_Acid = 50113; 
	public const int ball_Cut = 50114; 

	public const int ball_Ether = 50112; 
	public const int bolt_Cut = 50314; 

	public const int ball_Nerve = 50108; 
	public const int hand_Cut = 50414; 

	public const int miasma_Chaos = 50710; 
	public const int arrow_Cut = 50514; 

	public const int arrow_Chaos = 50510; 
	public const int funnel_Cut = 50614; 

	public const int bolt_Nerve = 50308; 
	public const int miasma_Cut = 50714; 

	public const int hand_Nerve = 50408; 
	public const int arrow_Acid = 50513; 

	public const int arrow_Nerve = 50508; 
	public const int miasma_Magic = 50711; 

	public const int funnel_Magic = 50611; 

	public const int arrow_Magic = 50511; 

	public const int funnel_Nerve = 50608;

@@ -158,12 +148,10 @@ public class SPELL

cs

	public const int ball_Holy = 50109;

	public const int weapon_Acid = 50813; 

	public const int funnel_Chaos = 50610; 

	public const int bolt_Holy = 50309;

	public const int hand_Holy = 50409; 

	public const int arrow_Holy = 50509;

	public const int funnel_Holy = 50609;

@@ -176,19 +164,33 @@ public class SPELL

cs

	public const int ball_Chaos = 50110;

	public const int miasma_Acid = 50713; 

	public const int bolt_Chaos = 50310;

	public const int hand_Chaos = 50410;

	public const int hand_Holy = 50409; 
	public const int arrow_Chaos = 50510; 

	public const int hand_Ether = 50412; 
	public const int funnel_Chaos = 50610; 

	public const int miasma_Chaos = 50710; 

	public const int weapon_Chaos = 50810; 

	public const int puddle_Chaos = 50910; 

	public const int ball_Magic = 50111; 

	public const int bolt_Magic = 50311; 

	public const int hand_Magic = 50411; 

	public const int hand_Nerve = 50408; 

	public const int ball_Darkness = 50103; 

	public const int SpEarthquake = 9151;

	public const int puddle_Lightning = 50902; 
	public const int weapon_Lightning = 50802; 

	public const int SpReconstruction = 8288;

@@ -292,12 +294,14 @@ public class SPELL

cs

	public const int SpChangeMaterialLesser = 8284;

	public const int ball_Darkness = 50103; 
	public const int puddle_Lightning = 50902; 

	public const int SpSpeedUp = 8510;

	public const int SpWeakness = 8702;

	public const int SpDrawBacker = 9503; 

	public const int ball_Fire = 50100;

	public const int bolt_Fire = 50300;

@@ -342,15 +346,13 @@ public class SPELL

cs

	public const int miasma_Lightning = 50702;

	public const int weapon_Lightning = 50802; 

	public const int SpDrawBacker = 9503; 
	public const int SpDrawMetal = 9502; 

	public const int SpSilence = 8700;

	public const int SpDrawMetal = 9502; 
	public const int SpDrawMonster = 9501; 

	public const int SpWardMonster = 9500; 
	public const int SpShutterHex = 9200; 

	public const int SpWeakResEle = 8704;

@@ -390,41 +392,41 @@ public class SPELL

cs

	public const int SpSummonYeek = 9006;

	public const int SpSummonOrc = 9007; 

	public const int SpSummonShadow = 9050;

	public const int SpMeteor = 9150;

	public const int SpExterminate = 9160;

	public const int SpShutterHex = 9200; 

	public const int SpDrawMonster = 9501; 
	public const int SpWardMonster = 9500; 

	public const int puddle_Cut = 50914;

	public static readonly int[] IDS = new int[201] 
	public static readonly int[] IDS = new int[202] 
	{
		50413, 50805, 50905, 50106, 50314, 50306, 50406, 50506, 50606, 50706, 
		50806, 50906, 50107, 50114, 50307, 50407, 50507, 50607, 50707, 50705, 
		50414, 50605, 50505, 50403, 50503, 50603, 50703, 50803, 50714, 50903, 
		50104, 50304, 50807, 50404, 50604, 50704, 50614, 50804, 50904, 50105, 
		50514, 50305, 50405, 50504, 50313, 50907, 50913, 50910, 50111, 50613, 
		50311, 50411, 50511, 50611, 50711, 50811, 50810, 50911, 50513, 50312, 
		50303, 50512, 50612, 50712, 50812, 50912, 50113, 50112, 50108, 50710, 
		50510, 50308, 50408, 50508, 50608, 50708, 50808, 50908, 50109, 50813, 
		50610, 50309, 50509, 50609, 50709, 50809, 50909, 50110, 50713, 50310, 
		50410, 50409, 50412, 9151, 50902, 8288, 8300, 8380, 8390, 8400, 
		8401, 8402, 8403, 8404, 8405, 8406, 8430, 8450, 8470, 8471, 
		8480, 8490, 8491, 8500, 8501, 8502, 8503, 8504, 8286, 8506, 
		8285, 8281, 50814, 7001, 7002, 7003, 7004, 7005, 7006, 7007, 
		7800, 8200, 8201, 8220, 8221, 8230, 8232, 8240, 8241, 8250, 
		8251, 8255, 8256, 8260, 8280, 8284, 50103, 8510, 8702, 50100, 
		50300, 50400, 50500, 50600, 50700, 50800, 50900, 50101, 50301, 50401, 
		50501, 50601, 50701, 50801, 50901, 50102, 50302, 50402, 50502, 50602, 
		50702, 50802, 9503, 8700, 9502, 9500, 8704, 8706, 8708, 8710, 
		8770, 8775, 8776, 8780, 8790, 8791, 8800, 8801, 9000, 9001, 
		9002, 9003, 9004, 9005, 9006, 9050, 9150, 9160, 9200, 9501, 
		50914
		50306, 50108, 50106, 50406, 50506, 50606, 50907, 50707, 50407, 50706, 
		50806, 50906, 50107, 50607, 50507, 50807, 50307, 50404, 50805, 50303, 
		50403, 50503, 50603, 50703, 50803, 50903, 50104, 50304, 50905, 50504, 
		50704, 50804, 50904, 50105, 50305, 50405, 50505, 50605, 50705, 50604, 
		50308, 50312, 50508, 50911, 50112, 50412, 50512, 50612, 50712, 50812, 
		50912, 50113, 50313, 50811, 50413, 50613, 50713, 50813, 50913, 50114, 
		50314, 50414, 50514, 50614, 50714, 50513, 50711, 50611, 50511, 50608, 
		50708, 50808, 50908, 50109, 50309, 50409, 50509, 50609, 50709, 50809, 
		50909, 50110, 50310, 50410, 50510, 50610, 50710, 50810, 50910, 50111, 
		50311, 50411, 50408, 50103, 9151, 50802, 8288, 8300, 8380, 8390, 
		8400, 8401, 8402, 8403, 8404, 8405, 8406, 8430, 8450, 8470, 
		8471, 8480, 8490, 8491, 8500, 8501, 8502, 8503, 8504, 8286, 
		8506, 8285, 8281, 50814, 7001, 7002, 7003, 7004, 7005, 7006, 
		7007, 7800, 8200, 8201, 8220, 8221, 8230, 8232, 8240, 8241, 
		8250, 8251, 8255, 8256, 8260, 8280, 8284, 50902, 8510, 8702, 
		9503, 50100, 50300, 50400, 50500, 50600, 50700, 50800, 50900, 50101, 
		50301, 50401, 50501, 50601, 50701, 50801, 50901, 50102, 50302, 50402, 
		50502, 50602, 50702, 9502, 8700, 9501, 9200, 8704, 8706, 8708, 
		8710, 8770, 8775, 8776, 8780, 8790, 8791, 8800, 8801, 9000, 
		9001, 9002, 9003, 9004, 9005, 9006, 9007, 9050, 9150, 9160, 
		9500, 50914
	};
}
public class Spell : Ability

Trait

@@ -1896,7 +1896,7 @@ public void OnBarter()

cs
					}
					if (thing9.IsFood && owner.id == "rodwyn")
					{
						SourceElement.Row row = EClass.sources.elements.rows.Where((SourceElement.Row e) => !e.foodEffect.IsEmpty() && e.category != "feat").RandomItem(); 
						SourceElement.Row row = EClass.sources.elements.rows.Where((SourceElement.Row e) => !e.foodEffect.IsEmpty() && e.category != "feat" && e.chance > 0).RandomItem(); 
						thing9.elements.SetBase(row.id, 10 + EClass.rnd(10));
					}
				}

TraitTrolley

@@ -28,7 +28,7 @@ public virtual float FadeDuration

cs

	public bool CanActivate(Chara c)
	{
		if (c.host != null) 
		if (c.host != null || c.IsInCombat) 
		{
			return false;
		}

+TraitUniqueMonster

File Created
cs
public class TraitUniqueMonster : TraitChara
{
	public override bool IsWearingPanty => true;
}

+TraitUniqueMonsterAdv

File Created
cs
public class TraitUniqueMonsterAdv : TraitUniqueMonster
{
	public override bool UseRandomAbility => true;

	public override bool UseRandomAlias => true;

	public override bool IsWearingPanty => true;
}

WidgetSearch

@@ -120,23 +120,23 @@ public override void Search(string s)

cs
		}
		if (EMono._zone.IsPCFaction || EMono._zone is Zone_Tent)
		{
			foreach (Thing thing in EMono._map.things) 
			foreach (Thing thing2 in EMono._map.things) 
			{
				if (encSearch)
				{
					if (thing.MatchEncSearch(s)) 
					if (thing2.MatchEncSearch(s)) 
					{
						newCards.Add(thing); 
						newCards.Add(thing2); 
					}
				}
				else if (thing.Name.ToLower().Contains(s) || thing.sourceCard.GetSearchName(jp: false).Contains(s)) 
				else if (thing2.Name.ToLower().Contains(s) || thing2.sourceCard.GetSearchName(jp: false).Contains(s)) 
				{
					newCards.Add(thing); 
					newCards.Add(thing2); 
				}
			}
			foreach (Card value in EMono._map.props.stocked.all.Values)
			{
				if (!(value.parent is Thing) || (value.parent as Thing).c_lockLv > 0) 
				if (!(value.parent is Thing { c_lockLv: <=0, IsContainer: not false })) 
				{
					continue;
				}