Skip to content

EA 23.218 Nightly

October 12, 2025

15 files modified. 6 new files created.

Important Changes

None.

ABILITY

``

cs

public class ABILITY
{
	public const int ActInstall = 5046; 
	public const int ActPick = 5047; 

	public const int ActItem = 5048;

public class ABILITY

cs

	public const int ActNTR = 6603;

	public const int ActPick = 5047; 
	public const int ActInstall = 5046; 

	public const int ActDraw = 6602; 
	public const int ActEntangle = 6601; 

	public const int ActCrabBreathe = 6500;

public class ABILITY

cs

	public const int AI_TendAnimal = 5043;

	public const int Ranged = 5003; 
	public const int Melee = 5002;

	public const int ActMelee = 5001;

	public const int ActWait = 5000;

	public const int TaskAttack = 5015; 
	public const int TaskTame = 5016;

	public const int TaskTalk = 5017;

public class ABILITY

cs

	public const int ActTouchDrown = 6613;

	public const int ActEntangle = 6601; 
	public const int ActDraw = 6602; 

	public const int ActGazeInsane = 6621;

public class ABILITY

cs

	public const int breathe_Chaos = 50210;

	public const int breathe_Magic = 50211; 
	public const int ActGazeDim = 6620;

	public const int breathe_Ether = 50212; 
	public const int breathe_Acid = 50213;

	public const int breathe_Cut = 50214;

public class ABILITY

cs

	public const int breathe_Void = 50216;

	public const int Ranged = 5003; 
	public const int Sleep = 5004;

	public const int Wait = 5005;

public class ABILITY

cs

	public const int TaskPlow = 5014;

	public const int TaskAttack = 5015; 
	public const int breathe_Cold = 50201;

	public const int breathe_Fire = 50200;

	public const int breathe_Ether = 50212; 
	public const int breathe_Magic = 50211; 

	public const int ActHeadpat = 6904;

public class ABILITY

cs

	public const int ActBladeStorm = 6664;

	public const int ActBladeStorm2 = 6665; 
	public const int ActWhirlwind = 6666; 
	public const int ActKizuamiTrick = 6903;

	public const int ActSummonSpecial = 6800; 
	public const int StTaunt = 6700; 
	public const int ActLulwyTrick = 6902;

	public const int ActJureHeal = 6901;

	public const int ActManaAbsorb = 6900;

	public const int SongTulip = 6751; 
	public const int SongSleep = 6750; 
	public const int ActMultiHit = 6663;

	public const int StManaCost = 6720;

	public const int StTaunt = 6700; 
	public const int ActSummonSpecial = 6800; 
	public const int SongSleep = 6750; 

