Skip to content

EA 23.203 Nyaightly

September 22, 2025

20 files modified. 2 new files created.

Important Changes

None.

ActEffect

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

cs
		{
			return;
		}
		Thing thing = ThingGen.Create("mine"); 
		thing.c_idRefCard = "dog_mine"; 
		Thing thing2 = ThingGen.Create("mine"); 
		thing2.c_idRefCard = "dog_mine"; 
		Zone.ignoreSpawnAnime = true;
		EClass._zone.AddCard(thing, CC.pos).Install(); 
		EClass._zone.AddCard(thing2, CC.pos).Install(); 
		break; 
	} 
	case EffectId.LittleSisterMigration:
	{ 
		if (!(EClass._zone is Zone_LittleGarden)) 
		{ 
			Msg.SayNothingHappen(); 
			return; 
		} 
		List<Chara> list3 = new List<Chara>(); 
		bool flag6 = false; 
		foreach (Chara chara2 in EClass._map.charas) 
		{ 
			if (!chara2.IsPCFactionOrMinion && chara2.id == "littleOne") 
			{ 
				if (flag6) 
				{ 
					flag6 = false; 
					continue; 
				} 
				list3.Add(chara2); 
				flag6 = true; 
			} 
		} 
		if (list3.Count == 0) 
		{ 
			Msg.SayNothingHappen(); 
			return; 
		} 
		EClass.pc.PlaySound("chime_angel"); 
		foreach (Chara item2 in list3) 
		{ 
			item2.PlayEffect("revive"); 
			item2.Destroy(); 
		} 
		Msg.Say("little_migration", list3.Count.ToString() ?? ""); 
		EClass._zone.ModInfluence(list3.Count); 
		EClass.player.stats.sistersDepart += list3.Count; 
		break;
	}
	case EffectId.MagicMap:

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

cs
	case EffectId.EnchantArmorGreat:
	{
		bool armor = id == EffectId.EnchantArmor || id == EffectId.EnchantArmorGreat;
		bool flag4 = id == EffectId.EnchantWeaponGreat || id == EffectId.EnchantArmorGreat; 
		bool flag3 = id == EffectId.EnchantWeaponGreat || id == EffectId.EnchantArmorGreat; 
		if (!tc.isThing)
		{
			LayerDragGrid.CreateEnchant(CC, armor, flag4, state); 
			LayerDragGrid.CreateEnchant(CC, armor, flag3, state); 
			return;
		}
		cc.PlaySound("identify");

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

cs
			tc.ModEncLv(-1);
			break;
		}
		int num4 = (flag4 ? 4 : 2) + (blessed ? 1 : 0); 
		int num4 = (flag3 ? 4 : 2) + (blessed ? 1 : 0); 
		if (tc.encLV >= num4)
		{
			cc.Say("enc_resist", tc);

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

cs
	case EffectId.Identify:
	case EffectId.GreaterIdentify:
	{
		bool flag2 = id == EffectId.GreaterIdentify; 
		bool flag4 = id == EffectId.GreaterIdentify; 
		if (flag)
		{
			Redirect(EffectId.ForgetItems, flag2 ? BlessedState.Cursed : BlessedState.Normal, default(ActRef)); 
			Redirect(EffectId.ForgetItems, flag4 ? BlessedState.Cursed : BlessedState.Normal, default(ActRef)); 
			break;
		}
		if (!tc.isThing)
		{
			int count = ((!blessed) ? 1 : (flag2 ? (2 + EClass.rnd(2)) : (3 + EClass.rnd(3)))); 
			LayerDragGrid.CreateIdentify(CC, flag2, state, 0, count); 
			int count = ((!blessed) ? 1 : (flag4 ? (2 + EClass.rnd(2)) : (3 + EClass.rnd(3)))); 
			LayerDragGrid.CreateIdentify(CC, flag4, state, 0, count); 
			return;
		}
		cc.PlaySound("identify");
		cc.PlayEffect("identify");
		tc.Thing.Identify(cc.IsPCParty, (!flag2) ? IDTSource.Identify : IDTSource.SuperiorIdentify); 
		tc.Thing.Identify(cc.IsPCParty, (!flag4) ? IDTSource.Identify : IDTSource.SuperiorIdentify); 
		break;
	}
	case EffectId.Uncurse:

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

cs
			LayerDragGrid.CreateUncurse(CC, state);
			return;
		}
		Thing thing2 = tc.Thing; 
		if (thing2.blessedState == BlessedState.Cursed) 
		Thing thing3 = tc.Thing; 
		if (thing3.blessedState == BlessedState.Cursed) 
		{
			thing2.SetBlessedState(BlessedState.Normal); 
			thing3.SetBlessedState(BlessedState.Normal); 
		}
		else if (thing2.blessedState == BlessedState.Doomed) 
		else if (thing3.blessedState == BlessedState.Doomed) 
		{
			thing2.SetBlessedState(BlessedState.Normal); 
			thing3.SetBlessedState(BlessedState.Normal); 
		}
		thing2.GetRootCard()?.TryStack(thing2); 
		LayerInventory.SetDirty(thing2); 
		thing3.GetRootCard()?.TryStack(thing3); 
		LayerInventory.SetDirty(thing3); 
		break;
	}
	case EffectId.Lighten:

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

