Skip to content

EA 23.182 Nightly

August 17, 2025

14 files modified.

Important Changes

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

TaskCullLife (1)

cs
public static Chara GetTarget() 
public Chara GetTarget() 

ActEffect

public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
			{
				attackSource = AttackSource.MagicSword;
			}
			int num4 = 0; 
			long num4 = 0L; 
			bool isChara = CC.isChara;
			if (id == EffectId.Suicide)
			{

public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
					{
						CC.ModExp(302, CC.IsPC ? 20 : 100);
					}
					if (num4 == 0) 
					if (num4 == 0L) 
					{
						continue;
					}

public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
				num4 = num4 * 100 / (100 + RapidCount * 50);
			}
			num4 = num4 * Act.powerMod / 100;
			c.DamageHP(num4, e.id, power * num / 100, attackSource, chara ?? CC); 
			if (num4 > 9999999) 
			{ 
				num4 = 9999999L; 
			} 
			c.DamageHP((int)num4, e.id, power * num / 100, attackSource, chara ?? CC); 
			if (c.IsAliveInCurrentZone && CC.IsAliveInCurrentZone && id == EffectId.DrainMana && c.isChara && CC.isChara && c.Chara.mana.value > 0)
			{
				int num6 = num4 * num / 100; 
				long num6 = num4 * num / 100; 
				Debug.Log(num4 + " v:" + num6 + " evalue:" + e.Value + " power:" + power + " elepMod:" + num);
				if (num6 > c.Chara.mana.value)
				{
					num6 = c.Chara.mana.value;
				}
				c.Chara.mana.Mod(-num6); 
				CC.Chara.mana.Mod(num6); 
				c.Chara.mana.Mod((int)(-num6)); 
				CC.Chara.mana.Mod((int)num6); 
			}
			if (id == EffectId.Explosive && CC.trait is TraitCookerMicrowave)
			{

public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
	}
	case EffectId.EternalYouth:
	{
		tc.PlaySound("dropRewardXmas"); 
		tc.PlaySound("mutation");
		tc.PlayEffect("mutation");
		if (tc.IsUnique)

public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
			{
				tc.Say("eternalYouth2", tc);
				tc.c_lockedAge = 0;
				tc.elements.Remove(1243); 
				tc.bio.SetAge(tc.Chara, age);
			}
			Redirect(EffectId.Youth, BlessedState.Cursed, default(ActRef));

public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
		}
		else
		{
			tc.PlaySound("dropRewardXmas"); 
			tc.Say("eternalYouth1", tc);
			tc.c_lockedAge = age;
			tc.elements.SetBase(1243, 1); 
			if (blessed)
			{
				Redirect(EffectId.Youth, BlessedState.Blessed, default(ActRef));

BaseTileMap

public virtual void Draw()

cs
	defaultBlockHeight = map.config.blockHeight;
	noRoofMode = false;
	bool flag = !isIndoor || EMono._zone is Zone_Tent;
	if (EMono._map.config.reverseRoof) 
	{ 
		flag = !flag; 
	} 
	if (usingHouseBoard || ActionMode.Bird.IsActive)
	{
		lowBlock = (hideRoomFog = (hideHang = false));

public virtual void Draw()

cs
	int valueOrDefault = (this.room?.lot?.idBGM).GetValueOrDefault();
	if (valueOrDefault == 0)
	{
		goto IL_16b9; 
		goto IL_16d1; 
	}
	if (!(EMono.Sound.currentPlaylist != EMono.Sound.plLot))
	{
		BGMData data = EMono.Sound.plLot.list[0].data;
		if ((object)data != null && data.id == valueOrDefault)
		{
			goto IL_16b9; 
			goto IL_16d1; 
		}
	}
	goto IL_16d8; 
	IL_16e2: 
	goto IL_16f0; 
	IL_16fa: 
	if (this.room != lastRoom)
	{
		screen.RefreshWeather();

public virtual void Draw()

cs
		SoundManager.bgmVolumeMod = ((!LayerDrama.maxBGMVolume && !EMono._map.IsIndoor && this.room != null && !this.room.data.atrium && this.room.HasRoof) ? (-0.6f) : 0f);
		screenHighlight = ScreenHighlight.None;
		return;
		IL_16b9: 
		IL_16d1: 
		if (valueOrDefault == 0 && EMono.Sound.currentPlaylist == EMono.Sound.plLot)
		{
			goto IL_16d8; 
			goto IL_16f0; 
		}
		goto IL_16e2; 
		IL_16d8: 
		goto IL_16fa; 
		IL_16f0: 
		EMono._zone.RefreshBGM();
		goto IL_16e2; 
		goto IL_16fa; 
	}

	public void RefreshHeight()

Card

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
			target = EClass._map.FindChara(zoneInstanceBout.uidTarget);
			if (target != null)
			{
				EClass.pc.ai.Cancel(); 
				if (IsPC)
				{
					EClass.pc.hp = 0;

EClass

public static int rndSeed(int a, int seed)

cs
		return result;
	}

	public static int rnd(long a) 
	{ 
		return Rand.rnd((int)a); 
	} 
	public static int rnd(int a)
	{
		return Rand.rnd(a);

ElementContainer

public void ModExp(int ele, float a, bool chain = false)

cs
		if (element.UseExpMod)
		{
			a = a * (float)Mathf.Clamp(element.UsePotential ? element.Potential : 100, 10, 1000) / (float)(100 + Mathf.Max(0, element.ValueWithoutLink) * 25);
			if (EClass.rndf(1f) < a % 1f + ((ele == 152) ? 0.01f : 0.1f)) 
			if (EClass.rndf(1f) < a % 1f) 
			{
				a += 1f;
			}

FACTION

public class FACTION

cs

	public const int fSoil = 2200;

	public const int fTaxEvasion = 2119; 
	public const int fHeirloom = 2120; 

	public const int fLuck = 2118;

public class FACTION

cs

	public const int fConstruction = 2003;

	public const int fHeirloom = 2120; 
	public const int fTaxEvasion = 2119; 

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

FEAT

public class FEAT

cs

	public const int featGeneSlot = 1242;

	public const int featEternalYouth = 1243; 
	public const int featGod_element1 = 1300;

	public const int featGod_earth1 = 1305;

public class FEAT

cs

	public const int featTourist = 1406;

	public const int featPaladin = 1407; 
	public const int featMassSummoner = 1240;

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

	public const int featDemon = 1239;

public class FEAT

cs

	public const int featElder = 1238;

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

	public const int featGod_luck1 = 1330;

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

	public const int featLuckyCat = 1412;

public class FEAT

cs

	public const int featFoxMaid = 1415;

	public const int featInquisitor = 1416; 
	public const int featWitch = 1417;

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

	public static readonly int[] IDS = new int[118] 
	public static readonly int[] IDS = new int[119] 
	{
		1216, 1644, 1643, 1642, 1641, 1640, 1636, 1635, 1634, 1633,
		1632, 1631, 1630, 1645, 1629, 1627, 1626, 1625, 1624, 1623,

public class FEAT

cs
		1648, 1215, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207,
		1208, 1209, 1210, 1647, 1211, 1214, 1659, 1658, 1657, 1656,
		1655, 1654, 1653, 1652, 1651, 1650, 1649, 1212, 1420, 1213,
		1418, 1241, 1242, 1300, 1305, 1310, 1315, 1320, 1325, 1335, 
		1340, 1345, 1350, 1355, 1400, 1401, 1402, 1403, 1404, 1405, 
		1406, 1407, 1240, 1408, 1239, 1237, 1419, 1218, 1219, 1220, 
		1418, 1241, 1242, 1243, 1300, 1305, 1310, 1315, 1320, 1325, 
		1335, 1340, 1345, 1350, 1355, 1400, 1401, 1402, 1403, 1404, 
		1405, 1406, 1240, 1407, 1239, 1237, 1419, 1218, 1219, 1220, 
		1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230,
		1217, 1231, 1232, 1233, 1234, 1235, 1236, 1238, 1409, 1330, 
		1411, 1412, 1413, 1414, 1415, 1416, 1417, 1410
		1217, 1231, 1232, 1233, 1234, 1235, 1236, 1238, 1408, 1330, 
		1410, 1411, 1412, 1413, 1414, 1415, 1417, 1416, 1409
	};
}
public class Feat : Element

FOOD

public class FOOD

cs

	public const int gainWeight = 705;

	public const int loseWeight = 706; 
	public const int food_bug = 704;

	public const int kirimi = 707; 
	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 creativeDish = 764;

	public const int kirimi = 707; 
	public const int food_god = 758; 
	public const int loseWeight = 706; 

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

Game

public void OnLoad()

cs
		}
	});
	TryAddQuest("into_darkness", "exile_kettle");
	if (version.IsBelow(0, 23, 182)) 
	{ 
		foreach (Chara value2 in cards.globalCharas.Values) 
		{ 
			if (!value2.IsUnique && value2.c_lockedAge != 0) 
			{ 
				value2.elements.SetBase(1243, 1); 
			} 
		} 
	} 
	if (version.IsBelow(0, 23, 155))
	{
		AddAdventurer("adv_yukiimo");

public void OnLoad()

cs
	}
	if (version.IsBelow(0, 23, 72))
	{
		foreach (Chara value2 in EClass.game.cards.globalCharas.Values) 
		foreach (Chara value3 in EClass.game.cards.globalCharas.Values) 
		{
			if (!value2.isDead) 
			if (!value3.isDead) 
			{
				value2.c_wasInPcParty = false; 
				value3.c_wasInPcParty = false; 
			}
		}
	}

public void OnLoad()

cs
	}
	if (version.IsBelow(0, 23, 51))
	{
		foreach (Chara value3 in EClass.game.cards.globalCharas.Values) 
		foreach (Chara value4 in EClass.game.cards.globalCharas.Values) 
		{
			if (!(value3.id != "adv") && value3.IsPCFaction) 
			if (!(value4.id != "adv") && value4.IsPCFaction) 
			{
				value3.idSkin = value3.uid % (value3.source._tiles.Length - 4) / 2 * 2 + ((!value3.IsMale) ? 1 : 0); 
				value4.idSkin = value4.uid % (value4.source._tiles.Length - 4) / 2 * 2 + ((!value4.IsMale) ? 1 : 0); 
			}
		}
	}

public void OnLoad()

cs
	});
	if (version.IsBelow(0, 22, 20))
	{
		foreach (Chara value4 in cards.globalCharas.Values) 
		foreach (Chara value5 in cards.globalCharas.Values) 
		{
			value4.SetBool(18, enable: false); 
			value5.SetBool(18, enable: false); 
		}
	}
	if (version.IsBelow(0, 22, 22))

