Skip to content

EA 23.320 Nyaightly Patch 1 โ€‹

June 22, 2026

11 files modified.

Important Changes โ€‹

None.

CharaRenderer โ€‹

public void DrawHat()

cs
		RenderObject.currentParam.x += 0.01f * (float)pref.equipX;
		RenderObject.currentParam.y += num + 0.01f * (float)(pref.equipY + cardRow.pref.equipY);
		RenderObject.currentParam.z += -0.09f;
		RenderObject.currentParam.tile = cardRow._tiles[owner.uid % cardRow._tiles.Length] * ((!flag) ? 1 : (-1)); 
		RenderObject.currentParam.tile = cardRow._tiles[MathEx.IntIDOverflowTempFix(owner.uid) % cardRow._tiles.Length] * ((!flag) ? 1 : (-1)); 
		RenderObject.currentParam.mat = cardRow.DefaultMaterial;
		RenderObject.currentParam.matColor = cardRow.GetColorInt(RenderObject.currentParam.mat);
		cardRow.renderData.Draw(RenderObject.currentParam);

FortuneRollData โ€‹

public List<List<string>> GetPrizeList()

cs
		{
			"computer", "834", "1090", "goods_figure", "goods_canvas", "mb_1", "mb_2", "mb_3", "mb_4", "mb_5",
			"1174", "1085", "toilet", "714", "nobility", "plat", "1165", "mathammer", "medal", "bbq",
			"panty", "beehive", "ticket_resident", "lovepotion", "crystal_sun", "goods_crim", "ride_boat", "scrubber"
			"panty", "beehive", "ticket_resident", "lovepotion", "crystal_sun", "goods_crim", "ride_boat"
		},
		new List<string>
		{

public List<List<string>> GetPrizeList()

cs
			"boat3",
			"medal",
			"ride_boat2",
			"play_ride_big", 
			"scrubber"
			"play_ride_big"
		}
	};
	if (EClass.pc.faction.IsGlobalPolicyActive(2712))

ListPeopleParty โ€‹

public override void OnRefreshMenu()

cs
			foreach (int uid in setup.uids)
			{
				Chara chara3 = EClass.game.cards.globalCharas.Find(uid);
				if (chara3 != null && !chara3.IsPC && CanJoinParty(chara3)) 
				if (chara3 != null && !chara3.IsPC && CanJoinParty(chara3) && chara3.IsPCFaction) 
				{
					JoinParty(chara3);
					if (chara3.uid == setup.ride)

public override void OnRefreshMenu()

cs
						text = text + " " + "party_parasite".lang();
					}
				}
				n.note.AddText(text, (chara2 == null || chara2.isDead) ? FontColor.Bad : ((!CanJoinParty(chara2)) ? FontColor.Warning : FontColor.Good)); 
				n.note.AddText(text, (chara2 == null || chara2.isDead || !chara2.IsPCFaction) ? FontColor.Bad : ((!CanJoinParty(chara2)) ? FontColor.Warning : FontColor.Good)); 
			}
			n.note.Build();
		});

Map โ€‹

public void TryShatter(Point pos, int ele, int power, Card CC = null)

