Skip to content

EA 23.60 Nightly

December 18, 2024

27 files modified. 2 new files created.

Important Changes

None.

ABILITY

@@ -2,7 +2,7 @@

cs

public class ABILITY
{
	public const int ActKick = 5042; 
	public const int ActChat = 5044; 

	public const int TaskMoveInstalled = 5036;

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

cs

	public const int AI_Read = 5041;

	public const int AI_TendAnimal = 5043; 
	public const int ActKick = 5042; 

	public const int ActChat = 5044; 
	public const int AI_TendAnimal = 5043; 

	public const int AI_Drink = 5045;

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

cs

	public const int AI_Sleep = 5050;

	public const int ActZap = 5051; 
	public const int TaskBuild = 5035; 

	public const int ActBash = 5052; 
	public const int ActZap = 5051; 

	public const int TaskHarvest = 5053;

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

cs

	public const int ActPray = 6050;

	public const int TaskBuild = 5035; 
	public const int ActEscape = 6400; 

	public const int GoalIdle = 5034; 
	public const int ActBash = 5052; 

	public const int ActCancelTask = 5033; 
	public const int ActSuicide = 6410; 

	public const int GoalIdle = 5034; 

	public const int AI_Equip = 5032;

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

cs

	public const int TaskAttack = 5015;

	public const int ActEscape = 6400; 
	public const int ActCancelTask = 5033; 

	public const int TaskTame = 5016;

@@ -134,9 +136,9 @@ public class ABILITY

cs

	public const int ActMelee = 5001;

	public const int ActSuicide = 6410; 
	public const int ActDuplicate = 6420; 

	public const int ActRush = 6450; 
	public const int ActCrabBreathe = 6500; 

	public const int ActLulwyTrick = 6902;

@@ -152,13 +154,13 @@ public class ABILITY

cs

	public const int breathe_Lightning = 50202;

	public const int breathe_Darkness = 50203; 
	public const int ActRush = 6450; 

	public const int ActDuplicate = 6420; 
	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;

@@ -176,35 +178,35 @@ public class ABILITY

cs

	public const int breathe_Cut = 50214;

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

	public const int ActManaAbsorb = 6900; 
	public const int breathe_Nether = 50206; 

	public const int breathe_Mind = 50204; 
	public const int ActManaAbsorb = 6900; 

	public const int StTaunt = 6700; 
	public const int breathe_Darkness = 50203; 

	public const int StManaCost = 6720;

	public const int ActCrabBreathe = 6500; 
	public const int ActEntangle = 6601; 

	public const int ActCurse = 6600;

	public const int ActEntangle = 6601; 

	public const int ActDraw = 6602;

	public const int ActNTR = 6603; 

	public const int ActWeaken = 6610;

	public const int ActFear = 6611;

	public const int ActGazeDim = 6620; 
	public const int ActTouchSleep = 6612; 

	public const int ActGazeInsane = 6621;

	public const int ActGazeMutation = 6622;

	public const int ActWait = 5000; 
	public const int ActGazeDim = 6620; 

	public const int ActInsult = 6630;

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

cs

	public const int ActThrowPotion = 6661;

	public const int StTaunt = 6700; 

	public const int ActDrainBlood = 6626;

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

AIAct

@@ -77,6 +77,8 @@ public bool IsMoveAI

cs

	public virtual bool IsIdle => false;

	public virtual bool CancelOnAggro => true; 

	public virtual bool PushChara => true;

	public virtual int MaxProgress => 20;

AI_Fuck

@@ -17,6 +17,8 @@ public enum FuckType

cs

	public bool succubus;

	public bool ntr; 

	public int maxProgress;

	public int progress;

@@ -33,6 +35,10 @@ public enum FuckType

cs

	public override int CurrentProgress => progress;

	public override bool CancelOnAggro => !ntr; 

	public override bool CancelWhenDamaged => !ntr; 

	public virtual bool CanTame()
	{
		return false;

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

cs
		cc.SetTempHand(1104, -1);
	}
	int destDist = ((Type == FuckType.fuck) ? 1 : 1);
	maxProgress = ((!EClass.debug.enable) ? 25 : 0); 
	maxProgress = 25; 
	if (succubus)
	{
		cc.Talk("seduce");

@@ -273,4 +279,14 @@ static void SuccubusExp(Chara c, Chara tg)

cs
			}
		}
	}

	public override void OnCancel() 
	{ 
		Debug.Log("Cancel"); 
	} 

	public override void OnSuccess() 
	{ 
		Debug.Log("SUCCESS"); 
	} 
}

AI_Trolley

@@ -44,6 +44,8 @@ public override bool CancelWhenDamaged

cs

	public override bool CancelWhenMoved => true;

	public override bool CancelOnAggro => false; 

	public override bool ShowCursor => false;

	public override bool CanManualCancel()

ActEffect

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