	public const int ActBladeStorm2 = 6665; 
	public const int SongTulip = 6751; 

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

ActMelee

void Attack(Card _tc, Point _tp, float mtp, bool subAttack)

cs
						p.PlayEffect("smoke_shockwave");
						p.Copy().Animate(AnimeID.QuakeMini, animeBlock: true);
					}
					foreach (Card item4 in p.ListCards()) 
					foreach (Card item4 in p.ListCards().Copy()) 
					{
						if ((item4.trait.CanBeAttacked || (item4.isChara && item4.Chara.IsHostile(Act.CC))) && !item4.HasElement(430))
						{

+ActMeleeWhilrwind

File Created
cs
public class ActMeleeWhilrwind : ActMelee
{
	public override float BaseDmgMTP => 1.2f;
}

ActRanged

public override bool Perform()

cs
	{
		EClass.Wait(0.25f, Act.CC);
	}
	Shoot(Act.TC, Act.TP); 
	Shoot(Act.TC, Act.TP, subAttack: false); 
	if (points.Count > 0)
	{
		Point obj = Act.TP.Copy();
		foreach (Point item2 in points)
		{
			if (!item2.Equals(obj)) 
			if (item2.Equals(obj)) 
			{
				Chara firstChara = item2.FirstChara; 
				if ((firstChara == null || firstChara.IsHostile(Act.CC)) && (firstChara != null || scatter != 0) && (scatter <= 0 || EClass.rnd(EClass.rnd(100) + 1) <= scatter)) 
				continue; 
			} 
			Chara firstChara = item2.FirstChara; 
			if (firstChara != null && !firstChara.IsHostile(Act.CC)) 
			{ 
				continue; 
			} 
			if (scatter > 0) 
			{ 
				if (EClass.rnd(EClass.rnd(100) + 1) > scatter) 
				{
					Shoot(item2.FirstChara ?? item2.FindThing<TraitTrainingDummy>()?.owner, item2); 
					continue; 
				}
			}
			else if (firstChara == null) 
			{ 
				continue; 
			} 
			Shoot(item2.FirstChara ?? item2.FindThing<TraitTrainingDummy>()?.owner, item2, subAttack: true); 
		}
	}
	if (!(weapon.trait is TraitToolRangeCane))

void Prepare()

cs
			AttackProcess.Current.ignoreAttackSound = index > 1;
		}
	}
	void Shoot(Card _tc, Point _tp) 
	void Shoot(Card _tc, Point _tp, bool subAttack) 
	{
		float dmgMulti = 1f;
		index++;

void Shoot(Card _tc, Point _tp)

cs
					AttackProcess.Current.TC = chara;
					AttackProcess.Current.TP.Set(chara.pos);
					AttackProcess.Current.posRangedAnime = chara.pos;
					AttackProcess.Current.Perform(j, hasHit, chara.IsPCFactionOrMinion ? 0.5f : 2.5f); 
					AttackProcess.Current.Perform(j, hasHit, chara.IsPCFactionOrMinion ? 0.1f : 2.5f, maxRoll: true, subAttack: true); 
				}
				else if (AttackProcess.Current.Perform(j, hasHit, dmgMulti)) 
				else if (AttackProcess.Current.Perform(j, hasHit, dmgMulti, maxRoll: false, subAttack)) 
				{
					hasHit = true;
				}

void Shoot(Card _tc, Point _tp)

