Skip to content

EA 23.345 Nightly โ€‹

September 15, 2026

30 files modified.

Important Changes โ€‹

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

Portrait (3) โ€‹

cs
public static ModItemList<Sprite> modPortraits = new ModItemList<Sprite>(3); 
public static ModItemList<Sprite> modPortraits = new ModItemList<Sprite>(3, loadOption); 
cs
public static ModItemList<Sprite> modOverlays = new ModItemList<Sprite>(3); 
public static ModItemList<Sprite> modOverlays = new ModItemList<Sprite>(3, loadOption); 
cs
public static ModItemList<Sprite> modFull = new ModItemList<Sprite>(3); 
public static ModItemList<Sprite> modFull = new ModItemList<Sprite>(3, loadOptionFull); 

AI_Idle โ€‹

public override IEnumerable<Status> Run()

cs
{
	break;
}
int n = 0; 
int n2 = 0; 
owner.pos.ForeachNeighbor(delegate(Point p)
{
	if (p.HasChara && p.FirstChara.id == "cocoon")
	{
		n++; 
		n2++; 
	}
});
if (n < 2) 
if (n2 < 2) 
{
	Point randomPoint = owner.pos.GetRandomPoint(1, requireLos: false, allowChara: false, allowBlocked: false, 20); 
	if (randomPoint != null) 
	Point randomPoint2 = owner.pos.GetRandomPoint(1, requireLos: false, allowChara: false, allowBlocked: false, 20); 
	if (randomPoint2 != null) 
	{
		Chara chara3 = EClass._zone.SpawnMob("cocoon", randomPoint); 
		Chara chara3 = EClass._zone.SpawnMob("cocoon", randomPoint2); 
		owner.Say("egglay", owner);
		chara3.SetHostility(owner.OriginalHostility);
	}

public override IEnumerable<Status> Run()

cs
		{
			break;
		}
		int n2 = 0; 
		int n = 0; 
		owner.pos.ForeachNeighbor(delegate(Point p)
		{
			if (p.HasChara && p.FirstChara.id == "mech_scarab")
			{
				n2++; 
				n++; 
			}
		});
		if (n2 >= 2) 
		if (n >= 2) 
		{
			break;
		}
		Point randomPoint2 = owner.pos.GetRandomPoint(1, requireLos: false, allowChara: false, allowBlocked: false, 20); 
		if (randomPoint2 != null) 
		Point randomPoint = owner.pos.GetRandomPoint(1, requireLos: false, allowChara: false, allowBlocked: false, 20); 
		if (randomPoint != null) 
		{
			Card c = EClass._zone.AddCard(owner.Duplicate(), randomPoint2); 
			if (randomPoint2.Distance(EClass.pc.pos) < EClass.pc.GetHearingRadius()) 
			Card c = EClass._zone.AddCard(owner.Duplicate(), randomPoint); 
			if (randomPoint.Distance(EClass.pc.pos) < EClass.pc.GetHearingRadius()) 
			{
				Msg.Say("self_dupe", owner, c);
			}
		}
		break;
	}
	case "imotoroid":
	case "marshmallow_monster":
		if (owner.TryFuse(0.001f)) 
		{ 
			yield return Success(); 
		} 
		break; 
	} 
	if (owner.HasElement(1432) && owner.TryFuse(0.001f)) 
	{ 
		yield return Success(); 
	}
}
if (owner.IsMinion && owner.master != null && owner.master.id == "keeper_garden" && !(owner.master.ai is GoalCombat))

ActEffect โ€‹

void AddCon<T>(int rate, int p2) where T : Condition

cs
	CC.TryDuplicate();
	break;
case EffectId.Fuse:
	CC.TryFuse(); 
	if (!CC.TryFuse() && CC.IsPC) 
	{ 
		EClass.pc.SayNothingHappans(); 
	} 
	break;
case EffectId.Escape:
	if (CC.IsPCFaction || (EClass._zone.Boss == CC && EClass.rnd(30) != 0))

ActionMode โ€‹

public virtual void RotateUnderMouse()

cs
	return;
}
hitPoint.cell.RotateAll();
if (EClass.debug.enable && !Input.GetKey(KeyCode.LeftShift)) 
if (EClass.debug.godBuild && !Input.GetKey(KeyCode.LeftShift)) 
{
	hitPoint.growth?.Grow(100);
	if (hitPoint.Installed?.trait is TraitSeed)

BaseTileMap โ€‹

public virtual void DrawTile()

cs
}
else
{
	if ((tileType != TileType.Illumination || !this.cell.HasObj) && !tileType.AlwaysShow && !this.cell.toggleOcclusion && noRoofMode && currentRoom == null && t.altitude >= lowWallObjAltitude && tileType != TileType.ObjFloat) 
	{ 
		continue; 
	} 
	thingPos.y += (float)t.altitude * altitudeFix.y;
	thingPos.z += (float)t.altitude * altitudeFix.z;
}

Card โ€‹

public void SpawnLoot(Card origin)

cs
		}
	}
}
if (trait is TraitMerchantTravel && !EClass._zone.IsFestival) 
if (trait is TraitMerchantTravel && !EClass._zone.IsFestival && !isSummon) 
{
	trait.OnBarter();
	Thing thing4 = things.Find<TraitChestMerchant>();

CardRenderer โ€‹

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

cs
p.tile = row._tiles[owner.refVal % row._tiles.Length] * ((owner.dir % 2 == 0) ? 1 : (-1));
p.matColor = matColor;
pref = row.pref;
p.x += pref.x * (float)((owner.dir % 2 == 0) ? 1 : (-1)); 
p.y += pref.y; 
p.z += pref.z; 
p.z += pref.z * 2f; 
if (owner.noShadow || !owner.IsInstalled)
{
	drawShadow = false;

Cell โ€‹

public void RotateAll()

cs
		}
		else if (HasObj)
		{
			if (sourceObj.tileType.CanRotate(buildMode: false)) 
			if (!sourceObj.tileType.CanRotate(buildMode: false)) 
			{
				RotateObj(flag, sourceObj.tileType.IsUseBlockDir); 
				GrowSystem growSystem = growth; 
				if (growSystem == null || !growSystem.CanRotate()) 
				{ 
					goto IL_00da; 
				} 
			}
			RotateObj(flag, sourceObj.tileType.IsUseBlockDir); 
		}
		else if (HasFloor)
		{
			RotateFloor((!flag) ? 1 : (-1));
		}
	}
	goto IL_00da; 
	IL_00da: 
	GetPoint().RefreshNeighborTiles();
}

