EA 23.201 Nightly
September 18, 2025
11 files modified.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
RecipeManager (1)
public bool CanCeomUpWithRecipe(string idRecipe)
public LearnState GetRecipeLearnState(string idRecipe)
ActEffect
public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
CC.PlaySound("fire");
CC.PlayEffect("Element/eleFire");
CC.Say("burn_mana", CC);
CC.mana.Mod(-CC.mana.max / 3);
CC.mana.Mod(-CC.mana.max / 3 - 1);
break;
case EffectId.Exterminate:
{
ActMelee
frustration = GetWeaponEnc(624, addSelfEnc: true);
int num3 = GetWeaponEnc(622, addSelfEnc: true);
feint = GetWeaponEnc(623, addSelfEnc: true);
knockback = GetWeaponEnc(603, addSelfEnc: true);
knockback = Act.CC.Evalue(603);
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)
ActThrow
public static EffectIRenderer Throw(Card c, Point p, Card target, Thing t, Throw
c.ModExp(108, 100);
if (traitMonsterBall.IsDuponneBall && EClass.game.quests.GetPhase<QuestNegotiationDarkness>() == 3)
{
EClass.Sound.StopBGM(3f);
EClass._zone.SetBGM(1, refresh: false);
EClass.game.quests.Get<QuestNegotiationDarkness>().NextPhase();
}
}
AttackProcess
public bool Perform(int count, bool hasHit, float dmgMulti = 1f, bool maxRoll =
ModExpDef(150, 90);
ModExpDef(151, 90);
}
ProcAbility(list, CC, TC, weaponSkill.Value + GetTwoHandEncBonus(CC), subAttack);
ProcAbility(list, CC, TC, weaponSkill.Value * (100 + GetTwoHandEncBonus(CC)) / 100, subAttack);
return false;
}
if (TC.IsPC)
public bool Perform(int count, bool hasHit, float dmgMulti = 1f, bool maxRoll =
}
}
}
ProcAbility(list, CC, TC, weaponSkill.Value + GetTwoHandEncBonus(CC), subAttack);
ProcAbility(list, CC, TC, weaponSkill.Value * (100 + GetTwoHandEncBonus(CC)) / 100, subAttack);
}
if (!CC.IsAliveInCurrentZone || !TC.IsAliveInCurrentZone)
{
BaseTaskHarvest
public override string GetText(string str = "")
}
SetTarget(EClass.pc);
string text = "tHarvest".lang(GetBaseText(str), (EClass.pc.Tool == null) ? "hand".lang() : owner.Tool.NameSimple, toolLv.ToString() ?? "");
if (EClass.pc.HasElement(1661) && EClass.player.recipes.CanCeomUpWithRecipe(IdRecipe))
if (EClass.pc.HasElement(1661))
{
text = text + " " + "TaskDisassemble_newrecipe".lang();
RecipeManager.LearnState recipeLearnState = EClass.player.recipes.GetRecipeLearnState(IdRecipe);
switch (recipeLearnState)
{
case RecipeManager.LearnState.Learnable:
text = text + " " + "TaskDisassemble_newrecipe".lang();
break;
default:
text = text + " " + ("TaskDisassemble_" + recipeLearnState).lang();
break;
case RecipeManager.LearnState.Unavailable:
break;
}
}
text = text + " (" + GetTextDifficulty() + ")";
if (IsTooHard)
Card
thing.refVal = ele;
thing.encLV = num2;
}
EClass._map.TrySmoothPick(pos.IsBlocked ? EClass.pc.pos : pos, thing, EClass.pc);
EClass._map.TrySmoothPick((!ExistsOnMap || pos.IsBlocked) ? EClass.pc.pos : pos, thing, EClass.pc);
sockets[i] = 0;
}
}
CardRenderer
public override void Draw(RenderParam p, ref Vector3 v, bool drawShadow)
}
if (isChara && owner.parent == EClass.game.activeZone)
{
if (owner.Chara.bossText && !EClass.ui.IsActive && !SplashText.Instance && (!(owner.id == "lurie_boss") || !owner.Chara.IsNeutralOrAbove()))
if (owner.Chara.bossText && !EClass.ui.IsActive && !SplashText.Instance && !LayerDrama.Instance && !owner.Chara.IsNeutralOrAbove())
{
SplashText splashText = Util.Instantiate<SplashText>("Media/Text/SplashText_boss2", EClass.ui.rectDynamic);
string text = owner.Chara.Aka.ToTitleCase(wholeText: true);
public override void Draw(RenderParam p, ref Vector3 v, bool drawShadow)
splashText.textSmall.text = text;
splashText.textBig.text = text2;
owner.Chara.bossText = false;
if (owner.id == "lurie_boss")
string id = owner.id;
if (!(id == "ungaga_pap"))
{
if (EClass._zone is Zone_UnderseaTemple)
if (id == "lurie_boss")
{
if (EClass._map.plDay.list.Count > 0 && EClass._map.plDay.list[0].data.id != 107)
if (EClass._zone is Zone_UnderseaTemple)
{
EClass._zone.SetBGM(107);
}
if (EClass.game.quests.GetPhase<QuestNegotiationDarkness>() == 2)
{
EClass.game.quests.Get<QuestNegotiationDarkness>().NextPhase();
if (EClass._map.plDay.list.Count > 0 && EClass._map.plDay.list[0].data.id != 107)
{
EClass._zone.SetBGM(107);
}
if (EClass.game.quests.GetPhase<QuestNegotiationDarkness>() == 2)
{
EClass.game.quests.Get<QuestNegotiationDarkness>().NextPhase();
}
}
owner.PlaySound("warcry");
}
owner.PlaySound("warcry");
}
else if (EClass._zone is Zone_DungeonMino)
{
EClass._zone.SetBGM(107);
}
}
if (owner.Chara.host == null)
public override void Draw(RenderParam p, ref Vector3 v, bool drawShadow)
if (renderData.pass != null && EClass.pc.held == owner)
{
int num = (int)renderData.pass.pmesh.tiling.x;
string name = renderData.pass.name;
if (!(name == "pass charaL"))
string id = renderData.pass.name;
if (!(id == "pass charaL"))
{
if (name == "pass charaLW")
if (id == "pass charaLW")
{
if (p.tile < 0f)
{
Chara
}
}
break;
case "ungaga_pap":
num = 5;
flag = (flag2 = true);
if (EClass._zone is Zone_DungeonMino)
{
EClass.Sound.StopBGM(3f);
EClass._zone.SetBGM(46, refresh: false);
}
break;
case "melilith_boss":
num = 5;
flag = (flag2 = true);
GoalCombat
}
int num6 = ((a.source.aliasRef == "mold") ? owner.MainElement.id : EClass.sources.elements.alias[a.source.aliasRef].id);
int num7 = -15 * tc.ResistLvFrom(num6);
if (a is ActSword)
{
num7 = 0;
}
switch (num6)
{
case 910:
RecipeManager
public class RecipeManager : EClass
{
public enum LearnState
{
Unavailable,
InsufficientSkill,
AlreadyLearned,
Learnable
}
public static bool rebuild;
public static List<RecipeSource> list = new List<RecipeSource>();
public void ComeUpWithRandomRecipe(string idCat = null, int lvBonus = 0)
}
}
public bool CanCeomUpWithRecipe(string idRecipe)
public LearnState GetRecipeLearnState(string idRecipe)
{
if (idRecipe.IsEmpty())
{
return false;
return LearnState.Unavailable;
}
RecipeSource recipeSource = Get(idRecipe);
if (recipeSource == null || EClass.player.recipes.knownRecipes.ContainsKey(idRecipe) || (!recipeSource.NeedFactory && !recipeSource.IsQuickCraft))
if (recipeSource == null || (!recipeSource.NeedFactory && !recipeSource.IsQuickCraft))
{
return false;
return LearnState.Unavailable;
}
if (EClass.player.recipes.knownRecipes.ContainsKey(idRecipe))
{
return LearnState.AlreadyLearned;
}
int id = recipeSource.GetReqSkill().id;
if (EClass.pc.Evalue(id) + 5 < recipeSource.row.LV)
{
return false;
return LearnState.InsufficientSkill;
}
return true;
return LearnState.Learnable;
}
public void ComeUpWithRecipe(string idRecipe, int chanceForRandomRecipe = 0)
Zone
}
}
public void ResetPlaylist()
{
map._plDay.Clear();
UnityEngine.Object.DestroyImmediate(map.plDay);
map.plDay = null;
RefreshPlaylist();
}
public void RefreshBGM()
{
if (!EClass.pc.IsInActiveZone || EClass.player.simulatingZone)