Skip to content

EA 23.243 Nightly Patch 3

December 5, 2025

10 files modified. 1 new file created.

Important Changes

None.

Card

public virtual void SetRenderParam(RenderParam p)

cs

	public void DyeRandom()
	{
		Dye(EClass.sources.materials.rows.Where((SourceMaterial.Row r) => r.matColor.r != r.matColor.g || r.matColor.g != r.matColor.b || r.matColor.b != r.matColor.r).RandomItem().alias); 
		Dye(EClass.sources.materials.rows.Where((SourceMaterial.Row r) => r.tier <= 4 && (r.matColor.r != r.matColor.g || r.matColor.g != r.matColor.b || r.matColor.b != r.matColor.r)).RandomItem().alias); 
	}

	public void Dye(string idMat)

Chara

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

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

public bool TryEquipRanged()

cs

	public override int GetArmorSkill()
	{
		if (body.GetWeight(armorOnly: true) <= 30000) 
		if (body.GetWeight(armorOnly: true) <= (HasElement(1204) ? 6000 : 30000)) 
		{
			return 120;
		}

Core

public void Init()

cs
	StartCoroutine("OnEndOfFrame");
	InvokeRepeating("Update100ms", 0.1f, 0.1f);
	UnityEngine.Object.DestroyImmediate(ui.layoutLang.gameObject);
	GameIO.Init(); 
	CoreConfig.Init();
	if (config.lang.IsEmpty())
	{

EClass

public static int curve(int _a, int start, int step, int rate = 75)

cs
		return (int)Mathf.Clamp(num, -2.1474836E+09f, 2.1474836E+09f);
	}

	public static int sqrt(int a) 
	{ 
		if (a >= 0) 
		{ 
			return (int)Mathf.Sqrt(a); 
		} 
		return (int)(0f - Mathf.Sqrt(-a)); 
	} 
	public static int rndHalf(int a)
	{
		return a / 2 + Rand.rnd(a / 2);

FACTION

public List<FactionBranch> GetChildren()

cs
	List<FactionBranch> list = new List<FactionBranch>();
	foreach (Spatial value in EClass.game.spatials.map.Values)
	{
		if (value.mainFaction == this) 
		if (value?.mainFaction == this) 
		{
			list.Add((value as Zone).branch);
		}

GameIO

using System.IO.Compression;

cs
using System.IO.Compression;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization; 
using UnityEngine;

public class GameIO : EClass

public class GameIO : EClass

cs

	public static bool compressSave => EClass.core.config.test.compressSave;

	public static void Init() 
	{ 
		JsonSerializerSettings jsonSerializerSettings = jsReadGame; 
		jsonSerializerSettings.Error = (EventHandler<Newtonsoft.Json.Serialization.ErrorEventArgs>)Delegate.Combine(jsonSerializerSettings.Error, (EventHandler<Newtonsoft.Json.Serialization.ErrorEventArgs>)delegate(object sender, Newtonsoft.Json.Serialization.ErrorEventArgs args) 
		{ 
			if (args.ErrorContext.Error.Message.Contains("UnknownTypePlaceholder")) 
			{ 
				args.ErrorContext.Handled = true; 
			} 
		}); 
	} 
	public static void ResetTemp()
	{
		DirectoryInfo directoryInfo = new DirectoryInfo(pathTemp);

GameSerializationBinder

public override Type BindToType(string assemblyName, string typeName)

cs
	}
	catch (Exception ex)
	{
		Core.Instance.ui.Say("Possible Mod Error, please contact the mod auther."); 
		Core.Instance.ui.Say(ex.Message); 
		Debug.LogError(ex.Message);
		Debug.LogError(assemblyName + "/" + typeName);
		if (ModUtil.fallbackTypes.ContainsKey(typeName))

public override Type BindToType(string assemblyName, string typeName)

cs
				Debug.Log(typeName + "/" + Type.GetType(ModUtil.fallbackTypes[typeName]));
				return Type.GetType(ModUtil.fallbackTypes[typeName]);
			}
			if (typeName.Contains("Quest")) 
			if (typeName.StartsWith("Quest")) 
			{
				return typeof(QuestDummy);
			}
			return typeof(object); 
			if (typeName.StartsWith("Zone")) 
			{ 
				return typeof(Zone); 
			} 
			return typeof(UnknownTypePlaceholder); 
		}
	}
}

MATERIAL

public class MATERIAL : EClass

cs

	public const string aliasNull = "oak";

	public const int MaxRandomTier = 4; 
	public const int MaxTier = 7; 
	public static SourceMaterial.Row sourceSnow = EClass.sources.materials.rows[48];

	public static SourceMaterial.Row sourceIce = EClass.sources.materials.rows[61];

public static SourceMaterial.Row GetRandomMaterial(int lv, string group = null,

cs
	int num = 0;
	if (tryLevelMatTier)
	{
		num = Mathf.Clamp(lv / 15, 0, tierList.tiers.Length - 1); 
		num = Mathf.Clamp(num + EClass.rnd(2) - EClass.rnd(2), 0, tierList.tiers.Length - 1); 
		num = Mathf.Clamp(lv / 15, 0, 4); 
		num = Mathf.Clamp(num + EClass.rnd(2) - EClass.rnd(2), 0, 4); 
	}
	else
	{
		int min = ((lv >= 60) ? 2 : ((lv >= 25) ? 1 : 0)); 
		num = Mathf.Clamp(EClass.rnd(EClass.rnd(EClass.rnd(lv / 10 + 2) + 1) + 1), min, tierList.tiers.Length - 1); 
		num = Mathf.Clamp(min: (lv >= 60) ? 2 : ((lv >= 25) ? 1 : 0), value: EClass.rnd(EClass.rnd(EClass.rnd(lv / 10 + 2) + 1) + 1), max: 4); 
	}
	SourceMaterial.Tier obj = tierList.tiers[num];
	SourceMaterial.Row result = obj.Select();

Region

public List<Zone> ListTowns()

cs
	List<Zone> list = new List<Zone>();
	foreach (Spatial value in EClass.game.spatials.map.Values)
	{
		if (value.CanSpawnAdv) 
		if (value != null && value.CanSpawnAdv) 
		{
			list.Add(value as Zone);
		}

SourceMaterial

public class TierList

cs

		public TierList()
		{
			tiers = new Tier[5]; 
			for (int i = 0; i < 5; i++) 
			tiers = new Tier[8]; 
			for (int i = 0; i < 8; i++) 
			{
				tiers[i] = new Tier();
			}

+UnknownTypePlaceholder

File Created
cs
public class UnknownTypePlaceholder
{
}