Skip to content

EA 23.177 Nightly Patch 2

August 11, 2025

38 files modified.

Important Changes

None.

ABILITY

``

cs

public class ABILITY
{
	public const int ActInstall = 5046; 
	public const int AI_Drink = 5045; 
	public const int ActPick = 5047;

	public const int ActInstall = 5046; 
	public const int ActItem = 5048;

	public const int AI_OpenLock = 5049;

public class ABILITY

cs

	public const int ActQuickCraft = 6012;

	public const int ActChat = 5044; 
	public const int AI_PassTime = 6013;

	public const int ActRide = 6018; 
	public const int AI_Drink = 5045; 
	public const int AI_SelfHarm = 6015; 

	public const int ActParasite = 6019;

public class ABILITY

cs

	public const int ActWeaken = 6610;

	public const int AI_SelfHarm = 6015; 
	public const int ActFear = 6611;

	public const int AI_TendAnimal = 5043; 
	public const int ActRide = 6018; 

	public const int AI_Read = 5041; 
	public const int ActTouchSleep = 6612; 

	public const int TaskCut = 5011; 
	public const int ActChat = 5044; 
	public const int ActKick = 5042; 

	public const int AI_Goto = 5012;

public class ABILITY

cs

	public const int AI_Eat = 5024;

	public const int ActKick = 5042; 
	public const int AI_Grab = 5025;

	public const int GoalSleep = 5027; 
	public const int AI_TendAnimal = 5043; 
	public const int AI_Haul = 5026; 

	public const int ActReleaseHeld = 5028;

public class ABILITY

cs

	public const int ActRanged = 5040;

	public const int AI_Haul = 5026; 
	public const int AI_Read = 5041; 

	public const int ActTouchSleep = 6612; 
	public const int GoalSleep = 5027; 

	public const int ActCurse = 6600; 
	public const int ActTouchDrown = 6613; 

	public const int ActGazeDim = 6620; 
	public const int ActCurse = 6600; 

	public const int breathe_Lightning = 50202; 
	public const int ActGazeInsane = 6621; 

	public const int breathe_Darkness = 50203;

public class ABILITY

cs

	public const int breathe_Chaos = 50210;

	public const int ActTouchDrown = 6613; 
	public const int breathe_Magic = 50211; 

	public const int breathe_Ether = 50212; 
	public const int ActGazeDim = 6620; 

	public const int breathe_Acid = 50213;

	public const int breathe_Cold = 50201; 
	public const int breathe_Cut = 50214;

	public const int breathe_Void = 50216; 
	public const int breathe_Lightning = 50202; 
	public const int breathe_Impact = 50215; 

	public const int ActWait = 5000;

public class ABILITY

cs

	public const int TaskDig = 5010;

	public const int breathe_Impact = 50215; 
	public const int TaskCut = 5011; 

	public const int breathe_Fire = 50200; 
	public const int breathe_Void = 50216; 

	public const int breathe_Magic = 50211; 
	public const int breathe_Cold = 50201; 

	public const int ActHeadpat = 6904; 
	public const int breathe_Ether = 50212; 

	public const int ActScream = 6631; 
	public const int breathe_ = 7000; 

	public const int ActInsult = 6630; 
	public const int ActGazeMutation = 6622; 

	public const int ActCatHuffing = 6627; 
	public const int ActGazeMana = 6623; 

	public const int ActDrainBlood = 6626;

	public const int ActStealFood = 6641; 
	public const int ActCatHuffing = 6627; 

	public const int ActGazeInsane = 6621; 
	public const int ActInsult = 6630; 

	public const int ActGazeMana = 6623; 
	public const int ActScream = 6631; 

	public const int ActStealMoney = 6642; 
	public const int ActSteal = 6640; 

	public const int ActNeckHunt = 6650; 
	public const int ActStealFood = 6641; 

	public const int ActDropMine = 6660; 
	public const int breathe_Fire = 50200; 

	public const int breathe_ = 7000; 
	public const int ActStealMoney = 6642; 
	public const int ActDropMine = 6660; 

	public const int ActThrowPotion = 6661;

	public const int ActMultiHit = 6663; 
	public const int ActSwarm = 6662; 
	public const int ActNeckHunt = 6650; 

	public const int ActBladeStorm = 6664;

	public const int StTaunt = 6700; 
	public const int ActHeadpat = 6904; 

	public const int StManaCost = 6720; 
	public const int ActKizuamiTrick = 6903; 

	public const int SongSleep = 6750; 
	public const int ActLulwyTrick = 6902; 

	public const int SongTulip = 6751; 
	public const int ActJureHeal = 6901; 

	public const int ActManaAbsorb = 6900;

	public const int ActJureHeal = 6901; 
	public const int SongTulip = 6751; 

	public const int ActLulwyTrick = 6902; 
	public const int SongSleep = 6750; 

	public const int ActGazeMutation = 6622; 
	public const int ActMultiHit = 6663; 

	public const int ActKizuamiTrick = 6903; 
	public const int StManaCost = 6720; 

	public const int ActSwarm = 6662; 
	public const int StTaunt = 6700; 

	public const int ActSteal = 6640; 
	public const int ActSummonSpecial = 6800; 

	public static readonly int[] IDS = new int[124] 
	public static readonly int[] IDS = new int[125] 
	{
		5046, 5045, 5047, 5048, 5049, 5050, 5051, 5052, 5053, 5054, 
		5055, 6001, 6003, 6011, 6012, 5044, 6013, 6018, 6019, 6020, 
		6050, 6400, 6410, 6420, 6450, 6500, 6601, 6602, 6603, 6604, 
		6610, 6015, 6611, 5043, 5041, 5011, 5012, 5013, 5014, 5015, 
		5016, 5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024, 5042, 
		5025, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034, 5035, 
		5036, 5037, 5038, 5039, 5040, 5026, 6612, 6600, 6620, 50202, 
		50203, 50204, 50205, 50206, 50207, 50208, 50209, 50210, 6613, 50212, 
		50213, 50201, 50214, 50216, 5000, 5001, 5002, 5003, 5004, 5005, 
		5006, 5007, 5008, 5009, 5010, 50215, 50200, 50211, 6904, 6631, 
		6630, 6627, 6626, 6641, 6621, 6623, 6642, 6650, 6660, 7000, 
		6661, 6663, 6664, 6700, 6720, 6750, 6751, 6900, 6901, 6902, 
		6622, 6903, 6662, 6640
		5047, 5046, 5048, 5049, 5050, 5051, 5052, 5053, 5054, 5055, 
		6001, 6003, 6011, 6012, 6013, 5045, 6015, 6019, 6020, 6050, 
		6400, 6410, 6420, 6450, 6500, 6601, 6602, 6603, 6604, 6610, 
		6611, 6018, 6612, 5044, 5042, 5012, 5013, 5014, 5015, 5016, 
		5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024, 5025, 5043, 
		5026, 5028, 5029, 5030, 5031, 5032, 5033, 5034, 5035, 5036, 
		5037, 5038, 5039, 5040, 5041, 5027, 6613, 6600, 6621, 50203, 
		50204, 50205, 50206, 50207, 50208, 50209, 50210, 50211, 6620, 50213, 
		50214, 50202, 50215, 5000, 5001, 5002, 5003, 5004, 5005, 5006, 
		5007, 5008, 5009, 5010, 5011, 50216, 50201, 50212, 7000, 6622, 
		6623, 6626, 6627, 6630, 6631, 6640, 6641, 50200, 6642, 6660, 
		6661, 6662, 6650, 6664, 6904, 6903, 6902, 6901, 6900, 6751, 
		6750, 6663, 6720, 6700, 6800
	};
}
public class Ability : Act

