Skip to content

EA 23.195 Nightly

September 6, 2025

26 files modified. 2 new files created.

Important Changes

None.

AI_PlayMusic

public override IEnumerable<Status> Run()

cs
		case "piano_gould":
			idSong = "piano_gould";
			break;
		case "piano_killkill":
		case "piano2":
			idSong = "piano_neko";
			break;

public void ThrowReward(Chara c, bool punish)

cs
		{
			text = "casino_coin";
		}
		if (owner.IsPC && !EClass._zone.IsInstance) 
		{ 
			if (c.LV >= 20 && EClass.rnd(10 * (int)Mathf.Pow(2f, EClass.player.flags.reward_killkill + 1)) == 0) 
			{ 
				text = "piano_killkill"; 
				punish = true; 
				EClass.player.flags.reward_killkill++; 
			} 
			if (c.LV >= 40 && EClass.rnd(10 * (int)Mathf.Pow(2f, EClass.player.flags.reward_gould + 1)) == 0) 
			{ 
				text = "piano_gould"; 
				punish = true; 
				EClass.player.flags.reward_gould++; 
			} 
		} 
	}
	else
	{

public void ThrowReward(Chara c, bool punish)

cs
	if (!owner.IsPC && owner.things.IsFull())
	{
		thing.Destroy();
		return; 
	}
	owner.Pick(thing); 
	if (thing.id == "money" && !owner.IsPC) 
	else
	{
		int num2 = (owner.Evalue(241) * 10 + 100) / ((owner.IsPCFaction && owner.memberType == FactionMemberType.Default) ? 1 : 10); 
		if (owner.GetCurrency() - num2 > 0) 
		if (!owner.IsAliveInCurrentZone) 
		{ 
			return; 
		} 
		owner.Pick(thing); 
		if (thing.id == "money" && !owner.IsPC) 
		{
			owner.c_allowance += num; 
			owner.ModCurrency(-num); 
			int num2 = (owner.Evalue(241) * 10 + 100) / ((owner.IsPCFaction && owner.memberType == FactionMemberType.Default) ? 1 : 10); 
			if (owner.GetCurrency() - num2 > 0) 
			{ 
				owner.c_allowance += num; 
				owner.ModCurrency(-num); 
			} 
		}
	}
}

ActEffect

public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
		power = power * actref.refThing.material.hardness / 10;
	}
	string text = id.ToString();
	string text2 = (EClass.sources.calc.map.ContainsKey(text) ? text : (EClass.sources.calc.map.ContainsKey("Sp" + text) ? ("Sp" + text) : (text.ToLower() + "_"))); 
	string text2 = (EClass.sources.calc.map.ContainsKey(text) ? text : (EClass.sources.calc.map.ContainsKey("Sp" + text) ? ("Sp" + text) : (text.ToLowerInvariant() + "_"))); 
	foreach (Point p in points)
	{
		bool flag2 = true;

public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
					attackSource = AttackSource.MoonSpear;
				}
			}
			if (id == EffectId.Sword) 
			switch (id) 
			{
			case EffectId.Arrow: 
				attackSource = AttackSource.MagicArrow; 
				break; 
			case EffectId.Sword: 
				attackSource = AttackSource.MagicSword;
				break; 
			}
			long num4 = 0L;
			bool isChara = CC.isChara;

ActRush

public override bool Perform()

cs
		Act.CC.Say("rush", Act.CC, Act.TC);
		Act.CC.PlaySound("rush");
		Act.CC.pos.PlayEffect("vanish");
		return Attack(1f + 0.1f * (float)num); 
		float num2 = 1f + 0.1f * (float)num; 
		num2 = num2 * (float)(100 + EClass.curve(Act.CC.Evalue(382), 50, 25, 65)) / 100f; 
		Attack(num2); 
		if (Act.TC.isChara && Act.TC.ExistsOnMap && Act.CC.HasElement(382)) 
		{ 
			if (!Act.TC.IsPowerful || EClass.rnd(4) == 0) 
			{ 
				Act.TC.Chara.AddCondition<ConParalyze>(2, force: true); 
			} 
			if (!Act.TC.IsPowerful || EClass.rnd(3) == 0) 
			{ 
				Act.TC.Chara.AddCondition<ConDim>(5, force: true); 
			} 
			if (!Act.TC.IsPowerful || EClass.rnd(2) == 0) 
			{ 
				Act.TC.Chara.AddCondition<ConConfuse>(8, force: true); 
			} 
		} 
		return true; 
	}
}

ActThrow

public static EffectIRenderer Throw(Card c, Point p, Card target, Thing t, Throw

cs
		result = Effect.Get<EffectIRenderer>((t.trait is TraitBall) ? "throw_ball" : "throw").Play((c.isChara && c.Chara.host != null) ? c.Chara.host : c, t, c.pos, p, 0.2f);
		t.renderer.SetFirst(first: false, c.renderer.position);
	}
	if (!t.HasElement(410)) 
	if (!t.HasElement(410) || method == ThrowMethod.Punish) 
	{
		t._Move(p);
	}

