Skip to content

EA 23.144 Nightly

May 26, 2025

15 files modified.

Important Changes

None.

AI_Idle

@@ -571,6 +571,7 @@ public override IEnumerable<Status> Run()

cs
		{
			owner.Cuddle(c);
		});
		yield return KeepRunning(); 
	}
	if (EClass.rnd(100) == 0 && owner.trait is TraitBitch)
	{

ActEffect

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

cs
		switch (actRef.n1)
		{
		case "shadow":
		case "tsunami": 
			num3 = Mathf.Clamp(power / 100, 1, 5) + ((power >= 100) ? EClass.rnd(2) : 0);
			break;
		case "monster":

ActMelee

@@ -162,6 +162,7 @@ void _Attack(BodySlot slot)

cs
		int flurry;
		int frustration;
		int feint;
		int knockback; 
		int mod_talisman;
		if (Act.TC != null && Act.TC.IsAliveInCurrentZone)
		{

@@ -185,6 +186,7 @@ void _Attack(BodySlot slot)

cs
				frustration = GetWeaponEnc(624, addSelfEnc: true);
				int num3 = GetWeaponEnc(622, addSelfEnc: true);
				feint = GetWeaponEnc(623, addSelfEnc: true);
				knockback = GetWeaponEnc(603, addSelfEnc: true); 
				mod_talisman = GetWeaponEnc(609, addSelfEnc: true);
				List<Point> list2 = EClass._map.ListPointsInLine(Act.CC.pos, Act.TC.pos, num2 / 10 + ((num2 % 10 > EClass.rnd(10)) ? 1 : 0) + 1);
				if (w != null)

@@ -365,27 +367,55 @@ void Attack(Card _tc, Point _tp, float mtp, bool subAttack)

cs
					}
					foreach (Card item4 in p.ListCards())
					{
						if (item4.trait.CanBeAttacked || (item4.isChara && item4.Chara.IsHostile(Act.CC))) 
						if ((item4.trait.CanBeAttacked || (item4.isChara && item4.Chara.IsHostile(Act.CC))) && !item4.HasElement(430)) 
						{
							int rawDamage = AttackProcess.Current.GetRawDamage(0.1f + 0.05f * Mathf.Sqrt(splash), crit: false, maxRoll: false); 
							rawDamage = item4.ApplyProtection(rawDamage); 
							item4.DamageHP(rawDamage, 0, 100, AttackSource.Shockwave, Act.CC); 
							int rawDamage2 = AttackProcess.Current.GetRawDamage(0.1f + 0.05f * Mathf.Sqrt(splash), crit: false, maxRoll: false); 
							rawDamage2 = item4.ApplyProtection(rawDamage2); 
							item4.DamageHP(rawDamage2, 0, 100, AttackSource.Shockwave, Act.CC); 
						}
					}
				});
			}
			if (Act.TC.isChara && Act.TC.ExistsOnMap && knockback > 0 && knockback * 2 + 15 > EClass.rnd(100) && !Act.TC.isRestrained) 
			{ 
				Card.MoveResult num6 = Act.TC.Chara.TryMoveFrom(Act.CC.pos); 
				bool flag3 = Act.CC.id == "tsunami"; 
				if (num6 == Card.MoveResult.Success) 
				{ 
					Act.TC.renderer.SetFirst(first: true); 
					Act.TC.PlaySound("wave_hit_small"); 
					if (flag3) 
					{ 
						Act.TC.Chara.AddCondition<ConParalyze>(20, force: true); 
						Act.TC.Chara.AddCondition<ConSuffocation>(100, force: true); 
					} 
				} 
				else if (flag3) 
				{ 
					Act.TC.PlaySound("wave_hit"); 
					Act.TC.pos.PlayEffect("wave_hit"); 
					Act.TC.Chara.AddCondition<ConSuffocation>(200, force: true); 
					if (!Act.TC.HasElement(430)) 
					{ 
						int rawDamage = AttackProcess.Current.GetRawDamage(1f, crit: false, maxRoll: false); 
						rawDamage = Act.TC.ApplyProtection(rawDamage); 
						Act.TC.DamageHP(rawDamage, 0, 100, AttackSource.Shockwave, Act.CC); 
					} 
					Act.CC.Die(); 
				} 
			} 
		}
		void AttackWithFlurry(Card _tc, Point _tp, float mtp, bool subAttack)
		{
			int num6 = 1; 
			int num7 = 1; 
			if (flurry > 0)
			{
				for (int l = 0; l < 10 && flurry > EClass.rnd(25 + (int)Mathf.Pow(5f, l + 2)); l++)
				{
					num6++; 
					num7++; 
				}
			}
			for (int m = 0; m < num6; m++) 
			for (int m = 0; m < num7; m++) 
			{
				if (!Act.CC.IsAliveInCurrentZone)
				{

AttackProcess

@@ -447,6 +447,10 @@ public bool Perform(int count, bool hasHit, float dmgMulti = 1f, bool maxRoll =

cs
	bool flag = CC.HasCondition<ConReload>();
	bool flag2 = CC.HasElement(486) && CC.IsPCFactionOrMinion;
	hit = CalcHit();
	if (CC.id == "tsunami") 
	{ 
		hit = true; 
	} 
	int num = GetRawDamage(dmgMulti, crit, maxRoll);
	if (IsRanged && count >= numFireWithoutDamageLoss)
	{

Card

@@ -5575,7 +5575,14 @@ public void RefreshColor()

cs
	}
	else if (isDyed)
	{
		_colorInt = BaseTileMap.GetColorInt(ref DyeMat.matColor, sourceRenderCard.colorMod); 
		if (sourceRenderCard.useAltColor) 
		{ 
			_colorInt = BaseTileMap.GetColorInt(ref DyeMat.altColor, sourceRenderCard.colorMod); 
		} 
		else
		{ 
			_colorInt = BaseTileMap.GetColorInt(ref DyeMat.matColor, sourceRenderCard.colorMod); 
		} 
	}
	else if (sourceRenderCard.useRandomColor)
	{

Chara

@@ -2129,7 +2129,6 @@ public void MakeMinion(Chara _master, MinionType type = MinionType.Default)

cs

	public void ReleaseMinion()
	{
		Debug.Log("released:" + this); 
		base.c_uidMaster = 0;
		master = null;
		enemy = null;

@@ -3448,6 +3447,18 @@ public void TickConditions()

cs
			return;
		}
	}
	if (id == "tsunami") 
	{ 
		if (elements.Base(79) < 30) 
		{ 
			Die(); 
			return; 
		} 
		if (IsInCombat) 
		{ 
			elements.SetTo(79, elements.Base(79) * 3 / 4); 
		} 
	} 
	if (EClass.world.weather.IsRaining && !EClass._map.IsIndoor && !pos.cell.HasRoof)
	{
		AddCondition<ConWet>(20);

@@ -4889,6 +4900,12 @@ public override void Die(Element e = null, Card origin = null, AttackSource atta

cs
		{
			EClass._zone.ResetHostility();
		}
		if (id == "tsunami") 
		{ 
			pos.PlaySound("water"); 
			Destroy(); 
			return; 
		} 
		if (base.isSummon)
		{
			Say("summon_vanish", this);

@@ -5749,25 +5766,33 @@ public void Cuddle(Chara c, bool headpat = false)

cs
		{
			c.MakeEgg();
		}
		if (!headpat || this == c) 
		if (headpat && this != c) 
		{
			return; 
		} 
		if (c.interest > 0) 
		{ 
			c.ModAffinity(EClass.pc, 1 + EClass.rnd(3)); 
			c.interest -= 20 + EClass.rnd(10); 
		} 
		if (faith != EClass.game.religions.MoonShadow || !c.IsPCParty) 
		{ 
			return; 
			if (c.interest > 0) 
			{ 
				c.ModAffinity(EClass.pc, 1 + EClass.rnd(3)); 
				c.interest -= 20 + EClass.rnd(10); 
			} 
			if (faith == EClass.game.religions.MoonShadow && c.IsPCParty) 
			{ 
				foreach (Chara member in party.members) 
				{ 
					if (!member.IsPC && CanSeeLos(member)) 
					{ 
						member.AddCondition<ConEuphoric>(100 + Evalue(6904) * 5); 
					} 
				} 
			} 
		}
		foreach (Chara member in party.members) 
		if (c.Evalue(1221) > 0) 
		{
			if (!member.IsPC && CanSeeLos(member)) 
			int ele = ((c.MainElement == Element.Void) ? 924 : c.MainElement.id); 
			if (c.id == "hedgehog_ether") 
			{
				member.AddCondition<ConEuphoric>(100 + Evalue(6904) * 5); 
				ele = 922; 
			}
			Say("reflect_thorne", c, this); 
			DamageHP(10, ele, Power, AttackSource.Condition); 
		}
	}

@@ -7344,27 +7369,28 @@ public void ModAffinity(Chara c, int a, bool show = true, bool showOnlyEmo = fal

cs
		{
			a = a * num / 100;
		}
		if (c.IsPC) 
		{ 
			a = affinity.Mod(a); 
		} 
		if (!show) 
		{ 
			return; 
		} 
		if (a == 0) 
		if (show) 
		{
			if (!showOnlyEmo) 
			if (a == 0) 
			{
				Say("affinityNone", this, c); 
				if (!showOnlyEmo) 
				{ 
					Say("affinityNone", this, c); 
				} 
			} 
			else
			{ 
				ShowEmo((!flag) ? Emo.angry : Emo.love); 
				c.ShowEmo(flag ? Emo.love : Emo.sad); 
				if (!showOnlyEmo) 
				{ 
					Say(flag ? "affinityPlus" : "affinityMinus", this, c); 
				} 
			}
			return; 
		}
		ShowEmo((!flag) ? Emo.angry : Emo.love); 
		c.ShowEmo(flag ? Emo.love : Emo.sad); 
		if (!showOnlyEmo) 
		if (c.IsPC) 
		{
			Say(flag ? "affinityPlus" : "affinityMinus", this, c); 
			a = affinity.Mod(a); 
		}
	}

DramaCustomSequence

@@ -968,6 +968,7 @@ void Invest(bool quick)

cs
					EClass._map.bounds.Expand(1);
					SE.Play("good");
					EClass._map.RefreshAllTiles();
					WidgetMinimap.UpdateMap(); 
					ScreenEffect.Play("Firework");
				}
			});

ENC

@@ -58,6 +58,8 @@ public class ENC

cs

	public const int sustain_STR = 440;

	public const int negateShockwave = 430; 
	public const int breathing = 429;

	public const int allNeckHunt = 428;

@@ -82,18 +84,18 @@ public class ENC

cs

	public const int seeInvisible = 416;

	public const int sustain_END = 441; 
	public const int invisibility = 415;

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

	public const int encSpell = 411;

	public const int throwReturn = 410; 
	public const int mod_splash = 608;

	public const int corruption = 409; 
	public const int resWeather = 408;

	public const int travelSpeed = 407;

@@ -112,11 +114,11 @@ public class ENC

cs

	public const int negateTeleport = 400;

	public const int encHit = 414; 
	public const int sustain_END = 441; 

	public const int sustain_DEX = 442;

	public const int corruption = 409; 
	public const int throwReturn = 410; 

	public const int mod_ammo = 600;

@@ -152,8 +154,6 @@ public class ENC

cs

	public const int strongStomach = 480;

	public const int sustain_PER = 443; 
	public const int bane_man = 464;

	public const int bane_animal = 463;

@@ -174,16 +174,18 @@ public class ENC

cs

	public const int sustain_LER = 444;

	public static readonly int[] IDS = new int[87] 
	public const int sustain_PER = 443; 
	public static readonly int[] IDS = new int[88] 
	{
		653, 652, 651, 650, 641, 624, 621, 622, 623, 654,
		640, 655, 851, 660, 661, 662, 663, 664, 665, 666,
		850, 620, 865, 852, 656, 609, 420, 607, 440, 429, 
		428, 427, 426, 425, 424, 423, 422, 421, 418, 417, 
		416, 441, 415, 412, 411, 410, 608, 408, 407, 406, 
		405, 404, 403, 402, 401, 400, 414, 442, 409, 600, 
		606, 605, 604, 603, 602, 601, 486, 485, 484, 483, 
		482, 481, 468, 467, 466, 480, 443, 464, 463, 462, 
		461, 460, 447, 465, 446, 445, 444
		850, 620, 865, 852, 656, 609, 420, 607, 440, 430, 
		429, 428, 427, 426, 425, 424, 423, 422, 421, 418, 
		417, 416, 415, 414, 412, 411, 608, 409, 408, 407, 
		406, 405, 404, 403, 402, 401, 400, 441, 442, 410, 
		600, 606, 605, 604, 603, 602, 601, 486, 485, 484, 
		483, 482, 481, 468, 467, 466, 480, 464, 463, 462, 
		461, 460, 447, 465, 446, 445, 444, 443
	};
}

FACTION

@@ -4,7 +4,7 @@

cs

public class FACTION
{
	public const int bfCave = 3500; 
	public const int bfSea = 3605; 

	public const int bfPlain = 3600;

@@ -12,21 +12,21 @@ public class FACTION

cs

	public const int bfSnow = 3602;

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

	public const int bfGeyser = 3701;

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

	public const int bfSea = 3605; 
	public const int bfFertile = 3700; 

	public const int fRation = 2207; 
	public const int bfCave = 3500; 

	public const int bfRuin = 3702;

	public const int bfBeach = 3604; 
	public const int fRation = 2207; 

	public const int actBuildCollect = 4004; 
	public const int actBuildRecipe = 4005; 

	public const int fSafety = 2205;

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

cs

	public const int fElec = 2201;

	public const int bfTranquil = 3703; 
	public const int fHeirloom = 2120;

	public const int bfTranquil = 3703; 
	public const int fTaxEvasion = 2119;

	public const int fLuck = 2118;

@@ -58,8 +58,6 @@ public class FACTION

cs

	public const int bfFish = 3706;

	public const int actBuildRecipe = 4005; 
	public const int actBuildInspect = 4006;

	public const int actBuildAnywhere = 4003;

@@ -78,9 +76,11 @@ public class FACTION

cs

	public const int bfIce = 3804;

	public const int bfGum = 3803; 
	public const int bfHunt = 3705;

	public const int bfGum = 3803; 
	public const int actBuildCollect = 4004; 

	public const int bfCoal = 3800;

@@ -110,10 +110,10 @@ public class FACTION

cs

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

Game

@@ -341,6 +341,10 @@ public static void Load(string id, bool cloud)

cs
			SoundManager.ignoreSounds = false;
			TooltipManager.Instance.HideTooltips(immediate: true);
		}
		if ((bool)WidgetSideScreen.Instance) 
		{ 
			WidgetSideScreen.Instance.OnChangeResolution(); 
		} 
		EClass.game.isLoading = false;
	}

QuestDefenseGame

@@ -16,6 +16,8 @@ public class QuestDefenseGame : QuestInstance

cs

	public override string RewardSuffix => "Defense";

	public override bool FameContent => true; 
	public override int FameOnComplete => (lastWave * 8 + difficulty * 10) * (100 + bonus * 5) / 100;

	public override ZoneEventQuest CreateEvent()

SLOT

@@ -26,15 +26,15 @@ public class SLOT

cs

	public const int waist = 37;

	public const int token = 43; 
	public const int head = 30;

	public const int range = 41;

	public const int token = 43; 
	public static readonly int[] IDS = new int[16]
	{
		44, 38, 40, 32, 33, 45, 42, 31, 34, 35,
		39, 36, 37, 43, 30, 41
		39, 36, 37, 30, 41, 43
	};
}

