EA 23.278 Nightly
February 27, 2026
23 files modified.
Important Changes
None.
AI_Fish
public override void OnProgressComplete()
{
thing.isHidden = false;
}
if (owner.IsPC)
if (EClass.rnd(EClass.debug.enable ? 2 : 100) == 0 && thing.category.IsChildOf("fish"))
{
owner.Say("fish_ehe");
owner.Say("fish_ehe2");
owner.PlaySound("escape");
owner.PlayEffect("fizzle");
thing.Destroy();
if (owner.IsPC)
{
EClass.player.flags.fishStolen++;
Steam.GetAchievement(ID_Achievement.EHE_FISH);
}
}
else if (owner.IsPC)
{
if (EClass.game.config.preference.pickFish)
{AI_Fuck
public override IEnumerable<Status> Run()
}
break;
}
if (((cc.HasElement(1216) || tc.HasElement(1216)) ? 100 : 20) > EClass.rnd(100))
{
((EClass.rnd(2) == 0) ? cc : tc).PlayEffect("love2");
}
if (variation == Variation.Slime)
{
owner.DoHostileAction(target);AI_Idle
public override IEnumerable<Status> Run()
num = EClass.rnd(EClass.rnd(EClass.rnd(EClass.rnd(500)))) + 1;
string[] strs = new string[4] { "1294", "1294", "1130", "1131" };
ThrowMethod throwMethod = ThrowMethod.Reward;
if (owner.affinity.CurrentStage <= Affinity.Stage.Hate || owner.IsMarried || (EClass.debug.enable && EClass.rnd(10) == 0))
if (owner.affinity.IsWeddingHater || owner.IsMarried || (EClass.debug.enable && EClass.rnd(10) == 0))
{
owner.Talk("curse_wed");
throwMethod = ThrowMethod.Punish;ActEffect
void AddCon<T>(int rate, int power) where T : Condition
TC.Say("heal_jure", TC);
break;
case EffectId.Headpat:
CC.PlaySound("headpat");
CC.Cuddle(TC, headpat: true);
break;
case EffectId.RemoveHex:ActZap
public override bool Perform()
Act.CC.RemoveCondition<ConInvisibility>();
Act.TC = Act.CC;
EffectId idEffect = trait.IdEffect;
int power = trait.Power * (100 + Act.CC.Evalue(305) * 10 + Act.CC.MAG / 2 + Act.CC.PER / 2) / 100;
ActEffect.ProcAt(idEffect, power, trait.owner.blessedState, Act.CC, null, Act.TP, trait.IsNegative, new ActRef
long a = trait.Power * (100 + (long)Act.CC.Evalue(305) * 10L + Act.CC.MAG / 2 + Act.CC.PER / 2) / 100;
ActEffect.ProcAt(idEffect, MathEx.Min(a), trait.owner.blessedState, Act.CC, null, Act.TP, trait.IsNegative, new ActRef
{
refThing = trait.owner.Thing,
aliasEle = trait.aliasEle,Affinity
public string Name => Lang.GetList("affinity").TryGet(list.IndexOf(this), list.Count - 1);
public bool IsWeddingHater => CurrentStage <= Stage.Hate;
public static Affinity Get(Chara c)
{
CC = c;BaseSong
public class BaseSong : BaseStance
public class BaseSong : BaseStance
{
public virtual int IdAbility => -1;
public override void OnStart()
{
owner.ShowEmo(Emo.happy);public override void OnStart()
public override void Tick()
{
if (!EClass._zone.IsRegion)
if (EClass._zone.IsRegion)
{
return;
}
if (owner.HasCondition<ConSilence>())
{
Kill();
return;
}
Element element = owner.elements.GetElement(IdAbility);
if (element != null)
{
if (owner.HasCondition<ConSilence>())
{
Kill();
}
else
{
TickSong();
}
owner.elements.ModExp(element.id, 20f);
}
TickSong();
}
public virtual void TickSong()Chara
}
if (EClass._zone is Zone_Music || EClass._zone is Zone_Wedding)
{
ShowDialog("_chara", (!(EClass._zone is Zone_Wedding)) ? "party" : (IsPCParty ? "wedding_love" : "wedding"));
string step = ((!(EClass._zone is Zone_Wedding)) ? "party" : (IsPCParty ? "wedding_love" : ((IsMarried || affinity.IsWeddingHater) ? "wedding_hater" : "wedding")));
if (EClass._zone is Zone_Wedding && IsPCParty && base.c_love != null && !base.c_love.gaveCutter)
{
step = "wedding_cutter";
EClass.player.DropReward(ThingGen.Create("dagger_cakecutter"));
base.c_love.gaveCutter = true;
}
ShowDialog("_chara", step);
return;
}
if (EClass.game.quests.OnShowDialog(this))FactionBranch
public void AddMemeber(Chara c)
{
uidMaid = c.uid;
}
if (c.id == "lomias")
switch (c.id)
{
case "lomias":
Steam.GetAchievement(ID_Achievement.LOMIAS2);
break;
case "larnneire":
Steam.GetAchievement(ID_Achievement.LARNNEIRE2);
break;
case "melilith":
Steam.GetAchievement(ID_Achievement.MELILITH);
break;
}
}FoodEffect
public static void Proc(Chara c, Thing food, bool consume = true)
}
if (!c2.IsCat && food.trait is TraitFoodChuryu)
{
int num10 = 0;
foreach (Chara item in c2.pos.ListCharasInRadius(c2, 5, (Chara c) => c.IsCat))
{
item.Say("angry", item);public static void Proc(Chara c, Thing food, bool consume = true)
{
EClass.player.ModKarma(-3);
}
num10++;
}
EClass.player.stats.angryCats += num10;
Debug.Log(num10 + "/" + EClass.player.stats.angryCats);
if (num10 >= 10)
{
Steam.GetAchievement(ID_Achievement.CHURYU);
}
}
if (c2.IsPC && EClass._zone is Zone_Lothria)GoalCombat
public override IEnumerable<Status> Run()
owner.PlaySound("boost");
owner.ShowEmo(Emo.love);
owner.lastEmo = Emo.angry;
owner.MakeMinion(tc.IsPCParty ? EClass.pc : tc);
owner.MakeMinion(tc);
yield return Success();
}
if (EClass.rnd(5) == 0 && tc.HasElement(1325) && owner.IsPlant && owner.CanBeTempAlly(tc))ID_Achievement
PUTIT,
ASHLAND_PIE,
JURE_WATER,
WINDOW_CHARM
WINDOW_CHARM,
EHE_FISH,
CHURYU,
MELILITH,
LARNNEIRE,
LARNNEIRE2
}LoveData
public class LoveData : EClass
[JsonProperty]
public string nameZoneMarriage;
[JsonProperty]
public bool gaveCutter;
public bool IsWed => dateWedding != 0;
}Player
[JsonProperty]
public int divorced;
[JsonProperty]
public int angryCats;
[JsonProperty]
public long shipMoney; }
}
public int fishStolen
{
get
{
return ints[21];
}
set
{
ints[21] = value;
}
}
[OnSerializing]
private void _OnSerializing(StreamingContext context)
{SerializedCards
public void Restore(Map map, Map orgMap, bool addToZone, PartialMap partial = nu
}
card2.c_IDTState = card4.idtState;
}
else if (card2.trait is TraitMannequin)
{
card2.c_lockLv = 1;
}
if (card2.isChara)
{
card2.Chara.homeZone = EClass._zone;StanceSongEnd
public class StanceSongEnd : BaseSong
{
public override int IdAbility => 6753;
public override void TickSong()
{
foreach (Chara item in owner.pos.ListCharasInRadius(owner, 4, (Chara c) => !c.IsDeadOrSleeping && c.IsHostile(owner)))StanceSongSleep
public class StanceSongSleep : BaseSong
{
public override int IdAbility => 6750;
public override void TickSong()
{
foreach (Chara item in owner.pos.ListCharasInRadius(owner, 4, (Chara c) => !c.IsDeadOrSleeping && c.IsHostile(owner)))StanceSongValor
public class StanceSongValor : BaseSong
public class StanceSongValor : BaseSong
{
public override int IdAbility => 6752;
public override void TickSong()
{
foreach (Chara item in owner.pos.ListCharasInRadius(owner, 4, (Chara c) => (c.IsDeadOrSleeping || !owner.IsPCFactionOrMinion) ? (!c.IsHostile(owner)) : c.IsPCFactionOrMinion))TraitAltar
public void _OnOffer(Chara c, Thing t, int takeoverMod = 0)
int value = orCreateElement.Value;
c.elements.ModExp(orCreateElement.id, offeringValue * 2 / 3);
int num2 = 4;
if (orCreateElement.vBase >= num)
{
c.elements.SetBase(orCreateElement.id, num);
}
else
if (orCreateElement.vBase < num)
{
num2 = Mathf.Clamp(orCreateElement.vBase * 100 / num / 25, 0, 3);
}TraitFloorSwitch
public override void OnStepped(Chara c)
{
owner.Say("levitating");
}
else if (!CanDisarmTrap || (!TryDisarmTrap(c) && EClass.pc.Evalue(1656) < 3))
else if (!CanDisarmTrap || (!TryDisarmTrap(c) && (!c.IsPCFactionOrMinion || EClass.pc.Evalue(1656) < 3)))
{
ActivateTrap(c);
}TraitMannequin
public class TraitMannequin : TraitItem
public override bool CanUseContent => false;
public override bool UseAltTiles => owner.things.Count > 0;
public override bool UseAltTiles
{
get
{
if (owner.things.Count <= 0)
{
return owner.c_lockLv != 0;
}
return true;
}
}
public override bool CanUseFromInventory => false;TraitSwitch
public bool TryDisarmTrap(Chara c)
c.Say("disarm_success", c, owner);
owner.PlaySound("disarm");
c.ModExp(293, 50 + TrapLv);
int num = (EClass.debug.enable ? 10 : EClass.pc.Evalue(1656));
if (!c.IsPCParty)
{
num = 0;
}
int num = (EClass.debug.enable ? 10 : (c.IsPCFactionOrMinion ? EClass.pc.Evalue(1656) : 0));
if (!IsLaidByDog && num > 0 && num + 2 > EClass.rnd(10))
{
string id = "scrap";public bool TryDisarmTrap(Chara c)
c.Say("disarm_fail", c, owner);
c.PlaySound("disarm_fail");
c.ModExp(293, 20 + TrapLv / 3);
if (c.IsPCFaction)
if (c.IsPCParty)
{
int @int = owner.GetInt(60);
owner.SetInt(60, @int + 1);TraitWell
public override void TrySetAct(ActPlan p)
if (EClass.player.CountKeyItem("well_wish") > 0)
{
EClass.player.ModKeyItem("well_wish", -1);
ActEffect.Proc(EffectId.Wish, EClass.pc, null, 50 + EClass.player.CountKeyItem("well_enhance") * 50);
ActEffect.Proc(EffectId.Wish, EClass.pc, null, 50 + EClass.player.CountKeyItem("well_enhance") * 50 + EClass.player.flags.fishStolen * 20);
EClass.player.wellWished = true;
}
else