Skip to content

EA 23.343.1 Nightly โ€‹

September 7, 2026

18 files modified.

Important Changes โ€‹

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

LayerMod (4) โ€‹

cs
private static void AddPreviewBox(UINote n, Sprite sprite, Action onClick) 
cs
private static void FitValue(UIItem item) 
cs
private static void AddIdList(UINote n, string lang, string[][] rows) 
cs
private void CreatePresetUI() 

AI_UseCrafter โ€‹

public override IEnumerable<Status> Run()

cs
	}
}
Rand.SetSeed();
if (crafter is TraitCookerMicrowave && recipe.id == "onsentamago" && EClass.rnd(3) != 0) 
if (owner != null && crafter is TraitCookerMicrowave && recipe.id == "onsentamago" && EClass.rnd(3) != 0) 
{
	int power = EClass.curve((200 + ings[0].Quality * 5) * (100 + owner.Evalue(287) * 10) / 100, 400, 100);
	ActEffect.ProcAt(EffectId.Explosive, power, BlessedState.Normal, crafter.owner.ExistsOnMap ? crafter.owner : owner, owner, owner.pos, isNeg: true, new ActRef

AM_Paint โ€‹

public override void OnUpdateInput()

cs
srRect.transform.position = Camera.main.ScreenToWorldPoint(mousePosition).SetZ(-100f);
float num = 0.02f / EClass.screen.Zoom;
Sprite sprite = canvas.owner.GetSprite();
srRect.transform.localScale = new Vector3((float)sprite.texture.width * num, (float)sprite.texture.height * num, 1f); 
srRect.transform.localScale = new Vector3(SpriteData.BaseWidth(sprite) * num, SpriteData.BaseHeight(sprite) * num, 1f); 
if (!EInput.leftMouse.clicked)
{
	return;

Card โ€‹

public Card SetLv(int a)

cs
{
	return this;
}
if (LV >= Mathf.Max(50, sourceCard.LV)) 
if (LV > Mathf.Max(50, sourceCard.LV)) 
{
	isScaled = true;
}

public virtual void SetImage(Image image)

cs
if (spriteReplacer != null)
{
	sprite = spriteReplacer.GetSprite();
	RenderData renderData = ResourceCache.Load<RenderData>("Scene/Render/Data/chara_custom_" + ((sprite.texture.height <= 128) ? "128" : "256")); 
	RenderData renderData = ResourceCache.Load<RenderData>("Scene/Render/Data/chara_custom_" + ((SpriteData.BaseHeight(sprite) <= 128f) ? "128" : "256")); 
	sourceRenderCard.SetImage(image, sprite, colorInt, setNativeSize: true, 0, 0, renderData, spriteReplacer.data.pref ?? Pref);
	return;
}

public byte[] GetPaintData()

cs
{
	Sprite sprite = GetSprite();
	Texture2D texture2D = ScreenCapture.CaptureScreenshotAsTexture();
	int num = sprite.texture.width * 2; 
	int num2 = sprite.texture.height * 2; 
	int num = (int)(SpriteData.BaseWidth(sprite) * 2f); 
	int num2 = (int)(SpriteData.BaseHeight(sprite) * 2f); 
	int x = (int)Mathf.Clamp(Input.mousePosition.x - (float)(num / 2), 1f, texture2D.width - num - 1);
	int y = (int)Mathf.Clamp(Input.mousePosition.y - (float)(num2 / 2), 1f, texture2D.height - num2 - 1);
	Color[] pixels = texture2D.GetPixels(x, y, num, num2);

CardActor โ€‹

public virtual void OnRender(RenderParam p)

cs
	}
}

public virtual void ReloadSprite() 
{ 
	sr.sprite = null; 
	RefreshSprite(); 
} 
public virtual void RefreshSprite()
{
	switch (type)

Chara โ€‹

public override SourcePref Pref

cs
	if (spriteReplacer.data.pref == null && !spriteReplacer.data.tryFixPrefNotLoadedAtStart)
	{
		spriteReplacer.data.tryFixPrefNotLoadedAtStart = true;
		spriteReplacer.data.LoadPref(); 
		spriteReplacer.data.LoadPrefAndFixDensity(); 
	}
	return spriteReplacer.data?.pref ?? EClass.core.refs.prefs.replacer1;
}

CharaActor โ€‹

public override void NextFrame()

cs
	RefreshSprite();
}

public override void ReloadSprite() 
{ 
	if (owner != null) 
	{ 
		sr.sprite = owner.GetSprite(); 
		RefreshSprite(); 
	} 
} 
public override void RefreshSprite()
{
	Sprite sprite = sr.sprite;

CharaRenderer โ€‹

public override void SetOwner(Card c)

cs
	SpriteReplacer spriteReplacer = SpriteReplacer.dictSkins.TryGetValue(owner.c_idSpriteReplacer);
	if (spriteReplacer != null)
	{
		data = ResourceCache.Load<RenderData>("Scene/Render/Data/chara_custom_" + ((spriteReplacer.GetSprite().texture.height <= 128) ? "128" : "256")); 
		data = ResourceCache.Load<RenderData>("Scene/Render/Data/chara_custom_" + ((SpriteData.BaseHeight(spriteReplacer.GetSprite()) <= 128f) ? "128" : "256")); 
		owner.spriteReplacer = spriteReplacer;
	}
}

Core โ€‹

public void OnApplicationFocus(bool focus)

cs
	}
	foreach (SpriteReplacer value in SpriteReplacer.dictSkins.Values)
	{
		value.data?.LoadPref(); 
		value.data?.LoadPrefAndFixDensity(); 
	} 
	if (RenderObject.syncList != null) 
	{ 
		foreach (ISyncScreen sync in RenderObject.syncList) 
		{ 
			if (sync is CardRenderer { hasActor: not false } cardRenderer && !cardRenderer.actor.isPCC) 
			{ 
				cardRenderer.actor.ReloadSprite(); 
			} 
		} 
	}
	WidgetRoster.SetDirty();
}