SPELL

@@ -14,15 +14,15 @@ public class SPELL

cs

	public const int weapon_Sound = 50807;

	public const int funnel_Holy = 50609; 
	public const int puddle_Sound = 50907;

	public const int funnel_Holy = 50609; 
	public const int hand_Holy = 50409;

	public const int sword_Sound = 51007;

	public const int ball_Nerve = 50108; 
	public const int bolt_Holy = 50309; 

	public const int bolt_Nerve = 50308;

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

cs

	public const int sword_Nerve = 51008;

	public const int bolt_Holy = 50309; 
	public const int ball_Nerve = 50108; 

	public const int arrow_Holy = 50509;

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

cs

	public const int ball_Mind = 50104;

	public const int miasma_Fire = 50700; 
	public const int funnel_Fire = 50600; 

	public const int puddle_Darkness = 50903;

@@ -358,12 +358,14 @@ public class SPELL

cs

	public const int SpGravity = 8708;

	public const int sword_Darkness = 51003; 
	public const int SpSpeedDown = 8710;

	public const int SpTelepathy = 8770; 
	public const int SpInvisibility = 8775;

	public const int miasma_Fire = 50700; 
	public const int weapon_Fire = 50800;

	public const int puddle_Fire = 50900;

@@ -390,10 +392,10 @@ public class SPELL

