Skip to content

EA 23.264 Nightly

January 30, 2026

36 files modified. 2 new files created.

Important Changes

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

Chara (7)

cs
public MoveResult TryMoveFrom(Point p) 
cs
public MoveResult TryMove(Point newPoint, bool allowDestroyPath = true) 
public override MoveResult TryMove(Point newPoint, bool allowDestroyPath = true) 
cs
public void TryPickGroundItem() 
public void TryPickGroundItem(Func<Card, bool> func = null) 
cs
public void Kick(Point p, bool ignoreSelf = false, bool checkWall = true) 
cs
public void Kick(Chara t, bool ignoreSelf = false, bool karmaLoss = true, bool show = true, bool checkWall = true) 
cs
public bool CanAcceptItem(Card t, int num = -1) 
public bool CanAcceptItem(Card t, int num = -1, bool skipImportantCheck = false) 
cs
public T GetCondition<T>() where T : Condition
public override T GetCondition<T>() 

Dialog (1)

cs
public static void TryWarnSlaughter(Action action) 
public static void TryWarnSlaughter(Action action, Chara c) 

ELEMENT (1)

cs
public virtual void SetTextValue(UIText text) 
public virtual void SetTextValue(UIText text, bool shorten = false) 

GalleryFlattenAndRename (1)

cs
private static int MoveAllFilesUnderSubfoldersToRoot(string root) 
private static void MoveAllFilesUnderSubfoldersToRoot(string root) 

Los (1)

cs
public static List<Point> ListVisible(Point p1, Point p2, int radius, Action<Point, bool> _onVisit = null) 
public static List<Point> ListVisible(Point p1, Point p2, int radius, Action<Point, bool> _onVisit = null, bool returnOnBlocked = true) 

Map (1)

cs
public List<Point> ListPointsInLine(Point center, Point to, int radius) 
public List<Point> ListPointsInLine(Point center, Point to, int radius, bool returnOnBlocked = true) 

Resistance (1)

cs
public override void SetTextValue(UIText text) 
public override void SetTextValue(UIText text, bool shorten = false) 

ACT

public virtual TargetType TargetType

