EA 23.321 Nightly Patch 1 โ
June 24, 2026
22 files modified.
Important Changes โ
None.
ABILITY โ
public class ABILITY
{
public const int ActMoneyThrow = 5057;
public const int ActMoneyDump = 5058;
public const int ActPray = 6050;
public const int ActDreamBug = 6020;
public const int AI_PlayMusic = 6001;
public const int ActMoneyDump = 5058;
public const int ActMoneyThrow = 5057;
public const int ActMoneySlap = 5056;
public const int TaskHarvest = 5053;
public const int ActBash = 5052;
public const int ActPray = 6050;
public const int ActEscape = 6400;
public const int ActSuicide = 6410;
public const int ActDuplicate = 6420;
public const int ActRush = 6450;
public const int ActGazeMutation = 6622;
public const int ActGazeInsane = 6621;
public const int ActGazeDim = 6620;
public const int ActWeaken = 6610;
public const int ActSlime = 6608;
public const int ActBash = 5052;
public const int ActZap = 5051;
public const int ActSlime = 6608;
public const int ActBurnMana = 6606;
public const int ActCrySad = 6605;
public const int ActCryRage = 6604;
public const int ActCrabBreathe = 6500;
public const int ActRush = 6450;
public const int ActCrySad = 6605;
public const int ActBurnMana = 6606;
public const int ActGazeMutation = 6622;
public const int ActZap = 5051;
public const int AI_Sleep = 5050;
public const int ActItem = 5048;
public const int AI_OpenLock = 5049;
public const int Sleep = 5004;
public const int TaskDig = 5010;
public const int TaskCut = 5011;
public const int Ranged = 5003;
public const int AI_Goto = 5012;
public const int TaskCut = 5011;
public const int ActAttack = 5013;
public const int TaskPick = 5018;
public const int Ranged = 5003;
public const int TaskReadBoard = 5019;
public const int Melee = 5002;
public const int AI_Goto = 5012;
public const int ActMelee = 5001;
public const int ActGazeMana = 6623;
public const int Melee = 5002;
public const int ActWait = 5000;
public const int ActItem = 5048;
public const int ActPick = 5047;
public const int ActInstall = 5046;
public const int ActKick = 5042;
public const int AI_Read = 5041;
public const int ActMelee = 5001;
public const int AI_OpenLock = 5049;
public const int AI_Read = 5041;
public const int ActRanged = 5040;
public const int AI_Fish = 5039;
public const int ActThrow = 5038;
public const int ActCancelTask = 5033;
public const int AI_Equip = 5032;
public const int AI_Fish = 5039;
public const int ActRanged = 5040;
public const int ActGazeMana = 6623;
public const int ActDrainBlood = 6626;
public const int ActBloodsuck = 6607;
public const int ActCatHuffing = 6627;
public const int ActKiss = 6628;
public const int breathe_Magic = 50211;
public const int breathe_Holy = 50209;
public const int ActDrainBlood = 6626;
public const int ActCatHuffing = 6627;
public const int breathe_Sound = 50207;
public const int breathe_Impact = 50215;
public const int AI_Equip = 5032;
public const int AI_Deconstruct = 5031;
public const int AI_ReleaseHeld = 5030;
public const int GoalSleep = 5027;
public const int AI_Haul = 5026;
public const int breathe_Cut = 50214;
public const int AI_Grab = 5025;
public const int AI_Haul = 5026;
public const int AI_Eat = 5024;
public const int TaskGoOut = 5023;
public const int TaskFarm = 5020;
public const int TaskReadBoard = 5019;
public const int breathe_Void = 50216;
public const int AI_Eat = 5024;
public const int AI_Grab = 5025;
public const int SpTransmuteBat = 8793;
public const int ActHeadpat = 6904;
public const int ActKiss = 6628;
public const int ActDeepKiss = 6629;
public const int ActInsult = 6630;
public const int ActScream = 6631;
public const int ActFuse = 6632;
public const int ActSteal = 6640;
public const int ActStealFood = 6641;
public const int ActDeathSentense = 6802;
public static readonly int[] IDS = new int[146]
public static readonly int[] IDS = new int[147]
{
5057, 6020, 6019, 6018, 6015, 6013, 6012, 6011, 6003, 6001,
5058, 5056, 5055, 5054, 5053, 5052, 6050, 6400, 6410, 6420,
6621, 6620, 6613, 6612, 6611, 6610, 6608, 5051, 6606, 6604,
6603, 6602, 6601, 6600, 6500, 6450, 6605, 6622, 5050, 5048,
5004, 5005, 5006, 5007, 5008, 5009, 5010, 5011, 5012, 5013,
5014, 5015, 5016, 5017, 5018, 5003, 5002, 5001, 5000, 5047,
5046, 5045, 5044, 5043, 5042, 5041, 5049, 5040, 5038, 5037,
5036, 5035, 5034, 5033, 5032, 5039, 6623, 6607, 6627, 50211,
50210, 50209, 6626, 50207, 50206, 50212, 50205, 50203, 50202, 50201,
50200, 8796, 8795, 50204, 8794, 50213, 50215, 5031, 5030, 5029,
5028, 5027, 5026, 50214, 5025, 5023, 5022, 5021, 5020, 5019,
50216, 5024, 8793, 50208, 6904, 6628, 6629, 6630, 6631, 6640,
6641, 6642, 6650, 6660, 6661, 7000, 6662, 6664, 6665, 6666,
6663, 6800, 6903, 6902, 6901, 6900, 6753, 6752, 6751, 6750,
6667, 6701, 6720, 6801, 6700, 6802
5058, 6050, 6020, 6019, 6018, 6015, 6013, 6012, 6011, 6003,
6001, 5057, 5056, 5055, 5054, 5053, 6400, 6410, 6420, 6450,
6622, 6621, 6620, 6613, 6612, 6611, 6610, 5052, 6608, 6605,
6604, 6603, 6602, 6601, 6600, 6500, 6606, 5051, 5050, 5049,
5004, 5005, 5006, 5007, 5008, 5009, 5010, 5003, 5011, 5013,
5014, 5015, 5016, 5017, 5018, 5019, 5012, 6623, 5002, 5000,
5048, 5047, 5046, 5045, 5044, 5043, 5042, 5001, 5041, 5039,
5038, 5037, 5036, 5035, 5034, 5033, 5040, 6626, 6607, 6628,
50211, 50210, 50209, 6627, 50207, 50206, 50212, 50205, 50203, 50202,
50201, 50200, 8796, 8795, 50204, 8794, 50213, 50215, 5032, 5031,
5030, 5029, 5028, 5027, 50214, 5026, 5024, 5023, 5022, 5021,
5020, 50216, 5025, 8793, 50208, 6904, 6629, 6630, 6631, 6632,
6640, 6641, 6642, 6650, 6660, 6661, 7000, 6662, 6664, 6665,
6666, 6663, 6800, 6903, 6902, 6901, 6900, 6753, 6752, 6751,
6750, 6667, 6701, 6720, 6801, 6700, 6802
};
}
public class Ability : ActAI_Fuck โ
public override IEnumerable<Status> Run()
if (this.variation == Variation.Slime)
{
target.AddCondition<ConSupress>(200, force: true);
if (!owner.IsPC)
{
int num2 = EClass.rndHalf(target.MaxHP / (target.IsPowerful ? 100 : 10)) + 1;
owner.HealHP(num2);
target.DamageHP(num2, AttackSource.Condition, owner);
}
}
else
{ {
if (c.interest >= 0)
{
int num2 = 100;
int num3 = 100;
if (!c.IsAnimal)
{
num2 += 50;
num3 += 50;
}
if (c.IsHuman)
{
num2 += 50;
num3 += 50;
}
if (c.IsInCombat)
{
num2 += 100;
num3 += 100;
}
if (c == cc)
{
num2 = 50;
num3 = 50;
}
else if (c.affinity.CurrentStage < Affinity.Stage.Respected && EClass.rnd((c.IsPCFaction ? 30 : 10) * 100 / num2) == 0)
else if (c.affinity.CurrentStage < Affinity.Stage.Respected && EClass.rnd((c.IsPCFaction ? 30 : 10) * 100 / num3) == 0)
{
tc.AddCondition<ConFear>(60);
}
c.interest -= (c.IsPCFaction ? 20 : (2 * num2 / 100));
c.interest -= (c.IsPCFaction ? 20 : (2 * num3 / 100));
if (i % 5 == 0)
{
int num3 = 0;
int num4 = cc.CHA / 2 + cc.Evalue(237) - c.CHA * 2;
if (EClass.rnd(cc.CHA / 2 + cc.Evalue(237)) > EClass.rnd(c.CHA * num2 / 100))
int num4 = 0;
int num5 = cc.CHA / 2 + cc.Evalue(237) - c.CHA * 2;
if (EClass.rnd(cc.CHA / 2 + cc.Evalue(237)) > EClass.rnd(c.CHA * num3 / 100))
{
num3 = 5 + Mathf.Clamp(num4 / 20, 0, 20);
num4 = 5 + Mathf.Clamp(num5 / 20, 0, 20);
}
else
{
num3 = -5 + ((!tc.IsPCFaction) ? Mathf.Clamp(num4 / 10, -30, 0) : 0);
num4 = -5 + ((!tc.IsPCFaction) ? Mathf.Clamp(num5 / 10, -30, 0) : 0);
fails++;
}
int num5 = 20;
int num6 = 20;
if (c.IsPCFactionOrMinion && c.affinity.CurrentStage >= Affinity.Stage.Love)
{
num3 = ((EClass.rnd(3) == 0) ? 4 : 0);
num5 = 10;
num4 = ((EClass.rnd(3) == 0) ? 4 : 0);
num6 = 10;
}
totalAffinity += num3;
c.ModAffinity(EClass.pc, num3, show: true, showOnlyEmo: true);
cc.elements.ModExp(237, num5);
totalAffinity += num4;
c.ModAffinity(EClass.pc, num4, show: true, showOnlyEmo: true);
cc.elements.ModExp(237, num6);
if (EClass.rnd(4) == 0)
{
cc.stamina.Mod(-1);AI_Idle โ
public override IEnumerable<Status> Run()
}
break;
}
case "marshmallow_monster":
if (owner.TryFuse())
{
yield return Success();
}
break;
}
}
if (owner.IsMinion && owner.master != null && owner.master.id == "keeper_garden" && !(owner.master.ai is GoalCombat))ActEffect โ
void AddCon<T>(int rate, int power) where T : Condition
case EffectId.Duplicate:
CC.TryDuplicate();
break;
case EffectId.Fuse:
CC.TryFuse(100);
break;
case EffectId.Escape:
if (CC.IsPCFaction || (EClass._zone.Boss == CC && EClass.rnd(30) != 0))
{void AddCon<T>(int rate, int power) where T : Condition
{
CC.PlaySound("clean_floor");
Msg.Say("exterminate");
List<Chara> list3 = EClass._map.charas.Where((Chara c) => (c.isCopy || c.isHatchling || c.id == "cocoon" || c.id == "cocoon_alien") && !c.IsPCFactionOrMinion).ToList();
if (list3.Count == 0)
List<Chara> list2 = EClass._map.charas.Where((Chara c) => (c.isCopy || c.isHatchling || c.id == "cocoon" || c.id == "cocoon_alien") && !c.IsPCFactionOrMinion).ToList();
if (list2.Count == 0)
{
Msg.SayNothingHappen();
return;
}
foreach (Chara item in list3)
foreach (Chara item in list2)
{
item.Say("split_fail", item);
item.PlayEffect("vanish");void AddCon<T>(int rate, int power) where T : Condition
case EffectId.LittleSisterMigration:
case EffectId.SilverCatMigration:
{
bool flag3 = id == EffectId.SilverCatMigration;
if (!EClass.game.IsSurvival && ((flag3 && EClass._zone.id != "startVillage2") || (!flag3 && !(EClass._zone is Zone_LittleGarden))))
bool flag7 = id == EffectId.SilverCatMigration;
if (!EClass.game.IsSurvival && ((flag7 && EClass._zone.id != "startVillage2") || (!flag7 && !(EClass._zone is Zone_LittleGarden))))
{
Msg.SayNothingHappen();
return;
}
List<Chara> list2 = new List<Chara>();
bool flag4 = false;
List<Chara> list3 = new List<Chara>();
bool flag8 = false;
foreach (Chara chara3 in EClass._map.charas)
{
if (!chara3.IsPCFactionOrMinion && chara3.id == (flag3 ? "cat_silver" : "littleOne"))
if (!chara3.IsPCFactionOrMinion && chara3.id == (flag7 ? "cat_silver" : "littleOne"))
{
if (flag4)
if (flag8)
{
flag4 = false;
flag8 = false;
continue;
}
list2.Add(chara3);
flag4 = true;
list3.Add(chara3);
flag8 = true;
}
}
if (list2.Count == 0)
if (list3.Count == 0)
{
Msg.SayNothingHappen();
return;
}
EClass.pc.PlaySound("chime_angel");
foreach (Chara item2 in list2)
foreach (Chara item2 in list3)
{
item2.PlayEffect("revive");
item2.Destroy();
}
Msg.Say(flag3 ? "cat_migration" : "little_migration", list2.Count.ToString() ?? "");
EClass._zone.ModInfluence(list2.Count);
if (flag3)
Msg.Say(flag7 ? "cat_migration" : "little_migration", list3.Count.ToString() ?? "");
EClass._zone.ModInfluence(list3.Count);
if (flag7)
{
EClass.player.stats.catDepart += list2.Count;
EClass.player.stats.catDepart += list3.Count;
break;
}
EClass.player.stats.sistersDepart += list2.Count;
EClass.player.stats.sistersDepart += list3.Count;
Steam.GetAchievement(ID_Achievement.LITTLEMIG);
break;
}void AddCon<T>(int rate, int power) where T : Condition
TC.PlaySound("curse3");
TC.PlayEffect("curse");
TC.Say("forgetItems", TC);
int num4 = power / 50 + 1 + EClass.rnd(3);
int num = power / 50 + 1 + EClass.rnd(3);
List<Thing> source = TC.things.List((Thing t) => t.c_IDTState == 0);
for (int i = 0; i < num4; i++)
for (int i = 0; i < num; i++)
{
source.RandomItem().c_IDTState = 5;
}void AddCon<T>(int rate, int power) where T : Condition
case EffectId.EnchantArmorGreat:
{
bool armor = id == EffectId.EnchantArmor || id == EffectId.EnchantArmorGreat;
bool flag7 = id == EffectId.EnchantWeaponGreat || id == EffectId.EnchantArmorGreat;
bool flag2 = id == EffectId.EnchantWeaponGreat || id == EffectId.EnchantArmorGreat;
if (!tc.isThing)
{
LayerDragGrid.CreateEnchant(CC, armor, flag7, state);
LayerDragGrid.CreateEnchant(CC, armor, flag2, state);
return;
}
cc.PlaySound("identify");void AddCon<T>(int rate, int power) where T : Condition
tc.ModEncLv(-1);
break;
}
int num5 = (flag7 ? 4 : 2) + (blessed ? 1 : 0);
if (tc.encLV >= num5)
int num2 = (flag2 ? 4 : 2) + (blessed ? 1 : 0);
if (tc.encLV >= num2)
{
cc.Say("enc_resist", tc);
break;void AddCon<T>(int rate, int power) where T : Condition
case EffectId.Identify:
case EffectId.GreaterIdentify:
{
bool flag6 = id == EffectId.GreaterIdentify;
bool flag3 = id == EffectId.GreaterIdentify;
if (flag)
{
Redirect(EffectId.ForgetItems, flag6 ? BlessedState.Cursed : BlessedState.Normal, default(ActRef));
Redirect(EffectId.ForgetItems, flag3 ? BlessedState.Cursed : BlessedState.Normal, default(ActRef));
break;
}
if (!tc.isThing)
{
int count = ((!blessed) ? 1 : (flag6 ? (2 + EClass.rnd(2)) : (3 + EClass.rnd(3))));
LayerDragGrid.CreateIdentify(CC, flag6, state, 0, count);
int count = ((!blessed) ? 1 : (flag3 ? (2 + EClass.rnd(2)) : (3 + EClass.rnd(3))));
LayerDragGrid.CreateIdentify(CC, flag3, state, 0, count);
return;
}
cc.PlaySound("identify");
cc.PlayEffect("identify");
tc.Thing.Identify(cc.IsPCParty, (!flag6) ? IDTSource.Identify : IDTSource.SuperiorIdentify);
tc.Thing.Identify(cc.IsPCParty, (!flag3) ? IDTSource.Identify : IDTSource.SuperiorIdentify);
break;
}
case EffectId.Uncurse:void AddCon<T>(int rate, int power) where T : Condition
LayerDragGrid.CreateUncurse(CC, state);
return;
}
Thing thing2 = tc.Thing;
if (thing2.blessedState == BlessedState.Cursed)
Thing thing4 = tc.Thing;
if (thing4.blessedState == BlessedState.Cursed)
{
thing2.SetBlessedState(BlessedState.Normal);
thing4.SetBlessedState(BlessedState.Normal);
}
else if (thing2.blessedState == BlessedState.Doomed)
else if (thing4.blessedState == BlessedState.Doomed)
{
thing2.SetBlessedState(BlessedState.Normal);
thing4.SetBlessedState(BlessedState.Normal);
}
thing2.GetRootCard()?.TryStack(thing2);
LayerInventory.SetDirty(thing2);
thing4.GetRootCard()?.TryStack(thing4);
LayerInventory.SetDirty(thing4);
break;
}
case EffectId.Lighten:void AddCon<T>(int rate, int power) where T : Condition
}
cc.PlaySound("offering");
cc.PlayEffect("buff");
int num3 = (tc.isWeightChanged ? tc.c_weight : tc.Thing.source.weight);
int num4 = (tc.isWeightChanged ? tc.c_weight : tc.Thing.source.weight);
tc.isWeightChanged = true;
Element orCreateElement = tc.elements.GetOrCreateElement(64);
Element orCreateElement2 = tc.elements.GetOrCreateElement(65);
Element orCreateElement3 = tc.elements.GetOrCreateElement(67);
Element orCreateElement4 = tc.elements.GetOrCreateElement(66);
bool flag5 = tc.IsEquipmentOrRangedOrAmmo || tc.IsThrownWeapon;
bool flag4 = tc.IsEquipmentOrRangedOrAmmo || tc.IsThrownWeapon;
if (flag)
{
num3 = (int)(0.01f * (float)num3 * (float)power * 0.75f + 500f);
if (num3 < 0 || num3 > 10000000)
num4 = (int)(0.01f * (float)num4 * (float)power * 0.75f + 500f);
if (num4 < 0 || num4 > 10000000)
{
num3 = 10000000;
flag5 = false;
num4 = 10000000;
flag4 = false;
}
if (flag5)
if (flag4)
{
if (tc.IsWeapon || tc.IsThrownWeapon || tc.IsAmmo)
{void AddCon<T>(int rate, int power) where T : Condition
}
else
{
num3 = num3 * (100 - power / 10) / 100;
num4 = num4 * (100 - power / 10) / 100;
if (blessed)
{
power /= 4;
}
if (flag5)
if (flag4)
{
if (tc.IsWeapon || tc.IsThrownWeapon || tc.IsAmmo)
{void AddCon<T>(int rate, int power) where T : Condition
}
cc.Say("lighten", tc);
}
tc.c_weight = num3;
tc.c_weight = num4;
tc.SetDirtyWeight();
if (tc.parent == null)
{void AddCon<T>(int rate, int power) where T : Condition
cc.PlayEffect("identify");
cc.Say("reconstruct", tc);
EClass.game.cards.uidNext += EClass.rnd(30);
int num6 = Mathf.Max(tc.genLv, tc.LV, EClass.player.stats.deepest);
int num3 = Mathf.Max(tc.genLv, tc.LV, EClass.player.stats.deepest);
CardBlueprint.Set(new CardBlueprint
{
blesstedState = state
});
Thing thing4 = ThingGen.Create(tc.id, -1, (int)((long)num6 * (long)power / 400));
thing4.genLv = num6;
thing4.idSkin = tc.idSkin;
Thing thing = ThingGen.Create(tc.id, -1, (int)((long)num3 * (long)power / 400));
thing.genLv = num3;
thing.idSkin = tc.idSkin;
if (tc.c_uidAttune != 0)
{
thing4.c_uidAttune = tc.c_uidAttune;
if (thing4.id == "amulet_engagement" || thing4.id == "ring_engagement")
thing.c_uidAttune = tc.c_uidAttune;
if (thing.id == "amulet_engagement" || thing.id == "ring_engagement")
{
if (tc.c_uidAttune != EClass.pc.uid)
{
thing4.elements.ModBase(484, 3);
thing.elements.ModBase(484, 3);
}
if (thing4.rarity < Rarity.Mythical)
if (thing.rarity < Rarity.Mythical)
{
thing4.rarity = Rarity.Mythical;
thing.rarity = Rarity.Mythical;
}
}
}
tc.Destroy();
CC.Pick(thing4, msg: false);
CC.Pick(thing, msg: false);
if (!CC.IsPC)
{
CC.TryEquip(thing4);
CC.TryEquip(thing);
}
break;
}void AddCon<T>(int rate, int power) where T : Condition
if (row == null)
{
bool num7 = id == EffectId.ChangeMaterialGreater;
bool flag8 = id == EffectId.ChangeMaterialLesser;
bool flag6 = id == EffectId.ChangeMaterialLesser;
string text2 = tc.Thing.source.tierGroup;
Dictionary<string, SourceMaterial.TierList> tierMap = SourceMaterial.tierMap;
int num8 = 1;void AddCon<T>(int rate, int power) where T : Condition
{
num8++;
}
if (flag8)
if (flag6)
{
num8 -= 2;
}void AddCon<T>(int rate, int power) where T : Condition
string name = tc.Name;
cc.PlaySound("offering");
cc.PlayEffect("buff");
bool flag2 = tc.rarity == Rarity.Legendary;
bool flag5 = tc.rarity == Rarity.Legendary;
CardBlueprint.Set(new CardBlueprint
{
rarity = (flag2 ? Rarity.Mythical : Rarity.Legendary),
rarity = (flag5 ? Rarity.Mythical : Rarity.Legendary),
generation = CardBlueprint.Generation.GarokkHammer
});
Rand.SetBaseSeed(tc.uid + 1);
Rand.SetSeed(tc.uid + 2);
Thing thing = ThingGen.Create(tc.id, tc.idMaterial, tc.genLv);
Thing thing2 = ThingGen.Create(tc.id, tc.idMaterial, tc.genLv);
Rand.SetSeed();
Rand.SetBaseSeed();
thing.SetEncLv(tc.encLV);
thing.SetBlessedState(tc.blessedState);
int num = 0;
foreach (Element item4 in thing.elements.dict.Values.ToList().Shuffle())
thing2.SetEncLv(tc.encLV);
thing2.SetBlessedState(tc.blessedState);
int num5 = 0;
foreach (Element item4 in thing2.elements.dict.Values.ToList().Shuffle())
{
int num2 = (tc.elements.Has(item4.id) ? tc.elements.GetElement(item4.id).vBase : 0);
if (num2 != 0 && (Mathf.Abs(item4.vBase) <= Mathf.Abs(num2) || !MathEx.IsSameSign(item4.vBase, num2)))
int num6 = (tc.elements.Has(item4.id) ? tc.elements.GetElement(item4.id).vBase : 0);
if (num6 != 0 && (Mathf.Abs(item4.vBase) <= Mathf.Abs(num6) || !MathEx.IsSameSign(item4.vBase, num6)))
{
continue;
}void AddCon<T>(int rate, int power) where T : Condition
{
if ((uint)(id2 - 64) > 3u)
{
num++;
num5++;
}
tc.elements.SetBase(item4.id, item4.vBase);
Debug.Log(item4.Name + "/" + item4.vBase);
if (flag2 && num >= 2)
if (flag5 && num5 >= 2)
{
break;
}
}
}
tc.isCrafted = false;
tc.rarity = (flag2 ? Rarity.Mythical : Rarity.Legendary);
tc.rarity = (flag5 ? Rarity.Mythical : Rarity.Legendary);
EClass.pc.Say("reconstruct", name);
break;
}ActSlime โ
public override bool CanPerform()
public override bool ValidatePerform(Chara _cc, Card _tc, Point _tp)
{
if (_cc.id == "marshmallow_king")
{
return true;
}
if (Act.CC.hunger.GetPhase() < 3 && !EClass.debug.godFood)
{
Msg.Say("not_hungry");ActWater โ
public override bool Perform()
num = ((num <= 0) ? 1 : Mathf.Min(waterCan.owner.c_charges, 2 + num / 10));
if (num > 1)
{
List<Point> list = EClass._map.ListPointsInSquare(Act.TP, num - 1);
List<Point> list = EClass._map.ListPointsInSquare(Act.TP, num - 1, mustBeWalkable: false, los: false);
list.Sort((Point a, Point b) => a.Distance(Act.TP) - b.Distance(Act.TP));
foreach (Point item in list)
{CTAG โ
shield,
humanSpeak,
throwBall,
alwaysDropCorpse
alwaysDropCorpse,
allowDevour
}Card โ
public bool IsEquipmentOrRangedOrAmmo
public bool IsCursed => blessedState <= BlessedState.Cursed;
public bool IsSlimeEvolvable
{
get
{
if (HasElement(1274))
{
if (!IsPC)
{
return HasTag(CTAG.allowDevour);
}
return true;
}
return false;
}
}
public bool IsRestrainedResident
{
getpublic void SetBool(string id, bool enable)
public int GetInt(string id, int? defaultInt = null)
{
int @int = GetInt(id.GetHashCode(), defaultInt);
if (!IsPC)
if (this != EClass.game?.player?.chara)
{
return @int;
}public int GetInt(string id, int? defaultInt = null)
public void AddInt(string id, int value)
{
AddInt(id.GetHashCode(), value);
if (IsPC)
if (this == EClass.game?.player?.chara)
{
EClass.player.dialogFlags[id] = GetInt(id.GetHashCode());
}public void AddInt(string id, int value)
public void SetInt(string id, int value = 0)
{
SetInt(id.GetHashCode(), value);
if (IsPC)
if (this == EClass.game?.player?.chara)
{
EClass.player.dialogFlags[id] = value;
} {
Chara.SetFeat(1415, Evalue(1415) + 1, msg: true);
}
if (IsPC && HasElement(1274) && Evalue(1274) < 8 && LV >= Evalue(1274) * 5)
if (IsSlimeEvolvable && Evalue(1274) < 8 && LV >= Evalue(1274) * 5)
{
Chara.SetFeat(1274, Evalue(1274) + 1, msg: true);
}public void SpawnLoot(Card origin)
{
num3 += (int)Mathf.Min(Mathf.Sqrt(EClass.pc.Evalue(290)), 20f);
}
if (EClass.rnd((Act.CurrentAct is ActMeleeBladeStorm || (origin != null && (origin.HasElement(1556) || origin.HasCondition<ConTransmuteCat>()))) ? 2 : 100) == 0)
{
text2 = "dattamono";
}
if (num2 && num3 > EClass.rnd(100))
{
text2 = "meat_marble";
}
if (EClass.rnd((Act.CurrentAct is ActMeleeBladeStorm || (origin != null && (origin.HasElement(1556) || origin.HasCondition<ConTransmuteCat>()))) ? 2 : 100) == 0 || id == "marshmallow_king")
{
text2 = "dattamono";
}
Thing thing3 = ThingGen.Create(text2).SetNum(num);
if (thing3.source._origin == "meat")
{Chara โ
public FactionBranch homeBranch => homeZone?.branch;
public int MaxGeneSlot => race.geneCap - (HasElement(1237) ? 2 : 0) + Evalue(1242) + Evalue(1273) + ((IsPC && HasElement(1274)) ? (Evalue(1274) - 7) : 0);
public int MaxGeneSlot => race.geneCap - (HasElement(1237) ? 2 : 0) + Evalue(1242) + Evalue(1273) + (base.IsSlimeEvolvable ? (Evalue(1274) - 7) : 0);
public int GeneCostMTP
{public void Refresh(bool calledRecursive = false)
}
}
public bool TryFuse(int chance = 10)
{
if (chance < EClass.rnd(100))
{
return false;
}
List<Chara> list = ListFussableCharas(3);
if (list.Count < 8)
{
return false;
}
Say("fuse", this);
Chara chara = EClass._zone.SpawnMob("marshmallow_king", pos);
foreach (Chara item in list)
{
item.Talk("fusion");
Effect.Get<EffectIRenderer>("throw_fuse").Play(item, item, item.pos, pos);
item.Destroy();
}
Destroy();
chara.PlayAnime(AnimeID.Shiver);
return true;
}
public bool IsFusable(Chara c)
{
if (c == this)
{
return false;
}
if (c.id != id)
{
return false;
}
if (c.IsPCFactionOrMinion || base.IsPCFactionOrMinion)
{
return false;
}
if (c.c_bossType != 0 || base.c_bossType != 0)
{
return false;
}
if (!EClass.debug.enable && (c.affinity.CanSleepBeside() || affinity.CanSleepBeside()))
{
return false;
}
return true;
}
public List<Chara> ListFussableCharas(int radius = 2)
{
return pos.ListCharasInRadius(this, radius, (Chara c) => IsFusable(c));
}
public bool CanDuplicate(DuplicateCondition con = DuplicateCondition.Default)
{
if (EClass._zone.IsRegion)public Chara TryDuplicate(DuplicateCondition con = DuplicateCondition.Default, P
}
Chara chara = Duplicate();
EClass._zone.AddCard(chara, dest);
chara.SetHostility(hostility);
Say("split", this);
return chara;
}DOMAIN โ
{
public const int domLuck = 810;
public const int domFaith = 802;
public const int domOblivion = 813;
public const int domEarth = 812;
public const int domFaith = 802;
public const int domMiracle = 803;
public const int domArcane = 804;
public static readonly int[] IDS = new int[16]
{
810, 802, 813, 812, 803, 804, 814, 805, 811, 806,
810, 813, 812, 802, 803, 804, 814, 805, 811, 806,
807, 808, 809, 815, 800, 801
};
}ENC โ
public const int mod_feint = 623;
public const int sustain_DEX = 442;
public const int sustain_PER = 443;
public const int mod_flurry = 621;
public const int encHit = 414;
public const int mod_rapid = 602;
public const int creativeChef = 487;
public const int sustain_DEX = 442;
public const int deathagony = 488;
public const int music_drunk = 489;
public const int farsee = 490;
public const int negateGravity = 491;
public const int shiawaseStep = 492;
public const int mod_ammo = 600;
public const int safetyMeasure = 486;
public const int creativeChef = 487;
public const int mod_reload = 601;
public const int mod_ammo_knockback = 603;
public const int nonLethal = 485;
public const int safetyMeasure = 486;
public const int farsee = 490;
public const int mod_rapid = 602;
public const int optimizeMana = 483;
public const int slot_rune = 484;
public const int sustain_PER = 443;
public const int nonLethal = 485;
public const int sustain_LER = 444;
public const int sustain_CHA = 447;
public const int slot_rune = 484;
public const int bane_dragon = 460;
public const int bane_undead = 461;
public const int bane_fairy = 462;
public const int sustain_figure = 450;
public const int bane_animal = 463;
public const int bane_man = 464;
public const int sustain_figure = 450;
public const int bane_machine = 465;
public const int revealFaith = 481;
public const int bane_animal = 463;
public const int force_weapon = 482;
public const int bane_man = 464;
public const int optimizeMana = 483;
public static readonly int[] IDS = new int[111]
{
656, 655, 654, 653, 651, 641, 650, 652, 660, 640,
661, 851, 663, 664, 665, 666, 667, 850, 624, 865,
864, 852, 662, 623, 442, 621, 419, 420, 421, 422,
864, 852, 662, 623, 443, 621, 419, 420, 421, 422,
423, 424, 425, 426, 418, 427, 429, 430, 431, 432,
435, 436, 437, 438, 428, 439, 417, 415, 380, 381,
382, 383, 400, 401, 402, 403, 416, 404, 406, 407,
408, 409, 410, 411, 412, 622, 405, 440, 414, 602,
487, 488, 489, 491, 492, 493, 494, 600, 486, 601,
604, 605, 606, 607, 608, 609, 620, 441, 603, 485,
490, 483, 443, 444, 445, 446, 447, 484, 460, 461,
462, 450, 464, 465, 466, 467, 468, 480, 481, 463,
482
408, 409, 410, 411, 412, 622, 405, 440, 414, 442,
488, 489, 490, 491, 492, 493, 494, 600, 487, 601,
604, 605, 606, 607, 608, 609, 620, 441, 603, 486,
602, 484, 485, 444, 445, 446, 447, 460, 461, 462,
463, 450, 465, 466, 467, 468, 480, 481, 482, 464,
483
};
}EffectId โ
ChangeAlias = 316,
ChangeBiography = 317,
Degenerate = 318,
MassFear = 319
MassFear = 319,
Fuse = 320
}FACTION โ
public class FACTION
{
public const int bfGeyser = 3701;
public const int bfPlain = 3600;
public const int bfRuin = 3702;
public const int bfForest = 3601;
public const int bfHill = 3603;
public const int bfFertile = 3700;
public const int bfBeach = 3604;
public const int bfSea = 3605;
public const int bfGeyser = 3701;
public const int bfUndersea = 3606;
public const int bfCave = 3500;
public const int bfFertile = 3700;
public const int bfBeach = 3604;
public const int bfPlain = 3600;
public const int fRation = 2207;
public const int bfSea = 3605;
public const int fAdmin = 2115;
public const int bfCave = 3500;
public const int fTaxEvasion = 2119;
public const int fAttraction = 2206;
public const int fFood = 2204;
public const int fSoil = 2200;
public const int fHeirloom = 2120;
public const int fEducation = 2116;
public const int fTaxEvasion = 2119;
public const int fHeirloom = 2120;
public const int fLuck = 2118;
public const int fLoyal = 2117;
public const int fEducation = 2116;
public const int bfRuin = 3702;
public const int bfTranquil = 3703;
public const int fAttraction = 2206;
public const int fRation = 2207;
public const int bfTranquil = 3703;
public const int bfVolcano = 3704;
public const int actBuildTerrain = 4002;
public const int bfHunt = 3705;
public const int bfFish = 3706;
public const int fAdmin = 2115;
public const int actBuildInspect = 4006;
public const int bfMonster = 3707;
public const int bfFish = 3706;
public const int bfVolcano = 3704;
public const int bfHunt = 3705;
public const int fConstruction = 2003;
public static readonly int[] IDS = new int[53]
{
3701, 3600, 3601, 3602, 3603, 3700, 3605, 3606, 3500, 3604,
2207, 2115, 2204, 2203, 2202, 2201, 2200, 2120, 2119, 2118,
2117, 2116, 3702, 2206, 3703, 4002, 3705, 4006, 4005, 4004,
4003, 4001, 4000, 3900, 3805, 3804, 3803, 3802, 3801, 3800,
3784, 3783, 3782, 3781, 3780, 3710, 3709, 3708, 3707, 3706,
3704, 2003, 2205
3702, 3601, 3602, 3603, 3604, 3701, 3606, 3700, 3600, 3605,
3500, 2119, 2206, 2204, 2203, 2202, 2201, 2200, 2116, 2120,
2118, 2117, 3703, 2207, 3704, 4002, 3706, 2115, 4006, 4005,
4004, 4003, 4001, 4000, 3900, 3805, 3804, 3803, 3802, 3801,
3800, 3784, 3783, 3782, 3781, 3780, 3710, 3709, 3708, 3707,
3705, 2003, 2205
};
}
public class Faction : EClassFEAT โ
public class FEAT
{
public const int featLightEater = 1235;
public const int featNorland = 1236;
public const int featSorter = 1643;
public const int featFisher = 1659;
public const int featMana = 1611;
public const int featLooter = 1660;
public const int featDismantler = 1661;
public const int featGoldenFinger = 1662;
public const int featDwarf = 1215;
public const int featManaPrecision = 1214;
public const int featElea = 1213;
public const int featFoxLearn = 1208;
public const int featDwarf = 1215;
public const int featFoxBless = 1207;
public const int featMelilithCurse = 1206;
public const int featCannibalism = 1205;
public const int featFairyWeak = 1204;
public const int featSlowFood = 1200;
public const int featHeavyEater = 1234;
public const int featMelilithCurse = 1206;
public const int featLightEater = 1235;
public const int featSuccubus = 1216;
public const int featMana = 1611;
public const int featGolem = 1217;
public const int featMetal = 1218;
public const int featElderCrab = 1219;
public const int featFastEater = 1663;
public const int featComat = 1750;
public const int featHeavyEater = 1234;
public const int featCosmicHorror = 1233;
public const int featBaby = 1232;
public const int featFate = 1220;
public const int featElderCrab = 1219;
public const int featDismantler = 1661;
public const int featMetal = 1218;
public const int featLife = 1610;
public const int featAdam = 1230;
public const int featFarmer = 1403;
public const int featPaladin2 = 1408;
public const int featArcher = 1404;
public const int featBoost = 1409;
public const int featElite = 1424;
public const int featMimic = 1425;
public const int featPaladin2 = 1408;
public const int featPaladin = 1407;
public const int featTourist = 1406;
public const int featPianist = 1405;
public const int featArcher = 1404;
public const int featSadCreature = 1291;
public const int featGod_element1 = 1300;
public const int featGod_earth1 = 1305;
public const int featGod_wind1 = 1310;
public const int featNorland = 1236;
public const int featGod_machine1 = 1315;
public const int featRoran = 1237;
public const int featGod_healing1 = 1320;
public const int featGod_harvest1 = 1325;
public const int featMimic = 1425;
public const int featGod_luck1 = 1330;
public const int featGod_oblivion1 = 1340;
public const int featNeckHunter = 1426;
public const int featGod_harmony1 = 1335;
public const int featGod_trickery1 = 1345;
public const int featWizard = 1402;
public const int featBelovedOne = 1275;
public const int featGod_harmony1 = 1335;
public const int featFarmer = 1403;
public const int featNeckHunter = 1426;
public const int featHarem = 1276;
public const int featDisguise = 1427;
public const int featGod_oblivion1 = 1340;
public const int featMurderer = 1428;
public const int featSadCreature = 1291;
public const int featMassSummoner = 1240;
public const int featDisguise = 1427;
public const int featMeatCushion = 1241;
public const int featManyFace = 1429;
public const int featGeneSlot = 1242;
public const int featBadKarma = 1271;
public const int featDemon = 1239;
public const int featPeacemaker = 1272;
public const int featGoddess = 1290;
public const int featBloom = 1273;
public const int featElder = 1238;
public const int featMeatCushion = 1241;
public const int featHarem = 1276;
public const int featMurderer = 1428;
public const int featManyFace = 1429;
public const int featMassSummoner = 1240;
public const int featElder = 1238;
public const int featAstralBody = 1430;
public const int featSlimeEvolution = 1274;
public const int featBelovedOne = 1275;
public const int featBloom = 1273;
public const int featSlimeEvolution = 1274;
public const int featPeacemaker = 1272;
public const int featDemon = 1239;
public const int featRoran = 1237;
public const int featGoddess = 1290;
public static readonly int[] IDS = new int[153]
{
1235, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1642, 1650,
1236, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1642, 1650,
1652, 1653, 1654, 1655, 1656, 1657, 1658, 1651, 1641, 1640,
1636, 1612, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627,
1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1659, 1611,
1660, 1662, 1214, 1213, 1212, 1211, 1210, 1209, 1208, 1215,
1207, 1205, 1204, 1203, 1202, 1201, 1200, 1234, 1206, 1216,
1217, 1218, 1663, 1664, 1750, 1233, 1232, 1231, 1229, 1228,
1227, 1226, 1225, 1224, 1223, 1222, 1221, 1220, 1219, 1661,
1610, 1230, 1403, 1408, 1409, 1410, 1411, 1412, 1413, 1414,
1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1659, 1660,
1661, 1662, 1215, 1214, 1213, 1212, 1211, 1210, 1209, 1208,
1207, 1206, 1205, 1204, 1203, 1202, 1201, 1200, 1235, 1216,
1611, 1217, 1219, 1663, 1664, 1750, 1234, 1233, 1232, 1231,
1229, 1228, 1227, 1226, 1225, 1224, 1223, 1222, 1221, 1220,
1218, 1610, 1230, 1404, 1409, 1410, 1411, 1412, 1413, 1414,
1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424,
1407, 1406, 1405, 1404, 1291, 1300, 1305, 1310, 1236, 1315,
1320, 1325, 1425, 1330, 1340, 1345, 1350, 1355, 1400, 1401,
1402, 1275, 1335, 1426, 1427, 1428, 1240, 1241, 1242, 1243,
1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253,
1254, 1270, 1271, 1239, 1290, 1238, 1276, 1429, 1430, 1274,
1273, 1272, 1237
1425, 1408, 1407, 1406, 1405, 1300, 1305, 1310, 1315, 1237,
1320, 1325, 1330, 1426, 1335, 1345, 1350, 1355, 1400, 1401,
1402, 1403, 1276, 1340, 1291, 1427, 1429, 1242, 1243, 1244,
1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254,
1270, 1271, 1272, 1273, 1241, 1428, 1240, 1238, 1430, 1275,
1274, 1239, 1290
};
}
public class Feat : ElementFOOD โ
public class FOOD
{
public const int food_CHA = 700;
public const int food_cat = 701;
public const int food_human = 708;
public const int food_poison = 702;
public const int kirimi = 707;
public const int food_love = 703;
public const int loseWeight = 706;
public const int gainWeight = 705;
public const int loseWeight = 706;
public const int kirimi = 707;
public const int food_blood = 710;
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_blood = 710;
public const int food_cat = 701;
public const int justcooked = 757;
public const int food_god = 758;
public const int food_bug = 704;
public const int food_CHA = 700;
public const int creativeDish = 764;
public const int food_undead = 709;
public const int food_bug = 704;
public static readonly int[] IDS = new int[14]
{
700, 701, 702, 703, 705, 706, 707, 708, 709, 710,
757, 758, 704, 764
708, 707, 706, 705, 710, 703, 702, 701, 757, 758,
700, 764, 709, 704
};
}FoodEffect โ
public static void Proc(Chara c, Thing food, bool consume = true)
break;
}
}
if (!(food.trait is TraitGene) || !c.IsPC || !c.HasElement(1274))
if (!(food.trait is TraitGene) || !c.HasElement(1274))
{
return;
}GameLang โ
public static string ConvertDrama(string text, Chara c = null)
stringBuilder.Replace("#guild", Guild.CurrentDrama.Name);
stringBuilder.Replace("#race", EClass.pc.race.GetName());
stringBuilder.Replace("#pc_full", EClass.pc.NameBraced);
stringBuilder.Replace("#pc", EClass.pc.NameSimple);
stringBuilder.Replace("#aka", EClass.pc.Aka);
stringBuilder.Replace("#bigdaddy", "bigdaddy".lang());
stringBuilder.Replace("#festival", EClass._zone.IsFestival ? (EClass._zone.id + "_festival").lang() : "_festival".lang());MUTATION โ
public class MUTATION
{
public const int mutationSpeedN = 1519;
public const int mutationStrN = 1521;
public const int mutationStr = 1520;
public const int mutationCha = 1522;
public const int mutationSkin = 1510;
public const int etherNeck = 1555;
public const int etherEye = 1553;
public const int etherFeet = 1552;
public const int etherUgly = 1551;
public const int etherGravity = 1550;
public const int mutationHair = 1532;
public const int mutationBodyN = 1531;
public const int mutationBody = 1530;
public const int etherViolence = 1556;
public const int etherWing = 1554;
public const int mutationBodyN = 1531;
public const int mutationLightningN = 1529;
public const int mutationLightning = 1528;
public const int mutationColdN = 1527;
public const int mutationCold = 1526;
public const int mutationChaN = 1523;
public const int mutationCha = 1522;
public const int mutationStrN = 1521;
public const int mutationLightning = 1528;
public const int mutationBody = 1530;
public const int etherNeck = 1555;
public const int etherHead = 1557;
public const int etherFeet = 1552;
public const int etherWing = 1554;
public const int etherHead = 1557;
public const int etherAddict = 1559;
public const int mutationSkinN = 1511;
public const int mutationDexN = 1515;
public const int etherViolence = 1556;
public const int etherRain = 1558;
public const int mutationRegenN = 1517;
public const int mutationRegen = 1516;
public const int mutationStr = 1520;
public const int etherPoisonHand = 1565;
public const int etherManaBattery = 1564;
public const int etherProvoke = 1563;
public const int etherWeak = 1560;
public const int etherAddict = 1559;
public const int etherRain = 1558;
public const int etherPoisonHand = 1565;
public const int mutationSpeedN = 1519;
public static readonly int[] IDS = new int[40]
{
1519, 1520, 1510, 1553, 1551, 1550, 1533, 1532, 1531, 1530,
1554, 1529, 1527, 1526, 1525, 1524, 1523, 1522, 1521, 1528,
1555, 1552, 1557, 1511, 1512, 1513, 1514, 1515, 1556, 1517,
1518, 1516, 1564, 1563, 1562, 1561, 1560, 1559, 1558, 1565
1521, 1522, 1510, 1555, 1553, 1552, 1551, 1550, 1533, 1532,
1556, 1531, 1529, 1528, 1527, 1526, 1525, 1524, 1523, 1530,
1557, 1554, 1559, 1511, 1512, 1513, 1514, 1515, 1558, 1517,
1518, 1516, 1520, 1565, 1564, 1563, 1562, 1561, 1560, 1519
};
}
public class Mutation : FeatPOLICY โ
public const int legendary_heirloom = 2821;
public const int forcePanty = 2712;
public const int home_discount = 2800;
public const int license_furniture = 2819;
public const int incomeTransfer = 2711;
public const int livestock_priv = 2715;
public const int forcePanty = 2712;
public const int home_discount = 2800;
public const int livestock_priv = 2715;
public const int open_business = 2810;
public static readonly int[] IDS = new int[51]
{
2822, 2828, 2827, 2826, 2825, 2824, 2823, 2821, 2712, 2819,
2822, 2828, 2827, 2826, 2825, 2824, 2823, 2821, 2800, 2819,
2700, 2516, 2515, 2514, 2513, 2507, 2820, 2500, 2701, 2501,
2503, 2504, 2505, 2512, 2511, 2510, 2509, 2508, 2502, 2702,
2506, 2704, 2703, 2711, 2715, 2800, 2810, 2811, 2812, 2813,
2506, 2704, 2703, 2711, 2712, 2715, 2810, 2811, 2812, 2813,
2814, 2710, 2816, 2817, 2818, 2709, 2708, 2707, 2706, 2705,
2815
};ReligionLuck โ
public override string[] GetValidArtifacts()
return new string[1] { "luckydagger" };
}
public override int GetOfferingMtp(Thing t)
{
if (t.id == "taiyaki")
{
return 2;
}
return 0;
}
public override bool IsFaithElement(Element e)
{
return e.id != 426;TaskWater โ
public override IEnumerable<Status> Run()
num = ((num <= 0) ? 1 : Mathf.Min(waterCan.owner.c_charges, 2 + num / 10));
if (num > 1)
{
List<Point> list2 = EClass._map.ListPointsInSquare(p2, num - 1);
List<Point> list2 = EClass._map.ListPointsInSquare(p2, num - 1, mustBeWalkable: false, los: false);
list2.Sort((Point a, Point b) => a.Distance(p2) - b.Distance(p2));
foreach (Point item in list2)
{WindowChara โ
public void RefreshSkill(int idTab)
List("availableFeats_attribute", "attribute");
return;
}
if (chara.IsPC && chara.HasElement(1274) && chara.c_genes != null && chara.c_genes.items.Count > 0)
if (chara.IsSlimeEvolvable && chara.c_genes != null && chara.c_genes.items.Count > 0)
{
Header("genes".lang() + " " + EClass.pc.CurrentGeneSlot + "/" + EClass.pc.MaxGeneSlot, null);
ListFeat();