Skip to content

EA 23.317 Nightly โ€‹

June 16, 2026

14 files modified.

Important Changes โ€‹

Possible breaking changes. Click the filename to view the chunk.

Card (1) โ€‹

cs
public Card MakeFoodFrom(Card c) 
public Card MakeFoodFrom(Card c, bool makeRef = true) 

ActRanged โ€‹

public static bool TryReload(Thing weapon, Thing ammo = null)

cs
	}
	if (weapon.ammoData != null)
	{
		if (weapon.ammoData.Num > 0) 
		if (weapon.ammoData.Num > 0 && !(weapon.ammoData.trait is TraitAmmoTalisman)) 
		{
			Act.CC.Pick(weapon.ammoData);
		}

ActWater โ€‹

using System.Collections.Generic;

cs
using System.Collections.Generic; 
using UnityEngine; 
public class ActWater : Act
{
	public TraitToolWaterCan waterCan;

public override bool CanPerform()

cs
	public override bool Perform()
	{
		Act.CC.Say("water_ground", Act.CC);
		if (!Act.TP.cell.IsTopWater && !Act.TP.cell.IsSnowTile) 
		int num = waterCan.owner.Evalue(770); 
		num = ((num <= 0) ? 1 : Mathf.Min(waterCan.owner.c_charges, 2 + num / 10)); 
		if (num > 1) 
		{
			Act.TP.cell.isWatered = true; 
			List<Point> list = EClass._map.ListPointsInCircle(Act.TP, num); 
			list.Sort((Point a, Point b) => a.Distance(Act.TP) - b.Distance(Act.TP)); 
			foreach (Point item in list) 
			{ 
				if (!IsWaterCanValid()) 
				{ 
					break; 
				} 
				Water(item); 
			} 
		}
		foreach (Chara chara in Act.TP.Charas) 
		else
		{ 
			Water(Act.TP); 
		} 
		Act.CC.PlaySound("water_farm"); 
		waterCan.owner.ModCharge(-num); 
		return base.Perform(); 
		static void Water(Point pos) 
		{
			bool flag = false; 
			if (chara.HasCondition<ConBurning>()) 
			if (!pos.cell.IsTopWater && !pos.cell.IsSnowTile) 
			{
				flag = true; 
				chara.Talk("thanks"); 
				pos.cell.isWatered = true; 
			}
			else if (!chara.IsPCParty && EClass.rnd(2) == 0) 
			foreach (Chara chara in pos.Charas) 
			{
				chara.Say("water_evade", chara); 
				if (!chara.IsHostile()) 
				bool flag = false; 
				if (chara.HasCondition<ConBurning>()) 
				{
					chara.Talk("scold"); 
					flag = true; 
					chara.Talk("thanks"); 
				} 
				else if (!chara.IsPCParty && EClass.rnd(2) == 0) 
				{ 
					chara.Say("water_evade", chara); 
					if (!chara.IsHostile()) 
					{ 
						chara.Talk("scold"); 
					} 
					continue; 
				} 
				chara.AddCondition<ConWet>(); 
				if (!flag) 
				{ 
					Act.CC.DoHostileAction(chara); 
				}
				continue; 
			} 
			chara.AddCondition<ConWet>(); 
			if (!flag) 
			{ 
				Act.CC.DoHostileAction(chara); 
			}
		}
		Act.CC.PlaySound("water_farm"); 
		waterCan.owner.ModCharge(-1); 
		return base.Perform(); 
	}

	public bool IsWaterCanValid(bool msg = true)

CTAG โ€‹

public enum CTAG

cs
	antiSpider,
	shield,
	humanSpeak,
	throwBall 
	throwBall, 
	alwaysDropCorpse 
}

Card โ€‹

public void SpawnLoot(Card origin)

cs
			list.Add(thing2);
		}
	}
	bool flag2 = Chara.race.corpse[1].ToInt() > EClass.rnd(1500) || (Chara.IsPowerful && !IsPCFaction) || EClass.debug.godFood; 
	bool flag2 = Chara.race.corpse[1].ToInt() > EClass.rnd(1500) || (Chara.IsPowerful && !IsPCFaction) || EClass.debug.godFood || HasTag(CTAG.alwaysDropCorpse); 
	int num = 1;
	if (!IsMinion && Chara.IsAnimal && EClass.rnd(EClass._zone.IsPCFaction ? 3 : 5) == 0)
	{

public void SpawnLoot(Card origin)

cs
	}
	if (flag2 && !isUserZone)
	{
		string text = Chara.race.corpse[0]; 
		bool num2 = text == "_meat"; 
		int num3 = 10; 
		if (AI_Slaughter.slaughtering) 
		string text = id; 
		if (!(text == "bubble_pudding")) 
		{
			num3 += (int)Mathf.Min(Mathf.Sqrt(EClass.pc.Evalue(290)), 20f); 
		} 
		if (EClass.rnd((Act.CurrentAct is ActMeleeBladeStorm || (origin != null && (origin.HasElement(1556) || origin.HasCondition<ConTransmuteCat>()))) ? 2 : 100) == 0) 
		{ 
			text = "dattamono"; 
		} 
		if (num2 && num3 > EClass.rnd(100)) 
		{ 
			text = "meat_marble"; 
		} 
		Thing thing3 = ThingGen.Create(text).SetNum(num); 
		if (thing3.source._origin == "meat") 
		{ 
			thing3.MakeFoodFrom(this); 
			if (text == "marshmallow_monster") 
			{ 
				list.Add(ThingGen.Create("marshmallow_nama").SetNum(num).MakeFoodFrom(this, makeRef: false)); 
			} 
			else
			{ 
				string text2 = Chara.race.corpse[0]; 
				bool num2 = text2 == "_meat"; 
				int num3 = 10; 
				if (AI_Slaughter.slaughtering) 
				{ 
					num3 += (int)Mathf.Min(Mathf.Sqrt(EClass.pc.Evalue(290)), 20f); 
				} 
				if (EClass.rnd((Act.CurrentAct is ActMeleeBladeStorm || (origin != null && (origin.HasElement(1556) || origin.HasCondition<ConTransmuteCat>()))) ? 2 : 100) == 0) 
				{ 
					text2 = "dattamono"; 
				} 
				if (num2 && num3 > EClass.rnd(100)) 
				{ 
					text2 = "meat_marble"; 
				} 
				Thing thing3 = ThingGen.Create(text2).SetNum(num); 
				if (thing3.source._origin == "meat") 
				{ 
					thing3.MakeFoodFrom(this); 
				} 
				else
				{ 
					thing3.ChangeMaterial(Chara.material); 
				} 
				list.Add(thing3); 
			} 
		}
		else
		{
			thing3.ChangeMaterial(Chara.material); 
			list.Add(ThingGen.Create("517").SetNum(num).MakeFoodFrom(this, makeRef: false)); 
		}
		list.Add(thing3); 
	}
	if (!IsPCFaction && (!isUserZone || !EClass.game.principal.disableUsermapBenefit) && chance(200))
	{

public Card MakeFoodFrom(string _id)

cs
		return MakeFoodFrom(EClass.sources.cards.map[_id].model);
	}

	public Card MakeFoodFrom(Card c) 
	public Card MakeFoodFrom(Card c, bool makeRef = true) 
	{
		MakeRefFrom(c); 
		if (makeRef) 
		{ 
			MakeRefFrom(c); 
		} 
		ChangeMaterial(c.material);
		if (!c.isChara)
		{

public Card MakeFoodFrom(Card c)

cs
	bool flag = id == "meat_marble";
	int num2 = 1;
	bool flag2 = category.IsChildOf("meat");
	bool flag3 = category.IsChildOf("egg") || trait is TraitGene; 
	bool flag3 = id == "517" || id == "marshmallow_nama" || category.IsChildOf("egg") || trait is TraitGene; 
	if (flag)
	{
		num += 100;

Chara โ€‹

public void TickConditions()

cs
		Die();
		return;
	}
	if (pos.IsBlocked) 
	if (pos.IsBlocked && pos.HasBlock) 
	{
		preventRegen = true;
	}

public Condition AddCondition(Condition c, bool force = false)

cs
		}
	}
	int num2 = c.EvaluateTurn(c.power);
	if (c is ConDeathSentense && HasElement(494)) 
	{ 
		num2 = num2 * (100 + (int)Mathf.Sqrt(Evalue(494)) * 10) / 100; 
	} 
	if (num2 == 0)
	{
		return null;

CharaGenes โ€‹

public static void Remove(Chara c, DNA item)

cs
		c.c_genes.items.Remove(item);
		c.feat += item.cost * c.GeneCostMTP / 100;
		item.Apply(c, reverse: true);
		c.Refresh(); 
		c.RemoveAllStances(); 
		Msg.Say("dna_loss", c, item.GetText());
	}
}