Chara โ€‹

public bool IsLocalChara

cs
{
	get
	{
		if (!IsGlobal && !base.isSubsetCard) 
		if (!IsGlobal && !base.isSubsetCard && homeZone == EClass._zone) 
		{
			return homeZone == EClass._zone; 
			return !base.isSummon; 
		}
		return false;
	}

public void OnBanish()

cs
Zone z = EClass.game.spatials.Find("somewhere");
if (trait is TraitAdventurer)
{
	z = EClass.world.region.ListTowns().RandomItem(); 
	z = (from zone in EClass.world.region.ListTowns() 
		where zone != EClass._zone 
		select zone).RandomItem(); 
	SetHomeZone(z);
}
MoveZone(z, ZoneTransition.EnterState.RandomVisit);

public bool TryFuse(float chance = 1f)

cs
Say("fuse", this);
string text = "marshmallow_king";
string text2 = "fusion";
if (id == "imotoroid") 
switch (id) 
{
case "imotoroid": 
	text = "imotomaton";
	text2 = ""; 
	text2 = "fusion2"; 
	break; 
case "shojo": 
	text = "shojomaton"; 
	text2 = "fusion2"; 
	break; 
case "sister_cat": 
	text = "sister_catmaton"; 
	text2 = "fusion2"; 
	break; 
case "younglady": 
	text = "youngladymaton"; 
	text2 = "fusion2"; 
	break; 
}
Chara chara = EClass._zone.SpawnMob(text, pos);
chara.SetHostility(hostility);
list.Shuffle(); 
int num = 0; 
foreach (Chara item in list)
{
	if (!text2.IsEmpty())

public bool TryFuse(float chance = 1f)

cs
	}
	Effect.Get<EffectIRenderer>("throw_fuse").Play(item, item, item.pos, pos);
	item.Destroy();
	num++; 
	if (num >= 8) 
	{ 
		break; 
	} 
}
Destroy();
chara.PlayAnime(AnimeID.FallSky);

public void RestockEquip(bool onCreate)

cs
case "mech_scarab":
	AddThing("gun_laser");
	break;