cs
				List<SourceThing.Row> list3 = new List<SourceThing.Row>();
				foreach (RecipeSource item4 in RecipeManager.list)
				{
					if (!(item4.row is SourceThing.Row { isOrigin: false } row) || row.components.IsEmpty() || (row.components.Length >= 3 && !row.components[2].StartsWith('+')) || !row.Category.IsChildOf("meal") || (row.HasTag(CTAG.dish_fail) && power > EClass.rnd(500))) 
					if (!(item4.row is SourceThing.Row { isOrigin: false, chance: not 0 } row) || row.components.IsEmpty() || (row.components.Length >= 3 && !row.components[2].StartsWith('+')) || !row.Category.IsChildOf("meal") || (row.HasTag(CTAG.dish_fail) && power > EClass.rnd(500))) 
					{
						continue;
					}

Quest โ€‹

public enum SubReward

cs
	[JsonProperty]
	public int rewardMoney;

	[JsonProperty] 
	public int bonusMoney; 
	[JsonProperty]
	public int startDate;

	[JsonProperty]
	public int dangerLv;

	[JsonProperty] 
	public long bonusMoney; 
	[JsonProperty]
	public bool isNew;

QuestRandom โ€‹

public class QuestRandom : Quest

cs

	public override void OnDropReward()
	{
		long num = (long)bonusMoney * (long)(55 + difficulty * 15) / 100; 
		long num = bonusMoney * (55 + difficulty * 15) / 100; 
		int num2 = MathEx.ClampToInt(num + rewardMoney, 10000000);
		if (num2 > 0)
		{

TaskClean โ€‹

public override IEnumerable<Status> Run()

cs
		num = ((num <= 0) ? 1 : (2 + num / 10));
		if (num > 1)
		{
			List<Point> list = EClass._map.ListPointsInSquare(dest, num - 1); 
			List<Point> list = EClass._map.ListPointsInSquare(dest, num - 1, mustBeWalkable: false); 
			list.Sort((Point a, Point b) => a.Distance(dest) - b.Distance(dest));
			foreach (Point item in list)
			{

Thing โ€‹

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

cs
		});
	}
	text = idUnknown;
	goto IL_047d; 
	IL_047d: 
	goto IL_0499; 
	IL_0499: 
	if (GetBool(125))
	{
		text = "_halfeaten".lang(text);

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

cs
		}
		if (!(text11 == "*r"))
		{
			text = ((!source.name2.IsEmpty()) ? source.GetTextArray("name2")[0].Replace("#1b", base.c_extraNameRef.IsEmpty((base.refCard == null) ? text11 : (base.refCard.isChara ? base.refCard.GetName() : base.refCard.GetText()))).Replace("#1", base.c_extraNameRef.IsEmpty(text11)) : (source.naming.Contains("last") ? (text + Lang.space + text11) : (source.naming.Contains("first") ? (text11 + Lang.space + text) : ((!source.naming.Contains("of")) ? (text6.IsEmpty() ? "_of3" : "_of2").lang(text11, text) : "_of".lang(text11, text))))); 
			text = ((!source.name2.IsEmpty()) ? source.GetTextArray("name2")[0].Replace("#1g", EClass.pc.faith.NameShort).Replace("#1b", base.c_extraNameRef.IsEmpty((base.refCard == null) ? text11 : (base.refCard.isChara ? base.refCard.GetName() : base.refCard.GetText()))).Replace("#1", base.c_extraNameRef.IsEmpty(text11)) : (source.naming.Contains("last") ? (text + Lang.space + text11) : (source.naming.Contains("first") ? (text11 + Lang.space + text) : ((!source.naming.Contains("of")) ? (text6.IsEmpty() ? "_of3" : "_of2").lang(text11, text) : "_of".lang(text11, text))))); 
		}
		else
		{

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

cs
				}
			}
		}
		goto IL_047d; 
		goto IL_0499; 
	}

	public override string GetHoverText()

ThingGen โ€‹

public static void CreateTreasureContent(Thing t, int lv, TreasureType type, boo

cs
		t.Add("money", EClass.rndHalf(1000 + num * 100));
		t.Add("money2", EClass.rndHalf(Mathf.Min(3 + num / 10, 10)));
		t.Add("medal", EClass.rnd(3));
		TryAddScrubber(25); 
		break;
	case TreasureType.BossNefia:
	case TreasureType.BossQuest:

public static void CreateTreasureContent(Thing t, int lv, TreasureType type, boo

cs
			t.Add("book_skill", 1, lv);
		}
		t.c_lockLv /= 2;
		TryAddScrubber(5); 
		break;
	case TreasureType.SurvivalRaid:
		t.Add("plat", EClass.rndHalf(Mathf.Min(3 + num / 10, 15)));

public static void CreateTreasureContent(Thing t, int lv, TreasureType type, boo

cs
		t.Add("book_skill", 1, lv);
		t.Add("book_skill", 1, lv);
		t.c_lockLv /= 3;
		TryAddScrubber(2); 
		break;
	case TreasureType.RandomChest:
		flag2 = false;

public static void CreateTreasureContent(Thing t, int lv, TreasureType type, boo

cs
		{
			t.Add("medal");
		}
		TryAddScrubber(30); 
		break;
	}
	if (type == TreasureType.RandomChest && EClass.rnd(2) == 0)

void SetRarity(int mtp)

cs
				rarity = rarity
			});
		}
		void TryAddScrubber(int chance) 
		{ 
			if (EClass.rnd(chance) == 0) 
			{ 
				Thing thing2 = Create("scrubber"); 
				thing2.rarity = Rarity.Legendary; 
				thing2.elements.SetBase(770, 1 + EClass.rnd(EClass.rnd(Mathf.Min(10 + (int)Mathf.Sqrt(lv) * 2, 30) + 1))); 
				t.AddThing(thing2); 
			} 
		} 
	}

	public static void TryLickChest(Thing chest)

Trait โ€‹

public virtual void OnBarter(bool reroll = false)

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

public virtual void OnBarter(bool reroll = false)

