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)
public void MakeRefFrom(string id)
public Card MakeRefFrom(string id) AI_Sleep
public class AI_Sleep : AI_TargetThing
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()
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)
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)
thing.SetHidden(hide: false);
if (thing.id == "medal")
{
thing.PlayAnime(AnimeID.Hop);
c.PlaySound("medal");
Msg.Say("spotMedal", c, thing);
}BuildMenu
}
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)
}
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
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
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
}
}
}
goto IL_0e7f;
IL_0e7f:
goto IL_0ed7;
IL_0ed7:
if (trait.CanBeAttacked)
{
renderer.PlayAnime(AnimeID.HitObj);public void MakeFigureFrom(string id)
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)
{
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)
}
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)
{
num3 = 1 + Evalue(1648);
}
Debug.Log(cost.cost + "/" + a.Value);
if (IsPC && cost.cost > 0 && a.Value == 0)
{
Msg.SayNothingHappen();public override SubPassData GetSubPassData()
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
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
}
}
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)
{
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)
{
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)
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 encLv
{
get
{
return ints[22];
}
set
{
ints[22] = value;
}
}
public string id
{
get 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
card2.c_lockLv = 1;
}
}
if (card4.encLv != 0)
{
card2.SetEncLv(card4.encLv);
}
}
if (card2.isChara)
{Trait
public virtual bool CanOpenContainer
public virtual bool CanBeMasked => false;
public virtual bool IsLocalAct => true;
public virtual bool IsBlendBase => false;
public virtual bool CanBeOnlyBuiltInHome => false;TraitBed
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
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; 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)
condition.gene = null;
}
target.RemoveCondition<ConSuspend>();
target.Cure(CureType.Death);
target.MoveNeighborDefinitely();
target.PlaySound("ding_potential");
target.pos.PlayEffect("mutation");TraitViewMap
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)
SE.Trash();
genes.Remove(chara, g);
Refresh(idTab);
chara.RemoveAllStances();
});
}
});+Zone_EternalGarden
File Created
public class Zone_EternalGarden : Zone_Civilized
{
}