Skip to content

EA 23.52 Nightly

December 8, 2024

21 files modified. 2 new files created.

Important Changes

None.

ActEffect

@@ -517,6 +517,7 @@ public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po

cs
			}
			chara2 = actRef.n1 switch
			{
				"yeek" => CharaGen.CreateFromFilter(SpawnListChara.Get("yeek", (SourceChara.Row r) => r.race == "yeek"), power / 10),  
				"pawn" => CharaGen.CreateFromFilter("c_pawn", power / 10), 
				"monster" => CharaGen.CreateFromFilter("c_dungeon", power / 10), 
				"animal" => CharaGen.CreateFromFilter("c_animal", power / 15),

ActPlan

@@ -824,7 +824,7 @@ void func()

cs
		{
			showOrder = true;
		}
		if (input == ActInput.AllAction && EClass.pc.held != null) 
		if (input == ActInput.AllAction && EClass.pc.held != null && !EClass.pc.held.trait.CanOnlyCarry) 
		{
			TrySetAct("actDrop", delegate
			{

Chara

@@ -1508,8 +1508,8 @@ public Chara Duplicate()

cs
	}
	chara.SetFaith(faith);
	chara.bio = IO.DeepCopy(bio);
	chara.hp = Mathf.Max(0, (int)((float)chara.MaxHP * ((float)base.hp / (float)MaxHP) * 0.99f)); 
	chara.LV = base.LV;
	chara.hp = (int)Mathf.Clamp((float)chara.MaxHP * ((float)base.hp / (float)MaxHP) * 0.99f, 0f, chara.MaxHP); 
	chara.isCopy = true;
	if (HaveFur())
	{

ContentConfigOther

@@ -1,3 +1,7 @@

cs
using System; 
using System.IO; 
using SFB; 
using UnityEngine; 
using UnityEngine.UI;

public class ContentConfigOther : ContentConfig

@@ -20,6 +24,8 @@ public class ContentConfigOther : ContentConfig

cs

	public UIButton toggleDisableMods;

	public UIButton buttonWallPaper; 

	public UIDropdown ddSnap;

	public UIDropdown ddDivider;

@@ -92,6 +98,7 @@ public override void OnInstantiate()

cs
			EClass.ui.GetLayer<LayerConfig>().Close();
			EClass.ui.AddLayer<LayerConfig>();
		});
		buttonWallPaper.SetActive(base.config.HasBackerRewardCode()); 
		RefreshRewardCode();
	}

@@ -133,12 +140,37 @@ public void OpenBackerCodeInput()

cs
				{
					base.config.rewardCode = text;
					SE.Change();
					EClass.ui.GetLayer<LayerConfig>().Close(); 
					EClass.ui.AddLayer<LayerConfig>(); 
				}
				else
				{
					Dialog.Ok("invalidRewardCode".lang(text));
				}
				RefreshRewardCode(); 
			} 
		}); 
	} 

	public void OnClickDownloadWallpaper() 
	{ 
		EClass.core.WaitForEndOfFrame(delegate
		{ 
			string text = StandaloneFileBrowser.SaveFilePanel("Export Wallpaper", CorePath.RootData, "wallpaper", "zip"); 
			Debug.Log(text); 
			if (!string.IsNullOrEmpty(text)) 
			{ 
				try
				{ 
					TextAsset textAsset = Resources.Load("Etc/wallpaper") as TextAsset; 
					Debug.Log(textAsset); 
					File.WriteAllBytes(text, textAsset.bytes); 
					EClass.ui.Say("umimyaaThankyou"); 
					SE.Play("godbless"); 
				} 
				catch (Exception ex) 
				{ 
					EClass.ui.Say(ex.Message); 
				} 
			}
		});
	}

CoreDebug

@@ -1856,7 +1856,14 @@ public static string SetElement(string alias, int value, int potential = 100)

cs
		{
			return "Element not found.";
		}
		EClass.pc.elements.SetBase(row.id, value, potential); 
		if (row.type == "Feat") 
		{ 
			EClass.pc.SetFeat(row.id, value, msg: true); 
		} 
		else
		{ 
			EClass.pc.elements.SetBase(row.id, value, potential); 
		} 
		return "Done.";
	}

@@ -2115,7 +2122,7 @@ public static string LastWish(string name)