ActEffect

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

cs
	{
	case EffectId.Earthquake:
	{
		List<Point> list7 = EClass._map.ListPointsInCircle(CC.pos, 12f, mustBeWalkable: false); 
		if (list7.Count == 0) 
		List<Point> list5 = EClass._map.ListPointsInCircle(CC.pos, 12f, mustBeWalkable: false); 
		if (list5.Count == 0) 
		{
			list7.Add(CC.pos.Copy()); 
			list5.Add(CC.pos.Copy()); 
		}
		CC.Say("spell_earthquake", CC, element.Name.ToLower());
		TryDelay(delegate

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

cs
			Shaker.ShakeCam("ball");
		}
		EClass.Wait(1f, CC);
		DamageEle(CC, id, power, element, list7, actRef, "spell_earthquake"); 
		DamageEle(CC, id, power, element, list5, actRef, "spell_earthquake"); 
		break;
	}
	case EffectId.Meteor:

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

cs
		EffectMeteor.Create(cc.pos, 6, 10, delegate
		{
		});
		List<Point> list4 = EClass._map.ListPointsInCircle(CC.pos, 10f); 
		if (list4.Count == 0) 
		List<Point> list = EClass._map.ListPointsInCircle(CC.pos, 10f); 
		if (list.Count == 0) 
		{
			list4.Add(CC.pos.Copy()); 
			list.Add(CC.pos.Copy()); 
		}
		CC.Say("spell_ball", CC, element.Name.ToLower());
		TryDelay(delegate

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

cs
			Shaker.ShakeCam("ball");
		}
		EClass.Wait(1f, CC);
		DamageEle(CC, id, power, element, list4, actRef, "spell_ball"); 
		DamageEle(CC, id, power, element, list, actRef, "spell_ball"); 
		return;
	}
	case EffectId.Hand:

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

cs
	case EffectId.DrainMana:
	case EffectId.Sword:
	{
		List<Point> list = new List<Point>(); 
		list.Add(tp.Copy()); 
		List<Point> list7 = new List<Point>(); 
		list7.Add(tp.Copy()); 
		EClass.Wait(0.3f, CC);
		TryDelay(delegate
		{
			CC.PlaySound("spell_hand");
		});
		Chara cC = CC;
		EffectId id3 = id; 
		EffectId id4 = id; 
		Element e = element;
		ActRef actref = actRef;
		object lang;

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

cs
			lang = "";
			break;
		}
		if (!DamageEle(cC, id3, power, e, list, actref, (string)lang)) 
		if (!DamageEle(cC, id4, power, e, list7, actref, (string)lang)) 
		{
			CC.Say("spell_hand_miss", CC, element.Name.ToLower());
		}

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

cs
	}
	case EffectId.Arrow:
	{
		List<Point> list5 = new List<Point>(); 
		list5.Add(tp.Copy()); 
		List<Point> list4 = new List<Point>(); 
		list4.Add(tp.Copy()); 
		CC.Say("spell_arrow", CC, element.Name.ToLower());
		EClass.Wait(0.5f, CC);
		TryDelay(delegate
		{
			CC.PlaySound("spell_arrow");
		});
		DamageEle(CC, id, power, element, list5, actRef, "spell_arrow"); 
		DamageEle(CC, id, power, element, list4, actRef, "spell_arrow"); 
		return;
	}
	case EffectId.Summon:
	{
		if (actRef.n1 == "special") 
		{ 
			SE.Play("warhorn"); 
			Msg.Say("warhorn"); 
		} 
		CC.Say("summon_ally", CC);
		if (EClass._zone.CountMinions(CC) >= CC.MaxSummon || CC.c_uidMaster != 0)
		{
			CC.Say("summon_ally_fail", CC);
			return;
		}
		string id4 = actRef.n1; 
		string id3 = actRef.n1; 
		int num3 = 1;
		int num4 = -1;
		int radius = 3;
		bool flag3 = false;
		bool flag4 = actRef.n1 == "special"; 
		int num5 = -1;
		switch (actRef.n1)
		{

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

cs
			num3 = 1 + EClass.rnd(2);
			break;
		case "special_force":
			id4 = "army_palmia"; 
			id3 = "army_palmia"; 
			num3 = 4 + EClass.rnd(2);
			num5 = EClass._zone.DangerLv;
			break;

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

cs
			num4 = 20 + EClass.rnd(10);
			radius = 1;
			break;
		case "special":
			CC.SetInt(70, EClass.world.date.GetRaw() + 1440); 
			num3 = Mathf.Clamp(7 + CC.LV / 100, 4, 20); 
			num5 = CC.LV; 
			break; 
		}
		num3 += CC.Evalue(1240);
		for (int j = 0; j < num3; j++)

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

cs
			}
			chara = actRef.n1 switch
			{
				"special" => (j != 0 || CC.HasMinion("imolonac") || CC.HasMinion("ygolonac")) ? CharaGen.Create("hound", 50) : CharaGen.Create((EClass.rnd(20) == 0) ? "imolonac" : "ygolonac"),  
				"yeek" => CharaGen.CreateFromFilter(SpawnListChara.Get("summon_yeek", (SourceChara.Row r) => r.race == "yeek"), power / 10), 
				"orc" => CharaGen.CreateFromFilter(SpawnListChara.Get("summon_orc", (SourceChara.Row r) => r.race == "orc"), power / 10), 
				"pawn" => CharaGen.CreateFromFilter("c_pawn", power / 10),

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

cs
				"fire" => CharaGen.CreateFromElement("Fire", power / 10), 
				"fish" => CharaGen.CreateFromFilter(SpawnListChara.Get("summon_fish", (SourceChara.Row r) => r.ContainsTag("water") || r.model.Chara.race.tag.Contains("water")), power / 10), 
				"octopus" => CharaGen.CreateFromFilter(SpawnListChara.Get("summon_octopus", (SourceChara.Row r) => r.race == "octopus"), power / 10), 
				_ => CharaGen.Create(id4, power / 10),  
				_ => CharaGen.Create(id3, power / 10),  
			};
			if (chara == null)
			{
				continue;
			}
			if (chara.rarity >= Rarity.Legendary) 
			if (chara.rarity >= Rarity.Legendary && !flag4) 
			{
				j--;
				continue;

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

cs
				radius2 = 1.5f;
			}
		}
		bool flag4 = id == EffectId.Explosive || id == EffectId.Suicide; 
		List<Point> list6 = EClass._map.ListPointsInCircle(cc.pos, radius2, !flag4, !flag4); 
		bool flag5 = id == EffectId.Explosive || id == EffectId.Suicide; 
		List<Point> list6 = EClass._map.ListPointsInCircle(cc.pos, radius2, !flag5, !flag5); 
		if (list6.Count == 0)
		{
			list6.Add(cc.pos.Copy());

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

cs
		list8.Remove(CC);
		list8.Insert(0, CC);
	}
	bool flag5 = true; 
	bool flag6 = true; 
	foreach (Card item2 in list8)
	{
		if (tc == null || item2 == tc)

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

cs
			{
				return;
			}
			flag5 = false; 
			flag6 = false; 
		}
	}
	if (flag5) 
	if (flag6) 
	{
		CC.SayNothingHappans();
	}

