EA 23.293 Nightly Patch 1
April 9, 2026
10 files modified.
Important Changes
None.
AI_Fuck
EClass.player.forceTalk = true;
chara2.Talk("seduced");
}
else if (variation != Variation.NTR && variation != Variation.Bloodsuck && variation != Variation.Slime && chara != EClass.pc)
else if (variation != Variation.NTR && variation != Variation.Bloodsuck && variation != Variation.Slime && variation != Variation.MotherMilk && chara != EClass.pc)
{
if (IsSacredLovemaking)
{ if (variation == Variation.MotherMilk)
{
EClass.player.stats.mama++;
if (EClass.player.stats.mama >= 20 && !EClass.pc.HasElement(1291))
if (EClass.player.stats.mama >= 20 && !EClass.pc.HasElement(1291) && EClass.pc.faith != EClass.game.religions.MoonShadow)
{
EClass.pc.SetFeat(1291, 1, msg: true);
}ActEffect
void AddCon<T>(int rate, int power) where T : Condition
break;
case EffectId.StripBlessing:
{
List<Condition> list6 = new List<Condition>();
List<Condition> list5 = new List<Condition>();
foreach (Condition condition4 in TC.conditions)
{
if (GetBlessingDifficulty(condition4) > 0 && EClass.rnd(GetBlessingDifficulty(condition4)) == 0)
{
list6.Add(condition4);
list5.Add(condition4);
}
}
if (list6.Count == 0)
if (list5.Count == 0)
{
CC.SayNothingHappans();
break;void AddCon<T>(int rate, int power) where T : Condition
TC.pos.PlayEffect("holyveil");
TC.pos.PlaySound("holyveil");
TC.Say("unpolluted", TC);
list6.Shuffle();
list5.Shuffle();
{
foreach (Condition item5 in list6)
foreach (Condition item5 in list5)
{
item5.Kill();
if (CC.IsHostile(TC))void AddCon<T>(int rate, int power) where T : Condition
{
break;
}
int num11 = 0;
int num9 = 0;
foreach (Condition condition5 in TC.conditions)
{
if (condition5.Type == ConditionType.Debuff)
{
num11++;
num9++;
}
}
if (num11 == 0)
if (num9 == 0)
{
CC.SayNothingHappans();
break;void AddCon<T>(int rate, int power) where T : Condition
TC.Say("abShutterHex", TC);
Point center = CC.pos.Copy();
List<Chara> list4 = TC.pos.ListCharasInRadius(TC, 4, (Chara c) => c == TC || c.IsHostile(CC));
for (int k = 0; k < num11; k++)
for (int k = 0; k < num9; k++)
{
TweenUtil.Delay((float)k * 0.1f, delegate
{void AddCon<T>(int rate, int power) where T : Condition
{
effect.Play(center, 0f, pos);
});
int num12 = Dice.Create("SpShutterHex", power, CC, (actRef.refThing != null) ? null : actRef.act).Roll();
item6.DamageHP(num12, 919, power, AttackSource.None, CC, showEffect: false);
int num10 = Dice.Create("SpShutterHex", power, CC, (actRef.refThing != null) ? null : actRef.act).Roll();
item6.DamageHP(num10, 919, power, AttackSource.None, CC, showEffect: false);
}
}
}void AddCon<T>(int rate, int power) where T : Condition
break;
}
Thing thing7 = null;
bool flag10 = actRef.n1 == "food";
bool flag11 = actRef.n1 == "food";
if (actRef.n1 == "money")
{
int currency = TC.GetCurrency();void AddCon<T>(int rate, int power) where T : Condition
else
{
Func<Thing, bool> func = (Thing t) => true;
if (flag10)
if (flag11)
{
func = (Thing t) => t.IsFood;
}void AddCon<T>(int rate, int power) where T : Condition
{
break;
}
List<Thing> list5 = TC.things.List(delegate(Thing t)
List<Thing> list6 = TC.things.List(delegate(Thing t)
{
if (!t.isEquipped || t.blessedState == BlessedState.Doomed || t.IsToolbelt)
{void AddCon<T>(int rate, int power) where T : Condition
}
return (t.blessedState < BlessedState.Blessed || EClass.rnd(10) == 0) ? true : false;
});
if (list5.Count == 0)
if (list6.Count == 0)
{
CC.SayNothingHappans();
break;
}
Thing thing5 = list5.RandomItem();
Thing thing5 = list6.RandomItem();
TC.Say("curse_hit", TC, thing5);
thing5.SetBlessedState((thing5.blessedState == BlessedState.Cursed) ? BlessedState.Doomed : BlessedState.Cursed);
LayerInventory.SetDirty(thing5);void AddCon<T>(int rate, int power) where T : Condition
power = power * 2 / 3;
}
int a2 = power;
int num13 = TC.WIL * (isPowerful ? 20 : 5);
int num11 = TC.WIL * (isPowerful ? 20 : 5);
ConHolyVeil condition = TC.GetCondition<ConHolyVeil>();
if (condition != null)
{
num13 += condition.power * 5;
num11 += condition.power * 5;
}
if (id != EffectId.DebuffKizuami && EClass.rnd(a2) < num13 / EClass.sources.stats.alias[n].hexPower && EClass.rnd(10) != 0)
if (id != EffectId.DebuffKizuami && EClass.rnd(a2) < num11 / EClass.sources.stats.alias[n].hexPower && EClass.rnd(10) != 0)
{
TC.Say("debuff_resist", TC);
CC.DoHostileAction(TC);void AddCon<T>(int rate, int power) where T : Condition
tc.bio.SetGender(gender2);
tc.Say("transGender", tc, Gender.Name(tc.bio.gender));
tc.Talk("tail");
int age2 = tc.bio.GetAge(tc.Chara);
if (blessed && age2 > 1)
int age3 = tc.bio.GetAge(tc.Chara);
if (blessed && age3 > 1)
{
tc.Say("ageDown", tc);
tc.bio.SetAge(tc.Chara, age2 - 1);
tc.bio.SetAge(tc.Chara, age3 - 1);
}
else if (flag)
{
tc.Say("ageUp", tc);
tc.bio.SetAge(tc.Chara, age2 + 1);
tc.bio.SetAge(tc.Chara, age3 + 1);
}
break;
}void AddCon<T>(int rate, int power) where T : Condition
{
tc.PlaySound("mutation");
tc.PlayEffect("mutation");
int num10 = ((actRef.refThing != null) ? actRef.refThing.GetInt(118) : actRef.refVal);
if (num10 == 0)
int num12 = ((actRef.refThing != null) ? actRef.refThing.GetInt(118) : actRef.refVal);
if (num12 == 0)
{
num10 = tc.GetInt(118);
if (num10 == 0)
num12 = tc.GetInt(118);
if (num12 == 0)
{
num10 = EClass.game.seed + tc.uid;
num12 = EClass.game.seed + tc.uid;
}
num10++;
num12++;
}
tc.Say("transBlood", tc);
tc.Talk("tail");
tc.c_bloodData = null;
tc.SetInt(118, num10);
tc.SetInt(118, num12);
break;
}
case EffectId.Youth:void AddCon<T>(int rate, int power) where T : Condition
tc.SayNothingHappans();
break;
}
int age3 = tc.bio.GetAge(tc.Chara);
int age2 = tc.bio.GetAge(tc.Chara);
if (flag)
{
if (tc.c_lockedAge != 0)void AddCon<T>(int rate, int power) where T : Condition
tc.Say("eternalYouth2", tc);
tc.c_lockedAge = 0;
tc.elements.Remove(1243);
tc.bio.SetAge(tc.Chara, age3);
tc.bio.SetAge(tc.Chara, age2);
}
Redirect(EffectId.Youth, BlessedState.Cursed, default(ActRef));
}void AddCon<T>(int rate, int power) where T : Condition
{
tc.PlaySound("dropRewardXmas");
tc.Say("eternalYouth1", tc);
tc.c_lockedAge = age3 + 1;
tc.c_lockedAge = age2 + 1;
tc.elements.SetBase(1243, 1);
if (blessed)
{void AddCon<T>(int rate, int power) where T : Condition
{
bool flag12 = id == EffectId.DamageBody || id == EffectId.DamageBodyGreat;
bool mind2 = id == EffectId.DamageMind || id == EffectId.DamageMindGreat;
int num15 = ((id == EffectId.DamageBody || id == EffectId.DamageMind) ? 1 : (4 + EClass.rnd(4)));
int num14 = ((id == EffectId.DamageBody || id == EffectId.DamageMind) ? 1 : (4 + EClass.rnd(4)));
if (id == EffectId.Weaken)
{
flag12 = EClass.rnd(2) == 0;
mind2 = !flag12;
num15 = 1;
num14 = 1;
}
else
{void AddCon<T>(int rate, int power) where T : Condition
TC.PlaySound("debuff");
}
TC.Say(flag12 ? "damageBody" : "damageMind", TC);
for (int m = 0; m < num15; m++)
for (int m = 0; m < num14; m++)
{
TC.DamageTempElements(power, flag12, mind2, id != EffectId.Weaken);
}void AddCon<T>(int rate, int power) where T : Condition
case EffectId.RestoreBody:
case EffectId.RestoreMind:
{
bool flag11 = id == EffectId.RestoreBody;
bool flag10 = id == EffectId.RestoreBody;
if (flag)
{
Redirect(flag11 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef));
Redirect(flag10 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef));
break;
}
TC.Say(flag11 ? "restoreBody" : "restoreMind", TC);
TC.Say(flag10 ? "restoreBody" : "restoreMind", TC);
TC.PlaySound("heal");
TC.PlayEffect("heal");
TC.CureHost(flag11 ? CureType.CureBody : CureType.CureMind, power, state);
TC.CureHost(flag10 ? CureType.CureBody : CureType.CureMind, power, state);
if (blessed)
{
Redirect(flag11 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef));
Redirect(flag10 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef));
}
break;
}void AddCon<T>(int rate, int power) where T : Condition
{
EClass.game.religions.Healing.Talk("ability");
}
int num9 = Dice.Create((actRef.act != null && EClass.sources.calc.map.ContainsKey(actRef.act.ID)) ? actRef.act.ID : "SpHealLight", power, CC, (actRef.refThing != null) ? null : actRef.act).Roll();
int num15 = Dice.Create((actRef.act != null && EClass.sources.calc.map.ContainsKey(actRef.act.ID)) ? actRef.act.ID : "SpHealLight", power, CC, (actRef.refThing != null) ? null : actRef.act).Roll();
if (actRef.refThing != null)
{
num9 = num9 * (100 + actRef.refThing.Evalue(750) * 10) / 100;
num15 = num15 * (100 + actRef.refThing.Evalue(750) * 10) / 100;
}
if (flag)
{
TC.DamageHP(num9 / 2, 919, power);
TC.DamageHP(num15 / 2, 919, power);
break;
}
TC.HealHPHost(num9, (actRef.refThing == null && id != EffectId.JureHeal) ? HealSource.Magic : HealSource.Item);
TC.HealHPHost(num15, (actRef.refThing == null && id != EffectId.JureHeal) ? HealSource.Magic : HealSource.Item);
TC.CureHost(CureType.Heal, power, state);
TC.Say((power >= 300) ? "heal_heavy" : "heal_light", TC);
break;void AddCon<T>(int rate, int power) where T : Condition
break;
}
Chara chara = CharaGen.Create("baby");
if (!TC.Aka.IsEmpty())
{
chara.c_altName = TC.c_altName ?? TC.source.GetName(TC);
}
chara.c_altName = TC.c_altName ?? TC.source.GetName(TC);
TC.AddCondition(Condition.Create(power, delegate(ConTransmuteHuman con)
{
con.chara = chara;void AddCon<T>(int rate, int power) where T : Condition
if (TC.HasElement(1211))
{
TC.Say("drinkSaltWater_snail", TC);
int num14 = ((TC.hp > 10) ? (TC.hp - EClass.rnd(10)) : 10000);
TC.DamageHP(num14, AttackSource.None, CC);
int num13 = ((TC.hp > 10) ? (TC.hp - EClass.rnd(10)) : 10000);
TC.DamageHP(num13, AttackSource.None, CC);
}
else if (TC.IsPC)
{CINT
public const int isPartyFood = 128;
public const int isAmbushWarned = 129;
public const int dateDeathLock = 130;
public const int fixedValue = 131;CardActor
public virtual void OnRender(RenderParam p)
num2 = 2;
}
num2 = ((floatV == 1) ? ((!(floatY < 0f)) ? ((floatY < 3f) ? 1 : 2) : 0) : ((!(floatY < 2f)) ? ((!(floatY < 5f)) ? 2 : 3) : 0));
srAnime.sr.sprite = srAnime.data.GetSprites().TryGet(num2);
srAnime.sr.sprite = srAnime.data.GetSprites().TryGet(num2, returnNull: true);
}
base.transform.position = tempV;
base.transform.localScale = tempV2;public virtual void OnRender(RenderParam p)
{
spriteIndex = 0;
}
sr.sprite = spriteData.GetSprites()[spriteIndex];
sr.sprite = spriteData.GetSprites().TryGet(spriteIndex, returnNull: true);
if ((bool)sr.sprite)
{
mpb.SetTexture("_MainTex", sr.sprite.texture);
}
}
}Chara
public override Sprite GetSprite(int dir = 0)
pCC.Build();
return pCC.variation.idle[0, 0];
}
bool snow = EClass.core.IsGameStarted && EClass._zone.IsSnowCovered;
int skin = 0;
if (spriteReplacer?.data != null)
{
return spriteReplacer.data.GetSprite();
Sprite sprite = spriteReplacer.GetSprite(dir, skin, snow);
if ((bool)sprite)
{
return sprite;
}
}
int skin = 0;
if (sourceCard.tiles.Length > 1)
{
skin = ((base.idSkin == 0 && !source.staticSkin) ? (base.uid % sourceCard.tiles.Length / 2 * 2 + ((!base.IsMale) ? 1 : 0)) : base.idSkin);
}
return sourceCard.GetSprite(0, skin, EClass.core.IsGameStarted && EClass._zone.IsSnowCovered);
return sourceCard.GetSprite(dir, skin, snow);
}
public void SetTempHand(int right = 0, int left = 0)DramaCustomSequence
bool num2;
if (condition == null)
{
if (EClass.pc.HasElement(1232))
if (EClass.pc.HasElement(1232) || EClass.pc.faith == EClass.game.religions.MoonShadow)
{
goto IL_093e;
goto IL_0959;
}
num2 = EClass.pc.HasElement(1291);
} }
if (num2)
{
goto IL_093e;
goto IL_0959;
}
goto IL_094f;
goto IL_096a;
}
if (c.isDrunk || c.HasElement(1275) || EClass.debug.enable)
{
Choice2(flag2 ? "daBird" : "daTail", "_tail");
}
}
goto IL_0d68;
IL_0d68:
goto IL_0d83;
IL_09a9:
Choice2("daBaby", "_baby");
goto IL_09ba;
IL_0959:
Choice2("daMama", "_mama");
goto IL_096a;
IL_09ba:
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)
{
Choice2("daInvest", "_investShop");
}
}
if (c.trait.CanIdentify)
{
Choice2("daIdentify", "_identify").DisableSound();
Choice2("daIdentifyAll", "_identifyAll");
Choice2("daIdentifySP", "_identifySP").DisableSound();
}
if (c.trait.CanPicklock)
{
if (c.Evalue(280) < 20)
{
c.elements.SetBase(280, 20);
}
foreach (Thing item4 in EClass.pc.things.List((Thing a) => a.c_lockLv > 0, onlyAccessible: true))
{
Thing _t4 = item4;
Choice2("daPicklock".lang(_t4.Name), "_picklock").SetOnClick(delegate
{
destThing = _t4;
});
}
}
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");
}
goto IL_0d83;
IL_0d83:
if (c.IsHomeMember())
{
if (c.IsMaid) Talk("what", StepDefault);
if (!c.IsMarried || EClass.debug.enable)
{
foreach (Thing item4 in EClass.pc.things.List((Thing a) => !a.c_isImportant && !a.isEquipped && a.c_uidAttune == 0 && (a.id == "amulet_engagement" || a.id == "ring_engagement")))
foreach (Thing item5 in EClass.pc.things.List((Thing a) => !a.c_isImportant && !a.isEquipped && a.c_uidAttune == 0 && (a.id == "amulet_engagement" || a.id == "ring_engagement")))
{
Thing _t4 = item4;
Choice("daMarry".lang(item4.Name), "_marry").SetOnClick(delegate
Thing _t3 = item5;
Choice("daMarry".lang(item5.Name), "_marry").SetOnClick(delegate
{
destThing = _t4;
destThing = _t3;
});
}
} QuestSupply supply = c.quest as QuestSupply;
if (supply != null)
{
foreach (Thing item5 in supply.ListDestThing())
foreach (Thing item6 in supply.ListDestThing())
{
Thing _t3 = item5;
Choice("daDeliver".lang(supply.GetTitle() ?? "", _t3.GetName(NameStyle.Full, supply.num)), "_deliver").SetOnClick(delegate
Thing _t2 = item6;
Choice("daDeliver".lang(supply.GetTitle() ?? "", _t2.GetName(NameStyle.Full, supply.num)), "_deliver").SetOnClick(delegate
{
EClass.game.quests.Start(c.quest);
destThing = _t3;
destThing = _t2;
destQuest = supply;
}).SetOnTooltip(delegate(UITooltip a)
{
_t3.WriteNote(a.note);
_t2.WriteNote(a.note);
});
}
} {
EClass.pc.party.AddMemeber(c);
}
foreach (Chara item6 in EClass.pc.party.members.ToList())
foreach (Chara item7 in EClass.pc.party.members.ToList())
{
if (item6 != EClass.pc && item6 != c)
if (item7 != EClass.pc && item7 != c)
{
EClass.pc.party.RemoveMember(item6);
EClass.pc.party.RemoveMember(item7);
}
}
if (c.host != null) Step("_mama");
Method(delegate
{
if (c.affinity.CanBecomeMama() || EClass.debug.enable)
if (c.affinity.CanBecomeMama() || EClass.pc.faith == EClass.game.religions.MoonShadow || EClass.debug.enable)
{
TempTalkTopic("mama_yes", StepEnd);
EClass.pc.SetAI(new AI_Fuck Step("_baby");
Method(delegate
{
if (c.affinity.CanBecomeMama() || EClass.debug.enable)
if (c.affinity.CanBecomeMama() || EClass.pc.faith == EClass.game.religions.MoonShadow || EClass.debug.enable)
{
TempTalkTopic("baby_yes", StepEnd);
EClass.pc.SetAI(new AI_Fuck Method(delegate
{
TempTalkTopic("blooming1", null);
foreach (Chara item7 in EClass.pc.party.members.Where((Chara c2) => c2.CanBloom()))
foreach (Chara item8 in EClass.pc.party.members.Where((Chara c2) => c2.CanBloom()))
{
Chara c4 = item7;
Chara c4 = item8;
Choice("daBloom".lang(c4.Name), delegate
{
if (EClass._zone.influence < 10) },
onList = delegate
{
foreach (ResearchPlan item8 in plans)
foreach (ResearchPlan item9 in plans)
{
list.Add(item8);
list.Add(item9);
}
}
}; },
onList = delegate
{
foreach (SourceElement.Row item9 in EClass.sources.elements.rows.Where(delegate(SourceElement.Row a)
foreach (SourceElement.Row item10 in EClass.sources.elements.rows.Where(delegate(SourceElement.Row a)
{
if (a.tag.Contains("unused"))
{ return a.category == "skill" && a.categorySub == c.trait.IDTrainer;
}).ToList())
{
list.Add(Element.Create(item9.id));
list.Add(Element.Create(item10.id));
}
}
}; {
SE.Pay();
EClass.pc.ModCurrency(-costIdentify);
foreach (Thing item10 in EClass.pc.things.List((Thing t) => !t.IsIdentified, onlyAccessible: true))
foreach (Thing item11 in EClass.pc.things.List((Thing t) => !t.IsIdentified, onlyAccessible: true))
{
item10.Thing.Identify(show: false);
if (!item10.IsInstalled)
item11.Thing.Identify(show: false);
if (!item11.IsInstalled)
{
numSuperior++;
} {
EClass._zone.SetBGM(102);
}
EClass.player.ModKarma(1);
EClass.player.ModKarma((!c.GetBool(129)) ? 1 : (-1));
c.SetBool(129, enable: true);
});
Choice("no_rob", StepDefault, cancel: true).SetOnClick(RumorChill);
}, null, StepDefault); Step("_end");
End();
return;
IL_093e:
Choice2("daMama", "_mama");
goto IL_094f;
IL_098e:
Choice2("daBaby", "_baby");
goto IL_099f;
IL_094f:
IL_096a:
ConTransmuteHuman condition2 = c.GetCondition<ConTransmuteHuman>();
bool num3;
if (condition2 == null)
{
if (c.HasElement(1232))
{
goto IL_098e;
goto IL_09a9;
}
num3 = c.HasElement(1291);
} }
if (num3)
{
goto IL_098e;
}
goto IL_099f;
IL_099f:
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)
{
Choice2("daInvest", "_investShop");
}
}
if (c.trait.CanIdentify)
{
Choice2("daIdentify", "_identify").DisableSound();
Choice2("daIdentifyAll", "_identifyAll");
Choice2("daIdentifySP", "_identifySP").DisableSound();
}
if (c.trait.CanPicklock)
{
if (c.Evalue(280) < 20)
{
c.elements.SetBase(280, 20);
}
foreach (Thing item11 in EClass.pc.things.List((Thing a) => a.c_lockLv > 0, onlyAccessible: true))
{
Thing _t2 = item11;
Choice2("daPicklock".lang(_t2.Name), "_picklock").SetOnClick(delegate
{
destThing = _t2;
});
}
}
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");
goto IL_09a9;
}
goto IL_0d68;
goto IL_09ba;
void BackChill()
{
Method(RumorChill, null, StepDefault);RenderRow
public Sprite GetSprite(int dir = 0, int skin = 0, bool snow = false)
bool flag = this is SourceChara.Row;
if (replacer.HasSprite(idSprite, renderData))
{
foreach (string item in new List<string>
Sprite sprite = replacer.GetSprite(dir, skin, snow);
if ((bool)sprite)
{
$"_skin{skin}_dir{dir}",
$"_skin{skin}",
$"_dir{dir}",
""
})
{
Sprite sprite = null;
if (snow)
{
sprite = replacer.GetSprite(item + "_snow");
}
if ((object)sprite == null)
{
sprite = replacer.GetSprite(item);
}
if ((bool)sprite)
{
return sprite;
}
return sprite;
}
}
int[] array = null ?? _tiles;SpriteData
public void Load()
{
LoadPref();
LoadAnimationIni();
Texture2D texture2D = IO.LoadPNG(path + ".png");
Debug.Log(texture2D.width + "/" + texture2D.height + "/" + path);
if ((bool)tex) else
{
tex = texture2D;
int num = tex.width / frame;
int height = tex.height;
sprites = new Sprite[frame];
Vector2 pivot = new Vector2(0.5f, 0.5f);
for (int i = 0; i < frame; i++)
{
sprites[i] = Sprite.Create(tex, new Rect(i * num, 0f, num, height), pivot, 100f, 0u, SpriteMeshType.FullRect);
}
}
LoadPref();
int num = tex.width / frame;
int height = tex.height;
sprites = new Sprite[frame];
Vector2 pivot = new Vector2(0.5f, 0.5f);
for (int i = 0; i < frame; i++)
{
sprites[i] = Sprite.Create(tex, new Rect(i * num, 0f, num, height), pivot, 100f, 0u, SpriteMeshType.FullRect);
}
}
}SpriteReplacer
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEngine;
public class SpriteReplacer
public static Dictionary<string, string> dictModItems = new Dictionary<string, string>();
public static Dictionary<string, string> dictTextureItems = new Dictionary<string, string>();
public SpriteData data;
public Dictionary<string, SpriteData> suffixes = new Dictionary<string, SpriteData>();public static Dictionary<string, SpriteReplacer> ListSkins()
{
dictSkins.Remove(item);
}
FileInfo[] files = new DirectoryInfo(CorePath.custom + "Skin").GetFiles("*.png");
foreach (FileInfo fileInfo in files)
Dictionary<string, string> dictionary = new DirectoryInfo(CorePath.custom + "Skin").GetFiles("*.png").ToDictionary((FileInfo f) => Path.GetFileNameWithoutExtension(f.Name), (FileInfo f) => Path.ChangeExtension(f.FullName, null));
string key2;
foreach (KeyValuePair<string, string> item2 in dictionary)
{
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileInfo.FullName);
if (!dictSkins.ContainsKey(fileNameWithoutExtension))
item2.Deconstruct(out var key, out key2);
string key3 = key;
string path = key2;
if (!dictSkins.ContainsKey(key3))
{
SpriteReplacer spriteReplacer = new SpriteReplacer();
spriteReplacer.data = new SpriteData
dictSkins[key3] = new SpriteReplacer
{
path = fileInfo.GetFullFileNameWithoutExtension()
data = new SpriteData
{
path = path
}
};
spriteReplacer.data.Init();
dictSkins.Add(fileNameWithoutExtension, spriteReplacer);
}
}
foreach (KeyValuePair<string, SpriteReplacer> dictSkin2 in dictSkins)
{
dictSkin2.Deconstruct(out key2, out var value);
string id = key2;
value.BuildSuffixData(id, dictionary);
}
return dictSkins;
}public Sprite GetSprite(string suffix = "")
return value.GetSprite();
}
public Sprite GetSprite(int dir, int skin, bool snow)
{
foreach (string item in new List<string>
{
$"_skin{skin}_dir{dir}",
$"_skin{skin}",
$"_dir{dir}",
""
})
{
Sprite sprite = null;
if (snow)
{
sprite = GetSprite(item + "_snow");
}
if ((object)sprite == null)
{
sprite = GetSprite(item);
}
if ((bool)sprite)
{
return sprite;
}
}
return data?.GetSprite();
}
public void Validate()
{
data?.Validate(); }
}
public void ReloadBuiltInTextures()
{
dictTextureItems = new DirectoryInfo(CorePath.packageCore + "Texture/Item").GetFiles("*.png").ToDictionary((FileInfo f) => Path.GetFileNameWithoutExtension(f.Name), (FileInfo f) => Path.ChangeExtension(f.FullName, null));
}
public void BuildSuffixData(string id, Dictionary<string, string> dictTexItems)
{
foreach (var (text3, path) in dictTexItems)
{
if (text3.StartsWith(id))
{
string text4 = text3[id.Length..];
SpriteData spriteData = new SpriteData
{
path = path
};
spriteData.Init();
suffixes[text4] = spriteData;
Debug.Log("#sprite replacer init '" + text4 + "' at " + path.ShortPath());
}
}
}
public void Reload(string id, RenderData renderData = null)
{
data = null;public void Reload(string id, RenderData renderData = null)
{
if (dictModItems.ContainsKey(id))
{
foreach (var (text3, path) in dictModItems)
{
if (text3.StartsWith(id))
{
string text4 = text3[id.Length..];
SpriteData spriteData = new SpriteData
{
path = path
};
spriteData.Init();
suffixes[text4] = spriteData;
Debug.Log("#sprite replacer init '" + text4 + "' at " + path.ShortPath());
}
}
data = suffixes.TryGetValue("");
BuildSuffixData(id, dictModItems);
}
else
{
string text5 = CorePath.packageCore + "Texture/Item/" + id;
if (!File.Exists(text5 + ".png") && renderData != null)
if (dictTextureItems.Count == 0)
{
text5 = CorePath.packageCore + "Texture/Item/" + renderData.name;
ReloadBuiltInTextures();
}
if (File.Exists(text5 + ".png"))
string text = dictTextureItems.TryGetValue(id);
if (text == null && renderData != null)
{
data = new SpriteData
{
path = text5
};
data.Init();
suffixes[""] = data;
text = dictTextureItems.TryGetValue(renderData.name);
}
if (text != null)
{
BuildSuffixData(id, dictTextureItems);
}
}
data = suffixes.TryGetValue("");
if (data != null)
{
Debug.Log(id + ":" + data.path);ZonePreEnterEncounter
public override void Execute()
Point randomPointInRadius3 = EClass.pc.pos.GetRandomPointInRadius(2, 5, requireLos: false, allowChara: false);
if (randomPointInRadius3 != null)
{
Chara chara3 = EClass._zone.SpawnMob(randomPointInRadius3, SpawnSetting.Mob(mob.id, (mob.MainElement == Element.Void) ? null : mob.MainElement.source.alias.Substring(3), -1, EClass.player.HasKeyItem("license_adv") ? EClass.rndHalf(EClass.pc.FameLv) : 0));
bool flag2 = EClass.rnd(5) == 0;
Chara chara3 = EClass._zone.SpawnMob(randomPointInRadius3, SpawnSetting.Mob(mob.id, (mob.MainElement == Element.Void) ? null : mob.MainElement.source.alias.Substring(3), -1, (!flag2 && EClass.player.HasKeyItem("license_adv")) ? EClass.rndHalf(EClass.pc.FameLv) : 0));
Hostility hostility2 = (chara3.c_originalHostility = Hostility.Enemy);
chara3.hostility = hostility2;
chara3.enemy = EClass.pc.party.members.RandomItem();
leader = chara3;
if (EClass.rnd(5) == 0)
if (flag2)
{
TraitFoodEggFertilized.MakeBaby(chara3, 1);
}