public static EffectIRenderer Throw(Card c, Point p, Card target, Thing t, Throw

cs
	if (!flag && Act.TC != null)
	{
		AttackProcess.Current.Prepare(c.Chara, t, Act.TC, Act.TP, 0, _isThrow: true);
		if (method == ThrowMethod.Punish && t.rarity >= Rarity.Legendary) 
		{ 
			AttackProcess.Current.critFury = true; 
		} 
		if (AttackProcess.Current.Perform(0, hasHit: false))
		{
			if (Act.TC.IsAliveInCurrentZone && t.trait is TraitErohon && Act.TC.id == t.c_idRefName)

AttackProcess

public void Prepare(Chara _CC, Thing _weapon, Card _TC = null, Point _TP = null,

cs
			toHitBase = toHitBase * 75 / 100;
		}
		penetration = Mathf.Clamp(weaponSkill.Value / 10 + 5, 5, 20) + CC.Evalue(92);
		if (CC.HasElement(1244)) 
		{ 
			penetration += 25; 
		} 
		if (IsMartialWeapon)
		{
			dBonus += weapon.DMG;

public bool CalcHit()

cs
		crit = true;
		return true;
	}
	if (CC.HasElement(1244) && CC.HasCondition<ConSevenSense>()) 
	{ 
		return true; 
	} 
	if (TC != null)
	{
		if (TC.HasCondition<ConDim>() && EClass.rnd(4) == 0)

AttackSource

public enum AttackSource

cs
	DeathSentense,
	Shockwave,
	MagicSword,
	MoonSpear 
	MoonSpear, 
	MagicArrow 
}

Card

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
		return;
	}
	bool flag = originalTarget != null;
	Action onEvade = null; 
	if (isChara && !isRestrained && !HasElement(1241) && !flag)
	{
		AttackSource attackSource2 = attackSource;

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
			{
				num3 += 2;
			}
			if (attackSource == AttackSource.MagicArrow && origin != null && origin.HasElement(1244)) 
			{ 
				num3++; 
			} 
			dmg = Element.GetResistDamage(dmg, Evalue(e.source.aliasRef), num3);
			dmg = dmg * 100 / (100 + Mathf.Clamp(Evalue(961) * 5, -50, 200));
			dmg = dmg * Mathf.Max(100 - Evalue(93), 10) / 100;

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
	}
	ZoneInstanceBout zoneInstanceBout = EClass._zone.instance as ZoneInstanceBout;
	bool flag2 = false;
	bool flag3 = false; 
	if (hp < 0 && Religion.recentWrath == null)
	{
		if (isRestrained && IsPCFaction && EClass._zone.IsPCFaction && (!IsPC || (Chara.ai is AI_Torture && Chara.ai.IsRunning)))
		{
			EvadeDeath(); 
			EvadeDeath(null); 
			if (Chara.stamina.value > 0 && (EClass.rnd(2) == 0 || !IsPC))
			{
				Chara.stamina.Mod(-1);

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
		}
		else if (IsInstalled && pos.HasBlock && trait.IsDoor)
		{
			EvadeDeath(); 
			EvadeDeath(null); 
		}
		else if (!trait.CanBeDestroyed)
		{
			EvadeDeath(); 
			EvadeDeath(null); 
		}
		else if (HasEditorTag(EditorTag.Invulnerable) || (HasEditorTag(EditorTag.InvulnerableToMobs) && (origin == null || !origin.IsPCParty)))
		{
			EvadeDeath(); 
			EvadeDeath(null); 
		}
		else if (isChara)
		{
			if (Chara.HasCondition<ConInvulnerable>())
			{
				EvadeDeath(); 
				EvadeDeath(null); 
			}
			else if (IsPC && EClass.debug.godMode)
			{
				EvadeDeath(); 
				EvadeDeath(null); 
			}
			else if (Chara.host != null || (weapon != null && weapon.HasElement(485)))
			{
				EvadeDeath(); 
				EvadeDeath(null); 
				flag2 = true;
			}
			else
			{
				if (origin != null && origin != this && Evalue(436) > 0 && !HasCondition<ConFractured>())
				{
					int num13 = (HasElement(1218) ? MaxHP : (MaxHP / 2)); 
					if (num10 > num13) 
					int half = (HasElement(1218) ? MaxHP : (MaxHP / 2)); 
					if (num10 > half) 
					{
						EvadeDeath(); 
						flag3 = true; 
						Chara.AddCondition<ConFractured>((int)Mathf.Max(10f, 30f - Mathf.Sqrt(Evalue(436)))); 
						hp = Mathf.Min(num13 * (int)Mathf.Sqrt(Evalue(436) * 2) / 100, MaxHP / 3); 
						goto IL_0ed7; 
						EvadeDeath(delegate
						{ 
							Say("guts", this); 
							Chara.AddCondition<ConFractured>((int)Mathf.Max(10f, 30f - Mathf.Sqrt(Evalue(436)))); 
							hp = Mathf.Min(half * (int)Mathf.Sqrt(Evalue(436) * 2) / 100, MaxHP / 3); 
						}); 
						goto IL_0e69; 
					}
				}
				if (zoneInstanceBout != null && (bool)LayerDrama.Instance)
				{
					EvadeDeath(); 
					EvadeDeath(null); 
				}
				else if (LayerDrama.IsActive() && IsPC)
				{
					EvadeDeath(); 
					EvadeDeath(null); 
				}
				else
				{

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
						}
						if (EClass.player.invlunerable)
						{
							EvadeDeath(); 
							goto IL_0ed7; 
							EvadeDeath(null); 
							goto IL_0e69; 
						}
					}
					if (Evalue(1220) > 0 && Chara.stamina.value >= (IsPC ? (Chara.stamina.max / 2) : (Chara.stamina.max / 3 * 2)))
					{
						Say("fate", this); 
						PlaySound("revive"); 
						PlayEffect("aura_heaven"); 
						Chara.stamina.Mod(-Chara.stamina.max / 2); 
						Chara.AddCondition<ConInvulnerable>(); 
						EvadeDeath(); 
						EvadeDeath(delegate
						{ 
							Say("fate", this); 
							PlaySound("revive"); 
							PlayEffect("aura_heaven"); 
							Chara.stamina.Mod(-Chara.stamina.max / 2); 
							Chara.AddCondition<ConInvulnerable>(); 
						}); 
					}
				}
			}
		}
	}
	goto IL_0ed7; 
	IL_0ed7: 
	goto IL_0e69; 
	IL_0e69: 
	if (trait.CanBeAttacked)
	{
		renderer.PlayAnime(AnimeID.HitObj);

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
	}
	else if (isChara)
	{
		int num14 = ((attackSource != AttackSource.Condition && attackSource != AttackSource.WeaponEnchant) ? 1 : 2); 
		if (num9 >= num14) 
		int num13 = ((attackSource != AttackSource.Condition && attackSource != AttackSource.WeaponEnchant) ? 1 : 2); 
		if (num9 >= num13) 
		{
			if (e != Element.Void)
			{

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
			}
		}
	}
	if (flag3) 
	{ 
		Say("guts", this); 
	} 
	onEvade?.Invoke(); 
	if (isChara)
	{
		if (flag2)

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
			}
			if (attackSource == AttackSource.Melee || attackSource == AttackSource.Range)
			{
				int num15 = origin.Dist(this); 
				if (attackSource == AttackSource.Melee && HasElement(1221) && num15 <= Evalue(1221)) 
				int num14 = origin.Dist(this); 
				if (attackSource == AttackSource.Melee && HasElement(1221) && num14 <= Evalue(1221)) 
				{
					int ele2 = ((Chara.MainElement == Element.Void) ? 924 : Chara.MainElement.id);
					if (id == "hedgehog_ether")

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
					Say("reflect_thorne", this, origin);
					origin.DamageHP(Mathf.Clamp(dmg / 10, 1, MaxHP / (origin.IsPowerful ? 200 : 20)), ele2, Power, AttackSource.Condition, this);
				}
				if (HasElement(1223) && num15 <= Evalue(1223)) 
				if (HasElement(1223) && num14 <= Evalue(1223)) 
				{
					int ele3 = ((Chara.MainElement == Element.Void) ? 923 : Chara.MainElement.id);
					Say("reflect_acid", this, origin);

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
			}
		}
	}
	int num16 = ((EClass.rnd(2) == 0) ? 1 : 0); 
	int num15 = ((EClass.rnd(2) == 0) ? 1 : 0); 
	if (attackSource == AttackSource.Condition)
	{
		num16 = 1 + EClass.rnd(2); 
		num15 = 1 + EClass.rnd(2); 
	}
	if (num16 > 0) 
	if (num15 > 0) 
	{
		bool flag4 = Chara.HasCondition<ConPoison>() || ((e.id == 915 || e.id == 923) && ResistLv(Evalue(955)) < 4); 
		AddBlood(num16, flag4 ? 6 : (-1)); 
		bool flag3 = Chara.HasCondition<ConPoison>() || ((e.id == 915 || e.id == 923) && ResistLv(Evalue(955)) < 4); 
		AddBlood(num15, flag3 ? 6 : (-1)); 
	}
	bool flag5 = true; 
	bool flag4 = true; 
	switch (e.id)
	{
	case 910:

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
		}
		break;
	case 918:
		flag5 = false; 
		flag4 = false; 
		if (Chance(30 + eleP / 5, 100))
		{
			Chara.AddCondition<ConParalyze>(eleP);
		}
		break;
	case 914:
		flag5 = false; 
		flag4 = false; 
		if (EClass.rnd(3) != 0)
		{
			if (Chance(30 + eleP / 5, 100))

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
		}
		break;
	case 920:
		flag5 = false; 
		flag4 = false; 
		if (Chance(5 + eleP / 25, 40))
		{
			Chara.AddCondition<ConBlind>(eleP / 2);

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
		Chara.AddCondition<ConGravity>(2000);
		Condition.ignoreEffect = false;
	}
	if (Chara.conSleep != null && flag5) 
	if (Chara.conSleep != null && flag4) 
	{
		Chara.conSleep.Kill();
	}
	if (IsPC)
	{
		float num17 = (float)hp / (float)MaxHP; 
		float num16 = (float)hp / (float)MaxHP; 
		if (Evalue(1421) > 0)
		{
			num17 = (float)Chara.mana.value / (float)Chara.mana.max; 
			num16 = (float)Chara.mana.value / (float)Chara.mana.max; 
		}
		if (num17 < 0.3f) 
		if (num16 < 0.3f) 
		{
			PlaySound("heartbeat", 1f - num17 * 2f); 
			PlaySound("heartbeat", 1f - num16 * 2f); 
		}
	}
	if (!IsPC && hp < MaxHP / 5 && Evalue(423) <= 0 && dmg * 100 / MaxHP + 10 > EClass.rnd(IsPowerful ? 400 : 150) && !HasCondition<ConFear>())