cs
		cc.PlayEffect("identify");
		cc.Say("reconstruct", cc, tc);
		EClass.game.cards.uidNext += EClass.rnd(30);
		Thing thing3 = ThingGen.Create(tc.id, -1, tc.LV * power / 100); 
		thing3.SetBlessedState(state); 
		Thing thing = ThingGen.Create(tc.id, -1, tc.LV * power / 100); 
		thing.SetBlessedState(state); 
		tc.Destroy();
		CC.Pick(thing3, msg: false); 
		CC.Pick(thing, msg: false); 
		if (!CC.IsPC)
		{
			CC.TryEquip(thing3); 
			CC.TryEquip(thing); 
		}
		break;
	}

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

cs
		if (row == null)
		{
			bool num2 = id == EffectId.ChangeMaterialGreater;
			bool flag3 = id == EffectId.ChangeMaterialLesser; 
			bool flag2 = id == EffectId.ChangeMaterialLesser; 
			string text2 = tc.Thing.source.tierGroup;
			Dictionary<string, SourceMaterial.TierList> tierMap = SourceMaterial.tierMap;
			int num3 = 1;

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

cs
			{
				num3++;
			}
			if (flag3) 
			if (flag2) 
			{
				num3 -= 2;
			}

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

cs
		cc.PlayEffect("buff");
		if ((tc.id == "log" || tc.id == "branch") && tc.material.alias == "carbone")
		{
			foreach (Element item2 in tc.elements.dict.Values.ToList()) 
			foreach (Element item3 in tc.elements.dict.Values.ToList()) 
			{
				if (item2.IsTrait && item2.vBase != 0) 
				if (item3.IsTrait && item3.vBase != 0) 
				{
					tc.elements.ModBase(item2.id, -item2.vBase); 
					tc.elements.ModBase(item3.id, -item3.vBase); 
				}
			}
		}

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

cs
			}
			if (id == EffectId.Gate && CC.IsPC)
			{
				foreach (Chara chara2 in EClass._map.charas) 
				foreach (Chara chara3 in EClass._map.charas) 
				{
					if (!chara2.HasHost && chara2 != tc && (chara2.IsPCParty || chara2.IsPCPartyMinion)) 
					if (!chara3.HasHost && chara3 != tc && (chara3.IsPCParty || chara3.IsPCPartyMinion)) 
					{
						chara2.Teleport(tc.pos.GetNearestPoint(allowBlock: false, allowChara: false) ?? tc.pos); 
						chara3.Teleport(tc.pos.GetNearestPoint(allowBlock: false, allowChara: false) ?? tc.pos); 
					}
				}
			}

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

cs
		TC.Say("abShutterHex", TC);
		TC.pos.ForeachNeighbor(delegate(Point p)
		{
			foreach (Chara item3 in p.ListCharas()) 
			foreach (Chara item4 in p.ListCharas()) 
			{
				if (!item3.IsFriendOrAbove(CC)) 
				if (!item4.IsFriendOrAbove(CC)) 
				{
					int num9 = Dice.Create("SpShutterHex", power, CC, (actRef.refThing != null) ? null : actRef.act).Roll();
					item3.DamageHP(num9 * hex2, 919, power, AttackSource.None, CC); 
					item4.DamageHP(num9 * hex2, 919, power, AttackSource.None, CC); 
				}
			}
		});

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

