Skip to content

EA 23.254 Nightly Patch 1

January 2, 2026

5 files modified.

Important Changes

None.

Chara

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

cs
	switch (cost.type)
	{
	case Act.CostType.MP:
		if (Evalue(1421) >= 2 && base.hp <= MaxHP / (9 - Evalue(1421) * 2)) 
		if (Evalue(1421) >= 2 && base.hp <= MaxHP / Mathf.Max(1, 9 - Evalue(1421) * 2)) 
		{
			num6 /= 2;
		}

RecipeManager

public static RecipeSource GetUnlearnedRecipe(int lvBonus, string cat, bool only

cs
	List<RecipeSource> list = new List<RecipeSource>();
	foreach (RecipeSource item in RecipeManager.list)
	{
		if (!item.alwaysKnown && (item.NeedFactory || item.IsQuickCraft) && (cat == null || item.row.Category.IsChildOf(cat)) && (!onlyUnlearned || !EClass.player.recipes.knownRecipes.ContainsKey(item.id)) && EClass.pc.Evalue(item.GetReqSkill().id) + 5 + lvBonus >= item.row.LV && !item.row.ContainsTag("hiddenRecipe")) 
		if (!item.alwaysKnown && !item.noRandomRecipe && (item.NeedFactory || item.IsQuickCraft) && (cat == null || item.row.Category.IsChildOf(cat)) && (!onlyUnlearned || !EClass.player.recipes.knownRecipes.ContainsKey(item.id)) && EClass.pc.Evalue(item.GetReqSkill().id) + 5 + lvBonus >= item.row.LV && !item.row.ContainsTag("hiddenRecipe")) 
		{
			list.Add(item);
		}

public static RecipeSource GetLearnedRecipe(string cat = null)

cs
	foreach (string key in EClass.player.recipes.knownRecipes.Keys)
	{
		RecipeSource recipeSource = Get(key);
		if (recipeSource != null && recipeSource.row is SourceThing.Row && (recipeSource.NeedFactory || recipeSource.IsQuickCraft) && (cat == null || recipeSource.row.Category.IsChildOf(cat))) 
		if (recipeSource != null && recipeSource.row is SourceThing.Row && !recipeSource.noRandomRecipe && (recipeSource.NeedFactory || recipeSource.IsQuickCraft) && (cat == null || recipeSource.row.Category.IsChildOf(cat))) 
		{
			list.Add(recipeSource);
		}

RecipeSource

public class RecipeSource : EClass

cs

	public bool alwaysKnown;

	public bool noRandomRecipe; 
	public static List<Recipe.Ingredient> DefaultIngredients = new List<Recipe.Ingredient>
	{
		new Recipe.Ingredient

public Element GetReqSkill()

cs
	{
		return DefaultIngredients;
	}
	if (row.recipeKey.Length != 0 && row.recipeKey[0] == "*") 
	if (row.recipeKey.Length != 0) 
	{
		alwaysKnown = true; 
		if (row.recipeKey[0] == "*") 
		{ 
			alwaysKnown = true; 
		} 
		else if (row.recipeKey[0] == "-") 
		{ 
			noRandomRecipe = true; 
		} 
	}
	string[] components = row.components;
	List<Recipe.Ingredient> list = new List<Recipe.Ingredient>();

public Element GetReqSkill()

cs
					array3[0] = array3[0].Remove(0, 1);
					break;
				case '+':
					goto IL_0142; 
					goto IL_0164; 
				}
				break;
				IL_0142: 
				IL_0164: 
				optional = true;
				array3[0] = array3[0].Remove(0, 1);
			}

Thing

public override void OnCreate(int genLv)

cs
				{
					AddSocket();
				}
				for (int k = 0; k < EClass.rnd(num2 + 1); k++) 
				if (!bp.isCraft) 
				{
					Tuple<SourceElement.Row, int> enchant = GetEnchant(genLv, (SourceElement.Row r) => r.tag.Contains("modRanged"), neg: false); 
					if (enchant != null && InvOwnerMod.IsValidRangedMod(this, enchant.Item1)) 
					for (int k = 0; k < EClass.rnd(num2 + 1); k++) 
					{
						ApplySocket(enchant.Item1.id, enchant.Item2); 
						Tuple<SourceElement.Row, int> enchant = GetEnchant(genLv, (SourceElement.Row r) => r.tag.Contains("modRanged"), neg: false); 
						if (enchant != null && InvOwnerMod.IsValidRangedMod(this, enchant.Item1)) 
						{ 
							ApplySocket(enchant.Item1.id, enchant.Item2); 
						} 
					}
				}
			}

TraitGiftNewYear

public override bool OnUse(Chara c)

cs
	SE.Play("dropReward");
	EClass.pc.Pick(ThingGen.Create("kagamimochi"));
	EClass.pc.Pick(ThingGen.Create("1134"));
	EClass.pc.Pick(ThingGen.CreateRecipe("1310")); 
	Chara chara = CharaGen.Create("putty_snow");
	EClass._zone.AddCard(chara, (owner.ExistsOnMap ? owner.pos : EClass.pc.pos).GetNearestPoint(allowBlock: false, allowChara: false));
	Msg.Say("package_chara", chara, owner);