CoreDebug โ€‹

public void QuickStart()

cs
		}
		EClass.pc.AddCard(thing);
		thing = ThingGen.Create("pouch");
		for (int k = 0; k < 30; k++) 
		for (int k = 1; k < 5; k++) 
		{ 
			Thing thing3 = ThingGen.Create("scrubber"); 
			thing3.elements.SetBase(770, k * 10); 
			thing.AddCard(thing3); 
		} 
		for (int l = 0; l < 30; l++) 
		{
			thing.AddCard(ThingGen.Create("mathammer", MATERIAL.GetRandomMaterial(100).alias)).SetNum(10);
		}

public void QuickStart()

cs
		thing.AddCard(ThingGen.Create("mathammer", 28)).SetNum(99);
		EClass.pc.AddCard(thing);
		thing = ThingGen.Create("pouch");
		for (int l = 0; l < 30; l++) 
		for (int m = 0; m < 30; m++) 
		{
			thing.AddCard(ThingGen.CreateFromCategory("ammo", EClass.pc.LV));
		}
		EClass.pc.AddCard(thing);
		thing = ThingGen.Create("coolerbox");
		for (int m = 0; m < 20; m++) 
		for (int n = 0; n < 20; n++) 
		{
			thing.AddCard(ThingGen.CreateFromCategory("foodstuff").SetNum(EScriptable.rnd(10) + 1));
		}