cs
	case EffectId.Draw:
	{
		Point point = CC.pos.GetRandomPoint(1)?.GetNearestPoint(allowBlock: false, allowChara: false);
		if (point == null || !CC.CanSeeLos(point)) 
		if (point == null || !CC.CanSeeLos(point) || (CC.IsPCFactionOrMinion && TC.IsPCFactionOrMinion && TC.isRestrained)) 
		{
			break;
		}

+ActNTR

File Created
cs
public class ActNTR : Ability
{
	public override bool CanPerform()
	{
		if (Act.TC.isChara)
		{
			return Act.TC.Chara.conSleep != null;
		}
		return false;
	}

	public override bool Perform()
	{
		Act.CC.SetAI(new AI_Fuck
		{
			target = Act.TC.Chara,
			bitch = true,
			ntr = true
		});
		return true;
	}
}

BaseTileMap

@@ -2619,7 +2619,7 @@ public virtual void DrawTile()

cs
							thingPos.z += pref.z;
						}
					}
					if (!tileType.UseMountHeight && m > 1) 
					if (!tileType.UseMountHeight && m > 10) 
					{
						flag11 = true;
					}

BuildMenu

@@ -96,7 +96,7 @@ public static void Toggle()

cs
	EMono.player.hotbars.bars[3].dirty = true;
	EMono.player.hotbars.ResetHotbar(4);
	EMono.player.hotbars.bars[4].dirty = true;
	if (ActionMode.LastBuildMode == ActionMode.Build) 
	if (ActionMode.LastBuildMode == ActionMode.Build || ActionMode.LastBuildMode == ActionMode.Picker) 
	{
		ActionMode.Inspect.Activate();
	}

Chara

@@ -3619,7 +3619,7 @@ public override void Tick()

cs
			{
				enemy = null;
			}
			else if (!IsPC && ((!(ai is GoalCombat) && !(ai is AI_Trolley)) || !ai.IsRunning)) 
			else if (!IsPC && (ai.CancelOnAggro || !ai.IsRunning)) 
			{
				SetAIAggro();
			}

@@ -3804,7 +3804,7 @@ public Thing TryPoisonPotion(Thing t)

