Skip to content

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

public bool IsTooHard

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

public class 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;

public class FACTION

cs

	public const int actBuildMine = 4001;

	public const int bfTranquil = 3703; 
	public const int bfStart = 3900;

	public const int bfChitin = 3805;

public class FACTION

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;

public class FACTION

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 : EClass

FEAT

``

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;

public class FEAT

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;

public class FEAT

cs

	public const int featLuckyCat = 1412;

	public const int featLooter = 1660; 
	public const int featFisher = 1659;

	public const int featChef = 1658;

public class FEAT

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;

public class FEAT

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;

public class FEAT

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 : Element

FOOD

public class FOOD

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;

public class FOOD

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

public void OnLoad()

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

public class 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;

public class MUTATION

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;

public class MUTATION

cs

	public const int etherAddict = 1559;

	public const int mutationSpeed = 1518; 
	public const int mutationSpeedN = 1519; 

	public const int etherHead = 1557;

public class MUTATION

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;

public class MUTATION

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;

public class MUTATION

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 : Feat

RecipeManager

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

public enum Mode

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;

public Thing GetTreasureMap()

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

public bool IsReapSeed

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

public enum Mode

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)
		{