bool Chance(int a, int max)

cs
		}
		return false;
	}
	void EvadeDeath() 
	void EvadeDeath(Action action) 
	{
		hp = 0;
		if (Evalue(1421) > 0 && isChara && Chara.mana.value < 0)
		{
			Chara.mana.value = 0;
		}
		onEvade = action; 
	}
	void Heal()
	{

void ProcAbsorb()

cs
			int valueOrDefault2 = (origin.Evalue(661) + weapon?.Evalue(661, ignoreGlobalElement: true)).GetValueOrDefault();
			if (valueOrDefault > 0 && attackSource == AttackSource.Melee && origin.isChara && !origin.Chara.ignoreSPAbsorb && Chara.IsHostile(origin as Chara))
			{
				int num18 = EClass.rnd(3 + Mathf.Clamp(dmg / 100, 0, valueOrDefault / 10)); 
				origin.Chara.stamina.Mod(num18); 
				int num17 = EClass.rnd(3 + Mathf.Clamp(dmg / 100, 0, valueOrDefault / 10)); 
				origin.Chara.stamina.Mod(num17); 
				if (IsAliveInCurrentZone)
				{
					Chara.stamina.Mod(-num18); 
					Chara.stamina.Mod(-num17); 
				}
			}
			if (origin.HasElement(1350) && attackSource == AttackSource.Melee)
			{
				int num19 = EClass.rndHalf(2 + Mathf.Clamp(dmg / 10, 0, origin.Chara.GetPietyValue() + 10)); 
				origin.Chara.mana.Mod(num19); 
				int num18 = EClass.rndHalf(2 + Mathf.Clamp(dmg / 10, 0, origin.Chara.GetPietyValue() + 10)); 
				origin.Chara.mana.Mod(num18); 
				if (IsAliveInCurrentZone)
				{
					Chara.mana.Mod(-num19); 
					Chara.mana.Mod(-num18); 
				}
			}
			if (valueOrDefault2 > 0 && attackSource == AttackSource.Melee)
			{
				int num20 = EClass.rnd(2 + Mathf.Clamp(dmg / 10, 0, valueOrDefault2 + 10)); 
				origin.Chara.mana.Mod(num20); 
				int num19 = EClass.rnd(2 + Mathf.Clamp(dmg / 10, 0, valueOrDefault2 + 10)); 
				origin.Chara.mana.Mod(num19); 
				if (IsAliveInCurrentZone)
				{
					Chara.mana.Mod(-num20); 
					Chara.mana.Mod(-num19); 
				}
			}
		}

public void SpawnLoot(Card origin)