cs
	{
		if (row.name.Contains(name) || row.id.ToString() == name)
		{
			text = text + row.name + " valid?:" + row.valid + " lang:" + row.lang + " type:" + row.type + " destroyed:" + EClass.player.doneBackers.Contains(row.id) + " loc:" + (row.loc.IsEmpty() ? "random" : row.loc) + Environment.NewLine; 
			text = text + row.id + " valid?:" + row.valid + " lang:" + row.lang + " type:" + row.type + " destroyed:" + EClass.player.doneBackers.Contains(row.id) + " loc:" + (row.loc.IsEmpty() ? "random" : row.loc) + Environment.NewLine; 
		}
	}
	if (text == "")

DramaOutcome

@@ -52,11 +52,6 @@ public void OnClaimLand()

cs
		EMono.game.quests.globalList.Add(Quest.Create("defense").SetClient(c, assignQuest: false));
		EMono.game.quests.Get<QuestHome>().ChangePhase(2);
		AddMaid();
		if ((bool)WidgetCurrentTool.Instance) 
		{ 
			WidgetCurrentTool.Instance.transHighlightSwitch.SetActive(enable: true); 
			EMono.player.flags.toggleHotbarHighlightDisabled = false; 
		} 
	}

	public void AddMaid()

FEAT

@@ -65,7 +65,7 @@ public class FEAT

cs

	public const int featHeavyCasting = 1654;

	public const int featDreamWaker = 1653; 
	public const int featRapidArrow = 1652; 

	public const int featMagicManner = 1651;

@@ -103,7 +103,7 @@ public class FEAT

cs

	public const int featBoost = 1409;

	public const int featRapidArrow = 1652; 
	public const int featDreamWaker = 1653; 

	public const int featPaladin = 1407;

@@ -228,9 +228,9 @@ public class FEAT

cs
	1611, 1626, 1625, 1624, 1623, 1622, 1621, 1620, 1612, 1627,
	1417, 1421, 1420, 1419, 1418, 1416, 1415, 1414, 1413, 1412,
	1411, 1628, 1610, 1629, 1645, 1631, 1410, 1657, 1656, 1655,
	1654, 1653, 1651, 1650, 1649, 1648, 1630, 1647, 1644, 1643, 
	1654, 1652, 1651, 1650, 1649, 1648, 1630, 1647, 1644, 1643, 
	1642, 1641, 1640, 1636, 1635, 1634, 1633, 1632, 1646, 1409,
	1652, 1407, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 
	1653, 1407, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 
	1231, 1222, 1233, 1235, 1236, 1237, 1300, 1305, 1310, 1315,
	1320, 1325, 1234, 1330, 1221, 1219, 1408, 1200, 1201, 1202,
	1203, 1204, 1205, 1206, 1207, 1220, 1208, 1210, 1211, 1212,

Game

@@ -437,6 +437,10 @@ public void OnLoad()

cs
			}
		}
	});
	if (version.IsBelow(0, 23, 52)) 
	{ 
		player.flags.toggleHotbarHighlightActivated = true; 
	} 
	if (version.IsBelow(0, 23, 51))
	{
		foreach (Chara value2 in EClass.game.cards.globalCharas.Values)

GameUpdater

@@ -291,14 +291,17 @@ public override void FixedUpdate()

cs
			Chara chara = charas[index];
			for (int num = chara.conditions.Count - 1; num >= 0; num--)
			{
				Condition condition = chara.conditions[num]; 
				if (condition.TimeBased) 
				if (num < chara.conditions.Count) 
				{
					condition.Tick(); 
				} 
				if (chara.isDead) 
				{ 
					break; 
					Condition condition = chara.conditions[num]; 
					if (condition.TimeBased) 
					{ 
						condition.Tick(); 
					} 
					if (chara.isDead) 
					{ 
						break; 
					} 
				}
			}
		}

InvOwnerHotbar

@@ -53,5 +53,11 @@ public override void OnProcess(Thing t)

cs
		{
			WidgetCurrentTool.Instance.Reselect();
		}
		if (!EClass.player.flags.toggleHotbarHighlightActivated && (bool)WidgetCurrentTool.Instance) 
		{ 
			WidgetCurrentTool.Instance.transHighlightSwitch.SetActive(enable: true); 
			EClass.player.flags.toggleHotbarHighlightActivated = true; 
			EClass.player.flags.toggleHotbarHighlightDisabled = false; 
		} 
	}
}

Lot

@@ -176,6 +176,8 @@ public void SetBaseRoom(Room r)