cs

	public virtual bool ShowAuto => false;

	public virtual bool IsCrime => EClass._zone.IsCrime(EClass.pc, this); 
	public virtual CursorInfo GetCursorIcon(Card c)
	{
		return CursorIcon;

public bool IsTargetHostileParty()

cs

	public virtual Color GetActPlanColor()
	{
		if (!IsCrime) 
		if (!EClass._zone.IsCrime(EClass.pc, this)) 
		{
			return EClass.Colors.colorAct;
		}

AI_Fish

public override IEnumerable<Status> Run()

cs
{
	if (!owner.IsPC)
	{
		owner.TryPickGroundItem(); 
		owner.TryPickGroundItem((Card t) => t.category.IsChildOf("fish") || t.SelfWeight <= 1000); 
	}
	if (pos != null)
	{

public override IEnumerable<Status> Run()

cs
		{
			if (!owner.IsPC)
			{
				owner.TryPickGroundItem(); 
				owner.TryPickGroundItem((Card t) => t.category.IsChildOf("fish") || t.SelfWeight <= 1000); 
			}
			if (owner.IsPCFaction && !owner.IsPCParty)
			{

ActEffect

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

cs
					effect.Play(p).Flip(p.x > CC.pos.x);
				});
			}
			if (id == EffectId.Flare) 
			{ 
				TryDelay(delegate
				{ 
					Effect.Get("flare2").Play(EClass.rndf(0.5f), p); 
				}); 
			} 
		}
		bool flag3 = false;
		if (CC.IsPCFactionOrMinion && (CC.HasElement(1651) || EClass.pc.Evalue(1651) >= 2))

ActPlan

public bool Perform(bool repeated = false)

cs
		if (AM_Adv.actCount == 0 && !Dialog.warned)
		{
			warning = true;
			Card lastMouseCard = EClass.scene.mouseTarget.card; 
			Chara _CC = Act.CC;
			Card _TC = Act.TC;
			Point _TP = new Point(Act.TP);

public bool Perform(bool repeated = false)

cs
					Act.CC = _CC;
					Act.TC = _TC;
					Act.TP.Set(_TP);
					EClass.scene.mouseTarget.card = lastMouseCard; 
					if (Perform())
					{
						EClass.player.EndTurn();

+ActTelekinesis

File Created
cs
using System.Collections.Generic;
using System.Linq;
using UnityEngine;

public class ActTelekinesis : Spell
{
	public override bool ShowMapHighlight => true;

	public override int PerformDistance => 20;

	public override bool IsHostileAct
	{
		get
		{
			if (Act.TC != null)
			{
				return Act.TC.isNPCProperty;
			}
			return false;
		}
	}

	public override string GetText(string str = "")
	{
		string text = " (" + Lang.GetList("skillDiff")[GetDifficulty()] + ")";
		return base.GetText(str) + text;
	}

	public override void OnMarkMapHighlights()
	{
		if (!EClass.scene.mouseTarget.pos.IsValid || EClass.scene.mouseTarget.card == null)
		{
			return;
		}
		Point pos = EClass.scene.mouseTarget.pos;
		List<Point> list = ListPath(EClass.pc.pos, pos);
		foreach (Point item in list)
		{
			item.SetHighlight(list.LastItem().Equals(item) ? 8 : 2);
		}
	}

	public override bool CanPerform()
	{
		if (!Act.CC.IsPC)
		{
			return false;
		}
		Act.TC = EClass.scene.mouseTarget.card;
		if (Act.TC == null || Act.TC.pos.Equals(Act.CC.pos))
		{
			return false;
		}
		if (!Act.TC.trait.CanBeHeld || !Act.TC.trait.CanBeTeleported || Act.TC.IsMultisize)
		{
			return false;
		}
		if (ListPath(Act.CC.pos, Act.TC.pos).Count <= 1)
		{
			return false;
		}
		Act.TP.Set(Act.TC.pos);
		return base.CanPerform();
	}

	public List<Point> ListPath(Point start, Point end)
	{
		List<Point> list = new List<Point>();
		List<Point> list2 = EClass._map.ListPointsInLine(start, end, 20, returnOnBlocked: false);
		bool flag = start.Distance(end) != 1;
		if (flag)
		{
			list2.Reverse();
		}
		foreach (Point item in list2)
		{
			if (!item.Equals(start) && (!flag || start.Distance(item) <= start.Distance(end)) && item.IsInBounds)
			{
				if (!item.Equals(end) && (item.IsBlocked || (item.HasChara && item.FirstChara.IsMultisize)))
				{
					break;
				}
				list.Add(item);
			}
		}
		return list;
	}

	public int GetWeightLimit()
	{
		long num = GetPower(Act.CC);
		if (num * num <= int.MaxValue)
		{
			return (int)(num * num);
		}
		return int.MaxValue;
	}

	public int GetDifficulty()
	{
		int num = Act.TC.SelfWeight / GetWeightLimit();
		ConATField condition = Act.TC.GetCondition<ConATField>();
		if (condition != null)
		{
			num += condition.value;
		}
		return Mathf.Clamp(num / 33, 0, 3);
	}

	public void DoDamage(Card c, int dist = 1, int mtp = 100)
	{
		long num = Dice.Create("SpTelekinesis", GetPower(Act.CC), Act.CC, this).Roll();
		num = num * (50 + dist * 25) / 100;
		if (Act.TC.SelfWeight > 1000)
		{
			num = num * (100 + (int)Mathf.Sqrt(Act.TC.SelfWeight / 10) / 2) / 100;
		}
		num = num * mtp / 100;
		Act.CC.DoHostileAction(c);
		c.DamageHP(num, 925, 100, AttackSource.Throw, Act.CC);
	}

	public override bool Perform()
	{
		if (GetDifficulty() * 33 > EClass.rnd(100))
		{
			Act.TC.PlayEffect("Element/ball_Gravity");
			Act.TC.PlaySound("gravity");
			Act.CC.Say("tooHeavy", Act.TC);
			return true;
		}
		bool flag = Act.TC.Dist(Act.CC) != 1;
		List<Point> list = ListPath(Act.CC.pos, Act.TC.pos);
		Act.CC.PlaySound("telekinesis");
		Act.CC.PlayEffect("telekinesis");
		if (EClass._zone.IsCrime(Act.CC, this))
		{
			Act.CC.pos.TryWitnessCrime(Act.CC, Act.TC.Chara, 5, (Chara c) => EClass.rnd(3) == 0);
		}
		Point point = list.Last();
		for (int i = 0; i < list.Count; i++)
		{
			Point point2 = list[i];
			Effect.Get("telekinesis2").Play(0.1f * (float)i, point2);
			if (point2.Equals(Act.TC.pos) || !point2.HasChara)
			{
				continue;
			}
			foreach (Chara item in point2.ListCharas())
			{
				Act.TC.Kick(item, ignoreSelf: true, karmaLoss: false);
				Act.TC.pos.PlayEffect("vanish");
				if (!flag && (item.isChara || item.trait.CanBeAttacked))
				{
					DoDamage(item, i, 50);
				}
			}
		}
		if (point.HasChara)
		{
			point.FirstChara.MoveImmediate(Act.TC.pos);
		}
		Act.TC.MoveImmediate(point, focus: true, cancelAI: false);
		Act.TC.pos.PlayEffect("telekinesis");
		if (!flag)
		{
			Act.TC.pos.PlayEffect("vanish");
			Act.TC.pos.PlaySound("rush");
			if (Act.TC.isChara || Act.TC.trait.CanBeAttacked)
			{
				DoDamage(Act.TC, list.Count);
			}
		}
		if (!flag && Act.TC.isChara && Act.TC.IsAliveInCurrentZone)
		{
			Act.TC.Chara.AddCondition<ConATField>();
		}
		return true;
	}
}

ButtonElement

public void Refresh()

cs
		}
		break;
	case Mode.Attribute:
		mainText.SetText(text + e.Name, FontColor.Default); 
		e.SetTextValue(subText); 
		mainText.SetText(text + e.source.GetText("textExtra"), FontColor.Default); 
		e.SetTextValue(subText, shorten: true); 
		break;
	case Mode.OnlyValue:
		e.SetTextValue(subText);

public void SetGrid(Element e, Chara c)

cs
			uIItem.text1.SetActive(enable: false);
			uIItem.image1.color = Color.white.SetAlpha(0.5f);
		}
		text = (e.IsFlag ? "✓" : (Mathf.Abs(num).ToString() ?? "")); 
		text = (e.IsFlag ? "✓" : Mathf.Abs(num).ToShortNumber()); 
		FontColor c2 = ((num >= 0) ? FontColor.Good : FontColor.Bad);
		if (element != null)
		{

Card

public virtual void OnLand()

cs
		}
	}

	public MoveResult TryMoveFrom(Point p) 
	{ 
		if (IsPC && EClass.player.TooHeavyToMove()) 
		{ 
			return MoveResult.Fail; 
		} 
		Point point = p.Copy(); 
		int num = p.x - pos.x; 
		int num2 = p.z - pos.z; 
		if (num > 1) 
		{ 
			num = 1; 
		} 
		else if (num < -1) 
		{ 
			num = -1; 
		} 
		if (num2 > 1) 
		{ 
			num2 = 1; 
		} 
		else if (num2 < -1) 
		{ 
			num2 = -1; 
		} 
		if (num == 0 && num2 == 0) 
		{ 
			num = EClass.rnd(3) - 1; 
			num2 = EClass.rnd(3) - 1; 
		} 
		point.Set(pos); 
		point.x -= num; 
		point.z -= num2; 
		if (point.IsValid && !point.HasChara) 
		{ 
			return TryMove(point, allowDestroyPath: false); 
		} 
		return MoveResult.Fail; 
	} 
	public virtual MoveResult TryMove(Point newPoint, bool allowDestroyPath = true) 
	{ 
		return _Move(newPoint); 
	} 
	public void Kick(Point p, bool ignoreSelf = false, bool checkWall = true) 
	{ 
		foreach (Chara item in p.ListCharas()) 
		{ 
			Kick(item, ignoreSelf, karmaLoss: true, show: true, checkWall); 
		} 
	} 
	public void Kick(Chara t, bool ignoreSelf = false, bool karmaLoss = true, bool show = true, bool checkWall = true) 
	{ 
		if (!IsAliveInCurrentZone) 
		{ 
			return; 
		} 
		if (t.IsPC) 
		{ 
			ActionMode.Adv.ClearPlans(); 
		} 
		if (t.host != null) 
		{ 
			return; 
		} 
		if (t == this) 
		{ 
			if (!ignoreSelf) 
			{ 
				Debug.Log(t.pos.GetNearestPoint()); 
				if (TryMove(t.pos.GetNearestPoint()) != MoveResult.Success) 
				{ 
					t.MoveImmediate(pos.GetNearestPoint() ?? t.pos); 
				} 
			} 
			return; 
		} 
		if (show) 
		{ 
			Say("kick", this, t); 
		} 
		PlaySound("kick"); 
		if ((t.conSuspend == null || t.conSuspend.uidMachine != 0) && t.trait.CanBePushed && (!t.IsHostile() || EClass.rnd(2) == 0) && !t.noMove && !t.isRestrained) 
		{ 
			t.MoveByForce(t.pos.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true), this, checkWall && !t.pos.IsBlocked); 
		} 
		if (t.conSleep != null) 
		{ 
			t.conSleep.Kill(); 
		} 
		if (IsPC && t.IsFriendOrAbove() && !t.IsPCFactionOrMinion && karmaLoss) 
		{ 
			EClass.player.ModKarma(-1); 
		} 
		t.PlayEffect("kick"); 
		t.mimicry?.RevealMimicry(this, surprise: false); 
	} 
	public int ResistLvFrom(int ele)
	{
		return ResistLv(EClass.sources.elements.alias.TryGetValue(EClass.sources.elements.map[ele].aliasRef)?.id ?? 0);

public virtual int SecondaryCompare(UIList.SortMode m, Card c)

cs
	}
	if (num == 0)
	{
		num = Lang.comparer.Compare(GetName(NameStyle.Full, 1), c.GetName(NameStyle.Full, 1)); 
		num = Lang.comparer.Compare(c.GetName(NameStyle.Full, 1), GetName(NameStyle.Full, 1)); 
	}
	if (num == 0)
	{

public virtual bool HasCondition<T>() where T : Condition

cs
		return false;
	}

	public virtual T GetCondition<T>() where T : Condition
	{ 
		return null; 
	} 
	public bool HaveFur()
	{
		if (!isChara)

CardRenderer

public class CardRenderer : RenderObject

cs

	public Vector3 PositionCenter()
	{
		return new Vector3(position.x + data.size.x + data.offset.x * 0.5f, position.y + data.size.y + data.offset.y, position.z); 
		return new Vector3(position.x + data.size.x + data.offset.x * 0.5f, position.y + data.size.y + data.offset.y + owner.Pref.heightFix, position.z); 
	}

	public virtual void SetOwner(Card c)

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

cs
		OnEnterScreen();
		RenderObject.syncList.Add(this);
	}
	if ((bool)orbit) 
	{ 
		orbit.Refresh(); 
	} 
	else
	{ 
		TrySpawnOrbit(); 
	} 
	if (isChara && owner.parent == EClass.game.activeZone)
	{
		if (owner.Chara.bossText && !EClass.ui.IsActive && !SplashText.Instance && !LayerDrama.Instance)

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

cs
				{
					actor.SetActive(enable: false);
				}
				if ((bool)orbit) 
				{ 
					orbit.Refresh(); 
				} 
				return;
			}
		}

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

