EA 23.174 Nightly
July 28, 2025
11 files modified.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
Card (2)
public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource = AttackSource.None, Card origin = null, bool showEffect = true, Thing weapon = null, AttackSourceSub attackSourceSub = AttackSourceSub.None)
public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource = AttackSource.None, Card origin = null, bool showEffect = true, Thing weapon = null, Chara originalTarget = null)
public virtual void Die(Element e = null, Card origin = null, AttackSource attackSource = AttackSource.None)
public virtual void Die(Element e = null, Card origin = null, AttackSource attackSource = AttackSource.None, Chara originalTarget = null)
Chara (1)
public override void Die(Element e = null, Card origin = null, AttackSource attackSource = AttackSource.None)
public override void Die(Element e = null, Card origin = null, AttackSource attackSource = AttackSource.None, Chara originalTarget = null)
ActEffect
{
if (!plus && EClass.rnd(2) == 0)
{
tc.MakeMilk(effect: true, 1, addToZone: true, state);
Thing c2 = tc.MakeMilk(effect: true, 1, addToZone: true, state);
tc.Say("item_drop", c2);
}
else
{
tc.MakeEgg(effect: true, 1, addToZone: true, plus ? 3 : 20, state);
Thing c3 = tc.MakeEgg(effect: true, 1, addToZone: true, plus ? 3 : 20, state);
tc.Say("item_drop", c3);
}
}
}
Card
DamageHP(dmg, 0, 0, attackSource, origin);
}
public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource = AttackSource.None, Card origin = null, bool showEffect = true, Thing weapon = null, AttackSourceSub attackSourceSub = AttackSourceSub.None)
public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource = AttackSource.None, Card origin = null, bool showEffect = true, Thing weapon = null, Chara originalTarget = null)
{
if (hp < 0)
{
return;
}
bool flag = attackSourceSub == AttackSourceSub.FleshWall;
bool flag = originalTarget != null;
if (isChara && !HasElement(1241))
{
AttackSource attackSource2 = attackSource;
foreach (Chara chara3 in EClass._map.charas)
{
int num = chara3.Evalue(1241);
if (num != 0 && !chara3.IsDisabled && !chara3.isRestrained && !chara3.IsDeadOrSleeping && chara3 != this && !chara3.IsHostile(Chara) && chara3.Dist(this) <= num)
if (num != 0 && !chara3.IsDisabled && !chara3.isRestrained && !chara3.IsDeadOrSleeping && chara3 != this && !chara3.IsHostile(Chara) && (!IsPCFactionOrMinion || chara3.IsPCFactionOrMinion) && chara3.Dist(this) <= num)
{
chara3.DamageHP(dmg, ele, eleP, attackSource, origin, showEffect, weapon, AttackSourceSub.FleshWall);
Say("wall_flesh", chara3, this);
chara3.DamageHP(dmg, ele, eleP, attackSource, origin, showEffect, weapon, Chara);
return;
}
}
if (EClass.player.invlunerable)
{
EvadeDeath();
goto IL_0cdf;
goto IL_0d0e;
}
}
if (IsPC && Evalue(1220) > 0 && Chara.stamina.value >= Chara.stamina.max / 2)
}
}
}
goto IL_0cdf;
IL_0cdf:
goto IL_0d0e;
IL_0d0e:
if (trait.CanBeAttacked)
{
renderer.PlayAnime(AnimeID.HitObj);
Chara target;
if (hp < 0)
{
if ((attackSource == AttackSource.Melee || attackSource == AttackSource.Range) && origin != null && (origin.isSynced || IsPC))
if ((attackSource == AttackSource.Melee || attackSource == AttackSource.Range) && origin != null && originalTarget == null && (origin.isSynced || IsPC))
{
string text = "";
if (IsPC && Lang.setting.combatTextStyle == 0)
}
if (!isDestroyed)
{
Die(e, origin, attackSource);
Die(e, origin, attackSource, originalTarget);
if (trait.CanBeSmashedToDeath && !EClass._zone.IsUserZone)
{
Rand.SetSeed(uid);
}
Msg.SetColor();
}
else if ((attackSource == AttackSource.Melee || attackSource == AttackSource.Range) && origin != null)
else if ((attackSource == AttackSource.Melee || attackSource == AttackSource.Range) && origin != null && originalTarget == null)
{
(IsPC ? EClass.pc : origin).Say("dmgMelee" + num8 + (IsPC ? "pc" : ""), origin, this);
}
@@ -4735,7 +4736,7 @@ void ProcAbsorb()
}
}
public virtual void Die(Element e = null, Card origin = null, AttackSource attackSource = AttackSource.None)
public virtual void Die(Element e = null, Card origin = null, AttackSource attackSource = AttackSource.None, Chara originalTarget = null)
{
Card rootCard = GetRootCard();
Point _pos = rootCard?.pos ?? pos;
Chara
@@ -931,7 +931,7 @@ public bool IsWealthy
public FactionBranch homeBranch => homeZone?.branch;
public int MaxGeneSlot => race.geneCap - (HasElement(1237) ? 2 : 0);
public int MaxGeneSlot => race.geneCap - (HasElement(1237) ? 2 : 0) + Evalue(1242);
public int CurrentGeneSlot
{
@@ -4900,7 +4900,7 @@ public void Vomit()
hunger.Mod(30);
}
public override void Die(Element e = null, Card origin = null, AttackSource attackSource = AttackSource.None)
public override void Die(Element e = null, Card origin = null, AttackSource attackSource = AttackSource.None, Chara originalTarget = null)
{
combatCount = 0;
if (isDead || host != null)
}
else
{
if (origin == null || !origin.isSynced || (attackSource != AttackSource.Melee && attackSource != AttackSource.Range))
if (originalTarget != null || origin == null || !origin.isSynced || (attackSource != AttackSource.Melee && attackSource != AttackSource.Range))
{
Msg.Say(text, this, "", text2);
}
FACTION
@@ -36,7 +36,7 @@ public class FACTION
public const int fMoral = 2203;
public const int fSoil = 2200;
public const int fElec = 2201;
public const int fHeirloom = 2120;
@@ -108,16 +108,16 @@ public class FACTION
public const int fConstruction = 2003;
public const int fElec = 2201;
public const int fSoil = 2200;
public static readonly int[] IDS = new int[53]
{
3600, 3601, 3602, 3603, 3605, 3606, 3500, 3700, 3701, 3604,
3702, 2202, 2206, 2205, 2204, 2203, 2200, 2120, 2119, 2118,
3702, 2202, 2206, 2205, 2204, 2203, 2201, 2120, 2119, 2118,
3703, 2116, 2117, 2207, 3704, 3803, 3706, 4006, 2115, 4005,
4004, 4003, 4002, 4001, 4000, 3900, 3805, 3804, 3802, 3801,
3800, 3784, 3783, 3782, 3781, 3780, 3710, 3709, 3708, 3707,
3705, 2003, 2201
3705, 2003, 2200
};
}
public class Faction : EClass
FEAT
@@ -29,9 +29,9 @@ public class FEAT
public const int featHardy = 1630;
public const int featSPD = 1629;
public const int featParty = 1645;
public const int featLuck = 1628;
public const int featSPD = 1629;
public const int featCHA = 1627;
@@ -55,11 +55,13 @@ public class FEAT
public const int featLife = 1610;
public const int featParty = 1645;
public const int featHealer = 1422;
public const int featLonelySoul = 1646;
public const int featLuck = 1628;
public const int featSummoner = 1647;
public const int featManaMeat = 1421;
public const int featLonelySoul = 1646;
public const int featRapidMagic = 1648;
@@ -87,7 +89,7 @@ public class FEAT
public const int featUndead = 1210;
public const int featHealer = 1422;
public const int featSummoner = 1647;
public const int featSnail = 1211;
@@ -117,14 +119,16 @@ public class FEAT
public const int featFairyResist = 1212;
public const int featManaMeat = 1421;
public const int featExecutioner = 1420;
public const int featElea = 1213;
public const int featMilitant = 1419;
public const int featSwordsage = 1418;
public const int featMeatCushion = 1241;
public const int featGeneSlot = 1242;
public const int featGod_element1 = 1300;
public const int featGod_earth1 = 1305;
@@ -137,7 +141,7 @@ public class FEAT
public const int featGod_harvest1 = 1325;
public const int featGod_luck1 = 1330;
public const int featGod_harmony1 = 1335;
public const int featGod_oblivion1 = 1340;
@@ -163,17 +167,15 @@ public class FEAT
public const int featPaladin = 1407;
public const int featPaladin2 = 1408;
public const int featMassSummoner = 1240;
public const int featBoost = 1409;
public const int featPaladin2 = 1408;
public const int featDemon = 1239;
public const int featRoran = 1237;
public const int featExecutioner = 1420;
public const int featMilitant = 1419;
public const int featMetal = 1218;
@@ -217,40 +219,40 @@ public class FEAT
public const int featElder = 1238;
public const int featReboot = 1410;
public const int featBoost = 1409;
public const int featGod_harmony1 = 1335;
public const int featGod_luck1 = 1330;
public const int featLuckyCat = 1412;
public const int featEarthStrength = 1411;
public const int featFairysan = 1413;
public const int featWitch = 1417;
public const int featWhiteVixen = 1414;
public const int featInquisitor = 1416;
public const int featFoxMaid = 1415;
public const int featInquisitor = 1416;
public const int featReboot = 1410;
public const int featWitch = 1417;
public const int featFairysan = 1413;
public const int featSwordsage = 1418;
public const int featLuckyCat = 1412;
public const int featEarthStrength = 1411;
public const int featWhiteVixen = 1414;
public static readonly int[] IDS = new int[117]
public static readonly int[] IDS = new int[118]
{
1216, 1644, 1643, 1642, 1641, 1640, 1636, 1635, 1634, 1633,
1632, 1631, 1630, 1629, 1628, 1627, 1626, 1625, 1624, 1623,
1622, 1621, 1620, 1612, 1611, 1610, 1645, 1646, 1647, 1648,
1215, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208,
1209, 1210, 1422, 1211, 1214, 1659, 1658, 1657, 1656, 1655,
1654, 1653, 1652, 1651, 1650, 1649, 1212, 1421, 1213, 1419,
1241, 1300, 1305, 1310, 1315, 1320, 1325, 1330, 1340, 1345,
1350, 1355, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407,
1408, 1240, 1409, 1239, 1237, 1420, 1218, 1219, 1220, 1221,
1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1217,
1231, 1232, 1233, 1234, 1235, 1236, 1238, 1410, 1335, 1412,
1413, 1414, 1415, 1416, 1417, 1418, 1411
1632, 1631, 1630, 1645, 1629, 1627, 1626, 1625, 1624, 1623,
1622, 1621, 1620, 1612, 1611, 1610, 1422, 1628, 1421, 1646,
1648, 1215, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207,
1208, 1209, 1210, 1647, 1211, 1214, 1659, 1658, 1657, 1656,
1655, 1654, 1653, 1652, 1651, 1650, 1649, 1212, 1420, 1213,
1418, 1241, 1242, 1300, 1305, 1310, 1315, 1320, 1325, 1335,
1340, 1345, 1350, 1355, 1400, 1401, 1402, 1403, 1404, 1405,
1406, 1407, 1240, 1408, 1239, 1237, 1419, 1218, 1219, 1220,
1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230,
1217, 1231, 1232, 1233, 1234, 1235, 1236, 1238, 1409, 1330,
1411, 1417, 1416, 1415, 1410, 1413, 1412, 1414
};
}
public class Feat : Element
@@ -723,10 +725,16 @@ public List<string> Apply(int a, ElementContainer owner, bool hint = false)
{
int num2 = 0;
string[] array = text2.Split(',');
for (int i = 0; i < array.Length; i++)
foreach (string obj in array)
{
string item = array[i].Replace("#1", featRef[num2]);
hints.Add(item);
string text3 = featRef[num2];
string text4 = obj;
if (text3.ToInt() < 0)
{
text4 = text4.Replace("+#1", text3);
}
text4 = text4.Replace("#1", text3);
hints.Add(text4);
num2++;
}
}
FOOD
public class FOOD
{
public const int food_CHA = 700;
public const int food_god = 758;
public const int justcooked = 757;
public const int food_cat = 701;
public const int food_poison = 702;
public const int food_human = 708;
public const int food_bug = 704;
public const int kirimi = 707;
public const int loseWeight = 706;
public const int gainWeight = 705;
public const int food_love = 703;
public const int food_bug = 704;
public const int kirimi = 707;
public const int food_love = 703;
public const int food_human = 708;
public const int food_poison = 702;
public const int food_undead = 709;
public const int justcooked = 757;
public const int loseWeight = 706;
public const int food_god = 758;
public const int food_CHA = 700;
public static readonly int[] IDS = new int[12]
{
700, 701, 702, 704, 705, 703, 707, 708, 709, 757,
706, 758
758, 757, 701, 708, 707, 706, 705, 704, 703, 702,
709, 700
};
}
MUTATION
public class MUTATION
{
public const int mutationStrN = 1521;
public const int mutationStr = 1520;
public const int mutationSpeedN = 1519;
public const int mutationSpeed = 1518;
public const int mutationSkin = 1510;
public const int etherFeet = 1552;
public const int mutationDexN = 1515;
@@ -20,72 +12,80 @@ public class MUTATION
public const int mutationSkinN = 1511;
public const int mutationCha = 1522;
public const int etherNeck = 1555;
public const int mutationRegen = 1516;
public const int etherViolence = 1556;
public const int mutationChaN = 1523;
public const int etherEye = 1553;
public const int mutationRegenN = 1517;
public const int etherRain = 1558;
public const int mutationBrainN = 1525;
public const int etherAddict = 1559;
public const int etherPoisonHand = 1565;
public const int etherWeak = 1560;
public const int etherManaBattery = 1564;
public const int etherStupid = 1561;
public const int etherArmor = 1562;
public const int etherProvoke = 1563;
public const int mutationBrain = 1524;
public const int etherManaBattery = 1564;
public const int etherStupid = 1561;
public const int mutationSkin = 1510;
public const int etherWeak = 1560;
public const int etherPoisonHand = 1565;
public const int etherAddict = 1559;
public const int mutationRegen = 1516;
public const int etherRain = 1558;
public const int mutationRegenN = 1517;
public const int etherHead = 1557;
public const int etherViolence = 1556;
public const int mutationSpeed = 1518;
public const int etherNeck = 1555;
public const int etherUgly = 1551;
public const int etherWing = 1554;
public const int etherArmor = 1562;
public const int etherGravity = 1550;
public const int etherFeet = 1552;
public const int mutationHairN = 1533;
public const int etherEye = 1553;
public const int mutationHair = 1532;
public const int mutationColdN = 1527;
public const int mutationBodyN = 1531;
public const int mutationLightningN = 1529;
public const int mutationLightning = 1528;
public const int mutationLightningN = 1529;
public const int mutationColdN = 1527;
public const int mutationBody = 1530;
public const int mutationCold = 1526;
public const int mutationHair = 1532;
public const int mutationBrainN = 1525;
public const int mutationHairN = 1533;
public const int mutationBrain = 1524;
public const int etherGravity = 1550;
public const int mutationChaN = 1523;
public const int etherUgly = 1551;
public const int mutationCha = 1522;
public const int mutationBodyN = 1531;
public const int mutationStrN = 1521;
public const int mutationStr = 1520;
public const int mutationSpeedN = 1519;
public static readonly int[] IDS = new int[40]
{
1521, 1520, 1519, 1518, 1510, 1515, 1514, 1513, 1512, 1511,
1522, 1516, 1523, 1517, 1525, 1565, 1564, 1563, 1524, 1561,
1560, 1559, 1558, 1557, 1556, 1555, 1554, 1562, 1552, 1553,
1527, 1528, 1529, 1530, 1526, 1532, 1533, 1550, 1551, 1531
1552, 1515, 1514, 1513, 1512, 1511, 1555, 1556, 1553, 1558,
1559, 1560, 1561, 1562, 1563, 1564, 1510, 1565, 1516, 1517,
1557, 1518, 1551, 1554, 1550, 1533, 1532, 1531, 1529, 1528,
1527, 1530, 1526, 1525, 1524, 1523, 1522, 1521, 1520, 1519
};
}
public class Mutation : Feat
POLICY
public class POLICY
{
public const int bed_quality = 2812;
public const int license_food = 2818;
public const int suite_room = 2813;
@@ -15,14 +15,16 @@ public class POLICY
public const int store_premium = 2817;
public const int license_food = 2818;
public const int bed_quality = 2812;
public const int license_furniture = 2819;
public const int celeb = 2822;
public const int license_slaver = 2828;
public const int legendary_heirloom = 2821;
public const int celeb = 2822;
public const int legendary_exhibition = 2823;
public const int license_stolen = 2824;
@@ -33,8 +35,6 @@ public class POLICY
public const int breed_season = 2827;
public const int license_slaver = 2828;
public const int tourist_safety = 2811;
public const int license_general = 2820;
@@ -107,8 +107,8 @@ public class POLICY
public static readonly int[] IDS = new int[51]
{
2812, 2813, 2814, 2815, 2816, 2817, 2818, 2819, 2822, 2821,
2823, 2824, 2825, 2826, 2827, 2828, 2811, 2820, 2810, 2516,
2818, 2813, 2814, 2815, 2816, 2817, 2812, 2819, 2828, 2821,
2822, 2823, 2824, 2825, 2826, 2827, 2811, 2820, 2810, 2516,
2715, 2508, 2509, 2510, 2505, 2504, 2503, 2502, 2501, 2500,
2800, 2507, 2511, 2512, 2513, 2506, 2515, 2702, 2703, 2514,
2705, 2706, 2707, 2704, 2709, 2710, 2711, 2712, 2701, 2700,
SerializedCards
@@ -417,7 +417,7 @@ public void Add(Card c)
refVal = c.refVal,
idSkin = c.idSkin,
idDeity = c.c_idDeity,
isEmpty = (c.things.Count == 0)
isEmpty = (c.things.Count == 0 && c.c_lockLv == 0)
};
if (c.c_idBacker != 0)
{
bool isHidden = (card2.isMasked = false);
card3.isHidden = isHidden;
}
if (card2.IsContainer && card4.isEmpty)
if (card2.IsContainer)
{
card2.things.DestroyAll();
if (card4.isEmpty)
{
card2.things.DestroyAll();
card2.c_lockLv = 0;
}
else
{
card2.c_lockLv = 1;
}
}
}
if (card2.isChara)
TraitWhipEgg
@@ -24,7 +24,8 @@ public override void TrySetHeldAct(ActPlan p)
{
c.Chara.OnInsulted();
}
c.MakeEgg();
Thing c2 = c.MakeEgg();
c.Say("item_drop", c2);
owner.ModCharge(-1);
if (owner.c_charges <= 0)
{