public void QuickStart()

cs
		List<SourceChara.Row> list = EClass.sources.charas.map.Values.Where((SourceChara.Row a) => a._idRenderData == "chara").ToList();
		thing = ThingGen.Create("pouch");
		list = EClass.sources.charas.map.Values.Where((SourceChara.Row a) => a._idRenderData == "chara_L").ToList();
		for (int n = 0; n < 20; n++) 
		for (int num = 0; num < 20; num++) 
		{
			string id2 = list.RandomItem().id;
			Thing thing3 = ThingGen.Create("figure"); 
			thing3.MakeFigureFrom(id2); 
			thing.AddCard(thing3); 
			Thing thing4 = ThingGen.Create("figure"); 
			thing4.MakeFigureFrom(id2); 
			thing.AddCard(thing4); 
		}
		EClass.pc.AddCard(thing);
		thing = ThingGen.Create("pouch");
		list = EClass.sources.charas.map.Values.Where((SourceChara.Row a) => a._idRenderData == "chara").ToList();
		for (int num = 0; num < 20; num++) 
		for (int num2 = 0; num2 < 20; num2++) 
		{
			string id3 = list.RandomItem().id;
			Thing thing4 = ThingGen.Create("figure3"); 
			thing4.MakeFigureFrom(id3); 
			thing.AddCard(thing4); 
			Thing thing5 = ThingGen.Create("figure3"); 
			thing5.MakeFigureFrom(id3); 
			thing.AddCard(thing5); 
		}
		EClass.pc.AddCard(thing);
		thing.Dye("oak");
		thing = ThingGen.Create("pouch");
		list = EClass.sources.charas.map.Values.Where((SourceChara.Row a) => a._idRenderData == "chara_L").ToList();
		for (int num2 = 0; num2 < 20; num2++) 
		for (int num3 = 0; num3 < 20; num3++) 
		{
			string id4 = list.RandomItem().id;
			Thing thing5 = ThingGen.Create("figure3"); 
			thing5.MakeFigureFrom(id4); 
			thing.AddCard(thing5); 
			Thing thing6 = ThingGen.Create("figure3"); 
			thing6.MakeFigureFrom(id4); 
			thing.AddCard(thing6); 
		}
		EClass.pc.AddCard(thing);
		thing.Dye("pine");

public void QuickStart()

