Skip to content

EA 23.169 Nightly

July 18, 2025

8 files modified.

Important Changes

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

Card (1)

cs
public bool IsExcludeFromCraft() 
public bool IsExcludeFromCraft(Recipe.Ingredient ing) 

Chara (1)

cs
public void RequestProtection(Chara attacker, Action<Chara> action) 
public bool RequestProtection(Chara attacker, Action<Chara> action) 

ActMelee

@@ -111,10 +111,10 @@ public bool Attack(float dmgMulti = 1f, bool maxRoll = false)

cs
		return true;
	}
	Act.CC.renderer.PlayAnime(AnimeID.Attack, Act.TC);
	Act.TC?.Chara?.RequestProtection(Act.CC, delegate(Chara c) 
	bool intercepted = (Act.TC?.Chara?.RequestProtection(Act.CC, delegate(Chara c) 
	{
		Act.TC = c;
	}); 
	})).GetValueOrDefault(); 
	Act.TP.Set(Act.TC.pos);
	CellEffect effect = Act.TP.cell.effect;
	if (effect != null && effect.id == 6 && EClass.rnd(2) == 0)

@@ -176,7 +176,7 @@ void _Attack(BodySlot slot)

cs
				w = slot.thing;
			}
			int num = 1 + Mathf.Max(Act.CC.Evalue(666), (w != null) ? w.Evalue(666) : 0);
			if (!UseWeaponDist || dist <= 1 || dist <= num) 
			if (!UseWeaponDist || dist <= 1 || dist <= num || intercepted) 
			{
				int num2 = GetWeaponEnc(606, addSelfEnc: false);
				int scatter = GetWeaponEnc(607, addSelfEnc: false);

ActRanged

@@ -187,6 +187,10 @@ public override bool Perform()

cs
			return true;
		}
	}
	Act.TC?.Chara?.RequestProtection(Act.CC, delegate(Chara c) 
	{ 
		Act.TC = c; 
	}); 
	Act.CC.LookAt(Act.TP);
	int index = 0;
	Point orgTP = Act.TP.Copy();

@@ -283,13 +287,6 @@ void Shoot(Card _tc, Point _tp)

cs
		index++;
		Act.TC = _tc;
		Act.TP = _tp;
		if (index == 1) 
		{ 
			Act.TC?.Chara?.RequestProtection(Act.CC, delegate(Chara c) 
			{ 
				Act.TC = c; 
			}); 
		} 
		CellEffect effect = Act.TP.cell.effect;
		if (effect != null && effect.id == 6 && EClass.rnd(2) == 0)
		{

Card

@@ -2462,9 +2462,9 @@ public Window.SaveData GetWindowSaveData()

cs
		return c_windowSaveData;
	}

	public bool IsExcludeFromCraft() 
	public bool IsExcludeFromCraft(Recipe.Ingredient ing) 
	{
		if (IsUnique || c_isImportant) 
		if ((IsUnique && ing.id != id && !ing.idOther.Contains(id)) || c_isImportant) 
		{
			return true;
		}

Chara

@@ -7800,11 +7800,19 @@ public void GiveLovePotion(Chara c, Thing t)

cs
		t.Destroy();
	}

	public void RequestProtection(Chara attacker, Action<Chara> action) 
	public bool RequestProtection(Chara attacker, Action<Chara> action) 
	{
		if (HasCondition<StanceTaunt>() || base.isRestrained || attacker == this || (host != null && host.isRestrained) || (base.IsPCFactionOrMinion && attacker.IsPCFactionOrMinion)) 
		if (HasCondition<StanceTaunt>() || base.isRestrained || attacker == this) 
		{
			return; 
			return false; 
		} 
		if (host != null && host.isRestrained) 
		{ 
			return false; 
		} 
		if (base.IsPCFactionOrMinion && attacker.IsPCFactionOrMinion) 
		{ 
			return false; 
		}
		bool flag = false;
		foreach (Chara chara in EClass._map.charas)

@@ -7868,6 +7876,7 @@ public void RequestProtection(Chara attacker, Action<Chara> action)

cs
				flag = true;
			}
		}
		return flag; 
	}

	public bool ShouldThrowAway(Thing t, ClearInventoryType type)

CraftUtil

@@ -304,12 +304,17 @@ void MixElements(Card t)

cs
				{
					if (isFood && value3.IsFoodTraitMain)
					{
						product.elements.ModBase(value3.id, value3.Value); 
						int num5 = value3.Value; 
						if (product.id == "lunch_dystopia") 
						{ 
							num5 *= -1; 
						} 
						product.elements.ModBase(value3.id, num5); 
					}
					else
					{
						int num5 = product.elements.Base(value3.id); 
						if ((num5 <= 0 && value3.Value < 0 && value3.Value < num5) || (value3.Value > 0 && value3.Value > num5)) 
						int num6 = product.elements.Base(value3.id); 
						if ((num6 <= 0 && value3.Value < 0 && value3.Value < num6) || (value3.Value > 0 && value3.Value > num6)) 
						{
							product.elements.SetTo(value3.id, value3.Value);
						}

Props

@@ -254,7 +254,7 @@ void FindCat(string id)

cs
		SourceCategory.Row cat = EClass.sources.categories.map[id];
		EClass.pc.things.Foreach(delegate(Thing t)
		{
			if (!t.isEquipped && t.category.IsChildOf(cat.id) && !t.IsExcludeFromCraft()) 
			if (!t.isEquipped && t.category.IsChildOf(cat.id) && !t.IsExcludeFromCraft(ing)) 
			{
				stack.Add(t);
			}

@@ -264,7 +264,7 @@ void FindCat(string id)

cs
			foreach (Thing thing2 in things)
			{
				Card obj = thing2.parent as Card;
				if (obj != null && obj.c_lockLv == 0 && thing2.category.IsChildOf(cat.id) && !thing2.IsExcludeFromCraft()) 
				if (obj != null && obj.c_lockLv == 0 && thing2.category.IsChildOf(cat.id) && !thing2.IsExcludeFromCraft(ing)) 
				{
					stack.Add(thing2);
				}

@@ -273,7 +273,7 @@ void FindCat(string id)

cs
	}
	void TryAdd(Thing t)
	{
		if ((tag == null || t.Thing.material.tag.Contains(tag)) && (idMat == -1 || t.material.id == idMat) && !t.IsExcludeFromCraft()) 
		if ((tag == null || t.Thing.material.tag.Contains(tag)) && (idMat == -1 || t.material.id == idMat) && !t.IsExcludeFromCraft(ing)) 
		{
			stack.Add(t.Thing);
		}

StanceSongSleep

@@ -9,7 +9,7 @@ public override void OnStart()

cs

	public override void Tick()
	{
		if (owner.HasCondition<ConSilence>()) 
		if (owner.HasCondition<ConSilence>() || EClass._zone.IsRegion) 
		{
			return;
		}

TraitBaseSpellbook

@@ -195,7 +195,7 @@ public override void OnRead(Chara c)

cs
			}
			if (!owner.c_idRefName.IsEmpty())
			{
				CardRow cardRow = EClass.sources.cards.map[owner.c_idRefName]; 
				CardRow cardRow = EClass.sources.cards.map.TryGetValue(owner.c_idRefName, "putty"); 
				c.Say("learn_weakspot", c, cardRow.GetName());
				if (c.IsPC)
				{