cs
{
	if (t.trait is TraitPotion && t.id != "1165" && !t.source.tag.Contains("neg") && EClass.rnd(2) == 0 && HasElement(1565))
	{
		string text = EClass.sources.things.rows.Where((SourceThing.Row a) => a._origin == "potion" && a.tag.Contains("neg")).ToList().RandomItemWeighted((SourceThing.Row a) => a.chance) 
		string text = EClass.sources.things.rows.Where((SourceThing.Row a) => a._origin == "potion" && a.tag.Contains("neg") && a.chance > 100).ToList().RandomItemWeighted((SourceThing.Row a) => a.chance) 
			.id;
		Say("poisonDrip", this);
		int num = t.Num;

@@ -4455,7 +4455,7 @@ public void GetRevived()

cs
	{
		return;
	}
	if (!IsPC && !trait.CanJoinPartyResident) 
	if (!IsPC && (!trait.CanJoinPartyResident || !trait.CanJoinParty)) 
	{
		if (homeZone != null && EClass._zone != homeZone)
		{

ConSleep

@@ -137,6 +137,9 @@ public override void Tick()

cs
				member.AddCondition<ConSleep>(5 + EClass.rnd(10), force: true);
			}
		}
		owner.RemoveCondition<ConBleed>(); 
		owner.RemoveCondition<ConPoison>(); 
		owner.RemoveCondition<ConMiasma>(); 
		EClass.ui.AddLayer<LayerSleep>().Sleep(num2, pcBed, pcPillow);
		return;
	}

Core

@@ -395,6 +395,10 @@ private void LateUpdate()

cs

	public void OnApplicationFocus(bool focus)
	{
		if (config == null) 
		{ 
			return; 
		} 
		if (focus)
		{
			AudioListener.volume = 1f;

DOMAIN

@@ -2,6 +2,8 @@

cs

public class DOMAIN
{
	public const int domArcane = 804; 

	public const int domTest = 800;

	public const int domSurvival = 801;

@@ -10,34 +12,32 @@ public class DOMAIN

cs

	public const int domMiracle = 803;

	public const int domArcane = 804; 

	public const int domComm = 805;

	public const int domElement = 806; 
	public const int domEarth = 812; 

	public const int domWind = 807;

	public const int domHarvest = 808; 

	public const int domMachine = 809;

	public const int domLuck = 810;

	public const int domHealing = 811;

	public const int domEarth = 812; 

	public const int domHarmony = 815; 

	public const int domEyth = 814;

	public const int domHarvest = 808; 

	public const int domOblivion = 813;

	public const int domElement = 806; 

	public const int domHarmony = 815; 

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

ELEMENT

@@ -395,7 +395,7 @@ public virtual Sprite GetSprite()

cs

	public int GetMaterialSourceValue(Thing t, int v)
	{
		if (id == 2) 
		if (id == 2 || v < 0) 
		{
			return v;
		}

ENC

@@ -8,23 +8,21 @@ public class ENC

cs

	public const int r_DV = 650;

	public const int r_mana = 641; 

	public const int mod_scatter = 607;

	public const int mod_ammo_recover = 604; 

	public const int mod_precision = 605;

	public const int mod_drill = 606;

	public const int r_life = 640; 

	public const int noDamage = 654;

	public const int r_life = 640; 
	public const int r_mana = 641; 

	public const int onlyPet = 655;

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

	public const int absorbHP = 660;

@@ -40,21 +38,23 @@ public class ENC

cs

	public const int meleeDistance = 666;

	public const int convertImpact = 865; 
	public const int convertLightning = 852; 

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

	public const int convertFire = 850; 
	public const int convertImpact = 865; 

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

	public const int permaCurse = 656;

	public const int mod_rapid = 602; 
	public const int mod_ammo_knockback = 603; 

	public const int sustain_MAG = 446;

	public const int mod_ammo = 600; 
	public const int mod_reload = 601; 

	public const int breathing = 429; 

	public const int allNeckHunt = 428;

@@ -66,9 +66,7 @@ public class ENC

cs

	public const int negateSleep = 424;

	public const int mod_reload = 601; 

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

	public const int negateBlind = 421;

@@ -78,7 +76,7 @@ public class ENC

cs

	public const int invisibility = 415;

	public const int breathing = 429; 
	public const int sustain_STR = 440; 

	public const int slowCorruption = 412;

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

cs

	public const int encSpell = 411;

	public const int sustain_STR = 440; 
	public const int sustain_END = 441; 

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

	public const int bane_all = 468; 
	public const int revealFaith = 481; 

	public const int mod_ammo = 600; 

	public const int optimizeMana = 483;

	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;

@@ -132,10 +132,12 @@ public class ENC

cs

	public const int bane_fairy = 462;

	public const int bane_dragon = 460; 

	public const int bane_undead = 461;

	public const int mod_rapid = 602; 

	public const int sustain_CHA = 447; 

	public const int sustain_WIL = 445;

	public const int sustain_LER = 444;

@@ -144,19 +146,17 @@ public class ENC

cs

	public const int sustain_DEX = 442;

	public const int sustain_END = 441; 

	public const int sustain_CHA = 447; 
	public const int bane_dragon = 460; 

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

FACTION

@@ -4,62 +4,64 @@

cs

public class FACTION
{
	public const int bfSnow = 3602; 
	public const int fRation = 2207; 

	public const int bfCave = 3500;

	public const int bfPlain = 3600;

	public const int bfGeyser = 3701; 

	public const int bfFertile = 3700; 

	public const int bfForest = 3601;

	public const int bfBeach = 3604;

	public const int bfHill = 3603;

	public const int fRation = 2207; 

	public const int bfSea = 3605;

	public const int fAttraction = 2206; 
	public const int bfFertile = 3700; 

	public const int fHeirloom = 2120; 
	public const int bfGeyser = 3701; 

	public const int fFood = 2204; 
	public const int bfSnow = 3602; 

	public const int fAttraction = 2206; 

	public const int fMoral = 2203;

	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 fLuck = 2118; 

	public const int fAdmin = 2115; 
	public const int fLoyal = 2117; 

	public const int fEducation = 2116;

	public const int fLoyal = 2117; 
	public const int fHeirloom = 2120; 

	public const int fLuck = 2118; 
	public const int fAdmin = 2115; 

	public const int fTaxEvasion = 2119; 
	public const int bfRuin = 3702; 

	public const int fConstruction = 2003; 

	public const int fSafety = 2205;

	public const int bfTranquil = 3703; 
	public const int fTaxEvasion = 2119; 

	public const int bfRuin = 3702; 
	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;

	public const int actBuildAnywhere = 4003;

@@ -72,8 +74,6 @@ public class FACTION

cs

	public const int bfStart = 3900;

	public const int actBuildInspect = 4006; 

	public const int bfChitin = 3805;

	public const int bfIce = 3804;

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

cs

	public const int bfSilica = 3802;

	public const int actBuildRecipe = 4005; 
	public const int actBuildInspect = 4006; 

	public const int bfCoal = 3800;

	public const int bfMushroom = 3801; 
	public const int bfLandmark5 = 3784; 

	public const int bfMonster = 3707; 
	public const int bfLandmark4 = 3783; 

	public const int bfFreshAir = 3708; 
	public const int bfLandmark3 = 3782; 

	public const int bfBasin = 3709; 
	public const int bfLandmark2 = 3781; 

	public const int bfBreed = 3710; 
	public const int bfLandmark1 = 3780; 

	public const int bfFish = 3706; 
	public const int bfBreed = 3710; 

	public const int bfLandmark2 = 3781; 
	public const int bfBasin = 3709; 

	public const int bfLandmark3 = 3782; 
	public const int bfFreshAir = 3708; 

	public const int bfLandmark4 = 3783; 
	public const int bfMonster = 3707; 

	public const int bfLandmark5 = 3784; 
	public const int bfFish = 3706; 

	public const int bfLandmark1 = 3780; 
	public const int bfMushroom = 3801; 

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

FEAT

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

cs

public class FEAT
{
	public const int featMana = 1611; 
	public const int featStamina = 1612; 

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

	public const int featMAG = 1625; 
	public const int featDEX = 1621; 

	public const int featLER = 1624; 
	public const int featCHA = 1627; 

	public const int featPER = 1623;

	public const int featEND = 1622; 
	public const int featLER = 1624; 

	public const int featDEX = 1621; 
	public const int featMAG = 1625; 

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

	public const int featStamina = 1612; 
	public const int featEND = 1622; 

	public const int featCHA = 1627; 
	public const int featMana = 1611; 

	public const int featWitch = 1417; 
	public const int featSwordsage = 1418; 

	public const int featManaMeat = 1421;

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

cs

	public const int featMilitant = 1419;

	public const int featSwordsage = 1418; 
	public const int featWitch = 1417; 

	public const int featInquisitor = 1416;

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

cs

	public const int featLuckyCat = 1412;

	public const int featEarthStrength = 1411; 

	public const int featLuck = 1628;

	public const int featLife = 1610;

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

cs

	public const int featDefense = 1631;

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

	public const int featManaCost = 1657;

@@ -63,7 +61,7 @@ public class FEAT

cs

	public const int featModelBeliever = 1655;

	public const int featHeavyCasting = 1654; 
	public const int featDreamWaker = 1653; 

	public const int featRapidArrow = 1652;

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

cs

	public const int featLonelySoul = 1646;

	public const int featBoost = 1409; 

	public const int featDreamWaker = 1653; 
	public const int featReboot = 1410; 

	public const int featPaladin = 1407; 
	public const int featHeavyCasting = 1654; 

	public const int featAcidBody = 1223; 
	public const int featPaladin2 = 1408; 

	public const int featShiva = 1224;

@@ -125,9 +121,9 @@ public class FEAT

cs

	public const int featNirvana = 1231;

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

	public const int featCosmicHorror = 1233; 
	public const int featHeavyEater = 1234; 

	public const int featLightEater = 1235;

@@ -147,15 +143,19 @@ public class FEAT

cs

	public const int featGod_harvest1 = 1325;

	public const int featHeavyEater = 1234; 

	public const int featGod_luck1 = 1330;

	public const int featSpike = 1221; 
	public const int featGod_harmony1 = 1335; 

	public const int featElderCrab = 1219; 
	public const int featAcidBody = 1223; 

	public const int featPaladin2 = 1408; 
	public const int featGod_oblivion1 = 1340; 

	public const int featSplit = 1222; 

	public const int featFate = 1220; 

	public const int featBoost = 1409; 

	public const int featSlowFood = 1200;

@@ -173,10 +173,10 @@ public class FEAT

cs

	public const int featFoxBless = 1207;

	public const int featFate = 1220; 

	public const int featFoxLearn = 1208;

	public const int featFluffyTail = 1209; 

	public const int featUndead = 1210;

	public const int featSnail = 1211;

@@ -195,47 +195,47 @@ public class FEAT

cs

	public const int featMetal = 1218;

	public const int featFluffyTail = 1209; 
	public const int featElderCrab = 1219; 

	public const int featGod_harmony1 = 1335; 
	public const int featSpike = 1221; 

	public const int featBaby = 1232; 
	public const int featGod_trickery1 = 1345; 

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

	public const int featGod_trickery1 = 1345; 
	public const int featThief = 1401; 

	public const int featGod_moonshadow1 = 1350;

	public const int featGod_strife1 = 1355;

	public const int featThief = 1401; 
	public const int featWarrior = 1400; 

	public const int featWizard = 1402;

	public const int featFarmer = 1403;

	public const int featArcher = 1404; 

	public const int featWarrior = 1400; 
	public const int featPianist = 1405; 

	public const int featTourist = 1406;

	public const int featPianist = 1405; 
	public const int featArcher = 1404; 

	public const int featPaladin = 1407; 

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

FOOD

@@ -1,9 +1,9 @@

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

	public const int food_poison = 702;

	public const int food_CHA = 700; 

	public const int food_love = 703;

	public const int food_bug = 704;

@@ -12,7 +12,7 @@ public class FOOD

cs

	public const int loseWeight = 706;

	public const int food_CHA = 700; 
	public const int food_cat = 701; 

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

GoalCombat

@@ -37,6 +37,8 @@ public class ItemAbility

cs

	public override bool CancelWhenDamaged => false;

	public override bool CancelOnAggro => false; 

	public Tactics tactics => owner.tactics;

	public override bool CanManualCancel()

@@ -177,35 +179,52 @@ public override IEnumerable<Status> Run()

cs
		int dist = owner.Dist(tc);
		bool move = owner.host == null && (tactics.ChanceMove > EClass.rnd(100) || (owner.IsPC && tc.HasCondition<ConFear>() && dist >= EClass.pc.GetSightRadius() - 1));
		bool haltSecondMove = false;
		if (!owner.IsPC && !owner.isBlind && tc.source.HasTag(CTAG.suicide) && owner.IsNeutralOrAbove() && !owner.isSummon && !owner.IsMinion && !tc.HasCondition<ConWet>()) 
		if (!owner.IsPC && owner.IsNeutralOrAbove() && !owner.isBlind && !owner.isSummon && !owner.IsMinion) 
		{
			if (dist <= 3) 
			int num = -1; 
			if (tc.HasElement(1221)) 
			{ 
				num = 1; 
			} 
			if (tc.source.HasTag(CTAG.suicide) && !tc.HasCondition<ConWet>()) 
			{
				if (EClass.rnd(15) == 0) 
				num = 3; 
			} 
			if (num > 0) 
			{ 
				if (dist <= num) 
				{
					owner.Talk("run_suicide"); 
					if (EClass.rnd(15) == 0) 
					{ 
						owner.Talk("run_suicide"); 
					} 
					if (owner.host == null && owner.TryMoveFrom(tc.pos) != 0) 
					{ 
						yield return Status.Running; 
						idleCount = 0; 
						continue; 
					} 
					if (EClass.debug.logCombat) 
					{ 
						Debug.Log("Failed to Run: " + owner.Name); 
					} 
				}
				if (owner.host == null && owner.TryMoveFrom(tc.pos) != 0) 
				if (dist == num + 1) 
				{
					yield return Status.Running; 
					haltSecondMove = true; 
					move = false; 
					idleCount = 0;
					continue; 
				}
			}
			else if (dist <= 5) 
			{ 
				haltSecondMove = true; 
				move = false; 
			} 
		}
		if (dontWander)
		{
			int num = owner.Dist(EClass.pc); 
			if (num > 3) 
			int num2 = owner.Dist(EClass.pc); 
			if (num2 > 3) 
			{
				int x = tc.pos.x;
				int z = tc.pos.z;
				if (EClass.pc.pos.Distance(owner.pos.x + ((x > owner.pos.x) ? 1 : ((x < owner.pos.x) ? (-1) : 0)), owner.pos.z + ((z > owner.pos.z) ? 1 : ((z < owner.pos.z) ? (-1) : 0))) >= num) 
				if (EClass.pc.pos.Distance(owner.pos.x + ((x > owner.pos.x) ? 1 : ((x < owner.pos.x) ? (-1) : 0)), owner.pos.z + ((z > owner.pos.z) ? 1 : ((z < owner.pos.z) ? (-1) : 0))) >= num2) 
				{
					move = false;
					haltSecondMove = true;

@@ -320,6 +339,10 @@ void CalmDown()

cs

	public bool TryMove(int dist)
	{
		if (EClass.debug.logCombat) 
		{ 
			Debug.Log("TryMove: " + owner.Name + "/" + dist); 
		} 
		if (owner.host != null)
		{
			return false;

@@ -465,9 +488,9 @@ public virtual bool TryUseAbility(int dist, bool beforeMove = false)

cs
			break;
		case "taunt":
		{
			bool flag7 = owner.HasCondition<StanceTaunt>(); 
			bool flag8 = tactics.source.taunt != -1 && 100 * owner.hp / owner.MaxHP >= tactics.source.taunt; 
			num = ((flag7 && !flag8) ? 100 : ((!flag7 && flag8) ? 100 : 0)); 
			bool flag6 = owner.HasCondition<StanceTaunt>(); 
			bool flag7 = tactics.source.taunt != -1 && 100 * owner.hp / owner.MaxHP >= tactics.source.taunt; 
			num = ((flag6 && !flag7) ? 100 : ((!flag6 && flag7) ? 100 : 0)); 
			break;
		}
		case "melee":

@@ -484,13 +507,20 @@ public virtual bool TryUseAbility(int dist, bool beforeMove = false)

cs
			{
				num -= (owner.IsPC ? 50 : 10);
			}
			if (tc.HasElement(1221)) 
			{ 
				num -= 40; 
			} 
			if (tc.HasElement(1223)) 
			if (dist <= 1) 
			{
				num -= 40; 
				if (tc.HasElement(1221)) 
				{ 
					num -= 40; 
				} 
				if (tc.HasElement(1223)) 
				{ 
					num -= 40; 
				} 
				if (tc.id == "hedgehog_ether") 
				{ 
					num = -999999; 
				} 
			}
			break;
		case "range":

@@ -535,13 +565,13 @@ public virtual bool TryUseAbility(int dist, bool beforeMove = false)

cs
			{
				continue;
			}
			bool flag6 = text == "dot"; 
			if (flag6 && (owner.isRestrained || (tc != null && tc.IsRestrainedResident))) 
			bool flag8 = text == "dot"; 
			if (flag8 && (owner.isRestrained || (tc != null && tc.IsRestrainedResident))) 
			{
				continue;
			}
			num = ((text == "attackMelee") ? tactics.P_Melee : tactics.P_Spell) + GetAttackMod(act);
			if (num > 0 && flag6) 
			if (num > 0 && flag8) 
			{
				num += 10;
			}

@@ -795,11 +825,17 @@ int HealFactor(Chara c)

cs
				break;
			}
		}
		if ((cost.cost <= 0 || EClass.rnd(100) <= tactics.AbilityChance) && ability2.act.CanPerform(owner, ability2.tg ?? tc) && owner.UseAbility(ability2.act, ability2.tg ?? tc, null, (ability2.act.HaveLongPressAction && ability2.pt) || ability2.aiPt)) 
		if (cost.cost > 0 && EClass.rnd(100) > tactics.AbilityChance) 
		{ 
			continue; 
		} 
		Chara chara = owner; 
		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)
			{
				Debug.Log(owner.Name + "/" + ability2.act.id + "/" + ability2.act.CanPerform(owner, ability2.tg ?? tc) + "/" + ability2.tg?.ToString() + "/" + tc); 
				Debug.Log("Used Ability: " + chara?.ToString() + "/" + ability2.act?.ToString() + "/" + ability2.tg?.ToString() + "/" + tc); 
				Debug.Log(ability2.act.CanPerform(chara, ability2.tg ?? tc)); 
			}
			return true;
		}

@@ -822,17 +858,17 @@ void BuildCharaList()

cs
		charas.Clear();
		charaBuilt = true;
		int sightRadius = owner.GetSightRadius();
		foreach (Chara chara in EClass._map.charas) 
		foreach (Chara chara2 in EClass._map.charas) 
		{
			if (chara != owner) 
			if (chara2 != owner) 
			{
				int num5 = owner.Dist(chara); 
				if (num5 > sightRadius || !owner.CanSeeLos(chara, num5)) 
				int num5 = owner.Dist(chara2); 
				if (num5 > sightRadius || !owner.CanSeeLos(chara2, num5)) 
				{
					continue;
				}
			}
			charas.Add(chara); 
			charas.Add(chara2); 
		}
	}
	int ForeachChara(ItemAbility a, Func<Chara, int> func, bool isFriendlyAbility)

@@ -844,36 +880,36 @@ int ForeachChara(ItemAbility a, Func<Chara, int> func, bool isFriendlyAbility)

cs
		}
		BuildCharaList();
		int num3 = 0;
		foreach (Chara chara2 in charas) 
		foreach (Chara chara3 in charas) 
		{
			int num4 = func(chara2); 
			int num4 = func(chara3); 
			if (num4 > 0)
			{
				if (isFriendlyAbility)
				{
					if (owner.IsPCParty)
					{
						if (!chara2.IsPCParty) 
						if (!chara3.IsPCParty) 
						{
							continue;
						}
					}
					else if (!owner.IsFriendOrAbove(chara2)) 
					else if (!owner.IsFriendOrAbove(chara3)) 
					{
						continue;
					}
					if (chara2 != owner) 
					if (chara3 != owner) 
					{
						num4 += tactics.P_Party;
					}
				}
				else if (!owner.IsHostile(chara2)) 
				else if (!owner.IsHostile(chara3)) 
				{
					continue;
				}
				if (num4 >= num3)
				{
					a.tg = chara2; 
					a.tg = chara3; 
					num3 = num4;
				}
			}

@@ -919,9 +955,9 @@ void GetNumEnemy(int radius)

cs
		}
		BuildCharaList();
		numEnemy = 0;
		foreach (Chara chara3 in charas) 
		foreach (Chara chara4 in charas) 
		{
			if (chara3.host == null && owner.IsHostile(chara3) && owner.Dist(chara3) < radius && owner.CanSeeLos(chara3)) 
			if (chara4.host == null && owner.IsHostile(chara4) && owner.Dist(chara4) < radius && owner.CanSeeLos(chara4)) 
			{
				numEnemy++;
			}

@@ -935,9 +971,9 @@ int GetNumNeutral(int radius)

cs
		}
		BuildCharaList();
		numNeutral = 0;
		foreach (Chara chara4 in charas) 
		foreach (Chara chara5 in charas) 
		{
			if (!chara4.IsPCFactionOrMinion && chara4.IsNeutralOrAbove() && owner.Dist(chara4) <= radius && owner.CanSeeLos(chara4)) 
			if (!chara5.IsPCFactionOrMinion && chara5.IsNeutralOrAbove() && owner.Dist(chara5) <= radius && owner.CanSeeLos(chara5)) 
			{
				numNeutral++;
			}

LayerInventory

@@ -535,18 +535,19 @@ public static LayerInventory CreateContainer(Card owner)

cs
		{
			return CreateContainerPC(owner);
		}
		Card container = owner; 
		Card card = owner; 
		if (owner.trait is TraitShippingChest)
		{
			container = ELayer.game.cards.container_shipping; 
			card = ELayer.game.cards.container_shipping; 
			card.things.SetSize(owner.things.width, owner.things.height); 
			ELayer.player.uidLastShippedZone = ELayer._zone.uid;
		}
		if (owner.trait is TraitDeliveryChest)
		{
			container = ELayer.game.cards.container_deliver; 
			card = ELayer.game.cards.container_deliver; 
			Tutorial.Play("deliver_box");
		}
		return CreateContainer(owner, container); 
		return CreateContainer(owner, card); 
	}

	public static LayerInventory CreateContainer(Card owner, Card container)

MUTATION

@@ -1,32 +1,34 @@

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

	public const int mutationRegen = 1516;

	public const int mutationDexN = 1515;

	public const int mutationDex = 1514;

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

	public const int mutationSkin = 1510; 
	public const int mutationEye = 1512; 

	public const int mutationSkinN = 1511;

	public const int etherProvoke = 1563; 
	public const int etherPoisonHand = 1565; 

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

	public const int mutationEye = 1512; 
	public const int mutationEyeN = 1513; 

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

	public const int etherManaBattery = 1564; 
	public const int mutationSkin = 1510; 

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

	public const int etherPoisonHand = 1565; 
	public const int etherProvoke = 1563; 

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

	public const int etherStupid = 1561;

@@ -48,40 +50,38 @@ public class MUTATION

cs

	public const int etherFeet = 1552;

	public const int etherUgly = 1551; 

	public const int etherArmor = 1562;

	public const int mutationStrN = 1521; 
	public const int etherUgly = 1551; 

	public const int mutationBodyN = 1531; 
	public const int mutationCha = 1522; 

	public const int mutationBody = 1530; 
	public const int mutationBrain = 1524; 

	public const int mutationLightningN = 1529; 
	public const int mutationBrainN = 1525; 

	public const int mutationLightning = 1528; 
	public const int mutationCold = 1526; 

	public const int mutationColdN = 1527;

	public const int mutationCold = 1526; 

	public const int mutationBrainN = 1525; 
	public const int mutationChaN = 1523; 

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

	public const int mutationChaN = 1523; 
	public const int mutationBody = 1530; 

	public const int mutationCha = 1522; 
	public const int mutationBodyN = 1531; 

	public const int etherGravity = 1550;

	public const int mutationLightning = 1528; 

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

POLICY

@@ -3,32 +3,28 @@

cs

public class POLICY
{
	public const int mass_exhibition = 2814; 
	public const int store_ripoff = 2816; 

	public const int suite_room = 2813; 
	public const int incomeTransfer = 2711; 

	public const int bed_quality = 2812; 
	public const int home_discount = 2800; 

	public const int tourist_safety = 2811; 
	public const int open_business = 2810; 

	public const int noAnimal = 2709; 
	public const int tourist_safety = 2811; 

	public const int home_discount = 2800; 
	public const int bed_quality = 2812; 

	public const int incomeTransfer = 2711; 
	public const int suite_room = 2813; 

	public const int noMother = 2710; 
	public const int mass_exhibition = 2814; 

	public const int platinum_ticket = 2815;

	public const int open_business = 2810; 

	public const int store_ripoff = 2816; 
	public const int store_premium = 2817; 

	public const int legendary_exhibition = 2823;

	public const int license_food = 2818; 

	public const int license_furniture = 2819;

	public const int license_general = 2820;

@@ -37,6 +33,8 @@ public class POLICY

cs

	public const int celeb = 2822;

	public const int noMother = 2710; 

	public const int license_stolen = 2824;

	public const int milk_fan = 2825;

@@ -47,17 +45,17 @@ public class POLICY

cs

	public const int license_slaver = 2828;

	public const int store_premium = 2817; 
	public const int license_food = 2818; 

	public const int noDM = 2708; 
	public const int noAnimal = 2709; 

	public const int legal_drug = 2505; 
	public const int inquisition = 2507; 

	public const int demon_invocation = 2706; 
	public const int auto_farm = 2707; 

	public const int wealth_tax = 2500; 
	public const int noDM = 2708; 

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

	public const int food_for_people = 2502;

@@ -65,49 +63,51 @@ public class POLICY

cs

	public const int impressment = 2504;

	public const int human_right = 2506; 
	public const int legal_drug = 2505; 

	public const int inquisition = 2507; 
	public const int faith_tax = 2501; 

	public const int nocturnal_life = 2508;

	public const int auto_farm = 2707; 
	public const int vaccination = 2509; 

	public const int ban_radio = 2510;

	public const int self_sufficient = 2511;

	public const int vaccination = 2509; 
	public const int human_right = 2506; 

	public const int resident_wanted = 2513;

	public const int taxfree = 2514; 

	public const int stop_growth = 2515; 
	public const int taxTransfer = 2705; 

	public const int speed_growth = 2516; 
	public const int resident_tax = 2512; 

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

	public const int trash_sort = 2701; 
	public const int demon_invocation = 2706; 

	public const int trash_no = 2702;

	public const int weed_no = 2703;

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

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

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

	public const int taxfree = 2514; 

	public const int trash_sort = 2701; 

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

SKILL

@@ -1,7 +1,5 @@

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

	public const int tactics = 132;

	public const int twowield = 131;

@@ -10,25 +8,27 @@ public class SKILL

cs

	public const int shield = 123;

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

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

	public const int weaponBlunt = 111;

	public const int weaponScythe = 110;

	public const int weaponCrossbow = 109; 
	public const int fireproof = 50; 

	public const int eyeofmind = 134; 
	public const int acidproof = 51; 

	public const int armorHeavy = 122; 
	public const int marksman = 133; 

	public const int strategy = 135; 
	public const int armorLight = 120; 

	public const int digging = 230; 
	public const int eyeofmind = 134; 

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

	public const int evasion = 150; 

	public const int climbing = 242;

@@ -40,13 +40,11 @@ public class SKILL

cs

	public const int milking = 235;

	public const int acidproof = 51; 

	public const int evasion = 150; 
	public const int digging = 230; 

	public const int parasite = 227; 
	public const int strategy = 135; 

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

	public const int mining = 220;

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

cs

	public const int stealth = 152;

	public const int riding = 226; 
	public const int evasionPlus = 151; 

	public const int lumberjack = 225; 

	public const int PDR = 55;

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

	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;

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

cs

	public const int LER = 74;

	public const int WIL = 75; 

	public const int MAG = 76; 

	public const int EDR = 56;

	public const int WIL = 75; 

	public const int CHA = 77;

	public const int LUC = 78; 

	public const int SPD = 79;

	public const int INT = 80;

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

cs

	public const int penetration = 92;

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

	public const int weaponAxe = 102;

@@ -118,19 +122,15 @@ public class SKILL

cs

	public const int weaponGun = 105;

	public const int weaponDagger = 107; 
	public const int weaponPolearm = 106; 

	public const int throwing = 108;

	public const int mana = 61; 

	public const int life = 60; 

	public const int LUC = 78; 
	public const int MAG = 76; 

	public const int gathering = 250;

	public const int weaponPolearm = 106; 
	public const int weaponDagger = 107; 

	public const int blacksmith = 256;

@@ -264,13 +264,13 @@ public class SKILL

cs

	public static readonly int[] IDS = new int[131]
	{
		133, 132, 131, 130, 123, 50, 120, 111, 110, 109, 
		134, 122, 135, 230, 151, 242, 241, 240, 237, 235, 
		51, 150, 227, 225, 220, 210, 207, 200, 152, 226, 
		55, 101, 57, 245, 62, 64, 65, 66, 67, 68, 
		70, 71, 72, 73, 74, 75, 76, 56, 77, 79, 
		80, 90, 91, 92, 100, 102, 103, 104, 105, 107, 
		108, 61, 60, 78, 250, 106, 256, 916, 917, 918, 
		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,

Thing

@@ -64,7 +64,7 @@ public override int SelfWeight

cs
	{
		if (!base.IsUnique)
		{
			return (base.isWeightChanged ? base.c_weight : source.weight) * base.material.weight / 100; 
			return (int)((long)(base.isWeightChanged ? base.c_weight : source.weight) * (long)base.material.weight / 100); 
		}
		if (!base.isWeightChanged)
		{

TraitCrafter

@@ -408,6 +408,10 @@ public virtual Thing Craft(AI_UseCrafter ai)

cs

	public override void TrySetAct(ActPlan p)
	{
		if (!EClass.debug.enable && this is TraitRollingFortune) 
		{ 
			return; 
		} 
		if (IsFactory)
		{
			Thing _t = owner.Thing;

TraitDemitas

@@ -44,7 +44,7 @@ public override ShopType ShopType

cs

	public override int NumCopyItem => 3 + Mathf.Min(base.owner.c_invest / 5, 7);

	public override bool CanJoinParty => EClass.debug.enable; 
	public override bool CanJoinParty => false; 

	public override bool CanBeBanished => false;

+TraitMoyer

File Created
cs
public class TraitMoyer : TraitUniqueChara
{
	public override bool CanInvite => false;
}

TraitObj

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

cs
public class TraitObj : TraitTile
{
	public override TileRow source => EClass.sources.objs.rows[owner.refVal];

	public override bool CanBeOnlyBuiltInHome => true; 
}

TraitPlatform

@@ -5,4 +5,6 @@ public class TraitPlatform : TraitTile

cs
	public override TileRow source => EClass.sources.floors.rows[owner.refVal];

	public override string suffix => "-b";

	public override bool CanBeOnlyBuiltInHome => true; 
}