EA 23.353 Nightly โ
October 9, 2026
13 files modified. 3 new files created.
Important Changes โ
Possible breaking changes. Click the filename to view the chunk.
Chara (1) โ
public void SetSummon(int duration)
public void SetSummon(int duration, bool dropCorpse = false) AI_Idle โ
public override IEnumerable<Status> Run()
{
yield return KeepRunning();
}
if (owner.hp < owner.MaxHP * 60 / 100)
{
Action action = owner.things.Find((Thing thing10) => thing10.trait.GetHealAction(owner) != null)?.trait.GetHealAction(owner) ?? null;
if (action != null)
{
action();
yield return KeepRunning();
}
}
}
}
if (owner.IsPCFaction && EClass._zone.IsPCFaction)CINT โ
public const int peakyAdded = 134;
public const int isSleepLock = 135;
public const int isSummonDropCorpse = 136;
}Card โ
public virtual int GetPrice(CurrencyType currency = CurrencyType.Money, bool selโฆ)
case "1386":
return 13;
case "book_black":
if (!(c_idRefName == "sorin"))
{
return 20;
}
return 100;
case "scroll_random":
if (refVal == 8288)Chara โ
public bool HasMinion(string id)
return false;
}
public void SetSummon(int duration)
public void SetSummon(int duration, bool dropCorpse = false)
{
base.c_summonDuration = duration;
base.isSummon = true;
if (dropCorpse)
{
SetBool(136, enable: true);
}
}
public Chara FindMaster()public override void Die(Element e = null, Card origin = null, AttackSource attaโฆ)
{
EClass._zone.ResetHostility();
}
if (base.isSummon)
if (base.isSummon && !GetBool(136))
{
if (id == "tsunami")
{+HotItemActionBinocular โ
File Created
public class HotItemActionBinocular : HotAction
{
public override string Id => "Binocular";
public override bool CanName => false;
public override void Perform()
{
if (!(EClass.pc.things.Find<TraitViewMap>()?.trait is TraitViewMap traitViewMap))
{
Msg.Say("noBinoFound");
SE.Beep();
}
else
{
traitViewMap.OnUse(EClass.pc);
}
}
}HotItemActionSleep โ
public override void Perform()
Thing thing = EClass.pc.things.Find<TraitBed>();
if (thing == null)
{
Msg.Say("noBedFound".langGame());
Msg.Say("noBedFound");
SE.Beep();
return;
}QuestEscort โ
}
else
{
target.SetSummon(60);
target.SetSummon(60, dropCorpse: true);
}
}
}QuestMusic โ
{
if (EClass.rnd(100) < EClass.rnd(EClass.pc.elements.ValueWithoutLink(241)))
{
partyLv = Mathf.Min(1 + EClass.rnd(EClass.pc.elements.ValueWithoutLink(241) / 10), 1000000);
partyLv = Mathf.Min(1 + EClass.rnd(EClass.pc.elements.ValueWithoutLink(241) / 25), 1000000);
}
destScore = difficulty * 150 * (100 + Mathf.Min(partyLv, 10) * 10) / 100;
destScore += EClass.rnd(destScore / 5);Trait โ
public virtual void OnBarter(bool reroll = false)
{
break;
}
int num11 = 0;
int num14 = 0;
foreach (Thing thing11 in c_copyContainer.things)
{
if (!owner.trait.CanCopy(thing11))public virtual void OnBarter(bool reroll = false)
{
thing7.elements.Remove(item.id);
}
int num12 = 1;
int num15 = 1;
switch (owner.trait.CopyShop)
{
case CopyShopType.Item:
{
num12 = (1000 + owner.c_invest * 100) / (thing7.GetPrice(CurrencyType.Money, sell: false, PriceType.CopyShop) + 50);
int[] array = new int[3] { 704, 703, 702 };
foreach (int ele in array)
num15 = (1000 + owner.c_invest * 100) / (thing7.GetPrice(CurrencyType.Money, sell: false, PriceType.CopyShop) + 50);
int[] array2 = new int[3] { 704, 703, 702 };
foreach (int ele in array2)
{
if (thing7.HasElement(ele))
{
num12 = 1;
num15 = 1;
}
}
break;public virtual void OnBarter(bool reroll = false)
thing7.c_charges = thing11.c_charges;
break;
}
if (num12 > 1 && thing7.trait.CanStack)
if (num15 > 1 && thing7.trait.CanStack)
{
thing7.SetNum(num12);
thing7.SetNum(num15);
}
AddThing(thing7);
num11++;
if (num11 > owner.trait.NumCopyItem)
num14++;
if (num14 > owner.trait.NumCopyItem)
{
break;
}public virtual void OnBarter(bool reroll = false)
break;
case ShopType.RedBook:
{
for (int num5 = 0; num5 < 30; num5++)
for (int num7 = 0; num7 < 30; num7++)
{
AddThing(ThingGen.CreateFromFilter("shop_seeker"));
}public virtual void OnBarter(bool reroll = false)
}
case ShopType.KeeperOfGarden:
{
string[] array2 = new string[11]
string[] array = new string[11]
{
"stone_defense", "1325", "1326", "1327", "1328", "1330", "1331", "1332", "1333", "1283",
"1268"
};
foreach (string id in array2)
foreach (string id in array)
{
AddThing(ThingGen.Create(id, MATERIAL.GetRandomMaterialFromCategory(50, "rock", EClass.sources.materials.alias["granite"]).id).SetNum(99));
}public virtual void OnBarter(bool reroll = false)
AddThing(TraitSeed.MakeSeed("potato")).SetNum(4 + EClass.rnd(4));
AddThing(TraitSeed.MakeSeed("corn")).SetNum(4 + EClass.rnd(4));
AddThing(TraitSeed.MakeSeed("chanoki")).SetNum(4 + EClass.rnd(4));
for (int num14 = 0; num14 < EClass.rnd(3) + 1; num14++)
for (int num5 = 0; num5 < EClass.rnd(3) + 1; num5++)
{
Add("462", 1, 0);
}
for (int num15 = 0; num15 < EClass.rnd(3) + 1; num15++)
for (int num6 = 0; num6 < EClass.rnd(3) + 1; num6++)
{
Add("1167", 1, 0);
}public virtual void OnBarter(bool reroll = false)
break;
case ShopType.Influence:
{
bool num7 = owner.id == "big_sister";
TraitTicketFurniture.SetZone(num7 ? EClass.game.spatials.Find("little_garden") : EClass._zone, Add("ticket_furniture", 1, 0).SetNum(99));
if (num7)
bool num10 = owner.id == "big_sister";
TraitTicketFurniture.SetZone(num10 ? EClass.game.spatials.Find("little_garden") : EClass._zone, Add("ticket_furniture", 1, 0).SetNum(99));
if (num10)
{
Add("littleball", 10, 0);
if (!owner.Chara.affinity.CanGiveCard())public virtual void OnBarter(bool reroll = false)
}
if (!reroll)
{
for (int num8 = 0; num8 < 20; num8++)
for (int num11 = 0; num11 < 20; num11++)
{
owner.Chara.ModExp(287, 1000);
}public virtual void OnBarter(bool reroll = false)
AddThing(thing4);
break;
}
for (int num9 = 0; num9 < 10; num9++)
for (int num12 = 0; num12 < 10; num12++)
{
Thing thing5 = ThingGen.Create(EClass._zone.IsFestival ? "1123" : ((EClass.rnd(3) == 0) ? "1169" : "1160"));
thing5.DyeRandom();public virtual void OnBarter(bool reroll = false)
}
if (EClass._zone is Zone_Exile)
{
for (int num10 = 0; num10 < 30; num10++)
for (int num13 = 0; num13 < 30; num13++)
{
Add("1235", 1, -1);
Add("1236", 1, -1);public virtual void OnBarter(bool reroll = false)
AddThing(ThingGen.CreatePerfume(9501, 5));
AddThing(ThingGen.CreatePerfume(9502, 5));
AddThing(ThingGen.CreatePerfume(9503, 5));
for (int num6 = 0; num6 < 5; num6++)
for (int num9 = 0; num9 < 5; num9++)
{
Thing thing3 = ThingGen.CreateFromCategory("seasoning").SetNum(10);
thing3.elements.SetBase(2, 40);public virtual void OnBarter(bool reroll = false)
NoRestock(ThingGen.CreateRecipe("1300"));
NoRestock(ThingGen.CreateRecipe("1386"));
Thing thing2 = ThingGen.Create("book_black");
thing2.c_idRefName = "sorin";
NoRestock(thing2);
if (IsNoRestockExist(thing2))
{
thing2.c_idRefName = "sorin";
NoRestock(thing2);
}
else
{
thing2.c_idRefName = EClass.game.cards.globalCharas.Values.Where((Chara a) => a.IsUnique && a.id != "sorin").RandomItem().id;
AddThing(thing2);
}
Add("1386", 1, 0);
break;
}public virtual void OnBarter(bool reroll = false)
{
continue;
}
string[] array2 = item4.row.recipeKey;
for (int num13 = 0; num13 < array2.Length; num13++)
string[] array = item4.row.recipeKey;
for (int num8 = 0; num8 < array.Length; num8++)
{
if (array2[num13] == text)
if (array[num8] == text)
{
NoRestock(ThingGen.CreateRecipe(item4.id));
break;{
return t.AddThing(_t);
}
bool IsNoRestockExist(Thing _t)
{
if (t.things.Find(_t.id) != null)
{
return true;
}
HashSet<string> hashSet = EClass.player.noRestocks.TryGetValue(owner.id);
if (hashSet != null)
{
return !hashSet.Contains(_t.trait.IdNoRestock);
}
return true;
}
void NoRestock(Thing _t)
{
string text2 = owner.id;+TraitHeightMeasure โ
File Created
public class TraitHeightMeasure : TraitWeightScale
{
}TraitSorin โ
public class TraitSorin : TraitUniqueMerchant
public override CurrencyType CurrencyType => CurrencyType.Money3;
public override int CostRerollShop => 2;
public override bool CanInvest => false;
public override int ShopLv => 1;TraitStrangePainting โ
{
Chara chara = EClass._zone.SpawnMob(owner.pos.GetNearestPoint(allowBlock: false, allowChara: false), new SpawnSetting
{
id = "paint_living",
id = ((EClass.rnd(2) == 0) ? "paint_living" : "paint_living2"),
filterLv = EClass._zone.DangerLv + 20
});
chara.SetHostility(Hostility.Enemy);
chara.SetSummon(9999);
chara.SetSummon(9999, dropCorpse: true);
Msg.Say("statue_chara", chara, owner);
}
}TraitStrangeStatue โ
filterLv = EClass._zone.DangerLv + 20
});
chara.SetHostility((EClass.rnd(3) != 0 || chara.trait is TraitMerchant) ? Hostility.Enemy : Hostility.Neutral);
chara.SetSummon(9999);
chara.SetSummon(9999, dropCorpse: true);
Msg.Say("statue_chara", chara, owner);
}
}TraitViewMap โ
using UnityEngine;
public class TraitViewMap : TraitItem
{
public override bool IsLocalAct => false;public class TraitViewMap : TraitItem
public override bool OnUse(Chara c)
{
Debug.Log("a");
ActionMode.ViewMap.Activate();
return false;
}+TraitWeightScale โ
File Created
public class TraitWeightScale : Trait
{
public override void OnStepped(Chara c)
{
c.PlaySound("trap");
c.Say("trap", c, owner);
if (this is TraitHeightMeasure)
{
owner.TalkRaw("weightScale".langGame(c.Name, c.bio.weight.ToFormat() ?? ""));
}
else
{
owner.TalkRaw("heightMeasure".langGame(c.Name, c.bio.height.ToFormat() ?? ""));
}
}
}WidgetHotbar โ
public void SetShortcutMenu(ButtonHotItem b, UIContextMenu m)
{
SetItem(b, new HotItemActionSleep());
});
m.AddButton("hotActionBinocular".lang(), delegate
{
SetItem(b, new HotItemActionBinocular());
});
}
public void SetItem(ButtonHotItem b, HotItem item)