cs

	public const int ball_Lightning = 50102;

	public const int funnel_Fire = 50600; 
	public const int bolt_Lightning = 50302;

	public const int hand_Lightning = 50402; 
	public const int arrow_Lightning = 50502;

	public const int funnel_Lightning = 50602;

@@ -420,13 +422,13 @@ public class SPELL

cs

	public const int weapon_Darkness = 50803;

	public const int hand_Lightning = 50402; 
	public const int arrow_Fire = 50500;

	public const int sword_Darkness = 51003; 
	public const int hand_Fire = 50400;

	public const int bolt_Fire = 50300; 
	public const int puddle_Void = 50916; 

	public const int SpSeeInvisible = 8776;

@@ -466,6 +468,8 @@ public class SPELL

cs

	public const int SpSummonShadow = 9050;

	public const int SpSummonTidalWave = 9051; 
	public const int SpMeteor = 9150;

	public const int SpEarthquake = 9151;

@@ -484,17 +488,15 @@ public class SPELL

cs

	public const int ball_Fire = 50100;

	public const int puddle_Void = 50916; 
	public const int SpTelepathy = 8770; 
	public const int bolt_Fire = 50300; 

	public const int sword_Void = 51016;

	public static readonly int[] IDS = new int[245] 
	public static readonly int[] IDS = new int[246] 
	{
		50908, 50407, 50507, 50709, 50607, 50707, 50807, 50609, 50907, 50409, 
		51007, 50108, 50308, 50408, 50508, 50608, 50109, 50708, 50808, 51008, 
		50309, 50509, 50404, 50107, 50304, 50809, 50504, 50604, 50704, 50804, 
		50908, 50407, 50507, 50709, 50607, 50707, 50807, 50907, 50609, 50409, 
		51007, 50309, 50308, 50408, 50508, 50608, 50109, 50708, 50808, 51008, 
		50108, 50509, 50404, 50107, 50304, 50809, 50504, 50604, 50704, 50804, 
		50904, 51004, 50105, 50305, 50405, 50505, 50307, 50605, 50805, 50905,
		51005, 50106, 50306, 50406, 50506, 50606, 50706, 50806, 50906, 51006,
		50705, 50909, 50513, 50110, 50913, 51013, 50114, 50314, 50414, 50514,

@@ -503,20 +505,20 @@ public class SPELL

cs
		50816, 50813, 50713, 50613, 50413, 50310, 50410, 50510, 50610, 50710,
		50810, 50910, 51010, 50111, 50311, 50411, 50511, 50611, 51009, 50711,
		50911, 51011, 50112, 50312, 50412, 50512, 50612, 50712, 50812, 50912,
		51012, 50113, 50313, 50811, 50104, 50700, 50903, 8401, 8402, 8403, 
		51012, 50113, 50313, 50811, 50104, 50600, 50903, 8401, 8402, 8403, 
		8404, 8405, 8406, 8430, 8450, 8470, 8471, 8480, 8490, 8491,
		8400, 8500, 8502, 8503, 8504, 8506, 8507, 8510, 8550, 8555,
		8700, 8702, 8704, 8705, 8706, 8501, 8390, 8380, 8300, 7001,
		7002, 7003, 7004, 7005, 7006, 7007, 7008, 7800, 8200, 8201,
		8202, 8220, 8221, 8230, 8232, 8240, 8241, 8250, 8251, 8255,
		8256, 8260, 8280, 8281, 8284, 8285, 8286, 8288, 8708, 51003, 
		8710, 8775, 50800, 50900, 51000, 50101, 50301, 50401, 50501, 50601, 
		50701, 50801, 50901, 51001, 50102, 50600, 50302, 50502, 50602, 50702, 
		50802, 50902, 51002, 50103, 50303, 50403, 50503, 50603, 50703, 50803, 
		50402, 50500, 50400, 50300, 8776, 8780, 8790, 8791, 8792, 8800, 
		8801, 9000, 9001, 9002, 9003, 9004, 9005, 9006, 9007, 9008, 
		9009, 9010, 9050, 9150, 9151, 9160, 9200, 9500, 9501, 9502, 
		9503, 50100, 50916, 8770, 51016
		8256, 8260, 8280, 8281, 8284, 8285, 8286, 8288, 8708, 8710, 
		8770, 8775, 50700, 50800, 50900, 51000, 50101, 50301, 50401, 50501, 
		50601, 50701, 50801, 50901, 51001, 50102, 50302, 50402, 50502, 50602, 
		50702, 50802, 50902, 51002, 50103, 50303, 50403, 50503, 50603, 50703, 
		50803, 50500, 51003, 50400, 50916, 8776, 8780, 8790, 8791, 8792, 
		8800, 8801, 9000, 9001, 9002, 9003, 9004, 9005, 9006, 9007, 
		9008, 9009, 9010, 9050, 9051, 9150, 9151, 9160, 9200, 9500, 
		9501, 9502, 9503, 50100, 50300, 51016
	};
}
public class Spell : Ability

