Skip to content

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

public void OnLoad()

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)
	{

public void OnLoad()

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;
			}
		}

public void OnLoad()

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"))
{

public void OnLoad()

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); 
		}
	}
}

public void OnLoad()

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; 
		}
	}
}

public void OnLoad()

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); 
		}
	}
}

public void OnLoad()

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))

public void OnLoad()

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();
}

public void OnLoad()

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)

public void StartNewGame()

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;
}