Skip to content

EA 23.272 Nightly

February 20, 2026

17 files modified.

Important Changes

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

TraitFakeTile (1)

cs
public override SourcePref GetPref() 

AI_Idle

public override IEnumerable<Status> Run()

cs
			}
			if (EClass.rnd(3) == 0 && owner.mana.value > 0)
			{
				Act act = null; 
				Act actHeal = null; 
				Act actRevive = null;
				foreach (ActList.Item item in owner.ability.list.items)
				{
					Act act2 = item.act; 
					if (act2.id == 8430) 
					Act act = item.act; 
					if (act.id == 8430) 
					{
						actRevive = act2; 
						actRevive = act; 
					}
					string[] abilityType = act2.source.abilityType; 
					string[] abilityType = act.source.abilityType; 
					if (!abilityType.IsEmpty() && (abilityType[0] == "heal" || abilityType[0] == "hot"))
					{
						act = item.act; 
						actHeal = item.act; 
					}
				}
				if (act != null) 
				if (actHeal != null) 
				{
					List<Chara> list = (owner.IsPCParty ? EClass.pc.party.members : new List<Chara> { owner });
					foreach (Chara item2 in list)
					{
						if (!((float)item2.hp > (float)item2.MaxHP * 0.75f) && owner.CanSeeLos(item2) && (!(act.source.abilityType[0] == "hot") || !item2.HasCondition<ConHOT>())) 
						if (!((float)item2.hp > (float)item2.MaxHP * 0.75f) && owner.CanSeeLos(item2) && (!(actHeal.source.abilityType[0] == "hot") || !item2.HasCondition<ConHOT>())) 
						{
							owner.UseAbility(act, item2); 
							owner.UseAbility(actHeal, item2); 
							yield return KeepRunning();
							break;
						}
					}
					if (owner.id == "priest" && !owner.IsPCParty && owner.Dist(EClass.pc) <= 4) 
					{ 
						if (EClass.pc.hp < EClass.pc.MaxHP) 
						{ 
							if (owner.UseAbility(actHeal, EClass.pc, null, pt: true)) 
							{ 
								owner.AddCooldown(actHeal.id, 5); 
								owner.Talk("no_problem"); 
							} 
						} 
						else if (!EClass.pc.HasCondition<ConHolyVeil>() && owner.UseAbility(8500, EClass.pc, null, pt: true)) 
						{ 
							owner.AddCooldown(8500, 30); 
							owner.Talk("no_problem"); 
						} 
					} 
				}
				if (actRevive != null && owner.IsPCFaction && EClass.game.cards.globalCharas.Where((KeyValuePair<int, Chara> a) => a.Value.isDead && a.Value.faction == EClass.pc.faction && !a.Value.isSummon && a.Value.c_wasInPcParty).ToList().Count > 0 && owner.UseAbility(actRevive.source.alias, owner))
				{

AI_PlayMusic

public override IEnumerable<Status> Run()

cs
		case "guitar_ash":
			idSong = "guitar_caccini";
			break;
		case "ocarina":
			idSong = "ocarina_lulu"; 
			break; 
		case "guitar_efrond":
			idSong = "guitar_dusk";
			break;

ActDreamBug

public class ActDreamBug : Ability

cs
public class ActDreamBug : Ability
{
	public override bool CanPerform() 
	{ 
		if (Act.CC.HasElement(1216)) 
		{ 
			return base.CanPerform(); 
		} 
		return false; 
	} 
	public override bool Perform()
	{
		if (!Act.TC.isChara || (!Act.TC.IsPC && Act.TC.things.IsFull()))

ActSlime

public class ActSlime : ActNTR

cs

	public override bool CanPerform()
	{
		if (Act.TC == null || Act.TC == Act.CC) 
		if (Act.TC == null || !Act.TC.isChara || Act.TC == Act.CC) 
		{
			return false;
		}

CINT

public class CINT

cs

	public const int isDisableLoyal = 126;

	public const int isFiamaChest = 127; 
	public const int dateDeathLock = 130;

	public const int fixedValue = 131;

Chara

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

cs
				EInput.Consume();
				return false;
			}
			if (num4 > 0 && a.vPotential >= i * 2) 
			if (num4 > 0 && (a.vPotential >= i * 2 || ability.Has(a.id))) 
			{
				a.vPotential -= i * 2;
				num6 = num6 * (100 - num4 * 20) / 100;

DNA

public bool CanRemove(Chara c)

cs
			return false;
		case 1228:
		case 1414:
			return !c.IsPC; 
			if (c != null) 
			{ 
				return !c.IsPC; 
			} 
			return true; 
		}
	}
	return true;

ID_Achievement

public enum ID_Achievement

cs
{
	TEST,
	LOMIAS,
	LOMIAS2 
	LOMIAS2, 
	FIAMA_CHEST 
}

LayerAbility

public void SelectGroup(string id)

cs
			foreach (Element value in ELayer.pc.elements.dict.Values)
			{
				string categorySub = value.source.categorySub;
				if (value.Value != 0 && (!config.hideDepletedSpell || !value.PotentialAsStock || value.vPotential > 0)) 
				if (value.Value != 0 && (!config.hideDepletedSpell || !value.PotentialAsStock || value.vPotential > 0) && (value.id != 6020 || ELayer.pc.HasElement(1216))) 
				{
					if (id == "favAbility" && ELayer.player.favAbility.Contains(value.id))
					{

OBJ

public class OBJ : EClass

cs
public class OBJ : EClass
{
	public const int nulu = 0; 
	public const int rainbow_fruit = 90;

	public const int feywood = 118;

QuestFiamaLock

public override void OnStart()

cs
	thing.things.DestroyAll();
	thing.AddCard(ThingGen.Create("1172"));
	thing.AddCard(ThingGen.Create("amulet_begger"));
	thing.SetBool(127, enable: true); 
	Card card = thing.AddCard(ThingGen.Create("_meat").MakeFoodFrom("begger"));
	card.decay = card.MaxDecay + 1;
	thing.Install();

Steam

public static void GetAchievement(ID_Achievement id)

cs
			{
				achievement.Unlock();
				EClass.ui.Say("sys_acv".lang(achievement.Name), Resources.Load<Sprite>("Media/Graphics/Icon/Achievement/acv_" + id));
				SE.Play("achievement"); 
				achievement.Store(); 
			}
			return;
		}

Trait

public virtual LockOpenState TryOpenLock(Chara cc, bool msgFail = true)

cs
			EClass.player.ModKarma(-8);
		}
		owner.isLostProperty = false;
		if (owner.GetBool(127)) 
		{ 
			Steam.GetAchievement(ID_Achievement.FIAMA_CHEST); 
		} 
		return LockOpenState.Success;
	}
	cc.PlaySound("lock");

TraitFakeBlock

public class TraitFakeBlock : TraitFakeTile

cs
public class TraitFakeBlock : TraitFakeTile
{
	public SourceBlock.Row block => EClass.sources.blocks.map.TryGetValue(owner.refVal, 1); 
	public override SourcePref GetPref() 
	{ 
		TileType tileType = block.tileType; 
		if (!(tileType is TileTypePillar)) 
		{ 
			if (!(tileType is TileTypeFence)) 
			{ 
				if (!(tileType is TileTypeStairs)) 
				{ 
					if (!(tileType is TileTypeWall)) 
					{ 
						if (tileType is TileTypeSlope) 
						{ 
							return EClass.core.refs.prefs.blockStairs; 
						} 
						return null; 
					} 
					return EClass.core.refs.prefs.blockWall; 
				} 
				return EClass.core.refs.prefs.blockStairs; 
			} 
			return EClass.core.refs.prefs.blockFence; 
		} 
		return EClass.core.refs.prefs.blockPillar; 
	} 
	public override string GetName() 
	{ 
		if (owner.refVal != 0) 
		{ 
			return "_fakeblock".lang(block.GetName().ToLower()); 
		} 
		return base.GetName(); 
	} 
}

TraitFakeObj

public GrowSystem growth

cs
		}
	}

	public SourceObj.Row obj => EClass.sources.objs.map[owner.refVal]; 
	public SourceObj.Row obj => EClass.sources.objs.map.TryGetValue(owner.refVal, 0); 

	public override TileMode tileMode => TileMode.FakeObj;

public int GetMaxDir()

cs
		}
		return obj._tiles.Length;
	}
	public override string GetName() 
	{ 
		if (owner.refVal != 0) 
		{ 
			return "_fakeblock".lang(obj.GetName().ToLower()); 
		} 
		return base.GetName(); 
	} 
}

