EA 23.256 Nightly Patch 1
January 7, 2026
15 files modified.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
CardFilter (1)
public static FilterItem GetFilterItem(string text) LayerDragGrid (1)
public static LayerDragGrid CreateReconstruction(Chara cc, BlessedState state = BlessedState.Normal, int price = 0, int count = 1)
public static LayerDragGrid CreateReconstruction(Chara cc, BlessedState state = BlessedState.Normal, int power = 100, int price = 0, int count = 1) ActEffect
void AddCon<T>(int rate, int power) where T : Condition
{
if (!tc.isThing)
{
LayerDragGrid.CreateReconstruction(CC, state);
LayerDragGrid.CreateReconstruction(CC, state, power);
return;
}
if (tc.Num > 1)void AddCon<T>(int rate, int power) where T : Condition
break;
case EffectId.StripBlessing:
{
List<Condition> list9 = new List<Condition>();
List<Condition> list4 = new List<Condition>();
foreach (Condition condition4 in TC.conditions)
{
if (GetBlessingDifficulty(condition4) > 0 && EClass.rnd(GetBlessingDifficulty(condition4)) == 0)
{
list9.Add(condition4);
list4.Add(condition4);
}
}
if (list9.Count == 0)
if (list4.Count == 0)
{
CC.SayNothingHappans();
break;void AddCon<T>(int rate, int power) where T : Condition
TC.pos.PlayEffect("holyveil");
TC.pos.PlaySound("holyveil");
TC.Say("unpolluted", TC);
list9.Shuffle();
list4.Shuffle();
{
foreach (Condition item4 in list9)
foreach (Condition item4 in list4)
{
item4.Kill();
if (CC.IsHostile(TC))void AddCon<T>(int rate, int power) where T : Condition
TC.Say((actRef.n1 == "money") ? "abStealNegateMoney" : "abStealNegate", TC);
break;
}
Thing thing5 = null;
bool flag7 = actRef.n1 == "food";
Thing thing6 = null;
bool flag9 = actRef.n1 == "food";
if (actRef.n1 == "money")
{
int currency = TC.GetCurrency();
if (currency > 0)
{
currency = Mathf.Clamp(EClass.rnd(currency / 10), 1, 100 + EClass.rndHalf(CC.LV * 200));
thing5 = ThingGen.Create("money").SetNum(currency);
thing6 = ThingGen.Create("money").SetNum(currency);
TC.ModCurrency(-currency);
}
}
else
{
Func<Thing, bool> func = (Thing t) => true;
if (flag7)
if (flag9)
{
func = (Thing t) => t.IsFood;
}
List<Thing> list5 = TC.things.List(delegate(Thing t)
List<Thing> list9 = TC.things.List(delegate(Thing t)
{
if (t.parentCard?.trait is TraitChestMerchant || t.trait is TraitTool || t.IsThrownWeapon)
{void AddCon<T>(int rate, int power) where T : Condition
}
return t.trait.CanBeDestroyed && t.things.Count == 0 && t.invY != 1 && t.trait.CanBeStolen && !t.trait.CanOnlyCarry && !t.IsUnique && !t.isEquipped && t.blessedState == BlessedState.Normal && func(t);
}, onlyAccessible: true);
if (list5.Count > 0)
if (list9.Count > 0)
{
thing5 = list5.RandomItem();
if (thing5.Num > 1)
thing6 = list9.RandomItem();
if (thing6.Num > 1)
{
thing5 = thing5.Split(1);
thing6 = thing6.Split(1);
}
}
CC.AddCooldown(6640, 200);
}
if (thing5 == null)
if (thing6 == null)
{
CC.Say("abStealNothing", CC, TC);
break;
}
thing5.SetInt(116, 1);
TC.PlaySound(thing5.material.GetSoundDrop(thing5.sourceCard));
CC.Pick(thing5, msg: false);
CC.Say("abSteal", CC, TC, thing5.Name);
thing6.SetInt(116, 1);
TC.PlaySound(thing6.material.GetSoundDrop(thing6.sourceCard));
CC.Pick(thing6, msg: false);
CC.Say("abSteal", CC, TC, thing6.Name);
if (actRef.n1 == "food")
{
if (CC.hunger.value != 0)
{
CC.InstantEat(thing5);
CC.InstantEat(thing6);
}
}
elsevoid AddCon<T>(int rate, int power) where T : Condition
{
break;
}
List<Thing> list4 = TC.things.List(delegate(Thing t)
List<Thing> list5 = TC.things.List(delegate(Thing t)
{
if (!t.isEquipped || t.blessedState == BlessedState.Doomed || t.IsToolbelt)
{void AddCon<T>(int rate, int power) where T : Condition
}
return (t.blessedState < BlessedState.Blessed || EClass.rnd(10) == 0) ? true : false;
});
if (list4.Count == 0)
if (list5.Count == 0)
{
CC.SayNothingHappans();
break;
}
Thing thing4 = list4.RandomItem();
Thing thing4 = list5.RandomItem();
TC.Say("curse_hit", TC, thing4);
thing4.SetBlessedState((thing4.blessedState == BlessedState.Cursed) ? BlessedState.Doomed : BlessedState.Cursed);
LayerInventory.SetDirty(thing4);void AddCon<T>(int rate, int power) where T : Condition
text3 = text4;
}
}
Condition condition2 = Condition.Create(text3, power, delegate(Condition con)
Condition condition = Condition.Create(text3, power, delegate(Condition con)
{
if (!actRef.aliasEle.IsEmpty())
{
con.SetElement(EClass.sources.elements.alias[actRef.aliasEle].id);
}
});
condition2.isPerfume = TC.IsPC && actRef.isPerfume;
Condition condition3 = TC.AddCondition(condition2);
if (condition3 != null && condition3.isPerfume)
condition.isPerfume = TC.IsPC && actRef.isPerfume;
Condition condition2 = TC.AddCondition(condition);
if (condition2 != null && condition2.isPerfume)
{
condition3.value = 3;
condition2.value = 3;
Msg.Say("perfume", TC);
}
if (!text4.IsEmpty())void AddCon<T>(int rate, int power) where T : Condition
{
EClass.game.religions.Trickery.Talk("ability");
bool hex = CC.IsHostile(TC);
List<SourceStat.Row> list6 = EClass.sources.stats.rows.Where((SourceStat.Row con) => con.tag.Contains("random") && con.group == (hex ? "Debuff" : "Buff")).ToList();
List<SourceStat.Row> list7 = EClass.sources.stats.rows.Where((SourceStat.Row con) => con.tag.Contains("random") && con.group == (hex ? "Debuff" : "Buff")).ToList();
int power2 = power;
for (int k = 0; k < 4 + EClass.rnd(2); k++)
{
SourceStat.Row row2 = list6.RandomItem();
list6.Remove(row2);
SourceStat.Row row2 = list7.RandomItem();
list7.Remove(row2);
Proc(hex ? EffectId.DebuffKizuami : EffectId.Buff, CC, TC, power2, new ActRef
{
n1 = row2.aliasvoid AddCon<T>(int rate, int power) where T : Condition
power = power * 2 / 3;
}
int a2 = power;
int num7 = TC.WIL * (isPowerful ? 20 : 5);
ConHolyVeil condition = TC.GetCondition<ConHolyVeil>();
if (condition != null)
int num10 = TC.WIL * (isPowerful ? 20 : 5);
ConHolyVeil condition3 = TC.GetCondition<ConHolyVeil>();
if (condition3 != null)
{
num7 += condition.power * 5;
num10 += condition3.power * 5;
}
if (id != EffectId.DebuffKizuami && EClass.rnd(a2) < num7 / EClass.sources.stats.alias[n].hexPower && EClass.rnd(10) != 0)
if (id != EffectId.DebuffKizuami && EClass.rnd(a2) < num10 / EClass.sources.stats.alias[n].hexPower && EClass.rnd(10) != 0)
{
TC.Say("debuff_resist", TC);
CC.DoHostileAction(TC);void AddCon<T>(int rate, int power) where T : Condition
tc.bio.SetGender(gender2);
tc.Say("transGender", tc, Gender.Name(tc.bio.gender));
tc.Talk("tail");
int age = tc.bio.GetAge(tc.Chara);
if (blessed && age > 1)
int age3 = tc.bio.GetAge(tc.Chara);
if (blessed && age3 > 1)
{
tc.Say("ageDown", tc);
tc.bio.SetAge(tc.Chara, age - 1);
tc.bio.SetAge(tc.Chara, age3 - 1);
}
else if (flag)
{
tc.Say("ageUp", tc);
tc.bio.SetAge(tc.Chara, age + 1);
tc.bio.SetAge(tc.Chara, age3 + 1);
}
break;
}void AddCon<T>(int rate, int power) where T : Condition
{
tc.PlaySound("mutation");
tc.PlayEffect("mutation");
int num8 = ((actRef.refThing != null) ? actRef.refThing.GetInt(118) : actRef.refVal);
if (num8 == 0)
int num11 = ((actRef.refThing != null) ? actRef.refThing.GetInt(118) : actRef.refVal);
if (num11 == 0)
{
num8 = tc.GetInt(118);
if (num8 == 0)
num11 = tc.GetInt(118);
if (num11 == 0)
{
num8 = EClass.game.seed + tc.uid;
num11 = EClass.game.seed + tc.uid;
}
num8++;
num11++;
}
tc.Say("transBlood", tc);
tc.Talk("tail");
tc.c_bloodData = null;
tc.SetInt(118, num8);
tc.SetInt(118, num11);
break;
}
case EffectId.Youth:
{
tc.PlaySound("mutation");
tc.PlayEffect("mutation");
int age3 = tc.bio.GetAge(tc.Chara);
if (!flag && age3 <= 0)
int age = tc.bio.GetAge(tc.Chara);
if (!flag && age <= 0)
{
tc.SayNothingHappans();
break;
}
age3 = Mathf.Max(0, age3 * 100 / (flag ? 75 : (blessed ? 400 : 200))) + (flag ? 1 : 0);
age = Mathf.Max(0, age * 100 / (flag ? 75 : (blessed ? 400 : 200))) + (flag ? 1 : 0);
tc.Say(flag ? "ageUp" : "ageDown", tc);
tc.bio.SetAge(tc.Chara, age3);
tc.bio.SetAge(tc.Chara, age);
break;
}
case EffectId.EternalYouth:void AddCon<T>(int rate, int power) where T : Condition
{
EClass.game.religions.Wind.Talk("ability");
}
if (flag)
{
if (id == EffectId.BuffStats)
{
id = EffectId.DebuffStats;
}
else if (id == EffectId.DebuffStats)
{
id = EffectId.BuffStats;
}
}
if (power < 0 || id == EffectId.DebuffStats)
{
power = Mathf.Abs(power);void AddCon<T>(int rate, int power) where T : Condition
{
bool flag10 = id == EffectId.DamageBody || id == EffectId.DamageBodyGreat;
bool mind2 = id == EffectId.DamageMind || id == EffectId.DamageMindGreat;
int num11 = ((id == EffectId.DamageBody || id == EffectId.DamageMind) ? 1 : (4 + EClass.rnd(4)));
int num9 = ((id == EffectId.DamageBody || id == EffectId.DamageMind) ? 1 : (4 + EClass.rnd(4)));
if (id == EffectId.Weaken)
{
flag10 = EClass.rnd(2) == 0;
mind2 = !flag10;
num11 = 1;
num9 = 1;
}
else
{void AddCon<T>(int rate, int power) where T : Condition
TC.PlaySound("debuff");
}
TC.Say(flag10 ? "damageBody" : "damageMind", TC);
for (int l = 0; l < num11; l++)
for (int l = 0; l < num9; l++)
{
TC.DamageTempElements(power, flag10, mind2, id != EffectId.Weaken);
}void AddCon<T>(int rate, int power) where T : Condition
case EffectId.EnhanceBodyGreat:
case EffectId.EnhanceMindGreat:
{
bool flag8 = id == EffectId.EnhanceBody || id == EffectId.EnhanceBodyGreat;
bool flag7 = id == EffectId.EnhanceBody || id == EffectId.EnhanceBodyGreat;
bool mind = id == EffectId.EnhanceMind || id == EffectId.EnhanceMindGreat;
if (id != EffectId.EnhanceBody && id != EffectId.EnhanceMind)
{
EClass.rnd(4);
}
TC.Say(flag8 ? "enhanceBody" : "enhanceMind", TC);
TC.Say(flag7 ? "enhanceBody" : "enhanceMind", TC);
TC.PlayEffect("buff");
TC.PlaySound("buff");
TC.EnhanceTempElements(power, flag8, mind, onlyRenew: true);
TC.EnhanceTempElements(power, flag7, mind, onlyRenew: true);
break;
}
case EffectId.RestoreBody:
case EffectId.RestoreMind:
{
bool flag9 = id == EffectId.RestoreBody;
bool flag8 = id == EffectId.RestoreBody;
if (flag)
{
Redirect(flag9 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef));
Redirect(flag8 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef));
break;
}
TC.Say(flag9 ? "restoreBody" : "restoreMind", TC);
TC.Say(flag8 ? "restoreBody" : "restoreMind", TC);
TC.PlaySound("heal");
TC.PlayEffect("heal");
TC.CureHost(flag9 ? CureType.CureBody : CureType.CureMind, power, state);
TC.CureHost(flag8 ? CureType.CureBody : CureType.CureMind, power, state);
if (blessed)
{
Redirect(flag9 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef));
Redirect(flag8 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef));
}
break;
}void AddCon<T>(int rate, int power) where T : Condition
{
EClass.game.religions.Healing.Talk("ability");
}
int num10 = Dice.Create((actRef.act != null && EClass.sources.calc.map.ContainsKey(actRef.act.ID)) ? actRef.act.ID : "SpHealLight", power, CC, (actRef.refThing != null) ? null : actRef.act).Roll();
int num8 = Dice.Create((actRef.act != null && EClass.sources.calc.map.ContainsKey(actRef.act.ID)) ? actRef.act.ID : "SpHealLight", power, CC, (actRef.refThing != null) ? null : actRef.act).Roll();
if (actRef.refThing != null)
{
num10 = num10 * (100 + actRef.refThing.Evalue(750) * 10) / 100;
num8 = num8 * (100 + actRef.refThing.Evalue(750) * 10) / 100;
}
if (flag)
{
TC.DamageHP(num10 / 2, 919, power);
TC.DamageHP(num8 / 2, 919, power);
break;
}
TC.HealHPHost(num10, (actRef.refThing == null && id != EffectId.JureHeal) ? HealSource.Magic : HealSource.Item);
TC.HealHPHost(num8, (actRef.refThing == null && id != EffectId.JureHeal) ? HealSource.Magic : HealSource.Item);
TC.CureHost(CureType.Heal, power, state);
TC.Say((power >= 300) ? "heal_heavy" : "heal_light", TC);
break;void AddCon<T>(int rate, int power) where T : Condition
if (TC.HasElement(1211))
{
TC.Say("drinkSaltWater_snail", TC);
int num9 = ((TC.hp > 10) ? (TC.hp - EClass.rnd(10)) : 10000);
TC.DamageHP(num9, AttackSource.None, CC);
int num7 = ((TC.hp > 10) ? (TC.hp - EClass.rnd(10)) : 10000);
TC.DamageHP(num7, AttackSource.None, CC);
}
else if (TC.IsPC)
{void AddCon<T>(int rate, int power) where T : Condition
{
power /= 4;
}
List<Thing> list7 = TC.things.List((Thing t) => (t.Num <= 1 && t.IsEquipmentOrRanged && !t.IsToolbelt && !t.IsLightsource && t.isEquipped) ? true : false);
if (list7.Count != 0)
List<Thing> list6 = TC.things.List((Thing t) => (t.Num <= 1 && t.IsEquipmentOrRanged && !t.IsToolbelt && !t.IsLightsource && t.isEquipped) ? true : false);
if (list6.Count != 0)
{
Thing thing6 = list7.RandomItem();
Thing thing5 = list6.RandomItem();
TC.Say("acid_hit", TC);
if (thing6.isAcidproof)
if (thing5.isAcidproof)
{
TC.Say("acid_nullify", thing6);
TC.Say("acid_nullify", thing5);
}
else if (thing6.encLV > -5)
else if (thing5.encLV > -5)
{
TC.Say("acid_rust", TC, thing6);
thing6.ModEncLv(-1);
LayerInventory.SetDirty(thing6);
TC.Say("acid_rust", TC, thing5);
thing5.ModEncLv(-1);
LayerInventory.SetDirty(thing5);
}
if (TC.IsPCParty)
{CardFilter
{
public bool exclude;
public bool supersede;
public string name;
}public bool Pass(CardRow source)
for (int i = 0; i < tags.Count; i++)
{
FilterItem filterItem = tags[i];
if (filterItem.exclude)
if (filterItem.supersede)
{
if (ContainsTag(source, filterItem.name))
{
flag = true;
break;
}
}
else if (filterItem.exclude)
{
if (ContainsTag(source, filterItem.name))
{
return false;
}
continue;
}
flag2 = true;
if (!flag && ContainsTag(source, filterItem.name))
else
{
flag = true;
flag2 = true;
if (!flag && ContainsTag(source, filterItem.name))
{
flag = true;
}
}
}
if (flag2 && !flag)public bool Pass(CardRow source)
for (int j = 0; j < filters.Count; j++)
{
FilterItem filterItem2 = filters[j];
if (filterItem2.supersede)
{
break;
}
if (filterItem2.exclude)
{
if (source.filter.Contains(filterItem2.name))public bool Pass(CardRow source)
public void BuildList(List<FilterItem> list, string[] strs)
{
if (strs != null)
if (strs == null)
{
return;
}
foreach (string text in strs)
{
foreach (string text in strs)
if (text.Length != 0)
{
list.Add(GetFilterItem(text));
FilterItem filterItem = new FilterItem();
_ = text[0];
switch (text[0])
{
case '*':
filterItem.supersede = true;
filterItem.name = text.Substring(1);
break;
case '-':
filterItem.exclude = true;
filterItem.name = text.Substring(1);
break;
default:
filterItem.name = text;
break;
}
list.Add(filterItem);
}
}
}
public static FilterItem GetFilterItem(string text)
{
bool flag = text.StartsWith("-");
return new FilterItem
{
exclude = flag,
name = (flag ? text.Substring(1) : text)
};
}
}Chara
public void RefreshSpeed(Element.BonusInfo info = null)
info?.AddText("minSpeed".lang((elements.ValueWithoutLink(79) / 3).ToString() ?? ""));
}
int num = 100;
if (EClass._zone.map != null && EClass._zone.IsUnderwater)
if (EClass._zone.map != null && (EClass._zone.IsUnderwater || (base.Cell.IsTopWater && !base.Cell.isFloating)))
{
int num2 = Evalue(200);
num = 50 + Mathf.Clamp((int)Mathf.Sqrt(num2) * 5 - EClass._zone.DangerLv / 50, 0, 50) + Mathf.Clamp((int)Mathf.Sqrt(num2), 0, 25);
int num3 = Evalue(1252);
num = 50 + Mathf.Clamp((int)Mathf.Sqrt(num2) * 5 - EClass._zone.DangerLv / 50, (num3 > 0) ? 50 : 0, 50) + Mathf.Clamp((int)Mathf.Sqrt(num2), 0, 25);
if (info != null && num != 100)
{
info.AddFix(num - 100, EClass.sources.elements.map[200].GetName().ToTitleCase());
}
if (num3 > 0)
{
num += num3 * 20;
info?.AddFix(num3 * 20, EClass.sources.elements.map[1252].GetName().ToTitleCase());
}
}
if (IsPCFaction)
{public override MoveResult _Move(Point newPoint, MoveType type = MoveType.Walk)
EClass.pc.SetPCCState(PCCState.ShoesOff);
}
}
bool flag6 = flag4 || EClass._zone.IsUnderwater;
if (wasInWater != flag6)
{
wasInWater = flag6;
RefreshSpeed();
}
hasMovedThisTurn = true;
return MoveResult.Success;
}public bool IsHostile(Chara c)
return true;
}
}
if (id == "unicorn" && c.HasElement(1216))
{
return true;
}
return false;
}FEAT
public const int featDismantler = 1661;
public const int featComat = 1750;
public const int featSpike = 1221;
public const int featFate = 1220;
public const int featHealer = 1422;
public const int featSpike = 1221;
public const int featGod_harvest1 = 1325;
public const int featFarmer = 1403;
public const int featArcher = 1404;
public const int featPianist = 1405;
public const int featTourist = 1406;
public const int featPaladin = 1407;
public const int featPaladin2 = 1408;
public const int featBoost = 1409;
public const int featWizard = 1402;
public const int featReboot = 1410;
public const int featLuckyCat = 1412;
public const int featFairysan = 1413;
public const int featWhiteVixen = 1414;
public const int featFoxMaid = 1415;
public const int featInquisitor = 1416;
public const int featWitch = 1417;
public const int featSwordsage = 1418;
public const int featEarthStrength = 1411;
public const int featThief = 1401;
public const int featWarrior = 1400;
public const int featComat = 1750;
public const int featGod_strife1 = 1355;
public const int featExecutioner = 1420;
public const int featAshborn = 1251;
public const int featAquatic = 1252;
public const int featGoodKarma = 1270;
public const int featBadKarma = 1271;
public const int featGod_healing1 = 1320;
public const int featMiscreation = 1248;
public const int featGod_luck1 = 1330;
public const int featGod_harmony1 = 1335;
public const int featGod_moonshadow1 = 1350;
public const int featMilitant = 1419;
public const int featGod_strife1 = 1355;
public const int featWarrior = 1400;
public const int featThief = 1401;
public const int featWizard = 1402;
public const int featFarmer = 1403;
public const int featArcher = 1404;
public const int featVampire = 1250;
public const int featExecutioner = 1420;
public const int featBloodBond = 1249;
public const int featPegasus = 1246;
public const int featMiscreation = 1248;
public const int featLibra = 1247;
public const int featBaby = 1232;
public const int featShiva = 1224;
public const int featLibra = 1247;
public const int featCosmicHorror = 1233;
public const int featBloodBond = 1249;
public const int featPianist = 1405;
public const int featLightEater = 1235;
public const int featHeavyEater = 1234;
public const int featSevenSense = 1245;
public const int featNorland = 1236;
public const int featCentaur = 1244;
public const int featRoran = 1237;
public const int featEternalYouth = 1243;
public const int featElder = 1238;
public const int featNorland = 1236;
public const int featDemon = 1239;
public const int featGeneSlot = 1242;
public const int featMassSummoner = 1240;
public const int featMeatCushion = 1241;
public const int featMassSummoner = 1240;
public const int featGeneSlot = 1242;
public const int featDemon = 1239;
public const int featEternalYouth = 1243;
public const int featElder = 1238;
public const int featCentaur = 1244;
public const int featRoran = 1237;
public const int featSevenSense = 1245;
public const int featHeavyEater = 1234;
public const int featPegasus = 1246;
public const int featLightEater = 1235;
public const int featTourist = 1406;
public const int featGod_harvest1 = 1325;
public const int featPaladin2 = 1408;
public const int featMilitant = 1419;
public const int featSwordsage = 1418;
public const int featWitch = 1417;
public const int featInquisitor = 1416;
public const int featFoxMaid = 1415;
public const int featPaladin = 1407;
public const int featFairysan = 1413;
public const int featBoost = 1409;
public const int featReboot = 1410;
public const int featWhiteVixen = 1414;
public const int featLuckyCat = 1412;
public const int featEarthStrength = 1411;
public static readonly int[] IDS = new int[136]
public static readonly int[] IDS = new int[137]
{
1223, 1650, 1649, 1648, 1647, 1646, 1645, 1644, 1643, 1642,
1641, 1640, 1636, 1635, 1634, 1651, 1633, 1631, 1630, 1629, 1611, 1632, 1652, 1653, 1654, 1222, 1200, 1201, 1202, 1203,
1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213,
1214, 1215, 1655, 1656, 1657, 1658, 1659, 1660, 1610, 1661,
1750, 1220, 1219, 1218, 1217, 1216, 1662, 1422, 1221, 1325,
1403, 1404, 1405, 1406, 1407, 1408, 1409, 1402, 1410, 1412,
1413, 1414, 1415, 1416, 1417, 1418, 1411, 1401, 1400, 1355,
1251, 1270, 1271, 1272, 1273, 1290, 1300, 1305, 1310, 1315,
1320, 1248, 1330, 1335, 1340, 1345, 1350, 1419, 1250, 1420,
1246, 1232, 1231, 1421, 1230, 1229, 1228, 1227, 1226, 1225,
1224, 1247, 1233, 1249, 1235, 1245, 1244, 1243, 1236, 1242,
1241, 1240, 1239, 1238, 1237, 1234
1221, 1220, 1219, 1218, 1217, 1216, 1662, 1422, 1750, 1420,
1251, 1252, 1270, 1271, 1272, 1273, 1290, 1300, 1305, 1310,
1315, 1320, 1330, 1335, 1340, 1345, 1350, 1355, 1400, 1401,
1402, 1403, 1404, 1250, 1249, 1248, 1247, 1232, 1231, 1421,
1230, 1229, 1228, 1227, 1226, 1225, 1224, 1233, 1405, 1234,
1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245,
1246, 1235, 1406, 1325, 1408, 1419, 1418, 1417, 1416, 1415,
1407, 1413, 1409, 1410, 1414, 1412, 1411
};
}
public class Feat : ElementFOOD
public class FOOD
{
public const int food_CHA = 700;
public const int food_cat = 701;
public const int food_god = 758;
public const int food_poison = 702;
public const int justcooked = 757;
public const int food_love = 703;
public const int food_blood = 710;
public const int food_undead = 709;
public const int gainWeight = 705;
public const int food_human = 708;
public const int loseWeight = 706;
public const int kirimi = 707;
public const int food_CHA = 700;
public const int loseWeight = 706;
public const int kirimi = 707;
public const int food_bug = 704;
public const int food_human = 708;
public const int food_love = 703;
public const int food_undead = 709;
public const int food_poison = 702;
public const int food_bug = 704;
public const int food_cat = 701;
public const int food_god = 758;
public const int creativeDish = 764;
public const int gainWeight = 705;
public const int justcooked = 757;
public static readonly int[] IDS = new int[14]
{
700, 758, 757, 710, 709, 708, 707, 706, 704, 703,
702, 701, 764, 705
701, 702, 703, 710, 705, 706, 700, 707, 708, 709,
704, 758, 764, 757
};
}InvOwnerEffect
public class InvOwnerEffect : InvOwnerDraglet
public bool superior;
public int power = 100;
public InvOwnerEffect(Card owner = null, Card container = null, CurrencyType _currency = CurrencyType.Money)
: base(owner, container, _currency)
{InvOwnerReconstruction
public override bool ShouldShowGuide(Thing t)
public override void _OnProcess(Thing t)
{
ActEffect.Proc(EffectId.Reconstruction, 100, state, t.GetRootCard(), t);
ActEffect.Proc(EffectId.Reconstruction, power, state, t.GetRootCard(), t);
}
}LayerDragGrid
public static LayerDragGrid CreateLighten(Chara cc, BlessedState state = Blessed
});
}
public static LayerDragGrid CreateReconstruction(Chara cc, BlessedState state = BlessedState.Normal, int price = 0, int count = 1)
public static LayerDragGrid CreateReconstruction(Chara cc, BlessedState state = BlessedState.Normal, int power = 100, int price = 0, int count = 1)
{
return TryProc(cc, new InvOwnerReconstruction
{
state = state,
price = price,
count = count
count = count,
power = power
});
}
}LayerPeople
public static LayerPeople CreateBed(TraitBed bed)
});
layerPeople.multi.AddOwner(1, new ListPeopleBed
{
textHeader = "listBedHolder".lang(bed.MaxHolders.ToString() ?? ""),
funcHeader = () => "listBedHolder".lang(bed.CountHolders() + " / " + bed.MaxHolders),
bed = bed
});
ELayer.ui.AddLayer(layerPeople);ListOwner
using System;
public class ListOwner<T1, T2> : ListOwner
{
public virtual void OnClick(T1 a, T2 b)public class ListOwner : EClass
public int index;
public Func<string> funcHeader;
public ListOwner Main
{
getpublic virtual string TextHeader
{
get
{
if (!textHeader.IsEmpty())
if (funcHeader == null)
{
return textHeader.lang();
if (!textHeader.IsEmpty())
{
return textHeader.lang();
}
return "";
}
return "";
return funcHeader();
}
}public virtual void OnSwitchContent()
{
window.SetTitles(IdTitle, IdHeaderRow);
}
if (!textHeader.IsEmpty())
RefreshCaption();
}
public void RefreshCaption()
{
if (!TextHeader.IsEmpty())
{
window.SetCaption(TextHeader);
}public void MoveToOther(object c)
other.List();
list.RebuildLayoutTo(layer);
SE.Resource();
RefreshCaption();
other.RefreshCaption();
}
}MUTATION
public class MUTATION
{
public const int mutationSkin = 1510;
public const int etherPoisonHand = 1565;
public const int mutationColdN = 1527;
public const int mutationCold = 1526;
public const int mutationBrainN = 1525;
public const int mutationSpeedN = 1519;
public const int mutationBrain = 1524;
public const int mutationSpeed = 1518;
public const int mutationCha = 1522;
public const int mutationStrN = 1521;
public const int mutationStr = 1520;
public const int mutationLightning = 1528;
public const int mutationSpeedN = 1519;
public const int mutationRegenN = 1517;
public const int mutationRegen = 1516;
public const int mutationDexN = 1515;
public const int mutationSkinN = 1511;
public const int mutationSpeed = 1518;
public const int mutationSkin = 1510;
public const int mutationLightningN = 1529;
public const int mutationStr = 1520;
public const int mutationStrN = 1521;
public const int mutationRegenN = 1517;
public const int mutationChaN = 1523;
public const int mutationBodyN = 1531;
public const int mutationBrainN = 1525;
public const int etherPoisonHand = 1565;
public const int etherManaBattery = 1564;
public const int etherProvoke = 1563;
public const int mutationBody = 1530;
public const int etherArmor = 1562;
public const int etherStupid = 1561;
public const int etherWeak = 1560;
public const int mutationBrain = 1524;
public const int etherAddict = 1559;
public const int etherViolence = 1556;
public const int etherArmor = 1562;
public const int etherNeck = 1555;
public const int etherWing = 1554;
public const int etherEye = 1553;
public const int etherWeak = 1560;
public const int etherFeet = 1552;
public const int etherUgly = 1551;
public const int etherEye = 1553;
public const int etherGravity = 1550;
public const int mutationCold = 1526;
public const int mutationHairN = 1533;
public const int mutationColdN = 1527;
public const int mutationLightningN = 1529;
public const int mutationBody = 1530;
public const int mutationLightning = 1528;
public const int mutationHair = 1532;
public const int etherNeck = 1555;
public const int mutationHairN = 1533;
public const int etherGravity = 1550;
public const int etherUgly = 1551;
public const int mutationBodyN = 1531;
public static readonly int[] IDS = new int[40]
{
1510, 1565, 1527, 1526, 1525, 1524, 1522, 1521, 1520, 1528,
1519, 1517, 1516, 1515, 1514, 1513, 1512, 1511, 1518, 1529,
1523, 1531, 1564, 1563, 1530, 1561, 1560, 1559, 1558, 1557,
1556, 1562, 1554, 1553, 1552, 1551, 1550, 1533, 1532, 1555
1519, 1518, 1522, 1516, 1515, 1514, 1513, 1512, 1511, 1510,
1520, 1521, 1517, 1523, 1525, 1565, 1564, 1563, 1562, 1561,
1524, 1559, 1558, 1557, 1556, 1555, 1554, 1560, 1552, 1553,
1526, 1527, 1529, 1530, 1528, 1532, 1533, 1550, 1551, 1531
};
}
public class Mutation : FeatPOLICY
public class POLICY
{
public const int legendary_heirloom = 2821;
public const int store_premium = 2817;
public const int license_food = 2818;
public const int license_general = 2820;
public const int legendary_heirloom = 2821;
public const int celeb = 2822;
public const int egg_fan = 2826;
public const int license_slaver = 2828;
public const int license_stolen = 2824;
public const int milk_fan = 2825;
public const int breed_season = 2827;
public const int egg_fan = 2826;
public const int license_slaver = 2828;
public const int breed_season = 2827;
public const int store_ripoff = 2816;
public static readonly int[] IDS = new int[51]
{
2817, 2818, 2819, 2820, 2821, 2822, 2826, 2824, 2825, 2827,
2828, 2816, 2823, 2815, 2702, 2813, 2514, 2513, 2505, 2814,
2821, 2817, 2818, 2819, 2820, 2822, 2828, 2824, 2825, 2826,
2827, 2816, 2823, 2815, 2702, 2813, 2514, 2513, 2505, 2814,
2500, 2501, 2512, 2502, 2503, 2511, 2510, 2509, 2508, 2507,
2506, 2515, 2516, 2504, 2701, 2706, 2707, 2705, 2700, 2709,
2710, 2711, 2708, 2715, 2800, 2810, 2811, 2812, 2704, 2703,TraitBed
return c_charaList.list.Count > 0;
}
public int CountHolders()
{
return owner.c_charaList?.Get().Count ?? 0;
}
public bool CanAssign(Chara c)
{
CharaList c_charaList = owner.c_charaList;TraitShackle
public class TraitShackle : Trait
public override bool CanBeHeld => !IsRestraining();
public override bool CanBeDisassembled => !IsRestraining();
public override string LangUse => "ActRestrain";
public virtual bool AllowTraining => true;Zone
public Chara SpawnMob(Point pos = null, SpawnSetting setting = null)
{
switch (chara.id)
{
case "unicorn":
if (EClass.pc.HasElement(1216))
{
chara.SetHostility(Hostility.Enemy);
}
break;
case "santa":
case "silverwolf":
case "twintail":