ActRanged

public override bool Perform()

cs
	int chaser = GetWeaponEnc(620);
	if (num > 0)
	{
		numFire += num / 10 + ((num % 10 > EClass.rnd(10)) ? 1 : 0); 
		numFire += Mathf.Min(num / 10 + ((num % 10 > EClass.rnd(10)) ? 1 : 0), 10); 
		numFireWithoutDamageLoss += num / 100 + ((num % 100 > EClass.rnd(100)) ? 1 : 0); 
	}
	numFire += Act.CC.Evalue(1652);
	int num2 = numFire;

ActRide

public static void Ride(Chara host, Chara t, bool parasite = false, bool talk =

cs
		host.SyncRide();
		t.noMove = false;
		host.Refresh();
		WidgetRoster.SetDirty(); 
	}

	public static void Unride(Chara host, Chara mount, bool talk = true)

public static void Unride(Chara host, bool parasite = false, bool talk = true)

cs
		{
			chara.MoveImmediate(randomPoint);
		}
		WidgetRoster.SetDirty(); 
	}
}

BaseListPeople

void AddText(Hobby h, string lang, bool fix)

cs
		{
			for (int i = 0; i < h.source.things.Length; i += 2)
			{
				int num = Mathf.Max(1, h.source.things[i + 1].ToInt() * efficiency * a.homeBranch.GetProductBonus(a) / 100 / 1000); 
				float num = Mathf.Max(1f, (long)h.source.things[i + 1].ToInt() * (long)efficiency * a.homeBranch.GetProductBonus(a) / 100 / 1000); 
				string text3 = h.source.things[i];
				string s = (text3.StartsWith("#") ? EClass.sources.categories.map[text3.Replace("#", "")].GetName() : EClass.sources.cards.map[h.source.things[i]].GetName());
				if (h.source.alias == "Breeding")
				{
					num = a.race.breeder * 100 / 2500;
					num = num * ((!(text3 == "_egg")) ? 1 : 2) / 3; 
					if (a.race.breeder > 0 && num <= 0) 
					num = num * (float)((!(text3 == "_egg")) ? 1 : 2) / 3f; 
					if (a.race.breeder > 0 && num <= 0f) 
					{
						num = 1; 
						num = 1f; 
					}
				}
				t.note.AddText("NoteText_small", "・ " + "work_produce".lang(s.ToTitleCase(), num.ToString() ?? ""));

void AddText(Hobby h, string lang, bool fix)

cs
				{
					SourceElement.Row row = EClass.sources.elements.map[h.source.elements[j]];
					int num2 = h.source.elements[j + 1];
					int num3 = ((num2 < 0 || row.id == 2115 || row.id == 2207) ? (num2 / 10) : Mathf.Max(0, num2 * h.GetEfficiency(a) * a.homeBranch.efficiency / 100 / 1000)); 
					float num3 = ((num2 < 0 || row.id == 2115 || row.id == 2207) ? ((float)(num2 / 10)) : Mathf.Max(0f, (long)num2 * (long)h.GetEfficiency(a) * a.homeBranch.efficiency / 100 / 1000)); 
					t.note.AddText("NoteText_small", "・ " + "workBonus_skill".lang(row.GetName().ToTitleCase(), ((num2 > 0) ? "+" : "") + num3) + ((row.id == 2115 || row.id == 2207) ? (" " + "fixedFactionSkill".lang()) : ""), (num2 >= 0) ? FontColor.Default : FontColor.Bad);
				}
			}

CINT

public class CINT

cs

	public const int daysWithPC = 67;

	public const int dateSpecialSummon = 70; 
	public const int fiamaPet = 100;

	public const int noRestock = 101;

Card

public virtual int GetPrice(CurrencyType currency = CurrencyType.Money, bool sel

cs
			case "hammer_strip":
				return 5000;
			case "helm_chef":
				return 40000; 
				return 25000; 
			}
			break;
		case CurrencyType.Plat:

CardRenderer

public override void Draw(RenderParam p, ref Vector3 v, bool drawShadow)

cs
		}
		p.y += pref.y;
		int shadow = pref.shadow;
		bool flag2 = isChara && owner.isHidden && !EClass.pc.canSeeInvisible && (!EClass.pc.hasTelepathy || !owner.Chara.race.visibleWithTelepathy); 
		bool flag2 = isChara && owner.isHidden && !EClass.pc.canSeeInvisible && (!EClass.pc.hasTelepathy || !owner.Chara.visibleWithTelepathy); 
		if (drawShadow && shadow != 1 && SubPassData.Current.shadow && (!flag2 || owner.IsPC))
		{
			bool flag3 = ((!isChara) ? (owner.dir % 2 == 1) : (owner.dir == 1 || owner.dir == 2));

Chara

public class Chara : Card, IPathfindWalker

cs

	public bool wasInWater;

	public bool visibleWithTelepathy; 
	public SpriteReplacer spriteReplacer;

	private Faction _faction;

public bool CanSee(Card c)

cs
	}
	if (c.isChara)
	{
		if (hasTelepathy && c.Chara.race.visibleWithTelepathy) 
		if (hasTelepathy && c.Chara.visibleWithTelepathy) 
		{
			return true;
		}

public bool CanSee(Card c)

cs

	public bool CanSeeLos(Card c, int dist = -1)
	{
		if (c.isHidden && !canSeeInvisible && (!hasTelepathy || !c.Chara.race.visibleWithTelepathy)) 
		if (c.isHidden && !canSeeInvisible && (!hasTelepathy || !c.Chara.visibleWithTelepathy)) 
		{
			return false;
		}

public void HealAll()

cs

	public void Refresh(bool calledRecursive = false)
	{
		if (ride != null) 
		if (source == null) 
		{ 
			Debug.LogError("source is null"); 
			SetSource(); 
		} 
		if (ride != null && ride.source != null) 
		{
			ride.Refresh(calledRecursive: true);
		}

public void Refresh(bool calledRecursive = false)

cs
	{
		base.isHidden = false;
	}
	visibleWithTelepathy = !IsUndead && !IsMachine && !IsHorror; 
	SetDirtySpeed();
	if (host != null && !calledRecursive) 
	if (host != null && !calledRecursive && host.source != null) 
	{
		host.Refresh(calledRecursive: true);
	}

public void MakeMinion(Chara _master, MinionType type = MinionType.Default)

cs
		Refresh();
	}

	public bool HasMinion(string id) 
	{ 
		foreach (Chara chara in EClass._map.charas) 
		{ 
			if (chara.c_uidMaster == base.uid) 
			{ 
				return true; 
			} 
		} 
		return false; 
	} 
	public void ReleaseMinion()
	{
		base.c_uidMaster = 0;

public override void Die(Element e = null, Card origin = null, AttackSource atta

cs
	enemy = null;
	_cooldowns = null;
	base.isSale = false;
	SetInt(70); 
	EClass._map.props.sales.Remove(this);
	Cure(CureType.Death);
	SetAI(new NoGoal());

CharaRenderer

public void DrawHat()

cs
	}
	RenderObject.currentParam.liquidLv = 0;
	RenderObject.currentParam.x += 0.01f * (float)pref.equipX;
	RenderObject.currentParam.y += num + 0.01f * (float)pref.equipY; 
	RenderObject.currentParam.y += num + 0.01f * (float)(pref.equipY + cardRow.pref.equipY); 
	RenderObject.currentParam.z -= pref.hatY;
	RenderObject.currentParam.tile = cardRow._tiles[owner.uid % cardRow._tiles.Length] * ((!flag) ? 1 : (-1));
	cardRow.renderData.Draw(RenderObject.currentParam);
	RenderObject.currentParam.x -= 0.01f * (float)pref.equipX;
	RenderObject.currentParam.y -= num + 0.01f * (float)pref.equipY; 
	RenderObject.currentParam.y -= num + 0.01f * (float)(pref.equipY + cardRow.pref.equipY); 
	RenderObject.currentParam.z += pref.hatY;
	RenderObject.currentParam.liquidLv = liquidLv;
}

CoreDebug

public void UpdateInput()

cs
		EClass.pc.Pick(ThingGen.CreateSpellbook(8550));
		EClass.pc.Pick(ThingGen.CreatePotion(8550));
		EClass.pc.Pick(ThingGen.CreateSpellbook(9004));
		EClass.pc.Pick(ThingGen.CreateRedBook("advweek_1")); 
		Chara targetChara = EClass.scene.mouseTarget.TargetChara;
		if (targetChara != null)
		{

CoreRef

public class PrefData

cs
		public SourcePref pcc;

		public SourcePref replacer1;
		public SourcePref blockFence; 
		public SourcePref blockStairs; 
		public SourcePref blockWall; 
	}

	public Biomes biomes;

DNA

public void WriteNote(UINote n)

cs
		if (num3 >= 0)
		{
			text2 = text2 + "[" + "*".Repeat(Mathf.Clamp(num3, 1, 5)) + ((num3 > 5) ? "+" : "") + "]";
		} 
		if (EClass.debug.showExtra) 
		{ 
			text2 = text2 + " " + element.Value; 
			if (EClass.debug.showExtra) 
			{ 
				text2 = text2 + " (" + element.Value + ")"; 
			} 
		}
		n.AddText("gene_info".lang(element.Name.ToTitleCase(wholeText: true), text2), color2);
	}

DOMAIN

``

cs

public class DOMAIN
{
	public const int domFaith = 802; 
	public const int domMiracle = 803; 
	public const int domMachine = 809; 
	public const int domEyth = 814; 
	public const int domOblivion = 813; 
	public const int domEarth = 812;

	public const int domHealing = 811; 
	public const int domOblivion = 813; 

	public const int domLuck = 810;

	public const int domMachine = 809; 
	public const int domHarvest = 808;

	public const int domEyth = 814; 
	public const int domFaith = 802; 
	public const int domWind = 807;

	public const int domHarmony = 815; 
	public const int domElement = 806;

	public const int domHarmony = 815; 
	public const int domComm = 805; 
	public const int domHealing = 811; 

	public const int domSurvival = 801;

	public const int domArcane = 804; 
	public const int domMiracle = 803; 

	public const int domComm = 805; 
	public const int domArcane = 804; 

	public const int domTest = 800;

	public static readonly int[] IDS = new int[16]
	{
		802, 803, 809, 814, 813, 812, 811, 810, 808, 807, 
		806, 815, 801, 804, 805, 800
		812, 813, 810, 809, 808, 814, 802, 807, 815, 806, 
		805, 811, 801, 803, 804, 800
	};
}
public class Domain : EClass

ELEMENT

``

cs

public class ELEMENT
{
	public const int roasted = 762; 
	public const int air = 763; 

	public const int comfort = 750; 
	public const int recharge = 761; 
	public const int rare = 751; 

	public const int cute = 752;

public class ELEMENT

cs

	public const int stimulant = 760;

	public const int recharge = 761; 
	public const int air = 763; 
	public const int roasted = 762; 

	public const int rare = 751; 
	public const int comfort = 750; 

	public const int _void = 0;

public class ELEMENT

cs

	public static readonly int[] IDS = new int[35]
	{
		762, 750, 752, 753, 754, 755, 756, 759, 760, 761, 
		763, 751, 0, 3, 1, 2, 5, 10, 11, 12, 
		763, 761, 751, 752, 753, 754, 755, 756, 759, 760, 
		762, 750, 0, 3, 1, 2, 5, 10, 11, 12, 
		13, 14, 16, 17, 18, 15, 21, 22, 23, 24,
		25, 26, 29, 85, 20
	};

ENC

public class ENC

cs

	public const int r_DV = 650;

	public const int r_mana = 641; 
	public const int mod_frustration = 624;

	public const int mod_flurry = 621; 
	public const int mod_cleave = 622;

	public const int mod_feint = 623;

	public const int r_life = 640; 
	public const int noDamage = 654;

	public const int r_life = 640; 
	public const int r_mana = 641; 

	public const int onlyPet = 655;

public class ENC

cs

	public const int convertFire = 850;

	public const int mod_chaser = 620; 
	public const int mod_flurry = 621; 

	public const int convertImpact = 865;

public class ENC

cs

	public const int permaCurse = 656;

	public const int mod_talisman = 609; 
	public const int mod_chaser = 620; 

	public const int negateFear = 423; 
	public const int negateSleep = 424; 

	public const int mod_scatter = 607; 
	public const int mod_splash = 608; 

	public const int negateShockwave = 430;

public class ENC

cs

	public const int negateConfusion = 425;

	public const int negateSleep = 424; 
	public const int negateFear = 423; 

	public const int negateParalysis = 422;

public class ENC

cs

	public const int corruption = 409;

	public const int mod_splash = 608; 
	public const int resWeather = 408; 

	public const int travelSpeed = 407; 
	public const int mod_talisman = 609; 

	public const int resMutation = 406;

public class ENC

cs

	public const int sustain_END = 441;

	public const int resWeather = 408; 
	public const int travelSpeed = 407; 

	public const int sustain_PER = 443;

	public const int force_weapon = 482; 
	public const int optimizeMana = 483;

	public const int slot_rune = 484;

public class ENC

cs

	public const int creativeChef = 487;

	public const int revealFaith = 481; 
	public const int deathagony = 488;

	public const int mod_rapid = 602; 
	public const int force_weapon = 482; 

	public const int mod_ammo_knockback = 603; 
	public const int mod_ammo = 600; 
	public const int mod_rapid = 602; 

	public const int mod_ammo_recover = 604;

public class ENC

cs

	public const int mod_drill = 606;

	public const int sustain_DEX = 442; 
	public const int mod_ammo = 600; 
	public const int mod_scatter = 607; 

	public const int strongStomach = 480; 
	public const int sustain_DEX = 442; 

	public const int mod_reload = 601;

	public const int bane_fish = 467; 
	public const int revealFaith = 481; 
	public const int mod_ammo_knockback = 603; 

	public const int bane_all = 468;

	public const int strongStomach = 480; 
	public const int sustain_WIL = 445;

	public const int sustain_MAG = 446;

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

	public const int bane_undead = 461;

	public const int bane_fairy = 462;

	public const int bane_dragon = 460; 
	public const int sustain_CHA = 447; 

	public const int bane_animal = 463;

public class ENC

cs

	public const int bane_god = 466;

	public const int sustain_LER = 444; 
	public const int bane_fish = 467; 

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

FACTION

public class FACTION

cs
{
	public const int bfFertile = 3700;

	public const int bfUndersea = 3606; 
	public const int bfCave = 3500; 
	public const int bfRuin = 3702;

	public const int bfUndersea = 3606; 
	public const int bfSea = 3605;

	public const int bfBeach = 3604;

public class FACTION

cs

	public const int bfGeyser = 3701;

	public const int bfCave = 3500; 
	public const int fPromo = 2202;

	public const int fAttraction = 2206;

public class FACTION

cs

	public const int fTaxEvasion = 2119;

	public const int fEducation = 2116; 
	public const int fLuck = 2118; 

	public const int bfTranquil = 3703;

	public const int fLoyal = 2117; 
	public const int fEducation = 2116; 

	public const int fLuck = 2118; 
	public const int fLoyal = 2117; 

	public const int fRation = 2207;

	public const int bfVolcano = 3704;

	public const int bfGum = 3803; 
	public const int bfIce = 3804; 

	public const int bfFish = 3706;

	public const int actBuildInspect = 4006; 
	public const int fAdmin = 2115;

	public const int actBuildInspect = 4006; 
	public const int actBuildRecipe = 4005;

	public const int actBuildCollect = 4004;

public class FACTION

cs

	public const int bfChitin = 3805;

	public const int bfIce = 3804; 
	public const int bfGum = 3803; 

	public const int bfSilica = 3802;

public class FACTION

cs

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

FEAT

``

cs

public class FEAT
{
	public const int featDwarf = 1215; 
	public const int featSuccubus = 1216; 
	public const int featBodyParts = 1644; 

	public const int featSorter = 1643;

public class FEAT

cs

	public const int featHardy = 1630;

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

	public const int featBodyParts = 1644; 
	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 featManaMeat = 1421; 
	public const int featCHA = 1627; 
	public const int featLuck = 1628; 

	public const int featExecutioner = 1420; 
	public const int featManaMeat = 1421; 

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

	public const int featSummoner = 1647; 
	public const int featRapidMagic = 1648; 

	public const int featManaPrecision = 1214; 
	public const int featDwarf = 1215; 

	public const int featSlowFood = 1200;

public class FEAT

cs

	public const int featUndead = 1210;

	public const int featLonelySoul = 1646; 
	public const int featSummoner = 1647; 

	public const int featSnail = 1211;

	public const int featManaPrecision = 1214; 
	public const int featFisher = 1659;

	public const int featChef = 1658;

public class FEAT

cs

	public const int featDefender = 1649;

	public const int featRapidMagic = 1648; 
	public const int featFairyResist = 1212;

	public const int featMilitant = 1419; 
	public const int featExecutioner = 1420; 

	public const int featElea = 1213;

	public const int featWitch = 1417; 
	public const int featMassSummoner = 1240; 
	public const int featSwordsage = 1418; 

	public const int featMeatCushion = 1241;

public class FEAT

cs

	public const int featGod_healing1 = 1320;

	public const int featGod_luck1 = 1330; 
	public const int featGod_harvest1 = 1325; 

	public const int featGod_harmony1 = 1335;

public class FEAT

cs

	public const int featTourist = 1406;

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

	public const int featElder = 1238; 
	public const int featMassSummoner = 1240; 

	public const int featNorland = 1236; 
	public const int featPaladin2 = 1408; 

	public const int featSwordsage = 1418; 
	public const int featDemon = 1239; 

	public const int featGolem = 1217; 
	public const int featRoran = 1237; 
	public const int featMilitant = 1419; 

	public const int featMetal = 1218;

public class FEAT

cs

	public const int featLittleOne = 1229;

	public const int featSuccubus = 1216; 
	public const int featAdam = 1230;

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

	public const int featBaby = 1232;

public class FEAT

cs

	public const int featLightEater = 1235;

	public const int featRoran = 1237; 
	public const int featNorland = 1236; 

	public const int featPaladin2 = 1408; 
	public const int featElder = 1238; 

	public const int featGod_harvest1 = 1325; 
	public const int featBoost = 1409; 

	public const int featReboot = 1410; 
	public const int featGod_luck1 = 1330; 

	public const int featFoxMaid = 1415; 
	public const int featEarthStrength = 1411; 

	public const int featInquisitor = 1416; 
	public const int featLuckyCat = 1412; 
	public const int featFairysan = 1413; 

	public const int featWhiteVixen = 1414;

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

	public const int featLuckyCat = 1412; 
	public const int featInquisitor = 1416; 

	public const int featEarthStrength = 1411; 
	public const int featWitch = 1417; 

	public const int featFairysan = 1413; 
	public const int featReboot = 1410; 

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

FOOD

public class FOOD

cs
public class FOOD
{
	public const int creativeDish = 764; 
	public const int food_CHA = 700; 

	public const int food_god = 758; 
	public const int food_cat = 701; 

	public const int justcooked = 757; 
	public const int food_poison = 702; 

	public const int food_human = 708; 
	public const int food_love = 703; 

	public const int kirimi = 707; 
	public const int gainWeight = 705; 

	public const int loseWeight = 706;

	public const int gainWeight = 705; 
	public const int food_bug = 704;

	public const int food_love = 703; 
	public const int food_human = 708; 

	public const int food_poison = 702; 
	public const int food_undead = 709; 

	public const int food_cat = 701; 
	public const int justcooked = 757; 

	public const int food_undead = 709; 
	public const int food_god = 758; 

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

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

GoalCombat

public virtual bool TryUseAbility(int dist, bool beforeMove = false)

cs
			}
			num = tactics.P_Summon;
			break;
		case "summonSpecial":
			if (owner.GetInt(70) > EClass.world.date.GetRaw()) 
			{ 
				continue; 
			} 
			num = 1000; 
			break; 
		case "suicide":
			if (owner.isBerserk || owner.IsPC || owner.HasCondition<ConWet>())
			{

LayerInfo

public override void OnKill()

cs
		base.OnKill();
		TweenUtil.Tween(0.2f, delegate
		{
			UIButton.TryShowTip<UIButton>(null, highlight: true, ignoreWhenRightClick: false); 
			UIButton.TryShowTip<UIButton>(); 
		});
	}

MUTATION

public class MUTATION

cs
public class MUTATION
{
	public const int etherGravity = 1550; 
	public const int mutationEyeN = 1513; 
	public const int mutationEye = 1512; 
	public const int mutationStr = 1520; 

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

	public const int mutationSkin = 1510;

	public const int etherEye = 1553; 
	public const int mutationRegenN = 1517; 

	public const int etherWing = 1554; 
	public const int mutationDex = 1514; 

	public const int etherNeck = 1555; 
	public const int mutationDexN = 1515; 

	public const int etherUgly = 1551; 
	public const int mutationEyeN = 1513; 

	public const int etherHead = 1557; 
	public const int mutationEye = 1512; 

	public const int etherRain = 1558; 
	public const int mutationSkinN = 1511; 

	public const int etherAddict = 1559; 
	public const int mutationStrN = 1521; 

	public const int etherWeak = 1560; 
	public const int mutationRegen = 1516; 

	public const int etherStupid = 1561; 
	public const int mutationCha = 1522; 

	public const int etherArmor = 1562; 
	public const int mutationSpeed = 1518; 

	public const int etherProvoke = 1563; 
	public const int mutationBrain = 1524; 
	public const int etherPoisonHand = 1565; 

	public const int etherManaBattery = 1564;

	public const int etherPoisonHand = 1565; 
	public const int etherProvoke = 1563; 

	public const int mutationDex = 1514; 
	public const int etherArmor = 1562; 

	public const int mutationDexN = 1515; 
	public const int mutationChaN = 1523; 

	public const int etherViolence = 1556; 
	public const int etherWeak = 1560; 

	public const int etherFeet = 1552; 
	public const int etherAddict = 1559; 

	public const int mutationHairN = 1533; 
	public const int etherRain = 1558; 

	public const int mutationRegen = 1516; 
	public const int etherHead = 1557; 

	public const int mutationHair = 1532; 
	public const int etherViolence = 1556; 

	public const int mutationBodyN = 1531; 
	public const int etherNeck = 1555; 

	public const int mutationBody = 1530; 
	public const int etherWing = 1554; 

	public const int mutationLightningN = 1529; 
	public const int etherStupid = 1561; 

	public const int mutationColdN = 1527; 
	public const int etherFeet = 1552; 
	public const int etherEye = 1553; 

	public const int mutationCold = 1526;

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

	public const int mutationLightning = 1528;

	public const int mutationBrain = 1524; 
	public const int mutationLightningN = 1529; 

	public const int mutationChaN = 1523; 
	public const int mutationBody = 1530; 

	public const int mutationCha = 1522; 
	public const int mutationBrainN = 1525; 

	public const int mutationStrN = 1521; 
	public const int mutationHair = 1532; 

	public const int mutationStr = 1520; 
	public const int mutationHairN = 1533; 

	public const int mutationSpeedN = 1519; 
	public const int etherGravity = 1550; 

	public const int mutationSpeed = 1518; 
	public const int etherUgly = 1551; 

	public const int mutationRegenN = 1517; 
	public const int mutationBodyN = 1531; 

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

POLICY

``

cs

public class POLICY
{
	public const int license_food = 2818; 
	public const int suite_room = 2813;

	public const int mass_exhibition = 2814;

public class POLICY

cs

	public const int store_premium = 2817;

	public const int bed_quality = 2812; 
	public const int license_food = 2818; 

	public const int license_furniture = 2819;

	public const int license_slaver = 2828; 
	public const int legendary_heirloom = 2821; 
	public const int license_general = 2820; 

	public const int celeb = 2822;

public class POLICY

cs

	public const int breed_season = 2827;

	public const int tourist_safety = 2811; 
	public const int license_slaver = 2828; 

	public const int license_general = 2820; 
	public const int bed_quality = 2812; 

	public const int open_business = 2810; 
	public const int legendary_heirloom = 2821; 

	public const int stop_growth = 2515; 
	public const int tourist_safety = 2811; 

	public const int livestock_priv = 2715; 
	public const int speed_growth = 2516; 
	public const int home_discount = 2800; 

	public const int nocturnal_life = 2508;

public class POLICY

cs

	public const int faith_tax = 2501;

	public const int home_discount = 2800; 
	public const int wealth_tax = 2500;

	public const int open_business = 2810; 
	public const int inquisition = 2507;

	public const int resident_tax = 2512;

	public const int resident_wanted = 2513;

	public const int human_right = 2506; 
	public const int taxfree = 2514; 

	public const int speed_growth = 2516; 
	public const int human_right = 2506; 

	public const int trash_sort = 2701; 
	public const int energy_conservation = 2700; 

	public const int trash_no = 2702;

	public const int taxfree = 2514; 
	public const int weed_no = 2703; 

	public const int border_watch = 2704; 
	public const int stop_growth = 2515; 

	public const int taxTransfer = 2705;

	public const int demon_invocation = 2706;

	public const int weed_no = 2703; 
	public const int auto_farm = 2707; 

	public const int noDM = 2708; 
	public const int border_watch = 2704; 

	public const int noAnimal = 2709;

public class POLICY

cs

	public const int forcePanty = 2712;

	public const int energy_conservation = 2700; 
	public const int livestock_priv = 2715; 

	public const int auto_farm = 2707; 
	public const int trash_sort = 2701; 
	public const int noDM = 2708; 

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

Player

public bool CanAcceptInput()

cs

	public bool CanSee(Chara c)
	{
		if (EClass.pc.hasTelepathy && c.race.visibleWithTelepathy) 
		if (EClass.pc.hasTelepathy && c.visibleWithTelepathy) 
		{
			return true;
		}

PointTarget

public bool ShouldIgnore(Card c)

cs
		}
		else
		{
			if ((!EClass.pc.hasTelepathy || !c.Chara.race.visibleWithTelepathy) && c.isHidden && !EClass.pc.canSeeInvisible) 
			if ((!EClass.pc.hasTelepathy || !c.Chara.visibleWithTelepathy) && c.isHidden && !EClass.pc.canSeeInvisible) 
			{
				return true;
			}

QuestDeliver

public override bool Deliver(Chara c, Thing t = null)

cs
		Thing thing = t.Split(num);
		bonusMoney += GetBonus(thing);
		Msg.Say("deliverItem", thing);
		if (ConsumeGoods) 
		if (ConsumeGoods || c.things.IsFull()) 
		{
			thing.Destroy();
		}
		else
		{
			thing.isGifted = true; 
			thing = c.Pick(thing);
			if (c.CanEat(thing))
			{

SKILL

public class SKILL

cs

	public const int weightlifting = 207;

	public const int weaponStaff = 103; 
	public const int weaponAxe = 102; 

	public const int weaponDagger = 107;

public class SKILL

cs

	public const int weaponBow = 104;

	public const int weaponAxe = 102; 
	public const int weaponStaff = 103; 

	public const int weaponSword = 101;

public class SKILL

cs
{
	50, 109, 110, 111, 120, 122, 123, 130, 132, 245,
	242, 241, 240, 237, 235, 230, 227, 226, 225, 220,
	210, 200, 152, 151, 150, 135, 134, 131, 207, 103, 
	210, 200, 152, 151, 150, 135, 134, 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, 102, 101, 100, 93, 92, 91, 90, 80, 
	105, 104, 103, 101, 100, 93, 92, 91, 90, 80, 
	79, 78, 77, 76, 108, 250, 133, 256, 916, 917,
	918, 919, 920, 921, 922, 923, 924, 925, 926, 950,
	951, 952, 915, 953, 956, 957, 958, 959, 960, 961,

ShopType

public enum ShopType

cs
	Plat,
	LoytelMart,
	StrangeGirl,
	Sweet 
	Sweet, 
	Moyer 
}

SourceRace

public class Row : BaseRow

cs

		public string detail;

		public bool visibleWithTelepathy; 
		public Dictionary<int, int> elementMap;

		[NonSerialized]

public override void OnInit()

cs
			dictionary[301] = 1;
			dictionary[306] = 1;
			row.elementMap = Element.GetElementMap(row.elements, dictionary);
			row.visibleWithTelepathy = !row.IsUndead && !row.IsMachine && !row.IsHorror; 
		}
	}
}

TaskDump

public override IEnumerable<Status> Run()

cs
		}
		static int SortVal(Thing t)
		{
			return t.GetWindowSaveData()?.priority ?? 0; 
			return ((t.trait is TraitShippingChest) ? EClass.game.cards.container_shipping.GetWindowSaveData() : t.GetWindowSaveData())?.priority ?? 0; 
		}
	}

Thing

public override SourcePref Pref

cs
{
	get
	{
		if (trait is TraitFakeBlock) 
		{ 
			TileType tileType = EClass.sources.blocks.map[base.refVal].tileType; 
			if (tileType is TileTypeFence) 
			{ 
				return EClass.core.refs.prefs.blockFence; 
			} 
			if (tileType is TileTypeStairs) 
			{ 
				return EClass.core.refs.prefs.blockStairs; 
			} 
			if (tileType is TileTypeWall) 
			{ 
				return EClass.core.refs.prefs.blockWall; 
			} 
		} 
		if (source.origin == null || source.pref.UsePref)
		{
			return source.pref;

ThingGen

public static Thing CreateRedBook(string id, int num = 1)

cs
	{
		Thing thing = Create("book").SetNum(num);
		thing.SetStr(53, id);
		thing.idSkin = (thing.trait as TraitBook).Item.skin; 
		return thing;
	}

Trait

public void OnBarter()

cs
	owner.c_dateStockExpire = EClass.world.date.GetRaw(24 * RestockDay);
	owner.isRestocking = true;
	t.things.DestroyAll((Thing _t) => _t.GetInt(101) != 0);
	foreach (Thing thing7 in t.things) 
	foreach (Thing thing8 in t.things) 
	{
		thing7.invX = -1; 
		thing8.invX = -1; 
	}
	switch (ShopType)
	{

public void OnBarter()

cs
			break;
		}
		int num3 = 0;
		foreach (Thing thing8 in c_copyContainer.things) 
		foreach (Thing thing9 in c_copyContainer.things) 
		{
			if (!owner.trait.CanCopy(thing8)) 
			if (!owner.trait.CanCopy(thing9)) 
			{
				continue;
			}
			Thing thing4 = thing8.Duplicate(1); 
			Thing thing4 = thing9.Duplicate(1); 
			thing4.isStolen = false;
			thing4.isCopy = true;
			thing4.c_priceFix = 0;

public void OnBarter()

cs
				break;
			}
			case CopyShopType.Spellbook:
				thing4.c_charges = thing8.c_charges; 
				thing4.c_charges = thing9.c_charges; 
				break;
			}
			if (num4 > 1 && thing4.trait.CanStack)

public void OnBarter()

cs
		break;
	case ShopType.RedBook:
	{
		for (int n = 0; n < 30; n++) 
		for (int num5 = 0; num5 < 30; num5++) 
		{
			AddThing(ThingGen.CreateFromCategory("book"));
		}

public void OnBarter()

cs
		AddThing(TraitSeed.MakeSeed("carrot")).SetNum(4 + EClass.rnd(4));
		AddThing(TraitSeed.MakeSeed("potato")).SetNum(4 + EClass.rnd(4));
		AddThing(TraitSeed.MakeSeed("corn")).SetNum(4 + EClass.rnd(4));
		for (int num5 = 0; num5 < EClass.rnd(3) + 1; num5++) 
		for (int num6 = 0; num6 < EClass.rnd(3) + 1; num6++) 
		{
			Add("462", 1, 0);
		}
		for (int num6 = 0; num6 < EClass.rnd(3) + 1; num6++) 
		for (int num7 = 0; num7 < EClass.rnd(3) + 1; num7++) 
		{
			Add("1167", 1, 0);
		}

public void OnBarter()

cs
					Add("littleball", 10, 0);
					break;
				}
				for (int k = 0; k < 10; k++) 
				for (int l = 0; l < 10; l++) 
				{
					Thing thing3 = ThingGen.Create(EClass._zone.IsFestival ? "1123" : ((EClass.rnd(3) == 0) ? "1169" : "1160"));
					thing3.DyeRandom();

public void OnBarter()

cs
				}
				if (EClass._zone is Zone_Exile)
				{
					for (int l = 0; l < 30; l++) 
					for (int m = 0; m < 30; m++) 
					{
						Add("1235", 1, -1);
						Add("1236", 1, -1);

public void OnBarter()

cs
				AddThing(ThingGen.CreatePerfume(9501, 5));
				AddThing(ThingGen.CreatePerfume(9502, 5));
				AddThing(ThingGen.CreatePerfume(9503, 5));
				for (int j = 0; j < 5; j++) 
				for (int k = 0; k < 5; k++) 
				{
					Thing thing2 = ThingGen.CreateFromCategory("seasoning").SetNum(10);
					thing2.elements.SetBase(2, 40);

public void OnBarter()

cs
				float num = (float)(3 + Mathf.Min(ShopLv / 5, 10)) + Mathf.Sqrt(ShopLv);
				num = num * (float)(100 + EClass.pc.Evalue(1406) * 5) / 100f;
				num = Mathf.Min(num, 300f);
				for (int i = 0; (float)i < num; i++) 
				for (int j = 0; (float)j < num; j++) 
				{
					Thing thing = CreateStock();
					if ((!thing.trait.IsNoShop || (ShopType == ShopType.LoytelMart && (EClass.debug.enable || EClass.player.flags.loytelMartLv >= 2))) && (!(thing.trait is TraitRod) || thing.c_charges != 0) && thing.GetPrice() > 0)

public void OnBarter()

cs
					continue;
				}
				string[] recipeKey = item3.row.recipeKey;
				for (int m = 0; m < recipeKey.Length; m++) 
				for (int n = 0; n < recipeKey.Length; n++) 
				{
					if (recipeKey[m] == ShopType.ToString()) 
					if (recipeKey[n] == ShopType.ToString()) 
					{
						NoRestock(ThingGen.CreateRecipe(item3.id));
						break;

public void OnBarter()

cs
			}
			switch (ShopType)
			{
			case ShopType.Moyer: 
			{ 
				for (int num10 = 1; num10 <= 3; num10++) 
				{ 
					AddAdvWeek(num10); 
				} 
				break; 
			} 
			case ShopType.StrangeGirl:
			{
				int num9 = (EClass.debug.enable ? 20 : (EClass._zone.development / 10)); 
				if (num9 > 0) 
				int num11 = (EClass.debug.enable ? 20 : (EClass._zone.development / 10)); 
				if (num11 > 0) 
				{
					Add("syringe_gene", num9, 0); 
					Add("syringe_gene", num11, 0); 
					Add("diary_little", 1, 0);
				}
				if (num9 > 10) 
				if (num11 > 10) 
				{
					Add("syringe_heaven", num9 / 5, 0); 
					Add("syringe_heaven", num11 / 5, 0); 
				}
				break;
			}

public void OnBarter()

cs
					Add("ticket_armpillow", 1, 0);
					Add("ticket_champagne", 1, 0);
				}
				for (int num7 = 0; num7 < 3; num7++) 
				for (int num8 = 0; num8 < 3; num8++) 
				{
					if (EClass.rnd(5) == 0)
					{
						TreasureType treasureType = ((EClass.rnd(10) == 0) ? TreasureType.BossNefia : ((EClass.rnd(10) == 0) ? TreasureType.Map : TreasureType.RandomChest));
						int num8 = EClass.rnd(EClass.rnd(ShopLv + (EClass.debug.enable ? 200 : 50)) + 1) + 1; 
						int num9 = EClass.rnd(EClass.rnd(ShopLv + (EClass.debug.enable ? 200 : 50)) + 1) + 1; 
						Thing thing5 = ThingGen.Create(treasureType switch
						{
							TreasureType.Map => "chest_treasure",

public void OnBarter()

cs
							_ => "chest3", 
						});
						thing5.c_lockedHard = true;
						thing5.c_lockLv = num8; 
						thing5.c_priceAdd = 2000 + num8 * 250 * ((treasureType == TreasureType.RandomChest) ? 1 : 5); 
						thing5.c_lockLv = num9; 
						thing5.c_priceAdd = 2000 + num9 * 250 * ((treasureType == TreasureType.RandomChest) ? 1 : 5); 
						thing5.c_revealLock = true;
						ThingGen.CreateTreasureContent(thing5, num8, treasureType, clearContent: true); 
						ThingGen.CreateTreasureContent(thing5, num9, treasureType, clearContent: true); 
						AddThing(thing5);
					}
				}

public void OnBarter()

cs
			ShopType shopType = ShopType;
			if (shopType == ShopType.General || shopType == ShopType.Food)
			{
				for (int num10 = 0; num10 < (EClass.debug.enable ? 3 : 3); num10++) 
				for (int num12 = 0; num12 < (EClass.debug.enable ? 3 : 3); num12++) 
				{
					if (EClass.rnd(3) == 0)
					{

public void OnBarter()

cs
				}
				AddThing(ThingGen.CreateScroll(8780, EClass.rndHalf(5)));
			}
			foreach (Thing thing9 in t.things) 
			foreach (Thing thing10 in t.things) 
			{
				thing9.c_idBacker = 0; 
				thing10.c_idBacker = 0; 
				if (ShopType != ShopType.Copy)
				{
					thing9.TryMakeRandomItem(ShopLv); 
					if (thing9.Num == 1) 
					thing10.TryMakeRandomItem(ShopLv); 
					if (thing10.Num == 1) 
					{
						thing9.SetNum(thing9.trait.DefaultStock); 
						thing10.SetNum(thing10.trait.DefaultStock); 
					}
					if (thing9.trait is TraitFoodMeal) 
					if (thing10.trait is TraitFoodMeal) 
					{
						CraftUtil.MakeDish(thing9, ShopLv, owner.Chara); 
						CraftUtil.MakeDish(thing10, ShopLv, owner.Chara); 
					}
					if (thing9.IsFood && owner.id == "rodwyn") 
					if (thing10.IsFood && owner.id == "rodwyn") 
					{
						SourceElement.Row row = EClass.sources.elements.rows.Where((SourceElement.Row e) => !e.foodEffect.IsEmpty() && e.category != "feat" && e.chance > 0).RandomItem();
						thing9.elements.SetBase(row.id, 10 + EClass.rnd(10)); 
						thing10.elements.SetBase(row.id, 10 + EClass.rnd(10)); 
					}
				}
				if (CurrencyType == CurrencyType.Casino_coin)
				{
					thing9.noSell = true; 
					thing10.noSell = true; 
				}
				if (Guild.Thief.IsCurrentZone)
				{
					thing9.isStolen = true; 
					thing10.isStolen = true; 
				}
				if (!(thing9.trait is TraitErohon)) 
				if (!(thing10.trait is TraitErohon)) 
				{
					thing9.c_IDTState = 0; 
					thing10.c_IDTState = 0; 
				}
				if (CurrencyType == CurrencyType.Money && (thing9.category.IsChildOf("meal") || thing9.category.IsChildOf("preserved")) && thing9.id != "ration") 
				if (CurrencyType == CurrencyType.Money && (thing10.category.IsChildOf("meal") || thing10.category.IsChildOf("preserved")) && thing10.id != "ration") 
				{
					thing9.c_priceFix = -70; 
					thing10.c_priceFix = -70; 
				}
				if (thing9.trait is TraitErohon) 
				if (thing10.trait is TraitErohon) 
				{
					thing9.c_IDTState = 5; 
					thing10.c_IDTState = 5; 
				}
				if (thing9.IsContainer && !thing9.c_revealLock) 
				if (thing10.IsContainer && !thing10.c_revealLock) 
				{
					thing9.RemoveThings(); 
					thing10.RemoveThings(); 
					t.c_lockLv = 0;
				}
			}

public void OnBarter()

cs
			{
				return;
			}
			int num11 = t.things.width * 10; 
			if (t.things.Count > num11) 
			int num13 = t.things.width * 10; 
			if (t.things.Count > num13) 
			{
				int num12 = t.things.Count - num11; 
				for (int num13 = 0; num13 < num12; num13++) 
				int num14 = t.things.Count - num13; 
				for (int num15 = 0; num15 < num14; num15++) 
				{
					t.things.LastItem().Destroy();
				}

public void OnBarter()

cs
			Thing Add(string id, int a, int idSkin)
			{
				CardBlueprint.SetNormalRarity();
				Thing thing6 = ThingGen.Create(id, -1, ShopLv).SetNum(a); 
				thing6.idSkin = ((idSkin == -1) ? EClass.rnd(thing6.source.skins.Length + 1) : idSkin); 
				return t.AddThing(thing6); 
				Thing thing7 = ThingGen.Create(id, -1, ShopLv).SetNum(a); 
				thing7.idSkin = ((idSkin == -1) ? EClass.rnd(thing7.source.skins.Length + 1) : idSkin); 
				return t.AddThing(thing7); 
			} 
			void AddAdvWeek(int i) 
			{ 
				Thing thing6 = ThingGen.CreateRedBook("advweek_" + i); 
				thing6.c_priceFix = -90; 
				AddThing(thing6); 
			}
			Thing AddThing(Thing _t)
			{

public Thing CreateStock()

cs
				return FromFilter("shop_junk");
			}
			case ShopType.Junk:
			case ShopType.Moyer:
				return FromFilter("shop_junk");
			case ShopType.Souvenir:
				return FromFilter("shop_souvenir");

TraitBook

public override void OnCreate(int lv)

cs
		{
			owner.SetStr(53, BookList.GetRandomItem(IdCat).id);
		}
		owner.idSkin = Item.skin; 
	}

	public override void OnImportMap()

TraitMoyer

public class TraitMoyer : TraitUniqueChara

cs
public class TraitMoyer : TraitUniqueChara
{
	public override ShopType ShopType => ShopType.Moyer; 
	public override bool CanInvite => false;
}

TraitTent

public class TraitTent : TraitNewZone

cs

	public override bool CanBeHeld => true;

	public override bool CanBeShipped => false; 
	public override int UseDist => 1;

	public override void OnChangePlaceState(PlaceState state)

TraitToolHammerStrip

public override void TrySetHeldAct(ActPlan p)

cs
{
	p.pos.Things.ForEach(delegate(Thing t)
	{
		if (t.category.tag.Contains("enc") && t.encLV > 0) 
		if (!t.isMasked && !t.isHidden && t.category.tag.Contains("enc") && t.encLV > 0) 
		{
			p.TrySetAct("actHammerFurniture".lang(t.Name), delegate
			{

ZoneEventDefenseGame

public void NextWave(int add = 0)

cs
	turns = 0;
	EClass._zone._dangerLv += ((EClass._zone.DangerLv >= 100) ? (EClass._zone.DangerLv / 100 * 5 + 5) : 5);
	SE.Play("warhorn");
	Msg.Say("warhorn"); 
	Msg.Say("defense_wave", wave.ToString() ?? "", EClass._zone.DangerLv.ToString() ?? "");
	Spawn(2 + base.quest.difficulty + add);
	AggroEnemy();

public void Horn_Next()

cs
public void Horn_Retreat()
{
	SE.Play("warhorn");
	Msg.Say("warhorn"); 
	Msg.Say("defense_retreat");
	retreated = true;
	instance.status = ZoneInstance.Status.Success;

public void Horn_Retreat()

cs
public void Horn_Ally()
{
	SE.Play("warhorn");
	Msg.Say("warhorn"); 
	ActEffect.ProcAt(EffectId.Summon, 100, BlessedState.Normal, EClass.pc, EClass.pc, EClass.pc.pos, isNeg: false, new ActRef
	{
		n1 = "special_force"