Skip to content

EA 23.93 Nightly

February 19, 2025

20 files modified.

Important Changes

None.

ActEffect

@@ -211,7 +211,7 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
			}
			else
			{
				Dice dice = Dice.Create(text2, power, CC, actref.act); 
				Dice dice = Dice.Create(text2, power, CC, (actref.refThing != null) ? null : actref.act); 
				if (dice == null)
				{
					Debug.Log(text2);

@@ -857,10 +857,10 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
		{
			return;
		}
		Thing thing3 = ThingGen.Create("mine"); 
		thing3.c_idRefCard = "dog_mine"; 
		Thing thing = ThingGen.Create("mine"); 
		thing.c_idRefCard = "dog_mine"; 
		Zone.ignoreSpawnAnime = true;
		EClass._zone.AddCard(thing3, CC.pos).Install(); 
		EClass._zone.AddCard(thing, CC.pos).Install(); 
		break;
	}
	case EffectId.MagicMap:

@@ -892,7 +892,7 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
	case EffectId.AbsorbMana:
	{
		EClass.game.religions.Element.Talk("ability");
		Dice dice = Dice.Create("ActManaAbsorb", power, CC, actRef.act); 
		Dice dice = Dice.Create("ActManaAbsorb", power, CC, (actRef.refThing != null) ? null : actRef.act); 
		TC.mana.Mod(dice.Roll());
		TC.PlaySound("heal");
		TC.PlayEffect("heal");

@@ -978,17 +978,17 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
			LayerDragGrid.CreateUncurse(CC, state);
			return;
		}
		Thing thing = tc.Thing; 
		if (thing.blessedState == BlessedState.Cursed) 
		Thing thing2 = tc.Thing; 
		if (thing2.blessedState == BlessedState.Cursed) 
		{
			thing.SetBlessedState(BlessedState.Normal); 
			thing2.SetBlessedState(BlessedState.Normal); 
		}
		else if (thing.blessedState == BlessedState.Doomed) 
		else if (thing2.blessedState == BlessedState.Doomed) 
		{
			thing.SetBlessedState(BlessedState.Normal); 
			thing2.SetBlessedState(BlessedState.Normal); 
		}
		thing.GetRootCard()?.TryStack(thing); 
		LayerInventory.SetDirty(thing); 
		thing2.GetRootCard()?.TryStack(thing2); 
		LayerInventory.SetDirty(thing2); 
		break;
	}
	case EffectId.Lighten:

@@ -1080,13 +1080,13 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
		cc.PlayEffect("identify");
		cc.Say("reconstruct", cc, tc);
		EClass.game.cards.uidNext += EClass.rnd(30);
		Thing thing2 = ThingGen.Create(tc.id, -1, tc.LV * power / 100); 
		thing2.SetBlessedState(state); 
		Thing thing3 = ThingGen.Create(tc.id, -1, tc.LV * power / 100); 
		thing3.SetBlessedState(state); 
		tc.Destroy();
		CC.Pick(thing2, msg: false); 
		CC.Pick(thing3, msg: false); 
		if (!CC.IsPC)
		{
			CC.TryEquip(thing2); 
			CC.TryEquip(thing3); 
		}
		break;
	}

@@ -1285,7 +1285,7 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
				{
					break;
				}
				int dmg2 = Dice.Create("SpShutterHex", power * hex, CC, actRef.act).Roll(); 
				int dmg2 = Dice.Create("SpShutterHex", power * hex, CC, (actRef.refThing != null) ? null : actRef.act).Roll(); 
				item3.DamageHP(dmg2, 919, power, AttackSource.None, CC);
			}
		});