DNA โ€‹

public static Thing GenerateManiGene(Card owner)

cs
CardRow r = SpawnList.Get("chara").Select(100);
Rand.SetSeed(owner.c_seed);
Thing thing = GenerateGene(r, Type.Superior, owner.LV, owner.c_seed);
thing.c_DNA.cost = thing.c_DNA.cost / 2; 
thing.c_DNA.cost = 0; 
thing.c_DNA.isManiGene = true;
thing.ChangeMaterial(36); 
thing.MakeRefFrom("mani");
Rand.SetSeed();
owner.c_seed++;

LayerEditPlaylist โ€‹

public class ListBGM : ListOwner<BGMData, ItemGeneral>

cs
public bool single;

public bool sort = true; 
public new LayerEditPlaylist layer => base.layer as LayerEditPlaylist;

public override string IdTitle => idTitle;

public override void List()

cs
},
onList = delegate
{
	items.Sort((BGMData a, BGMData b) => a.id - b.id); 
	if (sort) 
	{ 
		items.Sort((BGMData a, BGMData b) => a.id - b.id); 
	} 
	foreach (BGMData item in items)
	{
		list.Add(item);

public void Refresh()

cs
multi.AddOwner(0, new ListBGM
{
	items = list,
	idTitle = "wPlaylist"
	idTitle = "wPlaylist", 
	sort = false
});
multi.AddOwner(1, new ListBGM
{

LayerMod โ€‹

public void OnPointerEnter(PointerEventData eventData)

cs
	}
}

private const float previewBoxHeight = 240f; 
private const string urlWorkshopItem = "https://steamcommunity.com/sharedfiles/filedetails/?id=";

public static LayerMod Instance;

public void OnPointerEnter(PointerEventData eventData)

cs
public UINote panelNote;

public UIItem infoTitle; 
public UIItem infoPreview; 
public UIItem infoPreviewNote; 
public UIItem infoAuthor; 
public UIItem infoVersion; 
public UIItem infoId; 
public UIItem infoWorkshop; 
public UIItem infoStatus; 
public UIItem infoProblems; 
public UIItem infoTags; 
public UIItem infoRequires; 
public UIItem infoIncompatible; 
public UIItem infoLoadAfter; 
public UIItem infoLoadBefore; 
public UIItem infoDescription; 
public GameObject infoSpace; 
private UIButton buttonFilter;

private BaseModPackage panelTarget;

public override void OnInit()

cs
list.callbacks = CreateCallbacks(list, builtin: false);
list2.callbacks = CreateCallbacks(list2, builtin: true);
InitSearchUI();
CreatePresetUI(); 
panelHeader.SetText("info".lang()); 
windows[0].AddBottomButton("mod_preset", ShowPresetMenu); 
infoPreview.button1.SetOnClick(delegate
{ 
	ShowPreview(panelTarget); 
}); 
RefreshLists();
ShowInfo(FirstInfoTarget());
list.dragEdgeSize = list.callbacks.GetMold()?.Rect().sizeDelta.y ?? 34f;

private void InitSearchUI()

cs
	if ((bool)buttonClearSearch)
	{
		buttonClearSearch.SetOnClick(ClearSearchText);
		buttonClearSearch.SetActive(enable: false); 
	}
	buttonFilter = windows[0].AddBottomButton("mod_filter", CycleFilter);
	RefreshFilterButton();
	if ((bool)textNoResult) 
	{ 
		textNoResult.SetText("noResult".lang(), FontColor.Passive); 
		textNoResult.SetActive(enable: false); 
	} 
}

public void Search(string s)

private BaseModPackage FirstInfoTarget()

cs
private void ShowInfo(BaseModPackage p)
{
	if (!panelNote || p == null || p == panelTarget) 
	{ 
		return; 
	} 
	panelTarget = p; 
	UINote n = panelNote; 
	n.Clear(); 
	n.AddHeader(p.title.IsEmpty(p.dirInfo.Name)); 
	PreviewEntry thumb = GetThumb(p); 
	if ((bool)thumb.sprite) 
	if (p != null && p != panelTarget) 
	{
		AddPreviewBox(n, thumb.sprite, delegate
		panelTarget = p; 
		infoTitle.text1.SetText(p.title.IsEmpty(p.dirInfo.Name)); 
		PreviewEntry thumb = GetThumb(p); 
		infoPreview.SetActive(thumb.sprite); 
		if ((bool)thumb.sprite) 
		{
			ShowPreview(p); 
		}); 
		if (thumb.kind == ModPreview.PreviewType.Gif) 
			infoPreview.image1.sprite = thumb.sprite; 
		} 
		SetInfo(value: (thumb.sprite ? ((thumb.kind == ModPreview.PreviewType.Gif) ? "mod_preview_gif" : null) : ((thumb.kind == ModPreview.PreviewType.None) ? "mod_preview_none" : "mod_preview_unsupported"))?.lang(), item: infoPreviewNote); 
		SetTopic(infoAuthor, p.author, null); 
		SetTopic(infoVersion, p.version, null); 
		SetTopic(infoId, p.id, null); 
		string text = ModLoadOrderPreset.WorkshopId(p); 
		SetTopic(infoWorkshop, text.IsEmpty() ? p.dirInfo.Name : text, text.IsEmpty() ? "mod_filter_local" : "mod_filter_workshop"); 
		SetTopic(infoStatus, (!p.builtin && !p.willActivate) ? "mod_filter_disabled".lang() : null, null); 
		List<string> list = new List<string>(); 
		if (p.blockedBy != null) 
		{
			n.AddText("mod_preview_gif".lang(), FontColor.Passive); 
			list.Add("mod_info_blocked".lang(p.blockedBy.title.IsEmpty(p.blockedBy.id))); 
		}
		if (!p.langDepError.IsEmpty()) 
		{ 
			string[] array = p.langDepError.Split('\t'); 
			list.Add(array[0].lang(string.Join("mod_info_or".lang(), array, 1, array.Length - 1))); 
		} 
		if (p.duplicateOf != null) 
		{ 
			list.Add("mod_info_duplicate".lang(p.duplicateOf.title.IsEmpty(p.duplicateOf.dirInfo?.Name).IsEmpty(p.duplicateOf.id))); 
		} 
		if (!p.IsValidVersion()) 
		{ 
			list.Add("mod_info_old_version".lang(p.version, ELayer.core.versionMod.GetText())); 
		} 
		if (!p.parseError.IsEmpty()) 
		{ 
			list.Add("mod_info_parse_error".lang(p.parseError)); 
		} 
		SetInfo(infoProblems, string.Join("\n", list)); 
		UIItem item = infoTags; 
		string[] tags = p.tags; 
		SetTopic(item, (tags != null && tags.Length > 0) ? string.Join(", ", p.tags) : null, null); 
		SetTopic(infoRequires, IdList(p.dependency, alternatives: true), null); 
		SetTopic(infoIncompatible, IdList(p.incompatible, alternatives: false), null); 
		SetTopic(infoLoadAfter, IdList(p.loadAfter, alternatives: false), null); 
		SetTopic(infoLoadBefore, IdList(p.loadBefore, alternatives: false), null); 
		infoSpace.SetActive(!p.description.IsEmpty()); 
		SetInfo(infoDescription, p.description); 
		panelNote.Build(); 
		panelScroll.content.anchoredPosition = Vector2.zero; 
	} 
	static string IdList(string[][] rows, bool alternatives) 
	{ 
		if (rows == null) 
		{ 
			return null; 
		} 
		string sep = (alternatives ? "mod_info_or".lang() : "\n"); 
		return string.Join("\n", from row in rows 
			where row != null && row.Length > 0
			select string.Join(sep, row.Where((string id) => !id.IsEmpty())) into line 
			where !line.IsEmpty() 
			select line); 
	}
	else
	{ 
		n.AddText(((thumb.kind == ModPreview.PreviewType.None) ? "mod_preview_none" : "mod_preview_unsupported").lang(), FontColor.Passive); 
	} 
	if (!p.author.IsEmpty()) 
	{ 
		AddTopic("author", p.author); 
	} 
	if (!p.version.IsEmpty()) 
	{ 
		AddTopic("version", p.version); 
	} 
	if (!p.id.IsEmpty()) 
	{ 
		FitValue(AddTopic("mod_info_id", p.id)); 
	} 
	string text = ModLoadOrderPreset.WorkshopId(p); 
	FitValue(AddTopic(text.IsEmpty() ? "mod_filter_local" : "mod_filter_workshop", text.IsEmpty() ? p.dirInfo.Name : text)); 
	if (!p.builtin && !p.willActivate) 
	{ 
		AddTopic("status", "mod_filter_disabled".lang()); 
	} 
	if (p.blockedBy != null) 
	{ 
		n.AddText("mod_info_blocked".lang(p.blockedBy.title.IsEmpty(p.blockedBy.id)), FontColor.Bad); 
	} 
	if (!p.langDepError.IsEmpty()) 
	{ 
		n.AddText(p.langDepError, FontColor.Bad); 
	} 
	if (p.duplicateOf != null) 
	{ 
		n.AddText("mod_info_duplicate".lang(p.duplicateOf.dirInfo?.Name ?? p.duplicateOf.id), FontColor.Bad); 
	} 
	if (!p.IsValidVersion()) 
	{ 
		n.AddText("mod_info_old_version".lang(p.version, ELayer.core.versionMod.GetText()), FontColor.Bad); 
	} 
	if (!p.parseError.IsEmpty()) 
	{ 
		n.AddText(p.parseError, FontColor.Bad); 
	} 
	string[] tags = p.tags; 
	if (tags != null && tags.Length > 0) 
	{ 
		AddTopic("mod_info_tags", string.Join(", ", p.tags)); 
	} 
	AddIdList(n, "mod_info_requires", p.dependency); 
	AddIdList(n, "incompatible", p.incompatible); 
	AddIdList(n, "mod_info_load_after", p.loadAfter); 
	AddIdList(n, "mod_info_load_before", p.loadBefore); 
	if (!p.description.IsEmpty()) 
	{ 
		n.Space(8); 
		n.AddText(p.description); 
	} 
	n.Build(); 
	panelScroll.content.anchoredPosition = Vector2.zero; 
	UIItem AddTopic(string lang, string value) 
	{ 
		UIItem uIItem = n.AddTopic(lang, value); 
		uIItem.text1.alignment = TextAnchor.LowerLeft; 
		return uIItem; 
	} 
} 
private static void AddPreviewBox(UINote n, Sprite sprite, Action onClick) 
{ 
	n.AddImage(sprite); 
	RectTransform rectTransform = n.transform.GetChild(n.transform.childCount - 1).Rect(); 
	rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, 240f); 
	Image componentInChildren = rectTransform.GetComponentInChildren<Image>(); 
	RectTransform rectTransform2 = componentInChildren.rectTransform; 
	rectTransform2.anchorMin = Vector2.zero; 
	rectTransform2.anchorMax = Vector2.one; 
	rectTransform2.pivot = new Vector2(0.5f, 0.5f); 
	rectTransform2.anchoredPosition = Vector2.zero; 
	rectTransform2.sizeDelta = Vector2.zero; 
	componentInChildren.preserveAspect = true; 
	Button button = componentInChildren.gameObject.AddComponent<Button>(); 
	button.transition = Selectable.Transition.None; 
	button.onClick.AddListener(delegate
	static void SetInfo(UIItem uIItem, string value) 
	{
		onClick(); 
	}); 
} 
private static void FitValue(UIItem item) 
{ 
	if ((bool)item && (bool)item.text2) 
	{ 
		item.text2.resizeTextForBestFit = true; 
		item.text2.horizontalOverflow = HorizontalWrapMode.Wrap; 
		item.text2.resizeTextMinSize = 9; 
		item.text2.resizeTextMaxSize = item.text2.fontSize; 
		uIItem.SetActive(!value.IsEmpty()); 
		if (!value.IsEmpty()) 
		{ 
			uIItem.text1.SetText(value); 
		} 
	}
} 
private static void AddIdList(UINote n, string lang, string[][] rows) 
{ 
	if (rows != null && rows.Length != 0) 
	static void SetTopic(UIItem uIItem, string value, string lang) 
	{
		List<string> list = (from row in rows 
			where row != null && row.Length > 0 && !row[0].IsEmpty() 
			select row[0]).ToList(); 
		if (list.Count > 0) 
		uIItem.SetActive(!value.IsEmpty()); 
		if (!value.IsEmpty()) 
		{
			n.AddTopic(lang, string.Join(", ", list)).text1.alignment = TextAnchor.LowerLeft; 
			if (lang != null) 
			{ 
				uIItem.text1.SetText(lang.lang()); 
			} 
			uIItem.text2.SetText(value); 
		}
	}
}

