EA 23.182 Nightly
August 17, 2025
14 files modified.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
TaskCullLife (1)
public static Chara GetTarget()
public Chara GetTarget()
ActEffect
public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
{
attackSource = AttackSource.MagicSword;
}
int num4 = 0;
long num4 = 0L;
bool isChara = CC.isChara;
if (id == EffectId.Suicide)
{
public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
{
CC.ModExp(302, CC.IsPC ? 20 : 100);
}
if (num4 == 0)
if (num4 == 0L)
{
continue;
}
public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
num4 = num4 * 100 / (100 + RapidCount * 50);
}
num4 = num4 * Act.powerMod / 100;
c.DamageHP(num4, e.id, power * num / 100, attackSource, chara ?? CC);
if (num4 > 9999999)
{
num4 = 9999999L;
}
c.DamageHP((int)num4, e.id, power * num / 100, attackSource, chara ?? CC);
if (c.IsAliveInCurrentZone && CC.IsAliveInCurrentZone && id == EffectId.DrainMana && c.isChara && CC.isChara && c.Chara.mana.value > 0)
{
int num6 = num4 * num / 100;
long num6 = num4 * num / 100;
Debug.Log(num4 + " v:" + num6 + " evalue:" + e.Value + " power:" + power + " elepMod:" + num);
if (num6 > c.Chara.mana.value)
{
num6 = c.Chara.mana.value;
}
c.Chara.mana.Mod(-num6);
CC.Chara.mana.Mod(num6);
c.Chara.mana.Mod((int)(-num6));
CC.Chara.mana.Mod((int)num6);
}
if (id == EffectId.Explosive && CC.trait is TraitCookerMicrowave)
{
public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
}
case EffectId.EternalYouth:
{
tc.PlaySound("dropRewardXmas");
tc.PlaySound("mutation");
tc.PlayEffect("mutation");
if (tc.IsUnique)
public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
{
tc.Say("eternalYouth2", tc);
tc.c_lockedAge = 0;
tc.elements.Remove(1243);
tc.bio.SetAge(tc.Chara, age);
}
Redirect(EffectId.Youth, BlessedState.Cursed, default(ActRef));
public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
}
else
{
tc.PlaySound("dropRewardXmas");
tc.Say("eternalYouth1", tc);
tc.c_lockedAge = age;
tc.elements.SetBase(1243, 1);
if (blessed)
{
Redirect(EffectId.Youth, BlessedState.Blessed, default(ActRef));
BaseTileMap
defaultBlockHeight = map.config.blockHeight;
noRoofMode = false;
bool flag = !isIndoor || EMono._zone is Zone_Tent;
if (EMono._map.config.reverseRoof)
{
flag = !flag;
}
if (usingHouseBoard || ActionMode.Bird.IsActive)
{
lowBlock = (hideRoomFog = (hideHang = false));
int valueOrDefault = (this.room?.lot?.idBGM).GetValueOrDefault();
if (valueOrDefault == 0)
{
goto IL_16b9;
goto IL_16d1;
}
if (!(EMono.Sound.currentPlaylist != EMono.Sound.plLot))
{
BGMData data = EMono.Sound.plLot.list[0].data;
if ((object)data != null && data.id == valueOrDefault)
{
goto IL_16b9;
goto IL_16d1;
}
}
goto IL_16d8;
IL_16e2:
goto IL_16f0;
IL_16fa:
if (this.room != lastRoom)
{
screen.RefreshWeather();
SoundManager.bgmVolumeMod = ((!LayerDrama.maxBGMVolume && !EMono._map.IsIndoor && this.room != null && !this.room.data.atrium && this.room.HasRoof) ? (-0.6f) : 0f);
screenHighlight = ScreenHighlight.None;
return;
IL_16b9:
IL_16d1:
if (valueOrDefault == 0 && EMono.Sound.currentPlaylist == EMono.Sound.plLot)
{
goto IL_16d8;
goto IL_16f0;
}
goto IL_16e2;
IL_16d8:
goto IL_16fa;
IL_16f0:
EMono._zone.RefreshBGM();
goto IL_16e2;
goto IL_16fa;
}
public void RefreshHeight()
Card
public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource
target = EClass._map.FindChara(zoneInstanceBout.uidTarget);
if (target != null)
{
EClass.pc.ai.Cancel();
if (IsPC)
{
EClass.pc.hp = 0;
EClass
public static int rndSeed(int a, int seed)
return result;
}
public static int rnd(long a)
{
return Rand.rnd((int)a);
}
public static int rnd(int a)
{
return Rand.rnd(a);
ElementContainer
public void ModExp(int ele, float a, bool chain = false)
if (element.UseExpMod)
{
a = a * (float)Mathf.Clamp(element.UsePotential ? element.Potential : 100, 10, 1000) / (float)(100 + Mathf.Max(0, element.ValueWithoutLink) * 25);
if (EClass.rndf(1f) < a % 1f + ((ele == 152) ? 0.01f : 0.1f))
if (EClass.rndf(1f) < a % 1f)
{
a += 1f;
}
FACTION
public const int fSoil = 2200;
public const int fTaxEvasion = 2119;
public const int fHeirloom = 2120;
public const int fLuck = 2118;
public const int fConstruction = 2003;
public const int fHeirloom = 2120;
public const int fTaxEvasion = 2119;
public static readonly int[] IDS = new int[53]
{
3700, 3702, 3606, 3605, 3604, 3603, 3602, 3601, 3600, 3701,
3500, 2202, 2206, 2205, 2204, 2203, 2201, 2200, 2119, 2118,
3500, 2202, 2206, 2205, 2204, 2203, 2201, 2200, 2120, 2118,
3703, 2116, 2117, 2207, 3704, 3804, 3706, 2115, 4006, 4005,
4004, 4003, 4002, 4001, 4000, 3900, 3805, 3803, 3802, 3801,
3800, 3784, 3783, 3782, 3781, 3780, 3710, 3709, 3708, 3707,
3705, 2003, 2120
3705, 2003, 2119
};
}
public class Faction : EClass
FEAT
public const int featGeneSlot = 1242;
public const int featEternalYouth = 1243;
public const int featGod_element1 = 1300;
public const int featGod_earth1 = 1305;
public const int featTourist = 1406;
public const int featPaladin = 1407;
public const int featMassSummoner = 1240;
public const int featPaladin2 = 1408;
public const int featPaladin = 1407;
public const int featDemon = 1239;
public const int featElder = 1238;
public const int featBoost = 1409;
public const int featPaladin2 = 1408;
public const int featGod_luck1 = 1330;
public const int featReboot = 1410;
public const int featEarthStrength = 1411;
public const int featLuckyCat = 1412;
public const int featFoxMaid = 1415;
public const int featInquisitor = 1416;
public const int featWitch = 1417;
public const int featReboot = 1410;
public const int featInquisitor = 1416;
public const int featBoost = 1409;
public static readonly int[] IDS = new int[118]
public static readonly int[] IDS = new int[119]
{
1216, 1644, 1643, 1642, 1641, 1640, 1636, 1635, 1634, 1633,
1632, 1631, 1630, 1645, 1629, 1627, 1626, 1625, 1624, 1623,
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,
1418, 1241, 1242, 1243, 1300, 1305, 1310, 1315, 1320, 1325,
1335, 1340, 1345, 1350, 1355, 1400, 1401, 1402, 1403, 1404,
1405, 1406, 1240, 1407, 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, 1412, 1413, 1414, 1415, 1416, 1417, 1410
1217, 1231, 1232, 1233, 1234, 1235, 1236, 1238, 1408, 1330,
1410, 1411, 1412, 1413, 1414, 1415, 1417, 1416, 1409
};
}
public class Feat : Element
FOOD
public const int gainWeight = 705;
public const int loseWeight = 706;
public const int food_bug = 704;
public const int kirimi = 707;
public const int food_human = 708;
public const int food_undead = 709;
public const int justcooked = 757;
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 loseWeight = 706;
public static readonly int[] IDS = new int[13]
{
700, 701, 702, 703, 705, 706, 704, 708, 709, 757,
758, 764, 707
700, 701, 702, 703, 705, 704, 707, 708, 709, 757,
764, 758, 706
};
}
Game
}
});
TryAddQuest("into_darkness", "exile_kettle");
if (version.IsBelow(0, 23, 182))
{
foreach (Chara value2 in cards.globalCharas.Values)
{
if (!value2.IsUnique && value2.c_lockedAge != 0)
{
value2.elements.SetBase(1243, 1);
}
}
}
if (version.IsBelow(0, 23, 155))
{
AddAdventurer("adv_yukiimo");
}
if (version.IsBelow(0, 23, 72))
{
foreach (Chara value2 in EClass.game.cards.globalCharas.Values)
foreach (Chara value3 in EClass.game.cards.globalCharas.Values)
{
if (!value2.isDead)
if (!value3.isDead)
{
value2.c_wasInPcParty = false;
value3.c_wasInPcParty = false;
}
}
}
}
if (version.IsBelow(0, 23, 51))
{
foreach (Chara value3 in EClass.game.cards.globalCharas.Values)
foreach (Chara value4 in EClass.game.cards.globalCharas.Values)
{
if (!(value3.id != "adv") && value3.IsPCFaction)
if (!(value4.id != "adv") && value4.IsPCFaction)
{
value3.idSkin = value3.uid % (value3.source._tiles.Length - 4) / 2 * 2 + ((!value3.IsMale) ? 1 : 0);
value4.idSkin = value4.uid % (value4.source._tiles.Length - 4) / 2 * 2 + ((!value4.IsMale) ? 1 : 0);
}
}
}
});
if (version.IsBelow(0, 22, 20))
{
foreach (Chara value4 in cards.globalCharas.Values)
foreach (Chara value5 in cards.globalCharas.Values)
{
value4.SetBool(18, enable: false);
value5.SetBool(18, enable: false);
}
}
if (version.IsBelow(0, 22, 22))
MUTATION
public const int mutationSpeedN = 1519;
public const int mutationSkin = 1510;
public const int mutationRegenN = 1517;
public const int mutationDex = 1514;
public const int mutationRegen = 1516;
public const int mutationDexN = 1515;
public const int mutationDex = 1514;
public const int mutationEyeN = 1513;
public const int mutationSkinN = 1511;
public const int mutationSkin = 1510;
public const int mutationStrN = 1521;
public const int mutationRegen = 1516;
public const int mutationDexN = 1515;
public const int mutationCha = 1522;
public static readonly int[] IDS = new int[40]
{
1520, 1519, 1510, 1517, 1514, 1515, 1513, 1512, 1511, 1521,
1516, 1522, 1518, 1524, 1565, 1564, 1563, 1562, 1523, 1560,
1520, 1519, 1517, 1516, 1514, 1513, 1512, 1511, 1510, 1521,
1515, 1522, 1518, 1524, 1565, 1564, 1563, 1562, 1523, 1560,
1559, 1558, 1557, 1556, 1555, 1554, 1561, 1552, 1553, 1526,
1527, 1528, 1529, 1530, 1525, 1532, 1533, 1550, 1551, 1531
};
MapConfig
public class MapConfig : EClass
[JsonProperty]
public bool retainDecal;
[JsonProperty]
public bool reverseRoof;
[JsonProperty]
public Weather.Condition fixedCondition = Weather.Condition.None;
TaskCullLife
public class TaskCullLife : Task
{
public Point dest;
public HashSet<Chara> listSkip = new HashSet<Chara>();
public static bool CanCull(Card c)
{
if (c.c_minionType == MinionType.Friend)
public override IEnumerable<Status> Run()
fail = true;
return Status.Running;
});
if (!fail && target.IsAliveInCurrentZone)
if (fail || !target.IsAliveInCurrentZone)
{
listSkip.Add(target);
continue;
}
if (owner.Dist(target) > 1)
{
if (owner.Dist(target) > 1)
{
yield return Cancel();
}
owner.PlaySound("shear");
Msg.Say("cull_life", EClass.pc, target);
target.Die();
Thing t = ThingGen.Create("ecopo").SetNum(EClass.rndHalf((int)Mathf.Sqrt(target.LV) + 5));
EClass.pc.Pick(t);
yield return KeepRunning();
yield return Cancel();
}
owner.PlaySound("shear");
Msg.Say("cull_life", EClass.pc, target);
target.Die();
Thing t = ThingGen.Create("ecopo").SetNum(EClass.rndHalf((int)Mathf.Sqrt(target.LV) + 5));
EClass.pc.Pick(t);
yield return KeepRunning();
}
}
public static Chara GetTarget()
public Chara GetTarget()
{
List<Chara> list = new List<Chara>();
foreach (Chara chara in EClass._map.charas)
{
if (CanCull(chara))
if (!listSkip.Contains(chara) && CanCull(chara))
{
list.Add(chara);
}
Trait
{
case ShopType.Moyer:
{
for (int num10 = 1; num10 <= 10; num10++)
for (int num10 = 1; num10 <= 12; num10++)
{
AddAdvWeek(num10);
}
TraitMapBoard
public override void TrySetAct(ActPlan p)
});
return false;
}, owner);
bool flag = !EClass._map.IsIndoor || EClass._zone is Zone_Tent;
if (EClass._map.config.reverseRoof)
{
flag = !flag;
}
p.TrySetAct("actToggleMapRoof".lang((flag ? "on" : "off").lang()), delegate
{
EClass._map.config.reverseRoof = !EClass._map.config.reverseRoof;
SE.ClickOk();
return false;
}, owner);
}
}