Skip to content

EA 23.269 Nightly Patch 3 โ€‹

February 12, 2026

7 files modified.

Important Changes โ€‹

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

DNA (2) โ€‹

cs
public bool CanRemove() 
public bool CanRemove(Chara c) 
cs
public void WriteNote(UINote n) 
public void WriteNote(UINote n, Chara tg = null) 

Chara โ€‹

public int GeneCostMTP

cs
			{
				return 100;
			}
			return 20; 
			return 5; 
		}
	}

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

cs
	{
		num3 = 1 + Evalue(1648);
	}
	if (IsPC && cost.cost > 0 && a.Value == 0) 
	if (IsPC && cost.cost > 0 && a.Value == 0 && !ability.Has(a.id)) 
	{
		Msg.SayNothingHappen();
		return false;

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

cs
		{
			Say(race.castStyle.IsEmpty("cast"), this, a.source.GetName().ToLower(), s.lang());
		}
		if (IsPC) 
		if (IsPC && !ability.Has(a.id)) 
		{
			_ = (i + 1) / 2;
			if (a.vPotential < i)

CharaGenes โ€‹

public int GetGeneSlot(Chara c)

cs
		}
		return num;
	}
	public DNA GetDNA(int idEle) 
	{ 
		foreach (DNA item in items) 
		{ 
			for (int i = 0; i < item.vals.Count; i += 2) 
			{ 
				if (item.vals[i] == idEle) 
				{ 
					return item; 
				} 
			} 
		} 
		return null; 
	} 
}

DNA โ€‹

public void Apply(Chara c, bool reverse)

cs
		}
	}

	public bool CanRemove() 
	public bool CanRemove(Chara c) 
	{
		for (int i = 0; i < vals.Count; i += 2)
		{
			int num = vals[i]; 
			if (num == 1237 || num == 1415) 
			switch (vals[i]) 
			{
			case 1237: 
			case 1415: 
				return false;
			case 1228: 
				return !c.IsPC; 
			}
		}
		return true;

public string GetText()

cs
		return "gene".lang(text.ToTitleCase(), cost.ToString() ?? "");
	}

	public void WriteNote(UINote n) 
	public void WriteNote(UINote n, Chara tg = null) 
	{
		if (slot >= 1)
		{
			n.AddText("isGeneReqSlots".lang(slot.ToString() ?? ""), FontColor.Warning);
		}
		if (!CanRemove()) 
		if (!CanRemove(tg)) 
		{
			n.AddText("isPermaGene".lang(), FontColor.Warning);
		}

public Element GetInvalidFeat(Chara c)

cs
	for (int i = 0; i < vals.Count; i += 2)
	{
		Element element = Element.Create(vals[i], vals[i + 1]);
		if (c.IsPC && element.id == 1415) 
		if (c.IsPC && !CanRemove(c)) 
		{
			return element;
		}

GoalAutoCombat โ€‹

public void GetAbilities(Func<Element, bool> func)

cs
	public override void BuildAbilityList()
	{
		GetAbilities((Element e) => e.source.abilityType.Length != 0);
		AddAbility(ACT.Ranged); 
		AddAbility(ACT.Melee); 
		AddAbility(ACT.Item); 
		if (owner.HasCondition<ConBrightnessOfLife>()) 
		{ 
			TryAddAbility(6410); 
		} 
		base.BuildAbilityList(); 
	}

	public override bool TryAbortCombat()

GoalCombat โ€‹

public virtual bool TryUseAbility(int dist, bool beforeMove = false)

cs
		{
			if (owner.IsPC)
			{
				if (act.vPotential <= 0) 
				if (act.vPotential <= 0 && !owner.ability.Has(act.id)) 
				{
					continue;
				}

int HealFactor(Chara c)

cs
		}
		if (EClass.debug.logCombat && owner.IsPC)
		{
			Debug.Log(ability2.act.Name + "/" + ability2.priority); 
			Debug.Log(ability2.act.Name + "/" + ability2.priority + "/" + ability2.act.CanPerform(owner, ability2.tg ?? tc)); 
		}
		if (ability2.act.source.alias == "ActRanged")
		{

int HealFactor(Chara c)

cs
		Debug.Log(owner.Name + "/" + abilities.Count);
		foreach (ItemAbility ability3 in abilities)
		{
			Debug.Log(ability3.act.Name + "/" + ability3.priority); 
			Debug.Log(ability3.act.Name + "/" + ability3.priority + "/" + ability3.act.CanPerform(owner, ability3.tg ?? tc)); 
		}
	}
	return false;

TraitGene โ€‹

public override void WriteNote(UINote n, bool identified)

cs
		{
			n.AddText("duration:" + owner.c_DNA.GetDurationHour());
		}
		owner.c_DNA.WriteNote(n); 
		owner.c_DNA.WriteNote(n, flag ? EClass.pc : null); 
		if (flag)
		{
			owner.c_DNA.WriteNoteExtra(n, EClass.pc);

WindowCharaMini โ€‹

public void Refresh(int idTab)

cs
				});
				uIItem.button2.SetOnClick(delegate
				{
					if (!g.CanRemove()) 
					if (!g.CanRemove(chara)) 
					{
						SE.Beep();
					}