EA 23.345 Nightly โ
September 15, 2026
30 files modified.
Important Changes โ
Possible breaking changes. Click the filename to view the chunk.
Portrait (3) โ
public static ModItemList<Sprite> modPortraits = new ModItemList<Sprite>(3);
public static ModItemList<Sprite> modPortraits = new ModItemList<Sprite>(3, loadOption); public static ModItemList<Sprite> modOverlays = new ModItemList<Sprite>(3);
public static ModItemList<Sprite> modOverlays = new ModItemList<Sprite>(3, loadOption); public static ModItemList<Sprite> modFull = new ModItemList<Sprite>(3);
public static ModItemList<Sprite> modFull = new ModItemList<Sprite>(3, loadOptionFull); AI_Idle โ
public override IEnumerable<Status> Run()
{
break;
}
int n = 0;
int n2 = 0;
owner.pos.ForeachNeighbor(delegate(Point p)
{
if (p.HasChara && p.FirstChara.id == "cocoon")
{
n++;
n2++;
}
});
if (n < 2)
if (n2 < 2)
{
Point randomPoint = owner.pos.GetRandomPoint(1, requireLos: false, allowChara: false, allowBlocked: false, 20);
if (randomPoint != null)
Point randomPoint2 = owner.pos.GetRandomPoint(1, requireLos: false, allowChara: false, allowBlocked: false, 20);
if (randomPoint2 != null)
{
Chara chara3 = EClass._zone.SpawnMob("cocoon", randomPoint);
Chara chara3 = EClass._zone.SpawnMob("cocoon", randomPoint2);
owner.Say("egglay", owner);
chara3.SetHostility(owner.OriginalHostility);
}public override IEnumerable<Status> Run()
{
break;
}
int n2 = 0;
int n = 0;
owner.pos.ForeachNeighbor(delegate(Point p)
{
if (p.HasChara && p.FirstChara.id == "mech_scarab")
{
n2++;
n++;
}
});
if (n2 >= 2)
if (n >= 2)
{
break;
}
Point randomPoint2 = owner.pos.GetRandomPoint(1, requireLos: false, allowChara: false, allowBlocked: false, 20);
if (randomPoint2 != null)
Point randomPoint = owner.pos.GetRandomPoint(1, requireLos: false, allowChara: false, allowBlocked: false, 20);
if (randomPoint != null)
{
Card c = EClass._zone.AddCard(owner.Duplicate(), randomPoint2);
if (randomPoint2.Distance(EClass.pc.pos) < EClass.pc.GetHearingRadius())
Card c = EClass._zone.AddCard(owner.Duplicate(), randomPoint);
if (randomPoint.Distance(EClass.pc.pos) < EClass.pc.GetHearingRadius())
{
Msg.Say("self_dupe", owner, c);
}
}
break;
}
case "imotoroid":
case "marshmallow_monster":
if (owner.TryFuse(0.001f))
{
yield return Success();
}
break;
}
if (owner.HasElement(1432) && owner.TryFuse(0.001f))
{
yield return Success();
}
}
if (owner.IsMinion && owner.master != null && owner.master.id == "keeper_garden" && !(owner.master.ai is GoalCombat))ActEffect โ
void AddCon<T>(int rate, int p2) where T : Condition
CC.TryDuplicate();
break;
case EffectId.Fuse:
CC.TryFuse();
if (!CC.TryFuse() && CC.IsPC)
{
EClass.pc.SayNothingHappans();
}
break;
case EffectId.Escape:
if (CC.IsPCFaction || (EClass._zone.Boss == CC && EClass.rnd(30) != 0))ActionMode โ
public virtual void RotateUnderMouse()
return;
}
hitPoint.cell.RotateAll();
if (EClass.debug.enable && !Input.GetKey(KeyCode.LeftShift))
if (EClass.debug.godBuild && !Input.GetKey(KeyCode.LeftShift))
{
hitPoint.growth?.Grow(100);
if (hitPoint.Installed?.trait is TraitSeed)BaseTileMap โ
public virtual void DrawTile()
}
else
{
if ((tileType != TileType.Illumination || !this.cell.HasObj) && !tileType.AlwaysShow && !this.cell.toggleOcclusion && noRoofMode && currentRoom == null && t.altitude >= lowWallObjAltitude && tileType != TileType.ObjFloat)
{
continue;
}
thingPos.y += (float)t.altitude * altitudeFix.y;
thingPos.z += (float)t.altitude * altitudeFix.z;
}Card โ
public void SpawnLoot(Card origin)
}
}
}
if (trait is TraitMerchantTravel && !EClass._zone.IsFestival)
if (trait is TraitMerchantTravel && !EClass._zone.IsFestival && !isSummon)
{
trait.OnBarter();
Thing thing4 = things.Find<TraitChestMerchant>();CardRenderer โ
public override void Draw(RenderParam p, ref Vector3 v, bool drawShadow)
p.tile = row._tiles[owner.refVal % row._tiles.Length] * ((owner.dir % 2 == 0) ? 1 : (-1));
p.matColor = matColor;
pref = row.pref;
p.x += pref.x * (float)((owner.dir % 2 == 0) ? 1 : (-1));
p.y += pref.y;
p.z += pref.z;
p.z += pref.z * 2f;
if (owner.noShadow || !owner.IsInstalled)
{
drawShadow = false;Cell โ
}
else if (HasObj)
{
if (sourceObj.tileType.CanRotate(buildMode: false))
if (!sourceObj.tileType.CanRotate(buildMode: false))
{
RotateObj(flag, sourceObj.tileType.IsUseBlockDir);
GrowSystem growSystem = growth;
if (growSystem == null || !growSystem.CanRotate())
{
goto IL_00da;
}
}
RotateObj(flag, sourceObj.tileType.IsUseBlockDir);
}
else if (HasFloor)
{
RotateFloor((!flag) ? 1 : (-1));
}
}
goto IL_00da;
IL_00da:
GetPoint().RefreshNeighborTiles();
}Chara โ
{
get
{
if (!IsGlobal && !base.isSubsetCard)
if (!IsGlobal && !base.isSubsetCard && homeZone == EClass._zone)
{
return homeZone == EClass._zone;
return !base.isSummon;
}
return false;
}Zone z = EClass.game.spatials.Find("somewhere");
if (trait is TraitAdventurer)
{
z = EClass.world.region.ListTowns().RandomItem();
z = (from zone in EClass.world.region.ListTowns()
where zone != EClass._zone
select zone).RandomItem();
SetHomeZone(z);
}
MoveZone(z, ZoneTransition.EnterState.RandomVisit);public bool TryFuse(float chance = 1f)
Say("fuse", this);
string text = "marshmallow_king";
string text2 = "fusion";
if (id == "imotoroid")
switch (id)
{
case "imotoroid":
text = "imotomaton";
text2 = "";
text2 = "fusion2";
break;
case "shojo":
text = "shojomaton";
text2 = "fusion2";
break;
case "sister_cat":
text = "sister_catmaton";
text2 = "fusion2";
break;
case "younglady":
text = "youngladymaton";
text2 = "fusion2";
break;
}
Chara chara = EClass._zone.SpawnMob(text, pos);
chara.SetHostility(hostility);
list.Shuffle();
int num = 0;
foreach (Chara item in list)
{
if (!text2.IsEmpty())public bool TryFuse(float chance = 1f)
}
Effect.Get<EffectIRenderer>("throw_fuse").Play(item, item, item.pos, pos);
item.Destroy();
num++;
if (num >= 8)
{
break;
}
}
Destroy();
chara.PlayAnime(AnimeID.FallSky);public void RestockEquip(bool onCreate)
case "mech_scarab":
AddThing("gun_laser");
break;
case "youngladymaton":
case "sister_catmaton":
case "shojomaton":
case "imotomaton":
case "rocketman":
{public override void Die(Element e = null, Card origin = null, AttackSource attaโฆ)
if (origin.IsPCParty || origin.IsPCPartyMinion)
{
int num = 0;
if (trait is TraitMerchantTravel)
if (trait is TraitMerchantTravel && !base.isSummon)
{
num = -20;
}public override CardRenderer _CreateRenderer()
{
CardRenderer cardRenderer = renderer;
CharaRenderer charaRenderer = new CharaRenderer();
if (source.skinAntiSpider != 0 && EClass.core.config.game.antiSpider)
if (source.skinAntiSpider != 0)
{
base.idSkin = source.skinAntiSpider;
base.idSkin = (EClass.core.config.game.antiSpider ? source.skinAntiSpider : 0);
}
if (host != null)
{ContentConfigGame โ
public override void OnInstantiate()
toggleAntiSpider.SetToggle(base.config.game.antiSpider, delegate(bool on)
{
base.config.game.antiSpider = on;
if (EClass.core.IsGameStarted)
{
foreach (Chara chara in EClass._map.charas)
{
chara._CreateRenderer();
}
foreach (Thing thing in EClass._map.things)
{
thing._CreateRenderer();
}
}
});
toggleOffhand.SetToggle(base.config.game.showOffhand, delegate(bool on)
{ContentConfigTest โ
public override void OnInstantiate()
{
base.config.test.extraMoveCancel = on;
});
toggleAAPortrait.SetToggle(base.config.test.aaPortrait, delegate(bool on)
toggleAAPortrait.SetToggle(base.config.test.aaPortraitFilter, delegate(bool on)
{
base.config.test.aaPortrait = on;
base.config.test.aaPortraitFilter = on;
base.config.Apply();
});
toggleBloom2.SetToggle(base.config.test.bloom2, delegate(bool on)
{Core โ
protected override void Awake()
MOD.ResetResources();
Portrait.modPortraitBGFs = new ModItemList<Sprite>();
Portrait.modPortraitBGs = new ModItemList<Sprite>();
Portrait.modPortraits = new ModItemList<Sprite>();
Portrait.modOverlays = new ModItemList<Sprite>();
Portrait.modFull = new ModItemList<Sprite>();
Portrait.modPortraits = new ModItemList<Sprite>(0, Portrait.loadOption);
Portrait.modOverlays = new ModItemList<Sprite>(0, Portrait.loadOption);
Portrait.modFull = new ModItemList<Sprite>(0, Portrait.loadOptionFull);
Portrait.dictList = new Dictionary<string, List<ModItem<Sprite>>>();
TileType.Init();
screen.tileMap.rendererObjDummy.Init();CoreConfig โ
public bool stackNumbers;
public bool aaPortrait;
public bool aaPortraitFilter;
public bool extraTurnaround; public bool cacheEffect;
public float brightnessNight;
public bool aaPortrait => true;
}
[Serializable] camSupport.beautify.bloom = test.bloom2;
camSupport.cam.allowHDR = graphic.hdr;
ApplyScale();
ApplyPortraitAA();
EClass.core.effects.KillAll();
EClass.core.effects.effects.usePool = test.cacheEffect;
}
}
public void ApplyPortraitAA()
{
Portrait.loadOption.mipmap = (test.aaPortraitFilter ? new Vector2Int?(Portrait.standardSize) : ((Vector2Int?)null));
Portrait.loadOptionFull.mipmap = (test.aaPortraitFilter ? new Vector2Int?(Portrait.standardFullSize) : ((Vector2Int?)null));
}
public void ApplyResolution(bool force = false)
{
if (graphic.fixedResolution)DNA โ
public void Generate(Type _type, Chara model = null)
AddSpecial();
}
AddSpecial();
if (EClass.debug.enable)
{
lv = 100;
}
if (EClass.rnd(3) != 0 && lv > 10)
{
IEnumerable<SourceElement.Row> enumerable = EClass.sources.elements.map.Values.Where(delegate(SourceElement.Row row)public void Generate(Type _type, Chara model = null)
{
return false;
}
if (row.LV > lv + ((!EClass.debug.enable) ? 1 : 100))
if (row.LV > lv)
{
return false;
}public void Generate(Type _type, Chara model = null)
{
return false;
}
if (row.category == "ability" && row.aliasRef != "mold" && !row.aliasRef.IsEmpty() && row.id > 10000 && !EClass.sources.elements.alias[row.aliasRef].tag.Contains(row.alias.Split('_')[0]))
{
bool flag = false;
foreach (SourceChara.Row value in EClass.sources.charas.map.Values)
{
if (!value.actCombat.IsEmpty())
{
string[] actCombat = value.actCombat;
for (int i = 0; i < actCombat.Length; i++)
{
if (actCombat[i].Split('/')[0] == row.alias)
{
flag = true;
}
}
if (flag)
{
break;
}
}
}
if (!flag)
{
return false;
}
}
return true;
return (!(row.category == "ability") || !(row.aliasRef != "mold") || row.aliasRef.IsEmpty() || row.id <= 10000 || (EClass.sources.elements.alias[row.aliasRef].tag.Contains(row.alias.Split('_')[0]) ? true : false)) ? true : false;
});
if (enumerable.Count() > 0)
{DramaCustomSequence โ
{
Choice2(c.trait.TextNextRestock, "_buy").DisableSound();
}
if (c.trait is TraitMerchantTravel && !c.IsPCFactionOrMinion)
if (c.trait is TraitMerchantTravel && !c.IsPCFactionOrMinion && !c.isSummon)
{
Choice2("daRob", "_rob");
}{
if (EClass.pc.HasElement(1232) || EClass.pc.HasElement(1291))
{
goto IL_0980;
goto IL_098d;
}
num2 = EClass.pc.HasCondition<StanceMama>();
} }
if (num2)
{
goto IL_0980;
goto IL_098d;
}
goto IL_0991;
goto IL_099e;
}
if (c.isDrunk || c.HasElement(1275) || EClass.debug.enable)
{
Choice2(flag2 ? "daBird" : "daTail", "_tail");
}
}
goto IL_0daa;
IL_0daa:
goto IL_0db7;
IL_09ee:
if (c.trait.CanRevive)
{
Choice2("daRevive", "_revive").DisableSound();
}
if (!c.trait.IDTrainer.IsEmpty() && !EClass._zone.IsUserZone && (Guild.GetCurrentGuild() == null || Guild.GetCurrentGuild().relation.IsMember()))
{
Choice2("daTrain", "_train").DisableSound();
}
if (c.trait.CanWhore)
{
Choice2(flag2 ? "daBirdBuy" : "daTailBuy", "_whore");
}
if (c.trait.CanHeal)
{
Choice2("daHeal", "_heal");
}
if (c.trait.CanServeFood)
{
Choice2("daFood", "_food");
}
if (c.trait is TraitInformer)
{
Choice2("daSellFame", "_sellFame");
}
if (EClass._zone.AllowInvest)
{
if (c.trait.CanInvestTown && Guild.GetCurrentGuild() == null)
{
Choice2("daInvest", "_investZone");
}
if (c.trait.CanInvest)
{
Choice2("daInvest", "_investShop");
}
}
if (c.trait.CanIdentify)
{
Choice2("daIdentify", "_identify").DisableSound();
Choice2("daIdentifyAll", "_identifyAll");
Choice2("daIdentifySP", "_identifySP").DisableSound();
}
if (c.trait.CanPicklock)
{
if (c.Evalue(280) < 20)
{
c.elements.SetBase(280, 20);
}
foreach (Thing item4 in EClass.pc.things.List((Thing a) => a.c_lockLv > 0, onlyAccessible: true))
{
Thing _t2 = item4;
Choice2("daPicklock".lang(_t2.Name), "_picklock").SetOnClick(delegate
{
destThing = _t2;
});
}
}
if (c.trait is TraitBanker)
{
Choice2("daDeposit", "_deposit");
}
if (c.IsMaid || (c.trait.CanInvestTown && (EClass._zone.source.faction == "mysilia" || EClass._zone.IsPCFaction)))
{
Choice2("daExtraTax", "_extraTax");
}
if ((c.trait is TraitMiko_Mifu || c.trait is TraitMiko_Nefu || c.trait is TraitEureka) && EClass.world.date.IsExpired(c.c_dateStockExpire))
{
Choice2("daBlessing", "_blessing");
}
goto IL_0db7;
IL_098d:
Choice2("daMama", "_mama");
goto IL_099e;
IL_099e:
ConTransmuteHuman condition2 = c.GetCondition<ConTransmuteHuman>();
bool num3;
if (condition2 == null)
{
if (c.HasElement(1232))
{
goto IL_09dd;
}
num3 = c.HasElement(1291);
}
else
{
num3 = condition2.IsBaby;
}
if (num3)
{
goto IL_09dd;
}
goto IL_09ee;
IL_09dd:
Choice2("daBaby", "_baby");
goto IL_09ee;
IL_0db7:
if (c.IsHomeMember())
{
if (c.IsMaid)Talk("what", StepDefault);
if (!c.IsMarried || EClass.debug.enable)
{
foreach (Thing item4 in EClass.pc.things.List((Thing a) => !a.c_isImportant && !a.isEquipped && a.c_uidAttune == 0 && (a.id == "amulet_engagement" || a.id == "ring_engagement")))
foreach (Thing item5 in EClass.pc.things.List((Thing a) => !a.c_isImportant && !a.isEquipped && a.c_uidAttune == 0 && (a.id == "amulet_engagement" || a.id == "ring_engagement")))
{
Thing _t2 = item4;
Choice("daMarry".lang(item4.Name), "_marry").SetOnClick(delegate
Thing _t3 = item5;
Choice("daMarry".lang(item5.Name), "_marry").SetOnClick(delegate
{
destThing = _t2;
destThing = _t3;
});
}
}QuestSupply supply = c.quest as QuestSupply;
if (supply != null)
{
foreach (Thing item5 in supply.ListDestThing())
foreach (Thing item6 in supply.ListDestThing())
{
Thing _t3 = item5;
Choice("daDeliver".lang(supply.GetTitle() ?? "", _t3.GetName(NameStyle.Full, supply.num)), "_deliver").SetOnClick(delegate
Thing _t4 = item6;
Choice("daDeliver".lang(supply.GetTitle() ?? "", _t4.GetName(NameStyle.Full, supply.num)), "_deliver").SetOnClick(delegate
{
EClass.game.quests.Start(c.quest);
destThing = _t3;
destThing = _t4;
destQuest = supply;
}).SetOnTooltip(delegate(UITooltip a)
{
_t3.WriteNote(a.note);
_t4.WriteNote(a.note);
});
}
}{
EClass.pc.party.AddMemeber(c);
}
foreach (Chara item6 in EClass.pc.party.members.ToList())
foreach (Chara item7 in EClass.pc.party.members.ToList())
{
if (item6 != EClass.pc && item6 != c)
if (item7 != EClass.pc && item7 != c)
{
EClass.pc.party.RemoveMember(item6);
EClass.pc.party.RemoveMember(item7);
}
}
if (c.host != null)Method(delegate
{
TempTalkTopic("blooming1", null);
foreach (Chara item7 in EClass.pc.party.members.Where((Chara chara) => chara.CanBloom()))
foreach (Chara item8 in EClass.pc.party.members.Where((Chara chara) => chara.CanBloom()))
{
Chara c2 = item7;
Chara c2 = item8;
Choice("daBloom".lang(c2.Name), delegate
{
if (EClass._zone.influence < 10) },
onList = delegate
{
foreach (ResearchPlan item8 in plans)
foreach (ResearchPlan item9 in plans)
{
list.Add(item8);
list.Add(item9);
}
}
};},
onList = delegate
{
foreach (SourceElement.Row item9 in EClass.sources.elements.rows.Where(delegate(SourceElement.Row a)
foreach (SourceElement.Row item10 in EClass.sources.elements.rows.Where(delegate(SourceElement.Row a)
{
if (a.tag.Contains("unused"))
{ return a.category == "skill" && a.categorySub == c.trait.IDTrainer;
}).ToList())
{
list.Add(Element.Create(item9.id));
list.Add(Element.Create(item10.id));
}
}
};{
SE.Pay();
EClass.pc.ModCurrency(-costIdentify);
foreach (Thing item10 in EClass.pc.things.List((Thing t) => !t.IsIdentified, onlyAccessible: true))
foreach (Thing item11 in EClass.pc.things.List((Thing t) => !t.IsIdentified, onlyAccessible: true))
{
item10.Thing.Identify(show: false);
if (!item10.IsInstalled)
item11.Thing.Identify(show: false);
if (!item11.IsInstalled)
{
numSuperior++;
}End();
Step("_end");
End();
return;
IL_09d0:
Choice2("daBaby", "_baby");
goto IL_09e1;
IL_0980:
Choice2("daMama", "_mama");
goto IL_0991;
IL_0991:
ConTransmuteHuman condition2 = c.GetCondition<ConTransmuteHuman>();
bool num3;
if (condition2 == null)
{
if (c.HasElement(1232))
{
goto IL_09d0;
}
num3 = c.HasElement(1291);
}
else
{
num3 = condition2.IsBaby;
}
if (num3)
{
goto IL_09d0;
}
goto IL_09e1;
IL_09e1:
if (c.trait.CanRevive)
{
Choice2("daRevive", "_revive").DisableSound();
}
if (!c.trait.IDTrainer.IsEmpty() && !EClass._zone.IsUserZone && (Guild.GetCurrentGuild() == null || Guild.GetCurrentGuild().relation.IsMember()))
{
Choice2("daTrain", "_train").DisableSound();
}
if (c.trait.CanWhore)
{
Choice2(flag2 ? "daBirdBuy" : "daTailBuy", "_whore");
}
if (c.trait.CanHeal)
{
Choice2("daHeal", "_heal");
}
if (c.trait.CanServeFood)
{
Choice2("daFood", "_food");
}
if (c.trait is TraitInformer)
{
Choice2("daSellFame", "_sellFame");
}
if (EClass._zone.AllowInvest)
{
if (c.trait.CanInvestTown && Guild.GetCurrentGuild() == null)
{
Choice2("daInvest", "_investZone");
}
if (c.trait.CanInvest)
{
Choice2("daInvest", "_investShop");
}
}
if (c.trait.CanIdentify)
{
Choice2("daIdentify", "_identify").DisableSound();
Choice2("daIdentifyAll", "_identifyAll");
Choice2("daIdentifySP", "_identifySP").DisableSound();
}
if (c.trait.CanPicklock)
{
if (c.Evalue(280) < 20)
{
c.elements.SetBase(280, 20);
}
foreach (Thing item11 in EClass.pc.things.List((Thing a) => a.c_lockLv > 0, onlyAccessible: true))
{
Thing _t4 = item11;
Choice2("daPicklock".lang(_t4.Name), "_picklock").SetOnClick(delegate
{
destThing = _t4;
});
}
}
if (c.trait is TraitBanker)
{
Choice2("daDeposit", "_deposit");
}
if (c.IsMaid || (c.trait.CanInvestTown && (EClass._zone.source.faction == "mysilia" || EClass._zone.IsPCFaction)))
{
Choice2("daExtraTax", "_extraTax");
}
if ((c.trait is TraitMiko_Mifu || c.trait is TraitMiko_Nefu || c.trait is TraitEureka) && EClass.world.date.IsExpired(c.c_dateStockExpire))
{
Choice2("daBlessing", "_blessing");
}
goto IL_0daa;
void BackChill()
{
Method(RumorChill, null, StepDefault);FEAT โ
public const int featMana = 1611;
public const int featExecutioner = 1420;
public const int featManaMeat = 1421;
public const int featEntangle = 1432;
public const int featDeviant = 1431;public const int featHealer = 1422;
public const int featManaMeat = 1421;
public const int featHardy = 1630;
public const int featMilitant = 1419;
public const int featExecutioner = 1420;
public const int featSwordsage = 1418;
public const int featMilitant = 1419;
public const int featLife = 1610;public const int featSpotting = 1633;
public const int featWitch = 1417;
public const int featSwordsage = 1418;
public const int featComat = 1750;public const int featEvade = 1632;
public const int featInquisitor = 1416;
public const int featGod_harvest1 = 1325;
public const int featWitch = 1417;
public const int featWhiteVixen = 1414;
public const int featGod_luck1 = 1330;
public const int featHeavyEater = 1234;
public const int featFoxMaid = 1415;
public const int featLightEater = 1235;public const int featLibra = 1247;
public const int featCosmicHorror = 1233;
public const int featMiscreation = 1248;
public const int featVampire = 1250;
public const int featHeavyEater = 1234;
public const int featBloodBond = 1249;
public const int featAshborn = 1251;public const int featSplitWater = 1254;
public const int featFoxMaid = 1415;
public const int featInquisitor = 1416;
public const int featBadKarma = 1271;public const int featGoddess = 1290;
public const int featBloodBond = 1249;
public const int featSadCreature = 1291;
public const int featVampire = 1250;
public const int featCosmicHorror = 1233;
public const int featBaby = 1232;
public const int featAdam = 1230;
public const int featNirvana = 1231;
public const int featSlowFood = 1200;public const int featElea = 1213;
public const int featNirvana = 1231;
public const int featManaPrecision = 1214;
public const int featDwarf = 1215;
public const int featSuccubus = 1216;
public const int featGolem = 1217;
public const int featAdam = 1230;
public const int featMetal = 1218;
public const int featLittleOne = 1229;
public const int featElderCrab = 1219;
public const int featDemigod = 1228;
public const int featFate = 1220;
public const int featServant = 1227;
public const int featSpike = 1221;
public const int featUnderground = 1226;
public const int featSplit = 1222;
public const int featLoyal = 1225;
public const int featAcidBody = 1223;
public const int featGod = 1292;
public const int featShiva = 1224;
public const int featLoyal = 1225;
public const int featSplit = 1222;
public const int featUnderground = 1226;
public const int featSpike = 1221;
public const int featServant = 1227;
public const int featFate = 1220;
public const int featDemigod = 1228;
public const int featElderCrab = 1219;
public const int featLittleOne = 1229;
public const int featMetal = 1218;
public const int featDwarf = 1215;
public const int featGolem = 1217;
public const int featGod = 1292;
public const int featAcidBody = 1223;
public const int featSevenPillars = 1293;
public const int featGoodKarma = 1270;
public const int featDiva = 1294;
public const int featGod_element1 = 1300;
public const int featLuckyCat = 1412;
public const int featEarthStrength = 1411;
public const int featDiva = 1294;
public const int featReboot = 1410;
public const int featBoost = 1409;public const int featFarmer = 1403;
public const int featWizard = 1402;
public const int featThief = 1401;
public const int featFairysan = 1413;
public const int featLuckyCat = 1412;
public const int featWizard = 1402;
public const int featWarrior = 1400;public const int featGod_harmony1 = 1335;
public const int featGod_luck1 = 1330;
public const int featGod_harvest1 = 1325;
public const int featGod_healing1 = 1320; public const int featGod_earth1 = 1305;
public const int featGod_element1 = 1300;
public const int featSevenPillars = 1293;
public const int featThief = 1401;
public const int featFairysan = 1413;
public const int featWhiteVixen = 1414;
public static readonly int[] IDS = new int[158]
public static readonly int[] IDS = new int[159]
{
1620, 1621, 1622, 1623, 1628, 1625, 1626, 1627, 1612, 1629,
1624, 1611, 1420, 1431, 1430, 1429, 1428, 1427, 1426, 1425,
1424, 1423, 1422, 1421, 1630, 1419, 1418, 1610, 1631, 1647,
1633, 1417, 1750, 1664, 1663, 1662, 1661, 1660, 1659, 1658,
1624, 1611, 1421, 1432, 1431, 1430, 1429, 1428, 1427, 1426,
1425, 1424, 1423, 1422, 1630, 1420, 1419, 1610, 1631, 1647,
1633, 1418, 1750, 1664, 1663, 1662, 1661, 1660, 1659, 1658,
1657, 1656, 1655, 1654, 1653, 1652, 1651, 1650, 1649, 1648,
1646, 1645, 1644, 1643, 1642, 1641, 1640, 1636, 1635, 1634,
1632, 1416, 1325, 1414, 1234, 1235, 1236, 1237, 1238, 1239,
1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1233, 1248,
1250, 1251, 1252, 1253, 1254, 1415, 1271, 1272, 1273, 1274,
1275, 1276, 1277, 1290, 1249, 1291, 1232, 1230, 1200, 1201,
1632, 1417, 1330, 1415, 1235, 1236, 1237, 1238, 1239, 1240,
1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1234, 1249,
1251, 1252, 1253, 1254, 1416, 1271, 1272, 1273, 1274, 1275,
1276, 1277, 1290, 1291, 1250, 1233, 1232, 1231, 1200, 1201,
1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211,
1212, 1213, 1231, 1214, 1216, 1217, 1218, 1219, 1220, 1221,
1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1215, 1292,
1270, 1294, 1411, 1410, 1409, 1408, 1407, 1406, 1405, 1404,
1403, 1402, 1401, 1412, 1400, 1355, 1350, 1345, 1340, 1335,
1330, 1320, 1315, 1310, 1305, 1300, 1293, 1413
1212, 1213, 1214, 1215, 1216, 1230, 1229, 1228, 1227, 1226,
1225, 1292, 1224, 1222, 1221, 1220, 1219, 1218, 1217, 1223,
1293, 1270, 1300, 1412, 1411, 1294, 1410, 1409, 1408, 1407,
1406, 1405, 1404, 1403, 1413, 1402, 1400, 1355, 1350, 1345,
1340, 1335, 1325, 1320, 1315, 1310, 1305, 1401, 1414
};
}
public class Feat : ElementGame โ
{
CoreDebug._RemoveBodyPart(CoreDebug.BodyCode.relic);
}
if (version.IsBelow(0, 23, 345))
{
Zone zone = spatials.Find("oldkeep");
if (zone != null && zone.visitCount > 0)
{
zone.SetInt(4, 1);
}
}
if (version.IsBelow(0, 23, 336))
{
AddAdventurer("adv_schwert");}
if (version.IsBelow(0, 23, 195))
{
Zone zone = spatials.Find("startVillage2");
if (zone != null && zone.visitCount > 0)
Zone zone2 = spatials.Find("startVillage2");
if (zone2 != null && zone2.visitCount > 0)
{
world.SendPackage(ThingGen.CreateParcel(null, ThingGen.CreateCassette(113), ThingGen.CreateCassette(12)));
}GoalCombat โ
public virtual bool TryThrow(int dist)
public virtual bool TryFuse()
{
string text = owner.id;
if ((text == "imotoroid" || text == "marshmallow_monster") && owner.TryFuse(0.05f))
if (owner.HasElement(1432) && owner.TryFuse(0.05f))
{
return true;
}GrowSystem โ
protected virtual bool IsHarvestStage(int idx)
return idx == HarvestStage;
}
public virtual bool CanRotate()
{
return false;
}
public virtual bool BlockSight(Cell cell)
{
return false;GrowSystemRose โ
public override int GetStageTile()
}
return base.GetStageTile();
}
public override bool CanRotate()
{
if (base.stage.idx == HarvestStage && source.alias == "roseflower")
{
return true;
}
return base.CanRotate();
}
}MUTATION โ
public class MUTATION
{
public const int mutationEyeN = 1513;
public const int mutationSkin = 1510;
public const int mutationSkinN = 1511;
public const int mutationEye = 1512;
public const int mutationDex = 1514;
public const int mutationRegenN = 1517;
public const int mutationEyeN = 1513;
public const int mutationRegen = 1516;
public const int mutationDexN = 1515;
public const int mutationDex = 1514;
public const int etherEye = 1553;
public const int etherWing = 1554;public const int etherFeet = 1552;
public const int mutationCha = 1522;
public const int mutationHair = 1532;
public const int mutationRegenN = 1517;
public const int mutationSpeed = 1518;public const int mutationStr = 1520;
public const int mutationStrN = 1521;
public const int mutationHairN = 1533;
public const int mutationChaN = 1523;
public const int mutationCha = 1522;
public const int mutationBrainN = 1525;
public const int mutationChaN = 1523;
public const int mutationBrain = 1524;
public const int mutationStrN = 1521;
public const int mutationCold = 1526;
public const int mutationColdN = 1527;
public const int mutationLightning = 1528; public const int mutationBodyN = 1531;
public const int mutationHair = 1532;
public const int mutationCold = 1526;
public const int mutationBrainN = 1525;
public static readonly int[] IDS = new int[40]
{
1513, 1510, 1511, 1512, 1514, 1517, 1516, 1515, 1553, 1554,
1555, 1556, 1557, 1551, 1558, 1560, 1561, 1562, 1563, 1564,
1565, 1559, 1550, 1552, 1522, 1518, 1519, 1520, 1521, 1533,
1523, 1525, 1524, 1527, 1528, 1529, 1530, 1531, 1532, 1526
1510, 1511, 1512, 1513, 1516, 1515, 1514, 1553, 1554, 1555,
1556, 1557, 1551, 1558, 1560, 1561, 1562, 1563, 1564, 1565,
1559, 1550, 1552, 1532, 1517, 1518, 1519, 1520, 1533, 1522,
1523, 1524, 1521, 1526, 1527, 1528, 1529, 1530, 1531, 1525
};
}
public class Mutation : FeatNotificationExceedParty โ
public class NotificationExceedParty : BaseNotification
public class NotificationExceedParty : BaseNotification
{
public override bool Visible => EClass.pc.party.members.Count - 1 > EClass.player.MaxAlly;
public override bool Visible => EClass.pc.party.Count() - 1 > EClass.player.MaxAlly;
public override Action<UITooltip> onShowTooltip => delegate(UITooltip a)
{
a.note.Clear();
a.note.AddHeader("exceedParty");
a.note.AddText("exceedParty_tip".lang((EClass.pc.party.members.Count - 1).ToString() ?? "", EClass.player.MaxAlly.ToString() ?? ""));
a.note.AddText("exceedParty_tip".lang((EClass.pc.party.Count() - 1).ToString() ?? "", EClass.player.MaxAlly.ToString() ?? ""));
a.note.Build();
};POLICY โ
public class POLICY
{
public const int license_stolen = 2824;
public const int celeb = 2822;
public const int legendary_exhibition = 2823;
public const int license_slaver = 2828;
public const int milk_fan = 2825;
public const int breed_season = 2827;
public const int celeb = 2822;
public const int egg_fan = 2826;
public const int breed_season = 2827;
public const int milk_fan = 2825;
public const int license_slaver = 2828;
public const int license_stolen = 2824;
public const int egg_fan = 2826;
public const int legendary_exhibition = 2823;
public const int legendary_heirloom = 2821;public static readonly int[] IDS = new int[51]
{
2824, 2823, 2825, 2822, 2827, 2828, 2826, 2821, 2511, 2819,
2822, 2828, 2827, 2826, 2825, 2824, 2823, 2821, 2511, 2819,
2701, 2700, 2516, 2515, 2514, 2513, 2512, 2820, 2702, 2510,
2508, 2507, 2506, 2504, 2503, 2502, 2501, 2500, 2509, 2703,
2505, 2705, 2704, 2818, 2817, 2815, 2814, 2813, 2812, 2811,Portrait โ
public class Portrait : UIButton
public class Portrait : UIButton
{
public static readonly Vector2Int standardSize = new Vector2Int(240, 320);
public static readonly Vector2Int standardFullSize = new Vector2Int(529, 838);
public static readonly SpriteLoadOption loadOption = new SpriteLoadOption
{
pivot = new Vector2(0.5f, 0f)
};
public static readonly SpriteLoadOption loadOptionFull = new SpriteLoadOption
{
pivot = new Vector2(0.5f, 0f)
};
public static ModItemList<Sprite> modPortraitBGFs = new ModItemList<Sprite>(3);
public static ModItemList<Sprite> modPortraitBGs = new ModItemList<Sprite>(3);
public static ModItemList<Sprite> modPortraits = new ModItemList<Sprite>(3);
public static ModItemList<Sprite> modPortraits = new ModItemList<Sprite>(3, loadOption);
public static ModItemList<Sprite> modOverlays = new ModItemList<Sprite>(3);
public static ModItemList<Sprite> modOverlays = new ModItemList<Sprite>(3, loadOption);
public static ModItemList<Sprite> modFull = new ModItemList<Sprite>(3);
public static ModItemList<Sprite> modFull = new ModItemList<Sprite>(3, loadOptionFull);
public static Dictionary<string, List<ModItem<Sprite>>> dictList = new Dictionary<string, List<ModItem<Sprite>>>();public class Portrait : UIButton
private bool defaultPreserveAspect;
private FilterMode filter;
public static bool UsePortraitAA
{
get
{
if ((bool)EClass.core && EClass.core.config != null)
{
return EClass.core.config.test.aaPortrait;
}
return false;
}
}
public static bool UsePortraitFilter
{
get
{
if ((bool)EClass.core && EClass.core.config != null)
{
return EClass.core.config.test.aaPortraitFilter;
}
return false;
}
}
public static List<ModItem<Sprite>> ListPlayerPortraits(int gender, bool nullPortrait = false)
{public Color GetRandomHairColor(Chara c)
{
RestoreDefaults();
}
filter = ((isPortrait && Core.Instance.config.test.aaPortrait) ? FilterMode.Bilinear : FilterMode.Point);
bool aa = UsePortraitAA;
bool filter = UsePortraitFilter;
portrait.rectTransform.anchorMin = overlay.rectTransform.anchorMin;
portrait.rectTransform.anchorMax = overlay.rectTransform.anchorMax;
portrait.rectTransform.sizeDelta = overlay.rectTransform.sizeDelta;{
if ((bool)s && isPortrait)
{
s.texture.wrapMode = TextureWrapMode.Clamp;
if (s.texture.filterMode != filter)
Texture2D texture = s.texture;
texture.wrapMode = TextureWrapMode.Clamp;
FilterMode filterMode = ((filter && texture.mipmapCount > 1) ? FilterMode.Trilinear : (aa ? FilterMode.Bilinear : FilterMode.Point));
if (texture.filterMode != filterMode)
{
s.texture.filterMode = filter;
texture.filterMode = filterMode;
}
}
}Recipe โ
text = "(" + source.row.GetField<string>("id") + ")";
}
text = text.ToTitleCase();
if (source.row is CardRow && (source.row as CardRow).quality == 4)
if (source.row is CardRow && (source.row as CardRow).quality == 4 && !text.Contains("โ
"))
{
text = "โ
" + text;
}Thing โ
public override string GetName(NameStyle style, int _num = -1)
{
text7 = text7 + ((dMG != 0 || source.offense[0] != 0) ? ", " : "") + hIT;
}
text2 = text2 + " (" + text7.IsEmpty(" - ") + ") ";
text2 = text2 + " (" + text7.IsEmpty(" - ") + ")";
}
int dV = DV;
int pV = PV;public override string GetName(NameStyle style, int _num = -1)
{
text2 += " [";
text2 = text2 + dV + ", " + pV;
text2 += "] ";
text2 += "]";
}
if (trait.HasCharges && trait.ShowCharges)
{TraitChara โ
public virtual bool CanAutoRevive
{
get
{
if (owner.isImported && !owner.isDestroyed)
if (owner.isImported && !owner.isDestroyed && !owner.IsGlobal)
{
return !owner.IsGlobal;
return !owner.isSummon;
}
return false;
}TraitGeneratorHamster โ
public override bool OnUse(Chara c)
Toggle(!owner.isOn);
return true;
}
public override void OnDie()
{
if (!EClass._zone.IsRegion)
{
Chara c = EClass._zone.SpawnMob(owner.pos.GetNearestPoint(allowBlock: false, allowChara: false), new SpawnSetting
{
id = "hamster"
});
Msg.Say("package_chara", c, owner);
}
}
}TraitStrangeStatue โ
Chara chara = EClass._zone.SpawnMob(owner.pos.GetNearestPoint(allowBlock: false, allowChara: false), new SpawnSetting
{
idSpawnList = "c_statue",
filterLv = EClass._zone.DangerLv + 30
filterLv = EClass._zone.DangerLv + 20
});
chara.SetHostility((EClass.rnd(3) != 0 || chara.trait is TraitMerchant) ? Hostility.Enemy : Hostility.Neutral);
chara.SetSummon(9999);
Msg.Say("statue_chara", chara, owner);
}
}ZINT โ
public const int dateClaim = 2;
public const int maxSimHours = 3;
public const int resetMedal = 4;
}Zone โ
Debug.Log("Importing New Chara:" + item.id + "/" + item.Name + "/" + item.orgPos);
map.serializedCharas.Add(item);
}
bool resetMedal = GetInt(4) != 0;
map.things.ForeachReverse(delegate(Thing t)
{
if (t.trait is TraitNewZone || t.trait is TraitPowerStatue) }
return;
}
if (t.id == "medal" || t.id == "856")
if (!resetMedal && (t.id == "medal" || t.id == "856"))
{
foreach (Thing thing3 in orgMap.things)
{ RemoveCard(t);
}
});
SetInt(4);
foreach (KeyValuePair<int, int> item2 in EClass._map.backerObjs.ToList())
{
EClass._map.GetCell(item2.Key);{
foreach (Chara chara in EClass._map.charas)
{
if (!chara.source.hostility.IsEmpty() && chara.source.hostility.ToEnum<Hostility>() >= Hostility.Friend && !chara.IsPCFactionOrMinion)
if (!chara.source.hostility.IsEmpty() && chara.source.hostility.ToEnum<Hostility>() >= Hostility.Friend && !chara.IsPCFactionOrMinion && !chara.isSummon && (EClass._zone is Zone_Civilized || EClass._zone.IsPCFactionOrTent))
{
chara.c_originalHostility = (Hostility)0;
}
chara.hostility = chara.OriginalHostility;
if (chara.enemy != null && (chara.enemy.IsPCFaction || chara.IsPCFaction))
if (chara.enemy != null && (chara.enemy.IsPCFaction || chara.IsPCFaction) && !chara.IsHostile(chara.enemy))
{
chara.SetEnemy();
}