EA 23.290 Nightly
April 2, 2026
15 files modified. 1 new file created.
Important Changes
None.
AI_Fuck
public override IEnumerable<Status> Run()
{
yield return DoGoto(target.pos, destDist, ignoreConnection: true);
}
cc.Say((variation == Variation.Slime) ? "slime_start" : ((variation == Variation.Bloodsuck) ? "suck_start" : (Type.ToString() + "_start")), cc, tc);
cc.Say((this.variation == Variation.Slime) ? "slime_start" : ((this.variation == Variation.Bloodsuck) ? "suck_start" : (Type.ToString() + "_start")), cc, tc);
isFail = () => !tc.IsAliveInCurrentZone || tc.Dist(owner) > 3;
if (Type == FuckType.tame)
{
cc.SetTempHand(1104, -1);
}
maxProgress = ((variation == Variation.NTR || variation == Variation.Bloodsuck) ? 10 : 25);
switch (variation)
maxProgress = ((this.variation == Variation.NTR || this.variation == Variation.Bloodsuck) ? 10 : 25);
Variation variation = this.variation;
if ((uint)(variation - 3) <= 2u)
{
maxProgress = maxProgress * 100 / (100 + owner.Evalue(1664) * 50);
}
switch (this.variation)
{
case Variation.Succubus:
cc.Talk("seduce");public override IEnumerable<Status> Run()
switch (Type)
{
case FuckType.fuck:
if (variation == Variation.NTR)
if (this.variation == Variation.NTR)
{
cc.Say("ntr", cc, tc);
}public override IEnumerable<Status> Run()
{
((EClass.rnd(2) == 0) ? cc : tc).PlayEffect("love2");
}
if (variation == Variation.Slime)
if (this.variation == Variation.Slime)
{
owner.DoHostileAction(target);
}
if (EClass.rnd(3) == 0 || sell)
{
if (variation == Variation.Slime)
if (this.variation == Variation.Slime)
{
target.AddCondition<ConSupress>(200, force: true);
}public override IEnumerable<Status> Run()
target.AddCondition<ConWait>(50, force: true);
}
}
if (variation == Variation.Bloodsuck || variation == Variation.Slime)
if (this.variation == Variation.Bloodsuck || this.variation == Variation.Slime)
{
owner.pos.TryWitnessCrime(cc, tc, 4, (Chara c) => EClass.rnd(cc.HasCondition<ConTransmuteBat>() ? 50 : 20) == 0);
}Card
public void SpawnLoot(Card origin)
num5 = Mathf.Max(1, num5 * (50 + EClass.game.principal.dropRateMtp * 50) / 100);
}
List<Thing> list2 = new List<Thing>();
foreach (Thing thing4 in things)
foreach (Thing thing6 in things)
{
if (thing4.HasTag(CTAG.gift) || thing4.trait is TraitChestMerchant)
if (thing6.HasTag(CTAG.gift) || thing6.trait is TraitChestMerchant)
{
continue;
}
if (thing4.isGifted || thing4.rarity >= Rarity.Artifact || thing4.trait.DropChance > EClass.rndf(1f))
if (thing6.isGifted || thing6.rarity >= Rarity.Artifact || thing6.trait.DropChance > EClass.rndf(1f))
{
list.Add(thing4);
list.Add(thing6);
}
else if (thing4.IsEquipmentOrRanged)
else if (thing6.IsEquipmentOrRanged)
{
if (thing4.rarity >= Rarity.Legendary)
if (thing6.rarity >= Rarity.Legendary)
{
list2.Add(thing4);
list2.Add(thing6);
}
else if (EClass.rnd(100) == 0)
{
list.Add(thing4);
list.Add(thing6);
}
}
else if (EClass.rnd(5) == 0)
{
list.Add(thing4);
list.Add(thing6);
}
}
if (num5 > 0 && list2.Count > 0)public void SpawnLoot(Card origin)
}
}
}
if (trait is TraitMerchantTravel)
{
trait.OnBarter();
Thing thing4 = things.Find<TraitChestMerchant>();
if (thing4 != null)
{
Rand.SetSeed(uid);
int num8 = 1 + EClass.rnd(3);
List<Thing> list3 = thing4.things.ToList();
if (trait is TraitMerchantTravel2)
{
list3.Shuffle();
}
else
{
list3.Sort((Thing a, Thing b) => b.GetValue() - a.GetValue());
}
Rand.SetSeed();
while (num8 > 0 && list3.Count != 0)
{
Thing thing5 = list3.First();
list3.Remove(thing5);
if (!thing5.IsUnique)
{
list.Add(thing5);
num8--;
}
}
}
}
}
}
foreach (Thing thing5 in things)
foreach (Thing thing7 in things)
{
if (thing5.GetInt(116) != 0)
if (thing7.GetInt(116) != 0)
{
list.Add(thing5);
list.Add(thing7);
}
}
Point nearestPoint = GetRootCard().pos;public virtual int GetPrice(CurrencyType currency = CurrencyType.Money, bool sel
return 8;
case "1329":
return 20;
case "statue_lulu":
case "statue_jure":
case "statue_ehe":
return 100;
}
break;
case CurrencyType.Money2:
if (id == "water_jure")
{
return 1000;
}
break;
case CurrencyType.Ecopo:DOMAIN
public const int domWind = 807;
public const int domEyth = 814;
public const int domHarmony = 815;
public const int domMachine = 809;
public const int domOblivion = 813;
public const int domHarmony = 815;
public const int domEyth = 814;
public const int domHarvest = 808;
public static readonly int[] IDS = new int[16]
{
800, 806, 801, 802, 803, 804, 805, 807, 814, 809,
810, 811, 812, 813, 815, 808
800, 806, 801, 802, 803, 804, 805, 807, 815, 809,
810, 811, 812, 813, 814, 808
};
}
public class Domain : EClassDramaCustomSequence
Choice2("daGuide", "_Guide");
}
}
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 (!EClass._zone.IsUserZone)
{
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 is TraitMerchantTravel && !c.IsPCFactionOrMinion)
{
Choice2("daRob", "_rob");
}
}
if (c.trait.SlaverType != 0)
{
Choice2(c.trait.TextNextRestockPet, "_buySlave").DisableSound(); });
Choice("no", StepDefault, cancel: true).SetOnClick(RumorChill);
}, null, StepDefault);
Step("_rob");
Method(delegate
{
TempTalkTopic("rob1", StepDefault);
Choice("yes_rob", delegate
{
sequence.Exit();
c.Talk("callGuards");
foreach (Chara chara in EClass._map.charas)
{
if (chara == c || chara.master == c)
{
chara.SetHostility(Hostility.Enemy);
chara.DoHostileAction(EClass.pc.party.members.RandomItem());
}
}
if (!EClass._zone.IsPCFaction && EClass._zone is Zone_Field)
{
EClass._zone.SetBGM(102);
}
EClass.player.ModKarma(1);
});
Choice("no_rob", StepDefault, cancel: true).SetOnClick(RumorChill);
}, null, StepDefault);
Step("_news");
Method(delegate
{ELEMENT
public void _WriteNote(UINote n, Chara c, Act act)
}
else
{
string text3 = text2.Replace("#calc", Calc());
string text3 = text2.Replace("#calc", Calc()).Replace(";", ",");
if (!source.aliasRef.IsEmpty())
{
text3 = text3.Replace("#ele", EClass.sources.elements.alias[source.aliasRef].GetName().ToLower());FACTION
public const int bfSea = 3605;
public const int bfCave = 3500;
public const int bfFertile = 3700;
public const int bfGeyser = 3701;
public const int bfTranquil = 3703;
public const int bfVolcano = 3704;
public const int bfUndersea = 3606;
public const int bfHunt = 3705;
public const int bfFish = 3706;
public const int bfBreed = 3710;
public const int bfHunt = 3705;
public const int actBuildInspect = 4006;
public const int bfFreshAir = 3708;
public const int actBuildRecipe = 4005;
public const int bfMonster = 3707;
public const int actBuildCollect = 4004;
public const int actBuildMine = 4001;
public const int actBuildAnywhere = 4003;
public const int actBuildTerrain = 4002;
public const int bfCave = 3500;
public const int actBuildCollect = 4004;
public const int actBuildMine = 4001;
public const int actBuildRecipe = 4005;
public const int bfMonster = 3707;
public const int actBuildInspect = 4006;
public const int bfFreshAir = 3708;
public const int actBuildAnywhere = 4003;
public const int bfVolcano = 3704;
public static readonly int[] IDS = new int[53]
{
2205, 4000, 3900, 3805, 3804, 3800, 3802, 3801, 2003, 3784,
3803, 2115, 2120, 2117, 2118, 2119, 2207, 2200, 2201, 2202,
2206, 3783, 2203, 2204, 2116, 3782, 3709, 3780, 3781, 3600,
3601, 3602, 3603, 3604, 3605, 3700, 3701, 3702, 3703, 3704,
3606, 3706, 3710, 3705, 3708, 3707, 4001, 4002, 3500, 4004,
4005, 4006, 4003
3601, 3602, 3603, 3604, 3605, 3500, 3700, 3701, 3702, 3703,
3606, 3705, 3706, 3710, 4006, 4005, 4004, 4003, 4002, 4001,
3707, 3708, 3704
};
}
public class Faction : EClassFEAT
public class FEAT
{
public const int featEND = 1622;
public const int featHardy = 1630;
public const int featLER = 1624;
public const int featSPD = 1629;
public const int featMAG = 1625;
public const int featLuck = 1628;
public const int featWIL = 1626;
public const int featCHA = 1627;
public const int featWIL = 1626;
public const int featEvade = 1632;
public const int featMAG = 1625;
public const int featSPD = 1629;
public const int featLER = 1624;
public const int featHardy = 1630;
public const int featPER = 1623;
public const int featDefense = 1631;
public const int featEvade = 1632;
public const int featSpotting = 1633;
public const int featDefense = 1631;
public const int featLuck = 1628;
public const int featExecutioner = 1420;
public const int featPER = 1623;
public const int featManaMeat = 1421;
public const int featDEX = 1621;
public const int featSTR = 1620;
public const int featHealer = 1422;
public const int featManaMeat = 1421;
public const int featNegotiate = 1634;
public const int featSpotting = 1633;
public const int featExecutioner = 1420;
public const int featMilitant = 1419;
public const int featSwordsage = 1418;
public const int featDEX = 1621;
public const int featEND = 1622;
public const int featNegotiate = 1634;
public const int featMartial = 1635;
public const int featGourmet = 1650;
public const int featMagicManner = 1651;
public const int featFaith = 1636;
public const int featAnimalLover = 1640;
public const int featWitch = 1417;
public const int featSwordsage = 1418;
public const int featComat = 1750;
public const int featFastFucker = 1664;
public const int featFastEater = 1663;
public const int featGoldenFinger = 1662;
public const int featRapidArrow = 1652;
public const int featMagicManner = 1651;
public const int featGourmet = 1650;
public const int featDefender = 1649;
public const int featResCurse = 1641;
public const int featAnimalLover = 1640;
public const int featMartial = 1635;
public const int featFaith = 1636;
public const int featInquisitor = 1416;
public const int featWitch = 1417;
public const int featSevenSense = 1245;
public const int featPegasus = 1246;
public const int featWhiteVixen = 1414;
public const int featFoxMaid = 1415;
public const int featCosmicHorror = 1233;
public const int featCentaur = 1244;
public const int featPegasus = 1246;
public const int featSevenSense = 1245;
public const int featBaby = 1232;
public const int featAshborn = 1251;
public const int featFoxMaid = 1415;
public const int featAquatic = 1252;
public const int featGoodKarma = 1270;
public const int featInquisitor = 1416;
public const int featBadKarma = 1271;
public const int featGod_wind1 = 1310;
public const int featAquatic = 1252;
public const int featGoodKarma = 1270;
public const int featGod_healing1 = 1320;
public const int featWhiteVixen = 1414;
public const int featFairysan = 1413;
public const int featLuckyCat = 1412;
public const int featTourist = 1406;
public const int featPianist = 1405;
public const int featGod_machine1 = 1315;
public const int featPianist = 1405;
public const int featArcher = 1404;
public const int featFarmer = 1403;
public const int featWizard = 1402;
public const int featThief = 1401;
public const int featGod_harvest1 = 1325;
public const int featFarmer = 1403;
public static readonly int[] IDS = new int[145]
public static readonly int[] IDS = new int[146]
{
1622, 1630, 1629, 1628, 1627, 1626, 1625, 1624, 1623, 1632,
1631, 1420, 1620, 1612, 1611, 1610, 1426, 1425, 1424, 1423,
1422, 1421, 1633, 1419, 1418, 1621, 1634, 1650, 1636, 1417,
1750, 1663, 1662, 1661, 1660, 1659, 1658, 1657, 1656, 1655,
1654, 1653, 1652, 1651, 1649, 1648, 1647, 1646, 1645, 1644,
1643, 1642, 1641, 1640, 1635, 1416, 1245, 1414, 1233, 1234,
1624, 1625, 1626, 1627, 1632, 1629, 1630, 1631, 1633, 1628,
1623, 1421, 1621, 1620, 1612, 1611, 1610, 1426, 1425, 1424,
1423, 1422, 1634, 1420, 1419, 1622, 1635, 1651, 1640, 1418,
1750, 1664, 1663, 1662, 1661, 1660, 1659, 1658, 1657, 1656,
1655, 1654, 1653, 1652, 1650, 1649, 1648, 1647, 1646, 1645,
1644, 1643, 1642, 1641, 1636, 1417, 1246, 1415, 1233, 1234,
1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244,
1246, 1232, 1247, 1249, 1250, 1251, 1415, 1270, 1271, 1272,
1245, 1232, 1247, 1249, 1250, 1251, 1252, 1416, 1271, 1272,
1273, 1274, 1275, 1276, 1290, 1300, 1248, 1231, 1230, 1229,
1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209,
1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219,
1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1305,
1310, 1252, 1320, 1413, 1412, 1411, 1410, 1409, 1408, 1407,
1406, 1405, 1315, 1404, 1402, 1401, 1400, 1355, 1350, 1345,
1340, 1335, 1330, 1325, 1403
1310, 1270, 1320, 1414, 1413, 1412, 1411, 1410, 1409, 1408,
1407, 1406, 1315, 1405, 1404, 1403, 1402, 1401, 1400, 1355,
1350, 1345, 1340, 1335, 1330, 1325
};
}
public class Feat : Elementpublic List<string> Apply(int a, ElementContainer owner, bool hint = false)
foreach (string obj in array2)
{
string text3 = featRef[num3];
string text4 = obj;
string text4 = obj.Replace(";", ",");
if (text3.ToInt() < 0)
{
text4 = text4.Replace("+#1", text3);FOOD
public const int food_god = 758;
public const int food_undead = 709;
public const int food_human = 708;
public const int food_blood = 710;
public const int kirimi = 707;
public const int food_human = 708;
public const int food_undead = 709;
public const int gainWeight = 705;
public static readonly int[] IDS = new int[14]
{
764, 758, 709, 710, 700, 757, 702, 703, 704, 701,
706, 707, 708, 705
764, 758, 708, 710, 700, 757, 702, 703, 704, 701,
706, 707, 709, 705
};
}MUTATION
public class MUTATION
{
public const int mutationRegen = 1516;
public const int mutationSkin = 1510;
public const int mutationSkinN = 1511;
public const int mutationDexN = 1515;
public const int mutationRegen = 1516;
public const int mutationRegenN = 1517;
public const int mutationStr = 1520;
public static readonly int[] IDS = new int[40]
{
1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1520, 1519,
1516, 1510, 1511, 1512, 1513, 1514, 1515, 1517, 1520, 1519,
1565, 1564, 1563, 1562, 1561, 1560, 1559, 1558, 1557, 1556,
1555, 1518, 1553, 1552, 1554, 1524, 1521, 1522, 1523, 1551,
1525, 1526, 1527, 1529, 1530, 1531, 1532, 1533, 1550, 1528Region
public override void OnAdvanceHour()
}
}
}
if (ListMobs().Count >= (EClass.debug.enable ? 100 : 6) || EClass.rnd(3) != 0)
if (ListMobs().Count >= (EClass.debug.enable ? 100 : 6) || EClass.rnd(EClass.debug.enable ? 1 : 3) != 0)
{
return;
}public override void OnAdvanceHour()
BiomeProfile biome = regionPoint.biome;
SpawnList list = ((biome.spawn.chara.Count <= 0) ? SpawnList.Get(biome.name, "chara", new CharaFilter
{
ShouldPass = (SourceChara.Row s) => s.biome == biome.name || s.biome.IsEmpty()
}) : SpawnList.Get(biome.spawn.GetRandomCharaId()));
ShouldPass = (SourceChara.Row s) => s.quality < 3 && (s.biome == biome.name || s.biome.IsEmpty())
}) : SpawnList.Get(biome.spawn.GetRandomCharaId(), null, new CharaFilter
{
ShouldPass = (SourceChara.Row s) => s.quality < 3
}));
Chara chara = null;
chara = ((EClass.rnd(EClass.debug.enable ? 2 : 50) != 0) ? CharaGen.CreateFromFilter(list, regionPoint.dangerLv) : CharaGen.Create("merchant_travel"));
chara = ((EClass.rnd(EClass.debug.enable ? 5 : 50) != 0) ? CharaGen.CreateFromFilter(list, regionPoint.dangerLv) : CharaGen.Create((EClass.rnd(5) == 0) ? "merchant_travel" : "merchant_travel2"));
if (chara != null && !(chara.trait is TraitUniqueMonster))
{
AddCard(chara, randomPoint);ShopType
Moyer,
Curry,
KeeperOfGarden,
TravelMerchant
TravelMerchant,
TravelMerchant2
}Trait
public void OnBarter(bool reroll = false)
owner.AddThing(t);
}
t.c_lockLv = 0;
if (!EClass.world.date.IsExpired(owner.c_dateStockExpire))
if (!EClass.world.date.IsExpired(owner.c_dateStockExpire) || (RestockDay < 0 && owner.isRestocking))
{
return;
}public void OnBarter(bool reroll = false)
{
break;
}
int num7 = 0;
int num4 = 0;
foreach (Thing thing10 in c_copyContainer.things)
{
if (!owner.trait.CanCopy(thing10))
{
continue;
}
Thing thing5 = thing10.Duplicate(1);
thing5.isStolen = false;
thing5.isCopy = true;
thing5.c_priceFix = 0;
foreach (Element item in thing5.elements.dict.Values.Where((Element e) => e.HasTag("noInherit")).ToList())
Thing thing2 = thing10.Duplicate(1);
thing2.isStolen = false;
thing2.isCopy = true;
thing2.c_priceFix = 0;
foreach (Element item in thing2.elements.dict.Values.Where((Element e) => e.HasTag("noInherit")).ToList())
{
thing5.elements.Remove(item.id);
thing2.elements.Remove(item.id);
}
int num8 = 1;
int num5 = 1;
switch (owner.trait.CopyShop)
{
case CopyShopType.Item:
{
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)
num5 = (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 (thing5.HasElement(ele))
if (thing2.HasElement(ele))
{
num8 = 1;
num5 = 1;
}
}
break;
}
case CopyShopType.Spellbook:
thing5.c_charges = thing10.c_charges;
thing2.c_charges = thing10.c_charges;
break;
}
if (num8 > 1 && thing5.trait.CanStack)
if (num5 > 1 && thing2.trait.CanStack)
{
thing5.SetNum(num8);
thing2.SetNum(num5);
}
AddThing(thing5);
num7++;
if (num7 > owner.trait.NumCopyItem)
AddThing(thing2);
num4++;
if (num4 > owner.trait.NumCopyItem)
{
break;
}public void OnBarter(bool reroll = false)
break;
case ShopType.RedBook:
{
for (int k = 0; k < 30; k++)
for (int num8 = 0; num8 < 30; num8++)
{
AddThing(ThingGen.CreateFromFilter("shop_seeker"));
}
break;
}
case ShopType.TravelMerchant2:
Add("tool_talisman", 1, 0);
Add("camera", 1, 0);
Add("dreambug", 10, 0);
Add("mathammer", 1, 0);
Add("unicorn_horn", 1, 0);
Add("core_user", 1, 0);
Add("generator_hamster1", 1, 0);
Add("generator_hamster2", 1, 0);
Add("generator_solar", 1, 0);
Add("generator_wind", 1, 0);
Add("curtainL", 1, 0);
Add("censored_item", 1, 0);
Add("block_strawberry", 10, 0);
Add("block_cream", 10, 0);
Add("block_mango", 10, 0);
Add("block_cherry", 10, 0);
Add("block_chocoplate", 10, 0);
Add("block_banana", 10, 0);
Add("block_mousse", 10, 0);
Add("block_melon", 10, 0);
Add("block_kiwi", 10, 0);
Add("block_peach", 10, 0);
Add("water", 1, 0);
if (EClass.rndSeed(EClass.debug.enable ? 1 : 5, owner.uid) == 0)
{
Add("hammer_garokk", 1, 0);
}
if (EClass.rndSeed(EClass.debug.enable ? 1 : 100, owner.uid) == 0)
{
Add("water_jure", 1, 0);
}
break;
case ShopType.KeeperOfGarden:
{
string[] array = new string[11]
string[] array2 = new string[11]
{
"stone_defense", "1325", "1326", "1327", "1328", "1330", "1331", "1332", "1333", "1283",
"1268"
};
foreach (string id2 in array)
foreach (string id2 in array2)
{
AddThing(ThingGen.Create(id2, MATERIAL.GetRandomMaterialFromCategory(50, "rock", EClass.sources.materials.alias["granite"]).id).SetNum(99));
}public void OnBarter(bool reroll = false)
Add("scroll_alias", 99, 0);
Add("scroll_biography", 99, 0);
Add("1329", 1, 0);
Add("statue_lulu", 1, 0);
Add("statue_jure", 1, 0);
Add("statue_ehe", 1, 0);
break;
}
case ShopType.Seed:public void OnBarter(bool reroll = false)
break;
case ShopType.Influence:
{
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)
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)
{
Add("littleball", 10, 0);
if (!owner.Chara.affinity.CanGiveCard())public void OnBarter(bool reroll = false)
}
if (!reroll)
{
for (int n = 0; n < 20; n++)
for (int m = 0; m < 20; m++)
{
owner.Chara.ModExp(287, 1000);
}
}
Thing thing3 = CraftUtil.MakeLoveLunch(owner.Chara);
thing3.elements.SetBase(1229, 1);
AddThing(thing3);
Thing thing4 = CraftUtil.MakeLoveLunch(owner.Chara);
thing4.elements.SetBase(1229, 1);
AddThing(thing4);
break;
}
for (int num5 = 0; num5 < 10; num5++)
for (int n = 0; n < 10; n++)
{
Thing thing4 = ThingGen.Create(EClass._zone.IsFestival ? "1123" : ((EClass.rnd(3) == 0) ? "1169" : "1160"));
thing4.DyeRandom();
AddThing(thing4);
Thing thing5 = ThingGen.Create(EClass._zone.IsFestival ? "1123" : ((EClass.rnd(3) == 0) ? "1169" : "1160"));
thing5.DyeRandom();
AddThing(thing5);
}
if (EClass._zone is Zone_Exile)
{
for (int num6 = 0; num6 < 30; num6++)
for (int num7 = 0; num7 < 30; num7++)
{
Add("1235", 1, -1);
Add("1236", 1, -1);public void OnBarter(bool reroll = false)
AddThing(ThingGen.CreatePerfume(9503, 5));
for (int l = 0; l < 5; l++)
{
Thing thing2 = ThingGen.CreateFromCategory("seasoning").SetNum(10);
thing2.elements.SetBase(2, 40);
thing2.c_priceFix = 1000;
AddThing(thing2);
Thing thing3 = ThingGen.CreateFromCategory("seasoning").SetNum(10);
thing3.elements.SetBase(2, 40);
thing3.c_priceFix = 1000;
AddThing(thing3);
}
break;
}public void OnBarter(bool reroll = false)
num3 = 50;
break;
case ShopType.TravelMerchant:
case ShopType.TravelMerchant2:
num2 /= 3f;
num3 = 30;
break;public void OnBarter(bool reroll = false)
{
continue;
}
string[] array = item3.row.recipeKey;
for (int m = 0; m < array.Length; m++)
string[] array2 = item3.row.recipeKey;
for (int k = 0; k < array2.Length; k++)
{
if (array[m] == ShopType.ToString())
if (array2[k] == ShopType.ToString())
{
NoRestock(ThingGen.CreateRecipe(item3.id));
break;TraitMerchantTravel
{
get
{
if (!base.owner.IsPCFactionOrMinion)
if (!base.owner.IsPCFactionOrMinion && !EClass._zone.IsPCFactionOrTent)
{
return base.owner.LV;
}+TraitMerchantTravel2
File Created
public class TraitMerchantTravel2 : TraitMerchantTravel
{
public override CurrencyType CurrencyType => CurrencyType.Money2;
public override ShopType ShopType => ShopType.TravelMerchant2;
public override int CostRerollShop => 0;
public override int RestockDay => -1;
}WidgetMouseover
}
else if (card != null)
{
text = card.GetHoverText();
if (roster == null)
if (EMono._zone.IsRegion && !card.IsPCFactionOrMinion)
{
int count = EMono.scene.mouseTarget.cards.Count;
if (count > 1)
{
text += "otherCards".lang((count - 1).ToString() ?? "");
}
text = "???";
}
text += card.GetHoverText2();
if (roster == null && mouseTarget.target != card)
else
{
text = text + Environment.NewLine + mouseTarget.target.InspectName;
text = card.GetHoverText();
if (roster == null)
{
int count = EMono.scene.mouseTarget.cards.Count;
if (count > 1)
{
text += "otherCards".lang((count - 1).ToString() ?? "");
}
}
text += card.GetHoverText2();
if (roster == null && mouseTarget.target != card)
{
text = text + Environment.NewLine + mouseTarget.target.InspectName;
}
}
}
else if (mouseTarget.target != null)ZonePreEnterEncounter
public override void Execute()
{
List<Chara> list = new List<Chara>();
Chara leader = null;
if (mob.id == "merchant_travel")
if (mob.trait is TraitMerchantTravel)
{
lv = Mathf.Max(20, EClass.pc.FameLv * 5);
lv = Mathf.Max(20, EClass.pc.FameLv * 2);
Point randomPointInRadius = EClass.pc.pos.GetRandomPointInRadius(2, 5, requireLos: false, allowChara: false);
for (int i = 0; i < EClass.rndHalf(12); i++)
{public override void Execute()
else
{
string[] source = new string[5] { "merc", "merc_archer", "merc_mage", "merc_warrior", "dog_hound" };
chara = EClass._zone.SpawnMob(randomPointInRadius2, SpawnSetting.Mob(source.RandomItem(), null, lv));
chara = EClass._zone.SpawnMob(randomPointInRadius2, SpawnSetting.Mob(source.RandomItem(), null, lv * 2 / 3));
Chara chara2 = chara;
Hostility hostility2 = (chara.c_originalHostility = Hostility.Neutral);
chara2.hostility = hostility2;