EA 23.215 Nightly
October 8, 2025
13 files modified.
Important Changes
None.
ABILITY
cs
public const int AI_SelfHarm = 6015;
public const int ActPick = 5047;
public const int ActRide = 6018;
public const int ActParasite = 6019;
public const int ActDreamBug = 6020;
public const int ActPray = 6050;
public const int ActFear = 6611;
public const int ActEscape = 6400;
public const int ActWeaken = 6610;
public const int ActSuicide = 6410;
public const int ActBurnMana = 6606;
public const int ActDuplicate = 6420;
public const int ActCrySad = 6605;
public const int ActRush = 6450;
public const int ActCryRage = 6604;
public const int ActCrabBreathe = 6500;
public const int ActNTR = 6603;
public const int ActCurse = 6600;
public const int ActPick = 5047;
public const int ActDraw = 6602;
public const int ActNTR = 6603;
public const int ActCrabBreathe = 6500;
public const int ActCryRage = 6604;
public const int ActRush = 6450;
public const int ActCrySad = 6605;
public const int ActDuplicate = 6420;
public const int ActBurnMana = 6606;
public const int ActSuicide = 6410;
public const int ActWeaken = 6610;
public const int ActEscape = 6400;
public const int ActParasite = 6019;
public const int ActPray = 6050;
public const int AI_Drink = 5045;
public const int ActCurse = 6600;
public const int ActChat = 5044;
public const int ActTouchSleep = 6612;
public const int AI_Drink = 5045;
public const int AI_TendAnimal = 5043;
public const int Melee = 5002;
public const int ActMelee = 5001;
public const int ActWait = 5000;
public const int TaskPlow = 5014;
public const int TaskAttack = 5015;
public const int TaskTame = 5016;
cs
public const int ActNoItem = 5037;
public const int ActFear = 6611;
public const int ActChat = 5044;
public const int TaskMoveInstalled = 5036;
cs
public const int TaskBuild = 5035;
public const int ActTouchSleep = 6612;
public const int ActTouchDrown = 6613;
public const int ActEntangle = 6601;
public const int ActGazeDim = 6620;
public const int ActGazeInsane = 6621;
public const int breathe_Lightning = 50202;
cs
public const int breathe_Magic = 50211;
public const int ActTouchDrown = 6613;
public const int ActGazeDim = 6620;
public const int breathe_Acid = 50213;
cs
public const int breathe_Void = 50216;
public const int Melee = 5002;
public const int Ranged = 5003;
public const int Sleep = 5004;
cs
public const int ActAttack = 5013;
public const int TaskPlow = 5014;
public const int breathe_Cold = 50201;
public const int breathe_Fire = 50200;
cs
public const int ActHeadpat = 6904;
public const int ActGazeMutation = 6622;
public const int ActGazeMana = 6623;
public const int ActDrainBlood = 6626;
cs
public const int ActSteal = 6640;
public const int breathe_ = 7000;
public const int ActStealFood = 6641;
public const int ActGazeInsane = 6621;
public const int breathe_ = 7000;
public const int ActNeckHunt = 6650;
public const int ActStealMoney = 6642;
public const int ActGazeMutation = 6622;
public const int ActDropMine = 6660;
public const int ActThrowPotion = 6661;
public const int ActStealMoney = 6642;
public const int ActSwarm = 6662;
public const int ActMultiHit = 6663;
public const int ActNeckHunt = 6650;
public const int ActBladeStorm = 6664;
public const int ActKizuamiTrick = 6903;
cs
public const int SongSleep = 6750;
public const int ActSwarm = 6662;
public const int ActMultiHit = 6663;
public const int StManaCost = 6720;
cs
public const int ActSummonSpecial = 6800;
public const int ActBladeStorm = 6664;
public const int ActBladeStorm2 = 6665;
public static readonly int[] IDS = new int[127]
public static readonly int[] IDS = new int[128]
{
5046, 5048, 5049, 5050, 5051, 5052, 5053, 5054, 5055, 6001,
6003, 6011, 6012, 6013, 6015, 5047, 6018, 6020, 6050, 6400,
6410, 6420, 6450, 6500, 6600, 6602, 6603, 6604, 6605, 6606,
6610, 6019, 5045, 5044, 5043, 5001, 5000, 5014, 5015, 5016,
5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024, 5025, 5026,
5027, 5028, 5042, 5041, 5040, 5039, 5038, 5037, 6611, 5036,
5034, 5033, 5032, 5031, 5030, 5029, 5035, 6612, 6601, 6620,
50202, 50203, 50204, 50205, 50206, 50207, 50208, 50209, 50210, 50211,
6613, 50213, 50214, 50215, 50216, 5002, 5003, 5004, 5005, 5006,
5007, 5008, 5009, 5010, 5011, 5012, 5013, 50201, 50200, 50212,
6904, 6622, 6623, 6626, 6627, 6630, 6631, 6640, 7000, 6641,
6621, 6650, 6660, 6661, 6642, 6663, 6903, 6902, 6901, 6900,
6751, 6750, 6662, 6720, 6700, 6800, 6664
6003, 6011, 6012, 6013, 6015, 6018, 6019, 6020, 6611, 6610,
6606, 6605, 6604, 6603, 5047, 6602, 6500, 6450, 6420, 6410,
6400, 6050, 6600, 6612, 5045, 5043, 5002, 5001, 5000, 5015,
5016, 5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024, 5025,
5026, 5027, 5028, 5042, 5041, 5040, 5039, 5038, 5037, 5044,
5036, 5034, 5033, 5032, 5031, 5030, 5029, 5035, 6613, 6601,
6621, 50202, 50203, 50204, 50205, 50206, 50207, 50208, 50209, 50210,
50211, 6620, 50213, 50214, 50215, 50216, 5003, 5004, 5005, 5006,
5007, 5008, 5009, 5010, 5011, 5012, 5013, 5014, 50201, 50200,
50212, 6904, 6623, 6626, 6627, 6630, 6631, 6640, 6641, 7000,
6642, 6622, 6660, 6661, 6662, 6650, 6664, 6903, 6902, 6901,
6900, 6751, 6750, 6663, 6720, 6700, 6800, 6665
};
}
public class Ability : Act
ActMultihit
public override bool Perform()
cs
{
orgTC.pos.PlayEffect("ab_bladestorm");
}
orgTC.pos.PlaySound("ab_swarm");
orgTC.pos.PlaySound((base.source.id == 6665) ? "ab_shred" : "ab_swarm");
});
num++;
new ActMeleeBladeStorm().Perform(Act.CC, orgTC);
AttackProcess
public bool Perform(int count, bool hasHit, float dmgMulti = 1f, bool maxRoll =
cs
}
else
{
id = CC.id;
if (id == "rabbit_vopal" || id == "mantis_killer")
switch (CC.id)
{
case "mech_death":
case "rabbit_vopal":
case "mantis_killer":
list.Add(Element.Create(6650, 100));
break;
}
}
int bane;
Card
public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
cs
if (HasCondition<ConRebirth>())
{
Say("rebirth", this);
hp = Mathf.Min(MaxHP * (int)(5f + Mathf.Sqrt(Chara.GetCondition<ConRebirth>().power)) / 100, MaxHP);
hp = (int)Mathf.Min((long)MaxHP * (long)(int)(5f + Mathf.Sqrt(Chara.GetCondition<ConRebirth>().power)) / 100, MaxHP);
Chara.AddCondition<ConInvulnerable>();
Chara.RemoveCondition<ConRebirth>();
PlayEffect("revive");
Chara
cs
public override bool IsMultisize => sourceCard.multisize;
public override int MaxHP => (int)Mathf.Clamp(((long)(base.END * 2 + base.STR + base.WIL / 2) * (long)Mathf.Min(base.LV, 25) / 25 + base.END + 10) * Evalue(60) / 100 * ((base.IsPCFactionOrMinion ? 100 : (100 + (int)base.rarity * 300)) + (IsPC ? (EClass.player.lastEmptyAlly * Evalue(1646)) : 0)) / 100, 1f, 100000000f);
public override int MaxHP => (int)Mathf.Clamp(((long)(base.END * 2 + base.STR + base.WIL / 2) * (long)Mathf.Min(base.LV, 25) / 25 + base.END + 10) * Evalue(60) / 100 * ((base.IsPCFactionOrMinion ? 100 : (100 + (int)base.rarity * 300)) + (IsPC ? (EClass.player.lastEmptyAlly * Evalue(1646)) : 0)) / 100, 1f, 1E+09f);
public override int WeightLimit => Mathf.Max((base.STR * 500 + base.END * 250 + Evalue(207) * 2000) * ((!HasElement(1411)) ? 1 : 5) + 45000, 1000);
public override void OnCreate(int genLv)
cs
SetFeat(1644, j + 1);
}
}
if (id == "putty_mech")
{
SetFeat(1248, 1 + EClass.rnd(5));
}
InitStats();
body.SetOwner(this);
hostility = OriginalHostility;
public bool TryNeckHunt(Chara TC, int power, bool harvest = false)
cs
{
return false;
}
if (TC.hp > TC.MaxHP * Mathf.Min(5 + (int)Mathf.Sqrt(power), harvest ? 35 : 25) / 100)
if (TC.hp > (long)TC.MaxHP * (long)Mathf.Min(5 + (int)Mathf.Sqrt(power), harvest ? 35 : 25) / 100)
{
return false;
}
Dice
public static int Roll(int num, int sides, int bonus = 0, Card card = null)
cs
{
int a = 1;
bool flag = true;
int num2 = 0;
long num2 = 0L;
if (card != null)
{
int num3 = card.Evalue(78);
public static int Roll(int num, int sides, int bonus = 0, Card card = null)
cs
}
for (int i = 0; i < Mathf.Min(a, 20); i++)
{
int num4 = Roll();
long num4 = Roll();
if (i == 0 || (flag && num4 > num2) || (!flag && num4 < num2))
{
num2 = num4;
}
}
return num2;
int Roll()
return (int)Mathf.Clamp(num2, -214748370f, 214748370f);
long Roll()
{
int num5 = 0;
if (num >= 100)
{
return (long)num * (long)(rnd(sides) + 1);
}
long num5 = 0L;
for (int j = 0; j < num; j++)
{
num5 += rnd(sides) + 1;
cs
public static int RollMax(int num, int sides, int bonus = 0)
{
return num * sides + bonus;
return (int)Mathf.Clamp((long)num * (long)sides + bonus, -2.1474836E+09f, 2.1474836E+09f);
}
public static int rnd(int a)
FEAT
cs
public class FEAT
{
public const int featMetal = 1218;
public const int featElderCrab = 1219;
public const int featLonelySoul = 1646;
cs
public const int featSPD = 1629;
public const int featManaMeat = 1421;
public const int featRapidMagic = 1648;
public const int featDefender = 1649;
public const int featGourmet = 1650;
public const int featGolem = 1217;
public const int featMetal = 1218;
public const int featSlowFood = 1200;
cs
public const int featSnail = 1211;
public const int featDefender = 1649;
public const int featFairyResist = 1212;
public const int featElea = 1213;
public const int featManaPrecision = 1214;
public const int featDwarf = 1215;
public const int featSuccubus = 1216;
public const int featGolem = 1217;
public const int featLooter = 1660;
public const int featFisher = 1659;
cs
public const int featMagicManner = 1651;
public const int featElea = 1213;
public const int featManaMeat = 1421;
public const int featExecutioner = 1420;
cs
public const int featSwordsage = 1418;
public const int featCentaur = 1244;
public const int featSevenSense = 1245;
public const int featPegasus = 1246;
public const int featLibra = 1247;
public const int featMiscreation = 1248;
public const int featGoodKarma = 1270;
public const int featBadKarma = 1271;
cs
public const int featGod_machine1 = 1315;
public const int featEternalYouth = 1243;
public const int featCentaur = 1244;
public const int featGod_harvest1 = 1325;
cs
public const int featPianist = 1405;
public const int featGeneSlot = 1242;
public const int featEternalYouth = 1243;
public const int featMassSummoner = 1240;
public const int featMeatCushion = 1241;
public const int featMilitant = 1419;
public const int featSplit = 1222;
public const int featSpike = 1221;
public const int featFate = 1220;
public const int featShiva = 1224;
public const int featAcidBody = 1223;
public const int featShiva = 1224;
public const int featSplit = 1222;
public const int featSpike = 1221;
public const int featLoyal = 1225;
cs
public const int featDemigod = 1228;
public const int featMeatCushion = 1241;
public const int featLittleOne = 1229;
public const int featNirvana = 1231;
public const int featGeneSlot = 1242;
public const int featAdam = 1230;
public const int featBaby = 1232;
cs
public const int featNorland = 1236;
public const int featElderCrab = 1219;
public const int featRoran = 1237;
public const int featElder = 1238;
public const int featFate = 1220;
public const int featDemon = 1239;
public const int featAdam = 1230;
public const int featMassSummoner = 1240;
public const int featNirvana = 1231;
public const int featTourist = 1406;
cs
public const int featPaladin2 = 1408;
public const int featInquisitor = 1416;
public const int featPaladin = 1407;
public const int featWitch = 1417;
public const int featInquisitor = 1416;
public const int featFoxMaid = 1415;
public const int featWhiteVixen = 1414;
public const int featPaladin = 1407;
public const int featWitch = 1417;
public const int featLuckyCat = 1412;
cs
public const int featFairysan = 1413;
public static readonly int[] IDS = new int[127]
public static readonly int[] IDS = new int[128]
{
1218, 1646, 1645, 1644, 1643, 1642, 1641, 1640, 1636, 1635,
1219, 1646, 1645, 1644, 1643, 1642, 1641, 1640, 1636, 1635,
1634, 1633, 1632, 1631, 1647, 1630, 1628, 1627, 1626, 1625,
1624, 1623, 1622, 1621, 1620, 1612, 1611, 1610, 1422, 1629,
1421, 1648, 1650, 1217, 1200, 1201, 1202, 1203, 1204, 1205,
1206, 1207, 1208, 1209, 1210, 1211, 1649, 1212, 1214, 1215,
1216, 1660, 1659, 1658, 1657, 1656, 1655, 1654, 1653, 1652,
1651, 1213, 1420, 1661, 1418, 1244, 1245, 1246, 1247, 1270,
1271, 1300, 1305, 1310, 1315, 1243, 1325, 1335, 1340, 1345,
1350, 1355, 1400, 1401, 1402, 1403, 1404, 1330, 1405, 1242,
1240, 1419, 1222, 1221, 1220, 1223, 1224, 1225, 1226, 1227,
1228, 1241, 1229, 1231, 1232, 1233, 1234, 1235, 1236, 1219,
1237, 1238, 1239, 1230, 1406, 1320, 1408, 1416, 1417, 1415,
1414, 1407, 1412, 1411, 1410, 1409, 1413
1648, 1649, 1650, 1218, 1200, 1201, 1202, 1203, 1204, 1205,
1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215,
1216, 1217, 1660, 1659, 1658, 1657, 1656, 1655, 1654, 1653,
1652, 1651, 1421, 1420, 1661, 1418, 1245, 1246, 1247, 1248,
1270, 1271, 1300, 1305, 1310, 1315, 1244, 1325, 1335, 1340,
1345, 1350, 1355, 1400, 1401, 1402, 1403, 1404, 1330, 1405,
1243, 1241, 1419, 1224, 1223, 1222, 1221, 1225, 1226, 1227,
1228, 1229, 1242, 1230, 1232, 1233, 1234, 1235, 1236, 1237,
1238, 1220, 1239, 1240, 1231, 1406, 1320, 1408, 1407, 1416,
1415, 1414, 1417, 1412, 1411, 1410, 1409, 1413
};
}
public class Feat : Element
FOOD
cs
public class FOOD
{
public const int loseWeight = 706;
public const int food_CHA = 700;
public const int food_cat = 701;
public const int food_poison = 702;
public const int food_love = 703;
cs
public const int gainWeight = 705;
public const int loseWeight = 706;
public const int food_human = 708;
public const int kirimi = 707;
public const int food_undead = 709;
public const int justcooked = 757;
public const int food_cat = 701;
public const int food_god = 758;
public const int creativeDish = 764;
public const int kirimi = 707;
public const int food_god = 758;
public const int food_CHA = 700;
public const int food_human = 708;
public static readonly int[] IDS = new int[13]
{
702, 703, 704, 705, 706, 708, 709, 757, 701, 764,
707, 758, 700
706, 700, 701, 702, 703, 704, 705, 707, 709, 757,
758, 764, 708
};
}
GoalCombat
cs
{
num8 = 0;
}
if (owner.HasElement(1238) && num8 < -15)
{
num8 = -15;
}
switch (num7)
{
case 910:
InvOwner
public ListInteraction ListInteractions(ButtonGrid b, bool context)
cs
}
if (flag2 && (!t.c_isImportant || !destInvOwner.DenyImportant))
{
if (!flag3 && (Trader.currency == CurrencyType.None || t.GetPrice() == 0))
if (!flag3 && (Trader.currency == CurrencyType.None || (Trader.currency != CurrencyType.Influence && t.GetPrice(Trader.currency, sell: false, Trader.priceType) == 0)))
{
Transaction trans2 = new Transaction(b, t.Num);
if (trans2.IsValid())
MUTATION
cs
public class MUTATION
{
public const int etherGravity = 1550;
public const int mutationStrN = 1521;
public const int mutationEyeN = 1513;
public const int mutationEye = 1512;
public const int etherEye = 1553;
public const int etherWing = 1554;
public const int mutationDex = 1514;
public const int etherNeck = 1555;
public const int mutationDexN = 1515;
public const int etherViolence = 1556;
public const int mutationRegen = 1516;
public const int etherUgly = 1551;
public const int mutationRegenN = 1517;
public const int etherRain = 1558;
public const int mutationSpeed = 1518;
public const int etherAddict = 1559;
public const int mutationSpeedN = 1519;
public const int etherWeak = 1560;
public const int mutationSkinN = 1511;
public const int etherStupid = 1561;
public const int mutationSkin = 1510;
public const int etherArmor = 1562;
public const int mutationCha = 1522;
public const int etherProvoke = 1563;
public const int mutationStr = 1520;
public const int mutationSkinN = 1511;
public const int mutationBrain = 1524;
public const int mutationSkin = 1510;
public const int etherPoisonHand = 1565;
public const int etherManaBattery = 1564;
public const int etherPoisonHand = 1565;
public const int etherProvoke = 1563;
public const int mutationDex = 1514;
public const int etherArmor = 1562;
public const int mutationDexN = 1515;
public const int etherStupid = 1561;
public const int etherHead = 1557;
public const int mutationChaN = 1523;
public const int mutationRegenN = 1517;
public const int etherWeak = 1560;
public const int mutationHairN = 1533;
public const int etherAddict = 1559;
public const int mutationRegen = 1516;
public const int etherRain = 1558;
public const int mutationBodyN = 1531;
public const int etherHead = 1557;
public const int mutationBody = 1530;
public const int etherNeck = 1555;
public const int mutationLightningN = 1529;
public const int etherWing = 1554;
public const int mutationLightning = 1528;
public const int etherViolence = 1556;
public const int mutationColdN = 1527;
public const int etherFeet = 1552;
public const int mutationBrainN = 1525;
public const int mutationCold = 1526;
public const int mutationHair = 1532;
public const int mutationColdN = 1527;
public const int mutationBrain = 1524;
public const int etherEye = 1553;
public const int mutationChaN = 1523;
public const int mutationLightningN = 1529;
public const int mutationCha = 1522;
public const int mutationBody = 1530;
public const int mutationStrN = 1521;
public const int mutationLightning = 1528;
public const int mutationStr = 1520;
public const int mutationHair = 1532;
public const int mutationSpeedN = 1519;
public const int mutationHairN = 1533;
public const int etherFeet = 1552;
public const int etherGravity = 1550;
public const int mutationSpeed = 1518;
public const int etherUgly = 1551;
public const int mutationBrainN = 1525;
public const int mutationBodyN = 1531;
public static readonly int[] IDS = new int[40]
{
1550, 1513, 1512, 1553, 1554, 1555, 1556, 1551, 1558, 1559,
1560, 1561, 1562, 1563, 1511, 1510, 1564, 1565, 1514, 1515,
1557, 1517, 1533, 1516, 1531, 1530, 1529, 1528, 1527, 1526,
1532, 1524, 1523, 1522, 1521, 1520, 1519, 1552, 1518, 1525
1521, 1513, 1512, 1514, 1515, 1516, 1517, 1518, 1519, 1511,
1510, 1522, 1520, 1524, 1565, 1564, 1563, 1562, 1561, 1523,
1560, 1559, 1558, 1557, 1555, 1554, 1556, 1552, 1525, 1526,
1527, 1553, 1529, 1530, 1528, 1532, 1533, 1550, 1551, 1531
};
}
public class Mutation : Feat
POLICY
cs
public class POLICY
{
public const int suite_room = 2813;
public const int license_food = 2818;
public const int store_premium = 2817;
public const int license_furniture = 2819;
public const int mass_exhibition = 2814;
public const int platinum_ticket = 2815;
public const int license_furniture = 2819;
public const int store_ripoff = 2816;
public const int store_premium = 2817;
public const int license_food = 2818;
public const int license_general = 2820;
public const int milk_fan = 2825;
public const int suite_room = 2813;
public const int celeb = 2822;
cs
public const int license_stolen = 2824;
public const int milk_fan = 2825;
public const int egg_fan = 2826;
public const int breed_season = 2827;
cs
public const int bed_quality = 2812;
public const int speed_growth = 2516;
public const int energy_conservation = 2700;
public const int open_business = 2810;
cs
public const int human_right = 2506;
public const int energy_conservation = 2700;
public const int speed_growth = 2516;
public const int border_watch = 2704;
cs
public static readonly int[] IDS = new int[51]
{
2813, 2818, 2817, 2814, 2815, 2819, 2816, 2820, 2825, 2822,
2823, 2824, 2826, 2827, 2828, 2821, 2812, 2516, 2810, 2508,
2819, 2814, 2815, 2816, 2817, 2818, 2820, 2813, 2822, 2823,
2824, 2825, 2826, 2827, 2828, 2821, 2812, 2700, 2810, 2508,
2509, 2510, 2511, 2505, 2504, 2503, 2502, 2501, 2500, 2811,
2507, 2512, 2513, 2514, 2506, 2700, 2704, 2703, 2705, 2515,
2507, 2512, 2513, 2514, 2506, 2516, 2704, 2703, 2705, 2515,
2707, 2708, 2709, 2706, 2711, 2712, 2715, 2800, 2702, 2701,
2710
};
WindowCharaMini
public void Refresh(int idTab)
cs
note.SetActive(enable: true);
note.AddText("feat_pet".lang(chara.feat.ToString() ?? "", num.ToString() ?? ""));
note.AddText("feat_inferior".lang(chara.CurrentGeneSlot.ToString() ?? "", chara.MaxGeneSlot.ToString() ?? "", ((genes != null) ? genes.inferior : 0).ToString() ?? ""));
if (!chara.isScaled)
{
note.AddText("feat_pet_type1".lang());
}
note.Space(8);
foreach (CharaUpgrade.Item item6 in upgrades.items)
{