cs
			break;
		}
		Thing thing4 = null;
		bool flag7 = actRef.n1 == "food"; 
		bool flag8 = actRef.n1 == "food"; 
		if (actRef.n1 == "money")
		{
			int currency = TC.GetCurrency();

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

cs
		else
		{
			Func<Thing, bool> func = (Thing t) => true;
			if (flag7) 
			if (flag8) 
			{
				func = (Thing t) => t.IsFood;
			}
			List<Thing> list4 = TC.things.List(delegate(Thing t) 
			List<Thing> list5 = TC.things.List(delegate(Thing t) 
			{
				if (t.parentCard?.trait is TraitChestMerchant || t.trait is TraitTool || t.IsThrownWeapon)
				{

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

cs
				}
				return t.trait.CanBeDestroyed && t.things.Count == 0 && t.invY != 1 && t.trait.CanBeStolen && !t.trait.CanOnlyCarry && !t.IsUnique && !t.isEquipped && t.blessedState == BlessedState.Normal && func(t);
			}, onlyAccessible: true);
			if (list4.Count > 0) 
			if (list5.Count > 0) 
			{
				thing4 = list4.RandomItem(); 
				thing4 = list5.RandomItem(); 
				if (thing4.Num > 1)
				{
					thing4 = thing4.Split(1);

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

cs
		{
			break;
		}
		List<Thing> list7 = TC.things.List(delegate(Thing t) 
		List<Thing> list8 = TC.things.List(delegate(Thing t) 
		{
			if (!t.isEquipped || t.blessedState == BlessedState.Doomed || t.IsToolbelt)
			{

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

cs
			}
			return (t.blessedState < BlessedState.Blessed || EClass.rnd(10) == 0) ? true : false;
		});
		if (list7.Count == 0) 
		if (list8.Count == 0) 
		{
			CC.SayNothingHappans();
			break;
		}
		Thing thing6 = list7.RandomItem(); 
		Thing thing6 = list8.RandomItem(); 
		TC.Say("curse_hit", TC, thing6);
		thing6.SetBlessedState((thing6.blessedState == BlessedState.Cursed) ? BlessedState.Doomed : BlessedState.Cursed);
		LayerInventory.SetDirty(thing6);

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

cs
				}
			}
		});
		foreach (Thing item4 in list) 
		foreach (Thing item5 in list) 
		{
			item4.GetRootCard()?.TryStack(item4); 
			item5.GetRootCard()?.TryStack(item5); 
		}
		if (success == 0 && fail == 0)
		{

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

cs
	{
		EClass.game.religions.Trickery.Talk("ability");
		bool hex = CC.IsHostile(TC);
		List<SourceStat.Row> list6 = EClass.sources.stats.rows.Where((SourceStat.Row con) => con.tag.Contains("random") && con.group == (hex ? "Debuff" : "Buff")).ToList(); 
		List<SourceStat.Row> list7 = EClass.sources.stats.rows.Where((SourceStat.Row con) => con.tag.Contains("random") && con.group == (hex ? "Debuff" : "Buff")).ToList(); 
		int power2 = power;
		for (int l = 0; l < 4 + EClass.rnd(2); l++)
		{
			SourceStat.Row row2 = list6.RandomItem(); 
			list6.Remove(row2); 
			SourceStat.Row row2 = list7.RandomItem(); 
			list7.Remove(row2); 
			Proc(hex ? EffectId.DebuffKizuami : EffectId.Buff, CC, TC, power2, new ActRef
			{
				n1 = row2.alias

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

cs
		break;
	case EffectId.Revive:
	{
		List<KeyValuePair<int, Chara>> list3 = EClass.game.cards.globalCharas.Where((KeyValuePair<int, Chara> a) => a.Value.isDead && a.Value.faction == EClass.pc.faction && !a.Value.isSummon && a.Value.c_wasInPcParty).ToList(); 
		List<KeyValuePair<int, Chara>> list4 = EClass.game.cards.globalCharas.Where((KeyValuePair<int, Chara> a) => a.Value.isDead && a.Value.faction == EClass.pc.faction && !a.Value.isSummon && a.Value.c_wasInPcParty).ToList(); 
		if (TC.IsPCFaction || TC.IsPCFactionMinion)
		{
			if (TC.IsPC && list3.Count == 0) 
			if (TC.IsPC && list4.Count == 0) 
			{
				list3 = EClass.game.cards.globalCharas.Where((KeyValuePair<int, Chara> a) => a.Value.CanRevive() && a.Value.isDead && a.Value.faction == EClass.pc.faction && !a.Value.isSummon).ToList(); 
				list4 = EClass.game.cards.globalCharas.Where((KeyValuePair<int, Chara> a) => a.Value.CanRevive() && a.Value.isDead && a.Value.faction == EClass.pc.faction && !a.Value.isSummon).ToList(); 
			}
			if (list3.Count > 0) 
			if (list4.Count > 0) 
			{
				list3.RandomItem().Value.Chara.GetRevived(); 
				list4.RandomItem().Value.Chara.GetRevived(); 
				break;
			}
		}

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

cs
	case EffectId.DamageMindGreat:
	case EffectId.Weaken:
	{
		bool flag8 = id == EffectId.DamageBody || id == EffectId.DamageBodyGreat; 
		bool flag9 = id == EffectId.DamageBody || id == EffectId.DamageBodyGreat; 
		bool mind = id == EffectId.DamageMind || id == EffectId.DamageMindGreat;
		int num8 = ((id == EffectId.DamageBody || id == EffectId.DamageMind) ? 1 : (4 + EClass.rnd(4)));
		if (id == EffectId.Weaken)
		{
			flag8 = EClass.rnd(2) == 0; 
			mind = !flag8; 
			flag9 = EClass.rnd(2) == 0; 
			mind = !flag9; 
			num8 = 1;
		}
		else

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

cs
			TC.PlayEffect("debuff");
			TC.PlaySound("debuff");
		}
		TC.Say(flag8 ? "damageBody" : "damageMind", TC); 
		TC.Say(flag9 ? "damageBody" : "damageMind", TC); 
		for (int k = 0; k < num8; k++)
		{
			TC.DamageTempElements(power, flag8, mind, id != EffectId.Weaken); 
			TC.DamageTempElements(power, flag9, mind, id != EffectId.Weaken); 
		}
		if (TC.IsPC)
		{

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

cs
	case EffectId.EnhanceBodyGreat:
	case EffectId.EnhanceMindGreat:
	{
		bool flag9 = id == EffectId.EnhanceBody || id == EffectId.EnhanceBodyGreat; 
		bool flag10 = id == EffectId.EnhanceBody || id == EffectId.EnhanceBodyGreat; 
		bool mind2 = id == EffectId.EnhanceMind || id == EffectId.EnhanceMindGreat;
		if (id != EffectId.EnhanceBody && id != EffectId.EnhanceMind)
		{
			EClass.rnd(4);
		}
		TC.Say(flag9 ? "enhanceBody" : "enhanceMind", TC); 
		TC.Say(flag10 ? "enhanceBody" : "enhanceMind", TC); 
		TC.PlayEffect("buff");
		TC.PlaySound("buff");
		TC.EnhanceTempElements(power, flag9, mind2, onlyRenew: true); 
		TC.EnhanceTempElements(power, flag10, mind2, onlyRenew: true); 
		break;
	}
	case EffectId.RestoreBody:
	case EffectId.RestoreMind:
	{
		bool flag6 = id == EffectId.RestoreBody; 
		bool flag7 = id == EffectId.RestoreBody; 
		if (flag)
		{
			Redirect(flag6 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef)); 
			Redirect(flag7 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef)); 
			break;
		}
		TC.Say(flag6 ? "restoreBody" : "restoreMind", TC); 
		TC.Say(flag7 ? "restoreBody" : "restoreMind", TC); 
		TC.PlaySound("heal");
		TC.PlayEffect("heal");
		TC.CureHost(flag6 ? CureType.CureBody : CureType.CureMind, power, state); 
		TC.CureHost(flag7 ? CureType.CureBody : CureType.CureMind, power, state); 
		if (blessed)
		{
			Redirect(flag6 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef)); 
			Redirect(flag7 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef)); 
		}
		break;
	}

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

cs
			Redirect(EffectId.CurseEQ, BlessedState.Normal, default(ActRef));
			break;
		}
		foreach (Condition item5 in TC.conditions.Copy()) 
		foreach (Condition item6 in TC.conditions.Copy()) 
		{
			if (item5.Type == ConditionType.Debuff && !item5.IsKilled && EClass.rnd(power * 2) > EClass.rnd(item5.power)) 
			if (item6.Type == ConditionType.Debuff && !item6.IsKilled && EClass.rnd(power * 2) > EClass.rnd(item6.power)) 
			{
				CC.Say("removeHex", TC, item5.Name.ToLower()); 
				item5.Kill(); 
				CC.Say("removeHex", TC, item6.Name.ToLower()); 
				item6.Kill(); 
				if (id == EffectId.RemoveHex)
				{
					break;

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

cs
		{
			power /= 4;
		}
		List<Thing> list5 = TC.things.List((Thing t) => (t.Num <= 1 && t.IsEquipmentOrRanged && !t.IsToolbelt && !t.IsLightsource && t.isEquipped) ? true : false); 
		if (list5.Count != 0) 
		List<Thing> list6 = TC.things.List((Thing t) => (t.Num <= 1 && t.IsEquipmentOrRanged && !t.IsToolbelt && !t.IsLightsource && t.isEquipped) ? true : false); 
		if (list6.Count != 0) 
		{
			Thing thing5 = list5.RandomItem(); 
			Thing thing5 = list6.RandomItem(); 
			TC.Say("acid_hit", TC);
			if (thing5.isAcidproof)
			{

ActMelee

public bool Attack(float dmgMulti = 1f)

cs
	{
		Act.CC.RemoveCondition<ConInvisibility>();
	}
	if (orgTC.isChara && orgTC.ExistsOnMap && orgTC != cC && !orgTC.IsRestrainedResident && ACT.Melee.CanPerform(orgTC.Chara, cC)) 
	if (orgTC.isChara && orgTC.ExistsOnMap && orgTC != cC && !orgTC.IsRestrainedResident && !orgTC.IsDisabled && ACT.Melee.CanPerform(orgTC.Chara, cC)) 
	{
		if (parried)
		{

void Attack(Card _tc, Point _tp, float mtp, bool subAttack)

cs
				}
				if (k > 0)
				{
					Act.CC.Say("attack_chaser"); 
					Act.CC.Say(Act.CC.IsHostile() ? "attack_chaser_enemy" : "attack_chaser"); 
				}
				flag = AttackProcess.Current.Perform(count, hasHit, dmgMulti * mtp * BaseDmgMTP, maxRoll, subAttack);
				if (!flag && frustration > 0 && !Act.TC.HasElement(439) && 10f + 2f * Mathf.Sqrt(frustration) > (float)EClass.rnd(100))

ActionMode

public void DoFunc(CoreConfig.GameFunc func)

cs
		}
		break;
	}
	case CoreConfig.GameFunc.ToggleLog:
		WidgetMainText.ToggleLog(); 
		break; 
	case CoreConfig.GameFunc.ShowInv:
		EClass.ui.ToggleInventory(delay: true);
		break;

AttackProcess

public void Prepare(Chara _CC, Thing _weapon, Card _TC = null, Point _TP = null,

cs
		dMulti = 0.6f + (float)(weaponSkill.GetParent(CC).Value + weaponSkill.Value / 2 + CC.Evalue(flag3 ? 304 : (IsRanged ? 133 : 132))) / 50f;
		dMulti += 0.05f * (float)CC.Evalue(IsRanged ? 1404 : 1400);
		toHitBase = EClass.curve((IsCane ? CC.WIL : CC.DEX) / 4 + weaponSkill.GetParent(CC).Value / 3 + weaponSkill.Value, 50, 25) + 50;
		if (CC.HasElement(1208) && weaponSkill.id == 101) 
		{ 
			toHitBase = toHitBase * 115 / 100; 
		} 
		toHitFix = CC.HIT + weapon.HIT;
		penetration = weapon.Penetration + CC.Evalue(92);
		if (IsRanged)

Biography

public int GetAge(Chara c)

cs
				return int.Parse(array[1]);
			}
		}
		if (!c.IsPC && EClass.game.principal.noAging) 
		{ 
			return EClass.game.Prologue.year - birthYear; 
		} 
		return EClass.world.date.year - birthYear;
	}

Card

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
			}
		}
	}
	if (origin != null && origin.HasElement(1208)) 
	{ 
		switch (attackSource) 
		{ 
		case AttackSource.MagicHand: 
			dmg = dmg * 130 / 100; 
			eleP = eleP * 150 / 100; 
			break; 
		case AttackSource.MagicSword: 
			dmg = dmg * 120 / 100; 
			eleP = eleP * 150 / 100; 
			break; 
		} 
	} 
	Element e;
	if (ele == 0 || ele == 926)
	{

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
							Chara.AddCondition<ConFractured>((int)Mathf.Max(10f, 30f - Mathf.Sqrt(Evalue(436))));
							hp = Mathf.Min(half * (int)Mathf.Sqrt(Evalue(436) * 2) / 100, MaxHP / 3);
						});
						goto IL_0ead; 
						goto IL_0f1d; 
					}
				}
				if (zoneInstanceBout != null && (bool)LayerDrama.Instance)

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
						if (EClass.player.invlunerable)
						{
							EvadeDeath(null);
							goto IL_0ead; 
							goto IL_0f1d; 
						}
					}
					if (Evalue(1220) > 0 && Chara.stamina.value >= (IsPC ? (Chara.stamina.max / 2) : (Chara.stamina.max / 3 * 2)))