cs
		thing.AddCard(ThingGen.Create("bait").SetNum(10));
		EClass.pc.AddCard(thing);
		thing.Dye("rubinus");
		Thing thing6 = ThingGen.Create("quiver"); 
		thing6.AddCard(ThingGen.Create("bullet").SetNum(250)); 
		thing6.AddCard(ThingGen.Create("arrow").SetNum(250)); 
		thing6.AddCard(ThingGen.Create("bolt").SetNum(250)); 
		thing6.AddCard(ThingGen.Create("bullet_energy").SetNum(250)); 
		EClass.pc.body.GetEquippedThing(44).AddCard(thing6); 
		Thing thing7 = ThingGen.Create("quiver"); 
		thing7.AddCard(ThingGen.Create("bullet").SetNum(250)); 
		thing7.AddCard(ThingGen.Create("arrow").SetNum(250)); 
		thing7.AddCard(ThingGen.Create("bolt").SetNum(250)); 
		thing7.AddCard(ThingGen.Create("bullet_energy").SetNum(250)); 
		EClass.pc.body.GetEquippedThing(44).AddCard(thing7); 
		thing = ThingGen.Create("backpack");
		for (int num3 = 0; num3 < 10; num3++) 
		for (int num4 = 0; num4 < 10; num4++) 
		{
			thing.AddThing("book", lv);
			thing.AddThing("parchment");

public void QuickStart()

cs
		EClass.pc.AddCard(thing);
		thing.Dye("silver");
		thing = ThingGen.Create("pouch");
		for (int num4 = 0; num4 < 30; num4++) 
		for (int num5 = 0; num5 < 30; num5++) 
		{
			thing.AddThing((EScriptable.rnd(10) != 0) ? "potion" : "drink", lv).SetNum(99);
		}
		EClass.pc.AddCard(thing);
		thing.Dye("steel");
		thing = ThingGen.Create("pouch");
		for (int num5 = 0; num5 < 30; num5++) 
		for (int num6 = 0; num6 < 30; num6++) 
		{
			thing.AddThing(ThingGen.CreateFromCategory("rod", lv));
		}
		EClass.pc.AddCard(thing);
		thing.Dye("steel");
		thing = ThingGen.Create("pouch");
		for (int num6 = 0; num6 < 30; num6++) 
		for (int num7 = 0; num7 < 30; num7++) 
		{
			thing.AddThing("scroll", lv).SetNum(99);
		}
		EClass.pc.AddCard(thing);
		thing.Dye("steel");
		thing = ThingGen.Create("pouch");
		for (int num7 = 0; num7 < 40; num7++) 
		for (int num8 = 0; num8 < 40; num8++) 
		{
			thing.AddThing("372", 100);
		}
		EClass.pc.AddCard(thing);
		thing.Dye("steel");
		Thing thing7 = EClass.pc.things.Find("purse"); 
		thing7.AddThing("casino_coin").SetNum(30000000); 
		thing7.AddThing("medal").SetNum(1000); 
		thing7.ModCurrency(500, "plat"); 
		Thing thing8 = EClass.pc.things.Find("purse"); 
		thing8.AddThing("casino_coin").SetNum(30000000); 
		thing8.AddThing("medal").SetNum(1000); 
		thing8.ModCurrency(500, "plat"); 
		EClass.pc.AddThing("record");
		EClass.pc.AddThing("deed").SetNum(5);
		EClass.pc.AddThing("book_story");

public void QuickStart()

cs
		EClass.pc.ModCurrency(10000000);
		EClass.pc.AddCard(ThingGen.CreateBlock(67, 1).SetNum(99));
		EClass.pc.AddCard(ThingGen.CreateFloor(41, 1).SetNum(99));
		Thing thing8 = ThingGen.Create("scroll_random").SetNum(10); 
		thing8.refVal = 8220; 
		EClass.pc.AddCard(thing8); 
		Thing thing9 = ThingGen.Create("scroll_random").SetNum(10); 
		thing9.refVal = 8220; 
		EClass.pc.AddCard(thing9); 
		EClass.pc.ModCurrency(50, "money2");
		AddHotbar("hoe");
		AddHotbar("shovel");

public void QuickStart()

cs
	{
		AddAllRecipes();
	}
	foreach (Thing thing11 in EClass.pc.things) 
	foreach (Thing thing12 in EClass.pc.things) 
	{
		thing11.isNew = false; 
		thing12.isNew = false; 
	}
	LayerInventory.SetDirtyAll();
	EClass.core.actionsNextFrame.Add(EClass.pc.RecalculateFOV);

public void QuickStart()

cs
	}
	static Thing AddAbility(string id)
	{
		Thing thing9 = EClass.pc.AddThing(ThingGen.Create("catalyst")); 
		thing9.c_idAbility = id; 
		return thing9; 
		Thing thing10 = EClass.pc.AddThing(ThingGen.Create("catalyst")); 
		thing10.c_idAbility = id; 
		return thing10; 
	}
	Thing AddHotbar(string id)
	{
		Thing thing10 = EClass.pc.AddThing(ThingGen.Create(id)); 
		thing10.invX = idx; 
		thing10.invY = 1; 
		Thing thing11 = EClass.pc.AddThing(ThingGen.Create(id)); 
		thing11.invX = idx; 
		thing11.invY = 1; 
		idx++;
		return thing10; 
		return thing11; 
	}
	void AddParty(string id)
	{

DNA โ€‹

public void Apply(Chara c, bool reverse)

cs
				break;
			}
		}
		c.RefreshFaithElement(); 
		c.Refresh(); 
		if (reverse) 
		{ 
			c.RemoveAllStances(); 
		} 
	}

	public bool CanRemove(Chara c)

