EA 23.232 Nightly Patch 2
November 9, 2025
32 files modified. 1 new file created.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
Party (1)
public int EValue(int ele)
public int EvalueBest(int ele) AI_Fish
public static Thing Makefish(Chara c)
num4 = 3;
}
SetFeverSeed();
thing = ThingGen.Create("fish", -1, lv);
string text2 = "fish";
if (EClass._zone.id == "startVillage2")
{
text2 = "65";
}
thing = ThingGen.Create(text2, -1, lv);
SetFeverSeed();
int num5 = Mathf.Max(1, num / (thing.source.LV * 2 + 10));
int num6 = 5;public static Thing Makefish(Chara c)
c.Say("bigCatch", c);
}
num2 = (num7 ? num5 : EClass.rnd(num5)) / (num4 + 1) + 1;
if (EClass.debug.enable || (thing.id == "65" && EClass.rnd(c.IsPC ? 8192 : 819200) == 0))
if (thing.id == "65" && EClass.rnd(EClass.debug.enable ? 2 : (c.IsPC ? 8192 : 819200)) == 0)
{
thing = ThingGen.Create("65_gold", -1, lv);
num2 = 1;AI_Idle
public override IEnumerable<Status> Run()
list2.Add(member);
}
}
if (list2.Count > 2)
if (list2.Count > 2 + EClass.pc.party.EvalueTotal(1272, (Chara c) => c.IsPC || c.faith == EClass.game.religions.Harmony))
{
list2.Remove(owner);
owner.SetEnemy(list2.RandomItem());ActEffect
public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
switch (id)
{
case EffectId.GravityGun:
if (!c.isChara)
if (c.isChara)
{
break;
}
c.Chara.AddCondition<ConGravity>(power);
if (EClass.rnd(2) == 0)
{
c.Chara.AddCondition<ConEntangle>(power / 2);
}
if (EClass.rnd(4) == 0)
{
c.Chara.AddCondition<ConBlind>(power);
}
if (EClass.rnd(5) == 0)
{
c.Chara.AddCondition<ConDim>(power / 3);
}
if (EClass.rnd(3) == 0)
{
c.Chara.AddCondition<ConSupress>(power / 2);
}
if (actref.refThing != null && actref.refThing.id == "gun_gravity2")
{
if (EClass.rnd(4) == 0)
{
c.Chara.AddCondition<ConSilence>(power / 3);
}
if (EClass.rnd(4) == 0)
{
c.Chara.AddCondition<ConWeakResEle>(power);
}
if (EClass.rnd(4) == 0)
AddCon<ConGravity>(1, power);
AddCon<ConBlind>(4, power);
AddCon<ConDim>(5, power / 2);
AddCon<ConSupress>(3, power / 2);
if (actref.refThing != null && actref.refThing.id == "gun_gravity2")
{
c.Chara.AddCondition<ConNightmare>(power);
AddCon<ConEntangle>(4, power / 3);
AddCon<ConSilence>(4, power / 3);
AddCon<ConWeakResEle>(4, power);
AddCon<ConNightmare>(4, power);
}
}
break;public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
chara.DoHostileAction(c);
}
num2++;
void AddCon<T>(int rate, int power) where T : Condition
{
if (EClass.rnd(1 + actref.refVal) == 0 && !c.Chara.HasCondition<T>() && EClass.rnd(rate) == 0)
{
c.Chara.AddCondition<T>(power);
}
}
}
if ((id == EffectId.Explosive || id == EffectId.Suicide || id == EffectId.Rocket) && (!EClass._zone.IsPCFaction || !EClass.Branch.HasItemProtection))
{public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
bool flag5 = EClass._zone.HasLaw && !EClass._zone.IsPCFaction && (CC.IsPC || (id == EffectId.Explosive && actref.refThing == null)) && !(EClass._zone is Zone_Vernis);
if (p.HasObj && p.cell.matObj.hardness <= num7)
{
EClass._map.MineObj(p);
EClass._map.MineObj(p, null, CC.Chara);
if (flag5)
{
EClass.player.ModKarma(-1);public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
}
if (!p.HasObj && p.HasBlock && p.matBlock.hardness <= num7)
{
EClass._map.MineBlock(p);
EClass._map.MineBlock(p, recoverBlock: false, CC.Chara);
if (flag5)
{
EClass.player.ModKarma(-1);ActRanged
void Shoot(Card _tc, Point _tp, bool subAttack)
{
origin = Act.CC.Chara,
refThing = weapon,
aliasEle = "eleImpact"
aliasEle = "eleImpact",
refVal = j
});
break;
}ActThrow
public override string GetText(string str = "")
if (target != null)
{
TraitMonsterBall traitMonsterBall = target.trait as TraitMonsterBall;
if (pcTarget != null && traitMonsterBall != null && !traitMonsterBall.IsDuponneBall && !traitMonsterBall.IsLittleBall && pcTarget.LV > target.LV)
if (pcTarget != null && traitMonsterBall != null && !traitMonsterBall.IsDuponneBall && !traitMonsterBall.IsLittleBall && !traitMonsterBall.IsSilvercatBall && pcTarget.LV > target.LV)
{
text = " " + "mb_invalidLV".lang();
}public static EffectIRenderer Throw(Card c, Point p, Card target, Thing t, Throw
}
});
}
if (traitMonsterBall.IsDuponneBall && _c.id == "lurie_boss")
if ((traitMonsterBall.IsSilvercatBall || _c.id == "cat_silver") && EClass._zone.id == "startVillage2")
{
_c.orgPos = c.pos.Copy();
_c.homeZone = EClass._zone;
Chara chara = _c;
Hostility c_originalHostility = (_c.hostility = Hostility.Friend);
chara.c_originalHostility = c_originalHostility;
EClass._zone.ModInfluence(10);
_c.PlaySound("chime_angel");
}
else if (traitMonsterBall.IsDuponneBall && _c.id == "lurie_boss")
{
_c.orgPos = c.pos.Copy();
_c.homeZone = EClass._zone;
Chara chara2 = _c;
Hostility c_originalHostility = (_c.hostility = Hostility.Friend);
chara2.c_originalHostility = c_originalHostility;
EClass._zone.ModInfluence(20);
_c.PlaySound("chime_angel");
}
else if (traitMonsterBall.IsLittleBall && _c.id == "littleOne")
{
_c.orgPos = c.pos.Copy();
Chara chara2 = _c;
Chara chara3 = _c;
Hostility c_originalHostility = (_c.hostility = Hostility.Neutral);
chara2.c_originalHostility = c_originalHostility;
chara3.c_originalHostility = c_originalHostility;
EClass._zone.ModInfluence(5);
_c.PlaySound("chime_angel");
EClass.core.actionsNextFrame.Add(delegatepublic static EffectIRenderer Throw(Card c, Point p, Card target, Thing t, Throw
break;
}
Act.TC.Say("throw_hit", t, Act.TC);
Chara chara3 = Act.TC.Chara;
if (traitMonsterBall.IsDuponneBall)
Chara chara4 = Act.TC.Chara;
if (traitMonsterBall.IsSilvercatBall)
{
if (chara4.id != "cat_silver" || chara4.IsPCFactionOrMinion || EClass._zone.id == "startVillage2" || EClass._zone.IsUserZone)
{
Msg.Say("monsterball_invalid");
break;
}
if (chara4.LV > 10)
{
Msg.Say("monsterball_lv");
break;
}
}
else if (traitMonsterBall.IsDuponneBall)
{
if (chara3.id != "lurie_boss" || chara3.IsPCFactionOrMinion || EClass._zone is Zone_Exile || EClass._zone.IsUserZone)
if (chara4.id != "lurie_boss" || chara4.IsPCFactionOrMinion || EClass._zone is Zone_Exile || EClass._zone.IsUserZone)
{
Msg.Say("monsterball_invalid");
break;public static EffectIRenderer Throw(Card c, Point p, Card target, Thing t, Throw
}
else if (traitMonsterBall.IsLittleBall)
{
if (chara3.id != "littleOne" || chara3.IsPCFactionOrMinion || EClass._zone is Zone_LittleGarden || EClass._zone.IsUserZone || chara3.GetBool(132))
if (chara4.id != "littleOne" || chara4.IsPCFactionOrMinion || EClass._zone is Zone_LittleGarden || EClass._zone.IsUserZone || chara4.GetBool(132))
{
Msg.Say("monsterball_invalid");
break;
}
chara3.SetBool(132, enable: true);
chara4.SetBool(132, enable: true);
}
else
{
if (!chara3.trait.CanBeTamed || EClass._zone.IsUserZone)
if (!chara4.trait.CanBeTamed || EClass._zone.IsUserZone)
{
Msg.Say("monsterball_invalid");
break;
}
if (chara3.LV > traitMonsterBall.owner.LV)
if (chara4.LV > traitMonsterBall.owner.LV)
{
Msg.Say("monsterball_lv");
break;
}
if (!EClass.debug.enable && chara3.hp > chara3.MaxHP / 10)
if (!EClass.debug.enable && chara4.hp > chara4.MaxHP / 10)
{
Msg.Say("monsterball_hp");
break;
}
}
Msg.Say("monsterball_capture", c, chara3);
chara3.PlaySound("identify");
chara3.PlayEffect("identify");
Msg.Say("monsterball_capture", c, chara4);
chara4.PlaySound("identify");
chara4.PlayEffect("identify");
t.ChangeMaterial("copper");
if (chara3.IsLocalChara)
if (chara4.IsLocalChara)
{
Debug.Log("Creating Replacement NPC for:" + chara3);
EClass._map.deadCharas.Add(chara3.CreateReplacement());
Debug.Log("Creating Replacement NPC for:" + chara4);
EClass._map.deadCharas.Add(chara4.CreateReplacement());
}
traitMonsterBall.chara = chara3;
chara3.ReleaseMinion();
EClass._zone.RemoveCard(chara3);
chara3.homeZone = null;
traitMonsterBall.chara = chara4;
chara4.ReleaseMinion();
EClass._zone.RemoveCard(chara4);
chara4.homeZone = null;
c.ModExp(108, 100);
if (traitMonsterBall.IsDuponneBall && EClass.game.quests.GetPhase<QuestNegotiationDarkness>() == 3)
{CINT
public const int isHiredByGold = 18;
public const int rosterPriority = 19;
public const int price = 21;
public const int dateStockExpire = 22;Chara
public FactionBranch homeBranch => homeZone?.branch;
public int MaxGeneSlot => race.geneCap - (HasElement(1237) ? 2 : 0) + Evalue(1242);
public int MaxGeneSlot => race.geneCap - (HasElement(1237) ? 2 : 0) + Evalue(1242) + Evalue(1273);
public int CurrentGeneSlot
{public void TryUpgrade(bool msg = true)
}
}
public bool CanBloom()
{
if (IsPC || base.isScaled || HasElement(1273))
{
return false;
}
if (!EClass.debug.enable)
{
if (base.c_daysWithPC > 360)
{
return affinity.CanSleepBeside();
}
return false;
}
return true;
}
public void AddCooldown(int idEle, int turns = 0)
{
if (_cooldowns == null)public void RefreshFaithElement()
faithElements.SetBase(row2.id, 1);
}
int[] array = row.elements;
int num = GetPietyValue() * (120 + Evalue(1407) * 15) / 100;
int num = GetPietyValue() * (120 + Evalue(1407) * 15 + Evalue(1228) * 20) / 100;
for (int i = 0; i < array.Length; i += 2)
{
int num2 = array[i + 1] * num / 50;CoreDebug
public void InitDebugCommands()
EClass.Branch.resources.knowledge.Mod(100);
}
});
Add(cat2, "Add Influence", delegate
Add(cat2, "Remove Influence", delegate
{
EClass._zone.influence += 100;
EClass._zone.influence = 0;
});
Add(cat2, "Reroll Hobbies", delegate
{DOMAIN
public const int domMiracle = 803;
public const int domHarvest = 808;
public const int domWind = 807;
public const int domHarvest = 808;
public const int domLuck = 810;
public const int domHealing = 811;
public static readonly int[] IDS = new int[16]
{
805, 806, 801, 800, 804, 802, 803, 808, 807, 810,
805, 806, 801, 800, 804, 802, 803, 807, 808, 810,
811, 812, 813, 814, 815, 809
};
}DramaCustomSequence
});
Choice("no2", StepDefault, cancel: true).SetOnClick(RumorChill);
});
Step("_bloom");
Method(delegate
{
TempTalkTopic("blooming1", null);
foreach (Chara item6 in EClass.pc.party.members.Where((Chara c2) => c2.CanBloom()))
{
Chara c4 = item6;
Choice("daBloom".lang(c4.Name), delegate
{
if (EClass._zone.influence < 10)
{
TempTalkTopic("blooming3", StepDefault);
}
else
{
EClass._zone.ModInfluence(-10);
LayerDrama.Instance.SetOnKill(delegate
{
c.Talk("goodBoy");
c4.Say("dingExp", c);
c4.Talk("tailed");
c4.SetFeat(1273, 1, msg: true);
c4.PlayEffect("aura_heaven");
c4.feat += 10;
EClass.pc.PlaySound("pray");
});
TempTalkTopic("blooming2", StepEnd);
}
});
}
Choice("no2", StepDefault, cancel: true).SetOnClick(RumorChill);
});
Step("_buy");
Method(delegate
{ {
b.button1.mainText.text = a.Name;
UIItem uIItem = Util.Instantiate<UIItem>("UI/Element/Item/Extra/costBarter", b.layout);
HomeResource.Cost c2 = new HomeResource.Cost(EClass.BranchOrHomeBranch.resources.money, a.source.money);
uIItem.text1.SetText(c2.cost.ToString() ?? "", (c2.resource.value >= c2.cost) ? FontColor.Good : FontColor.Bad);
uIItem.image1.sprite = c2.resource.Sprite;
HomeResource.Cost c3 = new HomeResource.Cost(EClass.BranchOrHomeBranch.resources.money, a.source.money);
uIItem.text1.SetText(c3.cost.ToString() ?? "", (c3.resource.value >= c3.cost) ? FontColor.Good : FontColor.Bad);
uIItem.image1.sprite = c3.resource.Sprite;
b.button1.SetTooltip(delegate(UITooltip t)
{
a.WriteNote(t.note);
});
b.button1.onClick.AddListener(delegate
{
if (c2.resource.value < c2.cost)
if (c3.resource.value < c3.cost)
{
SE.Beep();
}
else
{
c2.resource.Mod(-c2.cost);
c3.resource.Mod(-c3.cost);
plans.Remove(a);
EClass.BranchOrHomeBranch.researches.AddPlan(a);
SE.Pay(); },
onList = delegate
{
foreach (ResearchPlan item6 in plans)
foreach (ResearchPlan item7 in plans)
{
list.Add(item6);
list.Add(item7);
}
}
}; },
onList = delegate
{
foreach (SourceElement.Row item7 in EClass.sources.elements.rows.Where(delegate(SourceElement.Row a)
foreach (SourceElement.Row item8 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(item7.id));
list.Add(Element.Create(item8.id));
}
}
}; {
SE.Pay();
EClass.pc.ModCurrency(-costIdentify);
foreach (Thing item8 in EClass.pc.things.List((Thing t) => !t.IsIdentified, onlyAccessible: true))
foreach (Thing item9 in EClass.pc.things.List((Thing t) => !t.IsIdentified, onlyAccessible: true))
{
item8.Thing.Identify(show: false);
if (!item8.IsInstalled)
item9.Thing.Identify(show: false);
if (!item9.IsInstalled)
{
numSuperior++;
}DramaManager
public bool CheckIF(string IF)
string[] array = IF.Split(',');
switch (array[0])
{
case "garden_bloom":
foreach (Chara member in EMono.pc.party.members)
{
if (member.CanBloom())
{
return true;
}
}
return false;
case "duponne_mino":
return EMono.pc.things.Find("minohorn") != null;
case "duponne_rescued":public bool CheckIF(string IF)
return !EMono.game.IsSurvival;
case "fromBook":
return LayerDrama.fromBook;
case "nerun_nadenade":
if (!EMono.game.startVersion.IsBelow(0, 23, 232))
{
return EMono.player.stats.death2 == 0;
}
return false;
case "nerun_nadenade2":
GameLang.refDrama1 = EMono.player.stats.death2.ToString() ?? "";
return EMono.player.stats.death2 >= 100;
case "!fromBook":
return !LayerDrama.fromBook;
case "WindRest":public bool CheckIF(string IF)
case "fiamaPet":
if (EMono.pc.homeBranch != null)
{
foreach (Chara member in EMono.pc.homeBranch.members)
foreach (Chara member2 in EMono.pc.homeBranch.members)
{
if (member.isDead && member.CanRevive() && member.GetInt(100) != 0)
if (member2.isDead && member2.CanRevive() && member2.GetInt(100) != 0)
{
return true;
}DramaOutcome
cc.RemoveEditorTag(EditorTag.Invulnerable);
}
public void give_catball_recipe()
{
EMono.player.DropReward(ThingGen.CreateRecipe("silvercatball"));
}
public void event_swordkeeper()
{
EMono._zone.AddChara("swordkeeper", 45, 52);public void upgrade_miscreation()
for (int i = 0; i < num; i++)
{
Rand.SetSeed(chara.uid + i);
DNA.GenerateRandomGene(chara.LV + 30, chara.uid + i).c_DNA.Apply(chara, reverse: false);
Rand.SetSeed();
Thing thing = DNA.GenerateRandomGene(chara.LV + 30, chara.uid + i);
if (thing.c_DNA.GetInvalidFeat(chara) == null && thing.c_DNA.GetInvalidAction(chara) == null)
{
thing.c_DNA.Apply(chara, reverse: false);
}
}
Rand.SetSeed();
}
public static bool If(DramaChoice item, Chara c)ELEMENT
public const int _void = 0;
public const int old_antidote = 25;
public const int piety = 85;
public const int poison = 20;
public const int race = 29;
public const int cure = 26;
public const int piety = 85;
public const int old_heal = 24;
public const int fire = 21;
public const int poison = 20;
public const int taste = 18;
public const int decay = 17;
public const int heat = 16;
public const int taste = 18;
public const int cure = 26;
public const int growth = 14;
public const int water = 15;
public const int hardness = 13;
public const int d = 3;
public const int water = 15;
public const int quality = 2;
public const int lv = 1;
public const int quality = 2;
public const int growth = 14;
public const int old_antidote = 25;
public static readonly int[] IDS = new int[36]
{
752, 753, 754, 755, 756, 762, 760, 761, 763, 765,
751, 759, 750, 0, 25, 85, 29, 26, 24, 23,
22, 21, 20, 17, 16, 18, 14, 13, 12, 11,
10, 5, 3, 15, 1, 2
751, 759, 750, 0, 20, 29, 85, 24, 23, 22,
21, 18, 17, 16, 26, 15, 13, 12, 11, 10,
5, 3, 2, 1, 14, 25
};
}
public class Element : EClassENC
{
public const int innocence = 418;
public const int slowCorruption = 412;
public const int encTail = 419;
public const int encHit = 414;
public const int negateParalysis = 422;
public const int seeInvisible = 416;
public const int invisibility = 415;
public const int encTail = 419;
public const int negatePoison = 420;
public const int encHit = 414;
public const int loving = 417;
public const int negatePoison = 420;
public const int encRagnarok = 667;
public const int absorbHP = 660;
public const int meleeDistance = 666;
public const int planter = 665;
public const int boostMachine = 664;
public const int absorbMP = 661;
public const int encSpell = 411;
public const int slowCorruption = 412;
public const int permaCurse = 656;
public const int encRagnarok = 667;
public const int meleeDistance = 666;
public const int throwReturn = 410;
public const int encSpell = 411;
public const int redirect_blaser = 383;
public const int resWeather = 408;
public const int corruption = 409;
public const int negateBlind = 421;
public const int convertCold = 851;
public const int convertFire = 850;
public const int counter = 380;
public const int basher = 381;
public const int travelSpeed = 407;
public const int corruption = 409;
public const int resWeather = 408;
public const int throwReturn = 410;
public const int noDamage = 654;
public const int negateParalysis = 422;
public const int convertFire = 850;
public const int eco = 652;
public const int mod_ammo_recover = 604;
public const int creativeChef = 487;
public const int mod_ammo_knockback = 603;
public const int mod_rapid = 602;
public const int creativeChef = 487;
public const int deathagony = 488;
public const int music_drunk = 489;
public const int mod_ammo = 600;
public const int mod_reload = 601;
public const int r_PV = 651;
public const int mod_precision = 605;
public const int mod_reload = 601;
public static readonly int[] IDS = new int[103]
{
418, 412, 414, 416, 415, 419, 417, 420, 660, 666,
665, 664, 663, 662, 661, 411, 656, 667, 410, 383,
408, 421, 865, 852, 851, 850, 380, 381, 382, 655,
400, 401, 402, 403, 404, 405, 406, 407, 409, 654,
422, 652, 446, 447, 450, 460, 461, 462, 463, 464,
418, 419, 422, 416, 415, 420, 414, 417, 667, 660,
665, 664, 663, 662, 661, 412, 656, 666, 411, 383,
409, 421, 865, 852, 851, 380, 381, 382, 655, 400,
401, 402, 403, 404, 405, 406, 407, 408, 410, 654,
850, 652, 446, 447, 450, 460, 461, 462, 463, 464,
465, 466, 467, 480, 481, 482, 483, 445, 484, 444,
442, 653, 424, 425, 426, 427, 428, 429, 430, 435,
436, 437, 438, 439, 440, 441, 443, 485, 468, 608,
623, 622, 621, 620, 609, 423, 641, 650, 486, 624,
607, 606, 640, 604, 603, 602, 487, 488, 489, 600,
651, 605, 601
607, 606, 640, 604, 487, 603, 602, 488, 489, 600,
601, 651, 605
};
}FACTION
public class FACTION
{
public const int bfFish = 3706;
public const int bfLandmark4 = 3783;
public const int bfLandmark2 = 3781;
public const int bfMonster = 3707;
public const int bfFish = 3706;
public const int bfLandmark3 = 3782;
public const int fFood = 2204;
public const int actBuildCollect = 4004;
public const int bfGum = 3803;
public const int actBuildAnywhere = 4003;
public const int actBuildTerrain = 4002;
public const int bfHunt = 3705;
public const int bfGum = 3803;
public static readonly int[] IDS = new int[53]
{
3706, 3783, 3781, 2207, 3780, 3710, 3709, 3708, 3707, 3782,
3783, 3781, 2207, 3780, 3710, 3709, 3708, 3707, 3706, 3782,
2204, 2116, 2115, 2117, 2118, 2119, 2120, 2200, 2201, 2206,
2202, 2203, 2205, 3784, 2003, 3800, 3804, 3802, 3801, 3600,
3601, 3602, 3603, 3604, 3605, 3700, 3701, 3702, 3703, 3704,
3606, 3500, 4006, 4005, 4004, 3803, 4003, 4002, 4001, 4000,
3900, 3805, 3705
3606, 3500, 4006, 4005, 4004, 4003, 4002, 4001, 4000, 3900,
3805, 3705, 3803
};
}
public class Faction : EClassFEAT
public class FEAT
{
public const int featDEX = 1621;
public const int featEND = 1622;
public const int featPER = 1623;
public const int featLER = 1624;
public const int featMAG = 1625;
public const int featSPD = 1629;
public const int featHardy = 1630;
public const int featWIL = 1626;
public const int featCHA = 1627;
public const int featLuck = 1628;
public const int featSPD = 1629;
public const int featDEX = 1621;
public const int featWIL = 1626;
public const int featSTR = 1620;
public const int featDefense = 1631;
public const int featMAG = 1625;
public const int featFoxMaid = 1415;
public const int featHardy = 1630;
public const int featStamina = 1612;
public const int featWhiteVixen = 1414;
public const int featMana = 1611;
public const int featInquisitor = 1416;
public const int featEvade = 1632;
public const int featFoxMaid = 1415;
public const int featWhiteVixen = 1414;
public const int featDefense = 1631;
public const int featSTR = 1620;
public const int featFairysan = 1413;
public const int featSpotting = 1633;
public const int featStamina = 1612;
public const int featDefender = 1649;
public const int featEvade = 1632;
public const int featMartial = 1635;
public const int featRapidMagic = 1648;
public const int featFairysan = 1413;
public const int featNegotiate = 1634;
public const int featLuckyCat = 1412;
public const int featGoldenFinger = 1662;
public const int featDreamWaker = 1653;
public const int featNegotiate = 1634;
public const int featRapidArrow = 1652;
public const int featMagicManner = 1651;
public const int featGourmet = 1650;
public const int featRapidMagic = 1648;
public const int featDefender = 1649;
public const int featSummoner = 1647;
public const int featFaith = 1636;
public const int featMagicManner = 1651;
public const int featMartial = 1635;
public const int featLuckyCat = 1412;
public const int featSpotting = 1633;
public const int featBaby = 1232;
public const int featEarthStrength = 1411;
public const int featReboot = 1410;
public const int featCosmicHorror = 1233;
public const int featBoost = 1409;
public const int featAdam = 1230;
public const int featNirvana = 1231;
public const int featCosmicHorror = 1233;
public const int featBaby = 1232;
public const int featHeavyEater = 1234;
public const int featEternalYouth = 1243;
public const int featEarthStrength = 1411;
public const int featReboot = 1410;
public const int featSevenSense = 1245;
public const int featBadKarma = 1271;
public const int featGoddess = 1290;
public const int featPeacemaker = 1272;
public const int featGod_element1 = 1300;
public const int featBloom = 1273;
public const int featGod_earth1 = 1305;
public const int featGoddess = 1290;
public const int featGod_wind1 = 1310;
public const int featGod_element1 = 1300;
public const int featLittleOne = 1229;
public const int featSnail = 1211;
public const int featGod_machine1 = 1315;
public const int featGod_earth1 = 1305;
public const int featFairyResist = 1212;
public const int featElea = 1213;
public const int featGod_healing1 = 1320;
public const int featGod_wind1 = 1310;
public const int featCentaur = 1244;
public const int featGod_luck1 = 1330;
public const int featPaladin = 1407;
public const int featGod_healing1 = 1320;
public const int featTourist = 1406;
public const int featWizard = 1402;
public const int featPaladin2 = 1408;
public const int featThief = 1401;
public const int featGod_harvest1 = 1325;
public const int featWarrior = 1400;
public const int featGod_strife1 = 1355;
public const int featGod_moonshadow1 = 1350;
public const int featGod_machine1 = 1315;
public const int featGod_trickery1 = 1345;
public const int featGod_oblivion1 = 1340;
public const int featGod_harmony1 = 1335;
public const int featWarrior = 1400;
public const int featGod_luck1 = 1330;
public const int featBoost = 1409;
public const int featGod_harvest1 = 1325;
public const int featPaladin = 1407;
public const int featPaladin2 = 1408;
public static readonly int[] IDS = new int[131]
public static readonly int[] IDS = new int[133]
{
1622, 1623, 1624, 1625, 1630, 1627, 1628, 1629, 1621, 1626,
1631, 1415, 1612, 1611, 1610, 1422, 1421, 1420, 1419, 1418,
1417, 1416, 1632, 1414, 1620, 1633, 1649, 1635, 1413, 1662,
1661, 1660, 1659, 1658, 1657, 1656, 1655, 1654, 1653, 1634,
1652, 1650, 1648, 1647, 1646, 1645, 1644, 1643, 1642, 1641,
1640, 1636, 1651, 1412, 1232, 1410, 1230, 1231, 1233, 1234,
1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1411,
1245, 1246, 1247, 1248, 1249, 1270, 1271, 1290, 1300, 1305,
1310, 1229, 1228, 1227, 1226, 1200, 1201, 1202, 1203, 1204,
1205, 1206, 1207, 1208, 1209, 1210, 1211, 1315, 1212, 1214,
1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224,
1225, 1213, 1320, 1244, 1330, 1407, 1406, 1405, 1404, 1403,
1402, 1408, 1401, 1325, 1355, 1350, 1345, 1340, 1335, 1400,
1409
1621, 1622, 1623, 1624, 1629, 1626, 1627, 1628, 1620, 1625,
1630, 1414, 1611, 1610, 1422, 1421, 1420, 1419, 1418, 1417,
1416, 1415, 1631, 1413, 1612, 1632, 1648, 1634, 1412, 1662,
1661, 1660, 1659, 1658, 1657, 1656, 1655, 1654, 1653, 1652,
1651, 1650, 1649, 1647, 1646, 1645, 1644, 1643, 1642, 1641,
1640, 1636, 1635, 1633, 1411, 1233, 1409, 1230, 1231, 1232,
1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243,
1410, 1245, 1246, 1247, 1248, 1249, 1270, 1271, 1272, 1273,
1290, 1300, 1229, 1228, 1227, 1226, 1200, 1201, 1202, 1203,
1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1305, 1212,
1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223,
1224, 1225, 1213, 1310, 1244, 1320, 1406, 1405, 1404, 1403,
1402, 1401, 1400, 1355, 1350, 1315, 1345, 1340, 1335, 1330,
1325, 1407, 1408
};
}
public class Feat : ElementFOOD
{
public const int creativeDish = 764;
public const int food_poison = 702;
public const int justcooked = 757;
public const int food_god = 758;
public const int food_undead = 709;
public const int food_CHA = 700;
public const int food_human = 708;
public const int food_cat = 701;
public const int kirimi = 707;
public const int food_love = 703;
public const int loseWeight = 706;
public const int food_bug = 704;
public const int gainWeight = 705;
public const int food_bug = 704;
public const int food_poison = 702;
public const int food_love = 703;
public const int kirimi = 707;
public const int food_god = 758;
public const int food_human = 708;
public const int food_cat = 701;
public const int food_undead = 709;
public const int food_CHA = 700;
public const int justcooked = 757;
public const int loseWeight = 706;
public static readonly int[] IDS = new int[13]
{
764, 702, 757, 709, 708, 707, 706, 705, 704, 703,
758, 701, 700
764, 758, 700, 701, 703, 704, 705, 702, 707, 708,
709, 757, 706
};
}Game
private void _OnDeserialized(StreamingContext context)
[JsonProperty]
public Version version;
[JsonProperty]
public Version startVersion;
[JsonProperty]
public PartyManager parties = new PartyManager(); config.autoCombat.abortOnItemLoss = true;
seed = EClass.rnd(10000);
Debug.Log("creating game: " + id + " seed:" + seed);
startVersion = EClass.core.version;
uniforms.Import();
religions.OnCreateGame();
factions.OnCreateGame();InvOwnerReconstruction
public override bool ShouldShowGuide(Thing t)
{
return false;
}
if (!t.IsEquipment)
if (t.isReplica)
{
return false;
}
if (t.isReplica)
if (!t.IsEquipmentOrRanged)
{
return false;
return t.IsThrownWeapon;
}
return true;
}MUTATION
public class MUTATION
{
public const int mutationDexN = 1515;
public const int mutationDex = 1514;
public const int mutationRegen = 1516;
public const int mutationSkinN = 1511;
public const int mutationSkin = 1510;
public const int mutationSkinN = 1511;
public const int mutationEye = 1512;
public const int mutationDex = 1514;
public const int mutationDexN = 1515;
public const int mutationRegenN = 1517;
public const int mutationEyeN = 1513;
public static readonly int[] IDS = new int[40]
{
1515, 1514, 1516, 1511, 1510, 1512, 1517, 1513, 1519, 1565,
1516, 1510, 1511, 1512, 1514, 1515, 1517, 1513, 1519, 1565,
1564, 1563, 1562, 1561, 1560, 1559, 1558, 1518, 1556, 1555,
1554, 1553, 1552, 1551, 1557, 1533, 1550, 1521, 1522, 1523,
1524, 1525, 1526, 1520, 1528, 1529, 1530, 1531, 1532, 1527Map
public void TrySmoothPick(Point p, Thing t, Chara c)
{
EClass.pc.PickOrDrop(p, t);
}
else if (c != null && (c.pos.Equals(p) || EClass.core.config.game.smoothPick || EClass._zone.IsRegion))
else if (c != null && c.IsPC && (c.pos.Equals(p) || EClass.core.config.game.smoothPick || EClass._zone.IsRegion))
{
c.PickOrDrop(p, t);
}POLICY
public const int mass_exhibition = 2814;
public const int food_for_people = 2502;
public const int faith_tax = 2501;
public const int bed_quality = 2812;
public const int self_sufficient = 2511;
public const int ban_radio = 2510;
public const int vaccination = 2509;
public const int stop_growth = 2515;
public const int nocturnal_life = 2508;
public const int human_right = 2506;
public const int stop_growth = 2515;
public const int inquisition = 2507;
public const int legal_drug = 2505;
public const int prohibition = 2503;
public const int food_for_people = 2502;
public const int wealth_tax = 2500;
public const int suite_room = 2813;
public const int inquisition = 2507;
public const int human_right = 2506;
public const int speed_growth = 2516;
public const int faith_tax = 2501;
public const int ban_radio = 2510;
public const int trash_sort = 2701;
public const int open_business = 2810;
public const int energy_conservation = 2700;
public const int home_discount = 2800;
public const int livestock_priv = 2715;
public const int energy_conservation = 2700;
public const int incomeTransfer = 2711;
public const int forcePanty = 2712;
public const int noMother = 2710;
public const int forcePanty = 2712;
public const int noAnimal = 2709;
public const int noDM = 2708;
public const int incomeTransfer = 2711;
public const int auto_farm = 2707;
public const int trash_no = 2702;
public const int noAnimal = 2709;
public const int noDM = 2708;
public static readonly int[] IDS = new int[51]
{
2816, 2817, 2818, 2819, 2820, 2821, 2824, 2823, 2825, 2826,
2827, 2828, 2815, 2822, 2814, 2502, 2812, 2514, 2513, 2512,
2511, 2510, 2509, 2515, 2508, 2506, 2505, 2504, 2503, 2500,
2813, 2507, 2516, 2501, 2701, 2811, 2810, 2800, 2715, 2700,
2711, 2710, 2712, 2708, 2707, 2706, 2705, 2704, 2703, 2702,
2709
2827, 2828, 2815, 2822, 2814, 2501, 2812, 2514, 2513, 2512,
2511, 2509, 2508, 2515, 2507, 2505, 2504, 2503, 2502, 2500,
2813, 2506, 2516, 2510, 2701, 2811, 2810, 2700, 2800, 2715,
2712, 2710, 2709, 2711, 2707, 2706, 2705, 2704, 2703, 2702,
2708
};
}
public class Policy : EClassParty
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using UnityEngine;public bool IsCriticallyWounded(bool includePc = false)
return false;
}
public int EValue(int ele)
public int EvalueBest(int ele)
{
int num = 0;
foreach (Chara member in members) return num;
}
public int EvalueTotal(int ele, Func<Chara, bool> funcIf = null)
{
int num = 0;
foreach (Chara member in members)
{
if (funcIf == null || funcIf(member))
{
num += member.Evalue(ele);
}
}
return num;
}
public bool HasElement(int ele, bool excludePC = false)
{
foreach (Chara member in members)Player
[JsonProperty]
public int death;
[JsonProperty]
public int death2;
[JsonProperty]
public int allyDeath;SKILL
public class SKILL
{
public const int twohand = 130;
public const int eyeofmind = 134;
public const int marksman = 133;
public const int twowield = 131;
public const int twohand = 130;
public const int shield = 123;
public const int throwing = 108;
public const int weaponDagger = 107;
public const int armorLight = 120;
public const int weaponCrossbow = 109;
public const int strategy = 135;
public const int throwing = 108;
public const int weaponDagger = 107;
public const int strategy = 135;
public const int armorHeavy = 122;
public const int evasion = 150;
public const int riding = 226;
public const int climbing = 242;
public const int stealth = 152;
public const int lumberjack = 225;
public const int riding = 226;
public const int parasite = 227;
public const int digging = 230;
public const int weaponPolearm = 106;
public const int climbing = 242;
public const int evasionPlus = 151;
public const int weaponGun = 105;
public static readonly int[] IDS = new int[133]
{
134, 133, 132, 131, 130, 123, 108, 120, 111, 110,
109, 135, 107, 122, 150, 226, 152, 200, 207, 210,
220, 225, 227, 230, 235, 237, 240, 241, 106, 242,
130, 134, 133, 132, 131, 123, 107, 120, 111, 110,
109, 108, 135, 122, 150, 242, 152, 200, 207, 210,
220, 225, 226, 227, 230, 235, 237, 240, 241, 106,
151, 105, 73, 103, 50, 51, 55, 56, 57, 60,
61, 64, 65, 66, 67, 68, 70, 71, 104, 72,
74, 75, 76, 77, 78, 79, 80, 90, 91, 92,Scene
Tutorial.Reserve("death");
}
EMono.player.stats.death++;
if (EMono.player.stats.days <= 90)
{
EMono.player.stats.death2++;
}
}
else
{TraitDeliveryChest
public override bool CanOpenContainer
{
if (owner.IsInstalled)
{
if (!EClass._zone.IsPCFaction && !EClass._zone.IsTown && !(EClass._zone is Zone_MerchantGuild) && !(EClass._zone is Zone_Casino))
if (!EClass._zone.IsPCFaction && !EClass._zone.IsTown && !(EClass._zone is Zone_MerchantGuild) && !(EClass._zone is Zone_Casino) && !(EClass._zone is Zone_CurryRuin))
{
return EClass._zone is Zone_CurryRuin;
return EClass._zone.id == "startVillage2";
}
return true;
}TraitFoodEggFertilized
public class TraitFoodEggFertilized : TraitFoodEgg
public static Chara Incubate(Thing egg, Point pos, Card incubator = null)
{
egg.SetSale(sale: false);
string str = "";
string text = "";
CardRow refCard = egg.refCard;
if (refCard != null)
{
str = refCard.id;
text = refCard.id;
if (refCard.id == "chara" || refCard.quality == 4)
{
str = "";
text = "";
}
}
if (egg.IsDecayed)
{
str = "zombie";
text = "zombie";
}
Chara chara = CharaGen.Create(str.IsEmpty("chicken"));
if (text == "cat_silver")
{
text = "cat";
}
Chara chara = CharaGen.Create(text.IsEmpty("chicken"));
EClass._zone.AddCard(chara, pos.GetNearestPoint(allowBlock: false, allowChara: false) ?? EClass.pc.pos);
chara.SetLv(1);
chara.SetMainElement(egg.c_idMainElement, 10, elemental: true);TraitLightSun
{
get
{
if (EClass._map.IsIndoor)
if (!owner.isOn && EClass._zone.electricity < -Electricity)
{
if (!(owner.parent is Zone))
{
if (EClass._zone.electricity < -Electricity)
{
return 1;
}
return 6;
}
if (!owner.isOn)
{
return 1;
}
return 6;
return 0;
}
return 6;
}TraitMonsterBall
public virtual bool IsDuponneBall => false;
public virtual bool IsSilvercatBall => false;
public override void OnCreate(int lv)
{
if (!IsLittleBall && !IsDuponneBall)
if (!IsLittleBall && !IsDuponneBall && !IsSilvercatBall)
{
owner.SetLv(1 + EClass.rnd(lv + 10));
}public override bool CanStackTo(Thing to)
public override void SetName(ref string s)
{
s = ((IsDuponneBall || IsLittleBall) ? "_littleBall" : "_monsterball").lang(s, owner.LV.ToString() ?? "", (chara == null) ? "_monsterball_empty".lang() : chara.Name);
s = ((IsDuponneBall || IsLittleBall || IsSilvercatBall) ? "_littleBall" : "_monsterball").lang(s, owner.LV.ToString() ?? "", (chara == null) ? "_monsterball_empty".lang() : chara.Name);
}
public override int GetValue()
{
if (IsLittleBall || IsDuponneBall)
if (IsLittleBall || IsDuponneBall || IsSilvercatBall)
{
return base.GetValue();
}+TraitSilvercatBall
File Created
public class TraitSilvercatBall : TraitMonsterBall
{
public override bool IsSilvercatBall => true;
}WidgetRoster
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using UnityEngine;
using UnityEngine.UI; layout.startCorner = (extra.reverse ? GridLayoutGroup.Corner.LowerRight : GridLayoutGroup.Corner.UpperLeft);
layout.cellSize = new Vector2(extra.width * 4 / 5, extra.onlyName ? 32 : extra.width);
layout.spacing = new Vector2(extra.margin, extra.margin);
foreach (Chara member in EMono.pc.party.members)
List<Chara> list = EMono.pc.party.members.ToList();
if (!extra.pc)
{
if (member != EMono.pc || extra.pc)
{
Add(member);
}
list.Remove(EMono.pc);
}
list.Sort(delegate(Chara a, Chara b)
{
int @int = a.GetInt(19);
int int2 = b.GetInt(19);
return (@int == int2) ? (EMono.pc.party.members.IndexOf(a) - EMono.pc.party.members.IndexOf(b)) : (int2 * 1000 - @int * 1000);
});
foreach (Chara item in list)
{
Add(item);
}
if (buttons.Count == 0)
{public void OnRemoveMember(Chara c)
public override void OnSetContextMenu(UIContextMenu m)
{
ButtonRoster b = InputModuleEX.GetComponentOf<ButtonRoster>();
int index;
if ((bool)b)
{
index = EMono.pc.party.members.IndexOf(b.chara);
int count = EMono.pc.party.members.Count;
if (index >= 1 && index < count - 1)
m.AddSlider("priority_hint", (float a) => a.ToString() ?? "", b.chara.GetInt(19), delegate(float a)
{
m.AddButton("next", delegate
{
Move(1);
});
}
if (index >= 2)
{
m.AddButton("prev", delegate
{
Move(-1);
});
}
b.chara.SetInt(19, (int)a);
Build();
}, 0f, 20f, isInt: true, hideOther: false);
}
UIContextMenu uIContextMenu = m.AddChild("setting");
uIContextMenu.AddSlider("width", (float a) => a.ToString() ?? "", extra.width, delegate(float a)public override void OnSetContextMenu(UIContextMenu m)
ApplySkin();
}, 0f, base.config.skin.Skin.buttons.Count - 1, isInt: true);
SetBaseContextMenu(m);
void Move(int mod)
{
EMono.pc.party.Replace(b.chara, index + mod);
Build();
}
}
}ZoneEventDefenseGame
public void NextWave(int add = 0)
{
wave++;
turns = 0;
EClass._zone._dangerLv += ((EClass._zone.DangerLv >= 100) ? (EClass._zone.DangerLv / 100 * 5 + 5) : 5);
long num = EClass._zone._dangerLv + ((EClass._zone.DangerLv >= 100) ? (EClass._zone.DangerLv / 100 * 5 + 5) : 5);
if (num >= 2000000000)
{
num = 2000000000L;
}
EClass._zone._dangerLv = (int)num;
SE.Play("warhorn");
Msg.Say("warhorn");
Msg.Say("defense_wave", wave.ToString() ?? "", EClass._zone.DangerLv.ToString() ?? "");