@@ -1322,26 +1322,26 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
			TC.Say((actRef.n1 == "money") ? "abStealNegateMoney" : "abStealNegate", TC);
			break;
		}
		Thing thing4 = null; 
		bool flag6 = actRef.n1 == "food"; 
		Thing thing6 = null; 
		bool flag7 = actRef.n1 == "food"; 
		if (actRef.n1 == "money")
		{
			int currency = TC.GetCurrency();
			if (currency > 0)
			{
				currency = Mathf.Clamp(EClass.rnd(currency / 10), 1, 100 + EClass.rndHalf(CC.LV * 200));
				thing4 = ThingGen.Create("money").SetNum(currency); 
				thing6 = ThingGen.Create("money").SetNum(currency); 
				TC.ModCurrency(-currency);
			}
		}
		else
		{
			Func<Thing, bool> func = (Thing t) => true;
			if (flag6) 
			if (flag7) 
			{
				func = (Thing t) => t.IsFood;
			}
			List<Thing> list3 = TC.things.List(delegate(Thing t) 
			List<Thing> list5 = TC.things.List(delegate(Thing t) 
			{
				if (t.parentCard?.trait is TraitChestMerchant || t.trait is TraitTool || t.IsThrownWeapon)
				{

@@ -1349,30 +1349,30 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
				}
				return t.trait.CanBeDestroyed && t.things.Count == 0 && t.invY != 1 && t.trait.CanBeStolen && !t.trait.CanOnlyCarry && !t.IsUnique && !t.isEquipped && t.blessedState == BlessedState.Normal && func(t);
			}, onlyAccessible: true);
			if (list3.Count > 0) 
			if (list5.Count > 0) 
			{
				thing4 = list3.RandomItem(); 
				if (thing4.Num > 1) 
				thing6 = list5.RandomItem(); 
				if (thing6.Num > 1) 
				{
					thing4 = thing4.Split(1); 
					thing6 = thing6.Split(1); 
				}
			}
			CC.AddCooldown(6640, 200);
		}
		if (thing4 == null) 
		if (thing6 == null) 
		{
			CC.Say("abStealNothing", CC, TC);
			break;
		}
		thing4.SetInt(116, 1); 
		TC.PlaySound(thing4.material.GetSoundDrop(thing4.sourceCard)); 
		CC.Pick(thing4, msg: false); 
		CC.Say("abSteal", CC, TC, thing4.Name); 
		thing6.SetInt(116, 1); 
		TC.PlaySound(thing6.material.GetSoundDrop(thing6.sourceCard)); 
		CC.Pick(thing6, msg: false); 
		CC.Say("abSteal", CC, TC, thing6.Name); 
		if (actRef.n1 == "food")
		{
			if (CC.hunger.value != 0)
			{
				CC.InstantEat(thing4); 
				CC.InstantEat(thing6); 
			}
		}
		else

@@ -1397,7 +1397,7 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
		{
			break;
		}
		List<Thing> list7 = TC.things.List(delegate(Thing t) 
		List<Thing> list3 = TC.things.List(delegate(Thing t) 
		{
			if (!t.isEquipped || t.blessedState == BlessedState.Doomed || t.IsToolbelt)
			{

@@ -1405,15 +1405,15 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
			}
			return (t.blessedState < BlessedState.Blessed || EClass.rnd(10) == 0) ? true : false;
		});
		if (list7.Count == 0) 
		if (list3.Count == 0) 
		{
			CC.SayNothingHappans();
			break;
		}
		Thing thing6 = list7.RandomItem(); 
		TC.Say("curse_hit", TC, thing6); 
		thing6.SetBlessedState((thing6.blessedState == BlessedState.Cursed) ? BlessedState.Doomed : BlessedState.Cursed); 
		LayerInventory.SetDirty(thing6); 
		Thing thing4 = list3.RandomItem(); 
		TC.Say("curse_hit", TC, thing4); 
		thing4.SetBlessedState((thing4.blessedState == BlessedState.Cursed) ? BlessedState.Doomed : BlessedState.Cursed); 
		LayerInventory.SetDirty(thing4); 
		break;
	}
	case EffectId.UncurseEQ:

@@ -1495,18 +1495,18 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
				text3 = text4;
			}
		}
		Condition condition = Condition.Create(text3, power, delegate(Condition con) 
		Condition condition2 = Condition.Create(text3, power, delegate(Condition con) 
		{
			if (!actRef.aliasEle.IsEmpty())
			{
				con.SetElement(EClass.sources.elements.alias[actRef.aliasEle].id);
			}
		});
		condition.isPerfume = TC.IsPC && actRef.isPerfume; 
		Condition condition2 = TC.AddCondition(condition); 
		if (condition2 != null && condition2.isPerfume) 
		condition2.isPerfume = TC.IsPC && actRef.isPerfume; 
		Condition condition3 = TC.AddCondition(condition2); 
		if (condition3 != null && condition3.isPerfume) 
		{
			condition2.value = 3; 
			condition3.value = 3; 
			Msg.Say("perfume", TC);
		}
		if (!text4.IsEmpty())

@@ -1521,7 +1521,7 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
		bool hex2 = CC.IsHostile(TC);
		List<SourceStat.Row> list6 = EClass.sources.stats.rows.Where((SourceStat.Row con) => con.tag.Contains("random") && con.group == (hex2 ? "Debuff" : "Buff")).ToList();
		int power2 = power;
		for (int m = 0; m < 4 + EClass.rnd(2); m++) 
		for (int l = 0; l < 4 + EClass.rnd(2); l++) 
		{
			SourceStat.Row row2 = list6.RandomItem();
			list6.Remove(row2);

@@ -1542,13 +1542,13 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
		bool isPowerful = TC.IsPowerful;
		string n = actRef.n1;
		int a2 = power;
		int num6 = TC.WIL * (isPowerful ? 20 : 5); 
		ConHolyVeil condition3 = TC.GetCondition<ConHolyVeil>(); 
		if (condition3 != null) 
		int num7 = TC.WIL * (isPowerful ? 20 : 5); 
		ConHolyVeil condition = TC.GetCondition<ConHolyVeil>(); 
		if (condition != null) 
		{
			num6 += condition3.power * 5; 
			num7 += condition.power * 5; 
		}
		if (EClass.rnd(a2) < num6 / EClass.sources.stats.alias[n].hexPower && EClass.rnd(10) != 0) 
		if (EClass.rnd(a2) < num7 / EClass.sources.stats.alias[n].hexPower && EClass.rnd(10) != 0) 
		{
			TC.Say("debuff_resist", TC);
			CC.DoHostileAction(TC);

@@ -1696,16 +1696,16 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
		break;
	case EffectId.Revive:
	{
		List<KeyValuePair<int, Chara>> list5 = 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(); 
		List<KeyValuePair<int, Chara>> list7 = 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(); 
		if (TC.IsPCFaction || TC.IsPCFactionMinion)
		{
			if (TC.IsPC && list5.Count == 0) 
			if (TC.IsPC && list7.Count == 0) 
			{
				list5 = EClass.game.cards.globalCharas.Where((KeyValuePair<int, Chara> a) => a.Value.CanRevive() && a.Value.isDead && a.Value.faction == EClass.pc.faction && !a.Value.isSummon).ToList(); 
				list7 = EClass.game.cards.globalCharas.Where((KeyValuePair<int, Chara> a) => a.Value.CanRevive() && a.Value.isDead && a.Value.faction == EClass.pc.faction && !a.Value.isSummon).ToList(); 
			}
			if (list5.Count > 0) 
			if (list7.Count > 0) 
			{
				list5.RandomItem().Value.Chara.GetRevived(); 
				list7.RandomItem().Value.Chara.GetRevived(); 
				break;
			}
		}

@@ -1718,24 +1718,24 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
	case EffectId.DamageMindGreat:
	case EffectId.Weaken:
	{
		bool flag7 = id == EffectId.DamageBody || id == EffectId.DamageBodyGreat; 
		bool flag8 = id == EffectId.DamageBody || id == EffectId.DamageBodyGreat; 
		bool mind = id == EffectId.DamageMind || id == EffectId.DamageMindGreat;
		int num7 = ((id == EffectId.DamageBody || id == EffectId.DamageMind) ? 1 : (4 + EClass.rnd(4))); 
		int num6 = ((id == EffectId.DamageBody || id == EffectId.DamageMind) ? 1 : (4 + EClass.rnd(4))); 
		if (id == EffectId.Weaken)
		{
			flag7 = EClass.rnd(2) == 0; 
			mind = !flag7; 
			num7 = 1; 
			flag8 = EClass.rnd(2) == 0; 
			mind = !flag8; 
			num6 = 1; 
		}
		else
		{
			TC.PlayEffect("debuff");
			TC.PlaySound("debuff");
		}
		TC.Say(flag7 ? "damageBody" : "damageMind", TC); 
		for (int k = 0; k < num7; k++) 
		TC.Say(flag8 ? "damageBody" : "damageMind", TC); 
		for (int k = 0; k < num6; k++) 
		{
			TC.DamageTempElements(power, flag7, mind); 
			TC.DamageTempElements(power, flag8, mind); 
		}
		if (TC.IsPC)
		{

@@ -1748,39 +1748,39 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
	case EffectId.EnhanceBodyGreat:
	case EffectId.EnhanceMindGreat:
	{
		bool flag8 = id == EffectId.EnhanceBody || id == EffectId.EnhanceBodyGreat; 
		bool flag9 = id == EffectId.EnhanceBody || id == EffectId.EnhanceBodyGreat; 
		bool mind2 = id == EffectId.EnhanceMind || id == EffectId.EnhanceMindGreat;
		int num8 = ((id == EffectId.EnhanceBody || id == EffectId.EnhanceMind) ? 1 : (4 + EClass.rnd(4)));
		TC.Say(flag8 ? "enhanceBody" : "enhanceMind", TC); 
		TC.Say(flag9 ? "enhanceBody" : "enhanceMind", TC); 
		TC.PlayEffect("buff");
		TC.PlaySound("buff");
		for (int l = 0; l < num8; l++) 
		for (int m = 0; m < num8; m++) 
		{
			TC.EnhanceTempElements(power, flag8, mind2); 
			TC.EnhanceTempElements(power, flag9, mind2); 
		}
		break;
	}
	case EffectId.RestoreBody:
	case EffectId.RestoreMind:
	{
		bool flag9 = id == EffectId.RestoreBody; 
		bool flag6 = id == EffectId.RestoreBody; 
		if (flag)
		{
			Redirect(flag9 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef)); 
			Redirect(flag6 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef)); 
			break;
		}
		TC.Say(flag9 ? "restoreBody" : "restoreMind", TC); 
		TC.Say(flag6 ? "restoreBody" : "restoreMind", TC); 
		TC.PlaySound("heal");
		TC.PlayEffect("heal");
		TC.CureHost(flag9 ? CureType.CureBody : CureType.CureMind, power, state); 
		TC.CureHost(flag6 ? CureType.CureBody : CureType.CureMind, power, state); 
		if (blessed)
		{
			Redirect(flag9 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef)); 
			Redirect(flag6 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef)); 
		}
		break;
	}
	case EffectId.HealComplete:
		Dice.Create("SpHealLight", power, CC, actRef.act); 
		Dice.Create("SpHealLight", power, CC, (actRef.refThing != null) ? null : actRef.act); 
		TC.HealHPHost(9999, (actRef.refThing == null) ? HealSource.Magic : HealSource.Item);
		TC.CureHost(CureType.HealComplete, power, state);
		TC.Say("heal_heavy", TC);

@@ -1792,7 +1792,7 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
		{
			EClass.game.religions.Healing.Talk("ability");
		}
		int num9 = Dice.Create((actRef.act != null && EClass.sources.calc.map.ContainsKey(actRef.act.ID)) ? actRef.act.ID : "SpHealLight", power, CC, actRef.act).Roll(); 
		int num9 = Dice.Create((actRef.act != null && EClass.sources.calc.map.ContainsKey(actRef.act.ID)) ? actRef.act.ID : "SpHealLight", power, CC, (actRef.refThing != null) ? null : actRef.act).Roll(); 
		if (flag)
		{
			TC.DamageHP(num9 / 2, 919, power);

BaseBuff

@@ -6,4 +6,9 @@ public override int GetPhase()

cs
	{
		return 0;
	}

	public override bool CanStack(Condition c) 
	{ 
		return c.power >= base.power; 
	} 
}

ButtonElement

@@ -195,6 +195,12 @@ public void SetGrid(Element e, Chara c)

cs
		if (element != null)
		{
			num = element.Value;
			if (element.IsGlobalElement && thing.c_idDeity != EClass.pc.faith.id) 
			{ 
				uIItem.text1.SetActive(enable: false); 
				uIItem.image1.color = Color.white.SetAlpha(0.5f); 
				continue; 
			} 
		}
		if (num == 0)
		{

Chara

@@ -8696,6 +8696,10 @@ public bool TryNeckHunt(Chara TC, int power, bool harvest = false)

cs
	{
		return false;
	}
	if (TC.IsPC && EClass.player.invlunerable) 
	{ 
		return false; 
	} 
	PlaySound("hit_finish");
	Say("finish");
	Say("finish2", this, TC);

CharaRenderer

@@ -75,7 +75,7 @@ public override void OnEnterScreen()

cs
	}
	ignoreFirst = false;
	nextframeTimer = 0f;
	if (EClass.core.config.game.haltOnSpotEnemy && owner.ExistsOnMap && !EClass._zone.IsRegion && owner.IsHostile()) 
	if (EClass.core.config.game.haltOnSpotEnemy && owner.ExistsOnMap && !EClass._zone.IsRegion && owner.IsHostile() && EClass.pc.CanSeeLos(owner)) 
	{
		EClass.player.enemySpotted = true;
	}

ConStrife

@@ -19,6 +19,11 @@ public class ConStrife : BaseBuff

cs

	public int ExpToNext => (lv + 1) * (lv + 1);

	public override bool CanStack(Condition c) 
	{ 
		return true; 
	} 

	public void AddKill(Chara c)
	{
		if (c.IsPCFactionOrMinion)

CoreDebug

@@ -905,6 +905,10 @@ public void UpdateInput()

cs
	}
	if (Input.GetKeyDown(KeyCode.F2))
	{
		for (int i = 0; i < 20; i++) 
		{ 
			Debug.Log(Rand.Range(0, 2)); 
		} 
		EClass.player.recipes.Add("b32");
		if (EScriptable.rnd(2) == 0)
		{

@@ -919,7 +923,7 @@ public void UpdateInput()

cs
	if (Input.GetKeyDown(KeyCode.F3))
	{
		EClass.pc.AddCondition<ConDisease>();
		for (int i = 0; i < 10; i++) 
		for (int j = 0; j < 10; j++) 
		{
			Thing thing = ThingGen.Create("egg_fertilized");
			thing.TryMakeRandomItem(40);

@@ -1021,7 +1025,7 @@ public void UpdateInput()

cs
		if (Input.GetKey(KeyCode.F9))
		{
			EClass.scene.paused = false;
			for (int j = 0; j < advanceMin; j++) 
			for (int k = 0; k < advanceMin; k++) 
			{
				EClass.game.updater.FixedUpdate();
			}

Game

@@ -461,6 +461,14 @@ public void OnLoad()

cs
		}
	}
	TryAddQuest("into_darkness", "exile_kettle");
	if (version.IsBelow(0, 23, 93)) 
	{ 
		RecipeManager.BuildList(); 
		Debug.Log("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■feafefaeffaeaffeaaeaefseasfaefaef"); 
		while (TryAddRecipe()) 
		{ 
		} 
	} 
	if (version.IsBelow(0, 23, 72))
	{
		foreach (Chara value2 in EClass.game.cards.globalCharas.Values)

@@ -610,6 +618,30 @@ void TryAddQuestIfActive(string idQuest, string idReqQuest)

cs
			quests.Add(idQuest);
		}
	}
	bool TryAddRecipe() 
	{ 
		foreach (string key in player.recipes.knownRecipes.Keys) 
		{ 
			if (key.Length > 1 && key[0] == 'b') 
			{ 
				RecipeSource recipeSource = RecipeManager.Get(key + "-p"); 
				if (recipeSource != null && !player.recipes.knownRecipes.ContainsKey(recipeSource.id)) 
				{ 
					Debug.Log(recipeSource.id); 
					player.recipes.Add(recipeSource.id, showEffect: false); 
					return true; 
				} 
				recipeSource = RecipeManager.Get(key.Replace("-p", "")); 
				if (recipeSource != null && !player.recipes.knownRecipes.ContainsKey(recipeSource.id)) 
				{ 
					Debug.Log(recipeSource.id); 
					player.recipes.Add(recipeSource.id, showEffect: false); 
					return true; 
				} 
			} 
		} 
		return false; 
	} 
	static bool TryDestroy()
	{
		for (int i = 0; i < EClass.pc.party.members.Count; i++)

InvOwnerCraft

@@ -2,7 +2,17 @@ public class InvOwnerCraft : InvOwnerDraglet

cs
{
	public TraitCrafter crafter;

	public override bool CanTargetAlly => crafter is TraitToolTalisman; 
	public override bool CanTargetAlly 
	{ 
		get 
		{ 
			if (!(crafter is TraitToolTalisman)) 
			{ 
				return crafter is TraitRuneMold; 
			} 
			return true; 
		} 
	} 

	public override bool ShowFuel => crafter.IsRequireFuel;

InvOwnerMod

@@ -1,5 +1,7 @@

cs
public class InvOwnerMod : InvOwnerDraglet
{
	public override bool CanTargetAlly => true; 

	public override ProcessType processType => ProcessType.None;

	public override string langTransfer => "invMod";

LayerInfo

@@ -8,6 +8,10 @@ public class LayerInfo : ELayer

cs

	public bool examine;

	public Vector2 size; 

	public Vector2 padding; 

	public override void OnAfterInit()
	{
		base.OnAfterInit();

@@ -28,29 +32,38 @@ public void Set(object o, bool _examine = false)

cs
		}
	}

	public void Resize() 
	{ 
		windows[0].Rect().sizeDelta = new Vector2(Mathf.Max(info.Rect().sizeDelta.x + padding.x, size.x), size.y); 
	} 

	public void SetThing(Thing t, bool _examine = false)
	{
		examine = _examine;
		windows[0].SetCaption(t.NameSimple.ToTitleCase());
		info.SetThing(t);
		Resize(); 
	}

	public void SetBlock(Cell cell)
	{
		windows[0].SetCaption(cell.GetBlockName());
		info.SetBlock(cell);
		Resize(); 
	}

	public void SetFloor(Cell cell)
	{
		windows[0].SetCaption(cell.GetFloorName());
		info.SetFloor(cell);
		Resize(); 
	}

	public void SetLiquid(Cell cell)
	{
		windows[0].SetCaption(cell.GetLiquidName());
		info.SetLiquid(cell);
		Resize(); 
	}

	public void SetZone(Zone z)

@@ -59,12 +72,14 @@ public void SetZone(Zone z)

cs
		note.AddHeader(z.Name);
		note.AddText(z.source.GetDetail());
		note.Build();
		Resize(); 
	}

	public void SetObj(Cell cell)
	{
		windows[0].SetCaption(cell.sourceObj.GetName());
		info.SetObj(cell);
		Resize(); 
	}

	public override void OnKill()

Map

@@ -1948,14 +1948,19 @@ public void _ValidateInstalled(int x, int y)

cs
		HitResult hitResult = item.TileType._HitTest(point, item.Thing, canIgnore: false);
		if (item.Thing.stackOrder != detail.things.IndexOf(item.Thing) || (hitResult != HitResult.Valid && hitResult != HitResult.Warning))
		{
			if (EClass._zone.IsPCFaction) 
			bool flag = true; 
			if (EClass._zone.IsPCFaction || item.rarity >= Rarity.Legendary || item.trait is TraitFigure) 
			{
				item.SetPlaceState(PlaceState.roaming); 
				flag = false; 
			}
			else
			if (flag) 
			{
				item.Die();
			}
			else
			{ 
				item.SetPlaceState(PlaceState.roaming); 
			} 
		}
	}
}

Player

@@ -2003,7 +2003,6 @@ public void RefreshCurrentHotItem()

cs
			currentHotItem = hotItemNoItem;
		}
	}
	Debug.Log(currentHotItem); 
	if (currentHotItem != lastHotItem)
	{
		if (lastHotItem != null)

Props

@@ -242,8 +242,7 @@ void Find(string id)

cs
		{
			foreach (Card item3 in cardMap.GetOrCreate(id))
			{
				Card obj = item3.parent as Card; 
				if (obj != null && obj.c_lockLv == 0) 
				if (!(item3.parent is Thing thing) || (thing.c_lockLv == 0 && thing.trait.CanUseContent)) 
				{
					TryAdd(item3.Thing);
				}

@@ -262,12 +261,12 @@ void FindCat(string id)

cs
		});
		if (EClass._zone.IsPCFaction || EClass._zone is Zone_Tent || EClass.debug.enable)
		{
			foreach (Thing thing in things) 
			foreach (Thing thing2 in things) 
			{
				Card obj2 = thing.parent as Card; 
				if (obj2 != null && obj2.c_lockLv == 0 && thing.category.IsChildOf(cat.id) && !thing.IsExcludeFromCraft()) 
				Card obj = thing2.parent as Card; 
				if (obj != null && obj.c_lockLv == 0 && thing2.category.IsChildOf(cat.id) && !thing2.IsExcludeFromCraft()) 
				{
					stack.Add(thing); 
					stack.Add(thing2); 
				}
			}
		}

Recipe

@@ -658,7 +658,7 @@ public virtual void Build(Chara chara, Card t, Point pos, int mat, int dir, int

cs
		}
	}
	case "Floor":
		if (pos.sourceObj.tileType.RemoveOnFloorChange && (!BuildMenu.Instance || !EClass.debug.ignoreBuildRule)) 
		if (pos.HasObj && pos.sourceObj.tileType.RemoveOnFloorChange && (!BuildMenu.Instance || !EClass.debug.ignoreBuildRule)) 
		{
			EClass._map.SetObj(pos.x, pos.z);
		}

RecipeCard

@@ -394,22 +394,30 @@ public override void Build(TaskBuild task)

cs
		}
		card = task.resources[0];
	}
	else if (sourceCard.isChara) 
	{ 
		card = CharaGen.Create(idCard, Mathf.Max(EClass._zone.DangerLv, EClass.pc.LV)); 
	} 
	else
	{
		card = ((!sourceCard.isChara) ? ((Card)ThingGen.Create(idCard, -1, Mathf.Max(EClass._zone.DangerLv, EClass.pc.LV))) : ((Card)CharaGen.Create(idCard, Mathf.Max(EClass._zone.DangerLv, EClass.pc.LV)))); 
		if (!card.isChara) 
		card = ThingGen.Create(idCard, -1, Mathf.Max(EClass._zone.DangerLv, EClass.pc.LV)); 
		if (!card.IsUnique) 
		{
			if (!card.IsUnique) 
			{ 
				card.ChangeMaterial(GetMainMaterial()); 
			} 
			if (base.source.colorIng != 0) 
			{ 
				card.Dye(GetColorMaterial()); 
			} 
			if (card.IsContainer) 
			card.ChangeMaterial(GetMainMaterial()); 
		} 
		if (base.source.colorIng != 0) 
		{ 
			card.Dye(GetColorMaterial()); 
		} 
		if (card.IsContainer) 
		{ 
			card.RemoveThings(); 
		} 
		foreach (Ingredient ingredient in ingredients) 
		{ 
			if (ingredient.thing != null && ingredient.thing.HasElement(759)) 
			{
				card.RemoveThings(); 
				card.elements.SetBase(759, ingredient.thing.Evalue(759)); 
			}
		}
	}