private void ShowPreview(BaseModPackage a)

cs
	});
}

private void CreatePresetUI() 
{ 
	windows[0].AddBottomButton("mod_preset", ShowPresetMenu); 
} 
private void ShowPresetMenu()
{
	SE.Click();

ModManager โ€‹

private string UnmetDependency(BaseModPackage p, Dictionary<string, BaseModPackaโ€ฆ)

cs
	{
		if (baseModPackage != null)
		{
			return "requires " + baseModPackage.title.IsEmpty(baseModPackage.dirInfo?.Name) + ", which loads after this mod - move it above"; 
			return "mod_info_dep_order\t" + baseModPackage.title.IsEmpty(baseModPackage.dirInfo?.Name); 
		}
		if (baseModPackage2 != null)
		{
			return "requires " + baseModPackage2.title.IsEmpty(baseModPackage2.dirInfo?.Name) + ", which is installed but did not load"; 
			return "mod_info_dep_failed\t" + baseModPackage2.title.IsEmpty(baseModPackage2.dirInfo?.Name); 
		}
		return "requires " + string.Join(" or ", array) + ", which is not installed"; 
		return "mod_info_dep_missing\t" + string.Join('\t', array); 
	}
}
return null;

SourcePref โ€‹

[Serializable]

cs
[Serializable]
public class SourcePref : EClass, ISerializationCallbackReceiver
{
	public const int TotalPrefInts = 26; 
	[JsonProperty]
	public int[] ints = new int[25]; 
	public int[] ints = new int[26]; 