cs
			int num4 = array[1].ToInt();
			if (num4 >= 1000 || num4 > EClass.rnd(1000) || EClass.debug.godMode)
			{
				CardRow cardRow = EClass.sources.cards.map[array[0]]; 
				if (cardRow != null && cardRow.Category.slot != 0 && cardRow.quality == 0 && EClass.pc.Evalue(1660) * 25 > EClass.rnd(100)) 
				{ 
					CardBlueprint.SetRarity(Rarity.Legendary); 
				} 
				list.Add(ThingGen.Create(array[0]).SetNum((num4 < 1000) ? 1 : (num4 / 1000 + ((EClass.rnd(1000) > num4 % 1000) ? 1 : 0))));
			}
		}

public void ApplyBacker(int bid)

cs
	{
		Chara.bio.SetGender(row.gender);
		Chara.bio.SetPortrait(Chara);
		Chara.idFaith = row.deity.ToLower(); 
		Chara.idFaith = row.deity.ToLowerInvariant(); 
	}
	if (row.type == 4 || row.type == 5 || row.type == 7)
	{

Chara

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

cs
	{
		return false;
	}
	if (a.source.proc.TryGet(0) == "Heal" && HasElement(1422)) 
	if (a.source.proc.TryGet(0) == "Heal" && HasElement(1422) && !IsPC) 
	{
		List<int> list = new List<int> { 8400, 8401, 8402, 8403, 8404, 8405 };
		int num = list.IndexOf(a.id);

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

cs
	{
		num3 = 1 + Evalue(1648);
	}
	Debug.Log(cost.cost + "/" + a.Value); 
	if (IsPC && cost.cost > 0 && a.Value == 0)
	{
		Msg.SayNothingHappen();

+ConSevenSense

File Created
cs
public class ConSevenSense : ConBoost
{
}

CoreDebug

public void UpdateInput()

cs
	}
	if (Input.GetKeyDown(KeyCode.F4))
	{
		foreach (Chara member in EClass.pc.party.members) 
		{ 
			member.InstantEat(); 
			if (!member.IsPC) 
			{ 
				string id = "test"; 
				member.spriteReplacer = new SpriteReplacer(); 
				member.spriteReplacer.HasSprite(id); 
				member._CreateRenderer(); 
			} 
		} 
		for (int j = 0; j < 10; j++) 
		{ 
			Thing thing2 = ThingGen.CreateFromCategory("fish", 999); 
			thing2.SetTier(EScriptable.rnd(4)); 
			EClass.pc.Pick(thing2); 
			thing2 = ThingGen.Create("89"); 
			thing2.SetTier(EScriptable.rnd(4)); 
			EClass.pc.Pick(thing2); 
		} 
		EClass.pc.PlayEffect("phoenix"); 
		EClass.ui.AddLayer<LayerCalendar>(); 
		return;
	}
	if (Input.GetKeyDown(KeyCode.F5))

public void UpdateInput()

cs
	{
		EClass.core.WaitForEndOfFrame(delegate
		{
			string id2 = (Input.GetKey(KeyCode.LeftControl) ? "quick3" : (Input.GetKey(KeyCode.LeftShift) ? "quick2" : "quick")); 
			string id = (Input.GetKey(KeyCode.LeftControl) ? "quick3" : (Input.GetKey(KeyCode.LeftShift) ? "quick2" : "quick")); 
			EClass.scene.Init(Scene.Mode.None);
			Game.Load(id2, cloud: false); 
			Game.Load(id, cloud: false); 
		});
	}
	if (Input.GetKeyDown(KeyCode.F7))

public void UpdateInput()

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

public void UpdateInput()

cs
	{
		for (int num4 = hitPoint.detail.things.Count - 1; num4 >= 0; num4--)
		{
			Thing thing3 = hitPoint.detail.things[num4]; 
			Debug.Log(thing3.id + "/" + thing3.Pref.height + "/" + thing3.trait?.ToString() + "/" + thing3.source.tileType.CanStack + "/" + thing3.source.tileType?.ToString() + "/" + thing3.isSynced + "/" + RenderObject.syncList.Contains(thing3.renderer)); 
			Thing thing2 = hitPoint.detail.things[num4]; 
			Debug.Log(thing2.id + "/" + thing2.Pref.height + "/" + thing2.trait?.ToString() + "/" + thing2.source.tileType.CanStack + "/" + thing2.source.tileType?.ToString() + "/" + thing2.isSynced + "/" + RenderObject.syncList.Contains(thing2.renderer)); 
		}
	}
	if (!Application.isEditor)

public void UpdateInput()

cs
	case DebugHotkey.Item:
		if (Input.GetKeyDown(KeyCode.Alpha1))
		{
			Thing thing4 = ThingGen.Create("stairsDown_cave"); 
			Thing thing3 = ThingGen.Create("stairsDown_cave"); 
			EClass._zone.AddCard(thing3, EClass.pc.pos); 
			thing3.SetPlaceState(PlaceState.installed); 
		} 
		if (Input.GetKeyDown(KeyCode.Alpha2)) 
		{ 
			Thing thing4 = ThingGen.Create("stairs"); 
			EClass._zone.AddCard(thing4, EClass.pc.pos);
			thing4.SetPlaceState(PlaceState.installed);
		}
		if (Input.GetKeyDown(KeyCode.Alpha2)) 
		if (Input.GetKeyDown(KeyCode.Alpha3)) 
		{
			Thing thing5 = ThingGen.Create("stairs"); 
			EClass._zone.AddCard(thing5, EClass.pc.pos); 
			Thing thing5 = ThingGen.Create("sign"); 
			EClass._zone.AddCard(thing5, hitPoint); 
			thing5.SetPlaceState(PlaceState.installed);
		}
		if (Input.GetKeyDown(KeyCode.Alpha3)) 
		if (Input.GetKeyDown(KeyCode.Alpha4)) 
		{
			Thing thing6 = ThingGen.Create("sign"); 
			Thing thing6 = ThingGen.Create("sign2"); 
			EClass._zone.AddCard(thing6, hitPoint);
			thing6.SetPlaceState(PlaceState.installed);
		}
		if (Input.GetKeyDown(KeyCode.Alpha4)) 
		if (Input.GetKeyDown(KeyCode.Alpha5)) 
		{
			Thing thing7 = ThingGen.Create("sign2"); 
			Thing thing7 = ThingGen.Create("well"); 
			EClass._zone.AddCard(thing7, hitPoint);
			thing7.SetPlaceState(PlaceState.installed);
		}
		if (Input.GetKeyDown(KeyCode.Alpha5)) 
		if (Input.GetKeyDown(KeyCode.Alpha6)) 
		{
			Thing thing8 = ThingGen.Create("well"); 
			Thing thing8 = ThingGen.Create("altar"); 
			EClass._zone.AddCard(thing8, hitPoint);
			thing8.SetPlaceState(PlaceState.installed);
		}
		if (Input.GetKeyDown(KeyCode.Alpha6)) 
		{ 
			Thing thing9 = ThingGen.Create("altar"); 
			EClass._zone.AddCard(thing9, hitPoint); 
			thing9.SetPlaceState(PlaceState.installed); 
		} 
		if (Input.GetKeyDown(KeyCode.Alpha7))
		{
			Thing t = ThingGen.Create("torch");

public void InitDebugCommands()

cs
					}
					break;
				case 6:
					if (!EClass.sources.religions.map.ContainsKey(row2.deity.ToLower())) 
					if (!EClass.sources.religions.map.ContainsKey(row2.deity.ToLowerInvariant())) 
					{
						Debug.Log(row2.id + "/" + row2.Name + "/follower/" + row2.deity);
					}

DOMAIN

public class Domain : EClass

cs

	public Sprite GetSprite()
	{
		string text = source.alias.Remove(0, 3).ToLower(); 
		string text = source.alias.Remove(0, 3).ToLowerInvariant(); 
		return ResourceCache.Load<Sprite>("Media/Graphics/Image/Faction/" + text);
	}
}

ENC

public class ENC

cs

	public const int mod_ammo_recover = 604;

	public const int negateShockwave = 430; 
	public const int seeInvisible = 416; 

	public const int breathing = 429; 
	public const int loving = 417; 

	public const int allNeckHunt = 428; 
	public const int innocence = 418; 

	public const int negateNeckHunt = 427; 
	public const int encTail = 419; 

	public const int negateConfusion = 425; 
	public const int negatePoison = 420; 

	public const int negateSleep = 424; 
	public const int negateBlind = 421; 

	public const int negateFear = 423; 
	public const int invisibility = 415; 

	public const int negateParalysis = 422;

	public const int negateBlind = 421; 
	public const int negateSleep = 424; 

	public const int negatePoison = 420; 
	public const int negateConfusion = 425; 

	public const int encTail = 419; 
	public const int negateNeckHunt = 427; 

	public const int innocence = 418; 
	public const int allNeckHunt = 428; 

	public const int loving = 417; 
	public const int breathing = 429; 

	public const int seeInvisible = 416; 
	public const int negateShockwave = 430; 

	public const int invisibility = 415; 
	public const int negateFear = 423; 
	public const int defense_range = 435; 

	public const int encHit = 414;

	public const int slowCorruption = 412; 
	public const int encSpell = 411; 

	public const int counter = 380;

	public const int basher = 381;

	public const int rusher = 382; 
	public const int negateTeleport = 400;

	public const int levitation = 401;

	public const int searchRange = 402;

	public const int expMod = 403; 
	public const int slowCorruption = 412; 

	public const int defense_range = 435; 
	public const int expMod = 403; 

	public const int weightMod = 404; 
	public const int slowDecay = 405; 

	public const int resMutation = 406;

public class ENC

cs

	public const int throwReturn = 410;

	public const int encSpell = 411; 
	public const int slowDecay = 405; 
	public const int weightMod = 404; 

	public const int guts = 436;

public class ENC

cs

	public const int bane_animal = 463;

	public const int negateParry = 439; 
	public const int bane_man = 464; 
	public const int sustain_STR = 440;

	public const int sustain_END = 441;

	public const int sustain_DEX = 442;

	public const int sustain_LER = 444; 
	public const int sustain_WIL = 445; 
	public const int sustain_PER = 443;

	public const int sustain_CHA = 447; 
	public const int sustain_LER = 444; 

	public const int bane_fairy = 462; 
	public const int sustain_MAG = 446; 
	public const int sustain_WIL = 445; 

	public const int sustain_figure = 450;

	public const int bane_dragon = 460;

	public const int negateParry = 439; 
	public const int bane_undead = 461;

	public const int sustain_MAG = 446; 
	public const int bane_fairy = 462; 
	public const int sustain_CHA = 447; 
	public const int bane_man = 464; 

	public static readonly int[] IDS = new int[99] 
	public static readonly int[] IDS = new int[100] 
	{
		651, 650, 641, 640, 624, 609, 622, 621, 608, 620,
		652, 623, 653, 851, 655, 656, 660, 661, 662, 663,
		664, 665, 666, 850, 607, 865, 852, 654, 606, 426,
		604, 430, 429, 428, 427, 425, 424, 423, 422, 421, 
		420, 419, 418, 417, 416, 415, 414, 412, 380, 381, 
		400, 401, 402, 403, 435, 404, 406, 605, 408, 409, 
		410, 411, 405, 436, 407, 438, 467, 468, 480, 481, 
		482, 483, 484, 485, 486, 488, 600, 601, 602, 603, 
		437, 466, 465, 487, 463, 439, 464, 440, 441, 442, 
		444, 445, 443, 447, 462, 450, 460, 461, 446
		604, 416, 417, 418, 419, 420, 421, 415, 422, 424, 
		425, 427, 428, 429, 430, 423, 435, 414, 411, 380, 
		381, 382, 400, 401, 402, 412, 403, 405, 406, 605, 
		408, 409, 410, 404, 436, 407, 438, 467, 468, 480, 
		481, 482, 483, 484, 485, 486, 488, 600, 601, 602, 
		603, 437, 466, 465, 487, 463, 440, 441, 442, 443, 
		444, 446, 445, 450, 460, 439, 461, 462, 447, 464
	};
}