public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource

cs
			}
		}
	}
	goto IL_0ead; 
	IL_0ead: 
	goto IL_0f1d; 
	IL_0f1d: 
	if (trait.CanBeAttacked)
	{
		renderer.PlayAnime(AnimeID.HitObj);

CoreConfig

public enum GameFunc

cs
		EmptyHand,
		Fire,
		SwitchHotbar,
		PropertySearch 
		PropertySearch, 
		ToggleLog 
	}

	public enum GameFuncBuild

CoreDebug

public void UpdateInput()

cs
	}
	if (Input.GetKeyDown(KeyCode.F4))
	{
		EClass.player.karma = EScriptable.rnd(200) - 100; 
		Msg.Say("k:" + EClass.player.karma + "  "); 
		if (EClass.player.karma < 80 && EClass.pc.HasElement(1270)) 
		{ 
			EClass.pc.SetFeat(1270, 0, msg: true); 
		} 
		if (EClass.player.karma > -80 && EClass.pc.HasElement(1271)) 
		{ 
			EClass.pc.SetFeat(1271, 0, msg: true); 
		} 
		if (EClass.player.karma >= 80) 
		{ 
			if (EScriptable.rnd(EClass.debug.enable ? 1 : 5) == 0 && !EClass.pc.HasElement(1270)) 
			{ 
				EClass.pc.SetFeat(1270, 1, msg: true); 
			} 
		} 
		else if (EClass.player.karma <= -80 && EScriptable.rnd(EClass.debug.enable ? 1 : 2) == 0 && !EClass.pc.HasElement(1271)) 
		{ 
			EClass.pc.SetFeat(1271, 1, msg: true); 
		} 
		EClass.game.quests.Start("into_darkness"); 
		EClass.game.quests.Start("negotiation_darkness").ChangePhase(5); 
		return;
	}
	if (Input.GetKeyDown(KeyCode.F5))