	public BitArray32 _bits1;

public float heightFix

cs
	}
}

public int scaleTex 
{ 
	get 
	{ 
		return ints[25]; 
	} 
	set 
	{ 
		ints[25] = value; 
	} 
} 
public float ScaleTex 
{ 
	get 
	{ 
		Validate(); 
		if (ints[25] > 0) 
		{ 
			return (float)ints[25] * 0.01f; 
		} 
		return 1f; 
	} 
} 
public bool bypassShadow
{
	get

public bool bypassShadow

cs
public void OnAfterDeserialize()
{
	if (ints.Length >= 25) 
	{ 
		_bits1.SetInt(ints[22]); 
	} 
	else
	{ 
		Validate(); 
	} 
	Validate(); 
	_bits1.SetInt(ints[22]); 
}

public void OnBeforeSerialize()
{
	Validate(); 
	ints[22] = _bits1.ToInt();
}

public void Validate()
{
	if (ints.Length < 25) 
	if (ints.Length < 26) 
	{
		Array.Resize(ref ints, 25); 
		Array.Resize(ref ints, 26); 
	}
}

public void WriteIni(string path)
{
	Validate(); 
	FileIniDataParser fileIniDataParser = new FileIniDataParser();
	if (File.Exists(path))
	{

public void WriteIni(string path)

cs
iniData.Global["height"] = ints[3].ToString();
iniData.Global["heightFix"] = ints[24].ToString();
iniData.Global["scaleIcon"] = scaleIcon.ToString();
iniData.Global["scaleTex"] = scaleTex.ToString(); 
iniData.Global["liquidMod"] = liquidMod.ToString();
iniData.Global["liquidModMax"] = liquidModMax.ToString();
iniData.Global["hatY"] = ints[23].ToString();

public static SourcePref ReadFromIni(string path)

cs
sourcePref.ints[3] = iniData.Global["height"].ToInt();
sourcePref.ints[24] = iniData.Global["heightFix"].ToInt();
sourcePref.scaleIcon = iniData.Global["scaleIcon"].ToInt();
sourcePref.scaleTex = iniData.Global["scaleTex"].ToInt(); 
sourcePref.liquidMod = iniData.Global["liquidMod"].ToInt();
sourcePref.liquidModMax = iniData.Global["liquidModMax"].ToInt();
sourcePref.ints[23] = iniData.Global["hatY"].ToInt();

SpriteData โ€‹

public class SpriteData

cs
public class SpriteData
{
	public const float DefaultPPU = 100f; 
	public string id;

	public string path;

public class SpriteData

cs
public bool tryFixPrefNotLoadedAtStart;

public static float BaseWidth(Sprite s) 
{ 
	return s.rect.width * 100f / s.pixelsPerUnit; 
} 
public static float BaseHeight(Sprite s) 
{ 
	return s.rect.height * 100f / s.pixelsPerUnit; 
} 
public void Init()
{
	try

public void LoadPref()

cs
	}
}

public void LoadPrefAndFixDensity() 
{ 
	float a = pref?.ScaleTex ?? 1f; 
	LoadPref(); 
	if (sprites != null && !Mathf.Approximately(a, pref?.ScaleTex ?? 1f)) 
	{ 
		LoadSprites(); 
	} 
} 
public void LoadAnimationIni()
{
	if (!File.Exists(path + ".ini"))

public void LoadSprites()

cs
	}
	int num = tex.width / frame;
	int height = tex.height;
	if (sprites == null || sprites.Length != frame) 
	float num2 = 100f * (pref?.ScaleTex ?? 1f); 
	if (sprites == null || sprites.Length != frame || !sprites[0] || !Mathf.Approximately(sprites[0].rect.width, num) || !Mathf.Approximately(sprites[0].rect.height, height) || !Mathf.Approximately(sprites[0].pixelsPerUnit, num2)) 
	{
		sprites = new Sprite[frame];
	} 
	Vector2 pivot = new Vector2(0.5f, 0.5f); 
	for (int i = 0; i < frame; i++) 
	{ 
		sprites[i] = Sprite.Create(tex, new Rect(i * num, 0f, num, height), pivot, 100f, 0u, SpriteMeshType.FullRect); 
		Vector2 pivot = new Vector2(0.5f, 0.5f); 
		for (int i = 0; i < frame; i++) 
		{ 
			sprites[i] = Sprite.Create(tex, new Rect(i * num, 0f, num, height), pivot, num2, 0u, SpriteMeshType.FullRect); 
		} 
	}
}

SurvivalManager โ€‹

bool Next()

cs
Point pos2 = point.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false, ignoreCenter: true) ?? point;
if (searchWreck2 == 20)
{
	Thing container = ThingGen.CreateParcel(null, ThingGen.CreateRecipe("container_shipping"), ThingGen.CreateRecipe("stonecutter"), ThingGen.CreateRecipe("workbench2"), ThingGen.Create("crystal_earth").SetNum(3)); 
	Thing container = ThingGen.CreateParcel(null, ThingGen.CreateRecipe("container_shipping"), ThingGen.CreateRecipe("stonecutter"), ThingGen.CreateRecipe("factory_stone"), ThingGen.CreateRecipe("workbench2"), ThingGen.Create("crystal_earth").SetNum(3)); 
	Meteor(pos2, delegate
	{
		EClass._zone.AddCard(container, pos2);

TCUI โ€‹

public override void OnDraw(ref Vector3 pos)

cs
Vector3 vector = FixPos;
if (render != null && render.hasActor && !render.actor.isPCC && (bool)render.actor && (bool)render.actor.sr && (bool)render.actor.sr.sprite)
{
	float num = 128f / render.actor.sr.sprite.rect.height; 
	float num = 128f / SpriteData.BaseHeight(render.actor.sr.sprite); 
	int pivotY = render.owner.Pref.pivotY;
	vector = FixPos + new Vector3(0f, num * ((float)pivotY - 48f), 0f);
}

Trait โ€‹

public virtual void OnBarter(bool reroll = false)

cs
	}
	break;
}
ShopType shopType = ShopType; 
if ((uint)(shopType - 24) <= 1u && EClass._zone is Zone_Yowyn) 
{ 
	Add("milk_kumiromi", EClass.rndHalf(6), 0); 
} 
switch (owner.id)
{
case "rodwyn":

Zone โ€‹

public Chara SpawnMob(Point pos = null, SpawnSetting setting = null)

cs
	return null;
}
long num3 = ((setting.fixedLv == -1) ? cardRow.LV : setting.fixedLv);
bool flag = setting.fixedLv != -1 || DangerLvBoost > 0; 
bool flag = setting.fixedLv != -1 || setting.addLv > 0 || DangerLvBoost > 0; 
num3 += setting.addLv;
if (ScaleType == ZoneScaleType.Void)
{

public Chara SpawnMob(Point pos = null, SpawnSetting setting = null)

cs
	flag = true;
}
num3 += DangerLvBoost;
if (flag && num3 <= Mathf.Max(50, cardRow.LV)) 
{ 
	flag = false; 
} 
if (setting.rarity == Rarity.Random && cardRow.quality == 0)
{
	if (EClass.rnd(EClass.pc.HasElement(1271) ? 80 : 100) == 0)