FACTION

``

cs

public class FACTION
{
	public const int bfHill = 3603; 
	public const int bfForest = 3601;

	public const int bfSnow = 3602;

	public const int bfHill = 3603; 
	public const int bfFertile = 3700; 

	public const int bfSea = 3605;

	public const int bfUndersea = 3606;

	public const int bfRuin = 3702; 
	public const int bfPlain = 3600;

	public const int bfFertile = 3700; 
	public const int bfGeyser = 3701;

	public const int bfRuin = 3702; 
	public const int bfBeach = 3604;

	public const int bfCave = 3500;

public class FACTION

cs

	public const int bfFish = 3706;

	public const int fAdmin = 2115; 
	public const int fEducation = 2116; 

	public const int actBuildInspect = 4006;

public class FACTION

cs

	public const int bfHunt = 3705;

	public const int fConstruction = 2003; 
	public const int fAdmin = 2115; 

	public const int fEducation = 2116; 
	public const int fConstruction = 2003; 

	public static readonly int[] IDS = new int[53]
	{
		3601, 3602, 3603, 3605, 3606, 3702, 3600, 3700, 3701, 3604, 
		3603, 3601, 3602, 3700, 3605, 3606, 3600, 3701, 3702, 3604, 
		3500, 2201, 2206, 2205, 2204, 2203, 2202, 2200, 2120, 2119,
		2117, 3703, 2118, 2207, 3704, 3805, 3706, 2115, 4006, 4005, 
		2117, 3703, 2118, 2207, 3704, 3805, 3706, 2116, 4006, 4005, 
		4004, 4003, 4002, 4001, 4000, 3900, 3804, 3803, 3802, 3801,
		3800, 3784, 3783, 3782, 3781, 3780, 3710, 3709, 3708, 3707,
		3705, 2003, 2116
		3705, 2115, 2003
	};
}
public class Faction : EClass