Thing

@@ -943,7 +943,7 @@ public override void WriteNote(UINote n, Action<UINote> onWriteNote = null, IIns

cs
				{
					text6 = text6 + (text6.IsEmpty() ? "" : "  ") + "_nutrition".lang(Evalue(10).ToFormat() ?? "");
				}
				if ((base.category.IsChildOf("resource") || trait.IsTool) && !(trait is TraitAbility)) 
				if ((base.category.IsChildOf("throw") || base.category.IsChildOf("resource") || trait.IsTool) && !(trait is TraitAbility)) 
				{
					text6 = text6 + (text6.IsEmpty() ? "" : "  ") + "_hardness".lang(base.material.hardness.ToString() ?? "");
				}

ZoneEventDefenseGame

@@ -68,7 +68,9 @@ public override void OnVisit()

cs
		QuestDefenseGame.bonus = bonus;
		return;
	}
	EClass._zone._dangerLv = 5; 
	int num = EClass.pc.FameLv / 100 * 50; 
	EClass._zone._dangerLv = 5 + num; 
	bonus += num / 10; 
	Point nearestPoint = EClass._map.GetCenterPos().GetNearestPoint(allowBlock: false, allowChara: false);
	EClass._zone.AddCard(ThingGen.Create("stone_defense"), nearestPoint).Install().isNPCProperty = true;
	EClass._zone.AddCard(ThingGen.Create("core_defense"), nearestPoint).Install().isNPCProperty = false;

@@ -81,7 +83,7 @@ public void NextWave(int add = 0)

cs
{
	wave++;
	turns = 0;
	EClass._zone._dangerLv += ((wave >= 20) ? 10 : 5); 
	EClass._zone._dangerLv += ((EClass._zone.DangerLv >= 100) ? (EClass._zone.DangerLv / 100 * 10) : 5); 
	SE.Play("warhorn");
	Msg.Say("defense_wave", wave.ToString() ?? "", EClass._zone.DangerLv.ToString() ?? "");
	Spawn(2 + base.quest.difficulty + add);