Skip to content

EA 23.194 Nightly

September 5, 2025

15 files modified. 1 new file created.

Important Changes

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

Card (1)

cs
public void MakeRefFrom(string id) 
public Card MakeRefFrom(string id) 

AI_Sleep

public class AI_Sleep : AI_TargetThing

cs
public class AI_Sleep : AI_TargetThing
{
	public override bool GotoTarget => true; 
	public Chara lover; 
	public override bool GotoTarget => lover == null; 

	public override void OnProgressComplete()
	{

public override void OnProgressComplete()

cs
		Msg.Say((EClass._zone.events.GetEvent<ZoneEventQuest>() != null) ? "badidea" : "notSleepy");
		return;
	}
	if (base.target != null && !owner.pos.Equals(base.target.pos)) 
	if (lover != null && lover.ExistsOnMap && lover.Dist(owner) <= 1) 
	{ 
		owner.Say("sleep_beside", owner, lover); 
		owner.MoveImmediate(lover.pos, focus: false, cancelAI: false); 
	} 
	else if (base.target != null && !owner.pos.Equals(base.target.pos)) 
	{
		owner._Move(base.target.pos);
	}

ActWait

public static bool SearchMedal(Chara c, Point p)

cs
		if (thing.isHidden && thing.id == "medal" && !EClass._zone.IsUserZone)
		{
			thing.SetHidden(hide: false);
			thing.PlayAnime(AnimeID.Hop); 
			c.PlaySound("medal");
			Msg.Say("spotMedal", c, thing);
			return true;

public static void Search(Chara c, bool manual = false)

cs
				thing.SetHidden(hide: false);
				if (thing.id == "medal")
				{
					thing.PlayAnime(AnimeID.Hop); 
					c.PlaySound("medal");
					Msg.Say("spotMedal", c, thing);
				}

BuildMenu

private void _Search()

cs
		}
		EMono.pc.things.Foreach(delegate(Thing t)
		{
			if (t.trait.CanBeDropped && !t.trait.CanOnlyCarry && (t.source.name.Contains(s) || t.source.name_JP.Contains(s) || t.NameOne.Contains(s))) 
			if (t.trait.CanBeDropped && !t.trait.CanOnlyCarry && !t.isEquipped && (t.source.name.Contains(s) || t.source.name_JP.Contains(s) || t.NameOne.Contains(s))) 
			{
				Recipe recipe3 = Recipe.Create(t);
				if (recipe3 == null)

public void RefreshCategory(string cat)

cs
				}
				EMono.pc.things.Foreach(delegate(Thing t)
				{
					if (!t.trait.CanOnlyCarry && t.trait.CanBeDropped && !t.c_isImportant) 
					if (!t.trait.CanOnlyCarry && t.trait.CanBeDropped && !t.c_isImportant && !t.isEquipped) 
					{
						counts[t.trait.RecipeCat]++;
						if (t.trait.RecipeCat == cat && t.invY != 1)

Card

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

cs
						flag3 = true;
						Chara.AddCondition<ConFractured>((int)Mathf.Max(10f, 30f - Mathf.Sqrt(Evalue(436))));
						hp = Mathf.Min(num13 * (int)Mathf.Sqrt(Evalue(436) * 2) / 100, MaxHP / 3);
						goto IL_0e7f; 
						goto IL_0ed7; 
					}
				}
				if (zoneInstanceBout != null && (bool)LayerDrama.Instance)

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

cs
						if (EClass.player.invlunerable)
						{
							EvadeDeath();
							goto IL_0e7f; 
							goto IL_0ed7; 
						}
					}
					if (IsPC && Evalue(1220) > 0 && Chara.stamina.value >= Chara.stamina.max / 2) 
					if (Evalue(1220) > 0 && Chara.stamina.value >= (IsPC ? (Chara.stamina.max / 2) : (Chara.stamina.max / 3 * 2))) 
					{
						Say("fate", this); 
						PlaySound("revive"); 
						PlayEffect("aura_heaven"); 
						Chara.stamina.Mod(-Chara.stamina.max / 2);
						Chara.AddCondition<ConInvulnerable>();
						EvadeDeath();

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

cs
			}
		}
	}
	goto IL_0e7f; 
	IL_0e7f: 
	goto IL_0ed7; 
	IL_0ed7: 
	if (trait.CanBeAttacked)
	{
		renderer.PlayAnime(AnimeID.HitObj);

public void MakeFigureFrom(string id)

cs
		MakeRefFrom(id);
	}