cs
		p.y = (position.y = v.y);
		p.z = (position.z = v.z);
	}
	if ((bool)orbit) 
	{ 
		orbit.Refresh(); 
	} 
	else
	{ 
		TrySpawnOrbit(); 
	} 
	if (anime != null)
	{
		anime.Update();

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

cs
	if (listTC.Count > 0)
	{
		RenderObject.tempV = position;
		RenderObject.tempV.y += data.offset.y + data.size.y; 
		RenderObject.tempV.y += data.offset.y + data.size.y + owner.Pref.heightFix; 
		for (int num = listTC.Count - 1; num >= 0; num--)
		{
			listTC[num].OnDraw(ref RenderObject.tempV);

Chara

public override bool isSynced

cs

	public override int WeightLimit => (int)Mathf.Clamp(((long)base.STR * 500L + base.END * 250 + Evalue(207) * 2000) * ((!HasElement(1411)) ? 1 : 5) + 45000, 1000f, 1.0737418E+09f);

	public override int SelfWeight => bio.weight * 1000; 
	public override int SelfWeight => ((bio.weight > 2000000) ? 2000000 : bio.weight) * 1000; 

	public int MaxSummon => Mathf.Max((int)Mathf.Sqrt(base.CHA), 1) + Evalue(1647) + ((!base.IsPCFactionOrMinion) ? ((int)base.rarity * 5) : 0);

public MoveResult TryMoveTowards(Point p)

cs
		return MoveResult.Fail;
	}

	public MoveResult TryMoveFrom(Point p) 
	{ 
		if (IsPC && EClass.player.TooHeavyToMove()) 
		{ 
			return MoveResult.Fail; 
		} 
		Point point = p.Copy(); 
		int num = p.x - pos.x; 
		int num2 = p.z - pos.z; 
		if (num > 1) 
		{ 
			num = 1; 
		} 
		else if (num < -1) 
		{ 
			num = -1; 
		} 
		if (num2 > 1) 
		{ 
			num2 = 1; 
		} 
		else if (num2 < -1) 
		{ 
			num2 = -1; 
		} 
		if (num == 0 && num2 == 0) 
		{ 
			num = EClass.rnd(3) - 1; 
			num2 = EClass.rnd(3) - 1; 
		} 
		point.Set(pos); 
		point.x -= num; 
		point.z -= num2; 
		if (point.IsValid && !point.HasChara) 
		{ 
			return TryMove(point, allowDestroyPath: false); 
		} 
		return MoveResult.Fail; 
	} 
	public MoveResult TryMove(Point newPoint, bool allowDestroyPath = true) 
	public override MoveResult TryMove(Point newPoint, bool allowDestroyPath = true) 
	{
		foreach (Condition condition in conditions)
		{

public override MoveResult _Move(Point newPoint, MoveType type = MoveType.Walk)

cs
		}
		if (flag2 || flag4)
		{
			Effect.Get("ripple").Play(0.4f * actTime * EClass.scene.actionMode.gameSpeed, newPoint); 
			Effect.Get("ripple").Play(newPoint); 
		}
	}
	lastPos.Set(pos);

public void TryReservePickupTutorial(Thing t)

cs
		}
	}

	public void TryPickGroundItem() 
	public void TryPickGroundItem(Func<Card, bool> func = null) 
	{
		foreach (Card item in pos.ListCards())
		{
			if ((IsPC || !(EClass.pc.ai is AI_UseCrafter aI_UseCrafter) || !aI_UseCrafter.ings.Contains(item)) && item.isThing && item.placeState == PlaceState.roaming && CanPick(item)) 
			if ((IsPC || !(EClass.pc.ai is AI_UseCrafter aI_UseCrafter) || !aI_UseCrafter.ings.Contains(item)) && item.isThing && item.placeState == PlaceState.roaming && CanPick(item) && (func == null || func(item))) 
			{
				Thing thing = Pick(item.Thing);
				if (thing != null && !IsPC)

public void TryDropBossLoot()

cs
		}
	}

	public void Kick(Point p, bool ignoreSelf = false, bool checkWall = true) 
	{ 
		foreach (Chara item in p.ListCharas()) 
		{ 
			Kick(item, ignoreSelf, karmaLoss: true, show: true, checkWall); 
		} 
	} 
	public void Kick(Chara t, bool ignoreSelf = false, bool karmaLoss = true, bool show = true, bool checkWall = true) 
	{ 
		if (!IsAliveInCurrentZone) 
		{ 
			return; 
		} 
		if (t.IsPC) 
		{ 
			ActionMode.Adv.ClearPlans(); 
		} 
		if (t.host != null) 
		{ 
			return; 
		} 
		if (t == this) 
		{ 
			if (!ignoreSelf) 
			{ 
				Debug.Log(t.pos.GetNearestPoint()); 
				if (TryMove(t.pos.GetNearestPoint()) != MoveResult.Success) 
				{ 
					t.MoveImmediate(pos.GetNearestPoint() ?? t.pos); 
				} 
			} 
			return; 
		} 
		if (show) 
		{ 
			Say("kick", this, t); 
		} 
		PlaySound("kick"); 
		if ((t.conSuspend == null || t.conSuspend.uidMachine != 0) && t.trait.CanBePushed && (!t.IsHostile() || EClass.rnd(2) == 0) && !t.noMove && !t.isRestrained) 
		{ 
			t.MoveByForce(t.pos.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true), this, checkWall && !t.pos.IsBlocked); 
		} 
		if (t.conSleep != null) 
		{ 
			t.conSleep.Kill(); 
		} 
		if (IsPC && t.IsFriendOrAbove() && !t.IsPCFactionOrMinion && karmaLoss) 
		{ 
			EClass.player.ModKarma(-1); 
		} 
		t.PlayEffect("kick"); 
		t.mimicry?.RevealMimicry(this, surprise: false); 
	} 
	public bool UseAbility(int idAct, Card tc = null, Point pos = null, bool pt = false)
	{
		return UseAbility(elements.GetElement(idAct)?.act ?? ACT.Create(idAct), tc, pos, pt);

public bool IsValidGiftWeight(Card t, int num = -1)

cs
		return true;
	}

	public bool CanAcceptItem(Card t, int num = -1) 
	public bool CanAcceptItem(Card t, int num = -1, bool skipImportantCheck = false) 
	{
		if (EClass.debug.ignoreWeight)
		{

public bool CanAcceptItem(Card t, int num = -1)

cs
	{
		return false;
	}
	if (t.c_isImportant) 
	if (!skipImportantCheck && t.c_isImportant) 
	{
		return false;
	}

public void CureCondition<T>(int v = 99999) where T : Condition

cs
		}
	}

	public T GetCondition<T>() where T : Condition
	public override T GetCondition<T>() 
	{
		for (int i = 0; i < conditions.Count; i++)
		{

public bool TryNeckHunt(Chara TC, int power, bool harvest = false)

cs
	{
		return false;
	}
	if (TC.hp > (long)TC.MaxHP * (long)(Mathf.Min(5 + (int)Mathf.Sqrt(power), harvest ? 30 : 20) + Evalue(1426) * 5) / (TC.IsPowerful ? 250 : 100)) 
	if (TC.hp > (long)TC.MaxHP * (long)(Mathf.Min(5 + (int)Mathf.Sqrt(power), harvest ? 35 : 25) + Evalue(1426) * 5) / (TC.IsPowerful ? 200 : 100)) 
	{
		return false;
	}

+ConATField

File Created
cs
public class ConATField : Condition
{
	public override int GetPhase()
	{
		return 0;
	}
}

ConTransmuteMimic

public override void Tick()

cs

	public override void OnBeforeStart()
	{
		List<Thing> list = owner.things.List((Thing t) => !t.IsMultisize && !t.isEquipped, onlyAccessible: true); 
		List<Thing> list = owner.things.List((Thing t) => !t.IsMultisize && t.c_isImportant, onlyAccessible: true); 
		if (list.Count == 0) 
		{ 
			list = owner.things.List((Thing t) => !t.IsMultisize && !t.isEquipped, onlyAccessible: true); 
		} 
		if (list.Count > 0)
		{
			thing = list.RandomItem().Duplicate(1);

ContentGallery

using System.Collections.Generic;

cs
using System.Collections.Generic;
using System.IO; 
using System.Linq;
using UnityEngine;
using UnityEngine.UI;

public override void BuildNote(UINote n, string idTopic)

cs
	{
		foreach (string id in ids)
		{
			UIItem uIItem = n.AddItem("ItemGallery"); 
			int idx = id.ToInt();
			string path = EClass.core.refs.dictSketches2[idx]; 
			string path = GalleryFlattenAndRename.root + "/" + EClass.core.refs.dictSketches2[idx]; 
			if (!File.Exists(path)) 
			{ 
				EClass.ui.Say("Full Image not found: " + path); 
				continue; 
			} 
			if (!File.Exists(path + "_t")) 
			{ 
				EClass.ui.Say("Thumbnail not found: " + path); 
				continue; 
			} 
			UIItem uIItem = n.AddItem("ItemGallery"); 
			Sprite sprite = sprites.TryGetValue(idx);
			if (!sprite)
			{

public override void BuildNote(UINote n, string idTopic)

cs
			uIItem.text1.text = "#" + id;
			uIItem.button1.SetOnClick(delegate
			{
				Debug.Log(path); 
				SE.Play("click_recipe");
				Sprite sprite2 = spritesFull.TryGetValue(idx);
				if (!sprite2)
				{
					Texture2D texture2D2 = IO.LoadPNG(path); 
					Texture2D texture2D2 = IO.LoadPNG(path, FilterMode.Trilinear); 
					sprite2 = Sprite.Create(texture2D2, new Rect(0f, 0f, texture2D2.width, texture2D2.height), new Vector2(0.5f, 0.5f));
					spritesFull[idx] = sprite2;
				}

Dialog

void Commit()

cs
		}
	}

	public static void TryWarnSlaughter(Action action) 
	public static void TryWarnSlaughter(Action action, Chara c) 
	{
		if (ELayer.core.config.game.ignoreWarnSlaughter)
		{

public static void TryWarnSlaughter(Action action)

cs
		}
		else
		{
			TryWarn("warn_slaughter", action); 
			TryWarn("warn_slaughter".lang(c.Name), action); 
		}
	}

ELEMENT

public virtual int GetPower(Card c)

cs
		return 100;
	}

	public virtual void SetTextValue(UIText text) 
	public virtual void SetTextValue(UIText text, bool shorten = false) 
	{
		string text2 = DisplayValue.ToString() ?? "";
		if (ShowXP)

public virtual void SetTextValue(UIText text)

cs
	}
	if (vLink != 0)
	{
		string text3 = ((vLink > 0) ? "+" : "") + vLink; 
		string text3 = ((vLink > 0) ? "+" : "") + (shorten ? vLink.ToShortNumber() : ((object)vLink)); 
		text2 = "<color=" + ((DisplayValue > ValueWithoutLink) ? SkinManager.CurrentColors.textGood : SkinManager.CurrentColors.textBad).ToHex() + ">" + text2 + (" (" + text3 + ")").TagSize(13) + "</color>";
	}
	text.text = text2;

Effect

public void Play(float delay, Point from, float fixY = 0f, Point to = null, Spri

cs
	Point _from = from.Copy();
	Point _to = to?.Copy() ?? null;
	TweenUtil.Tween(delay, delegate
	{ 
	}, delegate
	{
		Play(_from, fixY, _to, sprite);
	});

FACTION

public class FACTION

cs

	public const int bfTranquil = 3703;

	public const int fRation = 2207; 
	public const int fAttraction = 2206; 

	public const int bfVolcano = 3704;

public class FACTION

cs

	public const int fConstruction = 2003;

	public const int fAttraction = 2206; 
	public const int fRation = 2207; 

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

FOOD

public class FOOD

cs
public class FOOD
{
	public const int food_god = 758; 
	public const int creativeDish = 764;

	public const int food_CHA = 700; 
	public const int food_blood = 710;

	public const int food_undead = 709;

	public const int food_human = 708;

	public const int food_cat = 701; 
	public const int gainWeight = 705; 

	public const int loseWeight = 706;

	public const int justcooked = 757; 
	public const int gainWeight = 705; 
	public const int food_god = 758; 

	public const int food_bug = 704;

public class FOOD

cs

	public const int food_poison = 702;

	public const int food_cat = 701; 
	public const int kirimi = 707;

	public const int food_CHA = 700; 
	public const int justcooked = 757; 

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

GalleryFlattenAndRename

public static class GalleryFlattenAndRename

cs
public static UD_Int_String Run()
{
	dict = new UD_Int_String();
	int num = MoveAllFilesUnderSubfoldersToRoot(root); 
	MoveAllFilesUnderSubfoldersToRoot(root); 
	string[] array = Directory.GetDirectories(root, "*", SearchOption.AllDirectories).ToArray();
	for (int i = 0; i < array.Length; i++)
	{

public static UD_Int_String Run()

cs
			}
		}
		CreateThumbnailsSameFolder(root, 360, 240);
		Debug.Log("[Gallery] Done. Total:" + num + "/" + dict.Count); 
		Debug.Log("[Gallery] Done. Total:" + dict.Count); 
		return dict;
	}

	private static int MoveAllFilesUnderSubfoldersToRoot(string root) 
	private static void MoveAllFilesUnderSubfoldersToRoot(string root) 
	{
		string[] directories = Directory.GetDirectories(root, "*", SearchOption.AllDirectories);
		int num = 0; 
		string[] array = directories; 
		for (int i = 0; i < array.Length; i++) 
		for (int i = 0; i < directories.Length; i++) 
		{
			string[] files = Directory.GetFiles(array[i], "*", SearchOption.TopDirectoryOnly); 
			string[] files = Directory.GetFiles(directories[i], "*", SearchOption.TopDirectoryOnly); 
			foreach (string text in files)
			{
				string text2 = Path.Combine(root, Path.GetFileName(text));
				File.Move(text, text2); 
				if (!text2.EndsWith("meta")) 
				if (!File.Exists(text2)) 
				{
					num++; 
					File.Move(text, text2); 
				}
			}
		}
		return num; 
	}

	private static void RenameAllFilesToLeadingNumber(string root)
	{
		string[] files = Directory.GetFiles(root, "*", SearchOption.TopDirectoryOnly);
		foreach (string obj in files) 
		foreach (string text in files) 
		{
			string extension = Path.GetExtension(obj); 
			string text = Path.GetFileNameWithoutExtension(obj).Split('_')[0]; 
			string text2 = Path.Combine(root, text + extension); 
			File.Move(obj, text2); 
			dict[text.ToInt()] = text2; 
			string extension = Path.GetExtension(text); 
			if (IsImageExt(extension)) 
			{ 
				string text2 = Path.GetFileNameWithoutExtension(text).Split('_')[0]; 
				string text3 = Path.Combine(root, text2 + extension); 
				if (text != text3) 
				{ 
					File.Move(text, text3); 
				} 
				dict[text2.ToInt()] = text2 + extension; 
			} 
		}
	}

private static void CreateThumbnailsSameFolder(string root, int maxW, int maxH)

cs
		{
			continue;
		}
		string path = text + "_t"; 
		if (File.Exists(path)) 
		{ 
			continue; 
		} 
		string text2 = Path.GetExtension(text).ToLowerInvariant();
		if (!IsImageExt(text2) || Path.GetFileName(text).Contains(text2 + "_t"))
		{

private static void CreateThumbnailsSameFolder(string root, int maxW, int maxH)

cs
		int w = Mathf.Max(1, Mathf.RoundToInt((float)width * num));
		int h = Mathf.Max(1, Mathf.RoundToInt((float)height * num));
		Texture2D texture2D2 = ResizeTo(texture2D, w, h);
		string path = text + "_t"; 
		byte[] bytes = ((!(text2 == ".png")) ? texture2D2.EncodeToJPG(90) : texture2D2.EncodeToPNG());
		File.WriteAllBytes(path, bytes);
		Object.DestroyImmediate(texture2D);

HotItemAct

public override bool TrySetAct(ActPlan p)

cs
	{
		return false;
	}
	p.TrySetAct(source.GetName(), delegate
	p.TrySetAct(((EClass.pc.elements.GetElement(act.id) as Act) ?? act).GetText(), delegate
	{
		if (tg != null && !tg.ExistsOnMap)
		{

HotItemEQSet

public override void Perform()

cs
		Card card = null;
		foreach (int i in ids)
		{
			Thing thing = EClass.pc.things.Find((Thing t) => t.uid == i && !t.isEquipped); 
			Thing thing = EClass.pc.things.Find((Thing t) => t.uid == i && !t.isEquipped && t.invY != 1); 
			if (thing == null)
			{
				continue;

InvOwner

public bool Process(bool startTransaction = false)

cs
				}
			}
		}
		if (destInv.Container.isChara && !destInv.owner.IsPC && !destInv.owner.Chara.CanAcceptItem(thing2)) 
		if (destInv.Container.isChara && !destInv.owner.IsPC && !destInv.owner.Chara.CanAcceptItem(thing2, -1, dragItemCard.from.container == destInv.owner)) 
		{
			destInv.owner.Chara.Talk("tooHeavy");
			return false;

InvOwnerCraft

public override bool CanTargetAlly

cs
{
	get
	{
		if (!(crafter is TraitToolTalisman)) 
		if (!(crafter is TraitToolTalisman) && !(crafter is TraitRuneMold) && !(crafter is TraitGrindstone)) 
		{
			return crafter is TraitRuneMold; 
			return crafter is TraitBarrelMaker; 
		}
		return true;
	}

Los

private static bool IsBlocked(int x, int z, int sx, int sz)

cs
		return flag;
	}

	public static List<Point> ListVisible(Point p1, Point p2, int radius, Action<Point, bool> _onVisit = null) 
	public static List<Point> ListVisible(Point p1, Point p2, int radius, Action<Point, bool> _onVisit = null, bool returnOnBlocked = true) 
	{
		List<Point> list = new List<Point>();
		List<Point> vecs = new List<Point>();

public static List<Point> ListVisible(Point p1, Point p2, int radius, Action<Poi

cs
	}
	IsVisible(p1.x, point.x, p1.z, point.z, delegate(Point p, bool blocked)
	{
		if (!blocked) 
		if (!blocked || !returnOnBlocked) 
		{
			list.Add(p.Copy());
		}

public static List<Point> ListVisible(Point p1, Point p2, int radius, Action<Poi

cs
			{
				_onVisit(p, blocked);
			}
		}); 
		}, returnOnBlocked); 
		return list;
	}

MUTATION

public class MUTATION

cs
public class MUTATION
{
	public const int mutationCha = 1522; 
	public const int mutationStrN = 1521;

	public const int mutationSpeedN = 1519;

	public const int mutationSpeed = 1518;

	public const int mutationCha = 1522; 
	public const int mutationRegen = 1516;

	public const int mutationDexN = 1515;

public class MUTATION

cs

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

Map

public List<Point> ListPointsInArc(Point center, Point to, int radius, float ang

cs
		return list;
	}

	public List<Point> ListPointsInLine(Point center, Point to, int radius) 
	public List<Point> ListPointsInLine(Point center, Point to, int radius, bool returnOnBlocked = true) 
	{
		return Los.ListVisible(center, to, radius); 
		return Los.ListVisible(center, to, radius, null, returnOnBlocked); 
	}

	public void SetBounds(int size)

POLICY

public class POLICY

cs

	public const int food_for_people = 2502;

	public const int prohibition = 2503; 
	public const int resident_tax = 2512;

	public const int prohibition = 2503; 
	public const int self_sufficient = 2511;

	public const int ban_radio = 2510;

public class POLICY

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

QuestTaskHunt

public enum Setup

cs

	public Setup setup;

	public SourceRace.Row Race => EClass.sources.races.map[idRace]; 
	public SourceRace.Row Race => EClass.sources.races.map.TryGetValue(idRace, "yeek"); 

	public override string RefDrama2
	{

Resistance

public override Sprite GetIcon(string suffix = "")

cs
		return SpriteSheet.Get("Media/Graphics/Icon/Element/icon_elements", "ele_" + base.source.alias) ?? SpriteSheet.Get("Media/Graphics/Icon/Element/icon_elements", "ele_resist");
	}

	public override void SetTextValue(UIText text) 
	public override void SetTextValue(UIText text, bool shorten = false) 
	{
		text.text = "なし"; 
		text.text = ""; 
	}
}

SKILL

public class SKILL

cs

	public const int vigor = 62;

	public const int weaponPolearm = 106; 
	public const int weaponDagger = 107; 

	public const int PER = 73;

public class SKILL

cs

	public const int fishing = 245;

	public const int weaponDagger = 107; 
	public const int weaponPolearm = 106; 

	public const int carpentry = 255;

public class SKILL

cs

	public const int eleNerve = 918;

	public const int eleChaos = 920; 
	public const int eleHoly = 919; 

	public const int eleMagic = 921;

public class SKILL

cs

	public const int resDecay = 970;

	public const int gathering = 250; 
	public const int resCurse = 972;

	public const int resDamage = 971;

	public const int gathering = 250; 
	public const int resPoison = 955;

	public const int eleMind = 914;

	public const int eleHoly = 919; 
	public const int eleChaos = 920; 

	public const int eleLightning = 912;

public class SKILL

cs

	public const int building = 288;

	public const int eleDarkness = 913; 
	public const int cooking = 287; 

	public const int farming = 286; 
	public const int eleDarkness = 913; 

	public const int reading = 285;

public class SKILL

cs

	public const int investing = 292;

	public const int cooking = 287; 
	public const int farming = 286; 

	public const int regeneration = 300;

	public const int eleCold = 911; 
	public const int meditation = 301; 

	public const int disarmTrap = 293; 
	public const int controlmana = 302; 

	public const int env = 313; 
	public const int manaCapacity = 303; 

	public const int fun = 312; 
	public const int casting = 304; 

	public const int bladder = 311; 
	public const int magicDevice = 305; 

	public const int hygine = 310; 
	public const int faith = 306; 

	public const int eleFire = 910; 
	public const int memorization = 307; 

	public const int faith = 306; 
	public const int hygine = 310; 

	public const int magicDevice = 305; 
	public const int eleFire = 910; 

	public const int casting = 304; 
	public const int bladder = 311; 

	public const int manaCapacity = 303; 
	public const int fun = 312; 

	public const int controlmana = 302; 
	public const int env = 313; 

	public const int meditation = 301; 
	public const int eleCold = 911; 

	public const int memorization = 307; 
	public const int disarmTrap = 293; 

	public static readonly int[] IDS = new int[134]
	{

public class SKILL

cs
		241, 240, 237, 235, 230, 227, 226, 225, 123, 220,
		200, 152, 151, 150, 135, 134, 133, 132, 210, 207,
		100, 105, 71, 70, 68, 67, 66, 65, 72, 64,
		61, 60, 57, 56, 55, 51, 62, 106, 73, 75, 
		61, 60, 57, 56, 55, 51, 62, 107, 73, 75, 
		104, 103, 102, 101, 94, 93, 74, 92, 90, 80,
		79, 78, 77, 76, 91, 245, 107, 255, 916, 917, 
		918, 920, 921, 922, 923, 924, 925, 926, 950, 951, 
		79, 78, 77, 76, 91, 245, 106, 255, 916, 917, 
		918, 919, 921, 922, 923, 924, 925, 926, 950, 951, 
		952, 953, 915, 954, 956, 957, 958, 959, 960, 961,
		962, 963, 964, 965, 970, 972, 971, 250, 955, 914, 
		919, 912, 290, 289, 288, 913, 286, 285, 291, 281, 
		261, 260, 259, 258, 257, 256, 280, 292, 287, 300, 
		911, 293, 313, 312, 311, 310, 910, 306, 305, 304, 
		303, 302, 301, 307
		962, 963, 964, 965, 970, 250, 972, 971, 955, 914, 
		920, 912, 290, 289, 288, 287, 913, 285, 291, 281, 
		261, 260, 259, 258, 257, 256, 280, 292, 286, 300, 
		301, 302, 303, 304, 305, 306, 307, 310, 910, 311, 
		312, 313, 911, 293
	};
}
public class Skill : Element

SLOT

public class SLOT

cs
public class SLOT
{
	public const int toolbelt = 44; 
	public const int torso = 32; 
	public const int back = 33; 

	public const int lightsource = 45; 
	public const int arm = 34; 

	public const int foot = 39; 
	public const int finger = 36; 

	public const int leg = 38; 
	public const int hand = 35; 

	public const int ammo = 42; 
	public const int waist = 37; 

	public const int arm = 34; 
	public const int toolbelt = 44; 

	public const int waist = 37; 
	public const int foot = 39; 

	public const int hand = 35; 
	public const int lightsource = 45; 

	public const int tool = 40;

	public const int back = 33; 
	public const int token = 43; 

	public const int neck = 31; 
	public const int range = 41; 

	public const int finger = 36; 
	public const int torso = 32; 

	public const int head = 30; 
	public const int leg = 38; 

	public const int range = 41; 
	public const int neck = 31; 

	public const int token = 43; 
	public const int ammo = 42; 
	public const int head = 30; 

	public static readonly int[] IDS = new int[16]
	{
		44, 32, 45, 39, 38, 42, 34, 37, 35, 40, 
		33, 31, 36, 30, 41, 43
		33, 34, 36, 35, 37, 44, 39, 45, 40, 43, 
		41, 32, 38, 31, 42, 30
	};
}

SPELL

public class SPELL

cs
public class SPELL
{
	public const int sword_Nerve = 51008; 
	public const int hand_Impact = 50415; 

	public const int puddle_Nerve = 50908; 
	public const int flare_Sound = 51207; 

	public const int weapon_Nerve = 50808; 
	public const int bit_Sound = 51107; 

	public const int miasma_Nerve = 50708; 
	public const int sword_Sound = 51007; 

	public const int bit_Nerve = 51108; 
	public const int puddle_Sound = 50907; 

	public const int miasma_Poison = 50705; 
	public const int weapon_Sound = 50807; 

	public const int arrow_Nerve = 50508; 
	public const int miasma_Sound = 50707; 

	public const int hand_Nerve = 50408; 
	public const int funnel_Sound = 50607; 

	public const int puddle_Mind = 50904; 
	public const int arrow_Sound = 50507; 

	public const int bolt_Nerve = 50308; 
	public const int hand_Sound = 50407; 

	public const int sword_Mind = 51004; 
	public const int bolt_Sound = 50307; 
	public const int hand_Void = 50416; 
	public const int ball_Sound = 50107; 
	public const int flare_Nether = 51206; 

	public const int ball_Nerve = 50108;

	public const int bolt_Void = 50316; 
	public const int bolt_Nerve = 50308; 
	public const int hand_Nerve = 50408; 
	public const int arrow_Nerve = 50508; 
	public const int funnel_Nerve = 50608;

	public const int flare_Nerve = 51208; 
	public const int miasma_Nerve = 50708; 

	public const int ball_Holy = 50109; 
	public const int weapon_Nerve = 50808; 

	public const int weapon_Mind = 50804; 
	public const int puddle_Nerve = 50908; 

	public const int miasma_Mind = 50704; 
	public const int sword_Nerve = 51008; 
	public const int bit_Nerve = 51108; 
	public const int flare_Nerve = 51208; 
	public const int ball_Holy = 50109; 

	public const int bolt_Holy = 50309;

public class SPELL

cs

	public const int funnel_Holy = 50609;

	public const int funnel_Mind = 50604; 
	public const int arrow_Mind = 50504; 
	public const int arrow_Void = 50516; 

	public const int miasma_Holy = 50709;

	public const int weapon_Holy = 50809; 
	public const int puddle_Holy = 50909; 
	public const int sword_Holy = 51009; 
	public const int bit_Nether = 51106; 

	public const int bit_Holy = 51109; 
	public const int sword_Nether = 51006; 

	public const int flare_Holy = 51209; 
	public const int arrow_Mind = 50504; 

	public const int flare_Sound = 51207; 
	public const int funnel_Mind = 50604; 

	public const int bit_Sound = 51107; 
	public const int miasma_Mind = 50704; 

	public const int puddle_Sound = 50907; 
	public const int weapon_Mind = 50804; 

	public const int funnel_Poison = 50605; 
	public const int puddle_Mind = 50904; 

	public const int weapon_Poison = 50805; 
	public const int sword_Mind = 51004; 

	public const int puddle_Poison = 50905; 
	public const int bit_Mind = 51104; 

	public const int sword_Poison = 51005; 
	public const int flare_Mind = 51204; 

	public const int arrow_Poison = 50505; 
	public const int ball_Poison = 50105; 

	public const int bit_Poison = 51105; 
	public const int sword_Void = 51016; 

	public const int flare_Poison = 51205; 
	public const int puddle_Void = 50916; 

	public const int ball_Nether = 50106; 
	public const int bolt_Poison = 50305; 

	public const int hand_Poison = 50405;

	public const int bolt_Nether = 50306; 
	public const int arrow_Poison = 50505; 

	public const int hand_Nether = 50406; 
	public const int funnel_Poison = 50605; 

	public const int arrow_Nether = 50506; 
	public const int miasma_Poison = 50705; 

	public const int funnel_Nether = 50606; 
	public const int weapon_Poison = 50805; 

	public const int miasma_Nether = 50706; 
	public const int puddle_Nether = 50906; 

	public const int weapon_Nether = 50806;

	public const int bolt_Poison = 50305; 
	public const int puddle_Nether = 50906; 
	public const int sword_Nether = 51006; 
	public const int miasma_Nether = 50706; 

	public const int bit_Nether = 51106; 
	public const int funnel_Nether = 50606; 

	public const int flare_Nether = 51206; 
	public const int arrow_Nether = 50506; 

	public const int ball_Chaos = 50110; 
	public const int hand_Nether = 50406; 

	public const int ball_Sound = 50107; 
	public const int funnel_Void = 50616; 

	public const int bolt_Sound = 50307; 
	public const int bolt_Nether = 50306; 

	public const int hand_Sound = 50407; 
	public const int weapon_Void = 50816; 

	public const int arrow_Sound = 50507; 
	public const int ball_Nether = 50106; 

	public const int flare_Mind = 51204; 
	public const int flare_Poison = 51205; 

	public const int funnel_Sound = 50607; 
	public const int bit_Poison = 51105; 

	public const int bit_Mind = 51104; 
	public const int sword_Poison = 51005; 

	public const int miasma_Sound = 50707; 
	public const int puddle_Poison = 50905; 

	public const int weapon_Sound = 50807; 
	public const int miasma_Void = 50716; 

	public const int sword_Sound = 51007; 
	public const int weapon_Holy = 50809; 

	public const int ball_Poison = 50105; 
	public const int puddle_Holy = 50909; 

	public const int flare_Ether = 51212; 
	public const int sword_Holy = 51009; 

	public const int hand_Chaos = 50410; 
	public const int puddle_Ether = 50912; 

	public const int ball_Impact = 50115; 
	public const int sword_Ether = 51012; 

	public const int flare_Cut = 51214; 
	public const int bit_Ether = 51112; 

	public const int bit_Cut = 51114; 
	public const int hand_Mind = 50404; 

	public const int sword_Cut = 51014; 
	public const int ball_Acid = 50113; 

	public const int puddle_Cut = 50914; 
	public const int weapon_Impact = 50815; 

	public const int weapon_Cut = 50814; 
	public const int bolt_Acid = 50313; 

	public const int bolt_Impact = 50315; 
	public const int hand_Acid = 50413; 

	public const int miasma_Cut = 50714; 
	public const int arrow_Acid = 50513; 

	public const int arrow_Cut = 50514; 
	public const int funnel_Acid = 50613; 

	public const int hand_Cut = 50414; 
	public const int miasma_Acid = 50713; 

	public const int bolt_Cut = 50314; 
	public const int weapon_Acid = 50813; 

	public const int ball_Cut = 50114; 
	public const int puddle_Acid = 50913; 

	public const int flare_Acid = 51213; 
	public const int sword_Acid = 51013; 

	public const int bit_Acid = 51113;

	public const int funnel_Cut = 50614; 
	public const int flare_Acid = 51213; 

	public const int hand_Impact = 50415; 
	public const int ball_Cut = 50114; 

	public const int arrow_Impact = 50515; 
	public const int bolt_Impact = 50315; 

	public const int funnel_Impact = 50615;

	public const int sword_Void = 51016; 
	public const int puddle_Void = 50916; 
	public const int weapon_Void = 50816; 
	public const int miasma_Void = 50716; 
	public const int ball_Impact = 50115; 

	public const int funnel_Void = 50616; 
	public const int flare_Cut = 51214; 

	public const int arrow_Void = 50516; 
	public const int bit_Cut = 51114; 

	public const int hand_Void = 50416; 
	public const int sword_Cut = 51014; 

	public const int bolt_Void = 50316; 
	public const int weapon_Ether = 50812; 

	public const int ball_Void = 50116; 
	public const int puddle_Cut = 50914; 

	public const int flare_Impact = 51215; 
	public const int miasma_Cut = 50714; 

	public const int bit_Impact = 51115; 
	public const int funnel_Cut = 50614; 

	public const int sword_Impact = 51015; 
	public const int arrow_Cut = 50514; 

	public const int puddle_Impact = 50915; 
	public const int hand_Cut = 50414; 

	public const int weapon_Impact = 50815; 
	public const int bolt_Cut = 50314; 

	public const int miasma_Impact = 50715;

	public const int sword_Acid = 51013; 
	public const int puddle_Acid = 50913; 
	public const int weapon_Acid = 50813; 
	public const int weapon_Cut = 50814; 

	public const int miasma_Acid = 50713; 
	public const int miasma_Ether = 50712; 

	public const int weapon_Magic = 50811; 
	public const int funnel_Ether = 50612; 

	public const int miasma_Magic = 50711; 
	public const int arrow_Ether = 50512; 

	public const int funnel_Magic = 50611; 
	public const int sword_Chaos = 51010; 

	public const int arrow_Magic = 50511; 
	public const int puddle_Chaos = 50910; 

	public const int hand_Magic = 50411; 
	public const int bit_Impact = 51115; 

	public const int bolt_Magic = 50311; 
	public const int flare_Impact = 51215; 

	public const int ball_Magic = 50111; 
	public const int weapon_Chaos = 50810; 

	public const int flare_Chaos = 51210; 
	public const int miasma_Chaos = 50710; 

	public const int bit_Chaos = 51110;

	public const int sword_Chaos = 51010; 
	public const int funnel_Chaos = 50610; 

	public const int puddle_Chaos = 50910; 
	public const int hand_Chaos = 50410; 

	public const int weapon_Chaos = 50810; 
	public const int bolt_Chaos = 50310; 

	public const int miasma_Chaos = 50710; 
	public const int ball_Void = 50116; 

	public const int funnel_Chaos = 50610; 
	public const int ball_Chaos = 50110; 

	public const int arrow_Chaos = 50510; 
	public const int flare_Holy = 51209; 

	public const int puddle_Magic = 50911; 
	public const int bit_Holy = 51109; 

	public const int bolt_Chaos = 50310; 
	public const int arrow_Chaos = 50510; 

	public const int sword_Magic = 51011; 
	public const int arrow_Impact = 50515; 

	public const int flare_Magic = 51211; 
	public const int flare_Chaos = 51210; 

	public const int funnel_Acid = 50613; 
	public const int sword_Impact = 51015; 

	public const int arrow_Acid = 50513; 
	public const int hand_Ether = 50412; 

	public const int hand_Acid = 50413; 
	public const int bolt_Ether = 50312; 

	public const int bolt_Acid = 50313; 
	public const int puddle_Impact = 50915; 

	public const int ball_Acid = 50113; 
	public const int ball_Ether = 50112; 

	public const int bit_Ether = 51112; 
	public const int flare_Magic = 51211; 

	public const int sword_Ether = 51012; 
	public const int bit_Magic = 51111; 

	public const int puddle_Ether = 50912; 
	public const int ball_Magic = 50111; 

	public const int weapon_Ether = 50812; 
	public const int sword_Magic = 51011; 

	public const int miasma_Ether = 50712; 
	public const int weapon_Magic = 50811; 

	public const int funnel_Ether = 50612; 
	public const int miasma_Magic = 50711; 

	public const int arrow_Ether = 50512; 
	public const int funnel_Magic = 50611; 

	public const int hand_Ether = 50412; 
	public const int arrow_Magic = 50511; 

	public const int bolt_Ether = 50312; 
	public const int hand_Magic = 50411; 

	public const int ball_Ether = 50112; 
	public const int bolt_Magic = 50311; 

	public const int bit_Magic = 51111; 
	public const int puddle_Magic = 50911; 

	public const int hand_Mind = 50404; 
	public const int flare_Ether = 51212; 

	public const int arrow_Cold = 50501; 
	public const int hand_Cold = 50401; 

	public const int ball_Mind = 50104;

public class SPELL

cs

	public const int SpSpeedUp = 8510;

	public const int SpTransmuteCat = 8792; 
	public const int SpHealCritical = 8402;

	public const int SpHealHeavy = 8401; 
	public const int SpHealLight = 8400;

	public const int SpReturn = 8220; 
	public const int SpTelekinesis = 8215; 

	public const int SpGate = 8202;

public class SPELL

cs

	public const int ball_ = 7001;

	public const int SpEvac = 8221; 
	public const int SpReturn = 8220; 

	public const int SpHealHeavy = 8401; 
	public const int SpEvac = 8221; 

	public const int SpIdentify = 8230;

	public const int SpUncurse = 8240; 
	public const int SpIdentifyG = 8232; 

	public const int SpWish = 8390;

public class SPELL

cs

	public const int SpChangeMaterialLesser = 8284;

	public const int SpFaith = 8281; 
	public const int SpTransmuteCat = 8792; 

	public const int SpLighten = 8280; 
	public const int SpFaith = 8281; 

	public const int SpMagicMap = 8260;

public class SPELL

cs

	public const int SpUncurseG = 8241;

	public const int SpIdentifyG = 8232; 
	public const int SpUncurse = 8240; 

	public const int SpDarkness = 8800; 
	public const int SpLighten = 8280; 

	public const int SpWeb = 8801; 
	public const int bolt_Mind = 50304; 
	public const int SpDarkness = 8800; 

	public const int SpSummon = 9000;

public class SPELL

cs

	public const int funnel_Cold = 50601;

	public const int hand_Cold = 50401; 
	public const int arrow_Cold = 50501; 

	public const int bolt_Cold = 50301;

public class SPELL

cs

	public const int FieldSpider = 10000;

	public const int bolt_Mind = 50304; 
	public const int SpWeb = 8801; 

	public const int SpDrawBacker = 9503;

public class SPELL

cs

	public const int flare_Void = 51216;

	public static readonly int[] IDS = new int[292] 
	public static readonly int[] IDS = new int[293] 
	{
		51008, 50908, 50808, 50708, 51108, 50705, 50508, 50408, 50904, 50308, 
		51004, 50108, 50608, 51208, 50109, 50804, 50704, 50309, 50409, 50509, 
		50609, 50604, 50504, 50709, 50809, 50909, 51009, 51109, 51209, 51207, 
		51107, 50907, 50605, 50805, 50905, 51005, 50505, 51105, 51205, 50106, 
		50405, 50306, 50406, 50506, 50606, 50706, 50806, 50305, 50906, 51006, 
		51106, 51206, 50110, 50107, 50307, 50407, 50507, 51204, 50607, 51104, 
		50707, 50807, 51007, 50105, 51212, 50410, 50115, 51214, 51114, 51014, 
		50914, 50814, 50315, 50714, 50514, 50414, 50314, 50114, 51213, 51113, 
		50614, 50415, 50515, 50615, 51016, 50916, 50816, 50716, 50616, 50516, 
		50416, 50316, 50116, 51215, 51115, 51015, 50915, 50815, 50715, 51013, 
		50913, 50813, 50713, 50811, 50711, 50611, 50511, 50411, 50311, 50111, 
		51210, 51110, 51010, 50910, 50810, 50710, 50610, 50510, 50911, 50310, 
		51011, 51211, 50613, 50513, 50413, 50313, 50113, 51112, 51012, 50912, 
		50812, 50712, 50612, 50512, 50412, 50312, 50112, 51111, 50404, 50501, 
		50415, 51207, 51107, 51007, 50907, 50807, 50707, 50607, 50507, 50407, 
		50307, 50416, 50107, 51206, 50108, 50316, 50308, 50408, 50508, 50608, 
		50708, 50808, 50908, 51008, 51108, 51208, 50109, 50309, 50409, 50509, 
		50609, 50516, 50709, 51106, 51006, 50504, 50604, 50704, 50804, 50904, 
		51004, 51104, 51204, 50105, 51016, 50916, 50305, 50405, 50505, 50605, 
		50705, 50805, 50906, 50806, 50706, 50606, 50506, 50406, 50616, 50306, 
		50816, 50106, 51205, 51105, 51005, 50905, 50716, 50809, 50909, 51009, 
		50912, 51012, 51112, 50404, 50113, 50815, 50313, 50413, 50513, 50613, 
		50713, 50813, 50913, 51013, 51113, 51213, 50114, 50315, 50615, 50115, 
		51214, 51114, 51014, 50812, 50914, 50714, 50614, 50514, 50414, 50314, 
		50715, 50814, 50712, 50612, 50512, 51010, 50910, 51115, 51215, 50810, 
		50710, 51110, 50610, 50410, 50310, 50116, 50110, 51209, 51109, 50510, 
		50515, 51210, 51015, 50412, 50312, 50915, 50112, 51211, 51111, 50111, 
		51011, 50811, 50711, 50611, 50511, 50411, 50311, 50911, 51212, 50401, 
		50104, 8504, 8503, 8502, 8501, 8500, 8491, 8490, 8480, 8471,
		8470, 8450, 8430, 8406, 8405, 8404, 8506, 8403, 8507, 8550,
		8791, 8790, 8780, 8776, 8775, 8770, 8710, 8708, 8707, 8706,
		8705, 8704, 8702, 8700, 8555, 8510, 8792, 8402, 8400, 8220, 
		8705, 8704, 8702, 8700, 8555, 8510, 8402, 8401, 8400, 8215, 
		8202, 8201, 8200, 7800, 7010, 7009, 7008, 7007, 7006, 7005,
		7004, 7003, 7002, 7001, 8221, 8401, 8230, 8240, 8390, 8380, 
		8300, 8288, 8286, 8285, 8284, 8281, 8280, 8260, 8256, 8255, 
		8251, 8250, 8241, 8232, 8800, 8801, 9000, 50402, 50302, 50102, 
		51201, 51101, 51001, 50901, 50801, 50701, 50601, 50401, 50301, 50101, 
		51200, 51100, 50502, 51000, 50602, 50802, 51203, 51103, 51003, 50903, 
		50803, 50703, 50603, 50503, 50403, 50303, 50103, 51202, 51102, 51002, 
		50902, 50702, 50900, 50800, 50700, 9054, 9053, 9052, 9051, 9050, 
		9010, 9009, 9008, 9007, 9006, 9005, 9004, 9003, 9002, 9001, 
		9055, 9056, 9150, 9151, 50600, 50500, 50400, 50300, 51116, 50100, 
		10000, 50304, 9503, 9501, 9500, 9210, 9200, 9160, 9156, 9155, 
		9502, 51216
		7004, 7003, 7002, 7001, 8220, 8221, 8230, 8232, 8390, 8380, 
		8300, 8288, 8286, 8285, 8284, 8792, 8281, 8260, 8256, 8255, 
		8251, 8250, 8241, 8240, 8280, 50304, 8800, 9000, 50402, 50302, 
		50102, 51201, 51101, 51001, 50901, 50801, 50701, 50601, 50501, 50301, 
		50101, 51200, 51100, 50502, 51000, 50602, 50802, 51203, 51103, 51003, 
		50903, 50803, 50703, 50603, 50503, 50403, 50303, 50103, 51202, 51102, 
		51002, 50902, 50702, 50900, 50800, 50700, 9054, 9053, 9052, 9051, 
		9050, 9010, 9009, 9008, 9007, 9006, 9005, 9004, 9003, 9002, 
		9001, 9055, 9056, 9150, 9151, 50600, 50500, 50400, 50300, 51116, 
		50100, 10000, 8801, 9503, 9501, 9500, 9210, 9200, 9160, 9156, 
		9155, 9502, 51216
	};
}
public class Spell : Ability

SourcePref

public int scaleIcon

cs
		}
	}

	public float heightFix 
	{ 
		get 
		{ 
			return (float)ints[24] * 0.01f; 
		} 
		set 
		{ 
			ints[24] = (int)(value * 100f); 
		} 
	} 
	public bool bypassShadow
	{
		get

TCOrbitChara

public override void OnSetOwner()

cs
	{
		owner = base.owner as Chara;
		RenderData data = owner.renderer.data;
		goIcon.transform.SetLocalPositionY(data.offset.y + data.size.y + 0.32f); 
		goIcon.transform.SetLocalPositionY(data.offset.y + data.size.y + 0.32f + owner.Pref.heightFix); 
		timer = 0f; 
		Refresh(); 
		RefreshAll();
	}

public override void RefreshAll()

cs
	Emo2 emo = owner.emoIcon;
	if (emo == Emo2.none)
	{
		if (!owner.IsPC && ((owner.affinity.CanGiveCard() && !EMono.player.codex.DroppedCard(owner.id)) || owner.GetInt(71) == -2)) 
		if (!owner.IsPC && !owner.IsHostile() && ((owner.affinity.CanGiveCard() && !EMono.player.codex.DroppedCard(owner.id)) || owner.GetInt(71) == -2)) 
		{
			emo = Emo2.hintEvent;
		}

TCOrbitThing

public override void OnSetOwner()

cs
	{
		owner = base.owner as Thing;
		RenderData data = owner.renderer.data;
		goIcon.transform.SetLocalPositionY(data.offset.y + data.size.y + 0.32f); 
		goIcon.transform.SetLocalPositionY(data.offset.y + data.size.y + 0.32f + owner.Pref.heightFix); 
		timer = 0f; 
		Refresh(); 
		RefreshAll();
	}

Trait

public void OnBarter(bool reroll = false)

cs
	{
		for (int num7 = 0; num7 < 30; num7++)
		{
			AddThing(ThingGen.CreateFromCategory((EClass.rnd(2) == 0) ? "_book" : "book")); 
			AddThing(ThingGen.CreateFromFilter("shop_seeker")); 
		}
		break;
	}

TraitCatalyst

public override void TrySetHeldAct(ActPlan p)

cs
	{
		return;
	}
	p.TrySetAct(act.source.GetName(), delegate
	p.TrySetAct(((EClass.pc.elements.GetElement(act.id) as Act) ?? act).GetText(), delegate
	{
		if (tg != null && !tg.ExistsOnMap)
		{

TraitGrindstone

public class TraitGrindstone : TraitCrafter

cs
	public override int numIng => 2;

	public override bool StopSoundProgress => true;
	public override bool IsConsumeIng => false; 
	public override bool ShouldConsumeIng(SourceRecipe.Row item, int index) 
	{ 
		return false; 
	} 
}

TraitToolButcher

public override void TrySetHeldAct(ActPlan p)

cs
{
	foreach (Chara chara in p.pos.Charas)
	{
		if (!chara.IsPCFaction || chara.IsPC) 
		if (!chara.IsPCFaction || chara.IsPC || chara.host != null) 
		{
			continue;
		}

public override void TrySetHeldAct(ActPlan p)

cs
					{
						target = _c
					});
				}); 
				}, _c); 
				return false;
			}, chara); 
			}, _c); 
		}
	}
}