cs
		{
			if (num10 < num8 - 1 || num9 < 0 || num10 < 0 || num9 >= EClass._map.Size || num10 >= EClass._map.Size)
			{
				num9++; 
				num10--; 
				continue;
			}
			Cell cell = EClass._map.cells[num9, num10];

MUTATION

@@ -6,9 +6,9 @@ public class MUTATION

cs

	public const int mutationDex = 1514;

	public const int mutationSkin = 1510; 
	public const int mutationEyeN = 1513; 

	public const int mutationEye = 1512; 
	public const int mutationSkin = 1510; 

	public const int mutationSkinN = 1511;

@@ -16,7 +16,7 @@ public class MUTATION

cs

	public const int mutationRegenN = 1517;

	public const int mutationEyeN = 1513; 
	public const int mutationEye = 1512; 

	public const int mutationSpeed = 1518;

@@ -78,7 +78,7 @@ public class MUTATION

cs

	public static readonly int[] IDS = new int[38]
	{
		1516, 1515, 1514, 1510, 1512, 1511, 1563, 1517, 1513, 1518, 
		1516, 1515, 1514, 1513, 1510, 1511, 1563, 1517, 1512, 1518, 
		1564, 1520, 1565, 1519, 1561, 1560, 1559, 1558, 1557, 1556,
		1555, 1554, 1553, 1552, 1551, 1562, 1521, 1531, 1530, 1529,
		1528, 1527, 1526, 1525, 1524, 1523, 1522, 1550

Player

@@ -407,6 +407,18 @@ public bool magicChestSent

cs
			}
		}

		public bool toggleHotbarHighlightActivated 
		{ 
			get 
			{ 
				return bits[22]; 
			} 
			set 
			{ 
				bits[22] = value; 
			} 
		} 

		public int start
		{
			get

Room

@@ -157,6 +157,8 @@ public void Refresh()

cs
		{
			if (num12 < num10 - 1 || num11 < 0 || num12 < 0 || num11 >= EClass._map.Size || num12 >= EClass._map.Size)
			{
				num11++; 
				num12--; 
				continue;
			}
			Cell cell2 = EClass._map.cells[num11, num12];

SKILL

@@ -118,7 +118,7 @@ public class SKILL

cs

	public const int weaponGun = 105;

	public const int weaponPolearm = 106; 
	public const int weaponDagger = 107; 

	public const int throwing = 108;

@@ -130,7 +130,7 @@ public class SKILL

cs

	public const int gathering = 250;

	public const int weaponDagger = 107; 
	public const int weaponPolearm = 106; 

	public const int blacksmith = 256;

@@ -269,8 +269,8 @@ public class SKILL

cs
	51, 150, 227, 225, 220, 210, 207, 200, 152, 226,
	55, 101, 57, 245, 62, 64, 65, 66, 67, 68,
	70, 71, 72, 73, 74, 75, 76, 56, 77, 79,
	80, 90, 91, 92, 100, 102, 103, 104, 105, 106, 
	108, 61, 60, 78, 250, 107, 256, 916, 917, 918, 
	80, 90, 91, 92, 100, 102, 103, 104, 105, 107, 
	108, 61, 60, 78, 250, 106, 256, 916, 917, 918, 
	920, 921, 922, 923, 924, 925, 950, 951, 952, 953,
	954, 955, 956, 957, 958, 959, 960, 961, 962, 963,
	964, 965, 970, 971, 972, 255, 915, 914, 919, 912,

SPELL

@@ -38,10 +38,10 @@ public class SPELL

cs

	public const int miasma_Sound = 50707;

	public const int hand_Cut = 50414; 

	public const int miasma_Poison = 50705;

	public const int hand_Cut = 50414; 

	public const int funnel_Poison = 50605;

	public const int arrow_Poison = 50505;

@@ -56,10 +56,10 @@ public class SPELL

cs

	public const int weapon_Darkness = 50803;

	public const int puddle_Darkness = 50903; 

	public const int miasma_Cut = 50714;

	public const int puddle_Darkness = 50903; 

	public const int ball_Mind = 50104;

	public const int bolt_Mind = 50304;

@@ -72,10 +72,10 @@ public class SPELL

cs

	public const int miasma_Mind = 50704;

	public const int weapon_Mind = 50804; 

	public const int funnel_Cut = 50614;

	public const int weapon_Mind = 50804; 

	public const int puddle_Mind = 50904;

	public const int ball_Poison = 50105;

@@ -186,7 +186,7 @@ public class SPELL

cs

	public const int hand_Ether = 50412;

	public const int SpExterminate = 9160; 
	public const int SpEarthquake = 9151; 

	public const int puddle_Lightning = 50902;

@@ -210,10 +210,10 @@ public class SPELL

cs

	public const int SpHealOdina = 8405;

	public const int SpChangeMaterialG = 8286; 

	public const int SpHealJure = 8406;

	public const int SpRevive = 8430; 

	public const int SpHOT = 8450;

	public const int SpRestoreBody = 8470;

@@ -234,11 +234,13 @@ public class SPELL

cs

	public const int SpWisdom = 8503;

	public const int SpRevive = 8430; 
	public const int SpHero = 8504; 

	public const int SpChangeMaterial = 8285; 
	public const int SpChangeMaterialG = 8286; 

	public const int SpChangeMaterialLesser = 8284; 
	public const int SpResEle = 8506; 

	public const int SpChangeMaterial = 8285; 

	public const int SpFaith = 8281;

@@ -288,13 +290,13 @@ public class SPELL

cs

	public const int SpLighten = 8280;

	public const int SpHero = 8504; 
	public const int SpChangeMaterialLesser = 8284; 

	public const int SpResEle = 8506; 
	public const int ball_Darkness = 50103; 

	public const int SpSpeedUp = 8510;

	public const int SpSilence = 8700; 
	public const int SpWeakness = 8702; 

	public const int ball_Fire = 50100;

@@ -344,14 +346,12 @@ public class SPELL

cs

	public const int SpDrawBacker = 9503;

	public const int ball_Darkness = 50103; 
	public const int SpSilence = 8700; 

	public const int SpDrawMetal = 9502;

	public const int SpWardMonster = 9500;

	public const int SpWeakness = 8702; 

	public const int SpWeakResEle = 8704;

	public const int SpBane = 8706;

@@ -388,11 +388,13 @@ public class SPELL

cs

	public const int SpSummonPawn = 9005;

	public const int SpSummonYeek = 9006; 

	public const int SpSummonShadow = 9050;

	public const int SpMeteor = 9150;

	public const int SpEarthquake = 9151; 
	public const int SpExterminate = 9160; 

	public const int SpShutterHex = 9200;

@@ -400,28 +402,29 @@ public class SPELL

cs

	public const int puddle_Cut = 50914;

	public static readonly int[] IDS = new int[200] 
	public static readonly int[] IDS = new int[201] 
	{
		50413, 50805, 50905, 50106, 50314, 50306, 50406, 50506, 50606, 50706,
		50806, 50906, 50107, 50114, 50307, 50407, 50507, 50607, 50707, 50414, 
		50705, 50605, 50505, 50403, 50503, 50603, 50703, 50803, 50903, 50714, 
		50104, 50304, 50807, 50404, 50604, 50704, 50804, 50614, 50904, 50105, 
		50806, 50906, 50107, 50114, 50307, 50407, 50507, 50607, 50707, 50705, 
		50414, 50605, 50505, 50403, 50503, 50603, 50703, 50803, 50714, 50903, 
		50104, 50304, 50807, 50404, 50604, 50704, 50614, 50804, 50904, 50105, 
		50514, 50305, 50405, 50504, 50313, 50907, 50913, 50910, 50111, 50613,
		50311, 50411, 50511, 50611, 50711, 50811, 50810, 50911, 50513, 50312,
		50303, 50512, 50612, 50712, 50812, 50912, 50113, 50112, 50108, 50710,
		50510, 50308, 50408, 50508, 50608, 50708, 50808, 50908, 50109, 50813,
		50610, 50309, 50509, 50609, 50709, 50809, 50909, 50110, 50713, 50310,
		50410, 50409, 50412, 9160, 50902, 8288, 8300, 8380, 8390, 8400, 
		8401, 8402, 8403, 8404, 8405, 8286, 8406, 8450, 8470, 8471, 
		8480, 8490, 8491, 8500, 8501, 8502, 8503, 8430, 8285, 8284, 
		8281, 50814, 7001, 7002, 7003, 7004, 7005, 7006, 7007, 7800, 
		8200, 8201, 8220, 8221, 8230, 8232, 8240, 8241, 8250, 8251, 
		8255, 8256, 8260, 8280, 8504, 8506, 8510, 8700, 50100, 50300, 
		50400, 50500, 50600, 50700, 50800, 50900, 50101, 50301, 50401, 50501, 
		50601, 50701, 50801, 50901, 50102, 50302, 50402, 50502, 50602, 50702, 
		50802, 9503, 50103, 9502, 9500, 8702, 8704, 8706, 8708, 8710, 
		50410, 50409, 50412, 9151, 50902, 8288, 8300, 8380, 8390, 8400, 
		8401, 8402, 8403, 8404, 8405, 8406, 8430, 8450, 8470, 8471, 
		8480, 8490, 8491, 8500, 8501, 8502, 8503, 8504, 8286, 8506, 
		8285, 8281, 50814, 7001, 7002, 7003, 7004, 7005, 7006, 7007, 
		7800, 8200, 8201, 8220, 8221, 8230, 8232, 8240, 8241, 8250, 
		8251, 8255, 8256, 8260, 8280, 8284, 50103, 8510, 8702, 50100, 
		50300, 50400, 50500, 50600, 50700, 50800, 50900, 50101, 50301, 50401, 
		50501, 50601, 50701, 50801, 50901, 50102, 50302, 50402, 50502, 50602, 
		50702, 50802, 9503, 8700, 9502, 9500, 8704, 8706, 8708, 8710, 
		8770, 8775, 8776, 8780, 8790, 8791, 8800, 8801, 9000, 9001,
		9002, 9003, 9004, 9005, 9050, 9150, 9151, 9200, 9501, 50914
		9002, 9003, 9004, 9005, 9006, 9050, 9150, 9160, 9200, 9501, 
		50914
	};
}
public class Spell : Ability

TaskHarvest

@@ -377,7 +377,7 @@ public override void OnCreateProgress(Progress_Custom p)

cs
						thing.c_priceFix = -100;
						break;
					case 2531:
						thing.MakeFoodFrom("putty"); 
						thing.MakeFoodFrom("cloud_electric"); 
						break;
					case 1027:
						thing.ChangeMaterial(25);

ThingContainer

@@ -400,6 +400,10 @@ public DestData GetDest(Thing t, bool tryStack = true)

cs
		SearchDest(this, searchEmpty: true, searchStack: true);
		return d;
	}
	if (t.trait.CanOnlyCarry && IsFull()) 
	{ 
		return d; 
	} 
	ContainerFlag flag = t.category.GetRoot().id.ToEnum<ContainerFlag>();
	if (flag == ContainerFlag.none)
	{

Zone

@@ -2489,7 +2489,7 @@ public Chara SpawnMob(Point pos = null, SpawnSetting setting = null)

cs
	}
	BiomeProfile biome = pos.cell.biome;
	SpawnList spawnList = null;
	spawnList = ((setting.idSpawnList != null) ? SpawnList.Get(setting.idSpawnList) : ((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) ? SpawnListChara.Get("dungeon_yeek", (SourceChara.Row r) => r.race == "yeek") : ((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)
		{

@@ -2499,7 +2499,7 @@ public Chara SpawnMob(Point pos = null, SpawnSetting setting = null)

cs
			}
			return s.biome == biome.name || s.biome.IsEmpty();
		}
	}) : SpawnList.Get(biome.spawn.GetRandomCharaId())))); 
	}) : SpawnList.Get(biome.spawn.GetRandomCharaId()))))); 
	int dangerLv = DangerLv;
	CardBlueprint cardBlueprint = new CardBlueprint
	{

Zone_DungeonPuppy

@@ -1,19 +1,9 @@

cs
public class Zone_DungeonPuppy : Zone_Dungeon
public class Zone_DungeonPuppy : Zone_DungeonUnfixed
{
	public override bool WillAutoSave => false; 

	public int LvPoppy => -2;

	public override bool RegenerateOnEnter => true; 

	public override bool LockExit => base.lv <= LvPoppy;

	public override float BigDaddyChance => 0f; 

	public override float ShrineChance => 0f; 

	public override int ExpireDays => 1; 

	public override void OnGenerateMap()
	{
		if (base.lv <= LvPoppy)

+Zone_DungeonUnfixed

File Created
cs
public class Zone_DungeonUnfixed : Zone_Dungeon
{
	public override bool WillAutoSave => false;

	public override float BigDaddyChance => 0f;

	public override float ShrineChance => 0f;

	public override int ExpireDays => 1;

	public override bool RegenerateOnEnter => true;
}

+Zone_DungeonYeek

File Created
cs
public class Zone_DungeonYeek : Zone_DungeonUnfixed
{
	public override bool LockExit => base.lv <= -4;
}