EA 23.273 Nyaightly Patch 1
February 22, 2026
6 files modified. 1 new file created.
Important Changes
None.
AI_Fuck
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; }
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)
{ break;
}
}
if (IsSacredLovemaking)
{
chara.Say("tender_hug", chara, chara2);
}
break;
}
case FuckType.tame:ActEffect
void AddCon<T>(int rate, int power) where T : Condition
{
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
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
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
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
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
}
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
}
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
}
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
});
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
{
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,
}
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,
}
if (CC.isConfused || CC.HasCondition<ConDim>())
{
toHit /= 2;
toHit /= 2L;
}
if (TC != null)
{ 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)
{
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)
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)
}
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)
}
}
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)
string name = a.Name;
renderer.Say("| " + name + " ");
}
return flag2;
return flag3;
void ForeachEnemy(Action<Chara> action)
{
if (_pts.Count == 0)DramaCustomSequence
{
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");
} 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)
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
public class Zone_OldChurch : Zone_Civilized
{
public override bool IsExplorable => false;
public override bool CanDigUnderground => false;
}