case "youngladymaton":
case "sister_catmaton":
case "shojomaton":
case "imotomaton":
case "rocketman":
{

public override void Die(Element e = null, Card origin = null, AttackSource attaโ€ฆ)

cs
if (origin.IsPCParty || origin.IsPCPartyMinion)
{
	int num = 0;
	if (trait is TraitMerchantTravel) 
	if (trait is TraitMerchantTravel && !base.isSummon) 
	{
		num = -20;
	}

public override CardRenderer _CreateRenderer()

cs
{
	CardRenderer cardRenderer = renderer;
	CharaRenderer charaRenderer = new CharaRenderer();
	if (source.skinAntiSpider != 0 && EClass.core.config.game.antiSpider) 
	if (source.skinAntiSpider != 0) 
	{
		base.idSkin = source.skinAntiSpider; 
		base.idSkin = (EClass.core.config.game.antiSpider ? source.skinAntiSpider : 0); 
	}
	if (host != null)
	{

ContentConfigGame โ€‹

public override void OnInstantiate()

cs
toggleAntiSpider.SetToggle(base.config.game.antiSpider, delegate(bool on)
{
	base.config.game.antiSpider = on;
	if (EClass.core.IsGameStarted) 
	{ 
		foreach (Chara chara in EClass._map.charas) 
		{ 
			chara._CreateRenderer(); 
		} 
		foreach (Thing thing in EClass._map.things) 
		{ 
			thing._CreateRenderer(); 
		} 
	} 
});
toggleOffhand.SetToggle(base.config.game.showOffhand, delegate(bool on)
{

ContentConfigTest โ€‹

public override void OnInstantiate()

cs
{
	base.config.test.extraMoveCancel = on;
});
toggleAAPortrait.SetToggle(base.config.test.aaPortrait, delegate(bool on) 
toggleAAPortrait.SetToggle(base.config.test.aaPortraitFilter, delegate(bool on) 
{
	base.config.test.aaPortrait = on; 
	base.config.test.aaPortraitFilter = on; 
	base.config.Apply(); 
});
toggleBloom2.SetToggle(base.config.test.bloom2, delegate(bool on)
{

Core โ€‹

protected override void Awake()

cs
MOD.ResetResources();
Portrait.modPortraitBGFs = new ModItemList<Sprite>();
Portrait.modPortraitBGs = new ModItemList<Sprite>();
Portrait.modPortraits = new ModItemList<Sprite>(); 
Portrait.modOverlays = new ModItemList<Sprite>(); 
Portrait.modFull = new ModItemList<Sprite>(); 
Portrait.modPortraits = new ModItemList<Sprite>(0, Portrait.loadOption); 
Portrait.modOverlays = new ModItemList<Sprite>(0, Portrait.loadOption); 
Portrait.modFull = new ModItemList<Sprite>(0, Portrait.loadOptionFull); 
Portrait.dictList = new Dictionary<string, List<ModItem<Sprite>>>();
TileType.Init();
screen.tileMap.rendererObjDummy.Init();

CoreConfig โ€‹

public class Test

cs
public bool stackNumbers;

public bool aaPortrait; 
public bool aaPortraitFilter; 

public bool extraTurnaround;

public class Test

cs
	public bool cacheEffect;

	public float brightnessNight;
	public bool aaPortrait => true; 
}

[Serializable]

public void Apply()

cs
		camSupport.beautify.bloom = test.bloom2;
		camSupport.cam.allowHDR = graphic.hdr;
		ApplyScale();
		ApplyPortraitAA(); 
		EClass.core.effects.KillAll();
		EClass.core.effects.effects.usePool = test.cacheEffect;
	}
}

public void ApplyPortraitAA() 
{ 
	Portrait.loadOption.mipmap = (test.aaPortraitFilter ? new Vector2Int?(Portrait.standardSize) : ((Vector2Int?)null)); 
	Portrait.loadOptionFull.mipmap = (test.aaPortraitFilter ? new Vector2Int?(Portrait.standardFullSize) : ((Vector2Int?)null)); 
} 
public void ApplyResolution(bool force = false)
{
	if (graphic.fixedResolution)

DNA โ€‹

public void Generate(Type _type, Chara model = null)

cs
	AddSpecial();
}
AddSpecial();
if (EClass.debug.enable) 
{ 
	lv = 100; 
} 
if (EClass.rnd(3) != 0 && lv > 10)
{
	IEnumerable<SourceElement.Row> enumerable = EClass.sources.elements.map.Values.Where(delegate(SourceElement.Row row)

public void Generate(Type _type, Chara model = null)

cs
{
	return false;
}
if (row.LV > lv + ((!EClass.debug.enable) ? 1 : 100)) 
if (row.LV > lv) 
{
	return false;
}

public void Generate(Type _type, Chara model = null)

cs
	{
		return false;
	}
	if (row.category == "ability" && row.aliasRef != "mold" && !row.aliasRef.IsEmpty() && row.id > 10000 && !EClass.sources.elements.alias[row.aliasRef].tag.Contains(row.alias.Split('_')[0])) 
	{ 
		bool flag = false; 
		foreach (SourceChara.Row value in EClass.sources.charas.map.Values) 
		{ 
			if (!value.actCombat.IsEmpty()) 
			{ 
				string[] actCombat = value.actCombat; 
				for (int i = 0; i < actCombat.Length; i++) 
				{ 
					if (actCombat[i].Split('/')[0] == row.alias) 
					{ 
						flag = true; 
					} 
				} 
				if (flag) 
				{ 
					break; 
				} 
			} 
		} 
		if (!flag) 
		{ 
			return false; 
		} 
	} 
	return true; 
	return (!(row.category == "ability") || !(row.aliasRef != "mold") || row.aliasRef.IsEmpty() || row.id <= 10000 || (EClass.sources.elements.alias[row.aliasRef].tag.Contains(row.alias.Split('_')[0]) ? true : false)) ? true : false; 
});
if (enumerable.Count() > 0)
{

DramaCustomSequence โ€‹

public void Build(Chara c)

cs
{
	Choice2(c.trait.TextNextRestock, "_buy").DisableSound();
}
if (c.trait is TraitMerchantTravel && !c.IsPCFactionOrMinion) 
if (c.trait is TraitMerchantTravel && !c.IsPCFactionOrMinion && !c.isSummon) 
{
	Choice2("daRob", "_rob");
}

public void Build(Chara c)

cs
{
	if (EClass.pc.HasElement(1232) || EClass.pc.HasElement(1291))
	{
		goto IL_0980; 
		goto IL_098d; 
	}
	num2 = EClass.pc.HasCondition<StanceMama>();
}

public void Build(Chara c)

cs
		}
		if (num2)
		{
			goto IL_0980; 
			goto IL_098d; 
		}
		goto IL_0991; 
		goto IL_099e; 
	}
	if (c.isDrunk || c.HasElement(1275) || EClass.debug.enable)
	{
		Choice2(flag2 ? "daBird" : "daTail", "_tail");
	}
}
goto IL_0daa; 
IL_0daa: 
goto IL_0db7; 
IL_09ee: 
if (c.trait.CanRevive) 
{ 
	Choice2("daRevive", "_revive").DisableSound(); 
} 
if (!c.trait.IDTrainer.IsEmpty() && !EClass._zone.IsUserZone && (Guild.GetCurrentGuild() == null || Guild.GetCurrentGuild().relation.IsMember())) 
{ 
	Choice2("daTrain", "_train").DisableSound(); 
} 
if (c.trait.CanWhore) 
{ 
	Choice2(flag2 ? "daBirdBuy" : "daTailBuy", "_whore"); 
} 
if (c.trait.CanHeal) 
{ 
	Choice2("daHeal", "_heal"); 
} 
if (c.trait.CanServeFood) 
{ 
	Choice2("daFood", "_food"); 
} 
if (c.trait is TraitInformer) 
{ 
	Choice2("daSellFame", "_sellFame"); 
} 
if (EClass._zone.AllowInvest) 
{ 
	if (c.trait.CanInvestTown && Guild.GetCurrentGuild() == null) 
	{ 
		Choice2("daInvest", "_investZone"); 
	} 
	if (c.trait.CanInvest) 
	{ 
		Choice2("daInvest", "_investShop"); 
	} 
} 
if (c.trait.CanIdentify) 
{ 
	Choice2("daIdentify", "_identify").DisableSound(); 
	Choice2("daIdentifyAll", "_identifyAll"); 
	Choice2("daIdentifySP", "_identifySP").DisableSound(); 
} 
if (c.trait.CanPicklock) 
{ 
	if (c.Evalue(280) < 20) 
	{ 
		c.elements.SetBase(280, 20); 
	} 
	foreach (Thing item4 in EClass.pc.things.List((Thing a) => a.c_lockLv > 0, onlyAccessible: true)) 
	{ 
		Thing _t2 = item4; 
		Choice2("daPicklock".lang(_t2.Name), "_picklock").SetOnClick(delegate
		{ 
			destThing = _t2; 
		}); 
	} 
} 
if (c.trait is TraitBanker) 
{ 
	Choice2("daDeposit", "_deposit"); 
} 
if (c.IsMaid || (c.trait.CanInvestTown && (EClass._zone.source.faction == "mysilia" || EClass._zone.IsPCFaction))) 
{ 
	Choice2("daExtraTax", "_extraTax"); 
} 
if ((c.trait is TraitMiko_Mifu || c.trait is TraitMiko_Nefu || c.trait is TraitEureka) && EClass.world.date.IsExpired(c.c_dateStockExpire)) 
{ 
	Choice2("daBlessing", "_blessing"); 
} 
goto IL_0db7; 
IL_098d: 
Choice2("daMama", "_mama"); 
goto IL_099e; 
IL_099e: 
ConTransmuteHuman condition2 = c.GetCondition<ConTransmuteHuman>(); 
bool num3; 
if (condition2 == null) 
{ 
	if (c.HasElement(1232)) 
	{ 
		goto IL_09dd; 
	} 
	num3 = c.HasElement(1291); 
} 
else
{ 
	num3 = condition2.IsBaby; 
} 
if (num3) 
{ 
	goto IL_09dd; 
} 
goto IL_09ee; 
IL_09dd: 
Choice2("daBaby", "_baby"); 
goto IL_09ee; 
IL_0db7: 
if (c.IsHomeMember())
{
	if (c.IsMaid)

public void Build(Chara c)

cs
Talk("what", StepDefault);
if (!c.IsMarried || EClass.debug.enable)
{
	foreach (Thing item4 in EClass.pc.things.List((Thing a) => !a.c_isImportant && !a.isEquipped && a.c_uidAttune == 0 && (a.id == "amulet_engagement" || a.id == "ring_engagement"))) 
	foreach (Thing item5 in EClass.pc.things.List((Thing a) => !a.c_isImportant && !a.isEquipped && a.c_uidAttune == 0 && (a.id == "amulet_engagement" || a.id == "ring_engagement"))) 
	{
		Thing _t2 = item4; 
		Choice("daMarry".lang(item4.Name), "_marry").SetOnClick(delegate
		Thing _t3 = item5; 
		Choice("daMarry".lang(item5.Name), "_marry").SetOnClick(delegate
		{
			destThing = _t2; 
			destThing = _t3; 
		});
	}
}

public void Build(Chara c)

cs
QuestSupply supply = c.quest as QuestSupply;
if (supply != null)
{
	foreach (Thing item5 in supply.ListDestThing()) 
	foreach (Thing item6 in supply.ListDestThing()) 
	{
		Thing _t3 = item5; 
		Choice("daDeliver".lang(supply.GetTitle() ?? "", _t3.GetName(NameStyle.Full, supply.num)), "_deliver").SetOnClick(delegate
		Thing _t4 = item6; 
		Choice("daDeliver".lang(supply.GetTitle() ?? "", _t4.GetName(NameStyle.Full, supply.num)), "_deliver").SetOnClick(delegate
		{
			EClass.game.quests.Start(c.quest);
			destThing = _t3; 
			destThing = _t4; 
			destQuest = supply;
		}).SetOnTooltip(delegate(UITooltip a)
		{
			_t3.WriteNote(a.note); 
			_t4.WriteNote(a.note); 
		});
	}
}

public void Build(Chara c)

cs
{
	EClass.pc.party.AddMemeber(c);
}
foreach (Chara item6 in EClass.pc.party.members.ToList()) 
foreach (Chara item7 in EClass.pc.party.members.ToList()) 
{
	if (item6 != EClass.pc && item6 != c) 
	if (item7 != EClass.pc && item7 != c) 
	{
		EClass.pc.party.RemoveMember(item6); 
		EClass.pc.party.RemoveMember(item7); 
	}
}
if (c.host != null)

public void Build(Chara c)

cs
Method(delegate
{
	TempTalkTopic("blooming1", null);
	foreach (Chara item7 in EClass.pc.party.members.Where((Chara chara) => chara.CanBloom())) 
	foreach (Chara item8 in EClass.pc.party.members.Where((Chara chara) => chara.CanBloom())) 
	{
		Chara c2 = item7; 
		Chara c2 = item8; 
		Choice("daBloom".lang(c2.Name), delegate
		{
			if (EClass._zone.influence < 10)

public void Build(Chara c)

cs
	},
	onList = delegate
	{
		foreach (ResearchPlan item8 in plans) 
		foreach (ResearchPlan item9 in plans) 
		{
			list.Add(item8); 
			list.Add(item9); 
		}
	}
};

void Invest(bool quick)

cs
},
onList = delegate
{
	foreach (SourceElement.Row item9 in EClass.sources.elements.rows.Where(delegate(SourceElement.Row a) 
	foreach (SourceElement.Row item10 in EClass.sources.elements.rows.Where(delegate(SourceElement.Row a) 
	{
		if (a.tag.Contains("unused"))
		{

void Invest(bool quick)

cs
			return a.category == "skill" && a.categorySub == c.trait.IDTrainer;
		}).ToList())
		{
			list.Add(Element.Create(item9.id)); 
			list.Add(Element.Create(item10.id)); 
		}
	}
};

void Invest(bool quick)

cs
{
	SE.Pay();
	EClass.pc.ModCurrency(-costIdentify);
	foreach (Thing item10 in EClass.pc.things.List((Thing t) => !t.IsIdentified, onlyAccessible: true)) 
	foreach (Thing item11 in EClass.pc.things.List((Thing t) => !t.IsIdentified, onlyAccessible: true)) 
	{
		item10.Thing.Identify(show: false); 
		if (!item10.IsInstalled) 
		item11.Thing.Identify(show: false); 
		if (!item11.IsInstalled) 
		{
			numSuperior++;
		}

void Invest(bool quick)

cs
End();
Step("_end");
End();
return; 
IL_09d0: 
Choice2("daBaby", "_baby"); 
goto IL_09e1; 
IL_0980: 
Choice2("daMama", "_mama"); 
goto IL_0991; 
IL_0991: 
ConTransmuteHuman condition2 = c.GetCondition<ConTransmuteHuman>(); 
bool num3; 
if (condition2 == null) 
{ 
	if (c.HasElement(1232)) 
	{ 
		goto IL_09d0; 
	} 
	num3 = c.HasElement(1291); 
} 
else
{ 
	num3 = condition2.IsBaby; 
} 
if (num3) 
{ 
	goto IL_09d0; 
} 
goto IL_09e1; 
IL_09e1: 
if (c.trait.CanRevive) 
{ 
	Choice2("daRevive", "_revive").DisableSound(); 
} 
if (!c.trait.IDTrainer.IsEmpty() && !EClass._zone.IsUserZone && (Guild.GetCurrentGuild() == null || Guild.GetCurrentGuild().relation.IsMember())) 
{ 
	Choice2("daTrain", "_train").DisableSound(); 
} 
if (c.trait.CanWhore) 
{ 
	Choice2(flag2 ? "daBirdBuy" : "daTailBuy", "_whore"); 
} 
if (c.trait.CanHeal) 
{ 
	Choice2("daHeal", "_heal"); 
} 
if (c.trait.CanServeFood) 
{ 
	Choice2("daFood", "_food"); 
} 
if (c.trait is TraitInformer) 
{ 
	Choice2("daSellFame", "_sellFame"); 
} 
if (EClass._zone.AllowInvest) 
{ 
	if (c.trait.CanInvestTown && Guild.GetCurrentGuild() == null) 
	{ 
		Choice2("daInvest", "_investZone"); 
	} 
	if (c.trait.CanInvest) 
	{ 
		Choice2("daInvest", "_investShop"); 
	} 
} 
if (c.trait.CanIdentify) 
{ 
	Choice2("daIdentify", "_identify").DisableSound(); 
	Choice2("daIdentifyAll", "_identifyAll"); 
	Choice2("daIdentifySP", "_identifySP").DisableSound(); 
} 
if (c.trait.CanPicklock) 
{ 
	if (c.Evalue(280) < 20) 
	{ 
		c.elements.SetBase(280, 20); 
	} 
	foreach (Thing item11 in EClass.pc.things.List((Thing a) => a.c_lockLv > 0, onlyAccessible: true)) 
	{ 
		Thing _t4 = item11; 
		Choice2("daPicklock".lang(_t4.Name), "_picklock").SetOnClick(delegate
		{ 
			destThing = _t4; 
		}); 
	} 
} 
if (c.trait is TraitBanker) 
{ 
	Choice2("daDeposit", "_deposit"); 
} 
if (c.IsMaid || (c.trait.CanInvestTown && (EClass._zone.source.faction == "mysilia" || EClass._zone.IsPCFaction))) 
{ 
	Choice2("daExtraTax", "_extraTax"); 
} 
if ((c.trait is TraitMiko_Mifu || c.trait is TraitMiko_Nefu || c.trait is TraitEureka) && EClass.world.date.IsExpired(c.c_dateStockExpire)) 
{ 
	Choice2("daBlessing", "_blessing"); 
} 
goto IL_0daa; 
void BackChill()
{
	Method(RumorChill, null, StepDefault);

FEAT โ€‹

public class FEAT

cs
public const int featMana = 1611;

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

public const int featDeviant = 1431;

public class FEAT

cs
public const int featHealer = 1422;

public const int featManaMeat = 1421; 
public const int featHardy = 1630;

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

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

public const int featLife = 1610;

public class FEAT

cs
public const int featSpotting = 1633;

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

public const int featComat = 1750;

public class FEAT

cs
public const int featEvade = 1632;

public const int featInquisitor = 1416; 
public const int featGod_harvest1 = 1325; 
public const int featWitch = 1417; 

public const int featWhiteVixen = 1414; 
public const int featGod_luck1 = 1330; 

public const int featHeavyEater = 1234; 
public const int featFoxMaid = 1415; 

public const int featLightEater = 1235;

public class FEAT

cs
public const int featLibra = 1247;

public const int featCosmicHorror = 1233; 
public const int featMiscreation = 1248;

public const int featVampire = 1250; 
public const int featHeavyEater = 1234; 
public const int featBloodBond = 1249; 

public const int featAshborn = 1251;

public class FEAT

cs
public const int featSplitWater = 1254;

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

public const int featBadKarma = 1271;

public class FEAT

cs
public const int featGoddess = 1290;

public const int featBloodBond = 1249; 
public const int featSadCreature = 1291;

public const int featVampire = 1250; 
public const int featCosmicHorror = 1233; 
public const int featBaby = 1232;

public const int featAdam = 1230; 
public const int featNirvana = 1231; 

public const int featSlowFood = 1200;

public class FEAT

cs
public const int featElea = 1213;

public const int featNirvana = 1231; 
public const int featManaPrecision = 1214;

public const int featDwarf = 1215; 
public const int featSuccubus = 1216;

public const int featGolem = 1217; 
public const int featAdam = 1230; 

public const int featMetal = 1218; 
public const int featLittleOne = 1229; 

public const int featElderCrab = 1219; 
public const int featDemigod = 1228; 

public const int featFate = 1220; 
public const int featServant = 1227; 

public const int featSpike = 1221; 
public const int featUnderground = 1226; 

public const int featSplit = 1222; 
public const int featLoyal = 1225; 

public const int featAcidBody = 1223; 
public const int featGod = 1292; 

public const int featShiva = 1224;

public const int featLoyal = 1225; 
public const int featSplit = 1222; 

public const int featUnderground = 1226; 
public const int featSpike = 1221; 

public const int featServant = 1227; 
public const int featFate = 1220; 

public const int featDemigod = 1228; 
public const int featElderCrab = 1219; 

public const int featLittleOne = 1229; 
public const int featMetal = 1218; 

public const int featDwarf = 1215; 
public const int featGolem = 1217; 

public const int featGod = 1292; 
public const int featAcidBody = 1223; 
public const int featSevenPillars = 1293; 

public const int featGoodKarma = 1270;

public const int featDiva = 1294; 
public const int featGod_element1 = 1300; 
public const int featLuckyCat = 1412; 

public const int featEarthStrength = 1411;

public const int featDiva = 1294; 
public const int featReboot = 1410;

public const int featBoost = 1409;

public class FEAT

cs
public const int featFarmer = 1403;

public const int featWizard = 1402; 
public const int featThief = 1401; 
public const int featFairysan = 1413; 

public const int featLuckyCat = 1412; 
public const int featWizard = 1402; 

public const int featWarrior = 1400;

public class FEAT

cs
public const int featGod_harmony1 = 1335;

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

public const int featGod_healing1 = 1320;

public class FEAT

cs
	public const int featGod_earth1 = 1305;

	public const int featGod_element1 = 1300; 
	public const int featSevenPillars = 1293; 
	public const int featThief = 1401; 

	public const int featFairysan = 1413; 
	public const int featWhiteVixen = 1414; 

	public static readonly int[] IDS = new int[158] 
	public static readonly int[] IDS = new int[159] 
	{
		1620, 1621, 1622, 1623, 1628, 1625, 1626, 1627, 1612, 1629,
		1624, 1611, 1420, 1431, 1430, 1429, 1428, 1427, 1426, 1425, 
		1424, 1423, 1422, 1421, 1630, 1419, 1418, 1610, 1631, 1647, 
		1633, 1417, 1750, 1664, 1663, 1662, 1661, 1660, 1659, 1658, 
		1624, 1611, 1421, 1432, 1431, 1430, 1429, 1428, 1427, 1426, 
		1425, 1424, 1423, 1422, 1630, 1420, 1419, 1610, 1631, 1647, 
		1633, 1418, 1750, 1664, 1663, 1662, 1661, 1660, 1659, 1658, 
		1657, 1656, 1655, 1654, 1653, 1652, 1651, 1650, 1649, 1648,
		1646, 1645, 1644, 1643, 1642, 1641, 1640, 1636, 1635, 1634,
		1632, 1416, 1325, 1414, 1234, 1235, 1236, 1237, 1238, 1239, 
		1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1233, 1248, 
		1250, 1251, 1252, 1253, 1254, 1415, 1271, 1272, 1273, 1274, 
		1275, 1276, 1277, 1290, 1249, 1291, 1232, 1230, 1200, 1201, 
		1632, 1417, 1330, 1415, 1235, 1236, 1237, 1238, 1239, 1240, 
		1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1234, 1249, 
		1251, 1252, 1253, 1254, 1416, 1271, 1272, 1273, 1274, 1275, 
		1276, 1277, 1290, 1291, 1250, 1233, 1232, 1231, 1200, 1201, 
		1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211,
		1212, 1213, 1231, 1214, 1216, 1217, 1218, 1219, 1220, 1221, 
		1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1215, 1292, 
		1270, 1294, 1411, 1410, 1409, 1408, 1407, 1406, 1405, 1404, 
		1403, 1402, 1401, 1412, 1400, 1355, 1350, 1345, 1340, 1335, 
		1330, 1320, 1315, 1310, 1305, 1300, 1293, 1413
		1212, 1213, 1214, 1215, 1216, 1230, 1229, 1228, 1227, 1226, 
		1225, 1292, 1224, 1222, 1221, 1220, 1219, 1218, 1217, 1223, 
		1293, 1270, 1300, 1412, 1411, 1294, 1410, 1409, 1408, 1407, 
		1406, 1405, 1404, 1403, 1413, 1402, 1400, 1355, 1350, 1345, 
		1340, 1335, 1325, 1320, 1315, 1310, 1305, 1401, 1414
	};
}
public class Feat : Element

Game โ€‹

public void ApplyFix()

cs
{
	CoreDebug._RemoveBodyPart(CoreDebug.BodyCode.relic);
}
if (version.IsBelow(0, 23, 345)) 
{ 
	Zone zone = spatials.Find("oldkeep"); 
	if (zone != null && zone.visitCount > 0) 
	{ 
		zone.SetInt(4, 1); 
	} 
} 
if (version.IsBelow(0, 23, 336))
{
	AddAdventurer("adv_schwert");

public void ApplyFix()

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

GoalCombat โ€‹

public virtual bool TryThrow(int dist)

cs
public virtual bool TryFuse()
{
	string text = owner.id; 
	if ((text == "imotoroid" || text == "marshmallow_monster") && owner.TryFuse(0.05f)) 
	if (owner.HasElement(1432) && owner.TryFuse(0.05f)) 
	{
		return true;
	}

GrowSystem โ€‹

protected virtual bool IsHarvestStage(int idx)

cs
	return idx == HarvestStage;
}

public virtual bool CanRotate() 
{ 
	return false; 
} 
public virtual bool BlockSight(Cell cell)
{
	return false;

GrowSystemRose โ€‹

public override int GetStageTile()

cs
		}
		return base.GetStageTile();
	}
	public override bool CanRotate() 
	{ 
		if (base.stage.idx == HarvestStage && source.alias == "roseflower") 
		{ 
			return true; 
		} 
		return base.CanRotate(); 
	} 
}

MUTATION โ€‹

public class MUTATION

cs
public class MUTATION
{
	public const int mutationEyeN = 1513; 
	public const int mutationSkin = 1510;

	public const int mutationSkinN = 1511;

	public const int mutationEye = 1512;

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

	public const int mutationRegen = 1516;

	public const int mutationDexN = 1515;

	public const int mutationDex = 1514; 
	public const int etherEye = 1553;

	public const int etherWing = 1554;

public class MUTATION

cs
public const int etherFeet = 1552;

public const int mutationCha = 1522; 
public const int mutationHair = 1532; 
public const int mutationRegenN = 1517; 

public const int mutationSpeed = 1518;

public class MUTATION

cs
public const int mutationStr = 1520;

public const int mutationStrN = 1521; 
public const int mutationHairN = 1533;

public const int mutationChaN = 1523; 
public const int mutationCha = 1522; 

public const int mutationBrainN = 1525; 
public const int mutationChaN = 1523; 

public const int mutationBrain = 1524;

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

public const int mutationLightning = 1528;

public class MUTATION

cs
	public const int mutationBodyN = 1531;

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

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

NotificationExceedParty โ€‹

public class NotificationExceedParty : BaseNotification

cs
public class NotificationExceedParty : BaseNotification
{
	public override bool Visible => EClass.pc.party.members.Count - 1 > EClass.player.MaxAlly; 
	public override bool Visible => EClass.pc.party.Count() - 1 > EClass.player.MaxAlly; 

	public override Action<UITooltip> onShowTooltip => delegate(UITooltip a)
	{
		a.note.Clear();
		a.note.AddHeader("exceedParty");
		a.note.AddText("exceedParty_tip".lang((EClass.pc.party.members.Count - 1).ToString() ?? "", EClass.player.MaxAlly.ToString() ?? "")); 
		a.note.AddText("exceedParty_tip".lang((EClass.pc.party.Count() - 1).ToString() ?? "", EClass.player.MaxAlly.ToString() ?? "")); 
		a.note.Build();
	};

POLICY โ€‹

public class POLICY

cs
public class POLICY
{
	public const int license_stolen = 2824; 
	public const int celeb = 2822; 

	public const int legendary_exhibition = 2823; 
	public const int license_slaver = 2828; 

	public const int milk_fan = 2825; 
	public const int breed_season = 2827; 

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

	public const int breed_season = 2827; 
	public const int milk_fan = 2825; 

	public const int license_slaver = 2828; 
	public const int license_stolen = 2824; 

	public const int egg_fan = 2826; 
	public const int legendary_exhibition = 2823; 

	public const int legendary_heirloom = 2821;

public class POLICY

cs
public static readonly int[] IDS = new int[51]
{
	2824, 2823, 2825, 2822, 2827, 2828, 2826, 2821, 2511, 2819, 
	2822, 2828, 2827, 2826, 2825, 2824, 2823, 2821, 2511, 2819, 
	2701, 2700, 2516, 2515, 2514, 2513, 2512, 2820, 2702, 2510,
	2508, 2507, 2506, 2504, 2503, 2502, 2501, 2500, 2509, 2703,
	2505, 2705, 2704, 2818, 2817, 2815, 2814, 2813, 2812, 2811,

Portrait โ€‹

public class Portrait : UIButton

cs
public class Portrait : UIButton
{
	public static readonly Vector2Int standardSize = new Vector2Int(240, 320); 
	public static readonly Vector2Int standardFullSize = new Vector2Int(529, 838); 
	public static readonly SpriteLoadOption loadOption = new SpriteLoadOption
	{ 
		pivot = new Vector2(0.5f, 0f) 
	}; 
	public static readonly SpriteLoadOption loadOptionFull = new SpriteLoadOption
	{ 
		pivot = new Vector2(0.5f, 0f) 
	}; 
	public static ModItemList<Sprite> modPortraitBGFs = new ModItemList<Sprite>(3);

	public static ModItemList<Sprite> modPortraitBGs = new ModItemList<Sprite>(3);

	public static ModItemList<Sprite> modPortraits = new ModItemList<Sprite>(3); 
	public static ModItemList<Sprite> modPortraits = new ModItemList<Sprite>(3, loadOption); 

	public static ModItemList<Sprite> modOverlays = new ModItemList<Sprite>(3); 
	public static ModItemList<Sprite> modOverlays = new ModItemList<Sprite>(3, loadOption); 

	public static ModItemList<Sprite> modFull = new ModItemList<Sprite>(3); 
	public static ModItemList<Sprite> modFull = new ModItemList<Sprite>(3, loadOptionFull); 

	public static Dictionary<string, List<ModItem<Sprite>>> dictList = new Dictionary<string, List<ModItem<Sprite>>>();

public class Portrait : UIButton

cs
private bool defaultPreserveAspect;

private FilterMode filter; 
public static bool UsePortraitAA 
{ 
	get 
	{ 
		if ((bool)EClass.core && EClass.core.config != null) 
		{ 
			return EClass.core.config.test.aaPortrait; 
		} 
		return false; 
	} 
} 
public static bool UsePortraitFilter 
{ 
	get 
	{ 
		if ((bool)EClass.core && EClass.core.config != null) 
		{ 
			return EClass.core.config.test.aaPortraitFilter; 
		} 
		return false; 
	} 
} 

public static List<ModItem<Sprite>> ListPlayerPortraits(int gender, bool nullPortrait = false)
{

public Color GetRandomHairColor(Chara c)

cs
{
	RestoreDefaults();
}
filter = ((isPortrait && Core.Instance.config.test.aaPortrait) ? FilterMode.Bilinear : FilterMode.Point); 
bool aa = UsePortraitAA; 
bool filter = UsePortraitFilter; 
portrait.rectTransform.anchorMin = overlay.rectTransform.anchorMin;
portrait.rectTransform.anchorMax = overlay.rectTransform.anchorMax;
portrait.rectTransform.sizeDelta = overlay.rectTransform.sizeDelta;

void FixTexture(Sprite s)

cs
{
	if ((bool)s && isPortrait)
	{
		s.texture.wrapMode = TextureWrapMode.Clamp; 
		if (s.texture.filterMode != filter) 
		Texture2D texture = s.texture; 
		texture.wrapMode = TextureWrapMode.Clamp; 
		FilterMode filterMode = ((filter && texture.mipmapCount > 1) ? FilterMode.Trilinear : (aa ? FilterMode.Bilinear : FilterMode.Point)); 
		if (texture.filterMode != filterMode) 
		{
			s.texture.filterMode = filter; 
			texture.filterMode = filterMode; 
		}
	}
}

Recipe โ€‹

public string GetName()

cs
	text = "(" + source.row.GetField<string>("id") + ")";
}
text = text.ToTitleCase();
if (source.row is CardRow && (source.row as CardRow).quality == 4) 
if (source.row is CardRow && (source.row as CardRow).quality == 4 && !text.Contains("โ˜…")) 
{
	text = "โ˜…" + text;
}

Thing โ€‹

public override string GetName(NameStyle style, int _num = -1)

cs
	{
		text7 = text7 + ((dMG != 0 || source.offense[0] != 0) ? ", " : "") + hIT;
	}
	text2 = text2 + " (" + text7.IsEmpty(" - ") + ") "; 
	text2 = text2 + " (" + text7.IsEmpty(" - ") + ")"; 
}
int dV = DV;
int pV = PV;

public override string GetName(NameStyle style, int _num = -1)

cs
{
	text2 += " [";
	text2 = text2 + dV + ", " + pV;
	text2 += "] "; 
	text2 += "]"; 
}
if (trait.HasCharges && trait.ShowCharges)
{

TraitChara โ€‹

public virtual bool CanAutoRevive

cs
{
	get
	{
		if (owner.isImported && !owner.isDestroyed) 
		if (owner.isImported && !owner.isDestroyed && !owner.IsGlobal) 
		{
			return !owner.IsGlobal; 
			return !owner.isSummon; 
		}
		return false;
	}

TraitGeneratorHamster โ€‹

public override bool OnUse(Chara c)

cs
		Toggle(!owner.isOn);
		return true;
	}
	public override void OnDie() 
	{ 
		if (!EClass._zone.IsRegion) 
		{ 
			Chara c = EClass._zone.SpawnMob(owner.pos.GetNearestPoint(allowBlock: false, allowChara: false), new SpawnSetting
			{ 
				id = "hamster"
			}); 
			Msg.Say("package_chara", c, owner); 
		} 
	} 
}

TraitStrangeStatue โ€‹

public override void OnDie()

cs
		Chara chara = EClass._zone.SpawnMob(owner.pos.GetNearestPoint(allowBlock: false, allowChara: false), new SpawnSetting
		{
			idSpawnList = "c_statue",
			filterLv = EClass._zone.DangerLv + 30
			filterLv = EClass._zone.DangerLv + 20
		});
		chara.SetHostility((EClass.rnd(3) != 0 || chara.trait is TraitMerchant) ? Hostility.Enemy : Hostility.Neutral);
		chara.SetSummon(9999); 
		Msg.Say("statue_chara", chara, owner);
	}
}

ZINT โ€‹

public class ZINT

cs
	public const int dateClaim = 2;

	public const int maxSimHours = 3;
	public const int resetMedal = 4; 
}

Zone โ€‹

public void Activate()

cs
	Debug.Log("Importing New Chara:" + item.id + "/" + item.Name + "/" + item.orgPos);
	map.serializedCharas.Add(item);
}
bool resetMedal = GetInt(4) != 0; 
map.things.ForeachReverse(delegate(Thing t)
{
	if (t.trait is TraitNewZone || t.trait is TraitPowerStatue)

public void Activate()

cs
	}
	return;
}
if (t.id == "medal" || t.id == "856") 
if (!resetMedal && (t.id == "medal" || t.id == "856")) 
{
	foreach (Thing thing3 in orgMap.things)
	{

public void Activate()

cs
		RemoveCard(t);
	}
});
SetInt(4); 
foreach (KeyValuePair<int, int> item2 in EClass._map.backerObjs.ToList())
{
	EClass._map.GetCell(item2.Key);

public void ResetHostility()

cs
{
	foreach (Chara chara in EClass._map.charas)
	{
		if (!chara.source.hostility.IsEmpty() && chara.source.hostility.ToEnum<Hostility>() >= Hostility.Friend && !chara.IsPCFactionOrMinion) 
		if (!chara.source.hostility.IsEmpty() && chara.source.hostility.ToEnum<Hostility>() >= Hostility.Friend && !chara.IsPCFactionOrMinion && !chara.isSummon && (EClass._zone is Zone_Civilized || EClass._zone.IsPCFactionOrTent)) 
		{
			chara.c_originalHostility = (Hostility)0;
		}
		chara.hostility = chara.OriginalHostility;
		if (chara.enemy != null && (chara.enemy.IsPCFaction || chara.IsPCFaction)) 
		if (chara.enemy != null && (chara.enemy.IsPCFaction || chara.IsPCFaction) && !chara.IsHostile(chara.enemy)) 
		{
			chara.SetEnemy();
		}