DramaCustomSequence โ€‹

void Invest(bool quick)

cs
			{
				TempTalkTopic("alreadyFull", StepDefault);
			}
			else if (EClass.pc.GetCurrency() < cost) 
			{ 
				TempTalkTopic("nomoney", StepDefault); 
			} 
			else
			{
				SE.Pay(); 
				EClass.pc.ModCurrency(-cost); 
				TempTalkTopic("food2", StepDefault); 
				FoodEffect.Proc(EClass.pc, ThingGen.Create("dish_lunch"), consume: false); 
				EClass.pc.hunger.value = 0; 
				if (EClass.pc.GetCurrency() >= cost) 
				{ 
					SE.Pay(); 
					EClass.pc.ModCurrency(-cost); 
					TempTalkTopic("food2", StepDefault); 
					{ 
						foreach (Chara member3 in EClass.pc.party.members) 
						{ 
							if (member3.hunger.GetPhase() > 0) 
							{ 
								FoodEffect.Proc(member3, ThingGen.Create("dish_lunch"), consume: false); 
								member3.hunger.value = 0; 
							} 
						} 
						return; 
					} 
				} 
				TempTalkTopic("nomoney", StepDefault); 
			}
		});
		Choice("no", StepDefault, cancel: true).SetOnClick(RumorChill);

ENC โ€‹

public class ENC

cs

	public const int encSpell = 411;

	public const int mod_cleave = 622; 
	public const int slowCorruption = 412; 

	public const int encHit = 414; 
	public const int mod_cleave = 622; 

	public const int slowDecay = 405;

	public const int sustain_STR = 440;

	public const int slowCorruption = 412; 
	public const int encHit = 414; 

	public const int mod_rapid = 602;

public class ENC

cs

	public const int deathagony = 488;

	public const int farsee = 490; 
	public const int music_drunk = 489; 

	public const int negateGravity = 491;

public class ENC

cs

	public const int freemove = 493;

	public const int extendedSentence = 494; 
	public const int mod_ammo = 600;

	public const int mod_reload = 601; 
	public const int safetyMeasure = 486; 

	public const int mod_ammo_knockback = 603; 
	public const int mod_reload = 601; 

	public const int mod_ammo_recover = 604;

public class ENC

cs

	public const int sustain_END = 441;

	public const int safetyMeasure = 486; 
	public const int mod_ammo_knockback = 603; 

	public const int nonLethal = 485;

	public const int music_drunk = 489; 
	public const int farsee = 490; 

	public const int optimizeMana = 483;

public class ENC

cs

	public const int force_weapon = 482;

	public static readonly int[] IDS = new int[110] 
	public static readonly int[] IDS = new int[111] 
	{
		656, 655, 654, 653, 651, 641, 650, 652, 660, 640,
		661, 851, 663, 664, 665, 666, 667, 850, 624, 865,

public class ENC

cs
		423, 424, 425, 426, 418, 427, 429, 430, 431, 432,
		435, 436, 437, 438, 428, 439, 417, 415, 380, 381,
		382, 383, 400, 401, 402, 403, 416, 404, 406, 407,
		408, 409, 410, 411, 622, 414, 405, 440, 412, 602, 
		487, 488, 490, 491, 492, 493, 600, 601, 603, 604, 
		605, 606, 607, 608, 609, 620, 441, 486, 485, 489, 
		483, 443, 444, 445, 446, 447, 484, 460, 461, 462, 
		450, 464, 465, 466, 467, 468, 480, 481, 463, 482
		408, 409, 410, 411, 412, 622, 405, 440, 414, 602, 
		487, 488, 489, 491, 492, 493, 494, 600, 486, 601, 
		604, 605, 606, 607, 608, 609, 620, 441, 603, 485, 
		490, 483, 443, 444, 445, 446, 447, 484, 460, 461, 
		462, 450, 464, 465, 466, 467, 468, 480, 481, 463, 
		482
	};
}