EffectId

public enum EffectId

cs
	EternalYouth = 301,
	MoonSpear = 302,
	BurnMana = 303,
	MoonArrow = 304
	MoonArrow = 304, 
	LittleSisterMigration = 305
}

GameDate

public void AdvanceMonth()

cs
public void AdvanceYear()
{
	base.year++;
	EClass.player.flags.santa = 0; 
	EClass.player.wellWished = false;
	EClass.player.nums.OnAdvanceYear();
	EClass.world.SendPackage(ThingGen.Create("gift_newyear"));

GamePrincipal

public enum Type

cs
	{
		Oath,
		Workaround,
		Legacy 
		Legacy, 
		Flavor 
	}

	public class Item

public void SetInt(int value)

cs
	[JsonProperty]
	public bool realAdv;

	[JsonProperty] 
	public bool noAging; 
	[JsonProperty]
	public bool dropRate;

public List<Item> ListItems()

cs
	{
		enableDamageReduction = a;
	});
	Add(-1, Type.Flavor, "noAging", () => noAging, delegate(bool a) 
	{ 
		noAging = a; 
	}); 
	return list;
	void Add(int grade, Type type, string id, Func<bool> _get, Action<bool> _set)
	{

LayerWorldSetting

public class LayerWorldSetting : ELayer

cs

	public List<Sprite> sprites;

	public Sprite spriteNoToken; 
	private bool started;

	public int IdxCustom => 3;

public void Refresh()

cs
	{
		AddCategory(GamePrincipal.Type.Workaround);
		AddCategory(GamePrincipal.Type.Legacy);
		AddCategory(GamePrincipal.Type.Flavor); 
	}
	transCustom.RebuildLayout();
	void AddCategory(GamePrincipal.Type type)

void AddCategory(GamePrincipal.Type type)

cs
			}
			bool flag = item.id == "permadeath" && !IsEmbark && !item.WasSealed();
			b.mainText.SetText(("pp_" + item.id).lang());
			b.icon.SetActive(item.grade >= 0 && (item.IsSealed() || item.WasSealed())); 
			b.icon.SetAlpha(item.IsSealed() ? 1f : 0.3f); 
			b.icon.sprite = ((item.grade < 0) ? null : sprites[item.grade]); 
			b.icon.SetActive(item.grade < 0 || item.IsSealed() || item.WasSealed()); 
			b.icon.SetAlpha((item.grade < 0 || item.IsSealed()) ? 1f : 0.3f); 
			b.icon.sprite = ((item.grade < 0) ? spriteNoToken : sprites[item.grade]); 
			b.icon.SetNativeSize();
			b.GetOrCreate<CanvasGroup>().alpha = (flag ? 0.5f : 1f);
			string text = "pp_" + item.id + "_hint";

