EA 23.217 Nightly
October 11, 2025
11 files modified. 1 new file created.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
CardBlueprint (1)
cs
public static void Set(CardBlueprint _bp)
public static void Set(CardBlueprint _bp = null)
ActRanged
public override bool Perform()
cs
if (!item2.Equals(obj))
{
Chara firstChara = item2.FirstChara;
if ((firstChara == null || firstChara.IsHostile(Act.CC)) && (firstChara != null || scatter != 0))
if ((firstChara == null || firstChara.IsHostile(Act.CC)) && (firstChara != null || scatter != 0) && (scatter <= 0 || EClass.rnd(EClass.rnd(100) + 1) <= scatter))
{
Shoot(item2.FirstChara, item2);
Shoot(item2.FirstChara ?? item2.FindThing<TraitTrainingDummy>()?.owner, item2);
}
}
}
AttackProcess
public void PlayRangedAnime(int numFire, float delay = 0f)
cs
{
if (EClass.core.IsGameStarted && _CC.IsAliveInCurrentZone && _zone == _CC.currentZone)
{
string id = _weapon.id;
if (!(id == "gun_rail"))
switch (_weapon.id)
{
if (id == "gun_laser")
{
_CC.PlayEffect("laser").GetComponent<SpriteBasedLaser>().Play(_TP.PositionCenter());
}
else
case "gun_rail":
_CC.PlayEffect("laser_rail").GetComponent<SpriteBasedLaser>().Play(_TP.PositionCenter());
break;
case "gun_laser":
_CC.PlayEffect("laser").GetComponent<SpriteBasedLaser>().Play(_TP.PositionCenter());
break;
case "gun_laser_assault":
Effect.Get("ranged_laser")._Play(_CC.pos, _CC.isSynced ? _CC.renderer.position : _CC.pos.Position(), 0f, _TP, data.sprite);
break;
default:
{
Effect effect = Effect.Get("ranged_arrow")._Play(_CC.pos, _CC.isSynced ? _CC.renderer.position : _CC.pos.Position(), 0f, _TP, data.sprite);
if (isCane)
{
Effect effect = Effect.Get("ranged_arrow")._Play(_CC.pos, _CC.isSynced ? _CC.renderer.position : _CC.pos.Position(), 0f, _TP, data.sprite);
if (isCane)
{
effect.sr.color = effColor;
}
effect.sr.color = effColor;
}
break;
}
else
{
_CC.PlayEffect("laser_rail").GetComponent<SpriteBasedLaser>().Play(_TP.PositionCenter());
}
if (data.eject)
{
Card
public void SpawnLoot(Card origin)
cs
}
if (Chara.IsMachine)
{
bool flag3 = Chara.HasElement(1248);
if (chance(20))
{
list.Add(ThingGen.Create("microchip"));
list.Add(ThingGen.Create(flag3 ? "scrap" : "microchip"));
}
if (chance(15))
{
list.Add(ThingGen.Create("battery"));
list.Add(ThingGen.Create(flag3 ? "bolt" : "battery"));
}
}
else
CardBlueprint
public static CardBlueprint Chara(int lv, Rarity rarity = Rarity.Normal)
cs
};
}
public static void Set(CardBlueprint _bp)
public static void Set(CardBlueprint _bp = null)
{
current = _bp;
current = _bp ?? _Default;
}
public static void SetNormalRarity(bool fixedMat = false)
CardRenderer
public override void Draw(RenderParam p, ref Vector3 v, bool drawShadow)
cs
drawShadow = traitFigure.ShowShadow;
pref = row.pref;
}
if (renderData.pass != null && EClass.pc.held == owner)
p.x += pref.x * (float)((owner.dir % 2 == 0) ? 1 : (-1));
p.y += pref.y;
p.z += pref.z;
if (owner.noShadow || !owner.IsInstalled)
{
int num = (int)renderData.pass.pmesh.tiling.x;
string id = renderData.pass.name;
if (!(id == "pass charaL"))
{
if (id == "pass charaLW")
{
if (p.tile < 0f)
{
p.tile *= -1f;
}
p.tile = (int)p.tile / num * num * 4 + (int)p.tile % num * 2;
}
}
else
{
p.tile = (int)p.tile / num * num * 2 + (int)p.tile % num;
}
drawShadow = false;
}
}
else
public override void Draw(RenderParam p, ref Vector3 v, bool drawShadow)
cs
{
RenderObject.tempV = position;
RenderObject.tempV.y += data.offset.y + data.size.y;
for (int num2 = listTC.Count - 1; num2 >= 0; num2--)
for (int num = listTC.Count - 1; num >= 0; num--)
{
listTC[num2].OnDraw(ref RenderObject.tempV);
listTC[num].OnDraw(ref RenderObject.tempV);
}
}
if (owner.trait.RenderExtra)
Chara
cs
{
return false;
}
if (CurrentGeneSlot != 0)
{
return false;
}
if (id == "mech_scarab" && (isSynced || pos.cell.light > 0 || (!EClass._map.IsIndoor && !pos.cell.HasRoof && !EClass.world.date.IsNight)))
{
return false;
cs
chara.RefreshFaithElement();
chara.hp = (int)Mathf.Clamp((float)chara.MaxHP * ((float)base.hp / (float)MaxHP) * 0.99f, 0f, chara.MaxHP);
chara.isCopy = true;
chara.isScaled = base.isScaled;
if (HaveFur())
{
chara.c_fur = -1;
public void RestockEquip(bool onCreate)
cs
case "mech_angel":
if (onCreate)
{
CardBlueprint.Set();
Thing thing = ThingGen.Create("pole_holy");
thing.SetReplica(on: true);
thing.rarity = Rarity.Normal;
cs
EClass.Sound.StopBGM(3f);
EClass._zone.SetBGM(1, refresh: false);
break;
case "doga":
{
QuestCurry questCurry = EClass.game.quests.Get<QuestCurry>();
if (questCurry != null)
{
num = 5;
flag = (flag2 = true);
EClass.Sound.StopBGM(3f);
EClass._zone.SetBGM(1, refresh: false);
questCurry.NextPhase();
}
break;
}
case "fairy_raina":
case "fairy_poina":
{
CoreDebug
cs
bool key3 = Input.GetKey(KeyCode.LeftControl);
TraitStairs traitStairs = null;
if (Input.GetKeyDown(KeyCode.KeypadPlus) || (EInput.isShiftDown && Input.GetKeyDown(KeyCode.Period)))
{
TraitStairsLocked traitStairsLocked = EClass._map.FindThing<TraitStairsLocked>();
if (traitStairsLocked != null && EClass._zone.CanUnlockExit)
{
traitStairsLocked.OnUse(EClass.pc);
}
}
if (Input.GetKeyDown(KeyCode.KeypadPlus) || (EInput.isShiftDown && Input.GetKeyDown(KeyCode.Period)))
{
traitStairs = EClass._map.FindThing<TraitStairsDown>();
}
ElementContainer
void AddElements(ElementContainer container, bool isGlobal)
cs
public List<Element> ListBestAttributes()
{
List<Element> obj = ListElements((Element a) => a.HasTag("primary"));
obj.Sort((Element a, Element b) => (b.ValueWithoutLink - a.ValueWithoutLink) * 100000 + a.id - b.id);
obj.Sort((Element a, Element b) => (int)((long)(b.ValueWithoutLink - a.ValueWithoutLink) * 100000L + a.id - b.id));
return obj;
}
public List<Element> ListBestSkills()
{
List<Element> obj = ListElements((Element a) => a.source.category == "skill");
obj.Sort((Element a, Element b) => (b.ValueWithoutLink - a.ValueWithoutLink) * 100000 + a.id - b.id);
obj.Sort((Element a, Element b) => (int)((long)(b.ValueWithoutLink - a.ValueWithoutLink) * 100000L + a.id - b.id));
return obj;
}
+QuestCurry
File Created
cs
public class QuestCurry : QuestSequence
{
public override void OnComplete()
{
}
}
Trait
cs
case ShopType.Medal:
NoRestockId("sword_dragon");
Add("sword_dragon", 1, 0).SetReplica(on: true);
NoRestockId("point_stick");
Add("point_stick", 1, 0).SetReplica(on: true);
NoRestockId("blunt_bonehammer");
Add("blunt_bonehammer", 1, 0).SetReplica(on: true);
NoRestockId("pole_gunlance");
TraitAmmoRocket
public class TraitAmmoRocket : TraitAmmo
cs
public class TraitAmmoRocket : TraitAmmo
{
public override int DefaultStock => 10 + EClass.rnd(50);
public override int CraftNum => 20;
}
Zone_CurryRuinDungeon
public class Zone_CurryRuinDungeon : Zone_QuestDungeon
cs
public override bool LockExit => base.lv <= -1;
public override bool CanUnlockExit => EClass.game.quests.IsStarted<QuestCurry>();
public override string idExport
{
get
public override string idExport
cs
{
return base.idExport;
}
return "vernis_mine_boss";
return "curry_boss";
}
}