EA 23.118 Nightly (Bring back NYAIGHTLIES NOA!)
April 1, 2025
5 files modified.
Important Changes
None.
DramaCustomSequence
@@ -110,166 +110,166 @@ public void Build(Chara c)
cs
});
}
}
if (c.IsPCParty)
if (c.IsPCParty && !c.isSummon)
{
if (!c.isSummon)
if (EClass._zone.IsPCFaction && c.homeBranch != EClass._zone.branch)
{
if (EClass._zone.IsPCFaction && c.homeBranch != EClass._zone.branch)
{
Choice2("daMakeHome", "_makeHome");
}
if (c.host == null && c.homeZone != null)
{
Choice2("daLeaveParty".lang(c.homeZone.Name), "_leaveParty");
}
Choice2("daMakeHome", "_makeHome");
}
if (c.host == null && c.homeZone != null)
{
Choice2("daLeaveParty".lang(c.homeZone.Name), "_leaveParty");
}
}
else if (c.memberType != FactionMemberType.Livestock && !c.IsGuest())
if (c.memberType != FactionMemberType.Livestock && !c.IsGuest())
{
if (c.trait.CanGuide)
Choice2("daQuest".lang(c.quest?.GetTitle() ?? ""), "_quest").SetCondition(() => c.quest != null);
if (c.trait is TraitGuard)
{
foreach (Quest item3 in EClass.game.quests.list)
EClass.pc.things.Foreach(delegate(Thing _t)
{
if (!item3.IsRandomQuest)
if (_t.isLostProperty)
{
continue;
Choice2("daLostProperty".lang(_t.Name), "_lostProperty").SetOnClick(delegate
{
destThing = _t;
});
}
Chara dest = ((item3.chara != null && item3.chara.IsAliveInCurrentZone) ? item3.chara : null);
if (dest != null)
});
}
if (!c.IsPCParty || EClass._zone.IsPCFaction)
{
if (c.trait.CanGuide)
{
foreach (Quest item3 in EClass.game.quests.list)
{
Choice2("daGoto".lang(dest.Name, item3.GetTitle() ?? ""), "_goto").SetOnClick(delegate
if (!item3.IsRandomQuest)
{
destCard = dest;
});
continue;
}
Chara dest = ((item3.chara != null && item3.chara.IsAliveInCurrentZone) ? item3.chara : null);
if (dest != null)
{
Choice2("daGoto".lang(dest.Name, item3.GetTitle() ?? ""), "_goto").SetOnClick(delegate
{
destCard = dest;
});
}
if (!(item3 is QuestDeliver { IsDeliver: not false } questDeliver2) || questDeliver2.DestZone != EClass._zone || !EClass._zone.dictCitizen.ContainsKey(questDeliver2.uidTarget))
{
continue;
}
Chara dest2 = EClass._zone.FindChara(questDeliver2.uidTarget);
if (dest2 != null)
{
Choice2("daGoto".lang(dest2.Name, item3.GetTitle() ?? ""), "_goto").SetOnClick(delegate
{
destCard = dest2;
});
}
}
if (!(item3 is QuestDeliver { IsDeliver: not false } questDeliver2) || questDeliver2.DestZone != EClass._zone || !EClass._zone.dictCitizen.ContainsKey(questDeliver2.uidTarget))
if (GetListGuide().Count > 0)
{
continue;
Choice2("daGuide", "_Guide");
}
Chara dest2 = EClass._zone.FindChara(questDeliver2.uidTarget);
if (dest2 != null)
}
if (c.trait is TraitGM_Mage && Guild.Mage.relation.rank >= 4)
{
Choice2("daChangeDomain", "_changeDomain").DisableSound();
}
if (c.trait.ShopType != 0)
{
Choice2(c.trait.TextNextRestock, "_buy").DisableSound();
}
if (c.trait.SlaverType != 0)
{
Choice2(c.trait.TextNextRestockPet, "_buySlave").DisableSound();
}
if (c.trait.CopyShop != 0)
{
Choice2(("daCopy" + c.trait.CopyShop).lang(c.trait.NumCopyItem.ToString() ?? ""), "_copyItem").DisableSound();
}
if (c.trait.HaveNews && c.GetInt(33) + 10080 < EClass.world.date.GetRaw())
{
Choice2("daNews", "_news");
}
if (!flag4 && !EClass._zone.IsInstance && !c.IsPCFaction && c.trait.CanBout && c.IsGlobal && c.GetInt(59) + 10080 < EClass.world.date.GetRaw())
{
Choice2("daBout", "_bout");
}
if (c.isDrunk || EClass.debug.enable)
{
Choice2(flag2 ? "daBird" : "daTail", "_tail");
}
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("daGoto".lang(dest2.Name, item3.GetTitle() ?? ""), "_goto").SetOnClick(delegate
{
destCard = dest2;
});
Choice2("daInvest", "_investZone");
}
if (c.trait.CanInvest)
{
Choice2("daInvest", "_investShop");
}
}
if (GetListGuide().Count > 0)
if (c.trait.CanIdentify)
{
Choice2("daGuide", "_Guide");
Choice2("daIdentify", "_identify").DisableSound();
Choice2("daIdentifyAll", "_identifyAll");
Choice2("daIdentifySP", "_identifySP").DisableSound();
}
}
Choice2("daQuest".lang(c.quest?.GetTitle() ?? ""), "_quest").SetCondition(() => c.quest != null);
if (c.trait is TraitGuard)
{
EClass.pc.things.Foreach(delegate(Thing _t)
if (c.trait.CanPicklock)
{
if (_t.isLostProperty)
if (c.Evalue(280) < 20)
{
Choice2("daLostProperty".lang(_t.Name), "_lostProperty").SetOnClick(delegate
c.elements.SetBase(280, 20);
}
foreach (Thing item4 in EClass.pc.things.List((Thing a) => a.c_lockLv > 0, onlyAccessible: true))
{
Thing _t3 = item4;
Choice2("daPicklock".lang(_t3.Name), "_picklock").SetOnClick(delegate
{
destThing = _t;
destThing = _t3;
});
}
});
}
if (c.trait is TraitGM_Mage && Guild.Mage.relation.rank >= 4)
{
Choice2("daChangeDomain", "_changeDomain").DisableSound();
}
if (c.trait.ShopType != 0)
{
Choice2(c.trait.TextNextRestock, "_buy").DisableSound();
}
if (c.trait.SlaverType != 0)
{
Choice2(c.trait.TextNextRestockPet, "_buySlave").DisableSound();
}
if (c.trait.CopyShop != 0)
{
Choice2(("daCopy" + c.trait.CopyShop).lang(c.trait.NumCopyItem.ToString() ?? ""), "_copyItem").DisableSound();
}
if (c.trait.HaveNews && c.GetInt(33) + 10080 < EClass.world.date.GetRaw())
{
Choice2("daNews", "_news");
}
if (!flag4 && !EClass._zone.IsInstance && !c.IsPCFaction && c.trait.CanBout && c.IsGlobal && c.GetInt(59) + 10080 < EClass.world.date.GetRaw())
{
Choice2("daBout", "_bout");
}
if (c.isDrunk || EClass.debug.enable)
{
Choice2(flag2 ? "daBird" : "daTail", "_tail");
}
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)
if (c.trait is TraitBanker)
{
Choice2("daInvest", "_investShop");
Choice2("daDeposit", "_deposit");
}
}
if (c.trait.CanIdentify)
{
Choice2("daIdentify", "_identify").DisableSound();
Choice2("daIdentifyAll", "_identifyAll");
Choice2("daIdentifySP", "_identifySP").DisableSound();
}
if (c.trait.CanPicklock)
{
if (c.Evalue(280) < 20)
if (c.IsMaid || (c.trait.CanInvestTown && (EClass._zone.source.faction == "mysilia" || EClass._zone.IsPCFaction)))
{
c.elements.SetBase(280, 20);
Choice2("daExtraTax", "_extraTax");
}
foreach (Thing item4 in EClass.pc.things.List((Thing a) => a.c_lockLv > 0, onlyAccessible: true))
if ((c.trait is TraitMiko_Mifu || c.trait is TraitMiko_Nefu || c.trait is TraitEureka) && EClass.world.date.IsExpired(c.c_dateStockExpire))
{
Thing _t3 = item4;
Choice2("daPicklock".lang(_t3.Name), "_picklock").SetOnClick(delegate
{
destThing = _t3;
});
Choice2("daBlessing", "_blessing");
}
}
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");
}
}
if (c.IsHomeMember())
{
ELEMENT
@@ -1035,9 +1035,24 @@ public virtual Act.Cost GetCost(Chara c)
cs
{
result2.type = Act.CostType.SP;
result2.cost = source.cost[0];
if (source.id == 6020)
switch (source.id)
{
case 6020:
result2.cost = c.stamina.max / 3 + 10;
break;
case 6664:
{
int num2 = -2;
foreach (BodySlot slot in c.body.slots)
{
if (slot.thing != null && slot.thing.IsMeleeWeapon)
{
num2++;
}
}
result2.cost += num2 * 2;
break;
}
}
}
if (!c.IsPC && result2.cost > 2)
Trait
@@ -1784,7 +1784,7 @@ public void OnBarter()
cs
for (int i = 0; (float)i < num; i++)
{
Thing thing = CreateStock();
if ((!thing.trait.IsNoShop || (ShopType == ShopType.LoytelMart && EClass.player.flags.loytelMartLv >= 2)) && (!(thing.trait is TraitRod) || thing.c_charges != 0) && thing.GetPrice() > 0)
if ((!thing.trait.IsNoShop || (ShopType == ShopType.LoytelMart && (EClass.debug.enable || EClass.player.flags.loytelMartLv >= 2))) && (!(thing.trait is TraitRod) || thing.c_charges != 0) && thing.GetPrice() > 0)
{
t.AddThing(thing);
}
@@ -1869,7 +1869,7 @@ public void OnBarter()
cs
Add("ticket_armpillow", 1, 0);
Add("ticket_champagne", 1, 0);
}
for (int num6 = 0; num6 < (EClass.debug.enable ? 30 : 3); num6++)
for (int num6 = 0; num6 < 3; num6++)
{
if (EClass.rnd(5) == 0)
{
@@ -2029,9 +2029,9 @@ public Thing CreateStock()
cs
{
case ShopType.Dye:
{
Thing thing4 = ThingGen.Create("dye").SetNum(15 + EClass.rnd(30));
thing4.ChangeMaterial(EClass.sources.materials.rows.RandomItem().alias);
return thing4;
Thing thing = ThingGen.Create("dye").SetNum(15 + EClass.rnd(30));
thing.ChangeMaterial(EClass.sources.materials.rows.RandomItem().alias);
return thing;
}
case ShopType.GeneralExotic:
return FromFilter("shop_generalExotic");
@@ -2053,12 +2053,12 @@ public Thing CreateStock()
cs
return FromFilter("shop_magic");
case ShopType.Ecopo:
{
Thing thing = TraitSeed.MakeRandomSeed(enc: true);
Thing thing3 = TraitSeed.MakeRandomSeed(enc: true);
if (EClass.rnd(2) == 0)
{
TraitSeed.LevelSeed(thing, (thing.trait as TraitSeed).row, 1);
TraitSeed.LevelSeed(thing3, (thing3.trait as TraitSeed).row, 1);
}
return thing;
return thing3;
}
case ShopType.Healer:
{
@@ -2091,10 +2091,10 @@ public Thing CreateStock()
cs
case ShopType.Milk:
if (EClass._zone is Zone_Nefu && EClass.rnd(2) == 0)
{
Thing thing3 = ThingGen.Create("milk");
thing3.MakeRefFrom(EClass.sources.charas.rows.Where((SourceChara.Row r) => r.race == "mifu" || r.race == "nefu").RandomItem().model);
Debug.Log(thing3);
return thing3;
Thing thing4 = ThingGen.Create("milk");
thing4.MakeRefFrom(EClass.sources.charas.rows.Where((SourceChara.Row r) => r.race == "mifu" || r.race == "nefu").RandomItem().model);
Debug.Log(thing4);
return thing4;
}
return Create("milk");
case ShopType.Map:
@@ -2191,12 +2191,28 @@ public Thing CreateStock()
cs
{
return Create("water").SetPriceFix(1000);
}
if (EClass.rnd(EClass.debug.enable ? 20 : 1000) == 0)
if (EClass.rnd(1000) == 0)
{
return Create("1165");
}
}
_ = 2;
if ((loytelMartLv >= 2 || EClass.debug.enable) && EClass.rnd(10) == 0)
{
SourceElement.Row row = EClass.sources.elements.rows.Where((SourceElement.Row r) => r.tag.Contains("loytelMart") && ShopLv + 10 >= r.LV).ToList().RandomItemWeighted((SourceElement.Row r) => r.chance);
switch ((from _s in row.thing.ToCharArray()
where _s != ' '
select _s).RandomItem())
{
case 'B':
return ThingGen.CreateSpellbook(row.id);
case 'P':
return ThingGen.CreatePotion(row.id);
case 'R':
return ThingGen.CreateRod(row.id);
case 'S':
return ThingGen.CreateScroll(row.id);
}
}
return FromFilter("shop_junk");
}
case ShopType.Junk:
TraitLoytelMart
@@ -2,7 +2,7 @@ public class TraitLoytelMart : TraitVendingMachine
cs
{
public int LV => EClass.player.flags.loytelMartLv;
public override int ShopLv => LV * 10 + ((LV <= 0) ? 1 : 10);
public override int ShopLv => LV * 10 + ((LV <= 0) ? 1 : 10) + (EClass.debug.enable ? 50 : 0);
public override bool IsHomeItem => true;
ZoneEventSubdue
cs
using Newtonsoft.Json;
using UnityEngine;
public class ZoneEventSubdue : ZoneEventQuest
{
@@ -13,7 +14,7 @@ public override void OnVisit()
cs
{
if (!EClass.game.isLoading)
{
EClass._zone._dangerLv = base.quest.DangerLv;
EClass._zone._dangerLv = Mathf.Max(base.quest.DangerLv - 5, 1);
Spawn(4 + base.quest.difficulty * 2 + EClass.rnd(5));
AggroEnemy(15);
EClass._zone.SetBGM(102);