Skip to content

EA 23.329 Nightly

July 21, 2026

12 files modified. 1 new file created.

Important Changes

None.

ActEffect

void AddCon<T>(int rate, int power) where T : Condition

cs
		EClass.ui.AddLayer<LayerList>().SetStringList(delegate
		{
			List<string> list12 = new List<string>();
			for (int num20 = 0; num20 < 10; num20++) 
			for (int num21 = 0; num21 < 10; num21++) 
			{
				list12.Add(AliasGen.GetRandomAlias());
			}

void AddCon<T>(int rate, int power) where T : Condition

cs
		break;
	case EffectId.StripBlessing:
	{
		List<Condition> list4 = new List<Condition>(); 
		List<Condition> list6 = new List<Condition>(); 
		foreach (Condition condition4 in TC.conditions)
		{
			if (GetBlessingDifficulty(condition4) > 0 && EClass.rnd(GetBlessingDifficulty(condition4)) == 0)
			{
				list4.Add(condition4); 
				list6.Add(condition4); 
			}
		}
		if (list4.Count == 0) 
		if (list6.Count == 0) 
		{
			CC.SayNothingHappans();
			break;

void AddCon<T>(int rate, int power) where T : Condition

cs
		TC.pos.PlayEffect("holyveil");
		TC.pos.PlaySound("holyveil");
		TC.Say("unpolluted", TC);
		list4.Shuffle(); 
		list6.Shuffle(); 
		{
			foreach (Condition item5 in list4) 
			foreach (Condition item5 in list6) 
			{
				item5.Kill();
				if (CC.IsHostile(TC))

void AddCon<T>(int rate, int power) where T : Condition

cs
		{
			break;
		}
		int num12 = 0; 
		int num15 = 0; 
		foreach (Condition condition5 in TC.conditions)
		{
			if (condition5.Type == ConditionType.Debuff)
			{
				num12++; 
				num15++; 
			}
		}
		if (num12 == 0) 
		if (num15 == 0) 
		{
			CC.SayNothingHappans();
			break;

void AddCon<T>(int rate, int power) where T : Condition

cs
		});
		TC.Say("abShutterHex", TC);
		Point center = CC.pos.Copy();
		List<Chara> list5 = TC.pos.ListCharasInRadius(TC, 4, (Chara c) => c == TC || c.IsHostile(CC)); 
		for (int l = 0; l < num12; l++) 
		List<Chara> list9 = TC.pos.ListCharasInRadius(TC, 4, (Chara c) => c == TC || c.IsHostile(CC)); 
		for (int m = 0; m < num15; m++) 
		{
			TweenUtil.Delay((float)l * 0.1f, delegate
			TweenUtil.Delay((float)m * 0.1f, delegate 
			{
				center.PlaySound("shutterhex");
			});
			foreach (Chara item6 in list5) 
			foreach (Chara item6 in list9) 
			{
				if (item6.ExistsOnMap)
				{

void AddCon<T>(int rate, int power) where T : Condition

cs
					Color startColor = (componentInChildren.endColor = EClass.Colors.elementColors["eleHoly"]);
					componentInChildren.startColor = startColor;
					Point pos = item6.pos.Copy();
					TweenUtil.Delay((float)l * 0.1f, delegate
					TweenUtil.Delay((float)m * 0.1f, delegate 
					{
						effect.Play(center, 0f, pos);
					});
					int num13 = Dice.Create("SpShutterHex", power, CC, (actRef.refThing != null) ? null : actRef.act).Roll(); 
					item6.DamageHP(num13, 919, power, AttackSource.None, CC, showEffect: false); 
					int num16 = Dice.Create("SpShutterHex", power, CC, (actRef.refThing != null) ? null : actRef.act).Roll(); 
					item6.DamageHP(num16, 919, power, AttackSource.None, CC, showEffect: false); 
				}
			}
		}

void AddCon<T>(int rate, int power) where T : Condition

cs
			TC.Say((actRef.n1 == "money") ? "abStealNegateMoney" : "abStealNegate", TC);
			break;
		}
		Thing thing7 = null; 
		bool flag12 = actRef.n1 == "food"; 
		Thing thing5 = null; 
		bool flag11 = actRef.n1 == "food"; 
		if (actRef.n1 == "money")
		{
			int currency = TC.GetCurrency();
			if (currency > 0)
			{
				currency = Mathf.Clamp(EClass.rnd(currency / 10), 1, 100 + EClass.rndHalf(Mathf.Min(CC.LV, 1000000) * 200));
				thing7 = ThingGen.Create("money").SetNum(currency); 
				thing5 = ThingGen.Create("money").SetNum(currency); 
				TC.ModCurrency(-currency);
			}
		}
		else
		{
			Func<Thing, bool> func = (Thing t) => true;
			if (flag12) 
			if (flag11) 
			{
				func = (Thing t) => t.IsFood;
			}
			List<Thing> list9 = TC.things.List(delegate(Thing t) 
			List<Thing> list7 = TC.things.List(delegate(Thing t) 
			{
				if (t.parentCard?.trait is TraitChestMerchant || t.trait is TraitTool || t.IsThrownWeapon)
				{

void AddCon<T>(int rate, int power) where T : Condition

cs
				}
				return t.trait.CanBeDestroyed && t.things.Count == 0 && t.invY != 1 && t.trait.CanBeStolen && !t.trait.CanOnlyCarry && !t.IsUnique && !t.isEquipped && t.blessedState == BlessedState.Normal && func(t);
			}, onlyAccessible: true);
			if (list9.Count > 0) 
			if (list7.Count > 0) 
			{
				thing7 = list9.RandomItem(); 
				if (thing7.Num > 1) 
				thing5 = list7.RandomItem(); 
				if (thing5.Num > 1) 
				{
					thing7 = thing7.Split(1); 
					thing5 = thing5.Split(1); 
				}
			}
			CC.AddCooldown(6640, 200);
		}
		if (thing7 == null) 
		if (thing5 == null) 
		{
			CC.Say("abStealNothing", CC, TC);
			break;
		}
		thing7.SetInt(116, 1); 
		TC.PlaySound(thing7.material.GetSoundDrop(thing7.sourceCard)); 
		CC.Pick(thing7, msg: false); 
		CC.Say("abSteal", CC, TC, thing7.Name); 
		thing5.SetInt(116, 1); 
		TC.PlaySound(thing5.material.GetSoundDrop(thing5.sourceCard)); 
		CC.Pick(thing5, msg: false); 
		CC.Say("abSteal", CC, TC, thing5.Name); 
		if (actRef.n1 == "food")
		{
			if (CC.hunger.value != 0)
			{
				CC.InstantEat(thing7); 
				CC.InstantEat(thing5); 
			}
		}
		else

void AddCon<T>(int rate, int power) where T : Condition

cs
		{
			break;
		}
		List<Thing> list7 = TC.things.List(delegate(Thing t) 
		List<Thing> list11 = TC.things.List(delegate(Thing t) 
		{
			if (!t.isEquipped || t.blessedState == BlessedState.Doomed || t.IsToolbelt)
			{

void AddCon<T>(int rate, int power) where T : Condition

cs
			}
			return (t.blessedState < BlessedState.Blessed || EClass.rnd(10) == 0) ? true : false;
		});
		if (list7.Count == 0) 
		if (list11.Count == 0) 
		{
			CC.SayNothingHappans();
			break;
		}
		Thing thing5 = list7.RandomItem(); 
		TC.Say("curse_hit", TC, thing5); 
		thing5.SetBlessedState((thing5.blessedState == BlessedState.Cursed) ? BlessedState.Doomed : BlessedState.Cursed); 
		LayerInventory.SetDirty(thing5); 
		Thing thing7 = list11.RandomItem(); 
		TC.Say("curse_hit", TC, thing7); 
		thing7.SetBlessedState((thing7.blessedState == BlessedState.Cursed) ? BlessedState.Doomed : BlessedState.Cursed); 
		LayerInventory.SetDirty(thing7); 
		break;
	}
	case EffectId.UncurseEQ:

void AddCon<T>(int rate, int power) where T : Condition

cs
		List<Thing> list = new List<Thing>();
		TC.things.Foreach(delegate(Thing t)
		{
			int num19 = 0; 
			int num20 = 0; 
			if ((t.isEquipped || t.IsRangedWeapon || blessed) && t.blessedState < BlessedState.Normal)
			{
				if (t.blessedState == BlessedState.Cursed)
				{
					num19 = EClass.rnd(200); 
					num20 = EClass.rnd(200); 
				}
				if (t.blessedState == BlessedState.Doomed)
				{
					num19 = EClass.rnd(1000); 
					num20 = EClass.rnd(1000); 
				}
				if (blessed)
				{
					num19 /= 2; 
					num20 /= 2; 
				}
				if (id == EffectId.UncurseEQGreater)
				{
					num19 /= 10; 
					num20 /= 10; 
				}
				if (power >= num19) 
				if (power >= num20) 
				{
					TC.Say("uncurseEQ_success", t);
					t.SetBlessedState(BlessedState.Normal);

void AddCon<T>(int rate, int power) where T : Condition

cs
	{
		EClass.game.religions.Trickery.Talk("ability");
		bool hex = CC.IsHostile(TC);
		List<SourceStat.Row> list6 = EClass.sources.stats.rows.Where((SourceStat.Row con) => con.tag.Contains("random") && con.group == (hex ? "Debuff" : "Buff")).ToList(); 
		List<SourceStat.Row> list8 = EClass.sources.stats.rows.Where((SourceStat.Row con) => con.tag.Contains("random") && con.group == (hex ? "Debuff" : "Buff")).ToList(); 
		int power2 = power;
		for (int m = 0; m < 4 + EClass.rnd(2); m++) 
		for (int l = 0; l < 4 + EClass.rnd(2); l++) 
		{
			SourceStat.Row row2 = list6.RandomItem(); 
			list6.Remove(row2); 
			SourceStat.Row row2 = list8.RandomItem(); 
			list8.Remove(row2); 
			Proc(hex ? EffectId.DebuffKizuami : EffectId.Buff, CC, TC, power2, new ActRef
			{
				n1 = row2.alias

void AddCon<T>(int rate, int power) where T : Condition

cs
		{
			power = power * 2 / 3;
		}
		int num14 = TC.WIL * (isPowerful ? 20 : 5); 
		int num12 = TC.WIL * (isPowerful ? 20 : 5); 
		ConHolyVeil condition = TC.GetCondition<ConHolyVeil>();
		if (condition != null)
		{
			num14 += condition.power * 5; 
			num12 += condition.power * 5; 
		}
		num14 /= EClass.sources.stats.alias[n].hexPower; 
		if (id != EffectId.DebuffKizuami && EClass.rnd(power) < num14) 
		num12 /= EClass.sources.stats.alias[n].hexPower; 
		if (id != EffectId.DebuffKizuami && EClass.rnd(power) < num12) 
		{
			int num15 = 10; 
			int num16 = (TC.IsPowerful ? 40 : 90); 
			int num13 = 10; 
			int num14 = (TC.IsPowerful ? 40 : 90); 
			if (CC.IsPCFaction)
			{
				num15 += EClass.curve(CC.LER, 100, 50) / 10; 
				num13 += EClass.curve(CC.LER, 100, 50) / 10; 
			}
			if (TC.IsPowerful)
			{
				num15 /= 2; 
				num13 /= 2; 
			}
			if (condition != null)
			{
				num15 /= 5; 
				num13 /= 5; 
			}
			if (num15 >= num16) 
			if (num13 >= num14) 
			{
				num15 = num16; 
				num13 = num14; 
			}
			if (EClass.rnd(100) > num15) 
			if (EClass.rnd(100) > num13) 
			{
				TC.Say("debuff_resist", TC);
				CC.DoHostileAction(TC);

void AddCon<T>(int rate, int power) where T : Condition

cs
		break;
	case EffectId.Revive:
	{
		List<KeyValuePair<int, Chara>> list11 = EClass.game.cards.globalCharas.Where((KeyValuePair<int, Chara> a) => a.Value.isDead && a.Value.faction == EClass.pc.faction && !a.Value.isSummon && a.Value.c_wasInPcParty).ToList(); 
		List<KeyValuePair<int, Chara>> list4 = EClass.game.cards.globalCharas.Where((KeyValuePair<int, Chara> a) => a.Value.isDead && a.Value.faction == EClass.pc.faction && !a.Value.isSummon && a.Value.c_wasInPcParty).ToList(); 
		if (TC.IsPCFaction || TC.IsPCFactionMinion)
		{
			if (TC.IsPC && list11.Count == 0) 
			if (TC.IsPC && list4.Count == 0) 
			{
				list11 = EClass.game.cards.globalCharas.Where((KeyValuePair<int, Chara> a) => a.Value.CanRevive() && a.Value.isDead && a.Value.faction == EClass.pc.faction && !a.Value.isSummon).ToList(); 
				list4 = EClass.game.cards.globalCharas.Where((KeyValuePair<int, Chara> a) => a.Value.CanRevive() && a.Value.isDead && a.Value.faction == EClass.pc.faction && !a.Value.isSummon).ToList(); 
			}
			if (list11.Count > 0) 
			if (list4.Count > 0) 
			{
				list11.RandomItem().Value.Chara.GetRevived(); 
				list4.RandomItem().Value.Chara.GetRevived(); 
				break;
			}
		}

void AddCon<T>(int rate, int power) where T : Condition

cs
	case EffectId.DamageMindGreat:
	case EffectId.Weaken:
	{
		bool flag9 = id == EffectId.DamageBody || id == EffectId.DamageBodyGreat; 
		bool flag10 = id == EffectId.DamageBody || id == EffectId.DamageBodyGreat; 
		bool mind = id == EffectId.DamageMind || id == EffectId.DamageMindGreat;
		int num9 = ((id == EffectId.DamageBody || id == EffectId.DamageMind) ? 1 : (4 + EClass.rnd(4)));
		if (id == EffectId.Weaken)
		{
			flag9 = EClass.rnd(2) == 0; 
			mind = !flag9; 
			flag10 = EClass.rnd(2) == 0; 
			mind = !flag10; 
			num9 = 1;
		}
		else

void AddCon<T>(int rate, int power) where T : Condition

cs
			TC.PlayEffect("debuff");
			TC.PlaySound("debuff");
		}
		TC.Say(flag9 ? "damageBody" : "damageMind", TC); 
		TC.Say(flag10 ? "damageBody" : "damageMind", TC); 
		for (int k = 0; k < num9; k++)
		{
			TC.DamageTempElements(power, flag9, mind, id != EffectId.Weaken); 
			TC.DamageTempElements(power, flag10, mind, id != EffectId.Weaken); 
		}
		if (TC.IsPC)
		{

void AddCon<T>(int rate, int power) where T : Condition

cs
	case EffectId.EnhanceBodyGreat:
	case EffectId.EnhanceMindGreat:
	{
		bool flag11 = id == EffectId.EnhanceBody || id == EffectId.EnhanceBodyGreat; 
		bool flag12 = id == EffectId.EnhanceBody || id == EffectId.EnhanceBodyGreat; 
		bool mind2 = id == EffectId.EnhanceMind || id == EffectId.EnhanceMindGreat;
		if (id != EffectId.EnhanceBody && id != EffectId.EnhanceMind)
		{
			EClass.rnd(4);
		}
		TC.Say(flag11 ? "enhanceBody" : "enhanceMind", TC); 
		TC.Say(flag12 ? "enhanceBody" : "enhanceMind", TC); 
		TC.PlayEffect("buff");
		TC.PlaySound("buff");
		TC.EnhanceTempElements(power, flag11, mind2, onlyRenew: true); 
		TC.EnhanceTempElements(power, flag12, mind2, onlyRenew: true); 
		break;
	}
	case EffectId.RestoreBody:
	case EffectId.RestoreMind:
	{
		bool flag10 = id == EffectId.RestoreBody; 
		bool flag9 = id == EffectId.RestoreBody; 
		if (flag)
		{
			Redirect(flag10 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef)); 
			Redirect(flag9 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef)); 
			break;
		}
		TC.Say(flag10 ? "restoreBody" : "restoreMind", TC); 
		TC.Say(flag9 ? "restoreBody" : "restoreMind", TC); 
		TC.PlaySound("heal");
		TC.PlayEffect("heal");
		TC.CureHost(flag10 ? CureType.CureBody : CureType.CureMind, power, state); 
		TC.CureHost(flag9 ? CureType.CureBody : CureType.CureMind, power, state); 
		if (blessed)
		{
			Redirect(flag10 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef)); 
			Redirect(flag9 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef)); 
		}
		break;
	}

void AddCon<T>(int rate, int power) where T : Condition

cs
			Redirect(EffectId.CurseEQ, BlessedState.Normal, default(ActRef));
			break;
		}
		IList<Condition> list10 = TC.conditions.Copy(); 
		list10.Shuffle(); 
		IList<Condition> list5 = TC.conditions.Copy(); 
		list5.Shuffle(); 
		CC.PlaySound("remove_hex");
		CC.PlayEffect("remove_hex");
		foreach (Condition item8 in list10) 
		foreach (Condition item8 in list5) 
		{
			if (item8.Type != ConditionType.Debuff || item8.IsKilled)
			{

void AddCon<T>(int rate, int power) where T : Condition

cs
		if (TC.HasElement(1211))
		{
			TC.Say("drinkSaltWater_snail", TC);
			int num17 = ((TC.hp > 10) ? (TC.hp - EClass.rnd(10)) : 10000); 
			TC.DamageHP(num17, AttackSource.None, CC); 
			int num19 = ((TC.hp > 10) ? (TC.hp - EClass.rnd(10)) : 10000); 
			TC.DamageHP(num19, AttackSource.None, CC); 
		}
		else if (TC.IsPC)
		{

void AddCon<T>(int rate, int power) where T : Condition

cs
		{
			TC.PlayEffect("buff");
			TC.PlaySound("offering");
			int num18 = TC.Evalue(1423); 
			if (flag && num18 > 1) 
			{ 
				TC.SetFeat(1423, num18 - 1, msg: true); 
			} 
			else if (num18 < 15) 
			int num17 = TC.Evalue(1423); 
			if (num17 > 0) 
			{
				TC.SetFeat(1423, Mathf.Min(num18 + ((!blessed) ? 1 : 2), 15), msg: true); 
				int num18 = 0; 
				if (flag && num17 > 1) 
				{ 
					num18 = -1; 
				} 
				else if (num17 < 15) 
				{ 
					num18 = ((!blessed) ? 1 : 2); 
					if (num18 + num17 > 15) 
					{ 
						num18 = 1; 
					} 
				} 
				if (num18 != 0) 
				{ 
					TC.SetFeat(1423, num17 + num18, msg: true); 
					TC.SetInt(134, TC.GetInt(134) + num18); 
				} 
			}
		}
		if (flag)

void AddCon<T>(int rate, int power) where T : Condition

cs
		{
			power /= 4;
		}
		List<Thing> list8 = TC.things.List((Thing t) => (t.Num <= 1 && t.IsEquipmentOrRanged && !t.IsToolbelt && !t.IsLightsource && t.isEquipped) ? true : false); 
		if (list8.Count != 0) 
		List<Thing> list10 = TC.things.List((Thing t) => (t.Num <= 1 && t.IsEquipmentOrRanged && !t.IsToolbelt && !t.IsLightsource && t.isEquipped) ? true : false); 
		if (list10.Count != 0) 
		{
			Thing thing6 = list8.RandomItem(); 
			Thing thing6 = list10.RandomItem(); 
			TC.Say("acid_hit", TC);
			if (thing6.isAcidproof)
			{

BaseCondition

public void SetElement(int id)

cs
		refVal = id;
	}

	public void SetValue(int a) 
	{ 
		value = a; 
	} 
	public void SetRefVal(int a, int b)
	{
		refVal = a;

BaseSong

public override void OnStart()

cs

	public override void Tick()
	{
		if (EClass._zone.IsRegion) 
		if (!EClass._zone.IsRegion && !owner.HasCondition<ConSilence>()) 
		{
			return; 
			Element element = owner.elements.GetElement(IdAbility); 
			if (element != null) 
			{ 
				owner.elements.ModExp(element.id, 20f); 
			} 
			if (EClass.rnd(100) == 0) 
			{ 
				owner.elements.ModExp(241, owner.IsPC ? 10 : 100); 
			} 
			TickSong(); 
		}
		if (owner.HasCondition<ConSilence>()) 
		{ 
			Kill(); 
			return; 
		} 
		Element element = owner.elements.GetElement(IdAbility); 
		if (element != null) 
		{ 
			owner.elements.ModExp(element.id, 20f); 
		} 
		if (EClass.rnd(10) == 0) 
		{ 
			owner.elements.ModExp(241, owner.IsPC ? 10 : 100); 
		} 
		TickSong(); 
	}

	public virtual void TickSong()

CINT

public class CINT

cs
	public const int isAlreadyCaptured = 132;

	public const int uidAttune = 133;
	public const int peakyAdded = 134; 
}

Chara

public void CureCondition<T>(int v = 99999) where T : Condition

cs
		}
	}

	public BaseCondition GetCondition(string idCon) 
	{ 
		for (int i = 0; i < conditions.Count; i++) 
		{ 
			if (conditions[i].source.alias == idCon) 
			{ 
				return conditions[i]; 
			} 
		} 
		return null; 
	} 
	public override T GetCondition<T>()
	{
		for (int i = 0; i < conditions.Count; i++)

ConDim

public class ConDim : BadCondition

cs
public class ConDim : BadCondition
{
	public override bool ConsumeTurn => GetPhase() >= 1; 
	public override bool ConsumeTurn => GetPhase() >= 2; 
}

+ConSongValor

File Created
cs
public class ConSongValor : BaseBuff
{
}

DNA

public void Apply(Chara c, bool reverse)

cs
			}
			break;
		case "feat":
			c.SetFeat(num, c.elements.ValueWithoutLink(num) + ((!reverse) ? 1 : (-1)), !reverse); 
		{ 
			int num3 = c.elements.ValueWithoutLink(num) + ((!reverse) ? 1 : (-1)); 
			if (num3 < 0) 
			{ 
				num3 = 0; 
			} 
			c.SetFeat(num, num3, !reverse); 
			if (reverse && num == 1423) 
			{ 
				int @int = c.GetInt(134); 
				if (@int > 0) 
				{ 
					c.SetFeat(num, -@int); 
				} 
				c.SetInt(134); 
			} 
			break;
		} 
		case "ability":
			if (reverse)
			{

FortuneRollData

public List<List<string>> GetPrizeList()

cs
		{
			"computer", "834", "1090", "goods_figure", "goods_canvas", "mb_1", "mb_2", "mb_3", "mb_4", "mb_5",
			"1174", "1085", "toilet", "714", "nobility", "plat", "1165", "mathammer", "medal", "bbq",
			"panty", "beehive", "ticket_resident", "lovepotion", "crystal_sun", "goods_crim", "ride_boat"
			"panty", "beehive", "ticket_resident", "lovepotion", "crystal_sun", "goods_crim", "ride_boat", "ride_surf"
		},
		new List<string>
		{

GoalCombat

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

cs
			break;
		case "taunt":
		{
			bool flag6 = owner.HasCondition<StanceTaunt>(); 
			bool flag7 = tactics.source.taunt != -1 && 100 * owner.hp / owner.MaxHP >= tactics.source.taunt; 
			num = ((flag6 && !flag7) ? 100 : ((!flag6 && flag7) ? 100 : 0)); 
			bool flag9 = owner.HasCondition<StanceTaunt>(); 
			bool flag10 = tactics.source.taunt != -1 && 100 * owner.hp / owner.MaxHP >= tactics.source.taunt; 
			num = ((flag9 && !flag10) ? 100 : ((!flag9 && flag10) ? 100 : 0)); 
			break;
		}
		case "song":
		{
			bool flag10 = owner.HasCondition<BaseSong>(); 
			bool flag11 = owner.mana.value > owner.mana.max / 3; 
			num = ((flag10 && !flag11) ? 100 : ((!flag10 && flag11) ? 100 : 0)); 
			BaseSong baseSong = owner.GetCondition(act.source.proc[1]) as BaseSong; 
			bool num2 = baseSong != null; 
			bool flag8 = num2 && act.GetPower(owner) > baseSong.power; 
			num = ((!num2 || flag8) ? 200 : 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 flag7 = text == "dot"; 
			if (flag7 && (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 && flag7) 
			{
				num += 10;
			}

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

cs
			{
				continue;
			}
			bool flag8 = act is ActBolt; 
			if ((owner.pos.IsBlocked && (flag8 || act is ActBall || act is ActBreathe)) || !flag || (owner.IsPCParty && (EClass._zone.IsTown || EClass._zone.IsPCFaction)) || (act.id == 9150 && EClass._zone.IsPCFaction && owner.IsNeutralOrAbove())) 
			bool flag6 = act is ActBolt; 
			if ((owner.pos.IsBlocked && (flag6 || act is ActBall || act is ActBreathe)) || !flag || (owner.IsPCParty && (EClass._zone.IsTown || EClass._zone.IsPCFaction)) || (act.id == 9150 && EClass._zone.IsPCFaction && owner.IsNeutralOrAbove())) 
			{
				continue;
			}
			GetNumEnemy(flag8 ? 6 : 5); 
			if (numEnemy == 0 || (owner.IsPCFactionOrMinion && GetNumNeutral(flag8 ? 6 : 5) > 0)) 
			GetNumEnemy(flag6 ? 6 : 5); 
			if (numEnemy == 0 || (owner.IsPCFactionOrMinion && GetNumNeutral(flag6 ? 6 : 5) > 0)) 
			{
				continue;
			}

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

cs
			{
				continue;
			}
			int num2 = EClass._zone.CountMinions(owner); 
			if (num2 >= owner.MaxSummon) 
			int num3 = EClass._zone.CountMinions(owner); 
			if (num3 >= owner.MaxSummon) 
			{
				continue;
			}
			num = tactics.P_Summon - 20 * num2 / owner.MaxSummon; 
			num = tactics.P_Summon - 20 * num3 / owner.MaxSummon; 
			break;
		}
		case "summonAlly":

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

cs
			{
				foreach (Chara member2 in EClass.pc.party.members)
				{
					float num4 = 100f - (float)(member2.mana.value * 100) / MathF.Max(1f, member2.mana.max); 
					if (num4 > (float)num) 
					float num5 = 100f - (float)(member2.mana.value * 100) / MathF.Max(1f, member2.mana.max); 
					if (num5 > (float)num) 
					{
						num = (int)num4; 
						num = (int)num5; 
					}
				}
			}

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

cs
			break;
		case 9200:
		{
			int num3 = 0; 
			int num4 = 0; 
			foreach (Condition condition in tc.conditions)
			{
				if (condition.Type == ConditionType.Debuff)
				{
					num3++; 
					num4++; 
				}
			}
			num = num3 * 15; 
			num = num4 * 15; 
			break;
		}
		}

int HealFactor(Chara c)

cs
			{
				return 0;
			}
			float num7 = (float)c.hp / (float)c.MaxHP; 
			if (num7 > (isHOT ? 0.85f : 0.75f)) 
			float num8 = (float)c.hp / (float)c.MaxHP; 
			if (num8 > (isHOT ? 0.85f : 0.75f)) 
			{
				return 0;
			}
			int num8 = tactics.P_Heal - (int)((float)tactics.P_Heal * num7) + (isHOT ? 50 : 25); 
			int num9 = tactics.P_Heal - (int)((float)tactics.P_Heal * num8) + (isHOT ? 50 : 25); 
			foreach (Condition condition2 in c.conditions)
			{
				if (condition2 is ConFear)
				{
					num8 += 10; 
					num9 += 10; 
				}
				else if (condition2 is ConPoison)
				{
					num8 += 2; 
					num9 += 2; 
				}
				else if (condition2 is ConConfuse)
				{
					num8 += 4; 
					num9 += 4; 
				}
				else if (condition2 is ConDim)
				{
					num8 += 6; 
					num9 += 6; 
				}
				else if (condition2 is ConBleed)
				{
					num8 += 8; 
					num9 += 8; 
				}
			}
			return num8; 
			return num9; 
		}
	}
	abilities.Sort((ItemAbility a, ItemAbility b) => b.priority - a.priority);

void BuildCharaList()

cs
		{
			if (chara2 != owner)
			{
				int num11 = owner.Dist(chara2); 
				if (num11 > sightRadius || !owner.CanSeeLos(chara2, num11)) 
				int num12 = owner.Dist(chara2); 
				if (num12 > sightRadius || !owner.CanSeeLos(chara2, num12)) 
				{
					continue;
				}

int ForeachChara(ItemAbility a, Func<Chara, int> func, bool isFriendlyAbility)

cs
			return func(owner);
		}
		BuildCharaList();
		int num5 = 0; 
		int num6 = 0; 
		foreach (Chara chara3 in charas)
		{
			int num6 = func(chara3); 
			if (num6 > 0) 
			int num7 = func(chara3); 
			if (num7 > 0) 
			{
				if (isFriendlyAbility)
				{

int ForeachChara(ItemAbility a, Func<Chara, int> func, bool isFriendlyAbility)

cs
					}
					if (chara3 != owner)
					{
						num6 += tactics.P_Party; 
						num7 += tactics.P_Party; 
					}
				}
				else if (!owner.IsHostile(chara3))
				{
					continue;
				}
				if (num6 >= num5) 
				if (num7 >= num6) 
				{
					a.tg = chara3;
					num5 = num6; 
					num6 = num7; 
				}
			}
		}
		return num5; 
		return num6; 
	}
	int GetAttackMod(Act a)
	{

int GetAttackMod(Act a)

cs
		{
			return 0;
		}
		int num9 = ((a.source.aliasRef == "mold") ? owner.MainElement.id : EClass.sources.elements.alias[a.source.aliasRef].id); 
		int num10 = -15 * tc.ResistLvFrom(num9); 
		int num10 = ((a.source.aliasRef == "mold") ? owner.MainElement.id : EClass.sources.elements.alias[a.source.aliasRef].id); 
		int num11 = -15 * tc.ResistLvFrom(num10); 
		if (a is ActSword)
		{
			num10 = 0; 
			num11 = 0; 
		}
		if (owner.HasElement(1238) && num10 < -15) 
		if (owner.HasElement(1238) && num11 < -15) 
		{
			num10 = -15; 
			num11 = -15; 
		}
		switch (num9) 
		switch (num10) 
		{
		case 910:
			if (tc.isWet)
			{
				num10 -= 30; 
				num11 -= 30; 
			}
			break;
		case 911:
			if (tc.HasCondition<ConBurning>())
			{
				num10 -= 30; 
				num11 -= 30; 
			}
			break;
		case 912:
			if (tc.isWet)
			{
				num10 += 30; 
				num11 += 30; 
			}
			break;
		}
		return num10; 
		return num11; 
	}
	void GetNumEnemy(int radius)
	{

StanceSongValor

public class StanceSongValor : BaseSong

cs

	public override void TickSong()
	{
		foreach (Chara item in owner.pos.ListCharasInRadius(owner, 4, (Chara c) => (c.IsDeadOrSleeping || !owner.IsPCFactionOrMinion) ? (!c.IsHostile(owner)) : c.IsPCFactionOrMinion)) 
		foreach (Chara item in owner.pos.ListCharasInRadius(owner, 4, (Chara c) => !c.IsDeadOrSleeping && ((!owner.IsPCFactionOrMinion) ? (!c.IsHostile(owner)) : c.IsPCFactionOrMinion))) 
		{
			if (!item.HasCondition<ConEuphoric>()) 
			if (!item.HasCondition<ConSongValor>()) 
			{
				item.AddCondition<ConEuphoric>(base.power); 
				item.AddCondition<ConSongValor>(base.power); 
			}
			if (!item.HasCondition<ConHero>() && (item.HasCondition<ConFear>() || item.HasCondition<ConConfuse>())) 
			else
			{
				item.AddCondition<ConHero>(base.power); 
				item.GetCondition<ConSongValor>()?.SetValue(3); 
			}
		}
	}

Trait

public virtual void OnBarter(bool reroll = false)

cs
				break;
			case ShopType.Moyer:
			{
				for (int num14 = 1; num14 <= 24; num14++) 
				for (int num14 = 1; num14 <= 25; num14++) 
				{
					AddAdvWeek(num14);
				}

TraitTrolley

public virtual string GetIdSound()

cs
		return "ride_kin";
	case "ride_boat":
	case "ride_boat2":
	case "ride_surf":
		return "ride_boat";
	case "wheel_chair":
		if (owner.idSkin != 1)