MUTATION

public class MUTATION

cs

	public const int mutationSpeedN = 1519;

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

	public const int mutationDex = 1514; 
	public const int mutationRegen = 1516; 

	public const int mutationDexN = 1515; 
	public const int mutationDex = 1514; 

	public const int mutationEyeN = 1513;

public class MUTATION

cs

	public const int mutationSkinN = 1511;

	public const int mutationSkin = 1510; 
	public const int mutationStrN = 1521;

	public const int mutationRegen = 1516; 
	public const int mutationDexN = 1515; 

	public const int mutationCha = 1522;

public class MUTATION

cs

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

MapConfig

public class MapConfig : EClass

cs
	[JsonProperty]
	public bool retainDecal;

	[JsonProperty] 
	public bool reverseRoof; 
	[JsonProperty]
	public Weather.Condition fixedCondition = Weather.Condition.None;

TaskCullLife

public class TaskCullLife : Task

cs
{
	public Point dest;

	public HashSet<Chara> listSkip = new HashSet<Chara>(); 
	public static bool CanCull(Card c)
	{
		if (c.c_minionType == MinionType.Friend)

public override IEnumerable<Status> Run()

cs
				fail = true;
				return Status.Running;
			});
			if (!fail && target.IsAliveInCurrentZone) 
			if (fail || !target.IsAliveInCurrentZone) 
			{ 
				listSkip.Add(target); 
				continue; 
			} 
			if (owner.Dist(target) > 1) 
			{
				if (owner.Dist(target) > 1) 
				{ 
					yield return Cancel(); 
				} 
				owner.PlaySound("shear"); 
				Msg.Say("cull_life", EClass.pc, target); 
				target.Die(); 
				Thing t = ThingGen.Create("ecopo").SetNum(EClass.rndHalf((int)Mathf.Sqrt(target.LV) + 5)); 
				EClass.pc.Pick(t); 
				yield return KeepRunning(); 
				yield return Cancel(); 
			}
			owner.PlaySound("shear"); 
			Msg.Say("cull_life", EClass.pc, target); 
			target.Die(); 
			Thing t = ThingGen.Create("ecopo").SetNum(EClass.rndHalf((int)Mathf.Sqrt(target.LV) + 5)); 
			EClass.pc.Pick(t); 
			yield return KeepRunning(); 
		}
	}

	public static Chara GetTarget() 
	public Chara GetTarget() 
	{
		List<Chara> list = new List<Chara>();
		foreach (Chara chara in EClass._map.charas)
		{
			if (CanCull(chara)) 
			if (!listSkip.Contains(chara) && CanCull(chara)) 
			{
				list.Add(chara);
			}

Trait

public void OnBarter()

cs
			{
			case ShopType.Moyer:
			{
				for (int num10 = 1; num10 <= 10; num10++) 
				for (int num10 = 1; num10 <= 12; num10++) 
				{
					AddAdvWeek(num10);
				}

TraitMapBoard

public override void TrySetAct(ActPlan p)

cs
			});
			return false;
		}, owner);
		bool flag = !EClass._map.IsIndoor || EClass._zone is Zone_Tent; 
		if (EClass._map.config.reverseRoof) 
		{ 
			flag = !flag; 
		} 
		p.TrySetAct("actToggleMapRoof".lang((flag ? "on" : "off").lang()), delegate
		{ 
			EClass._map.config.reverseRoof = !EClass._map.config.reverseRoof; 
			SE.ClickOk(); 
			return false; 
		}, owner); 
	}
}