FEAT

public class FEAT

cs

	public const int featHardy = 1630;

	public const int featParty = 1645; 
	public const int featSPD = 1629;

	public const int featLuck = 1628; 
	public const int featCHA = 1627;

	public const int featWIL = 1626;

public class FEAT

cs

	public const int featHealer = 1422;

	public const int featLuck = 1628; 
	public const int featManaMeat = 1421;

	public const int featParty = 1645; 
	public const int featExecutioner = 1420; 
	public const int featLonelySoul = 1646;

	public const int featRapidMagic = 1648;

public class FEAT

cs

	public const int featUndead = 1210;

	public const int featSummoner = 1647; 
	public const int featSnail = 1211;

	public const int featFairyResist = 1212; 
	public const int featElea = 1213; 
	public const int featManaPrecision = 1214;

	public const int featFisher = 1659;

public class FEAT

cs

	public const int featDefender = 1649;

	public const int featFairyResist = 1212; 
	public const int featExecutioner = 1420; 
	public const int featSummoner = 1647; 

	public const int featElea = 1213; 
	public const int featMilitant = 1419; 

	public const int featSwordsage = 1418; 
	public const int featLooter = 1660; 

	public const int featMeatCushion = 1241; 
	public const int featWitch = 1417; 

	public const int featGeneSlot = 1242;

	public const int featEternalYouth = 1243;

	public const int featCentaur = 1244; 
	public const int featSevenSense = 1245; 
	public const int featGod_element1 = 1300;

	public const int featGod_earth1 = 1305;

public class FEAT

cs

	public const int featGod_machine1 = 1315;

	public const int featGod_healing1 = 1320; 
	public const int featGod_harvest1 = 1325;

	public const int featGod_luck1 = 1330; 
	public const int featGod_harmony1 = 1335;

	public const int featGod_oblivion1 = 1340;

public class FEAT

cs

	public const int featPianist = 1405;

	public const int featTourist = 1406; 
	public const int featMeatCushion = 1241; 

	public const int featMassSummoner = 1240;

	public const int featPaladin = 1407; 
	public const int featDemon = 1239;

	public const int featRoran = 1237; 
	public const int featElder = 1238; 

	public const int featMilitant = 1419; 
	public const int featSwordsage = 1418; 

	public const int featMetal = 1218;

public class FEAT

cs

	public const int featUnderground = 1226;

	public const int featServant = 1227; 
	public const int featTourist = 1406; 

	public const int featDemigod = 1228; 
	public const int featServant = 1227; 

	public const int featLittleOne = 1229;

	public const int featAdam = 1230;

	public const int featGolem = 1217; 
	public const int featNirvana = 1231;

	public const int featBaby = 1232;

	public const int featGolem = 1217; 
	public const int featCosmicHorror = 1233;

	public const int featHeavyEater = 1234;

public class FEAT

cs

	public const int featNorland = 1236;

	public const int featElder = 1238; 
	public const int featRoran = 1237; 

	public const int featPaladin2 = 1408; 
	public const int featDemigod = 1228; 

	public const int featGod_luck1 = 1330; 
	public const int featPaladin = 1407; 
	public const int featGod_healing1 = 1320; 
	public const int featBoost = 1409; 

	public const int featReboot = 1410;

public class FEAT

cs

	public const int featWhiteVixen = 1414;

	public const int featFoxMaid = 1415; 
	public const int featWitch = 1417; 
	public const int featInquisitor = 1416;

	public const int featBoost = 1409; 
	public const int featFoxMaid = 1415; 
	public const int featPaladin2 = 1408; 

	public static readonly int[] IDS = new int[119] 
	public static readonly int[] IDS = new int[122] 
	{
		1216, 1644, 1643, 1642, 1641, 1640, 1636, 1635, 1634, 1633,
		1632, 1631, 1630, 1645, 1629, 1627, 1626, 1625, 1624, 1623, 
		1622, 1621, 1620, 1612, 1611, 1610, 1422, 1628, 1421, 1646, 
		1648, 1215, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 
		1208, 1209, 1210, 1647, 1211, 1214, 1659, 1658, 1657, 1656, 
		1655, 1654, 1653, 1652, 1651, 1650, 1649, 1212, 1420, 1213, 
		1418, 1241, 1242, 1243, 1300, 1305, 1310, 1315, 1320, 1325, 
		1335, 1340, 1345, 1350, 1355, 1400, 1401, 1402, 1403, 1404, 
		1405, 1406, 1240, 1407, 1239, 1237, 1419, 1218, 1219, 1220, 
		1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 
		1217, 1231, 1232, 1233, 1234, 1235, 1236, 1238, 1408, 1330, 
		1410, 1411, 1412, 1413, 1414, 1415, 1417, 1416, 1409
		1632, 1631, 1630, 1629, 1628, 1627, 1626, 1625, 1624, 1623, 
		1622, 1621, 1620, 1612, 1611, 1610, 1422, 1421, 1645, 1420, 
		1646, 1648, 1215, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 
		1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1659, 1658, 
		1657, 1656, 1655, 1654, 1653, 1652, 1651, 1650, 1649, 1647, 
		1419, 1660, 1417, 1242, 1243, 1244, 1245, 1300, 1305, 1310, 
		1315, 1325, 1330, 1335, 1340, 1345, 1350, 1355, 1400, 1401, 
		1402, 1403, 1404, 1405, 1241, 1240, 1239, 1238, 1418, 1218, 
		1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1406, 1227, 
		1229, 1230, 1231, 1232, 1217, 1233, 1234, 1235, 1236, 1237, 
		1228, 1407, 1320, 1409, 1410, 1411, 1412, 1413, 1414, 1416, 
		1415, 1408
	};
}
public class Feat : Element

