Skip to content

EA 23.273 Nyaightly Patch 1

February 22, 2026

6 files modified. 1 new file created.

Important Changes

None.

AI_Fuck

public enum Variation

cs

	public virtual FuckType Type => FuckType.fuck;

	public bool IsSacredLovemaking 
	{ 
		get 
		{ 
			if (variation == Variation.Normal && owner != null && target != null && target != owner && (owner == EClass.pc || owner.IsMarried)) 
			{ 
				if (target != EClass.pc) 
				{ 
					return target.IsMarried; 
				} 
				return true; 
			} 
			return false; 
		} 
	} 
	public override bool PushChara => false;

	public override bool IsAutoTurn => true;

public void Finish()

cs
		}
		else if (variation != Variation.NTR && variation != Variation.Bloodsuck && variation != Variation.Slime && chara != EClass.pc)
		{
			int num3 = CalcMoney.Whore(chara2, chara); 
			Chara chara4 = chara; 
			Chara chara5 = chara2; 
			if (variation == Variation.Bitch) 
			{ 
				chara = chara5; 
				chara2 = chara4; 
			} 
			Debug.Log("buyer:" + chara.Name + " seller:" + chara2.Name + " money:" + num3); 
			if (!chara.IsPC) 
			{ 
				chara.ModCurrency(EClass.rndHalf(num3)); 
			} 
			if (!chara2.IsPC && chara.GetCurrency() < num3 && EClass.rnd(2) == 0) 
			if (IsSacredLovemaking) 
			{
				num3 = chara.GetCurrency(); 
			} 
			Debug.Log("money:" + num3 + " buyer:" + chara.GetCurrency()); 
			if (chara.GetCurrency() >= num3) 
			{ 
				chara.Talk("tail_pay"); 
				flag = true; 
			}
			else
			{
				chara.Talk("tail_nomoney"); 
				num3 = chara.GetCurrency(); 
				chara2.Say("angry", chara2); 
				chara2.Talk("angry"); 
				flag = (sell ? true : false); 
				if (EClass.rnd(chara.IsPC ? 2 : 20) == 0) 
				int num3 = CalcMoney.Whore(chara2, chara); 
				Chara chara4 = chara; 
				Chara chara5 = chara2; 
				if (variation == Variation.Bitch) 
				{
					flag3 = true; 
					chara = chara5; 
					chara2 = chara4; 
				}
			} 
			chara.ModCurrency(-num3); 
			if (chara2 == EClass.pc) 
			{ 
				if (num3 > 0) 
				Debug.Log("buyer:" + chara.Name + " seller:" + chara2.Name + " money:" + num3); 
				if (!chara.IsPC) 
				{
					EClass.player.DropReward(ThingGen.Create("money").SetNum(num3)); 
					EClass.player.ModKarma(-1); 
					chara.ModCurrency(EClass.rndHalf(num3)); 
				}
			} 
			else
			{ 
				int num4 = (chara2.CHA * 10 + 100) / ((chara2.IsPCFaction && chara2.memberType == FactionMemberType.Default) ? 1 : 10); 
				if (chara2.GetCurrency() - num4 > 0) 
				if (!chara2.IsPC && chara.GetCurrency() < num3 && EClass.rnd(2) == 0) 
				{ 
					num3 = chara.GetCurrency(); 
				} 
				Debug.Log("money:" + num3 + " buyer:" + chara.GetCurrency()); 
				if (chara.GetCurrency() >= num3) 
				{
					chara2.c_allowance += num3; 
					chara.Talk("tail_pay"); 
				}
				else
				{
					chara2.ModCurrency(num3); 
					chara.Talk("tail_nomoney"); 
					num3 = chara.GetCurrency(); 
					chara2.Say("angry", chara2); 
					chara2.Talk("angry"); 
					flag = (sell ? true : false); 
					if (EClass.rnd(chara.IsPC ? 2 : 20) == 0) 
					{ 
						flag3 = true; 
					} 
				}
				chara.ModCurrency(-num3); 
				if (chara2 == EClass.pc) 
				{ 
					if (num3 > 0) 
					{ 
						EClass.player.DropReward(ThingGen.Create("money").SetNum(num3)); 
						EClass.player.ModKarma(-1); 
					} 
				} 
				else
				{ 
					int num4 = (chara2.CHA * 10 + 100) / ((chara2.IsPCFaction && chara2.memberType == FactionMemberType.Default) ? 1 : 10); 
					if (chara2.GetCurrency() - num4 > 0) 
					{ 
						chara2.c_allowance += num3; 
					} 
					else
					{ 
						chara2.ModCurrency(num3); 
					} 
				} 
				chara = chara4; 
				chara2 = chara5; 
			}
			chara = chara4; 
			chara2 = chara5; 
		}
		if (flag3)
		{

public void Finish()

cs
			break;
		}
		}
		if (IsSacredLovemaking) 
		{ 
			chara.Say("tender_hug", chara, chara2); 
		} 
		break;
	}
	case FuckType.tame:

ActEffect

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

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:

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

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

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

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

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

cs
	case EffectId.Identify:
	case EffectId.GreaterIdentify:
	{
		bool flag3 = id == EffectId.GreaterIdentify; 
		bool flag4 = id == EffectId.GreaterIdentify; 
		if (flag)
		{
			Redirect(EffectId.ForgetItems, flag3 ? BlessedState.Cursed : BlessedState.Normal, default(ActRef)); 
			Redirect(EffectId.ForgetItems, flag4 ? BlessedState.Cursed : BlessedState.Normal, default(ActRef)); 
			break;
		}
		if (!tc.isThing)
		{
			int count = ((!blessed) ? 1 : (flag3 ? (2 + EClass.rnd(2)) : (3 + EClass.rnd(3)))); 
			LayerDragGrid.CreateIdentify(CC, flag3, 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, (!flag3) ? IDTSource.Identify : IDTSource.SuperiorIdentify); 
		tc.Thing.Identify(cc.IsPCParty, (!flag4) ? IDTSource.Identify : IDTSource.SuperiorIdentify); 
		break;
	}
	case EffectId.Uncurse:

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

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

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

cs
		}
		cc.PlaySound("offering");
		cc.PlayEffect("buff");
		int num3 = (tc.isWeightChanged ? tc.c_weight : tc.Thing.source.weight); 
		int num5 = (tc.isWeightChanged ? tc.c_weight : tc.Thing.source.weight); 
		tc.isWeightChanged = true;
		Element orCreateElement = tc.elements.GetOrCreateElement(64);
		Element orCreateElement2 = tc.elements.GetOrCreateElement(65);
		Element orCreateElement3 = tc.elements.GetOrCreateElement(67);
		Element orCreateElement4 = tc.elements.GetOrCreateElement(66);
		bool flag4 = tc.IsEquipmentOrRangedOrAmmo || tc.IsThrownWeapon; 
		bool flag5 = tc.IsEquipmentOrRangedOrAmmo || tc.IsThrownWeapon; 
		if (flag)
		{
			num3 = (int)(0.01f * (float)num3 * (float)power * 0.75f + 500f); 
			if (num3 < 0 || num3 > 10000000) 
			num5 = (int)(0.01f * (float)num5 * (float)power * 0.75f + 500f); 
			if (num5 < 0 || num5 > 10000000) 
			{
				num3 = 10000000; 
				flag4 = false; 
				num5 = 10000000; 
				flag5 = false; 
			}
			if (flag4) 
			if (flag5) 
			{
				if (tc.IsWeapon || tc.IsThrownWeapon || tc.IsAmmo)
				{

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

cs
		}
		else
		{
			num3 = num3 * (100 - power / 10) / 100; 
			num5 = num5 * (100 - power / 10) / 100; 
			if (blessed)
			{
				power /= 4;
			}
			if (flag4) 
			if (flag5) 
			{
				if (tc.IsWeapon || tc.IsThrownWeapon || tc.IsAmmo)
				{

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

cs
			}
			cc.Say("lighten", cc, tc);
		}
		tc.c_weight = num3; 
		tc.c_weight = num5; 
		tc.SetDirtyWeight();
		if (tc.parent == null)
		{

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

cs
		});
		Thing thing3 = ThingGen.Create(tc.id, -1, (int)((long)num6 * (long)power / 400));
		thing3.genLv = num6;
		if (tc.c_uidAttune != 0) 
		{ 
			thing3.c_uidAttune = tc.c_uidAttune; 
			if (thing3.id == "amulet_engagement" || thing3.id == "ring_engagement") 
			{ 
				thing3.elements.ModBase(484, 3); 
			} 
		} 
		tc.Destroy();
		CC.Pick(thing3, msg: false);
		if (!CC.IsPC)

AttackProcess

public class AttackProcess : EClass

cs
{
	public static AttackProcess Current = new AttackProcess();

	public long toHit; 
	public long toHitBase; 
	public int dNum;

	public int dDim;

	public int dBonus;

	public int toHit; 
	public int toHitBase; 
	public int toHitFix;

	public int evasion;

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

cs
		}
		if (IsCane)
		{
			toHitBase += 50; 
			toHitBase += 50L; 
		}
	}
	if (ammo != null && !(ammo.trait is TraitAmmoTalisman))

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

cs
	}
	if (CC.isConfused || CC.HasCondition<ConDim>())
	{
		toHit /= 2; 
		toHit /= 2L; 
	}
	if (TC != null)
	{

public bool CalcHit()

cs
		int num = TC.Evalue(151);
		if (num != 0 && toHit < num * 10)
		{
			int num2 = evasion * 100 / Mathf.Clamp(toHit, 1, toHit); 
			if (num2 > 300 && EClass.rnd(num + 250) > 100) 
			float num2 = (float)(evasion * 100) / Mathf.Clamp(toHit, 1f, toHit); 
			if (num2 > 300f && EClass.rnd(num + 250) > 100) 
			{
				return EvadePlus();
			}
			if (num2 > 200 && EClass.rnd(num + 250) > 150) 
			if (num2 > 200f && EClass.rnd(num + 250) > 150) 
			{
				return EvadePlus();
			}
			if (num2 > 150 && EClass.rnd(num + 250) > 200) 
			if (num2 > 150f && EClass.rnd(num + 250) > 200) 
			{
				return EvadePlus();
			}

Chara

public bool UseAbility(Act a, Card tc = null, Point pos = null, bool pt = false)

cs
		{
			Say(race.castStyle.IsEmpty("cast"), this, a.source.GetName().ToLower(), s.lang());
		}
		if (IsPC && !ability.Has(a.id)) 
		if (IsPC) 
		{
			_ = (i + 1) / 2;
			if (a.vPotential < i) 
			bool flag2 = ability.Has(a.id); 
			if (a.vPotential < i && !flag2) 
			{
				Msg.Say("noSpellStock");
				EInput.Consume();
				return false;
			}
			if (num4 > 0 && (a.vPotential >= i * 2 || ability.Has(a.id))) 
			if (num4 > 0 && (a.vPotential >= i * 2 || flag2)) 
			{
				a.vPotential -= i * 2; 
				if (!flag2) 
				{ 
					a.vPotential -= i * 2; 
				} 
				num6 = num6 * (100 - num4 * 20) / 100;
			}
			else
			else if (!flag2) 
			{
				a.vPotential -= i;
			}

public bool UseAbility(Act a, Card tc = null, Point pos = null, bool pt = false)

cs
		RemoveCondition<ConInvisibility>();
		return true;
	}
	bool flag2 = true; 
	bool flag3 = true; 
	if (a.source.cooldown > 0 && (!IsPC || !a.source.tag.Contains("CD_npc")))
	{
		AddCooldown(a.id, a.source.cooldown);

public bool UseAbility(Act a, Card tc = null, Point pos = null, bool pt = false)

cs
			}
			ActEffect.RapidCount = j;
			ActEffect.RapidDelay = a.RapidDelay;
			flag2 = a.Perform(this, tc, pos); 
			flag3 = a.Perform(this, tc, pos); 
		}
	}
	if (flag2 && !isDead) 
	if (flag3 && !isDead) 
	{
		if (cost.cost > 0 && a.source.lvFactor > 0)
		{

public bool UseAbility(Act a, Card tc = null, Point pos = null, bool pt = false)

cs
		}
	}
	ActEffect.RapidCount = 0;
	if (flag2 && !a.source.tag.Contains("keepInvisi") && EClass.rnd(2) == 0) 
	if (flag3 && !a.source.tag.Contains("keepInvisi") && EClass.rnd(2) == 0) 
	{
		RemoveCondition<ConInvisibility>();
		RemoveCondition<ConDark>();

public bool UseAbility(Act a, Card tc = null, Point pos = null, bool pt = false)

cs
		string name = a.Name;
		renderer.Say("| " + name + " ");
	}
	return flag2; 
	return flag3; 
	void ForeachEnemy(Action<Chara> action)
	{
		if (_pts.Count == 0)

DramaCustomSequence

public void Build(Chara c)

cs
			{
				Choice2("daBout", "_bout");
			}
			if (c.isDrunk || c.HasElement(1275) || EClass.debug.enable) 
			if (c.isDrunk || c.IsMarried || EClass.debug.enable) 
			{
				Choice2(flag2 ? "daBird" : "daTail", "_tail");
			}

public void Build(Chara c)

cs
	Step("_tail");
	Method(delegate
	{
		TempTalkTopic(bird + "1", null); 
		TempTalkTopic(c.IsMarried ? "tail4" : (bird + "1"), null); 
		Choice("yes2", delegate
		{
			TempTalkTopic(bird + "2", StepEnd);

Trait

public void OnBarter(bool reroll = false)

cs
			AddCassette(65, null, 999);
			AddCassette(109, "debt", 0);
			AddCassette(110, "curry", 999);
			if (EClass.player.stats.married > 0) 
			{ 
				AddCassette(122, null, 999); 
				AddCassette(123, null, 999); 
			} 
			break;
		}
		break;

+Zone_OldChurch

File Created
cs
public class Zone_OldChurch : Zone_Civilized
{
	public override bool IsExplorable => false;

	public override bool CanDigUnderground => false;
}