EA 23.340.3 Nightly โ
August 30, 2026
10 files modified.
Important Changes โ
None.
CINT โ
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โฆ)
}
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)
{
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)
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)
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)
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 โ
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; 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,โฆ)
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,โฆ)
{
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โฆ)
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)
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;
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โฆ)
}
}
}
thing.Identify(show: false);
thing.Identify(show: false, IDTSource.SuperiorIdentify);
thing.isCrafted = true;
if (!flag3)
{