public List<string> Apply(int a, ElementContainer owner, bool hint = false)

cs
	}
	switch (id)
	{
	case 1660: 
		featRef[0] = (a * 25).ToString() ?? ""; 
		break; 
	case 1206:
		ModBase(78, -a * 10, hide: false);
		break;

FOOD

public class FOOD

cs

	public const int food_love = 703;

	public const int food_CHA = 700; 
	public const int gainWeight = 705;

	public const int food_bug = 704; 
	public const int loseWeight = 706; 

	public const int kirimi = 707; 
	public const int food_bug = 704; 

	public const int food_human = 708;

	public const int food_undead = 709; 
	public const int creativeDish = 764; 

	public const int justcooked = 757; 
	public const int kirimi = 707; 

	public const int food_god = 758;

	public const int creativeDish = 764; 
	public const int food_CHA = 700; 

	public const int loseWeight = 706; 
	public const int food_undead = 709; 
	public const int justcooked = 757; 

	public static readonly int[] IDS = new int[13]
	{
		701, 702, 703, 700, 705, 704, 707, 708, 709, 757, 
		758, 764, 706
		701, 702, 703, 705, 706, 704, 708, 764, 707, 758, 
		700, 709, 757
	};
}

Game

public void OnLoad()

cs
		{
		}
	}
	if (version.IsBelow(0, 23, 195)) 
	{ 
		Zone zone = spatials.Find("startVillage2"); 
		if (zone != null && zone.visitCount > 0) 
		{ 
			world.SendPackage(ThingGen.CreateParcel(null, ThingGen.CreateCassette(113), ThingGen.CreateCassette(12))); 
		} 
	} 
	if (version.IsBelow(0, 23, 52))
	{
		player.flags.toggleHotbarHighlightActivated = true;

InvOwner

public bool sell

cs
			}
		}

		public string IDCurrency => currency.ToString().ToLower(); 
		public string IDCurrency => currency.ToString().ToLowerInvariant(); 

		public CurrencyType currency => Trader.currency;

LayerAbility

public void SelectGroup(string id)