cs
		{
			break;
		}
		int num5 = 0; 
		foreach (Thing thing11 in c_copyContainer.things) 
		int num7 = 0; 
		foreach (Thing thing12 in c_copyContainer.things) 
		{
			if (!owner.trait.CanCopy(thing11)) 
			if (!owner.trait.CanCopy(thing12)) 
			{
				continue;
			}
			Thing thing2 = thing11.Duplicate(1); 
			thing2.isStolen = false; 
			thing2.isCopy = true; 
			thing2.c_priceFix = 0; 
			foreach (Element item in thing2.elements.dict.Values.Where((Element e) => e.HasTag("noInherit")).ToList()) 
			Thing thing6 = thing12.Duplicate(1); 
			thing6.isStolen = false; 
			thing6.isCopy = true; 
			thing6.c_priceFix = 0; 
			foreach (Element item in thing6.elements.dict.Values.Where((Element e) => e.HasTag("noInherit")).ToList()) 
			{
				thing2.elements.Remove(item.id); 
				thing6.elements.Remove(item.id); 
			}
			int num6 = 1; 
			int num8 = 1; 
			switch (owner.trait.CopyShop)
			{
			case CopyShopType.Item:
			{
				num6 = (1000 + owner.c_invest * 100) / (thing2.GetPrice(CurrencyType.Money, sell: false, PriceType.CopyShop) + 50); 
				num8 = (1000 + owner.c_invest * 100) / (thing6.GetPrice(CurrencyType.Money, sell: false, PriceType.CopyShop) + 50); 
				int[] array = new int[3] { 704, 703, 702 };
				foreach (int ele in array)
				{
					if (thing2.HasElement(ele)) 
					if (thing6.HasElement(ele)) 
					{
						num6 = 1; 
						num8 = 1; 
					}
				}
				break;
			}
			case CopyShopType.Spellbook:
				thing2.c_charges = thing11.c_charges; 
				thing6.c_charges = thing12.c_charges; 
				break;
			}
			if (num6 > 1 && thing2.trait.CanStack) 
			if (num8 > 1 && thing6.trait.CanStack) 
			{
				thing2.SetNum(num6); 
				thing6.SetNum(num8); 
			}
			AddThing(thing2); 
			num5++; 
			if (num5 > owner.trait.NumCopyItem) 
			AddThing(thing6); 
			num7++; 
			if (num7 > owner.trait.NumCopyItem) 
			{
				break;
			}

public virtual void OnBarter(bool reroll = false)

cs
		break;
	case ShopType.RedBook:
	{
		for (int num9 = 0; num9 < 30; num9++) 
		for (int k = 0; k < 30; k++) 
		{
			AddThing(ThingGen.CreateFromFilter("shop_seeker"));
		}

public virtual void OnBarter(bool reroll = false)

cs
		Add("block_kiwi", EClass.rndHalf(6), 0);
		Add("block_peach", EClass.rndHalf(6), 0);
		Add("water", 1, 0);
		if (EClass.rndSeed(EClass.debug.enable ? 1 : 3, seed) == 0) 
		{ 
			Thing thing5 = Add("scrubber", 1, 0); 
			thing5.rarity = Rarity.Legendary; 
			thing5.elements.SetBase(770, 1 + EClass.rndSeed(EClass.rndSeed(20, seed) + 1, seed)); 
		} 
		if (EClass.rndSeed(EClass.debug.enable ? 1 : 5, seed) == 0)
		{
			Add("hammer_garokk", 1, 0);

public virtual void OnBarter(bool reroll = false)

cs
				break;
			case ShopType.Influence:
			{
				bool num7 = owner.id == "big_sister"; 
				TraitTicketFurniture.SetZone(num7 ? EClass.game.spatials.Find("little_garden") : EClass._zone, Add("ticket_furniture", 1, 0).SetNum(99)); 
				if (num7) 
				bool num5 = owner.id == "big_sister"; 
				TraitTicketFurniture.SetZone(num5 ? EClass.game.spatials.Find("little_garden") : EClass._zone, Add("ticket_furniture", 1, 0).SetNum(99)); 
				if (num5) 
				{
					Add("littleball", 10, 0);
					if (!owner.Chara.affinity.CanGiveCard())

public virtual void OnBarter(bool reroll = false)

cs
							owner.Chara.ModExp(287, 1000);
						}
					}
					Thing thing4 = CraftUtil.MakeLoveLunch(owner.Chara); 
					thing4.elements.SetBase(1229, 1); 
					AddThing(thing4); 
					Thing thing3 = CraftUtil.MakeLoveLunch(owner.Chara); 
					thing3.elements.SetBase(1229, 1); 
					AddThing(thing3); 
					break;
				}
				for (int n = 0; n < 10; n++)
				{
					Thing thing5 = ThingGen.Create(EClass._zone.IsFestival ? "1123" : ((EClass.rnd(3) == 0) ? "1169" : "1160")); 
					thing5.DyeRandom(); 
					AddThing(thing5); 
					Thing thing4 = ThingGen.Create(EClass._zone.IsFestival ? "1123" : ((EClass.rnd(3) == 0) ? "1169" : "1160")); 
					thing4.DyeRandom(); 
					AddThing(thing4); 
				}
				if (EClass._zone is Zone_Exile)
				{
					for (int num8 = 0; num8 < 30; num8++) 
					for (int num6 = 0; num6 < 30; num6++) 
					{
						Add("1235", 1, -1);
						Add("1236", 1, -1);

public virtual void OnBarter(bool reroll = false)

cs
				AddThing(ThingGen.CreatePerfume(9503, 5));
				for (int l = 0; l < 5; l++)
				{
					Thing thing3 = ThingGen.CreateFromCategory("seasoning").SetNum(10); 
					thing3.elements.SetBase(2, 40); 
					thing3.c_priceFix = 1000; 
					AddThing(thing3); 
					Thing thing2 = ThingGen.CreateFromCategory("seasoning").SetNum(10); 
					thing2.elements.SetBase(2, 40); 
					thing2.c_priceFix = 1000; 
					AddThing(thing2); 
				}
				break;
			}

public virtual void OnBarter(bool reroll = false)

cs
					continue;
				}
				string[] array2 = item4.row.recipeKey;
				for (int k = 0; k < array2.Length; k++) 
				for (int num9 = 0; num9 < array2.Length; num9++) 
				{
					if (array2[k] == text) 
					if (array2[num9] == text) 
					{
						NoRestock(ThingGen.CreateRecipe(item4.id));
						break;

public virtual void OnBarter(bool reroll = false)

cs
					{
						TreasureType treasureType = ((EClass.rnd(10) == 0) ? TreasureType.BossNefia : ((EClass.rnd(10) == 0) ? TreasureType.Map : TreasureType.RandomChest));
						int num13 = EClass.rnd(EClass.rnd(ShopLv + (EClass.debug.enable ? 200 : 50)) + 1) + 1;
						Thing thing6 = ThingGen.Create(treasureType switch
						Thing thing7 = ThingGen.Create(treasureType switch
						{
							TreasureType.Map => "chest_treasure", 
							TreasureType.BossNefia => "chest_boss", 
							_ => "chest3", 
						});
						thing6.c_lockedHard = true; 
						thing6.c_lockLv = num13; 
						thing6.c_priceAdd = 2000 + num13 * 250 * ((treasureType == TreasureType.RandomChest) ? 1 : 5); 
						thing6.c_revealLock = true; 
						ThingGen.CreateTreasureContent(thing6, num13, treasureType, clearContent: true); 
						AddThing(thing6); 
						thing7.c_lockedHard = true; 
						thing7.c_lockLv = num13; 
						thing7.c_priceAdd = 2000 + num13 * 250 * ((treasureType == TreasureType.RandomChest) ? 1 : 5); 
						thing7.c_revealLock = true; 
						ThingGen.CreateTreasureContent(thing7, num13, treasureType, clearContent: true); 
						AddThing(thing7); 
					}
				}
				break;

public virtual void OnBarter(bool reroll = false)

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

public virtual void OnBarter(bool reroll = false)

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

void NoRestock(Thing _t)

cs
				}
				void NoRestockId(string _id, int num, int idSkin)
				{
					Thing thing8 = ThingGen.Create(_id).SetNum(num); 
					thing8.idSkin = idSkin; 
					NoRestock(thing8); 
					Thing thing9 = ThingGen.Create(_id).SetNum(num); 
					thing9.idSkin = idSkin; 
					NoRestock(thing9); 
				}
			}

public Thing CreateStock()

cs
				}
				return FromFilter("shop_bread");
			case ShopType.Sweet:
				if (EClass.rnd(3) == 0) 
				if (EClass.rnd(6) == 0) 
				{
					return Create("dough");
				}
				if (EClass.rnd(4) == 0) 
				{ 
					return Create("cream"); 
				} 
				return FromFilter("shop_sweet");
			case ShopType.Curry:
				if (EClass.rnd(3) == 0)

TraitBrewery โ€‹

public override bool OnChildDecay(Card c, bool firstDecay)

cs
		{
			return true;
		}
		if (!c.IsFood && !(c.trait is TraitDrinkMilk)) 
		if (!c.IsFood && c.sourceCard._origin != "milk") 
		{
			return true;
		}