TaskDump

@@ -213,20 +213,18 @@ public List<Thing> ListThingsToPut(Thing c)

cs
		{
			EClass.pc.things.Foreach(delegate(Thing t)
			{
				if (!ExcludeDump(t)) 
				if (!list.Contains(t) && !ExcludeDump(t) && t.CanStackTo(ct)) 
				{
					if (data.userFilter)
					{
						switch (data.IsFilterPass(t.GetName(NameStyle.Full, 1))) 
						Window.SaveData.FilterResult filterResult = data.IsFilterPass(t.GetName(NameStyle.Full, 1)); 
						if (filterResult != Window.SaveData.FilterResult.Block) 
						{
						case Window.SaveData.FilterResult.Block: 
							return; 
						case Window.SaveData.FilterResult.PassWithoutFurtherTest: 
							_ = 2; 
							list.Add(t);
							return; 
						}
					}
					if (t.CanStackTo(ct)) 
					else
					{
						list.Add(t);
					}

Thing

@@ -1208,7 +1208,7 @@ public override void WriteNote(UINote n, Action<UINote> onWriteNote = null, IIns

cs
					return false;
				}
				return (!showEQStats || (e.id != 64 && e.id != 65 && e.id != 66 && e.id != 67)) ? true : false;
			}); 
			}, null, ElementContainer.NoteMode.Default, addRaceFeat: false, (Element e, string s) => (mode != IInspect.NoteMode.Info) ? s : (s + " (" + e.Value + ")")); 
		}
		if (sockets != null)
		{

TraitItemProc

@@ -30,7 +30,8 @@ public override bool OnUse(Chara c)

cs
	}
	ActEffect.Proc(IdEffect, GetParamInt(3, num), owner.blessedState, c, null, new ActRef
	{
		n1 = n1 
		n1 = n1, 
		refThing = owner.Thing 
	});
	if (c.ExistsOnMap)
	{

Zone

@@ -1515,7 +1515,7 @@ public void AddGlobalCharasOnActivate()

cs
			{
				continue;
			}
			if (c.isRestrained && c.currentZone == EClass.pc.currentZone && c.pos.FindThing<TraitShackle>() == null) 
			if (c.isRestrained && c.currentZone == EClass.pc.currentZone && (!c.pos.IsValid || c.pos.FindThing<TraitShackle>() == null)) 
			{
				c.isRestrained = false;
			}