FACTION โ€‹

public class FACTION

cs

	public const int bfSnow = 3602;

	public const int bfFertile = 3700; 
	public const int bfHill = 3603; 

	public const int bfBeach = 3604; 
	public const int bfFertile = 3700; 

	public const int bfSea = 3605;

public class FACTION

cs

	public const int bfCave = 3500;

	public const int bfHill = 3603; 
	public const int bfBeach = 3604; 

	public const int fRation = 2207;

public class FACTION

cs

	public const int bfTranquil = 3703;

	public const int actBuildMine = 4001; 
	public const int actBuildTerrain = 4002; 

	public const int bfHunt = 3705;

public class FACTION

cs

	public const int actBuildAnywhere = 4003;

	public const int actBuildTerrain = 4002; 
	public const int actBuildMine = 4001; 

	public const int actBuildCut = 4000;

public class FACTION

cs

	public static readonly int[] IDS = new int[53]
	{
		3701, 3600, 3601, 3602, 3700, 3604, 3605, 3606, 3500, 3603, 
		3701, 3600, 3601, 3602, 3603, 3700, 3605, 3606, 3500, 3604, 
		2207, 2115, 2204, 2203, 2202, 2201, 2200, 2120, 2119, 2118,
		2117, 2116, 3702, 2206, 3703, 4001, 3705, 4006, 4005, 4004, 
		4003, 4002, 4000, 3900, 3805, 3804, 3803, 3802, 3801, 3800, 
		2117, 2116, 3702, 2206, 3703, 4002, 3705, 4006, 4005, 4004, 
		4003, 4001, 4000, 3900, 3805, 3804, 3803, 3802, 3801, 3800, 
		3784, 3783, 3782, 3781, 3780, 3710, 3709, 3708, 3707, 3706,
		3704, 2003, 2205
	};

GoalCombat โ€‹

public virtual bool TryUseAbility(int dist, bool beforeMove = false)

cs
		}
		case "song":
		{
			bool flag7 = owner.HasCondition<BaseSong>(); 
			bool flag8 = owner.mana.value > owner.mana.max / 3; 
			num = ((flag7 && !flag8) ? 100 : ((!flag7 && flag8) ? 100 : 0)); 
			bool flag8 = owner.HasCondition<BaseSong>(); 
			bool flag9 = owner.mana.value > owner.mana.max / 3; 
			num = ((flag8 && !flag9) ? 100 : ((!flag8 && flag9) ? 100 : 0)); 
			break;
		}
		case "melee":

public virtual bool TryUseAbility(int dist, bool beforeMove = false)

cs
			{
				continue;
			}
			bool flag9 = text == "dot"; 
			if (flag9 && (owner.isRestrained || (tc != null && tc.IsRestrainedResident))) 
			bool flag12 = text == "dot"; 
			if (flag12 && (owner.isRestrained || (tc != null && tc.IsRestrainedResident))) 
			{
				continue;
			}
			num = ((text == "attackMelee") ? tactics.P_Melee : tactics.P_Spell) + GetAttackMod(act);
			if (num > 0 && flag9) 
			if (num > 0 && flag12) 
			{
				num += 10;
			}

public virtual bool TryUseAbility(int dist, bool beforeMove = false)

cs
				continue;
			}
			bool flag6 = act is ActBolt;
			if (!flag || (owner.IsPCParty && (EClass._zone.IsTown || EClass._zone.IsPCFaction)) || (act.id == 9150 && EClass._zone.IsPCFaction && owner.IsNeutralOrAbove())) 
			bool flag7 = act is ActBall; 
			if ((owner.pos.IsBlocked && (flag6 || flag7)) || !flag || (owner.IsPCParty && (EClass._zone.IsTown || EClass._zone.IsPCFaction)) || (act.id == 9150 && EClass._zone.IsPCFaction && owner.IsNeutralOrAbove())) 
			{
				continue;
			}

