EA 23.286 Nightly
March 16, 2026
17 files modified. 2 new files created.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
Zone_EternalGarden (1)
public override void OnActivate() AI_Idle
public override IEnumerable<Status> Run()
}
if (EClass.rnd(owner.isSynced ? 10 : 2000) == 0 && owner.ability.Has(5058))
{
if (!owner.UseAbility(5058))
if (!owner.UseAbility(5058) && !owner.IsPCFaction)
{
owner.AddCondition<ConInsane>(10000);
owner.SetHostility(Hostility.Enemy);AI_OpenGambleChest
public override IEnumerable<Status> Run()
{
owner.PlaySound("money");
owner.PlayAnime(AnimeID.Jump);
Thing thing = ThingGen.Create("money").SetNum(EClass.rndHalf(50 * (100 + Mathf.Min(target.c_lockLv, 10000000) * 10)));
Thing thing = ThingGen.Create("money").SetNum(EClass.rndHalf(50 * (100 + Mathf.Min(target.c_lockLv * 10, 10000000))));
owner.Pick(thing, msg: false);
owner.Say("gambleChest_win", thing);
}ActEffect
void AddCon<T>(int rate, int power) where T : Condition
{
CC.PlaySound("clean_floor");
Msg.Say("exterminate");
List<Chara> list3 = EClass._map.charas.Where((Chara c) => c.isCopy && !c.IsPCFaction).ToList();
if (list3.Count == 0)
List<Chara> list2 = EClass._map.charas.Where((Chara c) => c.isCopy && !c.IsPCFaction).ToList();
if (list2.Count == 0)
{
Msg.SayNothingHappen();
return;
}
foreach (Chara item in list3)
foreach (Chara item in list2)
{
item.Say("split_fail", item);
item.PlayEffect("vanish");void AddCon<T>(int rate, int power) where T : Condition
{
return;
}
Thing thing2 = ThingGen.Create("mine");
thing2.c_idRefCard = "dog_mine";
Thing thing = ThingGen.Create("mine");
thing.c_idRefCard = "dog_mine";
Zone.ignoreSpawnAnime = true;
EClass._zone.AddCard(thing2, CC.pos).Install();
EClass._zone.AddCard(thing, CC.pos).Install();
break;
}
case EffectId.LittleSisterMigration:
case EffectId.SilverCatMigration:
{
bool flag3 = id == EffectId.SilverCatMigration;
if (!EClass.game.IsSurvival && ((flag3 && !(EClass._zone is Zone_EternalGarden)) || (!flag3 && !(EClass._zone is Zone_LittleGarden))))
bool flag6 = id == EffectId.SilverCatMigration;
if (!EClass.game.IsSurvival && ((flag6 && EClass._zone.id != "startVillage2") || (!flag6 && !(EClass._zone is Zone_LittleGarden))))
{
Msg.SayNothingHappen();
return;
}
List<Chara> list2 = new List<Chara>();
bool flag4 = false;
List<Chara> list3 = new List<Chara>();
bool flag7 = false;
foreach (Chara chara2 in EClass._map.charas)
{
if (!chara2.IsPCFactionOrMinion && chara2.id == (flag3 ? "cat_silver" : "littleOne"))
if (!chara2.IsPCFactionOrMinion && chara2.id == (flag6 ? "cat_silver" : "littleOne"))
{
if (flag4)
if (flag7)
{
flag4 = false;
flag7 = false;
continue;
}
list2.Add(chara2);
flag4 = true;
list3.Add(chara2);
flag7 = true;
}
}
if (list2.Count == 0)
if (list3.Count == 0)
{
Msg.SayNothingHappen();
return;
}
EClass.pc.PlaySound("chime_angel");
foreach (Chara item2 in list2)
foreach (Chara item2 in list3)
{
item2.PlayEffect("revive");
item2.Destroy();
}
Msg.Say(flag3 ? "cat_migration" : "little_migration", list2.Count.ToString() ?? "");
EClass._zone.ModInfluence(list2.Count);
if (flag3)
Msg.Say(flag6 ? "cat_migration" : "little_migration", list3.Count.ToString() ?? "");
EClass._zone.ModInfluence(list3.Count);
if (flag6)
{
EClass.player.stats.catDepart += list2.Count;
EClass.player.stats.catDepart += list3.Count;
}
else
{
EClass.player.stats.sistersDepart += list2.Count;
EClass.player.stats.sistersDepart += list3.Count;
}
break;
}void AddCon<T>(int rate, int power) where T : Condition
TC.PlaySound("curse3");
TC.PlayEffect("curse");
TC.Say("forgetItems", TC);
int num4 = power / 50 + 1 + EClass.rnd(3);
int num3 = power / 50 + 1 + EClass.rnd(3);
List<Thing> source = TC.things.List((Thing t) => t.c_IDTState == 0);
for (int j = 0; j < num4; j++)
for (int j = 0; j < num3; j++)
{
source.RandomItem().c_IDTState = 5;
}void AddCon<T>(int rate, int power) where T : Condition
case EffectId.EnchantArmorGreat:
{
bool armor = id == EffectId.EnchantArmor || id == EffectId.EnchantArmorGreat;
bool flag7 = id == EffectId.EnchantWeaponGreat || id == EffectId.EnchantArmorGreat;
bool flag4 = id == EffectId.EnchantWeaponGreat || id == EffectId.EnchantArmorGreat;
if (!tc.isThing)
{
LayerDragGrid.CreateEnchant(CC, armor, flag7, state);
LayerDragGrid.CreateEnchant(CC, armor, flag4, state);
return;
}
cc.PlaySound("identify");void AddCon<T>(int rate, int power) where T : Condition
tc.ModEncLv(-1);
break;
}
int num6 = (flag7 ? 4 : 2) + (blessed ? 1 : 0);
if (tc.encLV >= num6)
int num5 = (flag4 ? 4 : 2) + (blessed ? 1 : 0);
if (tc.encLV >= num5)
{
cc.Say("enc_resist", tc);
break;void AddCon<T>(int rate, int power) where T : Condition
case EffectId.Identify:
case EffectId.GreaterIdentify:
{
bool flag6 = id == EffectId.GreaterIdentify;
bool flag2 = id == EffectId.GreaterIdentify;
if (flag)
{
Redirect(EffectId.ForgetItems, flag6 ? BlessedState.Cursed : BlessedState.Normal, default(ActRef));
Redirect(EffectId.ForgetItems, flag2 ? BlessedState.Cursed : BlessedState.Normal, default(ActRef));
break;
}
if (!tc.isThing)
{
int count = ((!blessed) ? 1 : (flag6 ? (2 + EClass.rnd(2)) : (3 + EClass.rnd(3))));
LayerDragGrid.CreateIdentify(CC, flag6, state, 0, count);
int count = ((!blessed) ? 1 : (flag2 ? (2 + EClass.rnd(2)) : (3 + EClass.rnd(3))));
LayerDragGrid.CreateIdentify(CC, flag2, state, 0, count);
return;
}
cc.PlaySound("identify");
cc.PlayEffect("identify");
tc.Thing.Identify(cc.IsPCParty, (!flag6) ? IDTSource.Identify : IDTSource.SuperiorIdentify);
tc.Thing.Identify(cc.IsPCParty, (!flag2) ? IDTSource.Identify : IDTSource.SuperiorIdentify);
break;
}
case EffectId.Uncurse:void AddCon<T>(int rate, int power) where T : Condition
LayerDragGrid.CreateUncurse(CC, state);
return;
}
Thing thing = tc.Thing;
if (thing.blessedState == BlessedState.Cursed)
Thing thing3 = tc.Thing;
if (thing3.blessedState == BlessedState.Cursed)
{
thing.SetBlessedState(BlessedState.Normal);
thing3.SetBlessedState(BlessedState.Normal);
}
else if (thing.blessedState == BlessedState.Doomed)
else if (thing3.blessedState == BlessedState.Doomed)
{
thing.SetBlessedState(BlessedState.Normal);
thing3.SetBlessedState(BlessedState.Normal);
}
thing.GetRootCard()?.TryStack(thing);
LayerInventory.SetDirty(thing);
thing3.GetRootCard()?.TryStack(thing3);
LayerInventory.SetDirty(thing3);
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 num6 = (tc.isWeightChanged ? tc.c_weight : tc.Thing.source.weight);
tc.isWeightChanged = true;
Element orCreateElement = tc.elements.GetOrCreateElement(64);
Element orCreateElement2 = tc.elements.GetOrCreateElement(65);void AddCon<T>(int rate, int power) where T : Condition
bool flag5 = tc.IsEquipmentOrRangedOrAmmo || tc.IsThrownWeapon;
if (flag)
{
num3 = (int)(0.01f * (float)num3 * (float)power * 0.75f + 500f);
if (num3 < 0 || num3 > 10000000)
num6 = (int)(0.01f * (float)num6 * (float)power * 0.75f + 500f);
if (num6 < 0 || num6 > 10000000)
{
num3 = 10000000;
num6 = 10000000;
flag5 = false;
}
if (flag5)void AddCon<T>(int rate, int power) where T : Condition
}
else
{
num3 = num3 * (100 - power / 10) / 100;
num6 = num6 * (100 - power / 10) / 100;
if (blessed)
{
power /= 4;void AddCon<T>(int rate, int power) where T : Condition
}
cc.Say("lighten", tc);
}
tc.c_weight = num3;
tc.c_weight = num6;
tc.SetDirtyWeight();
if (tc.parent == null)
{void AddCon<T>(int rate, int power) where T : Condition
cc.PlayEffect("identify");
cc.Say("reconstruct", tc);
EClass.game.cards.uidNext += EClass.rnd(30);
int num5 = Mathf.Max(tc.genLv, tc.LV, EClass.player.stats.deepest);
int num4 = Mathf.Max(tc.genLv, tc.LV, EClass.player.stats.deepest);
CardBlueprint.Set(new CardBlueprint
{
blesstedState = state
});
Thing thing3 = ThingGen.Create(tc.id, -1, (int)((long)num5 * (long)power / 400));
thing3.genLv = num5;
Thing thing2 = ThingGen.Create(tc.id, -1, (int)((long)num4 * (long)power / 400));
thing2.genLv = num4;
if (tc.c_uidAttune != 0)
{
thing3.c_uidAttune = tc.c_uidAttune;
if (thing3.id == "amulet_engagement" || thing3.id == "ring_engagement")
thing2.c_uidAttune = tc.c_uidAttune;
if (thing2.id == "amulet_engagement" || thing2.id == "ring_engagement")
{
if (tc.c_uidAttune != EClass.pc.uid)
{
thing3.elements.ModBase(484, 3);
thing2.elements.ModBase(484, 3);
}
if (thing3.rarity < Rarity.Mythical)
if (thing2.rarity < Rarity.Mythical)
{
thing3.rarity = Rarity.Mythical;
thing2.rarity = Rarity.Mythical;
}
}
}
tc.Destroy();
CC.Pick(thing3, msg: false);
CC.Pick(thing2, msg: false);
if (!CC.IsPC)
{
CC.TryEquip(thing3);
CC.TryEquip(thing2);
}
break;
}void AddCon<T>(int rate, int power) where T : Condition
if (row == null)
{
bool num = id == EffectId.ChangeMaterialGreater;
bool flag2 = id == EffectId.ChangeMaterialLesser;
bool flag3 = id == EffectId.ChangeMaterialLesser;
string text2 = tc.Thing.source.tierGroup;
Dictionary<string, SourceMaterial.TierList> tierMap = SourceMaterial.tierMap;
int num2 = 1;void AddCon<T>(int rate, int power) where T : Condition
{
num2++;
}
if (flag2)
if (flag3)
{
num2 -= 2;
}void AddCon<T>(int rate, int power) where T : Condition
}
break;
}
case EffectId.ChangeRarity:
{
EClass.sources.materials.alias.TryGetValue(actRef.n1);
if (!tc.isThing)
{
LayerDragGrid.CreateChangeRarity(CC, actRef.refThing, id, state);
return;
}
if (tc.Num > 1)
{
tc = tc.Split(1);
}
string name2 = tc.Name;
cc.PlaySound("offering");
cc.PlayEffect("buff");
CardBlueprint.Set(new CardBlueprint
{
rarity = ((tc.rarity < Rarity.Legendary) ? Rarity.Legendary : Rarity.Mythical),
generation = CardBlueprint.Generation.GarokkHammer
});
tc.Destroy();
Rand.SetBaseSeed(tc.uid);
Rand.SetSeed(tc.uid);
tc = ThingGen.Create(tc.id, tc.idMaterial, tc.genLv);
Rand.SetSeed();
Rand.SetBaseSeed();
EClass._zone.AddCard(tc, cc.pos);
EClass.pc.Say("reconstruct", name2);
EClass.pc.Pick(tc.Thing, msg: false);
break;
}
case EffectId.ChangeAlias:
EClass.ui.AddLayer<LayerList>().SetStringList(delegate
{
List<string> list11 = new List<string>();
for (int num15 = 0; num15 < 10; num15++)
{
list11.Add(AliasGen.GetRandomAlias());
}
return list11;
}, delegate(int a, string b)
{
EClass.pc._alias = b;
EClass.pc.Say("reconstruct", EClass.pc);
SE.Change();
EClass.pc.PlayEffect("mutation");
}).SetSize()
.EnableReroll()
.SetTitles("wAlias");
break;
case EffectId.ChangeBiography:
EClass.pc.bio.RerollParents();
EClass.pc.Say("reconstruct", EClass.pc);
SE.Change();
EClass.pc.PlayEffect("mutation");
break;
case EffectId.ReturnVoid:
{
Zone_Void root = EClass.game.spatials.Find<Zone_Void>();void AddCon<T>(int rate, int power) where T : Condition
int currency = TC.GetCurrency();
if (currency > 0)
{
currency = Mathf.Clamp(EClass.rnd(currency / 10), 1, 100 + EClass.rndHalf(CC.LV * 200));
currency = Mathf.Clamp(EClass.rnd(currency / 10), 1, 100 + EClass.rndHalf(Mathf.Min(CC.LV, 1000000) * 200));
thing6 = ThingGen.Create("money").SetNum(currency);
TC.ModCurrency(-currency);
}Biography
public void RerollBio(Chara c, int ageIndex = 0, bool keepParent = false)
GenerateAppearance(c);
if (!keepParent)
{
GenerateDad();
GenerateMom();
idHome = RndBio("home");
idLoc = RndBio("loc");
RerollParents();
}
}
public void RerollParents()
{
GenerateDad();
GenerateMom();
idHome = RndBio("home");
idLoc = RndBio("loc");
}
public void GenerateBirthday(Chara c, int ageIndex = 0)
{
SourceRace.Row race = c.race;Card
public virtual int GetPrice(CurrencyType currency = CurrencyType.Money, bool sel
return LV / 8;
case "372":
return 3;
case "hammer_garokk":
return 100;
case "scroll_random":
if (refVal == 8288)
{CardBlueprint
public class CardBlueprint : EClass
public class CardBlueprint : EClass
{
public enum Generation
{
Default,
GarokkHammer
}
public int lv = -999;
public int qualityBonus;public class CardBlueprint : EClass
public bool isCraft;
public Generation generation;
public static CardBlueprint current;
public static CardBlueprint _Default = new CardBlueprint();Chara
public void RefreshSpeed(Element.BonusInfo info = null)
{
if (currentZone != EClass._zone)
{
dirtySpeed = true;
return;
}
if (ride != null && !ride.IsDeadOrSleeping)
{
ride.RefreshSpeed();public void RestockEquip(bool onCreate)
case "mad_rich":
if (onCreate)
{
int a = EClass.rndHalf(100 + (EClass.debug.enable ? 10 : EClass._zone.influence) * 50 + (int)Mathf.Sqrt(EClass._zone.DangerLv) * 100 + (int)Mathf.Sqrt(EClass.pc.FameLv) * 100 + EClass._zone.development * 10);
int a = (EClass._zone.IsUserZone ? 200 : EClass.rndHalf(100 + (EClass.debug.enable ? 10 : EClass._zone.influence) * 50 + (int)Mathf.Sqrt(EClass._zone.DangerLv) * 100 + (int)Mathf.Sqrt(EClass.pc.FameLv) * 100 + EClass._zone.development * 10));
ModCurrency(a);
}
break;
public void Slap(Chara c, bool slapToDeath = false)
{
if (id == "olderyoungersister")
{
Steam.GetAchievement(ID_Achievement.OYS);
}
PlaySound("whip");
Say("slap", this, c);
c.PlayAnime(AnimeID.Shiver);DramaManager
public void ParseLine(Dictionary<string, string> item)
case "getAchievement":
AddEvent(delegate
{
if (new string[1] { "ONEV" }.Contains(p2))
if (new string[2] { "ONEV", "NERUN2" }.Contains(p2))
{
Steam.GetAchievement(p2.ToEnum<ID_Achievement>());
}EffectId
GravityGun = 311,
TransBlood = 312,
Field = 313,
SilverCatMigration = 314
SilverCatMigration = 314,
ChangeRarity = 315,
ChangeAlias = 316,
ChangeBiography = 317
}FactionBranch
num5 = num6;
}
}
int num7 = (int)((isWealthy ? 50 : 10) + (long)member.LV * 2L) * num5 / 100 * num4 / 100;
int num7 = (int)(((isWealthy ? 50 : 10) + (long)member.LV * 2L) * num5 / 100 * num4 / 100);
if (isWealthy && num2 > 0)
{
num7 = num7 * (150 + (int)Mathf.Sqrt(num2) * 5) / 100;ID_Achievement
ONEV,
JURE,
BELL,
NERUN2
NERUN2,
OYS
}+InvOwnerChangeRarity
File Created
public class InvOwnerChangeRarity : InvOwnerEffect
{
public Thing consume;
public override bool CanTargetAlly => true;
public override string langTransfer => "invChangeRarity";
public override string langWhat => "changeMaterial_what";
public override Thing CreateDefaultContainer()
{
return ThingGen.Create("hammer_garokk");
}
public override bool ShouldShowGuide(Thing t)
{
if (t.IsEquipment && !t.IsUnique && !t.HasTag(CTAG.godArtifact))
{
return !t.IsLightsource;
}
return false;
}
public override void _OnProcess(Thing t)
{
ActEffect.Proc(idEffect, 100, state, t.GetRootCard(), t);
if (consume != null)
{
consume.ModNum(-1);
}
}
}LayerDragGrid
public static LayerDragGrid CreateChangeMaterial(Chara cc, Thing consume, Source
});
}
public static LayerDragGrid CreateChangeRarity(Chara cc, Thing consume, EffectId idEffect, BlessedState state = BlessedState.Normal, int price = 0, int count = 1)
{
return TryProc(cc, new InvOwnerChangeRarity
{
consume = consume,
state = state,
price = price,
count = count,
idEffect = idEffect
});
}
public static LayerDragGrid CreateUncurse(Chara cc, BlessedState state = BlessedState.Normal, int price = 0, int count = 1)
{
return TryProc(cc, new InvOwnerUncurseTrait
public void OnBarter(bool reroll = false)
{
break;
}
int num4 = 0;
int num7 = 0;
foreach (Thing thing10 in c_copyContainer.things)
{
if (!owner.trait.CanCopy(thing10))public void OnBarter(bool reroll = false)
{
thing5.elements.Remove(item.id);
}
int num5 = 1;
int num8 = 1;
switch (owner.trait.CopyShop)
{
case CopyShopType.Item:
{
num5 = (1000 + owner.c_invest * 100) / (thing5.GetPrice(CurrencyType.Money, sell: false, PriceType.CopyShop) + 50);
int[] array = new int[3] { 704, 703, 702 };
foreach (int ele in array)
num8 = (1000 + owner.c_invest * 100) / (thing5.GetPrice(CurrencyType.Money, sell: false, PriceType.CopyShop) + 50);
int[] array2 = new int[3] { 704, 703, 702 };
foreach (int ele in array2)
{
if (thing5.HasElement(ele))
{
num5 = 1;
num8 = 1;
}
}
break;public void OnBarter(bool reroll = false)
thing5.c_charges = thing10.c_charges;
break;
}
if (num5 > 1 && thing5.trait.CanStack)
if (num8 > 1 && thing5.trait.CanStack)
{
thing5.SetNum(num5);
thing5.SetNum(num8);
}
AddThing(thing5);
num4++;
if (num4 > owner.trait.NumCopyItem)
num7++;
if (num7 > owner.trait.NumCopyItem)
{
break;
}public void OnBarter(bool reroll = false)
break;
case ShopType.RedBook:
{
for (int num7 = 0; num7 < 30; num7++)
for (int k = 0; k < 30; k++)
{
AddThing(ThingGen.CreateFromFilter("shop_seeker"));
}
break;
}
case ShopType.KeeperOfGarden:
{
string[] array = new string[11]
{
"stone_defense", "1325", "1326", "1327", "1328", "1330", "1331", "1332", "1333", "1283",
"1268"
};
foreach (string id2 in array)
{
AddThing(ThingGen.Create(id2, MATERIAL.GetRandomMaterialFromCategory(50, "rock", EClass.sources.materials.alias["granite"]).id).SetNum(10));
}
Add("scroll_alias", 1, 0);
Add("scroll_biography", 1, 0);
Add("1329", 1, 0);
break;
}
case ShopType.Seed:
{
AddThing(TraitSeed.MakeSeed("rice")).SetNum(4 + EClass.rnd(4));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 num8 = 0; num8 < EClass.rnd(3) + 1; num8++)
for (int num9 = 0; num9 < EClass.rnd(3) + 1; num9++)
{
Add("462", 1, 0);
}
for (int num9 = 0; num9 < EClass.rnd(3) + 1; num9++)
for (int num10 = 0; num10 < EClass.rnd(3) + 1; num10++)
{
Add("1167", 1, 0);
}public void OnBarter(bool reroll = false)
break;
case ShopType.Influence:
{
bool num3 = owner.id == "big_sister";
TraitTicketFurniture.SetZone(num3 ? EClass.game.spatials.Find("little_garden") : EClass._zone, Add("ticket_furniture", 1, 0).SetNum(99));
if (num3)
bool num4 = owner.id == "big_sister";
TraitTicketFurniture.SetZone(num4 ? EClass.game.spatials.Find("little_garden") : EClass._zone, Add("ticket_furniture", 1, 0).SetNum(99));
if (num4)
{
Add("littleball", 10, 0);
if (!owner.Chara.affinity.CanGiveCard())public void OnBarter(bool reroll = false)
}
if (!reroll)
{
for (int l = 0; l < 20; l++)
for (int n = 0; n < 20; n++)
{
owner.Chara.ModExp(287, 1000);
}public void OnBarter(bool reroll = false)
AddThing(thing3);
break;
}
for (int m = 0; m < 10; m++)
for (int num5 = 0; num5 < 10; num5++)
{
Thing thing4 = ThingGen.Create(EClass._zone.IsFestival ? "1123" : ((EClass.rnd(3) == 0) ? "1169" : "1160"));
thing4.DyeRandom();public void OnBarter(bool reroll = false)
}
if (EClass._zone is Zone_Exile)
{
for (int n = 0; n < 30; n++)
for (int num6 = 0; num6 < 30; num6++)
{
Add("1235", 1, -1);
Add("1236", 1, -1);public void OnBarter(bool reroll = false)
AddThing(ThingGen.CreatePerfume(9501, 5));
AddThing(ThingGen.CreatePerfume(9502, 5));
AddThing(ThingGen.CreatePerfume(9503, 5));
for (int k = 0; k < 5; k++)
for (int l = 0; l < 5; l++)
{
Thing thing2 = ThingGen.CreateFromCategory("seasoning").SetNum(10);
thing2.elements.SetBase(2, 40);public void OnBarter(bool reroll = false)
break;
}
case ShopType.Medal:
NoRestockId("sword_dragon");
NoRestockId("hammer_garokk", 3);
NoRestockId("sword_dragon", 1);
Add("sword_dragon", 1, 0).SetReplica(on: true);
NoRestockId("point_stick");
NoRestockId("point_stick", 1);
Add("point_stick", 1, 0).SetReplica(on: true);
NoRestockId("blunt_bonehammer");
NoRestockId("blunt_bonehammer", 1);
Add("blunt_bonehammer", 1, 0).SetReplica(on: true);
NoRestockId("pole_gunlance");
NoRestockId("pole_gunlance", 1);
Add("pole_gunlance", 1, 0).SetReplica(on: true);
NoRestockId("sword_muramasa");
NoRestockId("sword_muramasa", 1);
Add("sword_muramasa", 1, 0).SetReplica(on: true);
NoRestockId("sword_forgetmenot");
NoRestockId("sword_forgetmenot", 1);
Add("sword_forgetmenot", 1, 0).SetReplica(on: true);
NoRestockId("dagger_fish");
NoRestockId("dagger_fish", 1);
Add("dagger_fish", 1, 0).SetReplica(on: true);
NoRestockId("sword_zephir");
NoRestockId("sword_zephir", 1);
Add("sword_zephir", 1, 0).SetReplica(on: true);
Add("ribbon", 1, 0);
Add("helm_sage", 1, 0);public void OnBarter(bool reroll = false)
break;
default:
{
float num = (float)(3 + Mathf.Min(ShopLv / 5, 10)) + Mathf.Sqrt(ShopLv);
int num2 = 300;
float num2 = (float)(3 + Mathf.Min(ShopLv / 5, 10)) + Mathf.Sqrt(ShopLv);
int num3 = 300;
switch (ShopType)
{
case ShopType.Ecopo:
num2 = 30;
num3 = 30;
break;
case ShopType.StrangeGirl:
num2 = 50;
num3 = 50;
break;
}
num = num * (float)(100 + EClass.pc.Evalue(1406) * 5) / 100f;
num = Mathf.Min(num, num2);
for (int j = 0; (float)j < num; j++)
num2 = num2 * (float)(100 + EClass.pc.Evalue(1406) * 5) / 100f;
num2 = Mathf.Min(num2, num3);
for (int j = 0; (float)j < num2; j++)
{
Thing thing = CreateStock();
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)public void OnBarter(bool reroll = false)
{
continue;
}
string[] recipeKey = item3.row.recipeKey;
for (int num6 = 0; num6 < recipeKey.Length; num6++)
string[] array = item3.row.recipeKey;
for (int m = 0; m < array.Length; m++)
{
if (recipeKey[num6] == ShopType.ToString())
if (array[m] == ShopType.ToString())
{
NoRestock(ThingGen.CreateRecipe(item3.id));
break;public void OnBarter(bool reroll = false)
}
break;
}
case ShopType.KeeperOfGarden:
Add("1329", 1, 0);
break;
case ShopType.StrangeGirl:
{
int num12 = (EClass.debug.enable ? 20 : (EClass._zone.development / 10));
if (num12 > 0)
int num14 = (EClass.debug.enable ? 20 : (EClass._zone.development / 10));
if (num14 > 0)
{
Add("syringe_gene", num12, 0);
Add("syringe_gene", num14, 0);
Add("diary_little", 1, 0);
}
if (num12 > 10)
if (num14 > 10)
{
Add("syringe_heaven", num12 / 5, 0);
Add("syringe_heaven", num14 / 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 num10 = 0; num10 < 3; num10++)
for (int num11 = 0; num11 < 3; num11++)
{
if (EClass.rnd(5) == 0)
{
TreasureType treasureType = ((EClass.rnd(10) == 0) ? TreasureType.BossNefia : ((EClass.rnd(10) == 0) ? TreasureType.Map : TreasureType.RandomChest));
int num11 = EClass.rnd(EClass.rnd(ShopLv + (EClass.debug.enable ? 200 : 50)) + 1) + 1;
int num12 = 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 = num11;
thing6.c_priceAdd = 2000 + num11 * 250 * ((treasureType == TreasureType.RandomChest) ? 1 : 5);
thing6.c_lockLv = num12;
thing6.c_priceAdd = 2000 + num12 * 250 * ((treasureType == TreasureType.RandomChest) ? 1 : 5);
thing6.c_revealLock = true;
ThingGen.CreateTreasureContent(thing6, num11, treasureType, clearContent: true);
ThingGen.CreateTreasureContent(thing6, num12, treasureType, clearContent: true);
AddThing(thing6);
}
}public void OnBarter(bool reroll = false)
case ShopType.General:
case ShopType.Food:
{
for (int num14 = 0; num14 < (EClass.debug.enable ? 3 : 3); num14++)
for (int num15 = 0; num15 < (EClass.debug.enable ? 3 : 3); num15++)
{
if (EClass.rnd(3) == 0)
{public void OnBarter(bool reroll = false)
{
return;
}
int num15 = t.things.width * 10;
if (t.things.Count > num15)
int num16 = t.things.width * 10;
if (t.things.Count > num16)
{
int num16 = t.things.Count - num15;
for (int num17 = 0; num17 < num16; num17++)
int num17 = t.things.Count - num16;
for (int num18 = 0; num18 < num17; num18++)
{
t.things.LastItem().Destroy();
} AddThing(_t);
}
}
void NoRestockId(string _id)
void NoRestockId(string _id, int num)
{
NoRestock(ThingGen.Create(_id));
NoRestock(ThingGen.Create(_id).SetNum(num));
}
} }
return FromFilter("shop_drink");
case ShopType.Furniture:
case ShopType.KeeperOfGarden:
return FromFilter("shop_furniture");
case ShopType.Book:
return FromFilter("shop_book");+TraitGarokkHammer
File Created
public class TraitGarokkHammer : TraitItem
{
public override bool OnUse(Chara c)
{
ActEffect.Proc(EffectId.ChangeRarity, EClass.pc, null, 100, new ActRef
{
n1 = owner.material.alias,
refThing = owner.Thing
});
return true;
}
}TraitKeeperOfGarden
public override ShopType ShopType
{
get
{
if (!(EClass._zone is Zone_EternalGarden) && !EClass.game.IsSurvival)
if (!(EClass._zone.id == "startVillage2") && !EClass.game.IsSurvival)
{
return ShopType.None;
}TraitScrollStatic
public override SourceElement.Row source
public virtual EffectId idEffect => owner.sourceCard.vals[1].ToEnum<EffectId>();
public virtual int Power => int.Parse(owner.sourceCard.vals[2]);
public virtual int Power
{
get
{
if (owner.sourceCard.vals.Length <= 2)
{
return 100;
}
return int.Parse(owner.sourceCard.vals[2]);
}
}
public virtual string AliasEle => owner.sourceCard.vals.TryGet(3, returnNull: true);Zone
public virtual void OnRegenerate()
public virtual void OnActivate()
{
if (!(id == "startVillage2"))
{
return;
}
if (EClass._map.version.IsBelow(0, 23, 226))
{
SetBGM(121, refresh: false);
}
int num = 0;
foreach (Chara chara in EClass._map.charas)
{
if (chara.id == "cat_silver" && !chara.IsPCFaction)
{
num++;
}
}
if (num > 0)
{
Msg.Say("num_silvercat", num.ToString() ?? "");
}
}
public virtual void OnBeforeDeactivate()Zone_EternalGarden
public class Zone_EternalGarden : Zone_Civilized
public class Zone_EternalGarden : Zone_Civilized
{
public override void OnActivate()
{
base.OnActivate();
if (EClass._map.version.IsBelow(0, 23, 226))
{
SetBGM(121, refresh: false);
}
int num = 0;
foreach (Chara chara in EClass._map.charas)
{
if (chara.id == "cat_silver" && !chara.IsPCFaction)
{
num++;
}
}
if (num > 0)
{
Msg.Say("num_silvercat", num.ToString() ?? "");
}
}
}