void AddCategory(GamePrincipal.Type type)

cs
					pp.id = -1;
					RefreshTemplate();
				}
				b.icon.SetActive(item.grade >= 0 && (item.IsSealed() || item.WasSealed())); 
				b.icon.SetAlpha(item.IsSealed() ? 1f : 0.3f); 
				b.icon.SetActive(item.grade < 0 || item.IsSealed() || item.WasSealed()); 
				b.icon.SetAlpha((item.grade < 0 || item.IsSealed()) ? 1f : 0.3f); 
			});
		}
	}

Player

public class Stats : EClass

cs
		[JsonProperty]
		public int gambleChestOpen;

		[JsonProperty] 
		public int sistersDepart; 
		[JsonProperty]
		public long shipMoney;

public bool killedDuponne

cs
			}
		}

		public int santa 
		{ 
			get 
			{ 
				return ints[9]; 
			} 
			set 
			{ 
				ints[9] = value; 
			} 
		} 
		public int start
		{
			get

public void OnEnterZone()

cs
				PlayStory(availableStories[0]);
				availableStories.RemoveAt(0);
			}
			if (!LayerDrama.Instance && !EClass.game.isLoading && EClass.debug.enable && EClass._zone.IsPCFaction && EClass.game.quests.GetPhase<QuestIntoDarkness>() == 0 && EClass.game.quests.GetPhase<QuestNegotiationDarkness>() == 5) 
			{ 
				EClass.game.cards.globalCharas.Find("kettle"); 
				EClass.game.quests.Get<QuestNegotiationDarkness>().Complete(); 
				EClass.game.quests.Get<QuestIntoDarkness>().UpdateOnTalk(); 
			} 
		}

		public void OnLeaveZone()
		{
			if (QuestMain.Phase == 700) 
			if (!EClass.player.simulatingZone && QuestMain.Phase == 700) 
			{
				PlayStory(40);
			}

Quest

public virtual void OnEnterZone()

cs

	public virtual void OnClickQuest()
	{
		Chara chara = this.chara; 
		if (chara == null && !source.drama[0].IsEmpty()) 
		{ 
			chara = EClass.game.cards.globalCharas.Find(source.drama[0]); 
		} 
		if (!source.drama.IsEmpty())
		{
			LayerDrama.currentQuest = this;

QuestNegotiationDarkness

public override bool CanUpdateOnTalk(Chara c)

cs
	{
		return false;
	}
	public override void ShowCompleteText() 
	{ 
		Msg.Say("completeQuest", GetTitle()); 
	} 
}

QuestSupplySpecific

public override void SetIdThing()

cs
	{
		foreach (SourceThing.Row row in EClass.sources.things.rows)
		{
			if ((i != 0 || !(this is QuestMeal) || row.LV <= num || EClass.rnd(4) == 0) && row.category == idCat && !row.isOrigin) 
			if ((i != 0 || !(this is QuestMeal) || row.LV <= num || EClass.rnd(4) == 0) && row.category == idCat && !row.isOrigin && row.chance > 0) 
			{
				list.Add(row);
			}

Region

public void CheckRandomSites()

cs
	TryAddZone("foxtown_nefu");
	TryAddZone("little_garden");
	TryAddZone("cave_yeek");
	TryAddZone("cave_dragon"); 
	TryAddZone("cave_mino");
	TryAddZone("village_exile");
	TryAddZone("temple_undersea");

Scene

public void Init(Mode newMode)

cs
		{
			EMono.pc.RecalculateFOV();
		}
		EMono.player.flags.OnEnterZone(); 
		flock.SetSpawnType(EMono._zone.FlockType);
		if (!EMono.player.simulatingZone)
		{
			EMono.player.flags.OnEnterZone(); 
			if (EMono._zone == EMono.pc.homeZone)
			{
				EMono.pc.faith.Revelation("welcome");

Trait

public void OnBarter()

cs
				if (num12 > 10)
				{
					Add("syringe_heaven", num12 / 5, 0);
					Add("1276", 1, 0); 
				}
				break;
			}

+TraitSpit

File Created
cs
public class TraitSpit : TraitItem
{
	public override bool IsAnimeOn => owner.isOn;

	public override ToggleType ToggleType => ToggleType.Custom;

	public override bool CanUseFromInventory => false;

	public override bool OnUse(Chara c)
	{
		Toggle(!owner.isOn);
		return true;
	}
}

Zone

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

cs
		biome = ((EClass.rnd(4) != 0) ? EClass.core.refs.biomes.Water : EClass.core.refs.biomes.Sand);
	}
	SpawnList spawnList = null;
	spawnList = ((setting.idSpawnList != null) ? SpawnList.Get(setting.idSpawnList) : ((EClass._zone is Zone_DungeonYeek && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_yeek", (SourceChara.Row r) => r.race == "yeek" && r.quality == 0) : ((EClass._zone is Zone_DungeonMino && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_mino", (SourceChara.Row r) => r.race == "minotaur" && r.quality == 0) : ((setting.hostility == SpawnHostility.Neutral || (setting.hostility != SpawnHostility.Enemy && Rand.Range(0f, 1f) < ChanceSpawnNeutral)) ? SpawnList.Get("c_neutral") : ((biome.spawn.chara.Count <= 0) ? SpawnList.Get(biome.name, "chara", new CharaFilter
	spawnList = ((setting.idSpawnList != null) ? SpawnList.Get(setting.idSpawnList) : ((EClass._zone is Zone_DungeonYeek && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_yeek", (SourceChara.Row r) => r.race == "yeek" && r.quality == 0) : ((EClass._zone is Zone_DungeonDragon && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_dragon", (SourceChara.Row r) => (r.race == "dragon" || r.race == "drake" || r.race == "wyvern" || r.race == "lizardman" || r.race == "dinosaur") && r.quality == 0) : ((EClass._zone is Zone_DungeonMino && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_mino", (SourceChara.Row r) => r.race == "minotaur" && r.quality == 0) : ((setting.hostility == SpawnHostility.Neutral || (setting.hostility != SpawnHostility.Enemy && Rand.Range(0f, 1f) < ChanceSpawnNeutral)) ? SpawnList.Get("c_neutral") : ((biome.spawn.chara.Count <= 0) ? SpawnList.Get(biome.name, "chara", new CharaFilter
	{
		ShouldPass = delegate(SourceChara.Row s)
		{

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

cs
			}
			return s.biome == biome.name || s.biome.IsEmpty();
		}
	}) : SpawnList.Get(biome.spawn.GetRandomCharaId())))))); 
	}) : SpawnList.Get(biome.spawn.GetRandomCharaId()))))))); 
	int num = ((setting.dangerLv == -1) ? DangerLv : setting.dangerLv);
	CardBlueprint cardBlueprint = new CardBlueprint
	{

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

cs
		}
	}
	CardRow cardRow = (setting.id.IsEmpty() ? spawnList.Select(num2, setting.levelRange) : EClass.sources.cards.map[setting.id]);
	if (EClass.world.date.month == 12 && setting.rarity == Rarity.Random && EClass._zone.IsNefia && EClass._zone.isRandomSite && EClass.world.date.day >= 24 && EClass.world.date.day <= 26 && EClass.rnd(50 * (1 + EClass.player.flags.santa) * (1 + EClass.player.flags.santa)) == 0) 
	{ 
		cardRow = EClass.sources.cards.map["santa"]; 
		EClass.player.flags.santa++; 
	} 
	int num3 = ((setting.fixedLv == -1) ? cardRow.LV : setting.fixedLv);
	if (ScaleType == ZoneScaleType.Void)
	{

+Zone_DungeonDragon

File Created
cs
public class Zone_DungeonDragon : Zone_DungeonUnfixed
{
	public override bool LockExit => base.lv <= -6;
}