Skip to content

EA 23.94 Nightly Patch 1

February 22, 2025

29 files modified. 2 new files created.

Important Changes

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

UI (1)

cs
public void FreezeScreen(float duration) 
public void FreezeScreen(float duration, bool highlight = true) 

ActEffect

@@ -191,7 +191,7 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
			{
				continue;
			}
			if ((uint)(id - 249) <= 1u && c.isChara && CC.isChara) 
			if ((uint)(id - 250) <= 1u && c.isChara && CC.isChara) 
			{
				c.Chara.RequestProtection(CC.Chara, delegate(Chara a)
				{

@@ -772,7 +772,7 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
			{
				CC.DoHostileAction(item2);
			}
			if (actRef.refThing == null || !(actRef.refThing.trait is TraitRod) || (uint)(id - 200) <= 3u) 
			if (actRef.refThing == null || !(actRef.refThing.trait is TraitRod) || (uint)(id - 200) <= 4u) 
			{
				return;
			}

@@ -913,9 +913,9 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
		TC.PlaySound("curse3");
		TC.PlayEffect("curse");
		TC.Say("forgetItems", TC);
		int num = power / 50 + 1 + EClass.rnd(3); 
		int num2 = power / 50 + 1 + EClass.rnd(3); 
		List<Thing> source = TC.things.List((Thing t) => t.c_IDTState == 0);
		for (int i = 0; i < num; i++) 
		for (int i = 0; i < num2; i++) 
		{
			source.RandomItem().c_IDTState = 5;
		}

@@ -1004,22 +1004,22 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
		}
		cc.PlaySound("offering");
		cc.PlayEffect("buff");
		int num4 = (tc.isWeightChanged ? tc.c_weight : tc.Thing.source.weight); 
		int num = (tc.isWeightChanged ? tc.c_weight : tc.Thing.source.weight); 
		tc.isWeightChanged = true;
		Element orCreateElement = tc.elements.GetOrCreateElement(64);
		Element orCreateElement2 = tc.elements.GetOrCreateElement(65);
		Element orCreateElement3 = tc.elements.GetOrCreateElement(67);
		Element orCreateElement4 = tc.elements.GetOrCreateElement(66);
		bool flag3 = tc.IsEquipmentOrRangedOrAmmo || tc.IsThrownWeapon; 
		bool flag2 = tc.IsEquipmentOrRangedOrAmmo || tc.IsThrownWeapon; 
		if (flag)
		{
			num4 = (int)(0.01f * (float)num4 * (float)power * 0.75f + 500f); 
			if (num4 < 0 || num4 > 10000000) 
			num = (int)(0.01f * (float)num * (float)power * 0.75f + 500f); 
			if (num < 0 || num > 10000000) 
			{
				num4 = 10000000; 
				flag3 = false; 
				num = 10000000; 
				flag2 = false; 
			}
			if (flag3) 
			if (flag2) 
			{
				if (tc.IsWeapon || tc.IsThrownWeapon || tc.IsAmmo)
				{

@@ -1036,12 +1036,12 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
		}
		else
		{
			num4 = num4 * (100 - power / 10) / 100; 
			num = num * (100 - power / 10) / 100; 
			if (blessed)
			{
				power /= 4;
			}
			if (flag3) 
			if (flag2) 
			{
				if (tc.IsWeapon || tc.IsThrownWeapon || tc.IsAmmo)
				{

@@ -1056,7 +1056,7 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
			}
			cc.Say("lighten", cc, tc);
		}
		tc.c_weight = num4; 
		tc.c_weight = num; 
		tc.SetDirtyWeight();
		if (tc.parent == null)
		{

@@ -1107,28 +1107,28 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
		string name = tc.Name;
		if (row == null)
		{
			bool num2 = id == EffectId.ChangeMaterialGreater; 
			bool flag2 = id == EffectId.ChangeMaterialLesser; 
			bool num3 = id == EffectId.ChangeMaterialGreater; 
			bool flag3 = id == EffectId.ChangeMaterialLesser; 
			string text2 = tc.Thing.source.tierGroup;
			Dictionary<string, SourceMaterial.TierList> tierMap = SourceMaterial.tierMap;
			int num3 = 1; 
			int num4 = 1; 
			if (flag)
			{
				num3 -= 2; 
				num4 -= 2; 
			}
			if (blessed)
			{
				num3++; 
				num4++; 
			}
			if (num2) 
			if (num3) 
			{
				num3++; 
				num4++; 
			}
			if (flag2) 
			if (flag3) 
			{
				num3 -= 2; 
				num4 -= 2; 
			}
			num3 = Mathf.Clamp(num3 + EClass.rnd(2), 0, 4); 
			num4 = Mathf.Clamp(num4 + EClass.rnd(2), 0, 4); 
			if (EClass.rnd(10) == 0)
			{
				text2 = ((text2 == "metal") ? "leather" : "metal");

@@ -1136,7 +1136,7 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
			SourceMaterial.TierList tierList = (text2.IsEmpty() ? tierMap.RandomItem() : tierMap[text2]);
			for (int j = 0; j < 1000; j++)
			{
				row = tierList.tiers[num3].Select(); 
				row = tierList.tiers[num4].Select(); 
				if (row != tc.material)
				{
					break;

@@ -1213,15 +1213,29 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
		break;
	case EffectId.Teleport:
	case EffectId.TeleportShort:
		if (!tc.HasHost && !flag) 
	case EffectId.Gate:
		if (!tc.HasHost) 
		{
			if (id == EffectId.TeleportShort) 
			if (!flag) 
			{
				tc.Teleport(GetTeleportPos(tc.pos)); 
				if (id == EffectId.TeleportShort) 
				{ 
					tc.Teleport(GetTeleportPos(tc.pos)); 
				} 
				else
				{ 
					tc.Teleport(GetTeleportPos(tc.pos, EClass._map.bounds.Width)); 
				} 
			}
			else
			if (id == EffectId.Gate && CC.IsPC) 
			{
				tc.Teleport(GetTeleportPos(tc.pos, EClass._map.bounds.Width)); 
				foreach (Chara member in EClass.pc.party.members) 
				{ 
					if (!member.HasHost && member != tc) 
					{ 
						member.Teleport(tc.pos.GetNearestPoint(allowBlock: false, allowChara: false) ?? tc.pos); 
					} 
				} 
			}
		}
		if (flag)

ActMelee

@@ -177,9 +177,9 @@ void _Attack(BodySlot slot)

cs
				int num2 = GetWeaponEnc(606, addSelfEnc: false);
				int scatter = GetWeaponEnc(607, addSelfEnc: false);
				splash = GetWeaponEnc(608, addSelfEnc: true);
				chaser = GetWeaponEnc(620, addSelfEnc: false); 
				flurry = GetWeaponEnc(621, addSelfEnc: false); 
				frustration = GetWeaponEnc(624, addSelfEnc: false); 
				chaser = GetWeaponEnc(620, addSelfEnc: true); 
				flurry = GetWeaponEnc(621, addSelfEnc: true); 
				frustration = GetWeaponEnc(624, addSelfEnc: true); 
				int num3 = GetWeaponEnc(622, addSelfEnc: true);
				feint = GetWeaponEnc(623, addSelfEnc: false);
				List<Point> list2 = EClass._map.ListPointsInLine(Act.CC.pos, Act.TC.pos, num2 / 10 + ((num2 % 10 > EClass.rnd(10)) ? 1 : 0) + 1);

ButtonAbility

@@ -30,6 +30,8 @@ public class ButtonAbility : UIButton, IMouseHint

cs

	public static float hotkeyTimer;

	public static bool usedMouseKey; 

	public void SetAct(Chara _chara, Element e)
	{
		source = e.source;

@@ -137,11 +139,17 @@ public static bool TryUse(Act act, Card tg = null, Point pos = null, Card cataly

cs
	{
		hotkeyAct = act;
	}
	if (first && EInput.GetHotkey() != -1) 
	if (first) 
	{
		mouse = false; 
		hotkeyTimer = 0f; 
		Debug.Log(EInput.GetHotkey()); 
		if (EInput.GetHotkey() != -1) 
		{ 
			mouse = false; 
			hotkeyTimer = 0f; 
		} 
		else
		{ 
			usedMouseKey = EInput.rightMouse.usedKey; 
		} 
	}
	if (act.HaveLongPressAction && act == hotkeyAct)
	{

@@ -165,7 +173,14 @@ public static bool TryUse(Act act, Card tg = null, Point pos = null, Card cataly

cs
					EInput.rightMouse.down = false;
					EInput.rightMouse.consumed = false;
					EInput.rightMouse.pressing = true;
					EInput.rightMouse.usedMouse = true; 
					if (usedMouseKey) 
					{ 
						EInput.rightMouse.usedKey = true; 
					} 
					else
					{ 
						EInput.rightMouse.usedMouse = true; 
					} 
				});
			}
			return false;

ConBuffStats

@@ -17,7 +17,7 @@ public override ConditionType Type

cs
		}
	}

	public bool isDebuff => base.refVal2 == 221; 
	public bool isDebuff => base.refVal2 == 222; 

	public override bool WillOverride => true;

@@ -27,7 +27,7 @@ public override ConditionType Type

cs

	public override int EvaluateTurn(int p)
	{
		if (base.refVal2 == 266) 
		if (base.refVal2 == 267) 
		{
			return 7;
		}

@@ -95,7 +95,7 @@ public override void SetOwner(Chara _owner, bool onDeserialize = false)

cs

	public int CalcValue()
	{
		if (base.refVal2 == 266) 
		if (base.refVal2 == 267) 
		{
			return 100 + (int)Mathf.Sqrt(base.power) * 2;
		}

ConWeapon

@@ -7,4 +7,9 @@ public class ConWeapon : BaseBuff

cs
	public override void Tick()
	{
	}

	public override bool CanStack(Condition c) 
	{ 
		return true; 
	} 
}

CoreDebug

@@ -355,6 +355,8 @@ public void QuickStart()

cs
		break;
	}
	EClass.game.StartNewGame();
	EClass.game.principal = IO.DeepCopy(EClass.setting.start.principals[0]); 
	EClass.player.validScore = -1; 
	EClass.player.flags.OnEnableDebug();
	EClass.player.pref.lastIdTabAbility = 3;
	Zone homeZone = EClass.game.spatials.Find(EClass.game.Prologue.idStartZone);

CoreRef

@@ -58,6 +58,8 @@ public class Enc

cs
		{
			public Sprite mat;

			public Sprite card; 

			public Sprite cat;

			public Sprite enc;

@@ -103,6 +105,8 @@ public class Enc

cs

		public Sprite trans;

		public Sprite fav; 

		public Sprite noHotItem;

		public Sprite defaultHotItem;

ELEMENT

@@ -607,11 +607,11 @@ public void _WriteNote(UINote n, Chara c, Act act)

cs
				switch (act.id)
				{
				case 6902:
					condition.SetRefVal(79, 266); 
					condition.SetRefVal(79, 267); 
					break;
				case 8510:
				case 8710:
					condition.SetRefVal(79, (act.id == 8710) ? 221 : 220); 
					condition.SetRefVal(79, (act.id == 8710) ? 222 : 221); 
					break;
				}
				n.AddText("_bullet".lang() + "hintCon".lang(condition.Name, condition.EvaluateTurn(p).ToString() ?? ""));

ENC

@@ -54,7 +54,7 @@ public class ENC

cs

	public const int mod_scatter = 607;

	public const int bane_animal = 463; 
	public const int encSpell = 411; 

	public const int mod_precision = 605;

@@ -68,6 +68,8 @@ public class ENC

cs

	public const int negateConfusion = 425;

	public const int negateSleep = 424; 

	public const int negateFear = 423;

	public const int negateParalysis = 422;

@@ -82,8 +84,6 @@ public class ENC

cs

	public const int encHit = 414;

	public const int sustain_STR = 440; 

	public const int slowCorruption = 412;

	public const int throwReturn = 410;

@@ -92,7 +92,7 @@ public class ENC

cs

	public const int resWeather = 408;

	public const int travelSpeed = 407; 
	public const int mod_drill = 606; 

	public const int resMutation = 406;

@@ -108,16 +108,16 @@ public class ENC

cs

	public const int negateTeleport = 400;

	public const int mod_drill = 606; 

	public const int encSpell = 411; 
	public const int sustain_STR = 440; 

	public const int sustain_END = 441;

	public const int negateSleep = 424; 
	public const int travelSpeed = 407; 

	public const int optimizeMana = 483;

	public const int mod_ammo_recover = 604; 

	public const int mod_ammo_knockback = 603;

	public const int mod_rapid = 602;

@@ -138,42 +138,42 @@ public class ENC

cs

	public const int bane_fish = 467;

	public const int bane_god = 466; 
	public const int bane_machine = 465; 

	public const int bane_man = 464;

	public const int bane_god = 466; 

	public const int bane_fairy = 462;

	public const int bane_machine = 465; 
	public const int sustain_DEX = 442; 

	public const int bane_dragon = 460; 
	public const int sustain_PER = 443; 

	public const int sustain_CHA = 447; 
	public const int sustain_LER = 444; 

	public const int sustain_MAG = 446; 
	public const int bane_animal = 463; 

	public const int mod_ammo_recover = 604; 
	public const int sustain_MAG = 446; 

	public const int sustain_WIL = 445;

	public const int bane_undead = 461; 

	public const int sustain_LER = 444; 
	public const int sustain_CHA = 447; 

	public const int sustain_PER = 443; 
	public const int bane_dragon = 460; 

	public const int sustain_DEX = 442; 
	public const int bane_undead = 461; 

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

EffectId

@@ -25,92 +25,93 @@ public enum EffectId

cs
	GreaterIdentify = 201,
	Teleport = 202,
	TeleportShort = 203,
	CreateWall = 204, 
	Return = 205, 
	Evac = 206, 
	ChangeMaterialLesser = 207, 
	ChangeMaterial = 208, 
	ChangeMaterialGreater = 209, 
	Sleep = 210, 
	Paralyze = 211, 
	Blind = 212, 
	Confuse = 213, 
	Poison = 214, 
	Faint = 215, 
	Fear = 216, 
	Disease = 217, 
	Acid = 218, 
	HealComplete = 219, 
	BuffStats = 220, 
	DebuffStats = 221, 
	Wish = 222, 
	Ally = 223, 
	CatsEye = 224, 
	LevelDown = 225, 
	Love = 226, 
	Uncurse = 227, 
	UncurseEQ = 228, 
	UncurseEQGreater = 229, 
	CurseEQ = 230, 
	HolyVeil = 231, 
	EnchantWeapon = 232, 
	EnchantArmor = 233, 
	Lighten = 234, 
	Naming = 235, 
	Faith = 236, 
	ForgetItems = 237, 
	Hero = 238, 
	Acidproof = 239, 
	Levitate = 240, 
	Gravity = 241, 
	Mutation = 242, 
	CureMutation = 243, 
	Breathe = 244, 
	Ball = 245, 
	Explosive = 246, 
	BallBubble = 247, 
	Bolt = 248, 
	Arrow = 249, 
	Hand = 250, 
	Funnel = 251, 
	TransGender = 252, 
	Summon = 253, 
	ModPotential = 254, 
	Buff = 255, 
	Debuff = 256, 
	Weaken = 257, 
	Bubble = 258, 
	Web = 259, 
	MistOfDarkness = 260, 
	NeckHunt = 261, 
	Puddle = 262, 
	PuddleEffect = 263, 
	RemedyJure = 264, 
	AbsorbMana = 265, 
	LulwyTrick = 266, 
	JureHeal = 267, 
	KizuamiTrick = 268, 
	CureCorruption = 269, 
	Headpat = 270, 
	Meteor = 271, 
	Exterminate = 272, 
	Earthquake = 273, 
	MagicMap = 274, 
	Escape = 275, 
	Boost = 276, 
	EnchantWeaponGreat = 277, 
	EnchantArmorGreat = 278, 
	RemoveHex = 279, 
	RemoveHexAll = 280, 
	Duplicate = 281, 
	Suicide = 282, 
	ShutterHex = 283, 
	Draw = 284, 
	Reconstruction = 285, 
	DrainBlood = 286, 
	Steal = 287, 
	Scream = 288, 
	DropMine = 289, 
	ThrowPotion = 290, 
	DrainMana = 291
	Gate = 204, 
	CreateWall = 205, 
	Return = 206, 
	Evac = 207, 
	ChangeMaterialLesser = 208, 
	ChangeMaterial = 209, 
	ChangeMaterialGreater = 210, 
	Sleep = 211, 
	Paralyze = 212, 
	Blind = 213, 
	Confuse = 214, 
	Poison = 215, 
	Faint = 216, 
	Fear = 217, 
	Disease = 218, 
	Acid = 219, 
	HealComplete = 220, 
	BuffStats = 221, 
	DebuffStats = 222, 
	Wish = 223, 
	Ally = 224, 
	CatsEye = 225, 
	LevelDown = 226, 
	Love = 227, 
	Uncurse = 228, 
	UncurseEQ = 229, 
	UncurseEQGreater = 230, 
	CurseEQ = 231, 
	HolyVeil = 232, 
	EnchantWeapon = 233, 
	EnchantArmor = 234, 
	Lighten = 235, 
	Naming = 236, 
	Faith = 237, 
	ForgetItems = 238, 
	Hero = 239, 
	Acidproof = 240, 
	Levitate = 241, 
	Gravity = 242, 
	Mutation = 243, 
	CureMutation = 244, 
	Breathe = 245, 
	Ball = 246, 
	Explosive = 247, 
	BallBubble = 248, 
	Bolt = 249, 
	Arrow = 250, 
	Hand = 251, 
	Funnel = 252, 
	TransGender = 253, 
	Summon = 254, 
	ModPotential = 255, 
	Buff = 256, 
	Debuff = 257, 
	Weaken = 258, 
	Bubble = 259, 
	Web = 260, 
	MistOfDarkness = 261, 
	NeckHunt = 262, 
	Puddle = 263, 
	PuddleEffect = 264, 
	RemedyJure = 265, 
	AbsorbMana = 266, 
	LulwyTrick = 267, 
	JureHeal = 268, 
	KizuamiTrick = 269, 
	CureCorruption = 270, 
	Headpat = 271, 
	Meteor = 272, 
	Exterminate = 273, 
	Earthquake = 274, 
	MagicMap = 275, 
	Escape = 276, 
	Boost = 277, 
	EnchantWeaponGreat = 278, 
	EnchantArmorGreat = 279, 
	RemoveHex = 280, 
	RemoveHexAll = 281, 
	Duplicate = 282, 
	Suicide = 283, 
	ShutterHex = 284, 
	Draw = 285, 
	Reconstruction = 286, 
	DrainBlood = 287, 
	Steal = 288, 
	Scream = 289, 
	DropMine = 290, 
	ThrowPotion = 291, 
	DrainMana = 292
}

ElementContainer

@@ -808,6 +808,17 @@ public void AddNote(UINote n, Func<Element, bool> isValid = null, Action onAdd =

cs
				{
					sprite = EClass.core.refs.icons.enc.mat;
				}
				foreach (int key in thing.source.elementMap.Keys) 
				{ 
					if (key == e.id) 
					{ 
						sprite = EClass.core.refs.icons.enc.card; 
					} 
				} 
				if (e.id == thing.GetInt(107)) 
				{ 
					sprite = EClass.core.refs.icons.enc.cat; 
				} 
				if (thing.GetRuneEnc(e.id) != null)
				{
					sprite = EClass.core.refs.icons.enc.rune;

FACTION

@@ -4,29 +4,31 @@

cs

public class FACTION
{
	public const int bfFertile = 3700; 

	public const int bfHill = 3603;

	public const int bfBeach = 3604; 

	public const int bfCave = 3500;

	public const int bfPlain = 3600; 
	public const int bfGeyser = 3701; 

	public const int bfForest = 3601; 
	public const int bfRuin = 3702; 

	public const int bfSnow = 3602;

	public const int bfFertile = 3700; 
	public const int bfForest = 3601; 

	public const int bfSea = 3605; 
	public const int bfPlain = 3600; 

	public const int bfBeach = 3604; 
	public const int bfSea = 3605; 

	public const int fRation = 2207;

	public const int bfGeyser = 3701; 

	public const int fAttraction = 2206; 
	public const int actBuildAnywhere = 4003; 

	public const int fLoyal = 2117; 
	public const int fSafety = 2205; 

	public const int fFood = 2204;

@@ -36,43 +38,37 @@ public class FACTION

cs

	public const int fElec = 2201;

	public const int fSoil = 2200; 

	public const int fLuck = 2118; 

	public const int fConstruction = 2003; 
	public const int bfTranquil = 3703; 

	public const int bfRuin = 3702; 
	public const int fSoil = 2200; 

	public const int fHeirloom = 2120;

	public const int fTaxEvasion = 2119;

	public const int fAdmin = 2115; 

	public const int fEducation = 2116; 
	public const int fLuck = 2118; 

	public const int fSafety = 2205; 
	public const int fLoyal = 2117; 

	public const int bfTranquil = 3703; 
	public const int fAttraction = 2206; 

	public const int bfFish = 3706; 
	public const int bfVolcano = 3704; 

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

	public const int actBuildInspect = 4006; 
	public const int bfFish = 3706; 

	public const int actBuildRecipe = 4005;

	public const int actBuildCollect = 4004; 

	public const int actBuildAnywhere = 4003; 
	public const int actBuildInspect = 4006; 

	public const int actBuildTerrain = 4002;

	public const int actBuildMine = 4001;

	public const int bfVolcano = 3704; 
	public const int fEducation = 2116; 

	public const int actBuildCut = 4000; 

	public const int bfStart = 3900;

@@ -82,40 +78,44 @@ public class FACTION

cs

	public const int bfGum = 3803;

	public const int actBuildCut = 4000; 

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

	public const int bfSilica = 3802;

	public const int bfFreshAir = 3708; 
	public const int bfCoal = 3800; 

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

	public const int bfBreed = 3710; 
	public const int bfLandmark4 = 3783; 

	public const int bfLandmark3 = 3782; 

	public const int bfLandmark2 = 3781; 

	public const int bfLandmark1 = 3780;

	public const int bfMonster = 3707; 
	public const int bfBreed = 3710; 

	public const int bfLandmark3 = 3782; 
	public const int bfBasin = 3709; 

	public const int bfLandmark4 = 3783; 
	public const int bfFreshAir = 3708; 

	public const int bfLandmark5 = 3784; 
	public const int bfMonster = 3707; 

	public const int bfCoal = 3800; 
	public const int actBuildCollect = 4004; 

	public const int bfLandmark2 = 3781; 
	public const int fAdmin = 2115; 

	public const int fConstruction = 2003; 

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

FEAT

@@ -3,6 +3,22 @@

cs

public class FEAT
{
	public const int featUndead = 1210; 

	public const int featMartial = 1635; 

	public const int featNegotiate = 1634; 

	public const int featSpotting = 1633; 

	public const int featEvade = 1632; 

	public const int featDefense = 1631; 

	public const int featHardy = 1630; 

	public const int featSPD = 1629; 

	public const int featLuck = 1628;

	public const int featCHA = 1627;

@@ -11,9 +27,9 @@ public class FEAT

cs

	public const int featMAG = 1625;

	public const int featLER = 1624; 
	public const int featFaith = 1636; 

	public const int featPER = 1623; 
	public const int featLER = 1624; 

	public const int featEND = 1622;

@@ -23,7 +39,7 @@ public class FEAT

cs

	public const int featStamina = 1612;

	public const int featLuckyCat = 1412; 
	public const int featMana = 1611; 

	public const int featLife = 1610;

@@ -37,29 +53,37 @@ public class FEAT

cs

	public const int featWitch = 1417;

	public const int featInquisitor = 1416; 
	public const int featPER = 1623; 

	public const int featFoxMaid = 1415; 
	public const int featAnimalLover = 1640; 

	public const int featWhiteVixen = 1414; 
	public const int featResCurse = 1641; 

	public const int featFairysan = 1413; 
	public const int featSleeper = 1642; 

	public const int featSPD = 1629; 
	public const int featFluffyTail = 1209; 

	public const int featMana = 1611; 
	public const int featSlowFood = 1200; 

	public const int featHardy = 1630; 
	public const int featManaBond = 1201; 

	public const int featParty = 1645; 
	public const int featFastLearner = 1202; 

	public const int featEvade = 1632; 
	public const int featGrowParts = 1203; 

	public const int featEarthStrength = 1411; 
	public const int featFairyWeak = 1204; 

	public const int featManaCost = 1657; 
	public const int featCannibalism = 1205; 

	public const int featScavenger = 1656; 
	public const int featMelilithCurse = 1206; 

	public const int featFoxBless = 1207; 

	public const int featFoxLearn = 1208; 

	public const int featChef = 1658; 

	public const int featManaCost = 1657; 

	public const int featModelBeliever = 1655;

@@ -75,55 +99,25 @@ public class FEAT

cs

	public const int featDefender = 1649;

	public const int featDefense = 1631; 

	public const int featRapidMagic = 1648;

	public const int featLonelySoul = 1646; 

	public const int featBodyParts = 1644; 

	public const int featSorter = 1643; 

	public const int featSleeper = 1642; 

	public const int featResCurse = 1641; 

	public const int featAnimalLover = 1640; 

	public const int featFaith = 1636; 

	public const int featMartial = 1635; 

	public const int featNegotiate = 1634; 

	public const int featSpotting = 1633; 

	public const int featSummoner = 1647;

	public const int featReboot = 1410; 

	public const int featChef = 1658; 

	public const int featPaladin2 = 1408; 

	public const int featShiva = 1224; 

	public const int featLoyal = 1225; 
	public const int featLonelySoul = 1646; 

	public const int featUnderground = 1226; 
	public const int featParty = 1645; 

	public const int featServant = 1227; 
	public const int featBodyParts = 1644; 

	public const int featDemigod = 1228; 
	public const int featSorter = 1643; 

	public const int featLittleOne = 1229; 
	public const int featInquisitor = 1416; 

	public const int featAdam = 1230; 
	public const int featFoxMaid = 1415; 

	public const int featNirvana = 1231; 
	public const int featScavenger = 1656; 

	public const int featCosmicHorror = 1233; 
	public const int featFairysan = 1413; 

	public const int featHeavyEater = 1234;

@@ -137,8 +131,6 @@ public class FEAT

cs

	public const int featGod_element1 = 1300;

	public const int featGod_earth1 = 1305; 

	public const int featGod_wind1 = 1310;

	public const int featGod_machine1 = 1315;

@@ -149,39 +141,31 @@ public class FEAT

cs

	public const int featGod_luck1 = 1330;

	public const int featAcidBody = 1223; 

	public const int featGod_harmony1 = 1335;

	public const int featSplit = 1222; 

	public const int featFate = 1220; 

	public const int featBoost = 1409; 

	public const int featSlowFood = 1200; 
	public const int featGod_oblivion1 = 1340; 

	public const int featManaBond = 1201; 
	public const int featGod_trickery1 = 1345; 

	public const int featFastLearner = 1202; 
	public const int featGod_moonshadow1 = 1350; 

	public const int featGrowParts = 1203; 
	public const int featGod_strife1 = 1355; 

	public const int featFairyWeak = 1204; 
	public const int featWarrior = 1400; 

	public const int featCannibalism = 1205; 
	public const int featThief = 1401; 

	public const int featMelilithCurse = 1206; 
	public const int featWizard = 1402; 

	public const int featFoxBless = 1207; 
	public const int featCosmicHorror = 1233; 

	public const int featFoxLearn = 1208; 
	public const int featBaby = 1232; 

	public const int featFluffyTail = 1209; 
	public const int featNirvana = 1231; 

	public const int featUndead = 1210; 
	public const int featAdam = 1230; 

	public const int featSnail = 1211; 
	public const int featWhiteVixen = 1414; 

	public const int featFairyResist = 1212;

@@ -199,48 +183,64 @@ public class FEAT

cs

	public const int featElderCrab = 1219;

	public const int featSpike = 1221; 
	public const int featFarmer = 1403; 

	public const int featGod_oblivion1 = 1340; 
	public const int featFate = 1220; 

	public const int featBaby = 1232; 
	public const int featSplit = 1222; 

	public const int featGod_moonshadow1 = 1350; 
	public const int featSnail = 1211; 

	public const int featGod_trickery1 = 1345; 
	public const int featAcidBody = 1223; 

	public const int featGod_strife1 = 1355; 
	public const int featShiva = 1224; 

	public const int featWarrior = 1400; 
	public const int featLoyal = 1225; 

	public const int featThief = 1401; 
	public const int featUnderground = 1226; 

	public const int featFarmer = 1403; 
	public const int featServant = 1227; 

	public const int featDemigod = 1228; 

	public const int featLittleOne = 1229; 

	public const int featSpike = 1221; 

	public const int featArcher = 1404;

	public const int featPianist = 1405; 
	public const int featGod_earth1 = 1305; 

	public const int featTourist = 1406;

	public const int featWizard = 1402; 
	public const int featPianist = 1405; 

	public const int featPaladin2 = 1408; 

	public const int featReboot = 1410; 

	public const int featEarthStrength = 1411; 

	public const int featBoost = 1409; 

	public const int featLuckyCat = 1412; 

	public const int featPaladin = 1407;

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

FOOD

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

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

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

	public const int food_god = 758; 
	public const int food_bug = 704; 

	public const int justcooked = 757; 
	public const int food_love = 703; 

	public const int food_poison = 702;

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

	public const int food_bug = 704; 
	public const int justcooked = 757; 

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

	public const int loseWeight = 706;

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

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

Game

@@ -217,6 +217,9 @@ private void _OnDeserialized(StreamingContext context)

cs
	[JsonProperty]
	public List<Thing> lostThings = new List<Thing>();

	[JsonProperty] 
	public GamePrincipal principal = new GamePrincipal(); 

	public int gameSpeedIndex = 1;

	public int lastGameSpeedIndex = 1;

@@ -461,6 +464,11 @@ public void OnLoad()

cs
		}
	}
	TryAddQuest("into_darkness", "exile_kettle");
	if (version.IsBelow(0, 23, 94)) 
	{ 
		EClass.game.principal = IO.DeepCopy(EClass.setting.start.principals[0]); 
		player.validScore = -1; 
	} 
	if (version.IsBelow(0, 23, 93))
	{
		RecipeManager.BuildList();

+GamePrincipal

File Created
cs
using System;
using Newtonsoft.Json;
using UnityEngine;

[Serializable]
public class GamePrincipal : EClass
{
	[JsonProperty]
	public int idTemplate;

	[JsonProperty]
	public int socre;

	[JsonProperty]
	public int bonusLoot;

	[JsonProperty]
	public bool deathPenaltyProtection;

	[JsonProperty]
	public bool opMilk;

	[JsonProperty]
	public bool manualSave;

	[JsonProperty]
	public bool permadeath;

	[JsonProperty]
	public bool infiniteMarketFund;

	[JsonProperty]
	public bool moreFood;

	[JsonProperty]
	public bool moreReward;

	public bool IsCustom => idTemplate == -1;

	public int GetGrade(int score)
	{
		return Mathf.Clamp(score / 100, 0, 5);
	}

	public string GetTitle()
	{
		int grade = GetGrade(GetScore());
		return Lang.GetList("pp_titles")[grade];
	}

	public int GetScore()
	{
		int num = 300;
		if (permadeath)
		{
			num += 200;
		}
		if (infiniteMarketFund)
		{
			num -= 200;
		}
		if (opMilk)
		{
			num -= 200;
		}
		if (manualSave)
		{
			num -= 100;
		}
		if (deathPenaltyProtection)
		{
			num -= 50;
		}
		return num;
	}

	public int GetValidScore()
	{
		int score = GetScore();
		if (EClass.player.validScore != -1)
		{
			if (score >= EClass.player.validScore)
			{
				return EClass.player.validScore;
			}
			return score;
		}
		return score;
	}

	public void Apply()
	{
		EClass.player.validScore = GetScore();
	}
}

GameSetting

@@ -240,6 +240,8 @@ public class StartSetting

cs
		public List<Prologue> prologues;

		public List<GameDifficultySetting> difficulties;

		public List<GamePrincipal> principals; 
	}

	[Serializable]

HotItemContext

@@ -127,6 +127,10 @@ public static void Show(string id, Vector3 pos)

cs
			{
				EClass.ui.AddLayer<LayerConfig>();
			});
			i.AddButton("worldSetting", delegate
			{ 
				EClass.ui.AddLayer<LayerWorldSetting>(); 
			}); 
			i.AddSeparator();
			i.AddButton("LayerHoard", delegate
			{

LayerHelp

@@ -8,6 +8,14 @@ public class LayerHelp : ELayer

cs

	public override bool blockWidgetClick => false;

	public override void OnInit() 
	{ 
		if (book.mode == UIBook.Mode.Book) 
		{ 
			SkinManager.LimitFontSizeMod_UI = -2; 
		} 
	} 

	public override void OnAfterInit()
	{
		switch (book.mode)

@@ -49,5 +57,6 @@ private void OnDestroy()

cs
			lastIdFile = book.idFile;
			lastIdTopic = book.idTopic;
		}
		SkinManager.LimitFontSizeMod_UI = 999; 
	}
}

+LayerWorldSetting

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

public class LayerWorldSetting : ELayer
{
	public UISelectableGroup groupTemplate;

	public List<UIButton> buttonTemplates;

	public UIButton toggleDeathPenaltyProtection;

	public UIButton toggleManualSave;

	public UIButton togglePermadeath;

	public UIButton toggleInfiniteMarketFund;

	public UIButton toggleOPMilk;

	public UIText textScore;

	public UIText textTitle;

	public UIText textValidScore;

	public Image imageScoreBar;

	public GamePrincipal pp => ELayer.game.principal;

	public int IdxCustom => 3;

	public override void OnInit()
	{
		for (int j = 0; j < buttonTemplates.Count; j++)
		{
			int i = j;
			UIButton uIButton = buttonTemplates[i];
			uIButton.mainText.SetText(Lang.GetList("pp_templates")[i]);
			if (i != IdxCustom)
			{
				uIButton.refObj = ELayer.setting.start.principals[i];
			}
			uIButton.SetOnClick(delegate
			{
				SetTemplate(i);
			});
		}
		Refresh();
	}

	public void SetTemplate(int idx)
	{
		pp.idTemplate = idx;
		if (idx == IdxCustom)
		{
			pp.idTemplate = -1;
		}
		else
		{
			ELayer.game.principal = IO.DeepCopy(ELayer.setting.start.principals[idx]);
		}
		Refresh();
	}

	public void Refresh()
	{
		groupTemplate.Select(pp.IsCustom ? IdxCustom : pp.idTemplate);
		toggleDeathPenaltyProtection.SetToggle(pp.deathPenaltyProtection, delegate(bool a)
		{
			Toggle(ref pp.deathPenaltyProtection, a);
		});
		toggleManualSave.SetToggle(pp.manualSave, delegate(bool a)
		{
			Toggle(ref pp.manualSave, a);
		});
		togglePermadeath.SetToggle(pp.permadeath, delegate(bool a)
		{
			Toggle(ref pp.permadeath, a);
		});
		toggleInfiniteMarketFund.SetToggle(pp.infiniteMarketFund, delegate(bool a)
		{
			Toggle(ref pp.infiniteMarketFund, a);
		});
		toggleOPMilk.SetToggle(pp.opMilk, delegate(bool a)
		{
			Toggle(ref pp.opMilk, a);
		});
		RefreshScore();
		void Toggle(ref bool flag, bool on)
		{
			flag = on;
			if (!pp.IsCustom)
			{
				pp.idTemplate = -1;
				groupTemplate.Select(IdxCustom);
			}
			RefreshScore();
		}
	}

	public void RefreshScore()
	{
		textTitle.text = pp.GetTitle() ?? "";
		textScore.text = "pp_score".lang(pp.GetScore().ToString() ?? "");
		textValidScore.text = "pp_validScore".lang(pp.GetValidScore().ToString() ?? "");
		imageScoreBar.rectTransform.sizeDelta = new Vector2(Mathf.Clamp(300f * (float)pp.GetScore() / 500f, 0f, 300f), 50f);
	}

	public override void OnKill()
	{
		pp.Apply();
	}
}

MUTATION

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

cs
public class MUTATION
{
	public const int mutationRegen = 1516; 
	public const int mutationSpeedN = 1519; 

	public const int etherPoisonHand = 1565; 
	public const int mutationSpeed = 1518; 

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

	public const int mutationRegen = 1516; 

	public const int mutationSkinN = 1511;

	public const int mutationDex = 1514; 

	public const int mutationEye = 1512;

	public const int mutationEyeN = 1513; 
	public const int mutationSkin = 1510; 

	public const int mutationDex = 1514; 
	public const int mutationStr = 1520; 

	public const int mutationDexN = 1515;

	public const int mutationRegenN = 1517; 
	public const int mutationStrN = 1521; 

	public const int etherManaBattery = 1564; 
	public const int mutationEyeN = 1513; 

	public const int mutationSpeedN = 1519; 
	public const int mutationChaN = 1523; 

	public const int etherPoisonHand = 1565; 

	public const int mutationCha = 1522; 

	public const int etherProvoke = 1563;

	public const int etherArmor = 1562;

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

	public const int etherWeak = 1560;

@@ -42,46 +50,38 @@ public class MUTATION

cs

	public const int etherWing = 1554;

	public const int etherEye = 1553; 
	public const int etherManaBattery = 1564; 

	public const int etherFeet = 1552;

	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 mutationChaN = 1523; 
	public const int etherGravity = 1550; 

	public const int mutationBrainN = 1525; 
	public const int mutationBodyN = 1531; 

	public const int mutationCold = 1526; 
	public const int mutationBody = 1530; 

	public const int mutationBrain = 1524; 
	public const int mutationLightningN = 1529; 

	public const int mutationLightning = 1528;

	public const int mutationLightningN = 1529; 
	public const int mutationColdN = 1527; 

	public const int mutationBody = 1530; 
	public const int mutationCold = 1526; 

	public const int mutationBodyN = 1531; 
	public const int mutationBrainN = 1525; 

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

	public const int etherGravity = 1550; 
	public const int etherEye = 1553; 

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

Map

@@ -610,12 +610,14 @@ public void Load(string path, bool import = false, PartialMap partial = null)

cs
	Validate(ref bytes18, "roofBlocks");
	Validate(ref bytes19, "roofBlockMats");
	Validate(ref bytes20, "roofBlockDirs");
	int count = EClass.sources.floors.rows.Count; 
	int count2 = EClass.sources.materials.rows.Count; 
	int num3 = 0;
	for (int i = 0; i < num; i++)
	{
		for (int j = 0; j < num2; j++)
		{
			cells[i, j] = new Cell
			Cell cell = (cells[i, j] = new Cell
			{
				x = (byte)i,
				z = (byte)j,

@@ -646,8 +648,16 @@ public void Load(string path, bool import = false, PartialMap partial = null)

cs
				isWatered = bytes12[num3].GetBit(0),
				isObjDyed = bytes12[num3].GetBit(1),
				crossWall = bytes12[num3].GetBit(2)
			}; 
			Critter.RebuildCritter(cells[i, j]); 
			}); 
			if (cell._bridge >= count) 
			{ 
				cell._bridge = 0; 
			} 
			if (cell._bridgeMat >= count2) 
			{ 
				cell._bridgeMat = 1; 
			} 
			Critter.RebuildCritter(cell); 
			num3++;
		}
	}

POLICY

@@ -3,7 +3,7 @@

cs

public class POLICY
{
	public const int bed_quality = 2812; 
	public const int forcePanty = 2712; 

	public const int platinum_ticket = 2815;

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

cs

	public const int suite_room = 2813;

	public const int forcePanty = 2712; 
	public const int livestock_priv = 2715; 

	public const int tourist_safety = 2811; 

	public const int open_business = 2810;

	public const int home_discount = 2800;

	public const int livestock_priv = 2715; 

	public const int store_ripoff = 2816;

	public const int tourist_safety = 2811; 
	public const int bed_quality = 2812; 

	public const int store_premium = 2817;

	public const int license_stolen = 2824; 
	public const int celeb = 2822; 

	public const int license_furniture = 2819;

@@ -33,10 +33,10 @@ public class POLICY

cs

	public const int legendary_heirloom = 2821;

	public const int celeb = 2822; 

	public const int legendary_exhibition = 2823;

	public const int license_stolen = 2824; 

	public const int milk_fan = 2825;

	public const int egg_fan = 2826;

@@ -49,51 +49,53 @@ public class POLICY

cs

	public const int incomeTransfer = 2711;

	public const int nocturnal_life = 2508; 
	public const int self_sufficient = 2511; 

	public const int noAnimal = 2709;

	public const int wealth_tax = 2500; 
	public const int noMother = 2710; 

	public const int food_for_people = 2502; 

	public const int faith_tax = 2501;

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

	public const int noMother = 2710; 
	public const int prohibition = 2503; 

	public const int impressment = 2504;

	public const int legal_drug = 2505;

	public const int human_right = 2506; 

	public const int inquisition = 2507;

	public const int nocturnal_life = 2508; 

	public const int vaccination = 2509;

	public const int ban_radio = 2510;

	public const int self_sufficient = 2511; 

	public const int resident_tax = 2512;

	public const int prohibition = 2503; 
	public const int human_right = 2506; 

	public const int taxfree = 2514;

	public const int resident_wanted = 2513;

	public const int auto_farm = 2707; 

	public const int demon_invocation = 2706;

	public const int auto_farm = 2707; 
	public const int taxTransfer = 2705; 

	public const int weed_no = 2703; 
	public const int noDM = 2708; 

	public const int trash_no = 2702; 
	public const int weed_no = 2703; 

	public const int border_watch = 2704;

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

	public const int energy_conservation = 2700;

@@ -101,18 +103,16 @@ public class POLICY

cs

	public const int stop_growth = 2515;

	public const int trash_sort = 2701; 

	public const int taxTransfer = 2705; 
	public const int trash_no = 2702; 

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

Player

@@ -764,6 +764,9 @@ public void OnLeaveZone()

cs
	[JsonProperty]
	public int customLightMod = 3;

	[JsonProperty] 
	public int validScore; 

	[JsonProperty]
	public float angle;

@@ -923,6 +926,9 @@ public void OnLeaveZone()

cs
	[JsonProperty]
	public Window.SaveData windowAllyInv;

	[JsonProperty] 
	public List<string> favMoongate = new List<string>(); 

	public static int seedHallucination;

	public static int realHour;

@@ -2328,4 +2334,16 @@ public bool TooHeavyToMove()

cs
		}
		return false;
	}

	public void ToggleFavMoongate(string id) 
	{ 
		if (favMoongate.Contains(id)) 
		{ 
			favMoongate.Remove(id); 
		} 
		else
		{ 
			favMoongate.Add(id); 
		} 
	} 
}

SKILL

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

cs
public class SKILL
{
	public const int armorHeavy = 122; 
	public const int tactics = 132; 

	public const int twowield = 131;

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

cs

	public const int shield = 123;

	public const int armorHeavy = 122; 

	public const int acidproof = 51;

	public const int weaponBlunt = 111;

@@ -18,15 +20,15 @@ public class SKILL

cs

	public const int fireproof = 50;

	public const int tactics = 132; 
	public const int marksman = 133; 

	public const int armorLight = 120;

	public const int marksman = 133; 
	public const int eyeofmind = 134; 

	public const int evasionPlus = 151; 
	public const int parasite = 227; 

	public const int strategy = 135; 
	public const int evasion = 150; 

	public const int climbing = 242;

@@ -40,15 +42,15 @@ public class SKILL

cs

	public const int digging = 230;

	public const int parasite = 227; 

	public const int eyeofmind = 134; 
	public const int PDR = 55; 

	public const int riding = 226;

	public const int lumberjack = 225; 

	public const int mining = 220;

	public const int spotting = 210; 
	public const int fishing = 245; 

	public const int weightlifting = 207;

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

cs

	public const int stealth = 152;

	public const int PDR = 55; 

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

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

	public const int EDR = 56;

	public const int throwing = 108; 
	public const int weaponSword = 101; 

	public const int life = 60;

	public const int fishing = 245; 

	public const int mana = 61;

	public const int vigor = 62;

@@ -96,11 +94,11 @@ public class SKILL

cs

	public const int WIL = 75;

	public const int evasionPerfect = 57; 

	public const int MAG = 76;

	public const int LUC = 78; 
	public const int evasionPerfect = 57; 

	public const int CHA = 77; 

	public const int SPD = 79;

@@ -128,11 +126,13 @@ public class SKILL

cs

	public const int weaponDagger = 107;

	public const int CHA = 77; 
	public const int throwing = 108; 

	public const int LUC = 78; 

	public const int gathering = 250;

	public const int weaponSword = 101; 
	public const int spotting = 210; 

	public const int blacksmith = 256;

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

cs

	public const int resImpact = 965;

	public const int resDamage = 971; 
	public const int resDecay = 970; 

	public const int resCurse = 972;

@@ -200,18 +200,18 @@ public class SKILL

cs

	public const int eleMind = 914;

	public const int resDecay = 970; 
	public const int resDamage = 971; 

	public const int eleLightning = 912;

	public const int eleDarkness = 913;

	public const int alchemy = 257; 

	public const int sculpture = 258;

	public const int jewelry = 259;

	public const int alchemy = 257; 

	public const int weaving = 260;

	public const int handicraft = 261;

@@ -238,10 +238,10 @@ public class SKILL

cs

	public const int regeneration = 300;

	public const int eleCold = 911; 

	public const int eleFire = 910;

	public const int env = 313; 

	public const int disarmTrap = 293;

	public const int fun = 312;

@@ -252,14 +252,14 @@ public class SKILL

cs

	public const int memorization = 307;

	public const int env = 313; 

	public const int magicDevice = 305;

	public const int casting = 304;

	public const int manaCapacity = 303;

	public const int eleCold = 911; 

	public const int controlmana = 302;

	public const int meditation = 301;

@@ -268,19 +268,19 @@ public class SKILL

cs

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

SLOT

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

cs
public class SLOT
{
	public const int finger = 36; 

	public const int lightsource = 45; 
	public const int leg = 38; 

	public const int toolbelt = 44;

	public const int token = 43; 
	public const int tool = 40; 

	public const int ammo = 42; 
	public const int back = 33; 

	public const int range = 41; 
	public const int arm = 34; 

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

	public const int foot = 39; 
	public const int lightsource = 45; 

	public const int leg = 38; 
	public const int neck = 31; 

	public const int hand = 35; 
	public const int torso = 32; 

	public const int waist = 37; 
	public const int hand = 35; 

	public const int back = 33; 
	public const int foot = 39; 

	public const int torso = 32; 
	public const int finger = 36; 

	public const int neck = 31; 
	public const int token = 43; 

	public const int head = 30;

	public const int arm = 34; 
	public const int waist = 37; 

	public const int range = 41; 

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

SPELL

@@ -1,224 +1,212 @@

cs
public class SPELL
{
	public const int hand_Void = 50416; 

	public const int arrow_Fire = 50500; 

	public const int arrow_Cold = 50501; 

	public const int arrow_Lightning = 50502; 

	public const int arrow_Darkness = 50503; 

	public const int arrow_Mind = 50504; 

	public const int arrow_Poison = 50505; 
	public const int funnel_Nerve = 50608; 

	public const int arrow_Nether = 50506; 
	public const int hand_Sound = 50407; 

	public const int arrow_Sound = 50507;

	public const int arrow_Chaos = 50510; 
	public const int funnel_Sound = 50607; 

	public const int miasma_Sound = 50707; 

	public const int arrow_Holy = 50509;

	public const int arrow_Magic = 50511; 
	public const int bolt_Holy = 50309; 

	public const int arrow_Ether = 50512; 
	public const int ball_Holy = 50109; 

	public const int arrow_Acid = 50513; 
	public const int puddle_Sound = 50907; 

	public const int arrow_Cut = 50514; 
	public const int ball_Nerve = 50108; 

	public const int arrow_Impact = 50515; 
	public const int bolt_Nerve = 50308; 

	public const int arrow_Void = 50516; 
	public const int hand_Nerve = 50408; 

	public const int funnel_Fire = 50600; 
	public const int puddle_Nerve = 50908; 

	public const int funnel_Cold = 50601; 
	public const int weapon_Nerve = 50808; 

	public const int miasma_Nerve = 50708; 

	public const int arrow_Nerve = 50508;

	public const int funnel_Lightning = 50602; 
	public const int weapon_Sound = 50807; 

	public const int hand_Cut = 50414; 
	public const int hand_Holy = 50409; 

	public const int hand_Acid = 50413; 
	public const int funnel_Poison = 50605; 

	public const int hand_Fire = 50400; 
	public const int ball_Sound = 50107; 

	public const int bolt_Void = 50316; 
	public const int funnel_Holy = 50609; 

	public const int bolt_Impact = 50315; 
	public const int bolt_Mind = 50304; 

	public const int bolt_Cut = 50314; 
	public const int hand_Mind = 50404; 

	public const int bolt_Acid = 50313; 
	public const int arrow_Mind = 50504; 

	public const int bolt_Ether = 50312; 
	public const int funnel_Mind = 50604; 

	public const int bolt_Magic = 50311; 
	public const int miasma_Mind = 50704; 

	public const int hand_Cold = 50401; 
	public const int weapon_Mind = 50804; 

	public const int hand_Lightning = 50402; 
	public const int puddle_Mind = 50904; 

	public const int hand_Darkness = 50403; 
	public const int ball_Poison = 50105; 

	public const int hand_Mind = 50404; 
	public const int bolt_Poison = 50305; 

	public const int hand_Poison = 50405;

	public const int hand_Nether = 50406; 

	public const int hand_Sound = 50407; 
	public const int arrow_Poison = 50505; 

	public const int hand_Nerve = 50408; 
	public const int miasma_Poison = 50705; 

	public const int hand_Holy = 50409; 
	public const int weapon_Poison = 50805; 

	public const int hand_Chaos = 50410; 
	public const int puddle_Poison = 50905; 

	public const int hand_Magic = 50411; 
	public const int ball_Nether = 50106; 

	public const int hand_Ether = 50412; 
	public const int bolt_Nether = 50306; 

	public const int hand_Impact = 50415; 
	public const int hand_Nether = 50406; 

	public const int funnel_Darkness = 50603; 
	public const int arrow_Nether = 50506; 

	public const int weapon_Lightning = 50802; 
	public const int funnel_Nether = 50606; 

	public const int funnel_Poison = 50605; 
	public const int miasma_Nether = 50706; 

	public const int weapon_Mind = 50804; 
	public const int weapon_Nether = 50806; 

	public const int weapon_Poison = 50805; 
	public const int puddle_Nether = 50906; 

	public const int weapon_Nether = 50806; 
	public const int bolt_Sound = 50307; 

	public const int weapon_Sound = 50807; 
	public const int miasma_Holy = 50709; 

	public const int weapon_Nerve = 50808; 
	public const int weapon_Acid = 50813; 

	public const int weapon_Holy = 50809; 
	public const int puddle_Holy = 50909; 

	public const int weapon_Chaos = 50810; 
	public const int miasma_Acid = 50713; 

	public const int weapon_Magic = 50811; 
	public const int puddle_Acid = 50913; 

	public const int weapon_Ether = 50812; 
	public const int ball_Cut = 50114; 

	public const int weapon_Acid = 50813; 
	public const int bolt_Cut = 50314; 

	public const int weapon_Cut = 50814; 
	public const int hand_Cut = 50414; 

	public const int weapon_Impact = 50815; 
	public const int arrow_Cut = 50514; 

	public const int weapon_Void = 50816; 
	public const int funnel_Cut = 50614; 

	public const int weapon_Darkness = 50803; 
	public const int miasma_Cut = 50714; 

	public const int puddle_Fire = 50900; 
	public const int weapon_Cut = 50814; 

	public const int puddle_Lightning = 50902; 
	public const int puddle_Cut = 50914; 

	public const int puddle_Darkness = 50903; 
	public const int ball_Impact = 50115; 

	public const int puddle_Mind = 50904; 
	public const int funnel_Acid = 50613; 

	public const int puddle_Poison = 50905; 
	public const int bolt_Impact = 50315; 

	public const int puddle_Nether = 50906; 
	public const int arrow_Impact = 50515; 

	public const int puddle_Sound = 50907; 
	public const int funnel_Impact = 50615; 

	public const int puddle_Nerve = 50908; 
	public const int miasma_Impact = 50715; 

	public const int puddle_Holy = 50909; 
	public const int weapon_Impact = 50815; 

	public const int puddle_Chaos = 50910; 
	public const int puddle_Impact = 50915; 

	public const int puddle_Magic = 50911; 
	public const int ball_Void = 50116; 

	public const int puddle_Ether = 50912; 
	public const int bolt_Void = 50316; 

	public const int puddle_Acid = 50913; 
	public const int hand_Void = 50416; 

	public const int puddle_Cut = 50914; 
	public const int arrow_Void = 50516; 

	public const int puddle_Cold = 50901; 
	public const int funnel_Void = 50616; 

	public const int funnel_Mind = 50604; 
	public const int miasma_Void = 50716; 

	public const int bolt_Chaos = 50310; 
	public const int hand_Impact = 50415; 

	public const int weapon_Fire = 50800; 
	public const int arrow_Acid = 50513; 

	public const int funnel_Nether = 50606; 
	public const int hand_Acid = 50413; 

	public const int funnel_Sound = 50607; 
	public const int bolt_Acid = 50313; 

	public const int funnel_Nerve = 50608; 
	public const int ball_Chaos = 50110; 

	public const int funnel_Holy = 50609; 
	public const int bolt_Chaos = 50310; 

	public const int funnel_Chaos = 50610; 
	public const int hand_Chaos = 50410; 

	public const int funnel_Magic = 50611; 
	public const int arrow_Chaos = 50510; 

	public const int funnel_Ether = 50612; 
	public const int funnel_Chaos = 50610; 

	public const int funnel_Acid = 50613; 
	public const int miasma_Chaos = 50710; 

	public const int funnel_Cut = 50614; 
	public const int weapon_Chaos = 50810; 

	public const int funnel_Impact = 50615; 
	public const int puddle_Chaos = 50910; 

	public const int funnel_Void = 50616; 
	public const int ball_Magic = 50111; 

	public const int miasma_Fire = 50700; 
	public const int bolt_Magic = 50311; 

	public const int miasma_Cold = 50701; 
	public const int hand_Magic = 50411; 

	public const int weapon_Cold = 50801; 
	public const int arrow_Magic = 50511; 

	public const int miasma_Lightning = 50702; 
	public const int funnel_Magic = 50611; 

	public const int miasma_Mind = 50704; 
	public const int miasma_Magic = 50711; 

	public const int miasma_Poison = 50705; 
	public const int weapon_Magic = 50811; 

	public const int miasma_Nether = 50706; 
	public const int puddle_Magic = 50911; 

	public const int miasma_Sound = 50707; 
	public const int ball_Ether = 50112; 

	public const int miasma_Nerve = 50708; 
	public const int bolt_Ether = 50312; 

	public const int miasma_Holy = 50709; 
	public const int hand_Ether = 50412; 

	public const int miasma_Chaos = 50710; 
	public const int arrow_Ether = 50512; 

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

	public const int miasma_Ether = 50712;

	public const int miasma_Acid = 50713; 

	public const int miasma_Cut = 50714; 
	public const int weapon_Ether = 50812; 

	public const int miasma_Impact = 50715; 
	public const int puddle_Ether = 50912; 

	public const int miasma_Void = 50716; 
	public const int ball_Acid = 50113; 

	public const int miasma_Darkness = 50703; 
	public const int weapon_Holy = 50809; 

	public const int bolt_Holy = 50309; 
	public const int ball_Mind = 50104; 

	public const int ball_Lightning = 50102; 
	public const int bolt_Fire = 50300; 

	public const int bolt_Sound = 50307; 
	public const int weapon_Darkness = 50803; 

	public const int SpMutation = 8380;

@@ -266,11 +254,15 @@ public class SPELL

cs

	public const int SpSpeedUp = 8510;

	public const int SpSilence = 8700; 

	public const int SpWeakness = 8702; 

	public const int SpLevitate = 8300;

	public const int SpReconstruction = 8288; 
	public const int SpWeakResEle = 8704; 

	public const int SpChangeMaterialG = 8286; 
	public const int SpReconstruction = 8288; 

	public const int SpChangeMaterial = 8285;

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

cs

	public const int SpTeleportShort = 8201;

	public const int SpReturn = 8220; 
	public const int SpGate = 8202; 

	public const int SpSilence = 8700; 
	public const int SpReturn = 8220; 

	public const int SpEvac = 8221;

	public const int SpIdentify = 8230; 

	public const int SpIdentifyG = 8232;

	public const int SpUncurse = 8240;

@@ -322,71 +316,71 @@ public class SPELL

cs

	public const int SpChangeMaterialLesser = 8284;

	public const int SpIdentify = 8230; 
	public const int SpChangeMaterialG = 8286; 

	public const int bolt_Nerve = 50308; 
	public const int SpBane = 8706; 

	public const int SpWeakness = 8702; 
	public const int SpGravity = 8708; 

	public const int SpBane = 8706; 
	public const int SpSpeedDown = 8710; 

	public const int ball_Cold = 50101; 
	public const int miasma_Fire = 50700; 

	public const int ball_Darkness = 50103; 
	public const int weapon_Fire = 50800; 

	public const int ball_Mind = 50104; 
	public const int puddle_Fire = 50900; 

	public const int ball_Poison = 50105; 
	public const int ball_Cold = 50101; 

	public const int ball_Nether = 50106; 
	public const int bolt_Cold = 50301; 

	public const int ball_Sound = 50107; 
	public const int hand_Cold = 50401; 

	public const int ball_Nerve = 50108; 
	public const int arrow_Cold = 50501; 

	public const int ball_Holy = 50109; 
	public const int funnel_Cold = 50601; 

	public const int ball_Chaos = 50110; 
	public const int miasma_Cold = 50701; 

	public const int ball_Magic = 50111; 
	public const int weapon_Cold = 50801; 

	public const int ball_Ether = 50112; 
	public const int puddle_Cold = 50901; 

	public const int ball_Acid = 50113; 
	public const int ball_Lightning = 50102; 

	public const int ball_Cut = 50114; 
	public const int bolt_Lightning = 50302; 

	public const int ball_Impact = 50115; 
	public const int hand_Lightning = 50402; 

	public const int ball_Void = 50116; 
	public const int arrow_Lightning = 50502; 

	public const int puddle_Impact = 50915; 
	public const int funnel_Lightning = 50602; 

	public const int bolt_Fire = 50300; 
	public const int miasma_Lightning = 50702; 

	public const int bolt_Cold = 50301; 
	public const int weapon_Lightning = 50802; 

	public const int bolt_Lightning = 50302; 
	public const int puddle_Lightning = 50902; 

	public const int bolt_Darkness = 50303; 
	public const int ball_Darkness = 50103; 

	public const int bolt_Mind = 50304; 
	public const int bolt_Darkness = 50303; 

	public const int bolt_Poison = 50305; 
	public const int hand_Darkness = 50403; 

	public const int bolt_Nether = 50306; 
	public const int arrow_Darkness = 50503; 

	public const int ball_Fire = 50100; 
	public const int funnel_Darkness = 50603; 

	public const int SpDrawBacker = 9503; 
	public const int miasma_Darkness = 50703; 

	public const int SpDrawMetal = 9502; 
	public const int funnel_Fire = 50600; 

	public const int SpDrawMonster = 9501; 
	public const int arrow_Fire = 50500; 

	public const int SpGravity = 8708; 
	public const int hand_Fire = 50400; 

	public const int SpSpeedDown = 8710; 
	public const int weapon_Void = 50816; 

	public const int SpTelepathy = 8770;

@@ -406,15 +400,15 @@ public class SPELL

cs

	public const int SpSummon = 9000;

	public const int SpWeakResEle = 8704; 

	public const int SpSummonUndeadSister = 9001;

	public const int SpSummonFire = 9002; 

	public const int SpSummonTentacle = 9003;

	public const int SpSummonMonster = 9004; 
	public const int puddle_Darkness = 50903; 

	public const int SpSummonPawn = 9005; 
	public const int SpSummonMonster = 9004; 

	public const int SpSummonYeek = 9006;

@@ -432,34 +426,42 @@ public class SPELL

cs

	public const int SpWardMonster = 9500;

	public const int SpSummonFire = 9002; 
	public const int SpDrawMonster = 9501; 

	public const int SpDrawMetal = 9502; 

	public const int SpDrawBacker = 9503; 

	public const int ball_Fire = 50100; 

	public const int SpSummonPawn = 9005; 

	public const int puddle_Void = 50916;

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

Thing

@@ -1895,6 +1895,7 @@ public void TryLickEnchant(Chara c, bool msg = true, Chara tg = null, BodySlot s

cs
	{
		return;
	}
	SetInt(107, 1); 
	if (tg == null)
	{
		Rand.SetSeed(EClass.world.date.day + source._index + c.uid);

@@ -1904,7 +1905,11 @@ public void TryLickEnchant(Chara c, bool msg = true, Chara tg = null, BodySlot s

cs
			PlaySound("offering");
			PlayEffect("mutation");
		}
		AddEnchant(base.LV); 
		Element element = AddEnchant(5 + Mathf.Max(EClass.pc.LUC, 0)); 
		if (element != null) 
		{ 
			SetInt(107, element.id); 
		} 
	}
	else
	{

@@ -1919,8 +1924,9 @@ public void TryLickEnchant(Chara c, bool msg = true, Chara tg = null, BodySlot s

cs
		}
		if (list.Count > 0)
		{
			Element element = list.RandomItem(); 
			elements.ModBase(element.id, Mathf.Max(EClass.rnd(Mathf.Abs(element.vBase / 5)), 1)); 
			Element element2 = list.RandomItem(); 
			elements.ModBase(element2.id, Mathf.Max(EClass.rnd(Mathf.Abs(element2.vBase / 5)), 1)); 
			SetInt(107, element2.id); 
		}
		if (msg)
		{

@@ -1930,7 +1936,6 @@ public void TryLickEnchant(Chara c, bool msg = true, Chara tg = null, BodySlot s

cs
			}
		}
		Rand.SetSeed();
		SetInt(107, 1); 
	}

	public Element AddEnchant(int lv = -1)

TraitMoongateEx

@@ -40,7 +40,24 @@ public void _OnUse()

cs
		EClass.pc.SayNothingHappans();
		return;
	}
	list.Sort((MapMetaData a, MapMetaData b) => DateTime.Compare(a.date, b.date)); 
	foreach (MapMetaData item2 in list) 
	{ 
		bool flag = false; 
		foreach (string item3 in EClass.player.favMoongate) 
		{ 
			_ = item3; 
			if (EClass.player.favMoongate.Contains(item2.id)) 
			{ 
				flag = true; 
				break; 
			} 
		} 
		if (!flag) 
		{ 
			EClass.player.favMoongate.Remove(item2.id); 
		} 
	} 
	Sort(); 
	LayerList layer = null;
	bool skipDialog = false;
	layer = EClass.ui.AddLayer<LayerList>().SetList2(list, (MapMetaData a) => a.name, delegate(MapMetaData a, ItemGeneral b)

@@ -71,14 +88,38 @@ public void _OnUse()

cs
					});
				}
			});
			UIButton uIButton = b.AddSubButton(EClass.core.refs.icons.fav, delegate
			{ 
				SE.ClickGeneral(); 
				EClass.player.ToggleFavMoongate(a.id); 
				Sort(); 
				EClass.ui.FreezeScreen(0.1f); 
				layer.list.List(); 
			}); 
			uIButton.icon.SetAlpha(EClass.player.favMoongate.Contains(a.id) ? 1f : 0.3f); 
			uIButton.icon.SetNativeSize(); 
			void func()
			{
				IO.DeleteFile(a.path);
				list.Remove(a);
				EClass.ui.FreezeScreen(0.1f); 
				layer.list.List();
				SE.Trash();
			}
		}).SetSize(500f)
			.SetTitles("wMoongate") as LayerList;
		static DateTime GetDate(MapMetaData meta) 
		{ 
			int num = EClass.player.favMoongate.IndexOf(meta.id); 
			if (num == -1) 
			{ 
				return meta.date; 
			} 
			return meta.date + new TimeSpan(-3650 - num, 0, 0, 0, 0); 
		} 
		void Sort() 
		{ 
			list.Sort((MapMetaData a, MapMetaData b) => DateTime.Compare(GetDate(a), GetDate(b))); 
		} 
	}
}

UI

@@ -550,7 +550,7 @@ public void Say(string text, Sprite sprite = null)

cs
		Debug.Log(text);
	}

	public void FreezeScreen(float duration) 
	public void FreezeScreen(float duration, bool highlight = true) 
	{
		if ((bool)texFreeze)
		{

@@ -559,14 +559,18 @@ public void FreezeScreen(float duration)

cs
		texFreeze = ScreenCapture.CaptureScreenshotAsTexture();
		imageFreeze.SetActive(enable: true);
		imageFreeze.texture = texFreeze;
		if (duration != 0f) 
		if (duration == 0f) 
		{ 
			return; 
		} 
		TweenUtil.Tween(duration, null, delegate
		{
			TweenUtil.Tween(duration, null, delegate
			UnfreezeScreen(); 
			if (highlight) 
			{
				UnfreezeScreen(); 
				UIButton.TryHihlight();
			}); 
		} 
			} 
		}); 
	}

	public void UnfreezeScreen()