TaskWater โ€‹

public override IEnumerable<Status> Run()

cs
	{
		Debug.Log(list.Count);
		list.Sort((Point a, Point b) => a.Distance(dest) - b.Distance(dest));
		Point p = list[0]; 
		dest.Set(p); 
		Point p2 = list[0]; 
		dest.Set(p2); 
		list.RemoveAt(0);
		if (!ShouldWater(p)) 
		if (!ShouldWater(p2)) 
		{
			continue;
		}

public override IEnumerable<Status> Run()

cs
			yield return Cancel();
		}
		bool fail = false;
		Status status = DoGoto(p, 1, ignoreConnection: false, delegate
		Status status = DoGoto(p2, 1, ignoreConnection: false, delegate 
		{
			fail = true;
			return Status.Running;

public override IEnumerable<Status> Run()

cs
			{
				yield return Cancel();
			}
			if (ShouldWater(p)) 
			if (!ShouldWater(p2)) 
			{
				if (owner.Dist(dest) > 1) 
				{ 
					yield return Cancel(); 
				} 
				p.cell.isWatered = true; 
				if (!p.cell.blocked && EClass.rnd(5) == 0) 
				{ 
					EClass._map.SetLiquid(p.x, p.z, 1); 
				} 
				if (p.cell.HasFire) 
				{ 
					p.ModFire(-50, extinguish: true); 
				} 
				owner.PlaySound("water_farm"); 
				owner.Say("water_farm", owner, p.cell.GetFloorName()); 
				waterCan.owner.ModCharge(-1); 
				owner.ModExp(286, 15); 
				if (!IsWaterCanValid()) 
				continue; 
			} 
			if (owner.Dist(dest) > 1) 
			{ 
				yield return Cancel(); 
			} 
			int num = waterCan.owner.Evalue(770); 
			num = ((num <= 0) ? 1 : Mathf.Min(waterCan.owner.c_charges, 2 + num / 10)); 
			if (num > 1) 
			{ 
				List<Point> list2 = EClass._map.ListPointsInCircle(p2, num); 
				list2.Sort((Point a, Point b) => a.Distance(p2) - b.Distance(p2)); 
				foreach (Point item in list2) 
				{
					yield return Cancel(); 
					Water(item); 
				}
				yield return KeepRunning(); 
			}
			else
			{ 
				Water(p2); 
			} 
			owner.PlaySound("water_farm"); 
			owner.Say("water_farm", owner, p2.cell.GetFloorName()); 
			waterCan.owner.ModCharge(-num); 
			if (!IsWaterCanValid()) 
			{ 
				yield return Cancel(); 
			} 
			yield return KeepRunning(); 
		} 
		void Water(Point p) 
		{ 
			p.cell.isWatered = true; 
			if (!p.cell.blocked && EClass.rnd(5) == 0) 
			{ 
				EClass._map.SetLiquid(p.x, p.z, 1); 
			} 
			if (p.cell.HasFire) 
			{ 
				p.ModFire(-50, extinguish: true); 
			} 
			owner.ModExp(286, 15); 
		}
	}

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" && r.quality == 0) : ((EClass._zone is Zone_DungeonDragon && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_dragon", (SourceChara.Row r) => (r.race == "dragon" || r.race == "drake" || r.race == "wyvern" || r.race == "lizardman" || r.race == "dinosaur") && 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
	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_DungeonDragon && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_dragon", (SourceChara.Row r) => (r.race == "dragon" || r.race == "drake" || r.race == "wyvern" || r.race == "lizardman" || r.race == "dinosaur") && 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(IsInstance ? "c_neutral_war" : "c_neutral") : ((biome.spawn.chara.Count <= 0) ? SpawnList.Get(biome.name, "chara", new CharaFilter
	{
		ShouldPass = delegate(SourceChara.Row s)
		{

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(), "chara", new CharaFilter
	{ 
		ShouldPass = (SourceChara.Row s) => (!IsInstance || !(s.hostility != "") || !s.tag.Contains("cat")) ? true : false
	}))))))); 
	int num = ((setting.dangerLv == -1) ? DangerLv : setting.dangerLv);
	CardBlueprint cardBlueprint = new CardBlueprint
	{