EA 23.199 Nightly
September 15, 2025
13 files modified.
Important Changes
None.
ActThrow
public class ActThrow : ActBaseAttack
cs
public override string GetText(string str = "")
{
string text = "";
if (target != null && pcTarget != null && target.trait is TraitMonsterBall && pcTarget.LV > target.LV)
if (target != null)
{
text = " " + "mb_invalidLV".lang();
TraitMonsterBall traitMonsterBall = target.trait as TraitMonsterBall;
if (pcTarget != null && traitMonsterBall != null && !traitMonsterBall.IsDuponneBall && !traitMonsterBall.IsLittleBall && pcTarget.LV > target.LV)
{
text = " " + "mb_invalidLV".lang();
}
}
return base.GetText(str) + text;
}BaseTaskHarvest
cs
public bool IsHarvest => pos.cell.CanHarvest();
public virtual string IdRecipe => "";
public virtual bool CanReapSeed => pos.cell.CanReapSeed();
public virtual HarvestType harvestType => HarvestType.Block;public override string GetText(string str = "")
cs
}
SetTarget(EClass.pc);
string text = "tHarvest".lang(GetBaseText(str), (EClass.pc.Tool == null) ? "hand".lang() : owner.Tool.NameSimple, toolLv.ToString() ?? "");
if (EClass.pc.HasElement(1661) && EClass.player.recipes.CanCeomUpWithRecipe(IdRecipe))
{
text = text + " " + "TaskDisassemble_newrecipe".lang();
}
text = text + " (" + GetTextDifficulty() + ")";
if (IsTooHard)
{Card
public void DamageHP(int dmg, int ele, int eleP = 100, AttackSource attackSource
cs
{
dmg = dmg * 90 / 100;
}
if (Evalue(971) > 0)
if (HasElement(971))
{
dmg = dmg * 100 / Mathf.Clamp(100 + Evalue(971), 25, 1000);
}FACTION
cs
public const int bfRuin = 3702;
public const int bfLandmark3 = 3782;
public const int bfLandmark2 = 3781;
public const int bfVolcano = 3704;
public const int bfTranquil = 3703;
public const int actBuildInspect = 4006;
public const int actBuildRecipe = 4005;cs
public const int actBuildMine = 4001;
public const int bfTranquil = 3703;
public const int bfStart = 3900;
public const int bfChitin = 3805;cs
public const int bfLandmark4 = 3783;
public const int bfLandmark2 = 3781;
public const int bfLandmark3 = 3782;
public const int bfHunt = 3705;
public const int bfLandmark1 = 3780;cs
public const int bfFish = 3706;
public const int bfHunt = 3705;
public const int bfMushroom = 3801;
public static readonly int[] IDS = new int[53]
{
3500, 3600, 3601, 3603, 3604, 3605, 3700, 2207, 3606, 3602,
2206, 2119, 2204, 2203, 2202, 2201, 2200, 2120, 2118, 2117,
2116, 2115, 3701, 2003, 2205, 3702, 3782, 3704, 4006, 4005,
4004, 4003, 4002, 4001, 3703, 3900, 3805, 3804, 3803, 3802,
4000, 3800, 3784, 3783, 3781, 3780, 3710, 3709, 3708, 3707,
3706, 3705, 3801
2116, 2115, 3701, 2003, 2205, 3702, 3781, 3704, 3703, 4006,
4005, 4004, 4003, 4002, 4001, 3900, 3805, 3804, 3803, 3802,
4000, 3800, 3784, 3783, 3782, 3705, 3780, 3710, 3709, 3708,
3707, 3706, 3801
};
}
public class Faction : EClassFEAT
cs
public class FEAT
{
public const int featSTR = 1620;
public const int featDEX = 1621;
public const int featEND = 1622;
public const int featPER = 1623;
public const int featSPD = 1629;
public const int featLER = 1624;
public const int featMAG = 1625;
public const int featSPD = 1629;
public const int featWIL = 1626;cs
public const int featLuck = 1628;
public const int featLER = 1624;
public const int featSTR = 1620;
public const int featMAG = 1625;
public const int featStamina = 1612;cs
public const int featLuckyCat = 1412;
public const int featLooter = 1660;
public const int featFisher = 1659;
public const int featChef = 1658;cs
public const int featMagicManner = 1651;
public const int featGourmet = 1650;
public const int featEvade = 1632;
public const int featDefender = 1649;
public const int featGourmet = 1650;
public const int featRapidMagic = 1648;cs
public const int featNegotiate = 1634;
public const int featEvade = 1632;
public const int featDefender = 1649;
public const int featEarthStrength = 1411;
public const int featLooter = 1660;
public const int featDismantler = 1661;
public const int featBoost = 1409;cs
public const int featGod_harmony1 = 1335;
public const int featGod_oblivion1 = 1340;
public const int featArcher = 1404;
public const int featGod_trickery1 = 1345;
public const int featFarmer = 1403;
public const int featPaladin2 = 1408;
public const int featWizard = 1402;
public const int featPaladin = 1407;
public const int featThief = 1401;
public const int featTourist = 1406;
public const int featWarrior = 1400;
public const int featPianist = 1405;
public const int featGod_strife1 = 1355;
public const int featGod_luck1 = 1330;
public const int featGod_moonshadow1 = 1350;
public const int featTourist = 1406;
public const int featGod_strife1 = 1355;
public const int featPaladin = 1407;
public const int featWarrior = 1400;
public const int featPaladin2 = 1408;
public const int featThief = 1401;
public const int featGod_moonshadow1 = 1350;
public const int featWizard = 1402;
public const int featGod_trickery1 = 1345;
public const int featFarmer = 1403;
public const int featGod_oblivion1 = 1340;
public const int featArcher = 1404;
public const int featPianist = 1405;
public static readonly int[] IDS = new int[124]
public static readonly int[] IDS = new int[125]
{
1620, 1621, 1622, 1623, 1629, 1625, 1626, 1627, 1628, 1624,
1621, 1622, 1623, 1624, 1629, 1626, 1627, 1628, 1620, 1625,
1612, 1413, 1610, 1422, 1421, 1420, 1419, 1418, 1417, 1416,
1415, 1414, 1630, 1611, 1631, 1647, 1633, 1412, 1659, 1658,
1657, 1656, 1655, 1654, 1653, 1652, 1651, 1650, 1649, 1648,
1646, 1645, 1644, 1643, 1642, 1641, 1640, 1636, 1635, 1634,
1632, 1411, 1660, 1409, 1227, 1228, 1229, 1230, 1231, 1232,
1233, 1234, 1235, 1236, 1237, 1226, 1238, 1241, 1242, 1243,
1244, 1245, 1246, 1247, 1300, 1305, 1310, 1315, 1240, 1320,
1225, 1223, 1202, 1201, 1200, 1410, 1203, 1204, 1205, 1206,
1207, 1208, 1209, 1224, 1210, 1212, 1213, 1214, 1215, 1216,
1217, 1218, 1219, 1220, 1221, 1222, 1211, 1325, 1239, 1335,
1340, 1345, 1408, 1407, 1406, 1405, 1330, 1350, 1355, 1400,
1401, 1402, 1403, 1404
1415, 1414, 1630, 1611, 1631, 1647, 1633, 1412, 1660, 1659,
1658, 1657, 1656, 1655, 1654, 1653, 1652, 1651, 1632, 1650,
1648, 1646, 1645, 1644, 1643, 1642, 1641, 1640, 1636, 1635,
1634, 1649, 1411, 1661, 1409, 1227, 1228, 1229, 1230, 1231,
1232, 1233, 1234, 1235, 1236, 1237, 1226, 1238, 1241, 1242,
1243, 1244, 1245, 1246, 1247, 1300, 1305, 1310, 1315, 1240,
1320, 1225, 1223, 1202, 1201, 1200, 1410, 1203, 1204, 1205,
1206, 1207, 1208, 1209, 1224, 1210, 1212, 1213, 1214, 1215,
1216, 1217, 1218, 1219, 1220, 1221, 1222, 1211, 1325, 1239,
1335, 1404, 1403, 1402, 1401, 1400, 1355, 1330, 1406, 1407,
1408, 1350, 1345, 1340, 1405
};
}
public class Feat : ElementFOOD
cs
public const int food_poison = 702;
public const int food_god = 758;
public const int food_love = 703;
public const int food_bug = 704;
public const int creativeDish = 764;
public const int food_love = 703;
public const int food_god = 758;
public const int justcooked = 757;cs
public const int gainWeight = 705;
public const int food_bug = 704;
public const int food_human = 708;
public static readonly int[] IDS = new int[13]
{
701, 702, 758, 764, 703, 757, 709, 700, 707, 706,
705, 704, 708
701, 702, 703, 704, 764, 758, 757, 709, 700, 707,
706, 705, 708
};
}Game
cs
{
}
}
if (version.IsBelow(0, 23, 199) && EClass.game.quests.GetPhase<QuestNegotiationDarkness>() >= 3)
{
world.SendPackage(ThingGen.CreateParcel(null, ThingGen.Create("bone_duponne")));
}
if (version.IsBelow(0, 23, 195))
{
Zone zone = spatials.Find("startVillage2");MUTATION
cs
public class MUTATION
{
public const int mutationSkin = 1510;
public const int mutationSpeed = 1518;
public const int mutationSkinN = 1511;
public const int mutationEyeN = 1513;
public const int mutationEye = 1512;
public const int mutationDex = 1514;cs
public const int mutationRegenN = 1517;
public const int mutationEye = 1512;
public const int mutationSkin = 1510;
public const int mutationSpeedN = 1519;
public const int mutationEyeN = 1513;
public const int mutationStr = 1520;
public const int etherPoisonHand = 1565;cs
public const int etherAddict = 1559;
public const int mutationSpeed = 1518;
public const int mutationSpeedN = 1519;
public const int etherHead = 1557;cs
public const int etherFeet = 1552;
public const int etherUgly = 1551;
public const int etherRain = 1558;
public const int mutationHairN = 1533;
public const int etherGravity = 1550;
public const int mutationStr = 1520;
public const int etherUgly = 1551;
public const int mutationStrN = 1521;cs
public const int mutationChaN = 1523;
public const int mutationBrainN = 1525;
public const int mutationBrain = 1524;
public const int mutationCold = 1526;
public const int mutationBrain = 1524;
public const int mutationColdN = 1527;
public const int mutationLightning = 1528;
public const int mutationBrainN = 1525;
public const int mutationLightningN = 1529;cs
public const int mutationHair = 1532;
public const int mutationColdN = 1527;
public const int mutationHairN = 1533;
public const int mutationLightning = 1528;
public static readonly int[] IDS = new int[40]
{
1510, 1511, 1513, 1514, 1515, 1516, 1517, 1512, 1519, 1565,
1564, 1563, 1562, 1561, 1560, 1559, 1518, 1557, 1556, 1555,
1554, 1553, 1552, 1551, 1558, 1533, 1550, 1520, 1521, 1522,
1523, 1525, 1526, 1524, 1528, 1529, 1530, 1531, 1532, 1527
1518, 1511, 1512, 1514, 1515, 1516, 1517, 1510, 1513, 1520,
1565, 1564, 1563, 1562, 1561, 1560, 1559, 1519, 1557, 1556,
1555, 1554, 1553, 1552, 1558, 1550, 1551, 1521, 1522, 1523,
1524, 1526, 1527, 1525, 1529, 1530, 1531, 1532, 1533, 1528
};
}
public class Mutation : FeatRecipeManager
public void ComeUpWithRecipe(string idRecipe, int chanceForRandomRecipe = 0)
cs
return;
}
RecipeSource recipeSource = Get(idRecipe);
if (EClass.rnd(10) != 0 && !EClass.debug.enable)
int num = EClass.pc.Evalue(1661);
if (EClass.rnd((num >= 2) ? 5 : ((num == 1) ? 8 : 10)) != 0 && !EClass.debug.enable)
{
return;
}TaskDig
cs
public override HarvestType harvestType => HarvestType.Floor;
public override string IdRecipe
{
get
{
if (!pos.HasBridge)
{
return pos.sourceFloor.RecipeID;
}
return pos.sourceBridge.RecipeID;
}
}
public override int RightHand => 1101;
public override bool IsHostileAct => true;cs
public override void OnProgressComplete()
{
string idRecipe = (pos.HasBridge ? pos.sourceBridge.RecipeID : pos.sourceFloor.RecipeID);
string idRecipe = IdRecipe;
int num = (pos.HasBridge ? pos.matBridge.hardness : pos.matFloor.hardness);
if (EClass._zone.IsRegion)
{TaskHarvest
cs
public override HarvestType harvestType => mode;
public override string IdRecipe
{
get
{
if (!IsObj)
{
if (target == null)
{
return "";
}
return target.source.RecipeID;
}
return pos.sourceObj.RecipeID;
}
}
public override int RightHand => 1005;
public override int destDist => 1;public override string GetBaseText(string str)
cs
}
if (mode == HarvestType.Disassemble)
{
string text = (HaveHarvestThing() ? "TaskDisassemble" : "TaskDisassemble_destroy").lang();
string idRecipe = (IsObj ? pos.sourceObj.RecipeID : ((target != null) ? target.source.RecipeID : ""));
if (EClass.debug.enable && EClass.player.recipes.CanCeomUpWithRecipe(idRecipe))
{
text = text + " " + "TaskDisassemble_newrecipe".lang();
}
return text;
return (HaveHarvestThing() ? "TaskDisassemble" : "TaskDisassemble_destroy").lang();
}
if (!base.IsHarvest)
{public override void OnCreateProgress(Progress_Custom p)
cs
};
p.onProgressComplete = delegate
{
string idRecipe = (IsObj ? pos.sourceObj.RecipeID : ((target != null) ? target.source.RecipeID : ""));
string idRecipe = IdRecipe;
SourceBacker.Row backerObj = EClass._map.GetBackerObj(pos);
int num2 = ((EClass.rnd(3) != 0) ? 1 : 0);
if (IsObj)TaskMine
cs
public override HarvestType harvestType => HarvestType.Block;
public override string IdRecipe => pos.sourceBlock.RecipeID;
public override int destDist => 1;
public override bool isBlock => true;public override HitResult GetHitResult()
cs
public override void OnProgressComplete()
{
string recipeID = pos.sourceBlock.RecipeID;
string idRecipe = IdRecipe;
int hardness = pos.matBlock.hardness;
switch (mode)
{public override void OnProgressComplete()
cs
}
if (owner != null && owner.IsPC)
{
EClass.player.recipes.ComeUpWithRecipe(recipeID, 30);
EClass.player.recipes.ComeUpWithRecipe(idRecipe, 30);
}
mined = true;
}Zone
public Chara SpawnMob(Point pos = null, SpawnSetting setting = null)
cs
biome = ((EClass.rnd(4) != 0) ? EClass.core.refs.biomes.Water : EClass.core.refs.biomes.Sand);
}
SpawnList spawnList = null;
spawnList = ((setting.idSpawnList != null) ? SpawnList.Get(setting.idSpawnList) : ((EClass._zone is Zone_DungeonYeek && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_yeek", (SourceChara.Row r) => r.race == "yeek") : ((EClass._zone is Zone_DungeonMino && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_mino", (SourceChara.Row r) => r.race == "minotaur") : ((setting.hostility == SpawnHostility.Neutral || (setting.hostility != SpawnHostility.Enemy && Rand.Range(0f, 1f) < ChanceSpawnNeutral)) ? SpawnList.Get("c_neutral") : ((biome.spawn.chara.Count <= 0) ? SpawnList.Get(biome.name, "chara", new CharaFilter
spawnList = ((setting.idSpawnList != null) ? SpawnList.Get(setting.idSpawnList) : ((EClass._zone is Zone_DungeonYeek && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_yeek", (SourceChara.Row r) => r.race == "yeek" && r.quality == 0) : ((EClass._zone is Zone_DungeonMino && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_mino", (SourceChara.Row r) => r.race == "minotaur" && r.quality == 0) : ((setting.hostility == SpawnHostility.Neutral || (setting.hostility != SpawnHostility.Enemy && Rand.Range(0f, 1f) < ChanceSpawnNeutral)) ? SpawnList.Get("c_neutral") : ((biome.spawn.chara.Count <= 0) ? SpawnList.Get(biome.name, "chara", new CharaFilter
{
ShouldPass = delegate(SourceChara.Row s)
{