Skip to content

EA 23.143 Nightly

May 23, 2025

14 files modified. 3 new files created.

Important Changes

None.

ActMelee

@@ -115,6 +115,7 @@ public bool Attack(float dmgMulti = 1f, bool maxRoll = false)

cs
	{
		Act.TC = c;
	});
	Act.TP.Set(Act.TC.pos); 
	CellEffect effect = Act.TP.cell.effect;
	if (effect != null && effect.id == 6 && EClass.rnd(2) == 0)
	{

BaseCondition

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

cs
	}
	if (UseElements)
	{
		elements = new ElementContainer(); 
		elements = new ElementContainerCondition(); 
		if (base.source.elements.Length != 0)
		{
			for (int i = 0; i < base.source.elements.Length; i += 2)

Card

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

cs
		{
			num3 += (int)Mathf.Min(Mathf.Sqrt(EClass.pc.Evalue(290)), 20f);
		}
		if (EClass.rnd((Act.CurrentAct is ActMeleeBladeStorm) ? 2 : 100) == 0) 
		if (EClass.rnd((Act.CurrentAct is ActMeleeBladeStorm || (origin != null && (origin.HasElement(1556) || origin.HasCondition<ConTransmuteCat>()))) ? 2 : 100) == 0) 
		{
			text = "dattamono";
		}

+ConTransmuteCat

File Created
cs
public class ConTransmuteCat : ConTransmute
{
	public override RendererReplacer GetRendererReplacer()
	{
		return RendererReplacer.CreateFrom("cat_black");
	}
}

Crawler

@@ -14,6 +14,8 @@ public class Member

cs
	public class Result
	{
		public List<Point> points = new List<Point>();
		public Point startPos; 
	}

	public enum MoveType

@@ -128,6 +130,7 @@ public Result Crawl(Map map, Point _start, Action<Point> onNewVisit = null)

cs
	point.Clamp();
	Result result = new Result();
	BiomeProfile biome = point.cell.biome;
	result.startPos = _start; 
	sync++;
	Size = map.Size;
	int num = (skipBorder ? 2 : 0);

ElementContainer

@@ -29,6 +29,8 @@ public enum NoteMode

cs

	public virtual Chara Chara => null;

	public virtual bool LimitLink => true; 
	public virtual bool IsMeleeWeapon => false;

	[OnSerializing]

@@ -356,7 +358,7 @@ public Element SetBase(string alias, int v, int potential = 0)

cs
public Element SetBase(int id, int v, int potential = 0)
{
	Element orCreateElement = GetOrCreateElement(id);
	if (parent != null && orCreateElement.CanLink(this)) 
	if (parent != null && (!LimitLink || orCreateElement.CanLink(this))) 
	{
		parent.ModLink(id, -orCreateElement.vBase + v);
	}

@@ -390,7 +392,7 @@ public void Remove(int id)

cs
	Element element = GetElement(id);
	if (element != null)
	{
		if (parent != null && element.CanLink(this)) 
		if (parent != null && (!LimitLink || element.CanLink(this))) 
		{
			parent.ModLink(id, -element.Value);
		}

@@ -402,7 +404,7 @@ public Element ModBase(int ele, int v)

cs
{
	Element orCreateElement = GetOrCreateElement(ele);
	orCreateElement.vBase += v;
	if (parent != null && orCreateElement.CanLink(this)) 
	if (parent != null && (!LimitLink || orCreateElement.CanLink(this))) 
	{
		parent.ModLink(ele, v);
	}

@@ -451,7 +453,7 @@ private Element ModLink(int id, int v)

cs
	Element orCreateElement = GetOrCreateElement(id);
	orCreateElement.vLink += v;
	orCreateElement.OnChangeValue();
	if (parent != null && orCreateElement.CanLink(this)) 
	if (parent != null && (!LimitLink || orCreateElement.CanLink(this))) 
	{
		parent.ModLink(id, v);
	}

@@ -528,7 +530,7 @@ public void SetParent(ElementContainer newParent = null)

cs
	{
		foreach (Element value in dict.Values)
		{
			if (value.CanLink(this)) 
			if (!LimitLink || value.CanLink(this)) 
			{
				parent.ModLink(value.id, -(value.vBase + value.vSource));
			}

@@ -538,7 +540,7 @@ public void SetParent(ElementContainer newParent = null)

cs
	{
		foreach (Element value2 in dict.Values)
		{
			if (value2.CanLink(this)) 
			if (!LimitLink || value2.CanLink(this)) 
			{
				newParent.ModLink(value2.id, value2.vBase + value2.vSource);
			}

+ElementContainerCondition

File Created
cs
public class ElementContainerCondition : ElementContainer
{
	public override bool LimitLink => false;
}

FACTION

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

cs

	public const int bfTranquil = 3703;

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

	public const int fTaxEvasion = 2119;

@@ -106,16 +106,16 @@ public class FACTION

cs

	public const int fConstruction = 2003;

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

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

FEAT

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

cs

	public const int featLuckyCat = 1412;

	public const int featPaladin2 = 1408; 
	public const int featPaladin = 1407;

	public const int featPaladin2 = 1408; 
	public const int featFairysan = 1413;

	public static readonly int[] IDS = new int[116]

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

cs
		1325, 1403, 1233, 1231, 1415, 1213, 1214, 1215, 1216, 1217,
		1218, 1219, 1220, 1232, 1221, 1223, 1212, 1224, 1225, 1226,
		1227, 1228, 1229, 1230, 1222, 1404, 1305, 1406, 1405, 1409,
		1410, 1411, 1412, 1408, 1407, 1413
		1410, 1411, 1412, 1407, 1408, 1413
	};
}
public class Feat : Element

FOOD

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

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

	public const int justcooked = 757;

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

cs

	public const int food_cat = 701;

	public const int food_undead = 709; 
	public const int food_CHA = 700; 

	public const int food_love = 703;

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

cs

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

MapGenDungen

@@ -268,6 +268,15 @@ protected override bool OnGenerateTerrain()

cs
			}
			return false;
		});
		crawler.CrawlUntil(tries: EClass.rnd(EClass.rnd(10) + 1) + 3, map: EClass._map, onStart: () => EClass._map.GetRandomPoint(), canComplete: delegate(Crawler.Result r) 
		{ 
			int idFloor = 121; 
			foreach (Point point4 in r.points) 
			{ 
				map.SetFloor(point4.x, point4.z, 97, idFloor, Mathf.Clamp(4 - r.startPos.Distance(point4) + EClass.rnd(3) - EClass.rnd(3), 0, 3)); 
			} 
			return false; 
		}); 
	}
	bool forest = zone is Zone_RandomDungeonForest;
	if (zone is Zone_RandomDungeonPlain || (forest && EClass.rnd(3) == 0))

@@ -285,20 +294,20 @@ protected override bool OnGenerateTerrain()

cs
				Rand.SetSeed();
				thing5.elements.SetBase(2, EClass.curve(thing5.encLV, 50, 10, 80));
			}
			foreach (Point point4 in r.points) 
			foreach (Point point5 in r.points) 
			{
				if (!point4.cell.isModified && !point4.HasThing && !point4.HasBlock && !point4.HasObj) 
				if (!point5.cell.isModified && !point5.HasThing && !point5.HasBlock && !point5.HasObj) 
				{
					map.SetObj(point4.x, point4.z, num5); 
					map.SetObj(point5.x, point5.z, num5); 
					int num7 = 3;
					if (EClass.rnd(6) == 0)
					{
						num7++;
					}
					point4.growth.SetStage(num7); 
					point5.growth.SetStage(num7); 
					if (thing5 != null)
					{
						EClass._map.AddPlant(point4, thing5); 
						EClass._map.AddPlant(point5, thing5); 
					}
				}
			}

SKILL

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

cs

	public const int weaponScythe = 110;

	public const int twowield = 131; 
	public const int fishing = 245; 

	public const int mining = 220;

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

cs

	public const int eyeofmind = 134;

	public const int fishing = 245; 
	public const int tactics = 132; 

	public const int EDR = 56;

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

cs

	public const int gathering = 250;

	public const int tactics = 132; 
	public const int twowield = 131; 

	public const int blacksmith = 256;

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

cs

	public const int eleHoly = 919;

	public const int eleChaos = 920; 
	public const int eleMagic = 921;

	public const int eleEther = 922;

@@ -162,11 +164,9 @@ public class SKILL

cs

	public const int resLightning = 952;

	public const int resDarkness = 953; 
	public const int elePoison = 915;

	public const int resMind = 954; 
	public const int resDarkness = 953; 

	public const int resNether = 956;

@@ -196,14 +196,16 @@ public class SKILL

cs

	public const int carpentry = 255;

	public const int resPoison = 955; 
	public const int resMind = 954; 

	public const int eleMind = 914;

	public const int eleChaos = 920; 
	public const int resPoison = 955; 

	public const int eleLightning = 912;

	public const int eleDarkness = 913; 
	public const int alchemy = 257;

	public const int sculpture = 258;

@@ -222,39 +224,35 @@ public class SKILL

cs

	public const int farming = 286;

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

	public const int building = 288;

	public const int appraising = 289; 
	public const int anatomy = 290;

	public const int negotiation = 291;

	public const int investing = 292;

	public const int cooking = 287; 
	public const int regeneration = 300; 
	public const int appraising = 289; 

	public const int disarmTrap = 293; 
	public const int fun = 312; 

	public const int eleFire = 910;

	public const int env = 313;

	public const int fun = 312; 
	public const int eleCold = 911; 
	public const int disarmTrap = 293; 

	public const int bladder = 311;

	public const int hygine = 310;

	public const int eleCold = 911; 
	public const int faith = 306;

	public const int magicDevice = 305; 
	public const int memorization = 307; 

	public const int casting = 304;

@@ -264,24 +262,26 @@ public class SKILL

cs

	public const int meditation = 301;

	public const int memorization = 307; 
	public const int regeneration = 300; 
	public const int magicDevice = 305; 

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

SLOT

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

cs
public class SLOT
{
	public const int waist = 37; 
	public const int finger = 36; 
	public const int back = 33; 
	public const int toolbelt = 44; 

	public const int arm = 34; 
	public const int leg = 38; 

	public const int hand = 35; 
	public const int tool = 40; 

	public const int leg = 38; 
	public const int torso = 32; 

	public const int token = 43; 
	public const int back = 33; 

	public const int lightsource = 45;

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

	public const int toolbelt = 44; 
	public const int neck = 31; 

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

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

	public const int foot = 39;

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

	public const int ammo = 42; 
	public const int waist = 37; 
	public const int token = 43; 

	public const int head = 30;

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

SPELL

@@ -1,33 +1,29 @@

cs
public class SPELL
{
	public const int hand_Impact = 50415; 
	public const int sword_Nether = 51006; 
	public const int ball_Sound = 50107; 
	public const int bolt_Void = 50316; 
	public const int bolt_Sound = 50307; 
	public const int puddle_Nerve = 50908; 

	public const int hand_Sound = 50407;

	public const int arrow_Sound = 50507;

	public const int miasma_Holy = 50709; 
	public const int funnel_Sound = 50607;

	public const int miasma_Sound = 50707;

	public const int weapon_Sound = 50807;

	public const int funnel_Holy = 50609; 
	public const int puddle_Sound = 50907;

	public const int hand_Holy = 50409; 
	public const int sword_Sound = 51007;

	public const int ball_Nerve = 50108;

	public const int ball_Void = 50116; 
	public const int bolt_Nerve = 50308;

	public const int hand_Nerve = 50408;

@@ -36,29 +32,25 @@ public class SPELL

cs

	public const int funnel_Nerve = 50608;

	public const int ball_Holy = 50109; 
	public const int miasma_Nerve = 50708;

	public const int weapon_Nerve = 50808;

	public const int puddle_Nerve = 50908; 
	public const int sword_Nerve = 51008;

	public const int ball_Holy = 50109; 
	public const int sword_Impact = 51015; 
	public const int bolt_Holy = 50309;

	public const int puddle_Nether = 50906; 
	public const int arrow_Holy = 50509; 

	public const int hand_Holy = 50409; 
	public const int hand_Mind = 50404; 

	public const int weapon_Nether = 50806; 
	public const int ball_Sound = 50107; 

	public const int miasma_Nether = 50706; 
	public const int bolt_Mind = 50304; 

	public const int hand_Mind = 50404; 
	public const int weapon_Holy = 50809; 

	public const int arrow_Mind = 50504;

@@ -70,36 +62,28 @@ public class SPELL

cs

	public const int puddle_Mind = 50904;

	public const int weapon_Void = 50816; 
	public const int sword_Mind = 51004;

	public const int ball_Poison = 50105;

	public const int miasma_Void = 50716; 
	public const int bolt_Poison = 50305;

	public const int hand_Poison = 50405;

	public const int arrow_Poison = 50505;

	public const int funnel_Poison = 50605; 
	public const int bolt_Sound = 50307; 

	public const int miasma_Poison = 50705; 
	public const int funnel_Poison = 50605; 

	public const int weapon_Poison = 50805;

	public const int funnel_Void = 50616; 
	public const int puddle_Poison = 50905;

	public const int sword_Poison = 51005;

	public const int ball_Nether = 50106;

	public const int arrow_Void = 50516; 
	public const int bolt_Nether = 50306;

	public const int hand_Nether = 50406;

@@ -108,37 +92,21 @@ public class SPELL

cs

	public const int funnel_Nether = 50606;

	public const int hand_Void = 50416; 
	public const int bolt_Impact = 50315; 
	public const int arrow_Holy = 50509; 
	public const int miasma_Holy = 50709; 
	public const int miasma_Ether = 50712; 
	public const int weapon_Ether = 50812; 
	public const int puddle_Ether = 50912; 
	public const int miasma_Nether = 50706; 

	public const int sword_Ether = 51012; 
	public const int weapon_Nether = 50806; 

	public const int ball_Acid = 50113; 
	public const int puddle_Nether = 50906; 

	public const int funnel_Impact = 50615; 
	public const int sword_Nether = 51006; 

	public const int bolt_Acid = 50313; 
	public const int miasma_Poison = 50705; 

	public const int hand_Acid = 50413; 
	public const int puddle_Holy = 50909; 

	public const int arrow_Acid = 50513;

	public const int bolt_Mind = 50304; 
	public const int miasma_Acid = 50713; 
	public const int weapon_Acid = 50813; 
	public const int ball_Chaos = 50110; 

	public const int puddle_Acid = 50913;

@@ -146,8 +114,6 @@ public class SPELL

cs

	public const int ball_Cut = 50114;

	public const int arrow_Impact = 50515; 
	public const int bolt_Cut = 50314;

	public const int hand_Cut = 50414;

@@ -166,23 +132,43 @@ public class SPELL

cs

	public const int ball_Impact = 50115;

	public const int funnel_Ether = 50612; 
	public const int bolt_Impact = 50315; 

	public const int funnel_Holy = 50609; 
	public const int hand_Impact = 50415; 

	public const int arrow_Ether = 50512; 
	public const int arrow_Impact = 50515; 

	public const int bolt_Ether = 50312; 
	public const int funnel_Impact = 50615; 

	public const int weapon_Holy = 50809; 
	public const int miasma_Impact = 50715; 

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

	public const int sword_Holy = 51009; 
	public const int puddle_Impact = 50915; 

	public const int ball_Chaos = 50110; 
	public const int sword_Impact = 51015; 

	public const int puddle_Impact = 50915; 
	public const int ball_Void = 50116; 
	public const int bolt_Void = 50316; 
	public const int hand_Void = 50416; 
	public const int arrow_Void = 50516; 
	public const int funnel_Void = 50616; 
	public const int miasma_Void = 50716; 
	public const int weapon_Void = 50816; 
	public const int weapon_Acid = 50813; 
	public const int miasma_Acid = 50713; 
	public const int funnel_Acid = 50613; 
	public const int hand_Acid = 50413; 

	public const int bolt_Chaos = 50310;

@@ -202,8 +188,6 @@ public class SPELL

cs

	public const int ball_Magic = 50111;

	public const int weapon_Impact = 50815; 
	public const int bolt_Magic = 50311;

	public const int hand_Magic = 50411;

@@ -212,9 +196,9 @@ public class SPELL

cs

	public const int funnel_Magic = 50611;

	public const int miasma_Magic = 50711; 
	public const int sword_Holy = 51009; 

	public const int weapon_Magic = 50811; 
	public const int miasma_Magic = 50711; 

	public const int puddle_Magic = 50911;

@@ -222,15 +206,33 @@ public class SPELL

cs

	public const int ball_Ether = 50112;

	public const int miasma_Impact = 50715; 
	public const int bolt_Ether = 50312; 

	public const int hand_Ether = 50412;

	public const int funnel_Acid = 50613; 
	public const int arrow_Ether = 50512; 
	public const int funnel_Ether = 50612; 
	public const int miasma_Ether = 50712; 
	public const int weapon_Ether = 50812; 
	public const int puddle_Ether = 50912; 
	public const int sword_Ether = 51012; 
	public const int ball_Acid = 50113; 
	public const int bolt_Acid = 50313; 
	public const int weapon_Magic = 50811; 
	public const int ball_Mind = 50104; 

	public const int miasma_Fire = 50700;

	public const int sword_Darkness = 51003; 
	public const int puddle_Darkness = 50903; 

	public const int SpHealHeavy = 8401;

@@ -356,12 +358,14 @@ public class SPELL

cs

	public const int SpGravity = 8708;

	public const int ball_Mind = 50104; 
	public const int sword_Darkness = 51003; 

	public const int SpSpeedDown = 8710;

	public const int SpInvisibility = 8775;

	public const int weapon_Fire = 50800; 
	public const int puddle_Fire = 50900;

	public const int sword_Fire = 51000;

@@ -386,11 +390,11 @@ public class SPELL

cs

	public const int ball_Lightning = 50102;

	public const int bolt_Lightning = 50302; 
	public const int funnel_Fire = 50600; 

	public const int weapon_Fire = 50800; 
	public const int bolt_Lightning = 50302; 

	public const int hand_Lightning = 50402; 
	public const int arrow_Lightning = 50502; 

	public const int funnel_Lightning = 50602;

@@ -416,16 +420,14 @@ public class SPELL

cs

	public const int weapon_Darkness = 50803;

	public const int puddle_Darkness = 50903; 
	public const int arrow_Lightning = 50502; 
	public const int funnel_Fire = 50600; 
	public const int hand_Lightning = 50402; 

	public const int arrow_Fire = 50500;

	public const int hand_Fire = 50400;

	public const int bolt_Fire = 50300; 
	public const int SpSeeInvisible = 8776;

	public const int SpIncognito = 8780;

@@ -434,6 +436,8 @@ public class SPELL

cs

	public const int SpTransmutePutit = 8791;

	public const int SpTransmuteCat = 8792; 
	public const int SpDarkness = 8800;

	public const int SpWeb = 8801;

@@ -482,39 +486,37 @@ public class SPELL

cs

	public const int puddle_Void = 50916;

	public const int bolt_Fire = 50300; 
	public const int SpTelepathy = 8770;

	public const int sword_Void = 51016;

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

Trait

@@ -1929,6 +1929,7 @@ public void OnBarter()

cs
			case "rodwyn":
				AddThing(ThingGen.CreateSpellbook(8790));
				AddThing(ThingGen.CreatePotion(8791).SetNum(3 + EClass.rnd(3)));
				AddThing(ThingGen.CreatePotion(8792).SetNum(3 + EClass.rnd(3))); 
				break;
			case "girl_blue":
				Add("779", 1 + EClass.rnd(3), 0);

TraitCrafter

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

cs
	case MixType.Sculpture:
	{
		t = ThingGen.Create(thing3);
		List<CardRow> list = EClass.player.codex.ListKills(); 
		list.Add(EClass.sources.cards.map["putty"]); 
		list.Add(EClass.sources.cards.map["snail"]); 
		CardRow cardRow = list.RandomItemWeighted((CardRow a) => Mathf.Max(50 - a.LV, Mathf.Clamp(EClass.pc.Evalue(258) / 2, 1, a.LV * 2))); 
		List<CardRow> list2 = EClass.player.codex.ListKills(); 
		list2.Add(EClass.sources.cards.map["putty"]); 
		list2.Add(EClass.sources.cards.map["snail"]); 
		CardRow cardRow = list2.RandomItemWeighted((CardRow a) => Mathf.Max(50 - a.LV, Mathf.Clamp(EClass.pc.Evalue(258) / 2, 1, a.LV * 2))); 
		t.c_idRefCard = cardRow.id;
		t.ChangeMaterial(thing.material);
		t.SetEncLv(Mathf.Min(EClass.rnd(EClass.rnd(Mathf.Max(5 + EClass.pc.Evalue(258) - cardRow.LV, 1))), 12));

@@ -338,15 +338,15 @@ public virtual Thing Craft(AI_UseCrafter ai)

cs
	case MixType.RuneMold:
	{
		Thing eq = ai.ings[0];
		Thing thing7 = eq.Duplicate(1); 
		thing7.SetEncLv(0); 
		List<Element> list2 = thing7.elements.ListRune(); 
		if (list2.Count == 0) 
		Thing thing4 = eq.Duplicate(1); 
		thing4.SetEncLv(0); 
		List<Element> list = thing4.elements.ListRune(); 
		if (list.Count == 0) 
		{
			Msg.SayNothingHappen();
			break;
		}
		foreach (Element item in list2) 
		foreach (Element item in list) 
		{
			SocketData runeEnc = eq.GetRuneEnc(item.id);
			item.vLink = 0;

@@ -365,7 +365,7 @@ public virtual Thing Craft(AI_UseCrafter ai)

cs
			Msg.Say("rune_tooHard", owner);
			break;
		}
		EClass.ui.AddLayer<LayerList>().SetList2(list2, (Element a) => a.Name, delegate(Element a, ItemGeneral b) 
		EClass.ui.AddLayer<LayerList>().SetList2(list, (Element a) => a.Name, delegate(Element a, ItemGeneral b) 
		{
			owner.ModNum(-1);
			eq.Destroy();

@@ -404,8 +404,11 @@ public virtual Thing Craft(AI_UseCrafter ai)

cs
				num7 = num7 * 2 / 3;
			}
			t = TraitSeed.MakeSeed(traitSeed.row);
			TraitSeed.LevelSeed(t, traitSeed.row, num7); 
			t.elements.SetBase(2, EClass.curve(t.encLV, 50, 10, 80)); 
			if (num7 > 0) 
			{ 
				TraitSeed.LevelSeed(t, traitSeed.row, num7); 
				t.elements.SetBase(2, EClass.curve(t.encLV, 50, 10, 80)); 
			} 
		}
		else
		{

@@ -416,17 +419,17 @@ public virtual Thing Craft(AI_UseCrafter ai)

cs
	case MixType.Talisman:
	{
		int num2 = EClass.pc.Evalue(1418);
		Thing thing4 = ai.ings[1]; 
		SourceElement.Row source2 = (thing4.trait as TraitSpellbook).source; 
		int num3 = thing4.c_charges * source2.charge * (100 + num2 * 50) / 500 + 1; 
		Thing thing5 = ai.ings[1]; 
		SourceElement.Row source2 = (thing5.trait as TraitSpellbook).source; 
		int num3 = thing5.c_charges * source2.charge * (100 + num2 * 50) / 500 + 1; 
		int num4 = 100;
		Thing thing5 = ThingGen.Create("talisman").SetNum(num3); 
		thing5.refVal = source2.id; 
		thing5.encLV = num4 * (100 + num2 * 10) / 100; 
		thing.ammoData = thing5; 
		Thing thing6 = ThingGen.Create("talisman").SetNum(num3); 
		thing6.refVal = source2.id; 
		thing6.encLV = num4 * (100 + num2 * 10) / 100; 
		thing.ammoData = thing6; 
		thing.c_ammo = num3;
		EClass.pc.Say("talisman", thing, thing5); 
		thing4.Destroy(); 
		EClass.pc.Say("talisman", thing, thing6); 
		thing5.Destroy(); 
		break;
	}
	case MixType.Scratch:

@@ -458,9 +461,9 @@ public virtual Thing Craft(AI_UseCrafter ai)

cs
		{
			owner.PlaySound((num5 == 3) ? "fortuneroll_winBig" : "fortuneroll_win");
		}
		Thing thing6 = ThingGen.Create("fortune_ball"); 
		thing6.ChangeMaterial(FortuneRollData.mats[num5]); 
		EClass._zone.AddCard(thing6, owner.pos); 
		Thing thing7 = ThingGen.Create("fortune_ball"); 
		thing7.ChangeMaterial(FortuneRollData.mats[num5]); 
		EClass._zone.AddCard(thing7, owner.pos); 
		owner.PlaySound("fortuneroll_ball");
		orCreateFortuneRollData.GetPrize(num5, seed);
		if ((bool)LayerDragGrid.Instance)

+TraitGeneratorWind

File Created
cs
public class TraitGeneratorWind : TraitGenerator
{
	public override bool Waterproof => true;
}