EA 23.134 Nightly
May 7, 2025
17 files modified. 1 new file created.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
Region (1)
public Point GetRandomPoint(int orgX, int orgY, int radius = 8, bool increaseRadius = false)
public Point GetRandomPoint(int orgX, int orgY, int radius = 8, bool increaseRadius = false, ElomapSiteType type = ElomapSiteType.Nefia)
AI_Read
@@ -10,9 +10,9 @@ public override bool LocalAct
{
if (target != null)
{
if (!(target.trait is TraitStoryBook))
if (!(target.trait is TraitStoryBook) && !(target.trait is TraitDeedRelocate))
{
return !(target.trait is TraitDeedRelocate);
return !(target.trait is TraitScrollMap);
}
return false;
}
ActClearWater
@@ -27,7 +27,7 @@ public static bool HasWaterSource(Point p)
{
foreach (Thing thing in p.Things)
{
if ((thing.trait is TraitWell && thing.c_charges > 0) || thing.trait is TraitBath || thing.id == "387" || thing.id == "486" || thing.id == "876" || thing.id == "867" || thing.id == "1158")
if (thing.trait is TraitWell || thing.trait is TraitBath || thing.id == "387" || thing.id == "486" || thing.id == "876" || thing.id == "867" || thing.id == "1158")
{
return true;
}
ActThrow
@@ -263,7 +263,7 @@ public static EffectIRenderer Throw(Card c, Point p, Card target, Thing t, Throw
Chara chara2 = Act.TC.Chara;
if (traitMonsterBall.IsLittleBall)
{
if (chara2.id != "littleOne" || EClass._zone is Zone_LittleGarden || EClass._zone.IsUserZone)
if (chara2.id != "littleOne" || chara2.IsPCFactionOrMinion || EClass._zone is Zone_LittleGarden || EClass._zone.IsUserZone)
{
Msg.Say("monsterball_invalid");
break;
BaseListPeople
@@ -367,19 +367,22 @@ public override void OnClick(Chara c, ItemGeneral i)
});
}
}
uIContextMenu.AddButton("makeMaid", delegate
if (c.homeBranch == EClass.Branch)
{
if (EClass.Branch.uidMaid == c.uid)
uIContextMenu.AddButton("makeMaid", delegate
{
EClass.Branch.uidMaid = 0;
}
else
{
EClass.Branch.uidMaid = c.uid;
}
list.Refresh();
SE.Click();
});
if (EClass.Branch.uidMaid == c.uid)
{
EClass.Branch.uidMaid = 0;
}
else
{
EClass.Branch.uidMaid = c.uid;
}
list.Refresh();
SE.Click();
});
}
int @int = c.GetInt(36);
bool isLivestockTimerOn = memberType == FactionMemberType.Default && !EClass.world.date.IsExpired(@int);
int remainingHours = EClass.world.date.GetRemainingHours(@int);
@@ -406,23 +409,23 @@ public override void OnClick(Chara c, ItemGeneral i)
SE.Click();
}
});
uIContextMenu.AddButton("addToReserve".lang() + " (" + EClass.Home.listReserve.Count + "/" + EClass.Home.GetMaxReserve() + ")", delegate
{
if (EClass.Home.listReserve.Count >= EClass.Home.GetMaxReserve())
{
SE.Beep();
Msg.Say("reserveLimit");
return;
}
SE.MoveZone();
EClass.Home.AddReserve(c);
list.List();
foreach (ListOwner owner2 in layer.multi.owners)
{
owner2.RefreshTab();
}
});
}
uIContextMenu.AddButton("addToReserve".lang() + " (" + EClass.Home.listReserve.Count + "/" + EClass.Home.GetMaxReserve() + ")", delegate
{
if (EClass.Home.listReserve.Count >= EClass.Home.GetMaxReserve())
{
SE.Beep();
Msg.Say("reserveLimit");
return;
}
SE.MoveZone();
EClass.Home.AddReserve(c);
list.List();
foreach (ListOwner owner2 in layer.multi.owners)
{
owner2.RefreshTab();
}
});
}
}
uIContextMenu.Show();
@@ -448,6 +451,13 @@ public override void OnList()
list.Add(member);
}
}
foreach (Chara member2 in EClass.pc.party.members)
{
if (member2.memberType == memberType && !list.items.Contains(member2))
{
list.Add(member2);
}
}
}
public override void OnRefreshMenu()
Card
switch (currency)
{
case CurrencyType.Ecopo:
if (id == "plat")
{
string text = id;
if (!(text == "plat"))
{
return 500;
if (!(text == "whip_egg"))
{
break;
}
return 3000;
}
break;
return 500;
}
case CurrencyType.Plat:
{
string text = id;
CardRenderer
@@ -395,6 +395,7 @@ public SourcePref GetPref()
case 2622:
case 2624:
case 2626:
case 2828:
return EClass.core.refs.prefs.snowputit2;
}
}
ConSuffocation
@@ -44,7 +44,11 @@ public override void Tick()
}
if (owner != null && owner.IsAliveInCurrentZone)
{
if (!owner.Cell.CanSuffocate())
if (!owner.IsPC)
{
Mod(owner.IsPowerful ? (-15) : (-5));
}
else if (!owner.Cell.CanSuffocate())
{
Mod(-25);
}
DramaCustomSequence
@@ -316,7 +316,7 @@ public void Build(Chara c)
if (!c.isSummon)
{
Choice((c.GetInt(106) == 0) ? "daShutup" : "daShutup2", "_shutup");
if (c.CanInsult())
if (c.CanInsult() || c.GetInt(108) == 1)
{
Choice((c.GetInt(108) == 0) ? "daInsult" : "daInsult2", "_insult");
}
EloMap
return true;
}
public bool IsWater(int gx, int gy)
{
if (GetCell(gx, gy) == null)
{
return false;
}
SourceGlobalTile.Row row = GetSources(gx, gy).LastItem();
if (row != null)
{
return row.id == 4;
}
return false;
}
public bool IsSnow(int gx, int gy)
{
if (GetCell(gx, gy) == null)
FACTION
@@ -324,6 +324,10 @@ public void AddContribution(int a)
public void AddReserve(Chara c)
{
if (c.IsPCParty)
{
EClass.pc.party.RemoveMember(c);
}
if (c.memberType == FactionMemberType.Livestock)
{
c.SetInt(36, EClass.world.date.GetRaw() + 14400);
MapGenDungen
@@ -33,6 +33,11 @@ protected override bool OnGenerateTerrain()
biome.exterior.floor.mat = MATERIAL.GetRandomMaterialFromCategory(zone.lv % 50 + 10, "rock", EClass.sources.materials.alias["granite"]).id;
biome.exterior.floor.matSub = MATERIAL.GetRandomMaterialFromCategory(zone.lv % 50 + 10, "rock", EClass.sources.materials.alias["granite"]).id;
}
if (biome.name == "Dungeon_Water")
{
int id = ((EClass.rnd(2) == 0) ? 187 : 188);
biome.exterior.block.id = (biome.interior.block.id = id);
}
BiomeProfile.TileFloor floor = biome.exterior.floor;
BiomeProfile.TileBlock block = biome.exterior.block;
int idMat = -1;
@@ -219,12 +224,12 @@ protected override bool OnGenerateTerrain()
int tries = 3;
crawler.CrawlUntil(EClass._map, () => EClass._map.GetRandomPoint(), tries, delegate(Crawler.Result r)
{
int id = ((EClass.rnd(3) == 0) ? 108 : 105);
int id2 = ((EClass.rnd(3) == 0) ? 108 : 105);
foreach (Point point2 in r.points)
{
if (!point2.cell.isModified && !point2.HasThing && !point2.HasBlock && !point2.HasObj)
{
map.SetObj(point2.x, point2.z, id);
map.SetObj(point2.x, point2.z, id2);
int num3 = 3;
if (EClass.rnd(6) == 0)
{
Region
@@ -94,14 +94,14 @@ public void RenewRandomSites()
public void UpdateRandomSites()
{
List<Zone> list = ListRandomSites();
int num = 60 - list.Count;
int num = 70 - list.Count;
if (num <= 0)
{
return;
}
for (int i = 0; i < num; i++)
{
if (EClass.rnd(5) == 0)
if (EClass.rnd(100) < 25)
{
CreateRandomSite(GetRandomPoint(ElomapSiteType.NefiaWater), "dungeon_water", updateMesh: false);
}
@@ -120,7 +120,12 @@ public void InitElomap()
public Zone CreateRandomSite(Zone center, int radius = 8, string idSource = null, bool updateMesh = true, int lv = 0)
{
InitElomap();
return CreateRandomSite(GetRandomPoint(center.IsRegion ? (EClass.pc.pos.x + EClass.scene.elomap.minX) : center.x, center.IsRegion ? (EClass.pc.pos.z + EClass.scene.elomap.minY) : center.y, radius), idSource, updateMesh, lv);
Point point = new Point(center.IsRegion ? (EClass.pc.pos.x + EClass.scene.elomap.minX) : center.x, center.IsRegion ? (EClass.pc.pos.z + EClass.scene.elomap.minY) : center.y);
if (elomap.IsWater(point.x, point.z))
{
return CreateRandomSite(GetRandomPoint(point.x, point.z, radius, increaseRadius: false, ElomapSiteType.NefiaWater), "dungeon_water", updateMesh, lv);
}
return CreateRandomSite(GetRandomPoint(point.x, point.z, radius), idSource, updateMesh, lv);
}
private Zone CreateRandomSite(Point pos, string idSource, bool updateMesh, int lv = 0)
@@ -193,7 +198,7 @@ public Point GetRandomPoint(ElomapSiteType type = ElomapSiteType.Nefia)
return null;
}
public Point GetRandomPoint(int orgX, int orgY, int radius = 8, bool increaseRadius = false)
public Point GetRandomPoint(int orgX, int orgY, int radius = 8, bool increaseRadius = false, ElomapSiteType type = ElomapSiteType.Nefia)
{
Point point = new Point();
for (int i = 0; i < 1000; i++)
@@ -204,7 +209,7 @@ public Point GetRandomPoint(int orgX, int orgY, int radius = 8, bool increaseRad
{
radius++;
}
if (elomap.CanBuildSite(point.x, point.z))
if (elomap.CanBuildSite(point.x, point.z, 0, type))
{
return point;
}
TileTypeBlockOpen
@@ -11,4 +11,6 @@ public class TileTypeBlockOpen : TileTypeBlock
public override bool CastAmbientShadow => false;
public override bool IsSkipFloor => false;
public override bool IsBlockSight => false;
}
Trait
@@ -1849,6 +1849,7 @@ public void OnBarter()
break;
case ShopType.Ecopo:
Add("ecomark", 5, 0);
Add("whip_egg", 1, 0);
Add("1165", 1, 0);
Add("plat", 100, 0);
AddThing(ThingGen.CreateScroll(9160).SetNum(5));
TraitDrinkMilkMother
@@ -81,6 +81,7 @@ public override void OnDrink(Chara c)
case "chicken":
case "duck":
case "shamo":
case "penguin":
c.idSkin = 0;
break;
}
TraitFoodEggFertilized
@@ -81,6 +81,7 @@ public static void MakeBaby(Chara c, int baby)
case "shamo":
case "chicken":
case "duck":
case "penguin":
c.idSkin = 1;
break;
}
TraitToolWaterCan
using UnityEngine;
public class TraitToolWaterCan : TraitTool
{
public int MaxCharge => owner.material.hardness / 5 + 4;
public int MaxCharge => Mathf.Max(1, owner.material.hardness / 4 + Mathf.Clamp(owner.QualityLv * 2, 0, 40) + 3);
public override bool HasCharges => true;
+TraitWhipEgg
File Created
public class TraitWhipEgg : TraitWhipLove
{
public override void TrySetHeldAct(ActPlan p)
{
p.pos.ListCards().ForEach(delegate(Card c)
{
if (p.IsSelfOrNeighbor && EClass.pc.CanSee(c))
{
p.TrySetAct("actWhip", delegate
{
EClass.pc.Say("use_whip", c, owner);
EClass.pc.Say("use_scope2", c);
EClass.player.forceTalk = true;
EClass.pc.Talk("egg");
c.Talk("pervert2");
EClass.pc.PlaySound("whip");
c.PlayAnime(AnimeID.Shiver);
if (c.isChara)
{
c.Chara.OnInsulted();
}
c.MakeEgg();
owner.ModCharge(-1);
if (owner.c_charges <= 0)
{
EClass.pc.Say("spellbookCrumble", owner);
owner.Destroy();
}
return true;
}, c);
}
});
}
}