	public void MakeRefFrom(string id) 
	public Card MakeRefFrom(string id) 
	{
		c_idRefCard = id;
		return this; 
	}

	public void MakeRefFrom(Card c1, Card c2 = null)

Chara

public void RestockInventory(bool onCreate)

cs
{
	switch (id)
	{
	case "lomias": 
		if (ShouldRestock("_meat")) 
		{ 
			AddCard(ThingGen.Create("_meat").MakeRefFrom("begger")); 
		} 
		break; 
	case "fiama":
		Restock("book_story", 1);
		break;

public void RestockInventory(bool onCreate)

cs
		}
		void Restock(string id, int num)
		{
			if (things.Find(id) == null) 
			if (ShouldRestock(id)) 
			{
				AddCard(ThingGen.Create(id).SetNum(num));
			}
		}
		bool ShouldRestock(string id) 
		{ 
			return things.Find(id) == null; 
		} 
	}

	private void SetEQQuality()

public bool UseAbility(Act a, Card tc = null, Point pos = null, bool pt = false)

cs
	{
		num3 = 1 + Evalue(1648);
	}
	Debug.Log(cost.cost + "/" + a.Value); 
	if (IsPC && cost.cost > 0 && a.Value == 0)
	{
		Msg.SayNothingHappen();

public override SubPassData GetSubPassData()

cs
			return EClass.setting.pass.subDeadPCC;
		}
	}
	else if (conSleep != null && host == null && pos.Equals(EClass.pc.pos) && IsHuman && GetBool(123)) 
	else if (conSleep != null && host == null && pos.Equals(EClass.pc.pos) && IsHuman && (GetBool(123) || affinity.CanSleepBeside())) 
	{
		return EClass.setting.pass.subDead;
	}

