EA 23.336 Nightly
August 17, 2026
8 files modified.
Important Changes
None.
ACT
public bool CanPerform(Chara _cc, Card _tc = null, Point _tp = null)
cs
if (tt.Range == TargetRange.Self)
{
TP.Set(CC.pos);
TC = CC;
return CanPerform();
}
if (CC.IsPC && EClass.core.config.game.shiftToUseNegativeAbilityOnSelf)ActEffect
void AddCon<T>(int rate, int power) where T : Condition
cs
case EffectId.LittleSisterMigration:
case EffectId.SilverCatMigration:
{
bool flag3 = id == EffectId.SilverCatMigration;
if (!EClass.game.IsSurvival && ((flag3 && EClass._zone.id != "startVillage2") || (!flag3 && !(EClass._zone is Zone_LittleGarden))))
bool flag5 = id == EffectId.SilverCatMigration;
if (!EClass.game.IsSurvival && ((flag5 && EClass._zone.id != "startVillage2") || (!flag5 && !(EClass._zone is Zone_LittleGarden))))
{
Msg.SayNothingHappen();
return;
}
List<Chara> list2 = new List<Chara>();
bool flag4 = false;
bool flag6 = false;
foreach (Chara chara3 in EClass._map.charas)
{
if (!chara3.IsPCFactionOrMinion && chara3.id == (flag3 ? "cat_silver" : "littleOne"))
if (!chara3.IsPCFactionOrMinion && chara3.id == (flag5 ? "cat_silver" : "littleOne"))
{
if (flag4)
if (flag6)
{
flag4 = false;
flag6 = false;
continue;
}
list2.Add(chara3);
flag4 = true;
flag6 = true;
}
}
if (list2.Count == 0)void AddCon<T>(int rate, int power) where T : Condition
cs
item2.PlayEffect("revive");
item2.Destroy();
}
Msg.Say(flag3 ? "cat_migration" : "little_migration", list2.Count.ToString() ?? "");
Msg.Say(flag5 ? "cat_migration" : "little_migration", list2.Count.ToString() ?? "");
EClass._zone.ModInfluence(list2.Count);
if (flag3)
if (flag5)
{
EClass.player.stats.catDepart += list2.Count;
break;void AddCon<T>(int rate, int power) where T : Condition
cs
TC.PlaySound("curse3");
TC.PlayEffect("curse");
TC.Say("forgetItems", TC);
int num4 = power / 50 + 1 + EClass.rnd(3);
int num3 = power / 50 + 1 + EClass.rnd(3);
List<Thing> source = TC.things.List((Thing t) => t.c_IDTState == 0);
for (int j = 0; j < num4; j++)
for (int j = 0; j < num3; j++)
{
source.RandomItem().c_IDTState = 5;
}void AddCon<T>(int rate, int power) where T : Condition
cs
case EffectId.EnchantArmorGreat:
{
bool armor = id == EffectId.EnchantArmor || id == EffectId.EnchantArmorGreat;
bool flag5 = id == EffectId.EnchantWeaponGreat || id == EffectId.EnchantArmorGreat;
bool flag3 = id == EffectId.EnchantWeaponGreat || id == EffectId.EnchantArmorGreat;
if (!tc.isThing)
{
LayerDragGrid.CreateEnchant(CC, armor, flag5, state);
LayerDragGrid.CreateEnchant(CC, armor, flag3, state);
return;
}
cc.PlaySound("identify");void AddCon<T>(int rate, int power) where T : Condition
cs
tc.ModEncLv(-1);
break;
}
int num3 = (flag5 ? 4 : 2) + (blessed ? 1 : 0);
if (tc.encLV >= num3)
int num4 = (flag3 ? 4 : 2) + (blessed ? 1 : 0);
if (tc.encLV >= num4)
{
cc.Say("enc_resist", tc);
break;void AddCon<T>(int rate, int power) where T : Condition
cs
case EffectId.Identify:
case EffectId.GreaterIdentify:
{
bool flag6 = id == EffectId.GreaterIdentify;
bool flag4 = id == EffectId.GreaterIdentify;
if (flag)
{
Redirect(EffectId.ForgetItems, flag6 ? BlessedState.Cursed : BlessedState.Normal, default(ActRef));
Redirect(EffectId.ForgetItems, flag4 ? BlessedState.Cursed : BlessedState.Normal, default(ActRef));
break;
}
if (!tc.isThing)
if (!tc.isThing || (actRef.refThing == null && cc.IsPC && tc.GetRootCard() == tc))
{
int count = ((!blessed) ? 1 : (flag6 ? (2 + EClass.rnd(2)) : (3 + EClass.rnd(3))));
LayerDragGrid.CreateIdentify(CC, flag6, state, 0, count);
int count = ((!blessed) ? 1 : (flag4 ? (2 + EClass.rnd(2)) : (3 + EClass.rnd(3))));
LayerDragGrid.CreateIdentify(tc.isChara ? tc.Chara : CC, flag4, state, 0, count);
return;
}
cc.PlaySound("identify");
cc.PlayEffect("identify");
tc.Thing.Identify(cc.IsPCParty, (!flag6) ? IDTSource.Identify : IDTSource.SuperiorIdentify);
tc.Thing.Identify(cc.IsPCParty, (!flag4) ? IDTSource.Identify : IDTSource.SuperiorIdentify);
break;
}
case EffectId.Uncurse:Card
public bool TryStackTo(Thing to)
cs
{
return false;
}
to.decay = (to.decay * to.Num + decay * Num) / (to.Num + Num);
to.decay = MathEx.ClampToInt(((long)to.decay * (long)to.Num + (long)decay * (long)Num) / ((long)to.Num + (long)Num));
to.ModNum(Num);
if (c_isImportant)
{Chara
public void RestockEquip(bool onCreate)
cs
EQ_ID("sword_zephir");
}
break;
case "adv_schwert":
if (onCreate)
{
EQ_ID("sword", -1, Rarity.Legendary);
}
if (onCreate)
{
EQ_ID("dagger", -1, Rarity.Legendary);
}
break;
case "adv_mesherada":
if (onCreate)
{public bool CanEat(Thing t, bool shouldEat = false)
cs
{
return false;
}
if ((IsPC || (homeBranch != null && homeBranch.GetCivility() >= 50)) && (t.HasTag(CTAG.dish_fail) || t.id == "731"))
{
return false;
}
if (!t.IsNegativeGift && !t.HasTag(CTAG.ignoreUse) && !t.isEquipped)
{
return t.trait.CanEat(this);FoodEffect
public static void Proc(Chara c, Thing food, bool consume = true)
cs
num3 *= 2;
}
num3 = num3 * (100 + c.Evalue(1235) * 10) / (100 + c.Evalue(1234) * 10 + c.Evalue(1236) * 15);
if (num3 < 1)
{
num3 = 1;
}
c.hunger.Mod(-num3);
if (flag2)
{Game
cs
}
}
EClass.pc.angle = player.angle;
ApplyFix();
if (!version.Equals(EClass.core.version))
{
player.recipes.OnVersionUpdate();
}
if (cards.container_deposit == null)
{
cards.container_deposit = ThingGen.Create("container_deposit");
if (player.bankMoney > 0)
{
cards.container_deposit.Add("money", player.bankMoney);
}
}
foreach (Quest item4 in quests.list)
{
if (item4 is QuestSequence && !EClass.sources.quests.map.ContainsKey(item4.idSource))
{
item4.phase = 0;
}
}
foreach (Quest global in quests.globalList)
{
if (global is QuestSequence && !EClass.sources.quests.map.ContainsKey(global.idSource))
{
global.phase = 0;
}
}
foreach (KeyValuePair<int, Spatial> item5 in EClass.game.spatials.map.ToList())
{
if (item5.Value == null)
{
EClass.game.spatials.map.Remove(item5.Key);
}
}
}
public void ApplyFix()
{
EClass.pc.elements.CheckSkillActions();
if (cards.listAdv.Count == 0)
{cs
{
if (!(q is QuestRandom))
{
foreach (Quest item4 in quests.list)
foreach (Quest item in quests.list)
{
if (q != item4 && item4.id == q.id)
if (q != item && item.id == q.id)
{
quests.list.Remove(item4);
quests.list.Remove(item);
break;
}
}cs
}
}
});
if (version.IsBelow(0, 23, 336))
{
AddAdventurer("adv_schwert");
}
TryAddQuest("into_darkness", "exile_kettle");
if (version.IsBelow(0, 23, 221) && EClass.game.quests.IsCompleted("curry"))
{cs
}
if (version.IsBelow(0, 23, 182))
{
foreach (Chara value2 in cards.globalCharas.Values)
foreach (Chara value in cards.globalCharas.Values)
{
if (!value2.IsUnique && value2.c_lockedAge != 0)
if (!value.IsUnique && value.c_lockedAge != 0)
{
value2.elements.SetBase(1243, 1);
value.elements.SetBase(1243, 1);
}
}
}cs
}
if (version.IsBelow(0, 23, 72))
{
foreach (Chara value3 in EClass.game.cards.globalCharas.Values)
foreach (Chara value2 in EClass.game.cards.globalCharas.Values)
{
if (!value3.isDead)
if (!value2.isDead)
{
value3.c_wasInPcParty = false;
value2.c_wasInPcParty = false;
}
}
}cs
}
if (version.IsBelow(0, 23, 51))
{
foreach (Chara value4 in EClass.game.cards.globalCharas.Values)
foreach (Chara value3 in EClass.game.cards.globalCharas.Values)
{
if (!(value4.id != "adv") && value4.IsPCFaction)
if (!(value3.id != "adv") && value3.IsPCFaction)
{
value4.idSkin = value4.uid % (value4.source._tiles.Length - 4) / 2 * 2 + ((!value4.IsMale) ? 1 : 0);
value3.idSkin = value3.uid % (value3.source._tiles.Length - 4) / 2 * 2 + ((!value3.IsMale) ? 1 : 0);
}
}
}cs
});
if (version.IsBelow(0, 22, 20))
{
foreach (Chara value5 in cards.globalCharas.Values)
foreach (Chara value4 in cards.globalCharas.Values)
{
value5.SetBool(18, enable: false);
value4.SetBool(18, enable: false);
}
}
if (version.IsBelow(0, 22, 22))cs
{
EClass.pc.faithElements.SetParent();
}
foreach (Element item5 in EClass.pc.elements.ListElements((Element e) => e.source.categorySub == "god"))
foreach (Element item2 in EClass.pc.elements.ListElements((Element e) => e.source.categorySub == "god"))
{
EClass.pc.SetFeat(item5.id, 0);
EClass.pc.SetFeat(item2.id, 0);
}
EClass.pc.RefreshFaithElement();
}cs
{
player.debt = 20000000;
}
if (!version.Equals(EClass.core.version))
{
player.recipes.OnVersionUpdate();
}
if (cards.container_deposit == null)
{
cards.container_deposit = ThingGen.Create("container_deposit");
if (player.bankMoney > 0)
{
cards.container_deposit.Add("money", player.bankMoney);
}
}
foreach (Quest item6 in quests.list)
{
if (item6 is QuestSequence && !EClass.sources.quests.map.ContainsKey(item6.idSource))
{
item6.phase = 0;
}
}
foreach (Quest global2 in quests.globalList)
{
if (global2 is QuestSequence && !EClass.sources.quests.map.ContainsKey(global2.idSource))
{
global2.phase = 0;
}
}
foreach (KeyValuePair<int, Spatial> item7 in EClass.game.spatials.map.ToList())
{
if (item7.Value == null)
{
EClass.game.spatials.map.Remove(item7.Key);
}
}
void TryAddQuest(string idQuest, string idReqQuest)
{
if (quests.completedIDs.Contains(idReqQuest) && !quests.completedIDs.Contains(idQuest) && quests.GetGlobal(idQuest) == null && quests.Get(idQuest) == null)cs
public void AddAdventurers()
{
List<Zone> source = world.region.ListTowns();
string[] array = new string[7] { "adv_kiria", "adv_gaki", "adv_wini", "adv_verna", "adv_ivory", "adv_mesherada", "adv_yukiimo" };
string[] array = new string[8] { "adv_kiria", "adv_gaki", "adv_wini", "adv_verna", "adv_ivory", "adv_mesherada", "adv_yukiimo", "adv_schwert" };
for (int i = 0; i < EClass.setting.balance.numAdv; i++)
{
Zone zone = source.RandomItem();Thing
public override bool CanStackTo(Thing to)
cs
_ = 770;
}
}
int num2 = (to.encLV = Mathf.CeilToInt(1f * (float)(base.encLV * base.Num + to.encLV * to.Num) / (float)(base.Num + to.Num)));
int num2 = (to.encLV = Mathf.CeilToInt(MathEx.ClampToInt(((long)base.encLV * (long)base.Num + (long)to.encLV * (long)to.Num) / ((long)base.Num + (long)to.Num))));
base.encLV = num2;
foreach (Element value2 in elements.dict.Values)
{
Element element2 = to.elements.GetElement(value2.id);
value2.vBase = (element2.vBase = (value2.vBase * base.Num + element2.vBase * to.Num) / (base.Num + to.Num));
value2.vBase = (element2.vBase = MathEx.ClampToInt(((long)value2.vBase * (long)base.Num + (long)element2.vBase * (long)to.Num) / ((long)base.Num + (long)to.Num)));
}
return true;
}TraitChara
public virtual int GetAdvRank()
cs
case "adv_yukiimo":
case "adv_kiria":
case "adv_ivory":
case "adv_schwert":
min = 4;
break;
}