EA 23.292 Nightly
April 7, 2026
17 files modified.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
ConStrife (1)
private ElementContainer ec = new ElementContainer();
private ElementContainer ec = new ElementContainerCondition(); SpriteData (3)
public Sprite[] GetSprites() public Sprite GetSprite(bool snow = false)
public void LoadAnimationIni() public void Load(bool dateMatched, ref Texture2D tex, ref Sprite[] sprites, string suffix)
public void Load() SpriteReplacer (1)
public bool HasSprite(string id, RenderData renderData = null)
public Sprite GetSprite(string suffix = "") AI_Fuck
NTR,
Bloodsuck,
Slime,
Tentacle
Tentacle,
MotherMilk
}
public Variation variation;public override IEnumerable<Status> Run()
switch (Type)
{
case FuckType.fuck:
{
if (this.variation == Variation.NTR)
{
cc.Say("ntr", cc, tc);public override IEnumerable<Status> Run()
cc.renderer.PlayAnime(AnimeID.Attack, tc);
if (EClass.rnd(3) == 0 || sell)
{
cc.Talk("tail");
if (cc.IsPC && this.variation == Variation.MotherMilk)
{
EClass.player.forceTalk = true;
}
cc.Talk((this.variation == Variation.MotherMilk) ? "play_baby" : "tail");
}
break;
case 2:
tc.renderer.PlayAnime(AnimeID.Shiver);
if (EClass.rnd(3) == 0)
{
tc.Talk("tailed");
if (tc.IsPC && this.variation == Variation.MotherMilk)
{
EClass.player.forceTalk = true;
}
tc.Talk((this.variation == Variation.MotherMilk) ? "play_mama" : "tailed");
}
break;
}
if (((cc.HasElement(1216) || tc.HasElement(1216)) ? 100 : 20) > EClass.rnd(100))
int num5 = ((cc.HasElement(1216) || tc.HasElement(1216)) ? 100 : 20);
if (this.variation == Variation.MotherMilk)
{
num5 *= 5;
}
if (num5 > EClass.rnd(100))
{
((EClass.rnd(2) == 0) ? cc : tc).PlayEffect("love2");
}public override IEnumerable<Status> Run()
owner.pos.TryWitnessCrime(cc, tc, 4, (Chara c) => EClass.rnd(cc.HasCondition<ConTransmuteBat>() ? 50 : 20) == 0);
}
break;
}
case FuckType.tame:
{
int num = 100;ActEffect
void AddCon<T>(int rate, int power) where T : Condition
}
List<Chara> list2 = new List<Chara>();
bool flag4 = false;
foreach (Chara chara2 in EClass._map.charas)
foreach (Chara chara3 in EClass._map.charas)
{
if (!chara2.IsPCFactionOrMinion && chara2.id == (flag3 ? "cat_silver" : "littleOne"))
if (!chara3.IsPCFactionOrMinion && chara3.id == (flag3 ? "cat_silver" : "littleOne"))
{
if (flag4)
{
flag4 = false;
continue;
}
list2.Add(chara2);
list2.Add(chara3);
flag4 = true;
}
}void AddCon<T>(int rate, int power) where T : Condition
}
if (id == EffectId.Gate && CC.IsPC)
{
foreach (Chara chara3 in EClass._map.charas)
foreach (Chara chara4 in EClass._map.charas)
{
if (!chara3.HasHost && chara3 != tc && (chara3.IsPCParty || chara3.IsPCPartyMinion))
if (!chara4.HasHost && chara4 != tc && (chara4.IsPCParty || chara4.IsPCPartyMinion))
{
chara3.Teleport(tc.pos.GetNearestPoint(allowBlock: false, allowChara: false) ?? tc.pos);
chara4.Teleport(tc.pos.GetNearestPoint(allowBlock: false, allowChara: false) ?? tc.pos);
}
}
}void AddCon<T>(int rate, int power) where T : Condition
break;
case EffectId.StripBlessing:
{
List<Condition> list4 = new List<Condition>();
List<Condition> list6 = new List<Condition>();
foreach (Condition condition4 in TC.conditions)
{
if (GetBlessingDifficulty(condition4) > 0 && EClass.rnd(GetBlessingDifficulty(condition4)) == 0)
{
list4.Add(condition4);
list6.Add(condition4);
}
}
if (list4.Count == 0)
if (list6.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);
list4.Shuffle();
list6.Shuffle();
{
foreach (Condition item5 in list4)
foreach (Condition item5 in list6)
{
item5.Kill();
if (CC.IsHostile(TC))void AddCon<T>(int rate, int power) where T : Condition
{
break;
}
int num14 = 0;
int num11 = 0;
foreach (Condition condition5 in TC.conditions)
{
if (condition5.Type == ConditionType.Debuff)
{
num14++;
num11++;
}
}
if (num14 == 0)
if (num11 == 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> list10 = TC.pos.ListCharasInRadius(TC, 4, (Chara c) => c == TC || c.IsHostile(CC));
for (int m = 0; m < num14; m++)
List<Chara> list4 = TC.pos.ListCharasInRadius(TC, 4, (Chara c) => c == TC || c.IsHostile(CC));
for (int k = 0; k < num11; k++)
{
TweenUtil.Delay((float)m * 0.1f, delegate
TweenUtil.Delay((float)k * 0.1f, delegate
{
center.PlaySound("shutterhex");
});
foreach (Chara item6 in list10)
foreach (Chara item6 in list4)
{
if (item6.ExistsOnMap)
{void AddCon<T>(int rate, int power) where T : Condition
Color startColor = (componentInChildren.endColor = EClass.Colors.elementColors["eleHoly"]);
componentInChildren.startColor = startColor;
Point pos = item6.pos.Copy();
TweenUtil.Delay((float)m * 0.1f, delegate
TweenUtil.Delay((float)k * 0.1f, delegate
{
effect.Play(center, 0f, pos);
});
int num15 = Dice.Create("SpShutterHex", power, CC, (actRef.refThing != null) ? null : actRef.act).Roll();
item6.DamageHP(num15, 919, power, AttackSource.None, CC, showEffect: false);
int num12 = Dice.Create("SpShutterHex", power, CC, (actRef.refThing != null) ? null : actRef.act).Roll();
item6.DamageHP(num12, 919, power, AttackSource.None, CC, showEffect: false);
}
}
}void AddCon<T>(int rate, int power) where T : Condition
break;
}
Thing thing7 = null;
bool flag11 = actRef.n1 == "food";
bool flag10 = 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 (flag11)
if (flag10)
{
func = (Thing t) => t.IsFood;
}
List<Thing> list9 = TC.things.List(delegate(Thing t)
List<Thing> list10 = TC.things.List(delegate(Thing t)
{
if (t.parentCard?.trait is TraitChestMerchant || t.trait is TraitTool || t.IsThrownWeapon)
{void AddCon<T>(int rate, int power) where T : Condition
}
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 (list9.Count > 0)
if (list10.Count > 0)
{
thing7 = list9.RandomItem();
thing7 = list10.RandomItem();
if (thing7.Num > 1)
{
thing7 = thing7.Split(1);void AddCon<T>(int rate, int power) where T : Condition
text3 = text4;
}
}
Condition condition = Condition.Create(text3, power, delegate(Condition con)
Condition condition2 = Condition.Create(text3, power, delegate(Condition con)
{
if (!actRef.aliasEle.IsEmpty())
{
con.SetElement(EClass.sources.elements.alias[actRef.aliasEle].id);
}
});
condition.isPerfume = TC.IsPC && actRef.isPerfume;
Condition condition2 = TC.AddCondition(condition);
if (condition2 != null && condition2.isPerfume)
condition2.isPerfume = TC.IsPC && actRef.isPerfume;
Condition condition3 = TC.AddCondition(condition2);
if (condition3 != null && condition3.isPerfume)
{
condition2.value = 3;
condition3.value = 3;
Msg.Say("perfume", TC);
}
if (!text4.IsEmpty())void AddCon<T>(int rate, int power) where T : Condition
{
EClass.game.religions.Trickery.Talk("ability");
bool hex = CC.IsHostile(TC);
List<SourceStat.Row> list7 = EClass.sources.stats.rows.Where((SourceStat.Row con) => con.tag.Contains("random") && con.group == (hex ? "Debuff" : "Buff")).ToList();
List<SourceStat.Row> list8 = EClass.sources.stats.rows.Where((SourceStat.Row con) => con.tag.Contains("random") && con.group == (hex ? "Debuff" : "Buff")).ToList();
int power2 = power;
for (int k = 0; k < 4 + EClass.rnd(2); k++)
for (int l = 0; l < 4 + EClass.rnd(2); l++)
{
SourceStat.Row row2 = list7.RandomItem();
list7.Remove(row2);
SourceStat.Row row2 = list8.RandomItem();
list8.Remove(row2);
Proc(hex ? EffectId.DebuffKizuami : EffectId.Buff, CC, TC, power2, new ActRef
{
n1 = row2.aliasvoid AddCon<T>(int rate, int power) where T : Condition
power = power * 2 / 3;
}
int a2 = power;
int num12 = TC.WIL * (isPowerful ? 20 : 5);
ConHolyVeil condition3 = TC.GetCondition<ConHolyVeil>();
if (condition3 != null)
int num13 = TC.WIL * (isPowerful ? 20 : 5);
ConHolyVeil condition = TC.GetCondition<ConHolyVeil>();
if (condition != null)
{
num12 += condition3.power * 5;
num13 += condition.power * 5;
}
if (id != EffectId.DebuffKizuami && EClass.rnd(a2) < num12 / EClass.sources.stats.alias[n].hexPower && EClass.rnd(10) != 0)
if (id != EffectId.DebuffKizuami && EClass.rnd(a2) < num13 / 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
case EffectId.Ally:
{
Msg.Say("gainAlly");
Chara chara = CharaGen.CreateFromFilter("chara", cc.LV);
EClass._zone.AddCard(chara, cc.pos.GetNearestPoint(allowBlock: false, allowChara: false));
Chara chara2 = CharaGen.CreateFromFilter("chara", cc.LV);
EClass._zone.AddCard(chara2, cc.pos.GetNearestPoint(allowBlock: false, allowChara: false));
if (cc.IsPCFactionOrMinion)
{
chara.MakeAlly(msg: false);
chara2.MakeAlly(msg: false);
}
chara.PlaySound("identify");
chara.PlayEffect("teleport");
chara2.PlaySound("identify");
chara2.PlayEffect("teleport");
break;
}
case EffectId.Wish: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 age3 = tc.bio.GetAge(tc.Chara);
if (blessed && age3 > 1)
int age2 = tc.bio.GetAge(tc.Chara);
if (blessed && age2 > 1)
{
tc.Say("ageDown", tc);
tc.bio.SetAge(tc.Chara, age3 - 1);
tc.bio.SetAge(tc.Chara, age2 - 1);
}
else if (flag)
{
tc.Say("ageUp", tc);
tc.bio.SetAge(tc.Chara, age3 + 1);
tc.bio.SetAge(tc.Chara, age2 + 1);
}
break;
}void AddCon<T>(int rate, int power) where T : Condition
{
tc.PlaySound("mutation");
tc.PlayEffect("mutation");
int num13 = ((actRef.refThing != null) ? actRef.refThing.GetInt(118) : actRef.refVal);
if (num13 == 0)
int num10 = ((actRef.refThing != null) ? actRef.refThing.GetInt(118) : actRef.refVal);
if (num10 == 0)
{
num13 = tc.GetInt(118);
if (num13 == 0)
num10 = tc.GetInt(118);
if (num10 == 0)
{
num13 = EClass.game.seed + tc.uid;
num10 = EClass.game.seed + tc.uid;
}
num13++;
num10++;
}
tc.Say("transBlood", tc);
tc.Talk("tail");
tc.c_bloodData = null;
tc.SetInt(118, num13);
tc.SetInt(118, num10);
break;
}
case EffectId.Youth:void AddCon<T>(int rate, int power) where T : Condition
tc.SayNothingHappans();
break;
}
int age2 = tc.bio.GetAge(tc.Chara);
int age3 = 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, age2);
tc.bio.SetAge(tc.Chara, age3);
}
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 = age2 + 1;
tc.c_lockedAge = age3 + 1;
tc.elements.SetBase(1243, 1);
if (blessed)
{void AddCon<T>(int rate, int power) where T : Condition
break;
case EffectId.Revive:
{
List<KeyValuePair<int, Chara>> list8 = 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>> list9 = 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 && list8.Count == 0)
if (TC.IsPC && list9.Count == 0)
{
list8 = 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();
list9 = 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 (list8.Count > 0)
if (list9.Count > 0)
{
list8.RandomItem().Value.Chara.GetRevived();
list9.RandomItem().Value.Chara.GetRevived();
break;
}
}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 num11 = ((id == EffectId.DamageBody || id == EffectId.DamageMind) ? 1 : (4 + EClass.rnd(4)));
int num15 = ((id == EffectId.DamageBody || id == EffectId.DamageMind) ? 1 : (4 + EClass.rnd(4)));
if (id == EffectId.Weaken)
{
flag12 = EClass.rnd(2) == 0;
mind2 = !flag12;
num11 = 1;
num15 = 1;
}
else
{void AddCon<T>(int rate, int power) where T : Condition
TC.PlaySound("debuff");
}
TC.Say(flag12 ? "damageBody" : "damageMind", TC);
for (int l = 0; l < num11; l++)
for (int m = 0; m < num15; 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 flag10 = id == EffectId.RestoreBody;
bool flag11 = id == EffectId.RestoreBody;
if (flag)
{
Redirect(flag10 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef));
Redirect(flag11 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef));
break;
}
TC.Say(flag10 ? "restoreBody" : "restoreMind", TC);
TC.Say(flag11 ? "restoreBody" : "restoreMind", TC);
TC.PlaySound("heal");
TC.PlayEffect("heal");
TC.CureHost(flag10 ? CureType.CureBody : CureType.CureMind, power, state);
TC.CureHost(flag11 ? CureType.CureBody : CureType.CureMind, power, state);
if (blessed)
{
Redirect(flag10 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef));
Redirect(flag11 ? 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 num10 = 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 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();
if (actRef.refThing != null)
{
num10 = num10 * (100 + actRef.refThing.Evalue(750) * 10) / 100;
num9 = num9 * (100 + actRef.refThing.Evalue(750) * 10) / 100;
}
if (flag)
{
TC.DamageHP(num10 / 2, 919, power);
TC.DamageHP(num9 / 2, 919, power);
break;
}
TC.HealHPHost(num10, (actRef.refThing == null && id != EffectId.JureHeal) ? HealSource.Magic : HealSource.Item);
TC.HealHPHost(num9, (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
TC.ModCorruption(-power * (blessed ? 150 : 200) / 100);
}
break;
case EffectId.Degenerate:
{
if (TC == null || TC.HasCondition<ConTransmuteHuman>())
{
CC.SayNothingHappans();
break;
}
Chara chara = CharaGen.Create("baby");
if (!TC.Aka.IsEmpty())
{
chara.c_altName = TC.c_altName ?? TC.source.GetName(TC);
}
TC.AddCondition(Condition.Create(power, delegate(ConTransmuteHuman con)
{
con.chara = chara;
}));
break;
}
case EffectId.Drink:
case EffectId.DrinkRamune:
case EffectId.DrinkMilk:void AddCon<T>(int rate, int power) where T : Condition
if (TC.HasElement(1211))
{
TC.Say("drinkSaltWater_snail", TC);
int num9 = ((TC.hp > 10) ? (TC.hp - EClass.rnd(10)) : 10000);
TC.DamageHP(num9, AttackSource.None, CC);
int num14 = ((TC.hp > 10) ? (TC.hp - EClass.rnd(10)) : 10000);
TC.DamageHP(num14, AttackSource.None, CC);
}
else if (TC.IsPC)
{void AddCon<T>(int rate, int power) where T : Condition
{
power /= 4;
}
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)
List<Thing> list7 = TC.things.List((Thing t) => (t.Num <= 1 && t.IsEquipmentOrRanged && !t.IsToolbelt && !t.IsLightsource && t.isEquipped) ? true : false);
if (list7.Count != 0)
{
Thing thing6 = list6.RandomItem();
Thing thing6 = list7.RandomItem();
TC.Say("acid_hit", TC);
if (thing6.isAcidproof)
{Affinity
return true;
}
public bool CanBecomeMama()
{
return CurrentStage >= Stage.Respected;
}
public bool CanGiveCard()
{
return CurrentStage >= Stage.Love;Card
public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
dmg = 0L;
}
long num9 = 99999999L;
ConStrife condition = GetCondition<ConStrife>();
if (condition != null)
if (origin != null && (attackSource == AttackSource.Melee || attackSource == AttackSource.Range))
{
num9 = num9 * (100 + condition.lv * 5) / 100;
ConStrife condition = origin.GetCondition<ConStrife>();
if (condition != null)
{
num9 = num9 * (100 + condition.lv * 5) / 100;
}
}
if (dmg > num9)
{public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
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_1092;
goto IL_10b3;
}
}
if (zoneInstanceBout != null && (bool)LayerDrama.Instance)public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
if (EClass.player.invlunerable)
{
EvadeDeath(null);
goto IL_1092;
goto IL_10b3;
}
}
if (Evalue(1220) > 0 && Chara.stamina.value >= (IsPC ? (Chara.stamina.max / 2) : (Chara.stamina.max / 3 * 2)))public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
}
}
}
goto IL_1092;
IL_1092:
goto IL_10b3;
IL_10b3:
if (trait.CanBeAttacked)
{
renderer.PlayAnime(AnimeID.HitObj); {
if (origin != null && origin.isChara && isChara && (weapon == null || !weapon.HasElement(486)))
{
int valueOrDefault = (origin.Evalue(662) + weapon?.Evalue(662, ignoreGlobalElement: true)).GetValueOrDefault();
int valueOrDefault2 = (origin.Evalue(661) + weapon?.Evalue(661, ignoreGlobalElement: true)).GetValueOrDefault();
if (valueOrDefault > 0 && attackSource == AttackSource.Melee && origin.isChara && !origin.Chara.ignoreSPAbsorb && Chara.IsHostile(origin as Chara))
int num18 = origin.Evalue(662) + (weapon?.Evalue(662, ignoreGlobalElement: true) ?? 0);
int num19 = origin.Evalue(661) + (weapon?.Evalue(661, ignoreGlobalElement: true) ?? 0);
if (num18 != 0)
{
Debug.Log(num18);
}
if (num18 > 0 && attackSource == AttackSource.Melee && origin.isChara && !origin.Chara.ignoreSPAbsorb && Chara.IsHostile(origin as Chara))
{
int num18 = EClass.rnd(3 + (int)Mathf.Clamp(dmg / 100, 0f, valueOrDefault / 10));
origin.Chara.stamina.Mod(num18);
int num20 = EClass.rnd(3 + (int)Mathf.Clamp(dmg / 100, 0f, num18 / 10));
origin.Chara.stamina.Mod(num20);
if (IsAliveInCurrentZone)
{
Chara.stamina.Mod(-num18);
Chara.stamina.Mod(-num20);
}
}
if (origin.HasElement(1350) && attackSource == AttackSource.Melee)
{
int num19 = EClass.rndHalf(2 + (int)Mathf.Clamp(dmg / 10, 0f, origin.Chara.GetPietyValue() + 10));
origin.Chara.mana.Mod(num19);
int num21 = EClass.rndHalf(2 + (int)Mathf.Clamp(dmg / 10, 0f, origin.Chara.GetPietyValue() + 10));
origin.Chara.mana.Mod(num21);
if (IsAliveInCurrentZone)
{
Chara.mana.Mod(-num19);
Chara.mana.Mod(-num21);
}
}
if (valueOrDefault2 > 0 && attackSource == AttackSource.Melee)
if (num19 > 0 && attackSource == AttackSource.Melee)
{
int num20 = EClass.rnd(2 + (int)Mathf.Clamp(dmg / 10, 0f, valueOrDefault2 + 10));
origin.Chara.mana.Mod(num20);
int num22 = EClass.rnd(2 + (int)Mathf.Clamp(dmg / 10, 0f, num19 + 10));
origin.Chara.mana.Mod(num22);
if (IsAliveInCurrentZone)
{
Chara.mana.Mod(-num20);
Chara.mana.Mod(-num22);
}
}
}public void SpawnLoot(Card origin)
}
}
}
if (trait is TraitMerchantTravel)
if (trait is TraitMerchantTravel && !EClass._zone.IsFestival)
{
trait.OnBarter();
Thing thing4 = things.Find<TraitChestMerchant>();public void Talk(string idTopic, string ref1 = null, string ref2 = null, bool fo
GameLang.refDrama1 = ref1;
GameLang.refDrama2 = ref2;
string text = GetTalkText(idTopic, stripPun: true);
if (HasElement(1232) && idTopic != "baby")
ConTransmuteHuman condition = GetCondition<ConTransmuteHuman>();
if ((HasElement(1232) || (condition != null && condition.IsBaby)) && idTopic != "baby")
{
BackerContent.GakiConvert(ref text, "babu");
}
else
{
switch (id)
switch ((condition != null) ? condition.chara.id : id)
{
case "adv_gaki":
BackerContent.GakiConvert(ref text);public void Say(string lang, Card c1, string ref1 = null, string ref2 = null)
public string GetTalkText(string idTopic, bool stripPun = false, bool useDefault = true)
{
bool flag = isChara && Chara.IsHumanSpeak;
string text = MOD.listTalk.GetTalk(c_idTalk.IsEmpty(id), idTopic, useDefault, flag);
ConTransmuteHuman condition = GetCondition<ConTransmuteHuman>();
string text = MOD.listTalk.GetTalk((condition != null) ? condition.chara.id : c_idTalk.IsEmpty(id), idTopic, useDefault, flag);
if (!text.IsEmpty())
{
text = text.Split('|').RandomItem();CardActor
public virtual void OnRender(RenderParam p)
mpb2.SetFloat("_Liquid", destLiquid);
sr2.SetPropertyBlock(mpb2);
}
if (owner.sourceCard.replacer.data == null)
SpriteReplacer replacer = owner.sourceCard.replacer;
if (!replacer.HasSprite(owner.sourceCard.idSprite, data))
{
return;
}
SpriteData data2 = owner.sourceCard.replacer.data;
if (data2.frame <= 1)
SpriteData spriteData = replacer.data;
if (p.snow && replacer.suffixes.TryGetValue("_snow", out var value))
{
spriteData = value;
}
if (spriteData.frame <= 1)
{
return;
}
spriteTimer += Core.delta;
if (spriteTimer >= data2.time)
if (spriteTimer >= spriteData.time)
{
spriteTimer -= data2.time;
spriteTimer -= spriteData.time;
spriteIndex++;
if (spriteIndex >= data2.frame)
if (spriteIndex >= spriteData.frame)
{
spriteIndex = 0;
}
sr.sprite = ((data2.spritesSnow != null && p.snow) ? data2.spritesSnow[spriteIndex] : data2.sprites[spriteIndex]);
sr.sprite = spriteData.GetSprites()[spriteIndex];
}
}CardRenderer
{
return EClass.core.refs.prefs.pcc;
}
if (owner.sourceCard.replacer?.data?.pref != null)
{
return owner.sourceCard.replacer.data.pref;
}
return owner.Pref;
}
}Chara
public override Sprite GetSprite(int dir = 0)
pCC.Build();
return pCC.variation.idle[0, 0];
}
if (spriteReplacer != null)
int skin = 0;
if (sourceCard.tiles.Length > 1)
{
return spriteReplacer.data.GetSprite();
skin = ((base.idSkin == 0 && !source.staticSkin) ? (base.uid % sourceCard.tiles.Length / 2 * 2 + ((!base.IsMale) ? 1 : 0)) : base.idSkin);
}
return sourceCard.GetSprite(0, (sourceCard._tiles.Length > 1) ? ((base.idSkin != 0 || source.staticSkin) ? base.idSkin : (base.uid % sourceCard._tiles.Length / 2 * 2 + ((!base.IsMale) ? 1 : 0))) : 0);
return sourceCard.GetSprite(0, skin, EClass.core.IsGameStarted && EClass._zone.IsSnowCovered);
}
public void SetTempHand(int right = 0, int left = 0)public override string GetHoverText2()
public string GetTopicText(string topic = "calm")
{
string key = source.idText.IsEmpty(id);
ConTransmuteHuman condition = GetCondition<ConTransmuteHuman>();
string key = ((condition == null) ? source : condition.chara.source).idText.IsEmpty((condition == null) ? id : condition.chara.id);
if (id == "littleOne" && EClass._zone is Zone_LittleGarden)
{
key = "littleOne2";ConStrife
public class ConStrife : BaseBuff
public class ConStrife : BaseBuff
{
[JsonProperty]
private ElementContainer ec = new ElementContainer();
private ElementContainer ec = new ElementContainerCondition();
[JsonProperty]
public int exp;public override void OnWriteNote(List<string> list)
list.Add("hintStrife2".lang((lv * 10).ToString() ?? "", (lv * 5).ToString() ?? "").TagColorGoodBad(() => true));
foreach (Element e in ec.dict.Values)
{
if (e.Value == 0)
{
continue;
}
if (e.IsFlag)
{
list.Add(e.Name.TagColorGoodBad(() => e.Value >= 0));ConTransmuteHuman
public class ConTransmuteHuman : ConBaseTransmuteMimic
public override Card Card => chara;
public bool IsBaby => chara.HasElement(1232);
public override bool HasDuration => false;
public override bool ShouldRevealOnContact => false;public override RendererReplacer GetRendererReplacer()
public override void OnBeforeStart()
{
List<Chara> list = owner.pos.ListCharasInRadius(owner, 5, delegate(Chara c)
if (chara == null)
{
if (c.IsHumanSpeak)
List<Chara> list = owner.pos.ListCharasInRadius(owner, 5, delegate(Chara c)
{
CardRenderer renderer = c.renderer;
if (renderer != null && !renderer.hasActor)
if (c.IsHumanSpeak)
{
return !c.HasElement(1427);
CardRenderer renderer = c.renderer;
if (renderer != null && !renderer.hasActor)
{
return !c.HasElement(1427);
}
}
return false;
});
if (list.Count > 0)
{
chara = list.RandomItem().Duplicate();
}
else
{
chara = CharaGen.CreateFromFilter("c_guest");
}
return false;
});
if (list.Count > 0)
{
chara = list.RandomItem().Duplicate();
}
else
{
chara = CharaGen.CreateFromFilter("c_guest");
}
base.OnBeforeStart();
}Core
public void OnApplicationFocus(bool focus)
}
foreach (CardRow row in sources.cards.rows)
{
if (row.replacer.isChecked && row.replacer.data != null)
if (row.replacer.isChecked.GetValueOrDefault(row.idSprite) && row.replacer.data != null)
{
row.replacer.data.GetSprite();
}DramaCustomSequence
{
Choice2(flag2 ? "daBird" : "daTail", "_tail");
}
ConTransmuteHuman condition = EClass.pc.GetCondition<ConTransmuteHuman>();
if (condition != null && condition.IsBaby)
{
Choice2("daMama", "_mama");
}
if (c.trait.CanRevive)
{
Choice2("daRevive", "_revive").DisableSound(); });
Choice("no2", StepDefault, cancel: true).SetOnClick(RumorChill);
});
Step("_mama");
Method(delegate
{
if (c.affinity.CanBecomeMama() || EClass.debug.enable)
{
TempTalkTopic("mama_yes", StepEnd);
EClass.pc.SetAI(new AI_Fuck
{
target = c,
variation = AI_Fuck.Variation.MotherMilk
});
}
else
{
TempTalkTopic("mama_no", StepDefault);
RumorChill();
}
});
Step("_whore");
Method(delegate
{EffectId
SilverCatMigration = 314,
ChangeRarity = 315,
ChangeAlias = 316,
ChangeBiography = 317
ChangeBiography = 317,
Degenerate = 318
}RenderRow
public int ConvertTile(int tile)
public Sprite GetSprite(int dir = 0, int skin = 0, bool snow = false)
{
bool flag = this is SourceChara.Row;
if (replacer.HasSprite(idSprite, renderData))
{
return replacer.data.GetSprite(snow);
foreach (string item in new List<string>
{
$"_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;
}
}
}
int[] array = null ?? _tiles;
if (sprites == null)
{
sprites = new Sprite[(skins == null) ? 1 : (skins.Length + 1), (array.Length == 0) ? 1 : array.Length];
}
if (this is SourceChara.Row)
if (flag)
{
dir = skin;
skin = 0;SpriteData
using System;
using System.Globalization;
using System.IO;
using System.Text;
using IniParser;
public class SpriteData
{
public DateTime date;
public Texture2D tex;
public Texture2D texSnow;
public string id;
public string path;
public Sprite[] sprites;
public Texture2D tex;
public Sprite[] spritesSnow;
public Sprite[] sprites;
public SourcePref pref;
public DateTime date;
public int frame = 1;
public float time = 0.2f;
public SourcePref pref;
public void Init()
{
try
{
if (File.Exists(path + ".ini"))
{
IniData iniData = new FileIniDataParser().ReadFile(path + ".ini", Encoding.UTF8);
frame = int.Parse(iniData.GetKey("frame") ?? "1");
scale = int.Parse(iniData.GetKey("scale") ?? "50");
time = float.Parse(iniData.GetKey("time") ?? "0.2", CultureInfo.InvariantCulture);
}
id = Path.GetFileNameWithoutExtension(path);
LoadAnimationIni();
LoadPref();
}
catch (Exception message)
catch (Exception exception)
{
Debug.Log(message);
Debug.Log("exception: Failed to parse:" + path + ".ini");
time = 0.2f;
scale = 50;
Debug.LogException(exception);
Debug.LogError("#sprite failed to init '" + id + "' at " + path);
}
}
public Sprite[] GetSprites()
{
Validate();
return sprites;
}
public void LoadPref()
{
pref = null; }
}
public Sprite GetSprite(bool snow = false)
public void LoadAnimationIni()
{
Validate();
if (!snow || spritesSnow == null)
if (!File.Exists(path + ".ini"))
{
return sprites[0];
return;
}
return spritesSnow[0];
try
{
IniData iniData = new FileIniDataParser().ReadFile(path + ".ini", Encoding.UTF8);
if (!int.TryParse(iniData.GetKey("frame") ?? "1", out frame))
{
frame = 1;
}
if (!int.TryParse(iniData.GetKey("scale") ?? "50", out scale))
{
scale = 50;
}
if (!float.TryParse(iniData.GetKey("time") ?? "0.2", out time))
{
time = 0.2f;
}
}
catch (Exception exception)
{
Debug.LogException(exception);
frame = 1;
scale = 50;
time = 0.2f;
}
}
public Sprite[] GetSprites()
{
Validate();
return sprites;
}
public Sprite GetSprite()
{
Validate();
return sprites[0];
}
public void Validate()
{
DateTime lastWriteTime = File.GetLastWriteTime(path + ".png");
bool flag = date.Year != 1 && date == lastWriteTime;
if (!flag)
if (date.Year == 1 || !(date == lastWriteTime))
{
Load(flag, ref tex, ref sprites, "");
if (File.Exists(path + "_snow.png"))
{
Load(flag, ref texSnow, ref spritesSnow, "_snow");
}
Load();
date = lastWriteTime;
}
}
public void Load(bool dateMatched, ref Texture2D tex, ref Sprite[] sprites, string suffix)
public void Load()
{
if (dateMatched && (bool)tex)
{
return;
}
if ((bool)tex)
{
Texture2D texture2D = IO.LoadPNG(path + suffix + ".png");
if (texture2D.width != tex.width || texture2D.height != tex.height)
{
Debug.Log(texture2D.width + "/" + texture2D.height + "/" + path);
tex.Reinitialize(texture2D.width, texture2D.height);
}
tex.SetPixels32(texture2D.GetPixels32());
tex.Apply();
UnityEngine.Object.Destroy(texture2D);
UnityEngine.Object.Destroy(tex);
}
else
tex = IO.LoadPNG(path + ".png");
Debug.Log(tex.width + "/" + tex.height + "/" + path);
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++)
{
tex = IO.LoadPNG(path + suffix + ".png");
int num = tex.width / frame;
int height = tex.height;
sprites = new Sprite[frame];
for (int i = 0; i < frame; i++)
{
sprites[i] = Sprite.Create(tex, new Rect(i * num, 0f, num, height), new Vector2(0.5f, 0.5f), 100f, 0u, SpriteMeshType.FullRect);
}
sprites[i] = Sprite.Create(tex, new Rect(i * num, 0f, num, height), pivot, 100f, 0u, SpriteMeshType.FullRect);
}
LoadPref();
}
}SpriteReplacer
public static Dictionary<string, string> dictModItems = new Dictionary<string, string>();
public bool isChecked;
public SpriteData data;
public Dictionary<string, SpriteData> suffixes = new Dictionary<string, SpriteData>();
public Dictionary<string, bool> isChecked = new Dictionary<string, bool>();
public static Dictionary<string, SpriteReplacer> ListSkins()
{
List<string> list = new List<string>();public static Dictionary<string, SpriteReplacer> ListSkins()
{
dictSkins.Remove(item);
}
FileInfo[] files = new DirectoryInfo(CorePath.custom + "Skin").GetFiles();
FileInfo[] files = new DirectoryInfo(CorePath.custom + "Skin").GetFiles("*.png");
foreach (FileInfo fileInfo in files)
{
if (fileInfo.Extension == ".png")
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileInfo.FullName);
if (!dictSkins.ContainsKey(fileNameWithoutExtension))
{
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileInfo.FullName);
if (!dictSkins.ContainsKey(fileNameWithoutExtension))
SpriteReplacer spriteReplacer = new SpriteReplacer();
spriteReplacer.data = new SpriteData
{
SpriteReplacer spriteReplacer = new SpriteReplacer();
spriteReplacer.data = new SpriteData
{
path = fileInfo.GetFullFileNameWithoutExtension()
};
spriteReplacer.data.Init();
dictSkins.Add(fileNameWithoutExtension, spriteReplacer);
}
path = fileInfo.GetFullFileNameWithoutExtension()
};
spriteReplacer.data.Init();
dictSkins.Add(fileNameWithoutExtension, spriteReplacer);
}
}
return dictSkins;
}
public bool HasSprite(string id, RenderData renderData = null)
public Sprite GetSprite(string suffix = "")
{
if (!isChecked)
if (!suffixes.TryGetValue(suffix, out var value))
{
try
return null;
}
return value.GetSprite();
}
public void Reload(string id, RenderData renderData = null)
{
data = null;
suffixes.Clear();
try
{
if (dictModItems.ContainsKey(id))
{
if (dictModItems.ContainsKey(id))
foreach (var (text3, path) in dictModItems)
{
Debug.Log(id + ":" + dictModItems[id]);
data = new SpriteData
{
path = dictModItems[id]
};
data.Init();
}
else
{
string text = CorePath.packageCore + "Texture/Item/" + id;
if (!File.Exists(text + ".png") && renderData != null)
{
text = CorePath.packageCore + "Texture/Item/" + renderData.name;
}
if (File.Exists(text + ".png"))
if (text3.StartsWith(id))
{
data = new SpriteData
string text4 = text3[id.Length..];
SpriteData spriteData = new SpriteData
{
path = text
path = path
};
data.Init();
spriteData.Init();
suffixes[text4] = spriteData;
Debug.Log("#sprite replacer init '" + text4 + "' at " + path.ShortPath());
}
}
isChecked = true;
data = suffixes.TryGetValue("");
}
catch (Exception ex)
else
{
Debug.Log("Error during fetching spirte:" + ex);
string text5 = CorePath.packageCore + "Texture/Item/" + id;
if (!File.Exists(text5 + ".png") && renderData != null)
{
text5 = CorePath.packageCore + "Texture/Item/" + renderData.name;
}
if (File.Exists(text5 + ".png"))
{
data = new SpriteData
{
path = text5
};
data.Init();
suffixes[""] = data;
}
}
if (data != null)
{
Debug.Log(id + ":" + data.path);
}
}
catch (Exception ex)
{
Debug.LogError("#sprite error fetching sprite replacer:" + ex);
}
isChecked[id] = true;
}
public bool HasSprite(string id, RenderData renderData = null)
{
if (!isChecked.GetValueOrDefault(id) || (data != null && data.id != id))
{
Reload(id, renderData);
}
return data != null;
}Trait
public void OnBarter(bool reroll = false)
{
break;
}
int num4 = 0;
int num5 = 0;
foreach (Thing thing10 in c_copyContainer.things)
{
if (!owner.trait.CanCopy(thing10))public void OnBarter(bool reroll = false)
{
thing2.elements.Remove(item.id);
}
int num5 = 1;
int num6 = 1;
switch (owner.trait.CopyShop)
{
case CopyShopType.Item:
{
num5 = (1000 + owner.c_invest * 100) / (thing2.GetPrice(CurrencyType.Money, sell: false, PriceType.CopyShop) + 50);
num6 = (1000 + owner.c_invest * 100) / (thing2.GetPrice(CurrencyType.Money, sell: false, PriceType.CopyShop) + 50);
int[] array = new int[3] { 704, 703, 702 };
foreach (int ele in array)
{
if (thing2.HasElement(ele))
{
num5 = 1;
num6 = 1;
}
}
break;public void OnBarter(bool reroll = false)
thing2.c_charges = thing10.c_charges;
break;
}
if (num5 > 1 && thing2.trait.CanStack)
if (num6 > 1 && thing2.trait.CanStack)
{
thing2.SetNum(num5);
thing2.SetNum(num6);
}
AddThing(thing2);
num4++;
if (num4 > owner.trait.NumCopyItem)
num5++;
if (num5 > owner.trait.NumCopyItem)
{
break;
}public void OnBarter(bool reroll = false)
break;
case ShopType.RedBook:
{
for (int num8 = 0; num8 < 30; num8++)
for (int num9 = 0; num9 < 30; num9++)
{
AddThing(ThingGen.CreateFromFilter("shop_seeker"));
}
break;
}
case ShopType.TravelMerchant2:
{
int seed = EClass.game.seed + EClass._zone.uid + EClass.world.date.year * 12 + EClass.world.date.month;
Add("tool_talisman", 1, 0);
Add("camera", 1, 0);
Add("dreambug", EClass.rndHalf(10), 0);public void OnBarter(bool reroll = false)
Add("block_kiwi", EClass.rndHalf(6), 0);
Add("block_peach", EClass.rndHalf(6), 0);
Add("water", 1, 0);
if (EClass.rndSeed(EClass.debug.enable ? 1 : 5, owner.uid) == 0)
if (EClass.rndSeed(EClass.debug.enable ? 1 : 5, seed) == 0)
{
Add("hammer_garokk", 1, 0);
}
if (EClass.rndSeed(EClass.debug.enable ? 1 : 100, owner.uid) == 0)
if (EClass.rndSeed(EClass.debug.enable ? 1 : 100, seed) == 0)
{
Add("water_jure", 1, 0);
}
break;
}
case ShopType.KeeperOfGarden:
{
string[] array2 = new string[11]public void OnBarter(bool reroll = false)
AddThing(TraitSeed.MakeSeed("carrot")).SetNum(4 + EClass.rnd(4));
AddThing(TraitSeed.MakeSeed("potato")).SetNum(4 + EClass.rnd(4));
AddThing(TraitSeed.MakeSeed("corn")).SetNum(4 + EClass.rnd(4));
for (int num9 = 0; num9 < EClass.rnd(3) + 1; num9++)
for (int num10 = 0; num10 < EClass.rnd(3) + 1; num10++)
{
Add("462", 1, 0);
}
for (int num10 = 0; num10 < EClass.rnd(3) + 1; num10++)
for (int num11 = 0; num11 < EClass.rnd(3) + 1; num11++)
{
Add("1167", 1, 0);
}public void OnBarter(bool reroll = false)
break;
case ShopType.Influence:
{
bool num6 = owner.id == "big_sister";
TraitTicketFurniture.SetZone(num6 ? EClass.game.spatials.Find("little_garden") : EClass._zone, Add("ticket_furniture", 1, 0).SetNum(99));
if (num6)
bool num7 = owner.id == "big_sister";
TraitTicketFurniture.SetZone(num7 ? EClass.game.spatials.Find("little_garden") : EClass._zone, Add("ticket_furniture", 1, 0).SetNum(99));
if (num7)
{
Add("littleball", 10, 0);
if (!owner.Chara.affinity.CanGiveCard())public void OnBarter(bool reroll = false)
}
if (EClass._zone is Zone_Exile)
{
for (int num7 = 0; num7 < 30; num7++)
for (int num8 = 0; num8 < 30; num8++)
{
Add("1235", 1, -1);
Add("1236", 1, -1);public void OnBarter(bool reroll = false)
case ShopType.TravelMerchant:
case ShopType.TravelMerchant2:
num2 /= 3f;
if (num2 < 12f)
{
num2 = 12f;
}
num3 = 30;
break;
}public void OnBarter(bool reroll = false)
num2 = Mathf.Min(num2, num3);
for (int j = 0; (float)j < num2; j++)
{
if (ShopType == ShopType.TravelMerchant)
{
int num4 = EClass.game.seed + (EClass.world.date.year * 12 + EClass.world.date.month) * 30 + EClass._zone.uid;
Rand.SetBaseSeed(num4 + j);
Rand.SetSeed(num4 + j);
}
Thing thing = CreateStock();
Rand.SetBaseSeed();
Rand.SetSeed();
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)
{
bool tryStack = true;public void OnBarter(bool reroll = false)
break;
case ShopType.Moyer:
{
for (int num13 = 1; num13 <= 20; num13++)
for (int num14 = 1; num14 <= 20; num14++)
{
AddAdvWeek(num13);
AddAdvWeek(num14);
}
break;
}
case ShopType.StrangeGirl:
{
int num14 = (EClass.debug.enable ? 20 : (EClass._zone.development / 10));
if (num14 > 0)
int num15 = (EClass.debug.enable ? 20 : (EClass._zone.development / 10));
if (num15 > 0)
{
Add("syringe_gene", num14, 0);
Add("syringe_gene", num15, 0);
Add("diary_little", 1, 0);
}
if (num14 > 10)
if (num15 > 10)
{
Add("syringe_heaven", num14 / 5, 0);
Add("syringe_heaven", num15 / 5, 0);
Add("1276", 1, 0);
}
Add("medal", 10, 0);public void OnBarter(bool reroll = false)
Add("ticket_armpillow", 1, 0);
Add("ticket_champagne", 1, 0);
}
for (int num11 = 0; num11 < 3; num11++)
for (int num12 = 0; num12 < 3; num12++)
{
if (EClass.rnd(5) == 0)
{
TreasureType treasureType = ((EClass.rnd(10) == 0) ? TreasureType.BossNefia : ((EClass.rnd(10) == 0) ? TreasureType.Map : TreasureType.RandomChest));
int num12 = EClass.rnd(EClass.rnd(ShopLv + (EClass.debug.enable ? 200 : 50)) + 1) + 1;
int num13 = EClass.rnd(EClass.rnd(ShopLv + (EClass.debug.enable ? 200 : 50)) + 1) + 1;
Thing thing6 = ThingGen.Create(treasureType switch
{
TreasureType.Map => "chest_treasure",public void OnBarter(bool reroll = false)
_ => "chest3",
});
thing6.c_lockedHard = true;
thing6.c_lockLv = num12;
thing6.c_priceAdd = 2000 + num12 * 250 * ((treasureType == TreasureType.RandomChest) ? 1 : 5);
thing6.c_lockLv = num13;
thing6.c_priceAdd = 2000 + num13 * 250 * ((treasureType == TreasureType.RandomChest) ? 1 : 5);
thing6.c_revealLock = true;
ThingGen.CreateTreasureContent(thing6, num12, treasureType, clearContent: true);
ThingGen.CreateTreasureContent(thing6, num13, treasureType, clearContent: true);
AddThing(thing6);
}
}public void OnBarter(bool reroll = false)
case ShopType.General:
case ShopType.Food:
{
for (int num15 = 0; num15 < (EClass.debug.enable ? 3 : 3); num15++)
for (int num16 = 0; num16 < (EClass.debug.enable ? 3 : 3); num16++)
{
if (EClass.rnd(3) == 0)
{public void OnBarter(bool reroll = false)
AddThing(ThingGen.CreatePotion(8791).SetNum(3 + EClass.rnd(3)));
AddThing(ThingGen.CreatePotion(8792).SetNum(3 + EClass.rnd(3)));
AddThing(ThingGen.CreatePotion(8794).SetNum(3 + EClass.rnd(3)));
Add("1341", EClass.rndHalf(5), 0);
break;
case "girl_blue":
Add("779", 1 + EClass.rnd(3), 0);public void OnBarter(bool reroll = false)
{
return;
}
int num16 = t.things.width * 10;
if (t.things.Count > num16)
int num17 = t.things.width * 10;
if (t.things.Count > num17)
{
int num17 = t.things.Count - num16;
for (int num18 = 0; num18 < num17; num18++)
int num18 = t.things.Count - num17;
for (int num19 = 0; num19 < num18; num19++)
{
t.things.LastItem().Destroy();
}TraitMerchantTravel
{
return base.ShopLv;
}
return EClass.pc.FameLv * 2 + 10;
return EClass.pc.FameLv + EClass.pc.FameLv / 2 + 10;
}
}