Skip to content

EA 23.251 Nightly

December 21, 2025

7 files modified.

Important Changes

None.

AI_Idle

public override IEnumerable<Status> Run()

cs
					owner.Pick(thing);
				}
			}
			if (thing == null && !owner.IsPCParty) 
			if (thing == null && !owner.IsPCFaction) 
			{
				if (!owner.IsPCFaction && EClass.rnd(8) != 0) 
				if (EClass.rnd(8) != 0) 
				{
					owner.hunger.Mod(-30);
				}

BaseTileMap

public virtual void DrawTile()

cs
	bool shadow = liquidLv == 0;
	float num20 = 0f;
	float num21 = 0f;
	bool flag10 = false; 
	float num22 = 0f;
	float num23 = 0f;
	bool flag11 = false; 
	bool flag10 = false; 
	float num24 = 0f;
	bool flag11 = false; 
	float num25 = 0f; 
	if (detail.things.Count > 0 && isSeen)
	{
		_ = zSetting.max1;
		float num25 = 0f; 
		float num26 = 0f; 
		for (int m = 0; m < detail.things.Count; m++)
		{
			Thing t = detail.things[m];

public virtual void DrawTile()

cs
			{
				pref = rendererObjDummy.shadowPref;
			}
			float num26 = ((tileType.UseMountHeight && isInstalled) ? 0f : ((pref.height < 0f) ? 0f : ((pref.height == 0f) ? 0.1f : pref.height))); 
			float num27 = ((tileType.UseMountHeight && isInstalled) ? 0f : ((pref.height < 0f) ? 0f : ((pref.height == 0f) ? 0.1f : pref.height))); 
			if (t.ignoreStackHeight)
			{
				thingPos = Vector3.zero; 
				num23 = 0f; 
				thingPos.y -= num20; 
				thingPos -= altitudeFix * num21; 
			}
			shadow = thingPos.y < 0.16f && num24 < 0.16f; 
			shadow = thingPos.y < 0.16f && num25 < 0.16f; 
			_ = pref.bypassShadow;
			param.shadowFix = 0f - thingPos.y;
			param.liquidLv = ((thingPos.y + (float)t.altitude < 0.1f) ? liquidLv : 0);

public virtual void DrawTile()

cs
				SetRoofHeight(param, this.cell, cx, cz);
				_actorPos.x = param.x;
				_actorPos.y = param.y;
				_actorPos.z = param.z + num25; 
				_actorPos.z = param.z + num26; 
				if (this.room != null)
				{
					param.color = GetRoofLight(this.room.lot);

public virtual void DrawTile()

cs
			else
			{
				param.snow = snowed;
				_actorPos.x = orgX + num21; 
				_actorPos.x = orgX + num23; 
				_actorPos.y = orgY;
				_actorPos.z = orgZ + num25 + thingPos.z; 
				_actorPos.z = orgZ + num26 + thingPos.z; 
				if (tileType.CanStack || !isInstalled)
				{
					if (thing?.id != t.id)

public virtual void DrawTile()

cs
						freePos.z += rampFix2.z;
						if (!this.cell.IsTopWater || t.altitude > 0)
						{
							num24 += rampFix2.y; 
							num25 += rampFix2.y; 
						}
						liquidLv -= (int)(rampFix2.y * 150f);
						if (liquidLv < 0)

public virtual void DrawTile()

cs
					}
					else if (!flag11 && t.trait.IsChangeFloorHeight && !t.ignoreStackHeight)
					{
						orgY += num26 + (float)t.altitude * altitudeFix.y; 
						orgY += num27 + (float)t.altitude * altitudeFix.y; 
						orgZ += (float)t.altitude * altitudeFix.z;
						freePos.y += num26 + (float)t.altitude * altitudeFix.y; 
						freePos.y += num27 + (float)t.altitude * altitudeFix.y; 
						if (!this.cell.IsTopWater || t.altitude > 0)
						{
							num24 += num26 + (float)t.altitude * altitudeFix.y; 
							num25 += num27 + (float)t.altitude * altitudeFix.y; 
						}
						_actorPos.x += pref.x * (float)((!t.flipX) ? 1 : (-1));
						_actorPos.z += pref.z;

public virtual void DrawTile()

cs
					}
					else
					{
						thingPos.y += num26; 
						thingPos.y += num27; 
						if (tileType.UseMountHeight)
						{
							if (tileType != TileType.Illumination || !this.cell.HasObj)

public virtual void DrawTile()

cs
				}
				else
				{
					thingPos.y += num26; 
					thingPos.y += num27; 
					_actorPos.x += pref.x * (float)((!t.flipX) ? 1 : (-1));
					_actorPos.z += pref.z;
					thingPos.z += pref.z;

public virtual void DrawTile()

cs
				if (t.isFloating && isWater && !hasBridge && !flag)
				{
					flag = true;
					float num27 = ((this.cell._bridge != 0) ? sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight); 
					orgY += 0.01f * floatY - num27; 
					float num28 = ((this.cell._bridge != 0) ? sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight); 
					orgY += 0.01f * floatY - num28; 
					if (!t.trait.IsChangeFloorHeight)
					{
						num22 = num26; 
						num24 = num27; 
					}
					_actorPos.y += 0.01f * floatY - num27; 
					_actorPos.y += 0.01f * floatY - num28; 
					if (liquidLv > 10)
					{
						liquidLv = TileType.FloorWaterShallow.LiquidLV * 10;

public virtual void DrawTile()

cs
					}
					param.liquidLv = liquidLv;
				}
				num20 = num26; 
				num20 = num27; 
				if (t.sourceCard.multisize && !t.trait.IsGround)
				{
					num25 += zSetting.multiZ; 
					num26 += zSetting.multiZ; 
				}
				orgZ += t.renderer.data.stackZ;
				if (param.liquidLv > 0)

public virtual void DrawTile()

cs
				if (t.altitude != 0)
				{
					_actorPos += altitudeFix * t.altitude;
					num23 += (float)t.altitude; 
					num22 += (float)t.altitude; 
					num21 = t.altitude; 
				}
				if (num23 >= 2f && ((this.cell.Back.room != null && this.cell.Back.IsRoomEdge) || (this.cell.Left.room != null && this.cell.Left.IsRoomEdge)) && hideHang && (this.cell.room?.lot != currentLot || (!this.cell.lotWall && this.cell.room != currentRoom))) 
				if (num22 >= 2f && ((this.cell.Back.room != null && this.cell.Back.IsRoomEdge) || (this.cell.Left.room != null && this.cell.Left.IsRoomEdge)) && hideHang && (this.cell.room?.lot != currentLot || (!this.cell.lotWall && this.cell.room != currentRoom))) 
				{
					continue;
				}

public virtual void DrawTile()

cs
			{
				if (iconMode != 0)
				{
					int num28 = 0; 
					int num29 = 0; 
					switch (iconMode)
					{
					case CardIconMode.Visibility:
						if (t.isMasked)
						{
							num28 = 17; 
							num29 = 17; 
						}
						break;
					case CardIconMode.State:
						if (t.placeState == PlaceState.installed)
						{
							num28 = 18; 
							num29 = 18; 
						}
						break;
					case CardIconMode.Deconstruct:
						if (t.isDeconstructing)
						{
							num28 = 14; 
							num29 = 14; 
						}
						break;
					}
					if (t.isNPCProperty && !EMono.debug.godBuild)
					{
						num28 = 13; 
						num29 = 13; 
					}
					if (num28 != 0) 
					if (num29 != 0) 
					{
						passGuideBlock.Add(_actorPos.x, _actorPos.y, _actorPos.z - 10f, num28); 
						passGuideBlock.Add(_actorPos.x, _actorPos.y, _actorPos.z - 10f, num29); 
					}
				}
				t.SetRenderParam(param);

public virtual void DrawTile()

cs
			}
			if (isInstalled)
			{
				num21 += pref.stackX * (float)((!t.flipX) ? 1 : (-1)); 
				num23 += pref.stackX * (float)((!t.flipX) ? 1 : (-1)); 
			}
			param.x = orgX;
			param.y = orgY;

public virtual void DrawTile()

cs
			}
		}
	}
	orgY += num22; 
	orgY += num24; 
	if (detail.charas.Count <= 0)
	{
		return;
	}
	param.shadowFix = 0f - num24; 
	param.shadowFix = 0f - num25; 
	param.color += 1310720f;
	float max = zSetting.max2;
	for (int n = 0; n < detail.charas.Count; n++)

public virtual void DrawTile()

cs
				{
					Vector3 position = restrainer.owner.renderer.position;
					float defCharaHeight = EMono.setting.render.defCharaHeight;
					float num29 = getRestrainPos.y + defCharaHeight - ((chara.Pref.height == 0f) ? defCharaHeight : chara.source.pref.height); 
					float num30 = getRestrainPos.y + defCharaHeight - ((chara.Pref.height == 0f) ? defCharaHeight : chara.source.pref.height); 
					_actorPos.x = position.x + getRestrainPos.x * (float)((restrainer.owner.dir % 2 == 0) ? 1 : (-1));
					_actorPos.y = position.y + num29; 
					_actorPos.y = position.y + num30; 
					_actorPos.z = position.z + getRestrainPos.z;
					param.liquidLv = 0;
					param.shadowFix = orgY - _actorPos.y;

public virtual void DrawTile()

cs
		{
			if (chara.IsDeadOrSleeping && chara.IsPCC)
			{
				float num30 = chara.renderer.data.size.y * 0.3f; 
				float num31 = chara.renderer.data.size.y * 0.3f; 
				if (thingPos.y > max)
				{
					thingPos.y = max;
				}
				float num31 = thingPos.y + num30; 
				float num32 = (float)n * -0.01f; 
				if (num31 > zSetting.thresh1) 
				float num32 = thingPos.y + num31; 
				float num33 = (float)n * -0.01f; 
				if (num32 > zSetting.thresh1) 
				{
					num32 = zSetting.mod1; 
					num33 = zSetting.mod1; 
				}
				_actorPos.x += thingPos.x;
				_actorPos.y += thingPos.y;
				_actorPos.z += renderSetting.laydownZ + num32; 
				_actorPos.z += renderSetting.laydownZ + num33; 
				param.liquidLv = ((thingPos.y == 0f && liquidLv > 0) ? 90 : 0);
				thingPos.y += num30 * 0.8f; 
				thingPos.y += num31 * 0.8f; 
				chara.renderer.Draw(param, ref _actorPos, liquidLv == 0);
			}
			else

public virtual void DrawTile()

cs
				{
					if (chara.Pref.FloatUnderwater)
					{
						float num33 = ((this.cell._bridge != 0) ? sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight); 
						float num34 = floatYs[chara.uid % 10] + 10f + (float)(chara.uid % 30); 
						orgY += 0.01f * num34 - num33; 
						_actorPos.y += 0.01f * num34 - num33; 
						param.shadowFix -= 0.01f * num34 - num33; 
						float num34 = ((this.cell._bridge != 0) ? sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight); 
						float num35 = floatYs[chara.uid % 10] + 10f + (float)(chara.uid % 30); 
						orgY += 0.01f * num35 - num34; 
						_actorPos.y += 0.01f * num35 - num34; 
						param.shadowFix -= 0.01f * num35 - num34; 
					}
				}
				else if (liquidLv > 0)

public virtual void DrawTile()

cs
					{
						if (liquidLv > 20)
						{
							float num35 = ((this.cell._bridge != 0) ? sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight); 
							orgY += 0.01f * floatY - num35; 
							_actorPos.y += 0.01f * floatY - num35; 
							int num36 = TileType.FloorWaterShallow.LiquidLV * 10; 
							num36 -= (int)(floatY * 0.5f); 
							param.liquidLv = num36; 
							float num36 = ((this.cell._bridge != 0) ? sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight); 
							orgY += 0.01f * floatY - num36; 
							_actorPos.y += 0.01f * floatY - num36; 
							int num37 = TileType.FloorWaterShallow.LiquidLV * 10; 
							num37 -= (int)(floatY * 0.5f); 
							param.liquidLv = num37; 
						}
						else
						{

public virtual void DrawTile()

cs
			{
				if (sourceEffect2.anime.Length > 2)
				{
					float num37 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.anime[1] % (float)sourceEffect2.anime[2]; 
					if (!(num37 >= (float)sourceEffect2.anime[0])) 
					float num38 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.anime[1] % (float)sourceEffect2.anime[2]; 
					if (!(num38 >= (float)sourceEffect2.anime[0])) 
					{
						param.tile += num37; 
						param.tile += num38; 
					}
				}
				else
				{
					float num38 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.anime[1] % (float)sourceEffect2.anime[0]; 
					param.tile += num38; 
					float num39 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.anime[1] % (float)sourceEffect2.anime[0]; 
					param.tile += num39; 
				}
			}
			if (this.cell.effect.IsFire)

void Draw(int tile)

cs

	public Vector3 GetThingPosition(Card tg, Point p)
	{
		Vector3 vector = Vector3.zero; 
		Vector3 vector2 = vector; 
		Vector3 zero = Vector3.zero; 
		float num = 0f;
		cell = p.cell;
		sourceFloor = cell.sourceFloor;

public Vector3 GetThingPosition(Card tg, Point p)

cs
	{
		if (cell.isFloating && !cell.IsSnowTile)
		{
			vector.z -= 1f; 
			zero.z -= 1f; 
		}
		else if (!tg.sourceCard.multisize)
		{
			float num2 = ((cell._bridge != 0) ? cell.sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight);
			vector.y += num2; 
			vector.z -= num2 * heightMod.z; 
			zero.y += num2; 
			zero.z -= num2 * heightMod.z; 
		}
		if (cell.HasRamp)
		{
			Vector3 rampFix = cell.sourceBlock.tileType.GetRampFix(cell.blockDir);
			vector.x += rampFix.x; 
			vector.y += rampFix.y; 
			vector.z += rampFix.z; 
			zero.x += rampFix.x; 
			zero.y += rampFix.y; 
			zero.z += rampFix.z; 
		}
	}
	if (tg.sourceCard.multisize)
	{
		vector.z -= 1f; 
		zero.z -= 1f; 
	}
	SourcePref pref = tg.Pref;
	vector.x += pref.x * (float)((!tg.flipX) ? 1 : (-1)); 
	vector.z += pref.z; 
	zero.x += pref.x * (float)((!tg.flipX) ? 1 : (-1)); 
	zero.z += pref.z; 
	detail = cell.detail;
	if (tg.isChara)
	{
		return vector; 
		return zero; 
	}
	bool flag = false;
	if (tg.TileType.UseMountHeight && !EMono.scene.actionMode.IsRoofEditMode(tg))

public Vector3 GetThingPosition(Card tg, Point p)

cs
	{
		if (tg.altitude != 0)
		{
			vector += altitudeFix * tg.altitude; 
			zero += altitudeFix * tg.altitude; 
		}
		flag = true;
	}
	if (EMono.scene.actionMode.IsRoofEditMode(tg))
	{
		return vector; 
		return zero; 
	}
	float num3 = 0f;
	if (detail != null && detail.things.Count > 0)

public Vector3 GetThingPosition(Card tg, Point p)

cs
			if (thing.TileType.IsRamp)
			{
				Vector3 rampFix2 = thing.TileType.GetRampFix(thing.dir, pref2);
				vector.x += rampFix2.x; 
				vector.y += rampFix2.y; 
				vector.z += rampFix2.z; 
				zero.x += rampFix2.x; 
				zero.y += rampFix2.y; 
				zero.z += rampFix2.z; 
			}
			if (!flag && tileType.CanStack)
			{
				if (thing.ignoreStackHeight)
				{
					vector = vector2; 
					zero.y -= num3; 
				}
				vector.y += num4; 
				vector.x += pref2.stackX * (float)((!thing.flipX) ? 1 : (-1)); 
				vector.z += pref2.z + thing.renderer.data.stackZ; 
				zero.y += num4; 
				zero.x += pref2.stackX * (float)((!thing.flipX) ? 1 : (-1)); 
				zero.z += pref2.z + thing.renderer.data.stackZ; 
				if (!tileType.UseMountHeight && thing.altitude != 0)
				{
					vector += altitudeFix * thing.altitude; 
					zero += altitudeFix * thing.altitude; 
					num4 += altitudeFix.y * (float)thing.altitude;
				}
				if (thing.trait.IgnoreLastStackHeight && (card == null || !card.trait.IgnoreLastStackHeight))
				{
					vector.y -= num3; 
					zero.y -= num3; 
				}
				num3 = num4;
				vector.z += renderSetting.thingZ + num + (float)i * -0.01f + zSetting.mod1 * vector.y; 
				if (thing.TileType.IsRamp || (thing.trait.IsChangeFloorHeight && !thing.ignoreStackHeight)) 
				zero.z += renderSetting.thingZ + num + (float)i * -0.01f + zSetting.mod1 * zero.y; 
				if (!thing.TileType.IsRamp && thing.trait.IsChangeFloorHeight) 
				{
					vector2 = vector; 
					_ = thing.ignoreStackHeight; 
				}
				if (thing.sourceCard.multisize)
				{

public Vector3 GetThingPosition(Card tg, Point p)

cs
		}
		if (flag)
		{
			return vector; 
			return zero; 
		}
		if (tg.ignoreStackHeight)
		{
			vector = vector2; 
			vector.z += (float)(detail?.things.Count ?? 0) * -0.01f; 
			zero.y -= num3; 
			zero.z += (float)(detail?.things.Count ?? 0) * -0.01f; 
		}
		if (tg.altitude != 0)
		{
			vector += altitudeFix * tg.altitude; 
			zero += altitudeFix * tg.altitude; 
		}
		return vector; 
		return zero; 
	}

	public int GetApproximateBlocklight(Cell cell)

CoreDebug

public void UpdateInput()

cs
		Chara targetChara = EClass.scene.mouseTarget.TargetChara;
		if (targetChara != null)
		{
			EClass.pc.Pick(CraftUtil.MakeBloodMeal(EClass.pc, targetChara)); 
			EClass.pc.Pick(CraftUtil.MakeLoveLunch(targetChara)); 
			EClass.pc.Pick(targetChara.MakeEgg(effect: true, 10));
			EClass.pc.Pick(targetChara.MakeGene()); 
			TraitFoodEggFertilized.Incubate(targetChara.MakeEgg(effect: false, 1, addToZone: false, 100), targetChara.pos.GetNearestPoint(allowBlock: false, allowChara: false));
			targetChara.ScaleByPrincipal(); 
		}
		targetChara.ScaleByPrincipal(); 
		if (EClass.game.quests.Get<QuestDebt>() == null)
		{
			Chara chara = CharaGen.Create("loytel");

DNA

public Element GetInvalidFeat(Chara c)

cs
	for (int i = 0; i < vals.Count; i += 2)
	{
		Element element = Element.Create(vals[i], vals[i + 1]);
		if (element.source.category == "feat" && c.Evalue(element.id) >= element.source.max) 
		if (!(element.source.category == "feat")) 
		{
			return element; 
			continue; 
		} 
		if (c.Evalue(element.id) < element.source.max) 
		{ 
			Element orCreateElement = c.elements.GetOrCreateElement(element.id); 
			if (orCreateElement != null && orCreateElement.vLink == 0) 
			{ 
				continue; 
			} 
		}
		return element; 
	}
	return null;
}

TCOrbitChara

public void RefreshAll()

cs
		if (flag2)
		{
			float x = (float)owner.mana.max / (float)(owner.mana.max + owner.MaxHP);
			bgMP.SetActive(flag2); 
			bgMP.transform.localScale = new Vector3(x, 1f, 1f);
		}
		barHP.transform.SetLocalScaleX(Mathf.Max(0f, num));
		barHP.SetActive(enable: true);
		bgHP.SetActive(enable: true);
		bgMP.SetActive(flag2); 
	}
	else
	{

Thing

public override SourcePref Pref

cs
			{
				return EClass.core.refs.prefs.blockWall;
			}
			if (tileType is TileTypeSlope) 
			{ 
				return EClass.core.refs.prefs.blockStairs; 
			} 
		}
		if (source.origin == null || source.pref.UsePref)
		{

TraitMonsterBall

public override int GetValue()

cs
		{
			return base.GetValue();
		}
		return base.GetValue() * (100 + owner.LV * 15) / 100; 
		long num = (long)base.GetValue() * (long)(100 + owner.LV * 15) / 100; 
		if (num > 214748364) 
		{ 
			num = 214748364L; 
		} 
		return (int)num; 
	}
}