TraitFakeTile

public override RenderData GetRenderData()

cs
		return EClass.sources.blocks.map[owner.refVal].renderData;
	}

	public override SourcePref GetPref() 
	{ 
		TileType tileType = EClass.sources.blocks.map[owner.refVal].tileType; 
		if (!(tileType is TileTypePillar)) 
		{ 
			if (!(tileType is TileTypeFence)) 
			{ 
				if (!(tileType is TileTypeStairs)) 
				{ 
					if (!(tileType is TileTypeWall)) 
					{ 
						if (tileType is TileTypeSlope) 
						{ 
							return EClass.core.refs.prefs.blockStairs; 
						} 
						return null; 
					} 
					return EClass.core.refs.prefs.blockWall; 
				} 
				return EClass.core.refs.prefs.blockStairs; 
			} 
			return EClass.core.refs.prefs.blockFence; 
		} 
		return EClass.core.refs.prefs.blockPillar; 
	} 
	public override void OnCrafted(Recipe recipe, List<Thing> ings)
	{
		owner.refVal = 0;

Zone

public void Generate()

cs
	}
	map.SetZone(this);
	Zone_Field zone_Field = this as Zone_Field;
	if (IdBiome == "Sand" || IdBiome == "Water" || IsUnderwater) 
	bool flag = IdBiome == "Sand" || IdBiome == "Water" || IsUnderwater; 
	if (flag) 
	{
		int num = 1 + EClass.rnd((IdBiome == "Water") ? 3 : 2);
		for (int i = 0; i < num; i++)

public void Generate()

cs
		}
		Crawler crawler = Crawler.Create("pasture");
		int num2 = (EClass.debug.enable ? 3 : EClass.rnd(EClass.rnd(EClass.rnd(EClass.rnd(5) + 1) + 1) + 1));
		bool flag = this is Zone_Field; 
		bool flag2 = this is Zone_Field; 
		Thing seed = null;
		if (IsNefia)
		{

public void Generate()

cs
				seed.elements.SetBase(2, EClass.curve(seed.encLV, 50, 10, 80));
			}
		}
		crawler.CrawlUntil(EClass._map, () => EClass._map.GetRandomPoint(), num2 + (flag ? 4 : 0), delegate(Crawler.Result r) 
		crawler.CrawlUntil(EClass._map, () => EClass._map.GetRandomPoint(), num2 + (flag2 ? 4 : 0), delegate(Crawler.Result r) 
		{
			int num6 = 137;
			foreach (Point point in r.points)

public void Generate()

cs
			}
			return false;
		});
		crawler.CrawlUntil(tries: EClass.rnd(EClass.rnd(5) + 1) + 1 + (flag ? 20 : 0), map: EClass._map, onStart: () => EClass._map.GetRandomPoint(), canComplete: delegate(Crawler.Result r) 
		crawler.CrawlUntil(tries: EClass.rnd(EClass.rnd(5) + 1) + 1 + (flag2 ? 20 : 0), map: EClass._map, onStart: () => EClass._map.GetRandomPoint(), canComplete: delegate(Crawler.Result r) 
		{
			int num5 = 136;
			foreach (Point point2 in r.points)

public void Generate()

cs
			}
			return false;
		});
		crawler.CrawlUntil(tries: EClass.rnd(EClass.rnd(10) + 1) + 3 + (flag ? 40 : 0), map: EClass._map, onStart: () => EClass._map.GetRandomPoint(), canComplete: delegate(Crawler.Result r) 
		crawler.CrawlUntil(tries: EClass.rnd(EClass.rnd(10) + 1) + 3 + (flag2 ? 40 : 0), map: EClass._map, onStart: () => EClass._map.GetRandomPoint(), canComplete: delegate(Crawler.Result r) 
		{
			int idFloor = 121;
			foreach (Point point3 in r.points)

public void Generate()

cs
			SpawnAltar();
		}
		TrySpawnFollower();
		if (!flag && EClass.rnd(EClass.debug.enable ? 1 : 10) == 0) 
		{ 
			Point randomSurface5 = EClass._map.bounds.GetRandomSurface(); 
			if (randomSurface5.IsValid) 
			{ 
				EClass._zone.AddCard(CharaGen.Create("priest"), randomSurface5); 
			} 
		} 
	}
	map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList) ?? EClass.Sound.GetPlaylist("Day"));
}