cs
		},
		onList = delegate(UIList.SortMode m)
		{
			ELayer.player.pref.sortAbility = m; 
			List<Element> list = new List<Element>();
			foreach (Element value in ELayer.pc.elements.dict.Values)
			{

+LayerCalendar

File Created
cs
public class LayerCalendar : ELayer
{
}

MUTATION

public class MUTATION

cs
public class MUTATION
{
	public const int mutationStrN = 1521; 
	public const int mutationStr = 1520; 
	public const int mutationSkin = 1510; 

	public const int mutationSpeedN = 1519; 
	public const int mutationSkinN = 1511; 

	public const int mutationRegenN = 1517; 
	public const int mutationEye = 1512; 

	public const int mutationDex = 1514; 
	public const int mutationEyeN = 1513; 

	public const int mutationDexN = 1515;

	public const int mutationEyeN = 1513; 
	public const int mutationRegen = 1516; 

	public const int mutationEye = 1512; 
	public const int mutationRegenN = 1517; 

	public const int mutationSkinN = 1511; 
	public const int mutationCha = 1522; 

	public const int mutationSkin = 1510; 
	public const int mutationSpeedN = 1519; 

	public const int mutationRegen = 1516; 
	public const int mutationStr = 1520; 

	public const int mutationCha = 1522; 
	public const int mutationStrN = 1521; 
	public const int mutationDex = 1514; 

	public const int mutationSpeed = 1518;

public class MUTATION

cs

	public const int etherEye = 1553;

	public const int mutationCold = 1526; 
	public const int mutationBrainN = 1525; 

	public const int mutationColdN = 1527; 
	public const int mutationCold = 1526; 

	public const int mutationLightning = 1528;

public class MUTATION

cs

	public const int mutationBody = 1530;

	public const int mutationBrainN = 1525; 
	public const int mutationColdN = 1527; 

	public const int mutationHair = 1532;

public class MUTATION

cs

	public static readonly int[] IDS = new int[40]
	{
		1521, 1520, 1519, 1517, 1514, 1515, 1513, 1512, 1511, 1510, 
		1516, 1522, 1518, 1524, 1565, 1564, 1563, 1562, 1523, 1560, 
		1559, 1558, 1557, 1556, 1555, 1554, 1561, 1552, 1553, 1526, 
		1527, 1528, 1529, 1530, 1525, 1532, 1533, 1550, 1551, 1531
		1510, 1511, 1512, 1513, 1515, 1516, 1517, 1522, 1519, 1520, 
		1521, 1514, 1518, 1524, 1565, 1564, 1563, 1562, 1523, 1560, 
		1559, 1558, 1557, 1556, 1555, 1554, 1561, 1552, 1553, 1525, 
		1526, 1528, 1529, 1530, 1527, 1532, 1533, 1550, 1551, 1531
	};
}
public class Mutation : Feat

POLICY

public class POLICY

cs
{
	public const int suite_room = 2813;

	public const int license_furniture = 2819; 
	public const int mass_exhibition = 2814;

	public const int platinum_ticket = 2815;

public class POLICY

cs

	public const int license_food = 2818;

	public const int license_furniture = 2819; 
	public const int license_general = 2820;

	public const int egg_fan = 2826; 
	public const int celeb = 2822;

	public const int legendary_exhibition = 2823;

public class POLICY

cs

	public const int milk_fan = 2825;

	public const int egg_fan = 2826; 
	public const int breed_season = 2827;

	public const int license_slaver = 2828;

public class POLICY

cs

	public const int tourist_safety = 2811;

	public const int speed_growth = 2516; 
	public const int stop_growth = 2515; 

	public const int home_discount = 2800;

public class POLICY

cs

	public const int weed_no = 2703;

	public const int stop_growth = 2515; 
	public const int speed_growth = 2516; 

	public const int taxTransfer = 2705;

public class POLICY

cs

	public static readonly int[] IDS = new int[51]
	{
		2813, 2814, 2815, 2816, 2817, 2818, 2819, 2820, 2822, 2823, 
		2824, 2825, 2826, 2827, 2828, 2812, 2821, 2811, 2516, 2800, 
		2813, 2819, 2814, 2815, 2816, 2817, 2818, 2820, 2826, 2822, 
		2823, 2824, 2825, 2827, 2828, 2812, 2821, 2811, 2515, 2800, 
		2508, 2509, 2510, 2511, 2505, 2504, 2503, 2502, 2501, 2500,
		2810, 2507, 2512, 2513, 2514, 2506, 2700, 2702, 2703, 2515, 
		2810, 2507, 2512, 2513, 2514, 2506, 2700, 2702, 2703, 2516, 
		2705, 2706, 2707, 2704, 2709, 2710, 2711, 2712, 2715, 2701,
		2708
	};

Player

public int loytelMartLv

cs
			}
		}

		public int reward_gould 
		{ 
			get 
			{ 
				return ints[19]; 
			} 
			set 
			{ 
				ints[19] = value; 
			} 
		} 
		public int reward_killkill 
		{ 
			get 
			{ 
				return ints[20]; 
			} 
			set 
			{ 
				ints[20] = value; 
			} 
		} 
		[OnSerializing]
		private void _OnSerializing(StreamingContext context)
		{

public void DreamSpell()

cs
		int mtp = ((num == 0) ? 100 : (75 + num * 25));
		if (num > 0 || element2 == null || element2.vPotential == 0)
		{
			Msg.Say("dream_spell", EClass.sources.elements.alias[row.aliasRef].GetText("altname").Split(',')[0].ToLower()); 
			Msg.Say("dream_spell", EClass.sources.elements.alias[row.aliasRef].GetText("altname").Split(',')[0].ToLowerInvariant()); 
			EClass.pc.GainAbility(row.id, mtp);
		}
	}

SKILL

public class SKILL

cs

	public const int tactics = 132;

	public const int fishing = 245; 
	public const int marksman = 133; 

	public const int climbing = 242;

public class SKILL

cs

	public const int strategy = 135;

	public const int eyeofmind = 134; 
	public const int fishing = 245; 

	public const int twowield = 131;

public class SKILL

cs

	public const int gathering = 250;

	public const int marksman = 133; 
	public const int eyeofmind = 134; 

	public const int blacksmith = 256;

public class SKILL

cs

	public static readonly int[] IDS = new int[133]
	{
		50, 109, 110, 111, 120, 122, 123, 130, 132, 245, 
		50, 109, 110, 111, 120, 122, 123, 130, 132, 133, 
		242, 241, 240, 237, 235, 230, 227, 226, 225, 220,
		210, 200, 152, 151, 150, 135, 134, 131, 207, 102, 
		210, 200, 152, 151, 150, 135, 245, 131, 207, 102, 
		107, 71, 70, 68, 67, 66, 65, 72, 64, 61,
		60, 57, 56, 55, 51, 62, 73, 74, 75, 106,
		105, 104, 103, 101, 100, 93, 92, 91, 90, 80,
		79, 78, 77, 76, 108, 250, 133, 256, 916, 917, 
		79, 78, 77, 76, 108, 250, 134, 256, 916, 917, 
		918, 919, 920, 921, 922, 923, 924, 925, 926, 950,
		951, 952, 915, 953, 956, 957, 958, 959, 960, 961,
		962, 963, 964, 965, 970, 971, 972, 255, 954, 914,

Scene

public void OnUpdate()

cs
							}
							if (EMono.game.activeZone == zone)
							{
								EMono.pc.Teleport(EMono._zone.GetSpawnPos(EMono.pc, ZoneTransition.EnterState.Return), silent: true, force: true); 
								EMono.pc.Teleport(EMono._zone.GetSpawnPos(EMono.pc, ZoneTransition.EnterState.Return).GetNearestPoint() ?? EMono._map.GetCenterPos(), silent: true, force: true); 
							}
							else
							{

StatsMana

public override void Mod(int a)

cs
		if (cC.IsAliveInCurrentZone)
		{
			cC.elements.ModExp(303, Mathf.Clamp(-a * 10, 10, 200));
			if (cC.HasElement(1245) && !cC.HasCooldown(1245)) 
			{ 
				cC.AddCooldown(1245); 
				cC.AddCondition<ConSevenSense>(cC.Power); 
				cC.Cure(CureType.Boss); 
				cC.HealHP(cC.MaxHP / 2); 
			} 
		}
	}
}

ThingGen

public static Thing CreatePerfume(int ele, int num = 1)

cs
		return thing;
	}

	public static Thing CreateCassette(int id) 
	{ 
		Thing thing = Create("856"); 
		thing.refVal = id; 
		return thing; 
	} 
	public static Thing CreateLetter(string idLetter)
	{
		Thing thing = Create("letter");

TraitTape

public override void SetName(ref string s)

cs

	public override void OnCreate(int lv)
	{
		if (EClass._map.plDay != null && EClass._map.plDay.list.Count > 0) 
		if (EClass.core.IsGameStarted && EClass._map.plDay != null && EClass._map.plDay.list.Count > 0) 
		{
			owner.refVal = EClass._map.plDay.list[0].data.id;
		}

Zone

public Point GetRandomVisitPos(Chara c)

cs
		{
			point = map.bounds.GetRandomSurface(centered: false, walkable: true, !IsPCFaction && !(this is Zone_Civilized)) ?? map.bounds.GetRandomPoint();
		}
		return point.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false) ?? EClass._map.GetCenterPos(); 
		return point.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false) ?? EClass._map.GetCenterPos().GetNearestPoint(); 
	}

	public void AddGlobalCharasOnActivate()