Skip to content

EA 23.340.3 Nightly โ€‹

August 30, 2026

10 files modified.

Important Changes โ€‹

None.

CINT โ€‹

public class CINT

cs
	public const int uidAttune = 133;

	public const int peakyAdded = 134;
	public const int isSleepLock = 135; 
}

Card โ€‹

public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourcโ€ฆ)

cs
}
if (HasElement(1218) && attackSource != AttackSource.ManaBackfire && (hp > 0 || Evalue(1421) <= 0))
{
	dmg = dmg * (1000 - Mathf.Min(Evalue(1218), 1000) / ((!flag) ? 1 : 2)) / 1000; 
	dmg = dmg * (1000 - Mathf.Min(Evalue(1218), 999) / ((!flag) ? 1 : 2)) / 1000; 
	if (dmg <= 0 && EClass.rnd(4) == 0)
	{
		dmg++;

Chara โ€‹

public void OnSleep(int power, int days = 1, bool isSunLit = false)

cs
{
	stamina.Set(1);
}
if (IsPC) 
{ 
	foreach (BodySlot slot in body.slots) 
	{ 
		if (slot.thing != null) 
		{ 
			slot.thing.SetBool(135, enable: false); 
		} 
	} 
} 
if (isWeakToSunlight && isSunLit)
{
	base.hp = 0;

CharaBody โ€‹

public bool IsEquippable(Thing thing, BodySlot slot, bool text = true)

cs
case 31:
	if (owner.HasElement(1555))
	{
		return CannotEquip(); 
		return CannotEquip("cannnotEquip"); 
	}
	break;
case 33:
	if (owner.HasElement(1554))
	{
		return CannotEquip(); 
		return CannotEquip("cannnotEquip"); 
	}
	break;
case 39:
	if (owner.HasElement(1552))
	{
		return CannotEquip(); 
		return CannotEquip("cannnotEquip"); 
	}
	break;
}
if (slot.thing != null && slot.thing.blessedState <= BlessedState.Cursed) 
if (slot.thing != null) 
{
	return CannotEquip(); 
	if (slot.thing.blessedState <= BlessedState.Cursed) 
	{ 
		return CannotEquip("cannnotEquip"); 
	} 
	if (slot.thing.c_DNA != null && slot.thing.GetBool(135)) 
	{ 
		return CannotEquip("isSleepLock"); 
	} 
}
if (thing.c_uidAttune != 0 && thing.c_uidAttune != owner.uid)
{

public bool IsEquippable(Thing thing, BodySlot slot, bool text = true)

cs
	return false;
}
return true;
bool CannotEquip() 
bool CannotEquip(string idLang) 
{
	if (text)
	{
		Msg.Say("cannnotEquip", slot.element.GetName().ToLower()); 
		Msg.Say(idLang, slot.element.GetName().ToLower()); 
	}
	return false;
}

public bool Equip(Thing thing, BodySlot slot = null, bool msg = true)

cs
	thing.c_DNA.Apply(owner, reverse: false);
	Msg.Say("equip_relic");
	owner.feat -= thing.c_DNA.cost;
	owner.stamina.Mod(-1 - EClass.rnd(5)); 
	thing.SetBool(135, enable: true); 
}
if (owner.IsPC)
{

DNA โ€‹

void AddBody()

cs
for (int j = 0; j < 100; j++)
{
	BodySlot bodySlot2 = model.body.slots.RandomItem();
	if (bodySlot2 != null && bodySlot2.elementId != 40 && bodySlot2.elementId != 44) 
	if (bodySlot2 != null && bodySlot2.elementId != 40 && bodySlot2.elementId != 44 && bodySlot2.elementId != 46) 
	{
		bodySlot = bodySlot2;
		break;

public DNA Relicize()

cs
	if (element.source.category == "slot" || element.HasTag("noRelic") || element.HasTag("permaGene"))
	{
		vals.RemoveRange(i, 2);
		i -= 2; 
	}
}
cost /= 5;

InvOwner โ€‹

public virtual bool OnDrag(DragItemCard.DragInfo from, DragItemCard.DragInfo to,โ€ฆ)

cs
InvOwnerEquip invOwnerEquip = to.invOwner as InvOwnerEquip;
Chara chara = invOwnerEquip.owner.Chara;
BodySlot slot = invOwnerEquip.slot;
if (execute && to.thing != null && to.thing.blessedState <= BlessedState.Cursed) 
if (execute && to.thing != null) 
{
	Msg.Say("unequipCursed", to.thing); 
	return false; 
	if (to.thing.blessedState <= BlessedState.Cursed) 
	{ 
		Msg.Say("unequipCursed", to.thing); 
		return false; 
	} 
	if (to.thing.c_DNA != null && to.thing.GetBool(135)) 
	{ 
		Msg.Say("isSleepLock", to.thing); 
		return false; 
	} 
}
if (from.thing.category.slot == slot.elementId)
{

public virtual void ListInteractions(ListInteraction list, Thing t, Trait trait,โ€ฆ)

cs
{
	list.Add("invEquip", 90, delegate
	{
		if (slot.thing != null && slot.thing.blessedState <= BlessedState.Cursed) 
		if (slot.thing != null) 
		{
			Msg.Say("unequipCursed", slot.thing); 
			SE.Play("curse3"); 
			if (slot.thing.blessedState <= BlessedState.Cursed) 
			{ 
				Msg.Say("unequipCursed", slot.thing); 
				SE.Play("curse3"); 
				return; 
			} 
			if (slot.thing.c_DNA != null && slot.thing.GetBool(135)) 
			{ 
				Msg.Say("isSleepLock", slot.thing); 
				SE.Play("curse3"); 
				return; 
			} 
		}
		else
		if (EClass.pc.held == t) 
		{
			if (EClass.pc.held == t) 
			EClass.pc.PickHeld(); 
		} 
		Thing thing = slot.thing; 
		body.Equip(t, slot); 
		EClass.Sound.Play("equip"); 
		if (thing != null) 
		{ 
			if (tParent != null) 
			{
				EClass.pc.PickHeld(); 
				tParent.AddThing(thing); 
				thing.invX = tInvX; 
				thing.invY = tInvY; 
			}
			Thing thing = slot.thing; 
			body.Equip(t, slot); 
			EClass.Sound.Play("equip"); 
			if (thing != null) 
			else if (thing.parent is Card && (thing.parent as Card).things.IsOverflowing()) 
			{
				if (tParent != null) 
				{ 
					tParent.AddThing(thing); 
					thing.invX = tInvX; 
					thing.invY = tInvY; 
				} 
				else if (thing.parent is Card && (thing.parent as Card).things.IsOverflowing()) 
				{ 
					thing.parent.RemoveCard(thing); 
					EClass.pc.Pick(thing); 
				} 
				thing.parent.RemoveCard(thing); 
				EClass.pc.Pick(thing); 
			}
		}
	});

InvOwnerEquip โ€‹

public override void ListInteractions(ListInteraction list, Thing t, Trait traitโ€ฆ)

cs
public override bool IsFailByCurse(Thing t)
{
	if (t != null && t.blessedState <= BlessedState.Cursed) 
	if (t != null) 
	{
		Msg.Say("unequipCursed", t); 
		SE.Play("curse3"); 
		return true; 
		if (t.blessedState <= BlessedState.Cursed) 
		{ 
			Msg.Say("unequipCursed", t); 
			SE.Play("curse3"); 
			return true; 
		} 
		if (t.c_DNA != null && t.GetBool(135)) 
		{ 
			Msg.Say("isSleepLock", t); 
			SE.Play("curse3"); 
			return true; 
		} 
	}
	return false;
}

InvOwnerGene โ€‹

public InvOwnerGene(Card owner = null, Chara _tg = null)

cs
public override bool ShouldShowGuide(Thing t)
{
	if (t.c_DNA != null) 
	if (t.c_DNA != null && tg.feat >= t.c_DNA.cost) 
	{
		return tg.feat >= t.c_DNA.cost; 
		return !t.IsEquipment; 
	}
	return false;
}

AssemblyInfo โ€‹

using System.Security;

cs
using System.Security;
using System.Security.Permissions;

[assembly: AssemblyFileVersion("0.23.340.2")] 
[assembly: AssemblyInformationalVersion("0.23.340.2+Nightly")] 
[assembly: AssemblyMetadata("GameVersion", "0.23.340.2")] 
[assembly: AssemblyMetadata("GameVersionText", "EA 23.340 Patch 2")] 
[assembly: AssemblyFileVersion("0.23.340.3")] 
[assembly: AssemblyInformationalVersion("0.23.340.3+Nightly")] 
[assembly: AssemblyMetadata("GameVersion", "0.23.340.3")] 
[assembly: AssemblyMetadata("GameVersionText", "EA 23.340 Patch 3")] 
[assembly: AssemblyMetadata("GameVersionInt", "23340")]
[assembly: AssemblyMetadata("ReleaseChannel", "Nightly")]
[assembly: AssemblyVersion("0.0.0.0")]

RecipeCard โ€‹

public override Thing Craft(BlessedState blessed, bool sound = false, List<Thingโ€ฆ)

cs
		}
	}
}
thing.Identify(show: false); 
thing.Identify(show: false, IDTSource.SuperiorIdentify); 
thing.isCrafted = true;
if (!flag3)
{