Skip to content

EA 23.243 Nightly Patch 1

December 4, 2025

9 files modified.

Important Changes

Possible breaking changes. Click the filename to view the chunk.

Card (1)

cs
public void AddExp(int a) 
public void AddExp(int a, bool applyMod = true) 

AI_PlayMusic

public override IEnumerable<Status> Run()

cs
	{
		switch (tool.id)
		{
		case "sax": 
		case "trumpet":
			idSong = "trumpet_practice";
			break;

Card

public void ClampInitialSkill()

cs
		}
	}

	public void AddExp(int a) 
	public void AddExp(int a, bool applyMod = true) 
	{
		a = a * GetExpMtp() / 100; 
		if (applyMod) 
		{ 
			a = a * GetExpMtp() / 100; 
		} 
		exp += a;
		while (exp >= ExpToNext && exp > 0 && ExpToNext > 0)
		{

public int GetExpMtp()

cs
				}
			}
		}
		return num * (100 + Evalue(1237) * 30) / 100; 
		return num * (100 + Evalue(1237) * 30 + Evalue(1273) * 50) / 100; 
	}

	public int GetAffinityExpBonus()

Chara

public override MoveResult _Move(Point newPoint, MoveType type = MoveType.Walk)

cs
				num2 += 20;
				num *= 1.8f;
			}
			num2 = num2 * 100 / (100 + EvalueMax(240, -20) + EvalueMax(407, -5) * 5); 
			num2 = num2 * 100 / (100 + (int)Mathf.Sqrt(EvalueMax(240, -20) * 10) + EvalueMax(407, -5) * 5); 
			EClass.world.date.AdvanceMin(num2 * 6);
			EClass.player.lastZonePos = null;
			EClass.player.distanceTravel++;

ConVampire

using Newtonsoft.Json;

cs
using Newtonsoft.Json;
using UnityEngine; 

public class ConVampire : Condition
{

public override ElementContainer GetElementContainer()

cs

	public override void Tick()
	{
		if (EClass._zone.IsRegion || EClass.rnd(10) != 0) 
		if (EClass.rnd(2) != 0) 
		{
			return;
		}
		int num = List_Vampire.RandomItem();
		int num2 = ec.Value(num);
		int num3 = owner.elements.Base(num) / 7 + 5; 
		if (EClass.world.date.IsNight)
		{
			int num3 = owner.elements.Base(num) / 5 + 5; 
			switch (num)
			{
			case 60:

public override void Tick()

cs
			}
			if (num2 < num3 && (float)EClass.rnd(100) >= 99f * (float)num2 / (float)num3)
			{
				ec.ModBase(num, 1); 
				ec.ModBase(num, Mathf.Clamp(num3 / 10, 1, num3 - num2)); 
			}
		}
		else if (num2 > 0)
		{
			ec.ModBase(num, -1); 
			ec.ModBase(num, -Mathf.Clamp(num3 / 4, 1, num2)); 
		}
	}

DramaOutcome

public int GetFelmeraRewardIndex()

cs
{
	int count = EMono.player.sketches.Count;
	int num = count / 10;
	if (num >= 29) 
	if (num >= 31) 
	{
		num = 29; 
		num = 31; 
	}
	Debug.Log(count + "/" + num + "/" + EMono.player.lastFelmeraReward);
	return num;

InvOwner

public bool Process(bool startTransaction = false)

cs
				{
					EClass.pc.ModCurrency(-price, IDCurrency);
				}
				if (sell && !thing2.IsIdentified) 
				if (sell && !thing2.IsIdentified && !ShopTransaction.current.HasBought(thing2)) 
				{
					thing2.Identify(show: true, IDTSource.SuperiorIdentify);
				}

Trait

public void OnBarter(bool reroll = false)

cs
				break;
			case ShopType.Moyer:
			{
				for (int num12 = 1; num12 <= 15; num12++) 
				for (int num12 = 1; num12 <= 16; num12++) 
				{
					AddAdvWeek(num12);
				}

TraitBookExp

public override void OnRead(Chara c)

cs
{
	EClass.player.forceTalk = true;
	c.Talk((EClass.rnd(2) == 0) ? "nice_statue" : "disgust");
	c.AddExp(c.ExpToNext / ((!c.IsPC) ? 1 : 4)); 
	c.AddExp(c.ExpToNext / ((!c.IsPC) ? 1 : 4) * ((!c.HasElement(1273)) ? 1 : 4), applyMod: false); 
	c.PlaySound("ding_potential");
	c.Say("spellbookCrumble", owner.Duplicate(1));
	owner.ModNum(-1);

UIRecipeInfo

public void Refresh()

cs
	int[] tiles = recipe.renderRow.tiles;
	if (EMono.debug.showExtra)
	{
		text = text + "(" + recipe.id + "  " + recipe.renderRow.idRenderData + "/" + ((tiles.Length != 0) ? tiles[0] : (-1)) + ")" + Environment.NewLine; 
		text = text + "(" + recipe.id + "  " + recipe.renderRow.idRenderData + "/" + ((tiles.Length != 0) ? tiles[0] : (-1)) + ") skin:" + recipe.idSkin + Environment.NewLine; 
	}
	textDetail.SetActive(enable: true);
	if (CraftMode)