public void Cure(CureType type, int p = 100, BlessedState state = BlessedState.N

cs
			Condition condition = conditions[num];
			if (!(condition is ConAnorexia) || type == CureType.Death)
			{
				if (condition.Type == ConditionType.Bad || condition.Type == ConditionType.Debuff || condition.Type == ConditionType.Disease) 
				ConditionType type2 = condition.Type; 
				if ((uint)(type2 - 2) <= 2u || type2 == ConditionType.Stance) 
				{
					condition.Kill();
				}

public void Cure(CureType type, int p = 100, BlessedState state = BlessedState.N

cs
		}
	}

	public void RemoveAllStances() 
	{ 
		for (int num = conditions.Count - 1; num >= 0; num--) 
		{ 
			Condition condition = conditions[num]; 
			if (condition.Type == ConditionType.Stance) 
			{ 
				condition.Kill(); 
			} 
		} 
	} 
	public bool TryNeckHunt(Chara TC, int power, bool harvest = false)
	{
		if (TC == null || TC.HasCondition<ConInvulnerable>() || TC.Evalue(1421) > 0 || !TC.ExistsOnMap)

DramaManager

public bool CheckIF(string IF)

cs
	{
	case "survival":
		return EMono.game.IsSurvival;
	case "!survival":
		return !EMono.game.IsSurvival; 
	case "fromBook":
		return LayerDrama.fromBook;
	case "!fromBook":

HotItemHeld

public override bool TrySetAct(ActPlan p)

cs
	{
		if (p.IsSelf && thing.trait.CanUse(EClass.pc))
		{
			return p.TrySetAct(thing.trait.LangUse, () => thing.trait.OnUse(p.cc), thing, null, -1); 
			return p.TrySetAct(thing.trait.LangUse, () => thing.trait.OnUse(p.cc), thing, null, -1, isHostileAct: false, thing.trait.IsLocalAct); 
		}
		if (EClass.scene.mouseTarget.target is Card && thing.trait.CanUse(EClass.pc, EClass.scene.mouseTarget.target as Card))
		{

Recipe

public bool HasSameTile(Point point, int dir, int altitude, int bridgeHeight)

cs
			return true;
		}
	}
	else if (IsBlock && point.matBlock == GetColorMaterial() && (point.sourceBlock == tileRow || (tileRow.tileType == point.sourceBlock.tileType && tileRow.tileType == TileType.Slope))) 
	else if (IsBlock && point.matBlock == GetColorMaterial() && (point.sourceBlock == tileRow || (tileRow != null && tileRow.tileType == point.sourceBlock.tileType && tileRow.tileType == TileType.Slope))) 
	{
		if (point.sourceBlock.tileType.AltitudeAsDir && dir != point.cell.objDir)
		{

SerializedCards

public int element

cs
			}
		}

		public int encLv 
		{ 
			get 
			{ 
				return ints[22]; 
			} 
			set 
			{ 
				ints[22] = value; 
			} 
		} 
		public string id
		{
			get

public void Add(Card c)

cs
		refVal = c.refVal,
		idSkin = c.idSkin,
		idDeity = c.c_idDeity,
		isEmpty = (c.things.Count == 0 && c.c_lockLv == 0) 
		isEmpty = (c.things.Count == 0 && c.c_lockLv == 0), 
		encLv = c.encLV 
	};
	if (c.c_idBacker != 0)
	{

public void Restore(Map map, Map orgMap, bool addToZone, PartialMap partial = nu

cs
					card2.c_lockLv = 1;
				}
			}
			if (card4.encLv != 0) 
			{ 
				card2.SetEncLv(card4.encLv); 
			} 
		}
		if (card2.isChara)
		{

Trait

public virtual bool CanOpenContainer

cs

	public virtual bool CanBeMasked => false;

	public virtual bool IsLocalAct => true; 
	public virtual bool IsBlendBase => false;

	public virtual bool CanBeOnlyBuiltInHome => false;

TraitBed

public int MaxHolders

cs
public override void TrySetAct(ActPlan p)
{
	ValidateOwners();
	Chara chara = owner.pos.FirstChara; 
	if (chara != null && !chara.affinity.CanSleepBeside()) 
	{ 
		chara = null; 
	} 
	p.TrySetAct(new AI_Sleep
	{
		target = owner.Thing 
		target = owner.Thing, 
		lover = chara 
	}, owner);
	p.TrySetAct(new AI_PassTime
	{

TraitDetector

public void Search()

cs
	int num = 999;
	foreach (Thing thing in EClass._map.things)
	{
		int num2 = EClass.pc.Dist(thing); 
		if ((thing.id.ToLower().Contains(term.ToLower()) || thing.Name.ToLower().Contains(term.ToLower())) && num2 < num) 
		if (!thing.isMasked) 
		{
			num = num2; 
			card = thing; 
			int num2 = EClass.pc.Dist(thing); 
			if ((thing.id.ToLower().Contains(term.ToLower()) || thing.Name.ToLower().Contains(term.ToLower())) && num2 < num) 
			{ 
				num = num2; 
				card = thing; 
			} 
		}
	}
	interval = 10;

public void Search()

cs
			Msg.Say((LangGame.Has(text) ? text : "beep").lang());
			WidgetMainText.ignoreStack = false;
		}
		owner.PlayAnime(AnimeID.HitObj); 
		owner.PlayAnime(AnimeID.Hop); 
	}

	public override void SetName(ref string s)

TraitGeneMachine

public override bool OnUse(Chara c)

cs
			condition.gene = null;
		}
		target.RemoveCondition<ConSuspend>();
		target.Cure(CureType.Death); 
		target.MoveNeighborDefinitely();
		target.PlaySound("ding_potential");
		target.pos.PlayEffect("mutation");

TraitViewMap

using UnityEngine;

cs
using UnityEngine; 
public class TraitViewMap : TraitItem
{
	public override bool IsLocalAct => false; 
	public override bool CanUseInUserZone => true;

	public override bool OnUse(Chara c)
	{
		Debug.Log("a"); 
		ActionMode.ViewMap.Activate();
		return false;
	}

WindowCharaMini

public void Refresh(int idTab)

cs
							SE.Trash();
							genes.Remove(chara, g);
							Refresh(idTab);
							chara.RemoveAllStances(); 
						});
					}
				});

+Zone_EternalGarden

File Created
cs
public class Zone_EternalGarden : Zone_Civilized
{
}