cs
						if (chaser > EClass.rnd(4 + (int)Mathf.Pow(4f, k + 2 + j)))
						{
							Act.CC.Say(Act.CC.IsHostile() ? "attack_chaser_enemy" : "attack_chaser");
							if (AttackProcess.Current.Perform(j, hasHit, dmgMulti)) 
							if (AttackProcess.Current.Perform(j, hasHit, dmgMulti, maxRoll: false, subAttack)) 
							{
								hasHit = true;
								break;

public static bool TryReload(Thing weapon, Thing ammo = null)

cs
	}
	if (ammo == null)
	{
		if (Act.CC.IsPC) 
		if (Act.CC.IsPC && !traitToolRange.AutoRefillAmmo) 
		{
			if (!weapon.IsMeleeWithAmmo)
			{

+ActWhirlwind

File Created
cs
using System.Collections.Generic;

public class ActWhirlwind : Ability
{
	public override bool CanPerform()
	{
		if (Act.TC == null)
		{
			return false;
		}
		return ACT.Melee.CanPerform();
	}

	public override bool Perform()
	{
		List<Chara> list = Act.CC.pos.ListCharasInNeighbor((Chara c) => c != Act.CC);
		Act.CC.PlaySound("ab_shred2");
		Act.CC.Say("abWhirlwind", Act.CC);
		foreach (Chara item in list.Copy())
		{
			Act.TC = item;
			if (!Act.CC.IsAliveInCurrentZone || !Act.TC.IsAliveInCurrentZone)
			{
				break;
			}
			Act.TC.PlayEffect("ab_bladestorm");
			new ActMeleeWhilrwind().Perform(Act.CC, Act.TC);
		}
		return true;
	}
}

Card

public Card ChangeMaterial(SourceMaterial.Row row, bool ignoreFixedMaterial = fa

cs
			LayerInventory.SetDirty(Thing);
		}
		ApplyMaterial();
		Debug.Log(id + "/" + row.alias); 
		return this;
	}

DOMAIN

``

cs

public class DOMAIN
{
	public const int domMachine = 809; 
	public const int domEyth = 814; 

	public const int domLuck = 810; 
	public const int domMiracle = 803; 
	public const int domOblivion = 813; 

	public const int domHealing = 811;

	public const int domWind = 807; 
	public const int domLuck = 810; 

	public const int domElement = 806; 
	public const int domMachine = 809; 

	public const int domEarth = 812; 
	public const int domHarvest = 808; 

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

	public const int domOblivion = 813; 
	public const int domElement = 806; 

	public const int domMiracle = 803; 
	public const int domComm = 805; 

	public const int domArcane = 804;

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

	public const int domHarmony = 815;

public class DOMAIN

cs

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

ELEMENT

public class ELEMENT

cs

	public const int _void = 0;

	public const int lv = 1; 
	public const int quality = 2;

	public const int lv = 1; 
	public const int d = 3;

	public const int socket = 5;

public class ELEMENT

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

ENC

public class ENC

cs
public class ENC
{
	public const int eco = 652; 
	public const int r_PV = 651;

	public const int r_DV = 650;

public class ENC

cs

	public const int r_life = 640;

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

	public const int mod_talisman = 609;

public class ENC

cs

	public const int mod_flurry = 621;

	public const int mod_splash = 608; 
	public const int mod_chaser = 620; 
	public const int eco = 652; 
	public const int living = 653; 

	public const int mod_feint = 623; 
	public const int mod_frustration = 624; 

	public const int living = 653; 
	public const int noDamage = 654; 

	public const int convertCold = 851;

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

	public const int absorbHP = 660;

public class ENC

cs

	public const int convertFire = 850;

	public const int mod_scatter = 607; 
	public const int mod_splash = 608; 

	public const int convertImpact = 865;

	public const int convertLightning = 852;

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

	public const int mod_drill = 606; 
	public const int mod_scatter = 607; 

	public const int negateNeckHunt = 427; 
	public const int allNeckHunt = 428; 

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

	public const int seeInvisible = 416;

public class ENC

cs

	public const int negateSteal = 426;

	public const int allNeckHunt = 428; 
	public const int negateNeckHunt = 427; 

	public const int breathing = 429;

public class ENC

cs

	public const int slowDecay = 405;

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

	public const int travelSpeed = 407;

public class ENC

cs

	public const int knightly = 438;

	public const int bane_all = 468; 
	public const int strongStomach = 480;

	public const int revealFaith = 481;

public class ENC

cs

	public const int creativeChef = 487;

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

	public const int mod_ammo = 600;

public class ENC

cs

	public const int mod_ammo_knockback = 603;

	public const int mod_ammo_recover = 604; 
	public const int parry = 437;

	public const int bane_all = 468; 
	public const int bane_fish = 467;

	public const int bane_god = 466; 
	public const int music_drunk = 489; 

	public const int deathagony = 488; 
	public const int bane_machine = 465; 

	public const int bane_man = 464; 
	public const int negateParry = 439; 
	public const int bane_god = 466; 

	public const int sustain_STR = 440;

	public const int sustain_END = 441;

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

	public const int negateParry = 439; 
	public const int sustain_LER = 444; 

	public const int sustain_WIL = 445;

	public const int sustain_LER = 444; 
	public const int sustain_DEX = 442; 

	public const int sustain_CHA = 447;

public class ENC

cs

	public const int bane_dragon = 460;

	public const int bane_man = 464; 
	public const int bane_undead = 461;

	public const int bane_fairy = 462;

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

	public const int bane_machine = 465; 
	public const int bane_animal = 463; 

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

ElementContainer

void AddElements(ElementContainer container, bool isGlobal)

cs
	public List<Element> ListBestAttributes()
	{
		List<Element> obj = ListElements((Element a) => a.HasTag("primary"));
		obj.Sort((Element a, Element b) => (int)((long)(b.ValueWithoutLink - a.ValueWithoutLink) * 100000L + a.id - b.id)); 
		obj.Sort((Element a, Element b) => (b.ValueWithoutLink != a.ValueWithoutLink) ? (b.ValueWithoutLink - a.ValueWithoutLink) : (a.id - b.id)); 
		return obj;
	}

	public List<Element> ListBestSkills()
	{
		List<Element> obj = ListElements((Element a) => a.source.category == "skill");
		obj.Sort((Element a, Element b) => (int)((long)(b.ValueWithoutLink - a.ValueWithoutLink) * 100000L + a.id - b.id)); 
		obj.Sort((Element a, Element b) => (b.ValueWithoutLink != a.ValueWithoutLink) ? (b.ValueWithoutLink - a.ValueWithoutLink) : (a.id - b.id)); 
		return obj;
	}

FACTION

``

cs

public class FACTION
{
	public const int bfHill = 3603; 
	public const int bfForest = 3601;

	public const int bfSnow = 3602;

	public const int bfGeyser = 3701; 
	public const int bfHill = 3603; 

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

	public const int bfUndersea = 3606;

	public const int bfFertile = 3700;

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

	public const int bfRuin = 3702;

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

	public const int bfCave = 3500;

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

	public const int fAttraction = 2206;

public class FACTION

cs

	public const int fPromo = 2202;

	public const int fHeirloom = 2120; 
	public const int fSoil = 2200; 

	public const int fTaxEvasion = 2119;

public class FACTION

cs

	public const int bfVolcano = 3704;

	public const int bfChitin = 3805; 
	public const int bfStart = 3900; 

	public const int bfFish = 3706;

public class FACTION

cs

	public const int actBuildCut = 4000;

	public const int bfStart = 3900; 
	public const int bfChitin = 3805; 

	public const int bfIce = 3804;

public class FACTION

cs

	public const int fConstruction = 2003;

	public const int fSoil = 2200; 
	public const int fElec = 2201; 

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

FEAT

``

cs

public class FEAT
{
	public const int featElderCrab = 1219; 
	public const int featFate = 1220; 
	public const int featSummoner = 1647; 

	public const int featLonelySoul = 1646;

public class FEAT

cs

	public const int featEvade = 1632;

	public const int featDefense = 1631; 
	public const int featRapidMagic = 1648; 

	public const int featSummoner = 1647; 
	public const int featDefense = 1631; 

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

	public const int featLuck = 1628;

public class FEAT

cs

	public const int featLife = 1610;

	public const int featHealer = 1422; 
	public const int featSPD = 1629; 
	public const int featRapidMagic = 1648; 
	public const int featHardy = 1630; 

	public const int featDefender = 1649;

	public const int featGourmet = 1650;

	public const int featMetal = 1218; 
	public const int featMagicManner = 1651; 
	public const int featElderCrab = 1219; 

	public const int featSlowFood = 1200;

public class FEAT

cs

	public const int featGolem = 1217;

	public const int featDismantler = 1661; 
	public const int featLooter = 1660;

	public const int featFisher = 1659;

public class FEAT

cs

	public const int featRapidArrow = 1652;

	public const int featMagicManner = 1651; 
	public const int featHealer = 1422; 

	public const int featManaMeat = 1421;

	public const int featExecutioner = 1420; 
	public const int featDismantler = 1661; 
	public const int featSwordsage = 1418; 
	public const int featMetal = 1218; 

	public const int featSevenSense = 1245; 
	public const int featMilitant = 1419; 

	public const int featPegasus = 1246;

public class FEAT

cs

	public const int featGod_machine1 = 1315;

	public const int featCentaur = 1244; 
	public const int featGod_healing1 = 1320; 

	public const int featGod_harvest1 = 1325; 
	public const int featSevenSense = 1245; 

	public const int featGod_harmony1 = 1335; 
	public const int featGod_harvest1 = 1325; 

	public const int featGod_oblivion1 = 1340;

public class FEAT

cs

	public const int featArcher = 1404;

	public const int featGod_luck1 = 1330; 
	public const int featPianist = 1405;

	public const int featEternalYouth = 1243; 
	public const int featMeatCushion = 1241; 
	public const int featGod_harmony1 = 1335; 

	public const int featMilitant = 1419; 
	public const int featTourist = 1406; 

	public const int featShiva = 1224; 
	public const int featCentaur = 1244; 

	public const int featAcidBody = 1223; 
	public const int featGeneSlot = 1242; 

	public const int featSplit = 1222; 
	public const int featExecutioner = 1420; 

	public const int featSpike = 1221; 
	public const int featUnderground = 1226; 

	public const int featLoyal = 1225;

	public const int featUnderground = 1226; 
	public const int featShiva = 1224; 
	public const int featAcidBody = 1223; 
	public const int featSplit = 1222; 

	public const int featServant = 1227;

public class FEAT

cs

	public const int featLittleOne = 1229;

	public const int featGeneSlot = 1242; 
	public const int featAdam = 1230;

	public const int featBaby = 1232; 
	public const int featEternalYouth = 1243; 
	public const int featNirvana = 1231; 

	public const int featCosmicHorror = 1233;

public class FEAT

cs

	public const int featElder = 1238;

	public const int featFate = 1220; 
	public const int featDemon = 1239;

	public const int featSpike = 1221; 
	public const int featMassSummoner = 1240;

	public const int featNirvana = 1231; 
	public const int featMeatCushion = 1241; 

	public const int featTourist = 1406; 
	public const int featBaby = 1232; 

	public const int featGod_healing1 = 1320; 
	public const int featPaladin = 1407; 

	public const int featPaladin2 = 1408; 
	public const int featGod_luck1 = 1330; 

	public const int featPaladin = 1407; 
	public const int featBoost = 1409; 
	public const int featSwordsage = 1418; 
	public const int featWitch = 1417; 

	public const int featInquisitor = 1416;

	public const int featFoxMaid = 1415;

	public const int featWhiteVixen = 1414; 
	public const int featPaladin2 = 1408; 

	public const int featWitch = 1417; 
	public const int featFairysan = 1413; 

	public const int featLuckyCat = 1412;

public class FEAT

cs

	public const int featReboot = 1410;

	public const int featBoost = 1409; 
	public const int featFairysan = 1413; 
	public const int featWhiteVixen = 1414; 

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

FOOD

public class FOOD

cs
public class FOOD
{
	public const int loseWeight = 706; 
	public const int food_CHA = 700; 
	public const int food_cat = 701; 
	public const int food_poison = 702;

	public const int food_love = 703;

public class FOOD

cs

	public const int gainWeight = 705;

	public const int kirimi = 707; 
	public const int loseWeight = 706; 
	public const int food_human = 708; 

	public const int food_undead = 709;

	public const int justcooked = 757;

	public const int food_god = 758; 
	public const int food_cat = 701; 

	public const int creativeDish = 764;

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

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

MUTATION

public class MUTATION

cs
public class MUTATION
{
	public const int mutationStrN = 1521; 
	public const int etherFeet = 1552; 

	public const int mutationEyeN = 1513; 
	public const int etherNeck = 1555; 

	public const int mutationEye = 1512; 
	public const int etherViolence = 1556; 

	public const int mutationDex = 1514; 
	public const int etherHead = 1557; 

	public const int mutationDexN = 1515; 
	public const int etherRain = 1558; 

	public const int mutationRegen = 1516; 
	public const int etherAddict = 1559; 

	public const int mutationRegenN = 1517; 
	public const int etherEye = 1553; 

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

	public const int mutationSpeedN = 1519; 
	public const int etherArmor = 1562; 

	public const int mutationSkinN = 1511; 
	public const int etherProvoke = 1563; 

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

	public const int mutationCha = 1522; 
	public const int etherPoisonHand = 1565; 

	public const int mutationStr = 1520; 
	public const int mutationDexN = 1515; 

	public const int mutationBrain = 1524; 
	public const int mutationDex = 1514; 

	public const int etherPoisonHand = 1565; 
	public const int mutationEyeN = 1513; 

	public const int etherManaBattery = 1564; 
	public const int mutationEye = 1512; 

	public const int etherProvoke = 1563; 
	public const int mutationSkinN = 1511; 

	public const int etherArmor = 1562; 
	public const int mutationSkin = 1510; 

	public const int etherStupid = 1561; 
	public const int mutationRegen = 1516; 

	public const int mutationChaN = 1523; 
	public const int mutationRegenN = 1517; 

	public const int etherWeak = 1560;

	public const int etherAddict = 1559; 
	public const int mutationSpeedN = 1519; 

	public const int etherRain = 1558; 
	public const int etherUgly = 1551; 

	public const int etherHead = 1557; 
	public const int mutationSpeed = 1518; 

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

	public const int etherWing = 1554; 
	public const int mutationHair = 1532; 

	public const int etherViolence = 1556; 
	public const int mutationBodyN = 1531; 

	public const int etherFeet = 1552; 
	public const int mutationBody = 1530; 

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

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

	public const int mutationColdN = 1527;

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

	public const int mutationLightningN = 1529; 
	public const int mutationCold = 1526; 

	public const int mutationBody = 1530; 
	public const int mutationBrainN = 1525; 

	public const int mutationLightning = 1528; 
	public const int mutationBrain = 1524; 

	public const int mutationHair = 1532; 
	public const int mutationChaN = 1523; 

	public const int mutationHairN = 1533; 
	public const int mutationCha = 1522; 

	public const int etherGravity = 1550; 
	public const int etherWing = 1554; 

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

	public const int mutationBodyN = 1531; 
	public const int mutationStr = 1520; 

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

POLICY

``

cs

public class POLICY
{
	public const int license_furniture = 2819; 
	public const int mass_exhibition = 2814; 
	public const int platinum_ticket = 2815;

	public const int store_ripoff = 2816;

public class POLICY

cs

	public const int license_food = 2818;

	public const int license_furniture = 2819; 
	public const int license_general = 2820;

	public const int suite_room = 2813; 
	public const int legendary_heirloom = 2821; 

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

	public const int legendary_exhibition = 2823;

	public const int license_stolen = 2824;

	public const int milk_fan = 2825; 
	public const int mass_exhibition = 2814; 

	public const int egg_fan = 2826;

public class POLICY

cs

	public const int license_slaver = 2828;

	public const int legendary_heirloom = 2821; 
	public const int celeb = 2822; 

	public const int bed_quality = 2812; 
	public const int suite_room = 2813; 

	public const int energy_conservation = 2700; 
	public const int trash_sort = 2701; 

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

	public const int nocturnal_life = 2508; 
	public const int resident_wanted = 2513; 

	public const int vaccination = 2509; 
	public const int resident_tax = 2512; 

	public const int ban_radio = 2510; 
	public const int inquisition = 2507; 

	public const int self_sufficient = 2511; 
	public const int bed_quality = 2812; 

	public const int legal_drug = 2505; 
	public const int wealth_tax = 2500; 

	public const int impressment = 2504; 
	public const int faith_tax = 2501; 

	public const int prohibition = 2503; 
	public const int taxfree = 2514; 

	public const int food_for_people = 2502;

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

	public const int tourist_safety = 2811; 
	public const int legal_drug = 2505; 

	public const int inquisition = 2507; 
	public const int self_sufficient = 2511; 

	public const int resident_tax = 2512; 
	public const int ban_radio = 2510; 

	public const int resident_wanted = 2513; 
	public const int vaccination = 2509; 

	public const int taxfree = 2514; 
	public const int nocturnal_life = 2508; 

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

	public const int speed_growth = 2516; 
	public const int stop_growth = 2515; 

	public const int border_watch = 2704; 
	public const int human_right = 2506; 

	public const int weed_no = 2703; 
	public const int energy_conservation = 2700; 

	public const int taxTransfer = 2705;

	public const int stop_growth = 2515; 
	public const int border_watch = 2704; 

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

	public const int noDM = 2708;

	public const int noAnimal = 2709;

	public const int demon_invocation = 2706; 
	public const int noMother = 2710; 

	public const int incomeTransfer = 2711; 
	public const int auto_farm = 2707; 

	public const int forcePanty = 2712;

public class POLICY

cs

	public const int home_discount = 2800;

	public const int trash_no = 2702; 
	public const int open_business = 2810; 

	public const int trash_sort = 2701; 
	public const int weed_no = 2703; 

	public const int noMother = 2710; 
	public const int trash_no = 2702; 
	public const int incomeTransfer = 2711; 

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

SKILL

public class SKILL

cs

	public const int spotting = 210;

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

	public const int weaponDagger = 107;

public class SKILL

cs

	public const int weaponStaff = 103;

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

	public const int martial = 100;

public class SKILL

cs
{
	50, 109, 110, 111, 245, 122, 123, 130, 132, 133,
	242, 241, 240, 237, 235, 230, 227, 226, 225, 220,
	207, 200, 152, 151, 150, 135, 134, 131, 210, 102, 
	207, 200, 152, 151, 150, 135, 134, 131, 210, 101, 
	107, 71, 70, 68, 67, 66, 65, 72, 64, 61,
	60, 57, 56, 55, 51, 62, 73, 74, 75, 106,
	105, 104, 103, 101, 100, 93, 92, 91, 90, 80, 
	105, 104, 103, 102, 100, 93, 92, 91, 90, 80, 
	79, 78, 77, 76, 108, 250, 120, 256, 916, 917,
	918, 919, 921, 922, 923, 924, 925, 926, 950, 951,
	952, 953, 915, 954, 956, 957, 958, 959, 960, 961,

+TraitAmmoStone

File Created
cs
public class TraitAmmoStone : TraitAmmo
{
}

+TraitBedCoffin

File Created
cs
public class TraitBedCoffin : TraitBed
{
	public override bool UseAltTiles
	{
		get
		{
			if (owner.ExistsOnMap && owner.IsInstalled)
			{
				return !owner.pos.HasChara;
			}
			return true;
		}
	}
}

+TraitThrownConsume

File Created
cs
public class TraitThrownConsume : TraitThrown
{
	public override bool ShowAsTool => true;

	public override int DefaultStock => 10 + EClass.rnd(50);

	public override int CraftNum => 20;
}

TraitToolRange

public class TraitToolRange : TraitTool

cs

	public virtual bool NeedAmmo => true;

	public virtual bool AutoRefillAmmo => false; 
	public int MaxAmmo => (GetParam(1) ?? "12").ToInt() * (100 + owner.Evalue(600) * 5) / 100;

	public int ReloadTurn => (GetParam(2) ?? "4").ToInt() * 100 / (100 + owner.Evalue(601) * 10);

+TraitToolRangeSling

File Created
cs
public class TraitToolRangeSling : TraitToolRange
{
	public override Element WeaponSkill => owner.elements.GetOrCreateElement(108);

	public override bool AutoRefillAmmo => true;

	public override bool IsAmmo(Thing t)
	{
		return t.id == "stone";
	}
}