EA 23.324 Nightly โ
July 1, 2026
40 files modified. 2 new files created.
Important Changes โ
Possible breaking changes. Click the filename to view the chunk.
Chara (1) โ
public bool TryFuse(int chance = 10)
public bool TryFuse(float chance = 1f) Party (1) โ
public int Count() ABILITY โ
public const int ActBash = 5052;
public const int ActSlime = 6608;
public const int ActBloodsuck = 6607;
public const int ActCrySad = 6605;
public const int AI_OpenLock = 5049;
public const int Sleep = 5004;
public const int Wait = 5005;
public const int Shoot = 5006;
public const int TaskDig = 5010;
public const int Ranged = 5003;
public const int TaskCut = 5011;
public const int ActAttack = 5013;
public const int Sleep = 5004;
public const int AI_Goto = 5012;
public const int TaskPlow = 5014;
public const int TaskReadBoard = 5019;
public const int AI_Goto = 5012;
public const int TaskFarm = 5020;
public const int ActAttack = 5013;
public const int ActGazeMana = 6623;
public const int Melee = 5002;
public const int Ranged = 5003;
public const int ActWait = 5000;
public const int ActMelee = 5001;
public const int ActItem = 5048;
public const int ActKick = 5042;
public const int ActMelee = 5001;
public const int Melee = 5002;
public const int AI_Read = 5041;
public const int GoalIdle = 5034;
public const int ActCancelTask = 5033;
public const int ActWait = 5000;
public const int ActRanged = 5040;
public const int ActDrainBlood = 6626;
public const int ActBloodsuck = 6607;
public const int ActSlime = 6608;
public const int ActKiss = 6628;
public const int breathe_Magic = 50211;
public const int breathe_Chaos = 50210;
public const int breathe_Holy = 50209;
public const int breathe_Nether = 50206;
public const int breathe_Ether = 50212;
public const int breathe_Poison = 50205;
public const int breathe_Darkness = 50203;
public const int breathe_Magic = 50211;
public const int breathe_Mind = 50204;
public const int breathe_Lightning = 50202;
public const int SpTransmuteShadow = 8795;
public const int breathe_Mind = 50204;
public const int SpTransmuteMimic = 8794;
public const int breathe_Darkness = 50203;
public const int breathe_Ether = 50212;
public const int breathe_Acid = 50213;
public const int breathe_Impact = 50215;
public const int breathe_Cut = 50214;
public const int ActCancelTask = 5033;
public const int AI_Equip = 5032;
public const int GoalSleep = 5027;
public const int breathe_Cut = 50214;
public const int AI_Haul = 5026;
public const int AI_Grab = 5025;
public const int AI_Eat = 5024;
public const int TaskGoOut = 5023;
public const int TaskTrain = 5021;
public const int TaskFarm = 5020;
public const int breathe_Void = 50216;
public const int AI_Grab = 5025;
public const int breathe_Impact = 50215;
public const int SpTransmuteBat = 8793;
public const int breathe_ = 7000;
public const int breathe_Nerve = 50208;
public const int ActHeadpat = 6904;
public const int ActKizuamiTrick = 6903;
public const int ActDeepKiss = 6629;
public const int ActThrowPotion = 6661;
public const int breathe_ = 7000;
public const int ActHeadpat = 6904;
public const int ActSwarm = 6662;
public const int ActMultiHit = 6663;
public const int ActSummonSpecial = 6800;
public const int ActKizuamiTrick = 6903;
public const int ActMissileBarrage2 = 6668;
public const int ActLulwyTrick = 6902;
public const int SongSleep = 6750;
public const int ActMissileBarrage = 6667;
public const int StMama = 6701;
public const int StManaCost = 6720;
public const int ActWombDark = 6801;
public const int ActMissileBarrage = 6667;
public const int StTaunt = 6700;
public const int StMama = 6701;
public const int ActSummonSpecial = 6800;
public const int ActDeathSentense = 6802;
public static readonly int[] IDS = new int[147]
public const int ActWombDark = 6801;
public static readonly int[] IDS = new int[148]
{
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,
6622, 6621, 6620, 6613, 6612, 6611, 6610, 5052, 6607, 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
5005, 5006, 5007, 5008, 5009, 5010, 5011, 5004, 5012, 5014,
5015, 5016, 5017, 5018, 5019, 5020, 5013, 6623, 5003, 5001,
5048, 5047, 5046, 5045, 5044, 5043, 5042, 5002, 5041, 5039,
5038, 5037, 5036, 5035, 5034, 5000, 5040, 6626, 6608, 6628,
50210, 50209, 6627, 50207, 50206, 50205, 50211, 50204, 50202, 50201,
50200, 8796, 8795, 8794, 50203, 50212, 50213, 50214, 5033, 5032,
5031, 5030, 5029, 5028, 5027, 5026, 5025, 5024, 5023, 5022,
5021, 50216, 50215, 8793, 7000, 50208, 6903, 6629, 6630, 6631,
6632, 6640, 6641, 6642, 6650, 6660, 6661, 6904, 6662, 6664,
6665, 6666, 6663, 6668, 6902, 6901, 6900, 6753, 6752, 6751,
6750, 6720, 6667, 6700, 6701, 6800, 6802, 6801
};
}
public class Ability : ActAI_Idle โ
public override IEnumerable<Status> Run()
case "azzrasizzle":
case "geist":
{
if (EClass.rnd(20) != 0)
if ((owner.IsPCFactionOrMinion && owner.IsPCParty) || EClass.rnd(20) != 0)
{
break;
}public override IEnumerable<Status> Run()
{
break;
}
int i = 0;
int j = 0;
owner.pos.ForeachNeighbor(delegate(Point p)
{
if (p.HasChara && p.FirstChara.id == "cocoon")
{
i++;
j++;
}
});
if (i < 2)
if (j < 2)
{
Point randomPoint2 = owner.pos.GetRandomPoint(1, requireLos: false, allowChara: false, allowBlocked: false, 20);
if (randomPoint2 != null)
Point randomPoint = owner.pos.GetRandomPoint(1, requireLos: false, allowChara: false, allowBlocked: false, 20);
if (randomPoint != null)
{
Chara chara3 = EClass._zone.SpawnMob("cocoon", randomPoint2);
Chara chara3 = EClass._zone.SpawnMob("cocoon", randomPoint);
owner.Say("egglay", owner);
chara3.SetHostility(owner.OriginalHostility);
}public override IEnumerable<Status> Run()
}
case "mech_scarab":
{
if (EClass.rnd(20) != 0 || !owner.CanDuplicate(DuplicateCondition.Scarab) || EClass._zone.IsUserZone)
if (EClass.rnd(20) != 0 || !owner.CanDuplicate(DuplicateCondition.Scarab) || EClass._zone.IsUserZone || EClass._zone is Zone_SnowGrave)
{
break;
}
int j = 0;
int i = 0;
owner.pos.ForeachNeighbor(delegate(Point p)
{
if (p.HasChara && p.FirstChara.id == "mech_scarab")
{
j++;
i++;
}
});
if (j >= 2)
if (i >= 2)
{
break;
}
Point randomPoint = owner.pos.GetRandomPoint(1, requireLos: false, allowChara: false, allowBlocked: false, 20);
if (randomPoint != null)
Point randomPoint2 = owner.pos.GetRandomPoint(1, requireLos: false, allowChara: false, allowBlocked: false, 20);
if (randomPoint2 != null)
{
Card c2 = EClass._zone.AddCard(owner.Duplicate(), randomPoint);
if (randomPoint.Distance(EClass.pc.pos) < EClass.pc.GetHearingRadius())
Card c2 = EClass._zone.AddCard(owner.Duplicate(), randomPoint2);
if (randomPoint2.Distance(EClass.pc.pos) < EClass.pc.GetHearingRadius())
{
Msg.Say("self_dupe", owner, c2);
}public override IEnumerable<Status> Run()
break;
}
case "marshmallow_monster":
if (owner.TryFuse())
if (owner.TryFuse(0.001f))
{
yield return Success();
}public bool TryPerformIdleUse()
{
for (int i = 0; i < 10; i++)
{
if (owner == null)
{
return true;
}
Point randomPoint = owner.pos.GetRandomPoint(7, requireLos: true, allowChara: true, allowBlocked: true);
if (randomPoint == null || randomPoint.detail == null)
{public bool TryPerformIdleUse()
}
foreach (Thing thing in randomPoint.detail.things)
{
if (thing.IsInstalled)
if (!thing.IsInstalled)
{
int num = owner.Dist(thing);
if (EClass.rnd((owner.memberType == FactionMemberType.Guest) ? 5 : 50) == 0 && thing.HasTag(CTAG.tourism) && num <= 2)
{
owner.LookAt(thing);
owner.Talk("nice_statue");
return true;
}
if (EClass.rnd(thing.trait.IdleUseChance) == 0 && thing.trait.IdleUse(owner, num))
continue;
}
int num = owner.Dist(thing);
if (EClass.rnd((owner.memberType == FactionMemberType.Guest) ? 5 : 50) == 0 && thing.HasTag(CTAG.tourism) && num <= 2)
{
owner.LookAt(thing);
owner.Talk("nice_statue");
return true;
}
if (EClass.rnd(thing.trait.IdleUseChance) == 0 && thing.trait.IdleUse(owner, num))
{
if (owner != null)
{
owner.LookAt(thing);
return true;
}
return true;
}
}
}AI_Steal โ
public override IEnumerable<Status> Run()
bool negate = chara != null && chara.HasElement(426);
if (chara != null)
{
if (negate && owner.Evalue(1662) == 0)
if ((negate && owner.Evalue(1662) == 0) || chara.HasElement(1292) || chara.HasElement(1290))
{
owner.Say("abStealNegate", chara);
yield return Cancel();AM_ViewMap โ
public override void OnActivate()
}
}
public override void OnUpdateInput()
{
base.OnUpdateInput();
if (EInput.middleMouse.clicked)
{
EClass.scene.ToggleRoof();
}
}
public override void OnDeactivate()
{
foreach (Layer layer in EClass.ui.layerFloat.layers)ActEffect โ
void AddCon<T>(int rate, int power) where T : Condition
CC.TryDuplicate();
break;
case EffectId.Fuse:
CC.TryFuse(100);
CC.TryFuse();
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
EClass.game.religions.Element.Talk("ability");
}
Dice dice = Dice.Create("ActManaAbsorb", power, CC, (actRef.refThing != null) ? null : actRef.act);
TC.mana.Mod(dice.Roll());
TC.mana.Mod(dice.Roll() + TC.mana.max / 5);
TC.PlaySound("heal");
TC.PlayEffect("heal");
if (TC == CC)void AddCon<T>(int rate, int power) where T : Condition
EClass.ui.AddLayer<LayerList>().SetStringList(delegate
{
List<string> list12 = new List<string>();
for (int num17 = 0; num17 < 10; num17++)
for (int num19 = 0; num19 < 10; num19++)
{
list12.Add(AliasGen.GetRandomAlias());
}void AddCon<T>(int rate, int power) where T : Condition
break;
case EffectId.StripBlessing:
{
List<Condition> list5 = new List<Condition>();
List<Condition> list11 = new List<Condition>();
foreach (Condition condition4 in TC.conditions)
{
if (GetBlessingDifficulty(condition4) > 0 && EClass.rnd(GetBlessingDifficulty(condition4)) == 0)
{
list5.Add(condition4);
list11.Add(condition4);
}
}
if (list5.Count == 0)
if (list11.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);
list5.Shuffle();
list11.Shuffle();
{
foreach (Condition item5 in list5)
foreach (Condition item5 in list11)
{
item5.Kill();
if (CC.IsHostile(TC))void AddCon<T>(int rate, int power) where T : Condition
{
break;
}
int num10 = 0;
int num14 = 0;
foreach (Condition condition5 in TC.conditions)
{
if (condition5.Type == ConditionType.Debuff)
{
num10++;
num14++;
}
}
if (num10 == 0)
if (num14 == 0)
{
CC.SayNothingHappans();
break;void AddCon<T>(int rate, int power) where T : Condition
});
TC.Say("abShutterHex", TC);
Point center = CC.pos.Copy();
List<Chara> list4 = TC.pos.ListCharasInRadius(TC, 4, (Chara c) => c == TC || c.IsHostile(CC));
for (int k = 0; k < num10; k++)
List<Chara> list5 = TC.pos.ListCharasInRadius(TC, 4, (Chara c) => c == TC || c.IsHostile(CC));
for (int l = 0; l < num14; l++)
{
TweenUtil.Delay((float)k * 0.1f, delegate
TweenUtil.Delay((float)l * 0.1f, delegate
{
center.PlaySound("shutterhex");
});
foreach (Chara item6 in list4)
foreach (Chara item6 in list5)
{
if (item6.ExistsOnMap)
{void AddCon<T>(int rate, int power) where T : Condition
Color startColor = (componentInChildren.endColor = EClass.Colors.elementColors["eleHoly"]);
componentInChildren.startColor = startColor;
Point pos = item6.pos.Copy();
TweenUtil.Delay((float)k * 0.1f, delegate
TweenUtil.Delay((float)l * 0.1f, delegate
{
effect.Play(center, 0f, pos);
});
int num11 = Dice.Create("SpShutterHex", power, CC, (actRef.refThing != null) ? null : actRef.act).Roll();
item6.DamageHP(num11, 919, power, AttackSource.None, CC, showEffect: false);
int num15 = Dice.Create("SpShutterHex", power, CC, (actRef.refThing != null) ? null : actRef.act).Roll();
item6.DamageHP(num15, 919, power, AttackSource.None, CC, showEffect: false);
}
}
}void AddCon<T>(int rate, int power) where T : Condition
break;
}
Thing thing7 = null;
bool flag12 = actRef.n1 == "food";
bool flag10 = actRef.n1 == "food";
if (actRef.n1 == "money")
{
int currency = TC.GetCurrency();void AddCon<T>(int rate, int power) where T : Condition
else
{
Func<Thing, bool> func = (Thing t) => true;
if (flag12)
if (flag10)
{
func = (Thing t) => t.IsFood;
}
List<Thing> list11 = TC.things.List(delegate(Thing t)
List<Thing> list8 = 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 (list11.Count > 0)
if (list8.Count > 0)
{
thing7 = list11.RandomItem();
thing7 = list8.RandomItem();
if (thing7.Num > 1)
{
thing7 = thing7.Split(1);void AddCon<T>(int rate, int power) where T : Condition
List<Thing> list = new List<Thing>();
TC.things.Foreach(delegate(Thing t)
{
int num16 = 0;
int num18 = 0;
if ((t.isEquipped || t.IsRangedWeapon || blessed) && t.blessedState < BlessedState.Normal)
{
if (t.blessedState == BlessedState.Cursed)
{
num16 = EClass.rnd(200);
num18 = EClass.rnd(200);
}
if (t.blessedState == BlessedState.Doomed)
{
num16 = EClass.rnd(1000);
num18 = EClass.rnd(1000);
}
if (blessed)
{
num16 /= 2;
num18 /= 2;
}
if (id == EffectId.UncurseEQGreater)
{
num16 /= 10;
num18 /= 10;
}
if (power >= num16)
if (power >= num18)
{
TC.Say("uncurseEQ_success", t);
t.SetBlessedState(BlessedState.Normal);void AddCon<T>(int rate, int power) where T : Condition
{
EClass.game.religions.Trickery.Talk("ability");
bool hex = CC.IsHostile(TC);
List<SourceStat.Row> list8 = EClass.sources.stats.rows.Where((SourceStat.Row con) => con.tag.Contains("random") && con.group == (hex ? "Debuff" : "Buff")).ToList();
List<SourceStat.Row> list4 = EClass.sources.stats.rows.Where((SourceStat.Row con) => con.tag.Contains("random") && con.group == (hex ? "Debuff" : "Buff")).ToList();
int power2 = power;
for (int l = 0; l < 4 + EClass.rnd(2); l++)
for (int k = 0; k < 4 + EClass.rnd(2); k++)
{
SourceStat.Row row2 = list8.RandomItem();
list8.Remove(row2);
SourceStat.Row row2 = list4.RandomItem();
list4.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 num12 = TC.WIL * (isPowerful ? 20 : 5);
int num10 = TC.WIL * (isPowerful ? 20 : 5);
ConHolyVeil condition = TC.GetCondition<ConHolyVeil>();
if (condition != null)
{
num12 += condition.power * 5;
num10 += condition.power * 5;
}
if (id != EffectId.DebuffKizuami && EClass.rnd(a2) < num12 / EClass.sources.stats.alias[n].hexPower && EClass.rnd(10) != 0)
num10 /= EClass.sources.stats.alias[n].hexPower;
if (id != EffectId.DebuffKizuami && EClass.rnd(power) < num10)
{
TC.Say("debuff_resist", TC);
CC.DoHostileAction(TC);
break;
int num11 = 10;
int num12 = (TC.IsPowerful ? 40 : 90);
if (CC.IsPCFaction)
{
num11 += EClass.curve(CC.LER, 100, 50) / 10;
}
if (TC.IsPowerful)
{
num11 /= 2;
}
if (condition != null)
{
num11 /= 5;
}
if (num11 >= num12)
{
num11 = num12;
}
if (EClass.rnd(100) > num11)
{
TC.Say("debuff_resist", TC);
CC.DoHostileAction(TC);
break;
}
}
TC.AddCondition(Condition.Create(n, power, delegate(Condition con)
{void AddCon<T>(int rate, int power) where T : Condition
{
tc.PlaySound("mutation");
tc.PlayEffect("mutation");
int age2 = tc.bio.GetAge(tc.Chara);
if (!flag && age2 <= 0)
int age = tc.bio.GetAge(tc.Chara);
if (!flag && age <= 0)
{
tc.SayNothingHappans();
break;
}
age2 = Mathf.Max(0, age2 * 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, age2);
tc.bio.SetAge(tc.Chara, age);
break;
}
case EffectId.EternalYouth:void AddCon<T>(int rate, int power) where T : Condition
tc.SayNothingHappans();
break;
}
int age = tc.bio.GetAge(tc.Chara);
int age2 = tc.bio.GetAge(tc.Chara);
if (flag)
{
if (tc.c_lockedAge != 0)void AddCon<T>(int rate, int power) where T : Condition
tc.Say("eternalYouth2", tc);
tc.c_lockedAge = 0;
tc.elements.Remove(1243);
tc.bio.SetAge(tc.Chara, age);
tc.bio.SetAge(tc.Chara, age2);
}
Redirect(EffectId.Youth, BlessedState.Cursed, default(ActRef));
}void AddCon<T>(int rate, int power) where T : Condition
{
tc.PlaySound("dropRewardXmas");
tc.Say("eternalYouth1", tc);
tc.c_lockedAge = age + 1;
tc.c_lockedAge = age2 + 1;
tc.elements.SetBase(1243, 1);
if (blessed)
{void AddCon<T>(int rate, int power) where T : Condition
case EffectId.DamageMindGreat:
case EffectId.Weaken:
{
bool flag11 = id == EffectId.DamageBody || id == EffectId.DamageBodyGreat;
bool flag12 = id == EffectId.DamageBody || id == EffectId.DamageBodyGreat;
bool mind2 = id == EffectId.DamageMind || id == EffectId.DamageMindGreat;
int num15 = ((id == EffectId.DamageBody || id == EffectId.DamageMind) ? 1 : (4 + EClass.rnd(4)));
int num17 = ((id == EffectId.DamageBody || id == EffectId.DamageMind) ? 1 : (4 + EClass.rnd(4)));
if (id == EffectId.Weaken)
{
flag11 = EClass.rnd(2) == 0;
mind2 = !flag11;
num15 = 1;
flag12 = EClass.rnd(2) == 0;
mind2 = !flag12;
num17 = 1;
}
else
{
TC.PlayEffect("debuff");
TC.PlaySound("debuff");
}
TC.Say(flag11 ? "damageBody" : "damageMind", TC);
for (int m = 0; m < num15; m++)
TC.Say(flag12 ? "damageBody" : "damageMind", TC);
for (int m = 0; m < num17; m++)
{
TC.DamageTempElements(power, flag11, mind2, id != EffectId.Weaken);
TC.DamageTempElements(power, flag12, mind2, id != EffectId.Weaken);
}
if (TC.IsPC)
{void AddCon<T>(int rate, int power) where T : Condition
case EffectId.RestoreBody:
case EffectId.RestoreMind:
{
bool flag10 = id == EffectId.RestoreBody;
bool flag11 = id == EffectId.RestoreBody;
if (flag)
{
Redirect(flag10 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef));
Redirect(flag11 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef));
break;
}
TC.Say(flag10 ? "restoreBody" : "restoreMind", TC);
TC.Say(flag11 ? "restoreBody" : "restoreMind", TC);
TC.PlaySound("heal");
TC.PlayEffect("heal");
TC.CureHost(flag10 ? CureType.CureBody : CureType.CureMind, power, state);
TC.CureHost(flag11 ? CureType.CureBody : CureType.CureMind, power, state);
if (blessed)
{
Redirect(flag10 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef));
Redirect(flag11 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef));
}
break;
}void AddCon<T>(int rate, int power) where T : Condition
case EffectId.Heal:
case EffectId.JureHeal:
{
if (id == EffectId.JureHeal)
{
EClass.game.religions.Healing.Talk("ability");
}
int num9 = 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)
{void AddCon<T>(int rate, int power) where T : Condition
TC.DamageHP(num9 / 2, 919, power);
break;
}
if (id == EffectId.JureHeal)
{
EClass.game.religions.Healing.Talk("ability");
num9 += TC.MaxHP / 4;
TC.AddCondition<ConInvulnerable>();
}
TC.HealHPHost(num9, (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);void AddCon<T>(int rate, int power) where T : Condition
if (TC.HasElement(1211))
{
TC.Say("drinkSaltWater_snail", TC);
int num14 = ((TC.hp > 10) ? (TC.hp - EClass.rnd(10)) : 10000);
TC.DamageHP(num14, AttackSource.None, CC);
int num16 = ((TC.hp > 10) ? (TC.hp - EClass.rnd(10)) : 10000);
TC.DamageHP(num16, AttackSource.None, CC);
}
else if (TC.IsPC)
{+ActMissileBarrage2 โ
File Created
using System.Collections.Generic;
using System.Linq;
public class ActMissileBarrage2 : Ability
{
public override bool Perform()
{
List<Point> list = new List<Point>();
for (int i = 0; i < 30; i++)
{
Point p = Act.CC.pos.GetRandomPointInRadius(2, 12);
if (p != null)
{
IEnumerable<Point> enumerable = list.Where((Point _p) => _p.Equals(p));
if (enumerable != null && enumerable.Count() == 0)
{
list.Add(p);
}
}
}
if (list.Count > 0)
{
Act.CC.Say("abMissileBarrage", Act.CC);
Act.CC.PlaySound("missile");
Chara cC = Act.CC;
foreach (Point item in list)
{
Act.CC = cC;
Act.TP.Set(item);
ActEffect.ProcAt(EffectId.Rocket, GetPower(Act.CC), BlessedState.Normal, Act.CC, null, Act.TP, isNeg: true, new ActRef
{
origin = Act.CC.Chara,
aliasEle = "eleVoid"
});
ActEffect.RapidDelay = 0.03f;
ActEffect.RapidCount++;
}
}
return true;
}
}ActRanged โ
void Shoot(Card _tc, Point _tp, bool subAttack)
AttackProcess.Current.TC = chara;
AttackProcess.Current.TP.Set(chara.pos);
AttackProcess.Current.posRangedAnime = chara.pos;
AttackProcess.Current.Perform(j, hasHit, chara.IsPCFactionOrMinion ? 0.1f : 2.5f, maxRoll: true, subAttack: true);
if (chara.HasElement(383))
{
AttackProcess.Current.PlayRangedAnime(numFire, 0.2f);
AttackProcess.Current.CC = chara;
AttackProcess.Current.posRangedAnime = chara.pos.GetRandomPoint(2) ?? chara.pos.GetRandomNeighbor();
AttackProcess.Current.PlayRangedAnime(numFire, 0.3f);
}
else
{
AttackProcess.Current.Perform(j, hasHit, chara.IsPCFactionOrMinion ? 0.1f : 2.5f, maxRoll: true, subAttack: true);
}
}
else if (AttackProcess.Current.Perform(j, hasHit, dmgMulti, maxRoll: false, subAttack))
{ActRide โ
public static void Ride(Chara host, Chara t, bool parasite = false, bool talk =
EClass.pc.party.AddMemeber(t);
if (!parasite)
{
if (t.race.tag.Contains("ride"))
if (t.Ridability == Ridability.GoodRide)
{
Msg.Say("ride_good");
}
if (t.race.tag.Contains("noRide"))
if (t.Ridability == Ridability.BadRide)
{
Msg.Say("ride_bad");
}ActWater โ
public override bool Perform()
return base.Perform();
static void Water(Point pos)
{
if (TaskWater.ShouldWater(pos))
{
Act.CC.ModExp(286, 15);
}
if (!pos.cell.IsTopWater && !pos.cell.IsSnowTile)
{
pos.cell.isWatered = true;AttackProcess โ
void AddBane(bool valid, int idEle, int mod)
{
if (valid)
{
bane += (CC.Evalue(idEle) + ((weapon != null) ? weapon.Evalue(idEle, ignoreGlobalElement: true) : 0)) * mod / 100;
bane += (CC.Evalue(idEle) + ((weapon != null) ? weapon.Evalue(idEle, ignoreGlobalElement: true) : 0) + ((ammo != null) ? ammo.Evalue(idEle, ignoreGlobalElement: true) : 0)) * mod / 100;
}
}
bool IgnoreExp()CTAG โ
humanSpeak,
throwBall,
alwaysDropCorpse,
allowDevour
allowDevour,
noRide,
ride
}Card โ
public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
{
foreach (Chara chara3 in EClass._map.charas)
{
if (chara3 != this && !chara3.IsHostile(Chara) && !chara3.IsDisabled && !chara3.isRestrained && (!IsPCFactionOrMinion || chara3.IsPCFactionOrMinion) && chara3.Dist(this) <= 3)
if (chara3 != this && !chara3.IsHostile(Chara) && !chara3.IsPowerful && !chara3.IsDisabled && !chara3.isRestrained && (!IsPCFactionOrMinion || chara3.IsPCFactionOrMinion) && chara3.Dist(this) <= 3)
{
Say("wall_bond", chara3, this);
chara3.DamageHP(dmg, ele, eleP, attackSource, origin, showEffect, weapon, Chara);public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
if ((num != 0 || num2 != 0) && !chara4.IsDisabled && !chara4.isRestrained && (!IsPCFactionOrMinion || chara4.IsPCFactionOrMinion) && (IsPCFactionOrMinion || !chara4.IsPCFactionOrMinion) && chara4.Dist(this) <= Mathf.Max(num, (num2 > 0) ? 1 : 0) && (num != 0 || num2 <= 0 || hp * 100 / MaxHP <= chara4.hp * 100 / chara4.MaxHP))
{
Say((num2 == 0) ? "wall_flesh" : "wall_knightly", chara4, this);
chara4.DamageHP(dmg * (100 + ((num2 > 0) ? (-10) : 0) + ((num > 0) ? 10 : 0)) / 100, ele, eleP, attackSource, origin, showEffect, weapon, Chara);
chara4.DamageHP(dmg * (100L + (long)((num2 > 0) ? (-10) : 0) + ((num > 0) ? 10 : 0)) / 100, ele, eleP, attackSource, origin, showEffect, weapon, Chara);
return;
}
}public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
{
dmg = dmg * 90 / 100;
}
if (EClass.pc.HasElement(1207) && isChara)
int num4 = EClass.pc.party.EvalueTotal(1207);
if (num4 > 0 && isChara)
{
int num4 = 0;
int num5 = 0;
int num6 = 0;
foreach (Condition condition3 in Chara.conditions)
{
if (condition3.Type == ConditionType.Buff)
{
num4++;
num5++;
}
else if (condition3.Type == ConditionType.Debuff)
{
num5++;
num6++;
}
}
if (IsPCFactionOrMinion)
{
dmg = dmg * 100 / Mathf.Min(100 + num4 * 5, 120);
dmg = dmg * 100 / Mathf.Min(100 + num5 * (3 + num4 * 2), 120);
}
else
else if (origin != null && origin.IsPCFactionOrMinion)
{
dmg = dmg * Mathf.Min(100 + num5 * 5, 120) / 100;
dmg = dmg * Mathf.Min(100 + num6 * (3 + num4 + 2), 120) / 100;
}
}
if (IsPCParty && EClass.pc.ai is GoalAutoCombat)public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
}
if (dmg >= MaxHP / 10 && Evalue(68) > 0)
{
int num6 = MaxHP / 10;
long num7 = dmg - num6;
num7 = num7 * 100 / (200 + Evalue(68) * 10);
dmg = num6 + num7;
int num7 = MaxHP / 10;
long num8 = dmg - num7;
num8 = num8 * 100 / (200 + Evalue(68) * 10);
dmg = num7 + num8;
}
}
if (origin != null && origin.IsPC && EClass.pc.Evalue(654) > 0)public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
{
dmg = 0L;
}
long num8 = 99999999L;
long num9 = 99999999L;
if (origin != null && (attackSource == AttackSource.Melee || attackSource == AttackSource.Range))
{
ConStrife condition = origin.GetCondition<ConStrife>();
if (condition != null)
{
num8 = num8 * (100 + condition.lv * 5) / 100;
num9 = num9 * (100 + condition.lv * 5) / 100;
}
}
if (dmg > num8)
if (dmg > num9)
{
dmg = num8;
dmg = num9;
}
float num9 = Mathf.Clamp(dmg * 6 / MaxHP, 0f, 4f) + (float)((dmg > 0) ? 1 : 0);
int num10 = hp;
float num10 = Mathf.Clamp(dmg * 6 / MaxHP, 0f, 4f) + (float)((dmg > 0) ? 1 : 0);
int num11 = hp;
if (Evalue(1421) > 0)
{
long num11 = 0L;
long num12 = dmg;
long num12 = 0L;
long num13 = dmg;
if (hp > 0)
{
num12 = dmg - hp;
num13 = dmg - hp;
hp -= (int)dmg;
num11 += dmg;
num12 += dmg;
if (hp < 0 && Chara.mana.value >= 0)
{
num11 += hp;
num12 += hp;
hp = 0;
}
}public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
{
if (Evalue(1421) >= 2)
{
num12 /= 2;
num13 /= 2;
}
dmg = num12;
dmg = num13;
if (Chara.mana.value > 0)
{
num12 -= Chara.mana.value;
num13 -= Chara.mana.value;
Chara.mana.value -= (int)dmg;
num11 += dmg;
num12 += dmg;
}
if (Chara.mana.value <= 0)
{
hp -= (int)num12;
num11 += num12;
hp -= (int)num13;
num12 += num13;
}
}
dmg = num11;
dmg = num12;
}
else
{public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
if (origin != null && origin != this && Evalue(436) > 0 && !HasCondition<ConFractured>())
{
int half = (HasElement(1218) ? MaxHP : (MaxHP / 2));
if (num10 > half)
if (num11 > half)
{
EvadeDeath(delegate
{public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
Chara.AddCondition<ConFractured>((int)Mathf.Max(10f, 30f - Mathf.Sqrt(Evalue(436))));
hp = Mathf.Min(half * (int)Mathf.Sqrt(Evalue(436) * 2) / 100, MaxHP / 3);
});
goto IL_1071;
goto IL_10a8;
}
}
if (zoneInstanceBout != null && (bool)LayerDrama.Instance)public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
if (EClass.player.invlunerable)
{
EvadeDeath(null);
goto IL_1071;
goto IL_10a8;
}
}
if (Evalue(1220) > 0 && Chara.stamina.value >= (IsPC ? (Chara.stamina.max / 2) : (Chara.stamina.max / 3 * 2)))public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
}
}
}
goto IL_1071;
IL_1071:
goto IL_10a8;
IL_10a8:
if (trait.CanBeAttacked)
{
renderer.PlayAnime(AnimeID.HitObj);public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
}
else if ((attackSource == AttackSource.Melee || attackSource == AttackSource.Range) && origin != null && originalTarget == null)
{
(IsPC ? EClass.pc : origin).Say("dmgMelee" + num9 + (IsPC ? "pc" : ""), origin, this);
(IsPC ? EClass.pc : origin).Say("dmgMelee" + num10 + (IsPC ? "pc" : ""), origin, this);
}
else if (isChara)
{
int num13 = ((attackSource != AttackSource.Condition && attackSource != AttackSource.WeaponEnchant) ? 1 : 2);
if (num9 >= (float)num13)
int num14 = ((attackSource != AttackSource.Condition && attackSource != AttackSource.WeaponEnchant) ? 1 : 2);
if (num10 >= (float)num14)
{
if (e != Element.Void)
{
Say("dmg_" + e.source.alias, this);
}
if (e == Element.Void || num9 >= 2f)
if (e == Element.Void || num10 >= 2f)
{
Say("dmg" + num9, this);
Say("dmg" + num10, this);
}
}
}
onEvade?.Invoke();
if (isChara)
{
for (int num14 = Chara.conditions.Count - 1; num14 >= 0; num14--)
for (int num15 = Chara.conditions.Count - 1; num15 >= 0; num15--)
{
Chara.conditions[num14].OnHit(origin, attackSource);
Chara.conditions[num15].OnHit(origin, attackSource);
}
if (Chara.mimicry == null && HasElement(1429))
{public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
}
if (attackSource == AttackSource.Melee || attackSource == AttackSource.Range)
{
int num15 = origin.Dist(this);
if (attackSource == AttackSource.Melee && HasElement(1221) && num15 <= Evalue(1221))
int num16 = origin.Dist(this);
if (attackSource == AttackSource.Melee && HasElement(1221) && num16 <= Evalue(1221))
{
int ele2 = ((Chara.MainElement == Element.Void) ? 924 : Chara.MainElement.id);
if (id == "hedgehog_ether")public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
Say("reflect_thorne", origin, this);
origin.DamageHP((int)Mathf.Clamp(dmg / 10, 1f, MaxHP / (origin.IsPowerful ? 200 : 20)), ele2, Power, AttackSource.Condition, this);
}
if (HasElement(1223) && num15 <= Evalue(1223))
if (HasElement(1223) && num16 <= Evalue(1223))
{
int ele3 = ((Chara.MainElement == Element.Void) ? 923 : Chara.MainElement.id);
Say("reflect_acid", this, origin);public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
}
}
}
int num16 = ((EClass.rnd(2) == 0) ? 1 : 0);
int num17 = ((EClass.rnd(2) == 0) ? 1 : 0);
if (attackSource == AttackSource.Condition)
{
num16 = 1 + EClass.rnd(2);
num17 = 1 + EClass.rnd(2);
}
if (num16 > 0)
if (num17 > 0)
{
bool flag3 = Chara.HasCondition<ConPoison>() || ((e.id == 915 || e.id == 923) && ResistLv(Evalue(955)) < 4);
AddBlood(num16, flag3 ? 6 : (-1));
AddBlood(num17, flag3 ? 6 : (-1));
}
if (dmg > 0 || (origin != null && origin.HasElement(1345)))
{public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
}
if (IsPC)
{
float num17 = (float)hp / (float)MaxHP;
float num18 = (float)hp / (float)MaxHP;
if (Evalue(1421) > 0)
{
num17 = (float)Chara.mana.value / (float)Chara.mana.max;
num18 = (float)Chara.mana.value / (float)Chara.mana.max;
}
if (num17 < 0.3f)
if (num18 < 0.3f)
{
PlaySound("heartbeat", 1f - num17 * 2f);
PlaySound("heartbeat", 1f - num18 * 2f);
}
}
if (!IsPC && hp < MaxHP / 5 && Evalue(423) <= 0 && dmg * 100 / MaxHP + 10 > EClass.rnd(IsPowerful ? 400 : 150) && !HasCondition<ConFear>())void EvadeDeath(Action action)
}
onEvade = action;
}
int GetHealValue(int heal, int skill, int full, int healRateLimit, int skillMod)
{
int result = Mathf.Clamp(heal, 0, MathEx.ClampToInt((long)full * (long)Mathf.Clamp(healRateLimit * (100 + skill) / 200, 0, healRateLimit) / 100 + skill * skillMod / 100));
if (EClass.debug.enable)
{
Debug.Log("dmg:" + dmg + " heal:" + result + " (" + heal + ")");
}
return result;
}
void Heal()
{
target.Cure(CureType.HealComplete); {
if (origin != null && origin.isChara && isChara && (weapon == null || !weapon.HasElement(486)))
{
int num18 = origin.Evalue(662) + (weapon?.Evalue(662, ignoreGlobalElement: true) ?? 0);
int num19 = origin.Evalue(661) + (weapon?.Evalue(661, ignoreGlobalElement: true) ?? 0);
if (num18 > 0 && attackSource == AttackSource.Melee && origin.isChara && !origin.Chara.ignoreSPAbsorb && Chara.IsHostile(origin as Chara))
int num19 = origin.Evalue(660) + (weapon?.Evalue(660, ignoreGlobalElement: true) ?? 0);
int num20 = origin.Evalue(662) + (weapon?.Evalue(662, ignoreGlobalElement: true) ?? 0);
int num21 = origin.Evalue(661) + (weapon?.Evalue(661, ignoreGlobalElement: true) ?? 0);
bool flag4 = attackSource == AttackSource.Melee || attackSource == AttackSource.Range || attackSource == AttackSource.Throw;
if (num19 > 0 && flag4)
{
int num20 = EClass.rnd(3 + (int)Mathf.Clamp(dmg / 100, 0f, num18 / 10));
origin.Chara.stamina.Mod(num20);
int heal2 = EClass.rnd(dmg / 10 + num19 / 5);
origin.Chara.HealHP(GetHealValue(heal2, num19, origin.MaxHP, 20, 100));
}
if (num20 > 0 && flag4 && origin.isChara && !origin.Chara.ignoreSPAbsorb && Chara.IsHostile(origin as Chara))
{
int heal3 = EClass.rnd(dmg / 100 + 3);
origin.Chara.stamina.Mod(GetHealValue(heal3, num20, origin.Chara.stamina.max, 1, 10));
if (IsAliveInCurrentZone)
{
Chara.stamina.Mod(-num20);
Chara.stamina.Mod(-GetHealValue(heal3, num20, Chara.stamina.max, 10, 10));
}
}
if (origin.HasElement(1350) && attackSource == AttackSource.Melee)
{
int num21 = EClass.rndHalf(2 + (int)Mathf.Clamp(dmg / 10, 0f, origin.Chara.GetPietyValue() + 10));
origin.Chara.mana.Mod(num21);
int heal4 = EClass.rnd(dmg / 10 + 2);
origin.Chara.mana.Mod(GetHealValue(heal4, origin.Chara.GetPietyValue(), origin.Chara.mana.max, 10, 100));
if (IsAliveInCurrentZone)
{
Chara.mana.Mod(-num21);
Chara.mana.Mod(-GetHealValue(heal4, origin.Chara.GetPietyValue(), Chara.mana.max, 20, 100));
}
}
if (num19 > 0 && attackSource == AttackSource.Melee)
if (num21 > 0 && flag4)
{
int num22 = EClass.rnd(2 + (int)Mathf.Clamp(dmg / 10, 0f, num19 + 10));
origin.Chara.mana.Mod(num22);
int heal5 = EClass.rnd(dmg / 10 + num21 / 10);
origin.Chara.mana.Mod(GetHealValue(heal5, num21, origin.Chara.mana.max, 10, 100));
if (IsAliveInCurrentZone)
{
Chara.mana.Mod(-num22);
Chara.mana.Mod(-GetHealValue(heal5, num21, Chara.mana.max, 20, 100));
}
}
}public void SpawnLoot(Card origin)
}
if (flag2 && !isUserZone)
{
string text = id;
if (!(text == "bubble_pudding"))
switch (id)
{
if (text == "marshmallow_monster")
case "bubble_pudding":
list.Add(ThingGen.Create("milk_custard").SetNum(num).MakeFoodFrom(this, makeRef: false));
break;
case "marshmallow_monster":
case "marshmallow_king":
list.Add(ThingGen.Create("marshmallow_nama").SetNum(num * ((!(id == "marshmallow_king")) ? 1 : 8)).MakeFoodFrom(this, makeRef: false));
break;
default:
{
string text = Chara.race.corpse[0];
bool num2 = text == "_meat";
int num3 = 10;
if (AI_Slaughter.slaughtering)
{
num3 += (int)Mathf.Min(Mathf.Sqrt(EClass.pc.Evalue(290)), 20f);
}
if (num2 && num3 > EClass.rnd(100))
{
list.Add(ThingGen.Create("marshmallow_nama").SetNum(num).MakeFoodFrom(this, makeRef: false));
text = "meat_marble";
}
if (EClass.rnd((Act.CurrentAct is ActMeleeBladeStorm || (origin != null && (origin.HasElement(1556) || origin.HasCondition<ConTransmuteCat>()))) ? 2 : 100) == 0)
{
text = "dattamono";
}
Thing thing3 = ThingGen.Create(text).SetNum(num);
if (thing3.source._origin == "meat")
{
thing3.MakeFoodFrom(this);
}
else
{
string text2 = Chara.race.corpse[0];
bool num2 = text2 == "_meat";
int num3 = 10;
if (AI_Slaughter.slaughtering)
{
num3 += (int)Mathf.Min(Mathf.Sqrt(EClass.pc.Evalue(290)), 20f);
}
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")
{
thing3.MakeFoodFrom(this);
}
else
{
thing3.ChangeMaterial(Chara.material);
}
list.Add(thing3);
thing3.ChangeMaterial(Chara.material);
}
list.Add(thing3);
break;
}
else
{
list.Add(ThingGen.Create("milk_custard").SetNum(num).MakeFoodFrom(this, makeRef: false));
}
}
if (!IsPCFaction && (!isUserZone || !EClass.game.principal.disableUsermapBenefit) && chance(200))public void SpawnLoot(Card origin)
List<Thing> list2 = new List<Thing>();
foreach (Thing thing6 in things)
{
if (thing6.HasTag(CTAG.gift) || thing6.trait is TraitChestMerchant)
if (thing6.HasTag(CTAG.gift) || thing6.trait is TraitChestMerchant || (id == "mamani" && (thing6.id == "gun_gravity2" || thing6.id == "gun_mani")))
{
continue;
}public void MakeRefFrom(Card c1, Card c2 = null, bool simple = false)
public Thing MakeEgg(bool effect = true, int num = 1, bool addToZone = true, int fertChance = 20, BlessedState? state = null)
{
Thing thing = ThingGen.Create((EClass.rnd(EClass.debug.enable ? 1 : fertChance) == 0) ? "egg_fertilized" : "_egg").SetNum(num);
if (!EClass.debug.enable && HasElement(1290) && Evalue(418) >= 0)
if (!EClass.debug.enable && (HasElement(1290) || HasElement(1292)) && Evalue(418) >= 0)
{
thing.MakeFoodFrom(EClass.sources.charas.map["caladrius"].model);
}public Thing MakeEgg(bool effect = true, int num = 1, bool addToZone = true, int
public Thing MakeMilk(bool effect = true, int num = 1, bool addToZone = true, BlessedState? state = null)
{
Thing thing = ThingGen.Create("_milk").SetNum(num);
if (!EClass.debug.enable && HasElement(1290) && Evalue(418) >= 0)
if (!EClass.debug.enable && (HasElement(1290) || HasElement(1292)) && Evalue(418) >= 0)
{
thing.MakeRefFrom(EClass.sources.charas.map["caladrius"].model);
}public Thing MakeMilk(bool effect = true, int num = 1, bool addToZone = true, Bl
{
num2 = 0;
}
if (num2 >= 10 && !HasElement(1290))
if (num2 >= 10 && !HasElement(1290) && !HasElement(1292))
{
thing.SetEncLv(num2 / 10);
}Chara โ
public TimeTable.Span CurrentSpan => TimeTable.GetSpan(idTimeTable, EClass.world.date.hour);
public Ridability Ridability
{
get
{
if (!HasTag(CTAG.ride))
{
if (!HasTag(CTAG.noRide))
{
if (!race.tag.Contains("ride"))
{
if (!race.tag.Contains("noRide"))
{
return Ridability.Default;
}
return Ridability.BadRide;
}
return Ridability.GoodRide;
}
return Ridability.BadRide;
}
return Ridability.GoodRide;
}
}
public bool IsInActiveZone => currentZone == EClass.game.activeZone;
public bool IsLocalCharapublic override string GetName(NameStyle style, int num = -1)
{
return text;
}
int num2 = ((base.rarity == Rarity.Mythical) ? 3 : ((base.rarity >= Rarity.Legendary) ? 2 : ((!_alias.IsEmpty()) ? 1 : (-1))));
int num2 = ((base.rarity == Rarity.Mythical) ? 3 : ((base.rarity >= Rarity.Mythical) ? 2 : ((base.rarity >= Rarity.Legendary) ? 2 : ((!_alias.IsEmpty()) ? 1 : (-1)))));
if (trait is TraitAdventurer)
{
num2 = 1;public void Refresh(bool calledRecursive = false)
}
}
public bool TryFuse(int chance = 10)
public bool TryFuse(float chance = 1f)
{
if (chance < EClass.rnd(100))
if (chance < EClass.rndf(1f))
{
return false;
}public bool TryFuse(int chance = 10)
item.Destroy();
}
Destroy();
chara.PlayAnime(AnimeID.Shiver);
chara.PlayAnime(AnimeID.FallSky);
chara.pos.PlaySound("fuse");
chara.pos.PlayEffect("vanish");
return true;
}public Chara TryDuplicate(DuplicateCondition con = DuplicateCondition.Default, P
}
Chara chara = Duplicate();
EClass._zone.AddCard(chara, dest);
chara.SetHostility(hostility);
Say("split", this);
return chara;
}public void RefreshSpeed(Element.BonusInfo info = null)
{
_Speed = Evalue(79);
int a = Evalue(1423);
int value = 100 + (int)_Speed * ((!race.tag.Contains("noRide")) ? 1 : 5) * Mathf.Max(a, 1) - base.STR - host.EvalueRiding() * 2 - (race.tag.Contains("ride") ? 50 : 0);
int num = ((!HasElement(495)) ? 1 : 3);
int value = 100 + (int)_Speed * ((Ridability != Ridability.BadRide) ? 1 : 5) * Mathf.Max(a, 1) / num - base.STR - host.EvalueRiding() * 2 - ((Ridability == Ridability.GoodRide) ? 50 : 0);
_Speed = _Speed * 100 / Mathf.Clamp(value, 100, 1000);
}
elsepublic void RefreshSpeed(Element.BonusInfo info = null)
if (parasite != null)
{
long speed = _Speed;
_Speed = _Speed * 100 / Mathf.Clamp(120 + parasite.LV * 2 - base.STR - Evalue(227) * 2, 100, 1000);
int num2 = ((!HasElement(495)) ? 1 : 3);
_Speed = _Speed * 100 / Mathf.Clamp(120 + parasite.LV * 2 / num2 - base.STR - Evalue(227) * 2, 100, 1000);
info?.AddText(_Speed - speed, "parasiteSpeed".lang());
}
if (_Speed < elements.ValueWithoutLink(79) / 3)public void RefreshSpeed(Element.BonusInfo info = null)
_Speed = elements.ValueWithoutLink(79) / 3;
info?.AddText("minSpeed".lang((elements.ValueWithoutLink(79) / 3).ToString() ?? ""));
}
int num = 100;
int num3 = 100;
if (EClass._zone.map != null && (EClass._zone.IsUnderwater || (base.Cell.IsTopWaterAndNoSnow && !base.Cell.isFloating)))
{
int num2 = Evalue(200);
int num3 = Evalue(1252);
num = 50 + Mathf.Clamp((int)Mathf.Sqrt(num2) * 5 - EClass._zone.DangerLv / 50, (num3 > 0) ? 50 : ((base.IsPowerful || IsMultisize) ? 40 : 0), 50) + Mathf.Clamp((int)Mathf.Sqrt(num2), 0, 25);
if (info != null && num != 100)
int num4 = Evalue(200);
int num5 = Evalue(1252);
num3 = 50 + Mathf.Clamp((int)Mathf.Sqrt(num4) * 5 - EClass._zone.DangerLv / 50, (num5 > 0) ? 50 : ((base.IsPowerful || IsMultisize) ? 40 : 0), 50) + Mathf.Clamp((int)Mathf.Sqrt(num4), 0, 25);
if (info != null && num3 != 100)
{
info.AddFix(num - 100, EClass.sources.elements.map[200].GetName().ToTitleCase());
info.AddFix(num3 - 100, EClass.sources.elements.map[200].GetName().ToTitleCase());
}
if (num3 > 0)
if (num5 > 0)
{
num += num3 * 20;
info?.AddFix(num3 * 20, EClass.sources.elements.map[1252].GetName().ToTitleCase());
num3 += num5 * 20;
info?.AddFix(num5 * 20, EClass.sources.elements.map[1252].GetName().ToTitleCase());
}
}
if (IsPCFaction)public void RefreshSpeed(Element.BonusInfo info = null)
switch (burden.GetPhase())
{
case 1:
num -= 10;
num3 -= 10;
info?.AddFix(-10, burden.GetPhaseStr());
break;
case 2:
num -= 20;
num3 -= 20;
info?.AddFix(-20, burden.GetPhaseStr());
break;
case 3:
num -= 30;
num3 -= 30;
info?.AddFix(-30, burden.GetPhaseStr());
break;
case 4:
num -= (IsPC ? 50 : 100);
num3 -= (IsPC ? 50 : 100);
info?.AddFix(IsPC ? (-50) : (-100), burden.GetPhaseStr());
break;
}public void RefreshSpeed(Element.BonusInfo info = null)
switch (stamina.GetPhase())
{
case 1:
num -= 10;
num3 -= 10;
info?.AddFix(-10, stamina.GetPhaseStr());
break;
case 0:
num -= 20;
num3 -= 20;
info?.AddFix(-20, stamina.GetPhaseStr());
break;
}
switch (sleepiness.GetPhase())
{
case 2:
num -= 10;
num3 -= 10;
info?.AddFix(-10, sleepiness.GetPhaseStr());
break;
case 3:
num -= 20;
num3 -= 20;
info?.AddFix(-20, sleepiness.GetPhaseStr());
break;
}public void RefreshSpeed(Element.BonusInfo info = null)
{
case 3:
case 4:
num -= 10;
num3 -= 10;
info?.AddFix(-10, hunger.GetPhaseStr());
break;
case 5:
num -= 30;
num3 -= 30;
info?.AddFix(-30, hunger.GetPhaseStr());
break;
}
num += EClass.player.lastEmptyAlly * Evalue(1646);
num3 += EClass.player.lastEmptyAlly * Evalue(1646);
info?.AddFix(EClass.player.lastEmptyAlly * Evalue(1646), EClass.sources.elements.map[1646].GetName());
}
if (IsPCParty && EClass.player.lastEmptyAlly < 0)
{
num += EClass.player.lastEmptyAlly * 10 - 10;
num3 += EClass.player.lastEmptyAlly * 10 - 10;
info?.AddFix(EClass.player.lastEmptyAlly * 10 - 10, "exceedParty".lang());
}
}
else if (base.LV >= 1000 && !EClass.game.principal.disableVoidBlessing && !base.IsPCFactionOrMinion)
{
num += EClass.curve((base.LV - 900) / 100 * 10, 500, 100);
num3 += EClass.curve((base.LV - 900) / 100 * 10, 500, 100);
info?.AddFix(EClass.curve((base.LV - 900) / 100 * 10, 500, 100), "enemySpeedBuff".lang());
}
if (HasCondition<ConGravity>())
{
num -= 30;
num3 -= 30;
info?.AddFix(-30, GetCondition<ConGravity>().Name);
}
if (_Speed < 10)
{
_Speed = 10L;
}
_Speed = _Speed * num / 100;
_Speed = _Speed * num3 / 100;
if (_Speed < 10)
{
_Speed = 10L;{
if (!IsMultisize)
{
if (base.rarity >= Rarity.Superior && !base.IsPCFactionOrMinion && ai is GoalCombat && !EClass._zone.IsPCFaction)
if (base.rarity >= Rarity.Superior && !base.IsPCFactionOrMinion && ai is GoalCombat)
{
return !(EClass._zone is Zone_Town);
return !EClass._zone.IsPCFaction;
}
return false;
}public void RestockEquip(bool onCreate)
AddThing("1071");
}
break;
case "mamani":
EQ_ID("lightsaber_double", -1, Rarity.Mythical);
if (onCreate)
{
EQ_ID("cloak_mani2");
EQ_ID("boots_dal");
AddThing("gun_gravity2");
AddThing("gun_mani");
}
break;
case "namamani":
if (onCreate)
{public bool UseAbility(Act a, Card tc = null, Point pos = null, bool pt = false)
RemoveCondition<ConInvisibility>();
RemoveCondition<ConDark>();
}
if (!base.IsPCFactionOrMinion && a.HasTag("specialAbility"))
if (!base.IsPCFactionOrMinion && a.HasTag("specialAbility") && renderer.isSynced)
{
string name = a.Name;
renderer.Say("| " + name + " ");public Thing GetBestRangedWeapon()
return result;
}
public Thing GetRandomRangedWeapon()
{
return things.List((Thing t) => t.IsRangedWeapon && CanEquipRanged(t)).RandomItem();
}
public bool TryEquipRanged()
{
if (id == "mamani")
{
ranged = GetRandomRangedWeapon();
}
if (IsPC)
{
Thing thing = EClass.player.currentHotItem.Thing;
public Thing MakeGene(DNA.Type? type = null)
{
return DNA.GenerateGene((HasElement(1290) && Evalue(418) >= 0) ? EClass.sources.charas.map["caladrius"].model.Chara : this, type);
return DNA.GenerateGene(((HasElement(1290) || HasElement(1292)) && Evalue(418) >= 0) ? EClass.sources.charas.map["caladrius"].model.Chara : this, type);
}
public Thing MakeBraineCell()public bool CanAcceptGift(Chara c, Card t)
{
return false;
}
if (base.IsPowerful && t.trait is TraitScroll { source: not null } traitScroll && traitScroll.source.abilityType.Contains("summon"))
{
return false;
}
return true;
}CoreDebug โ
EClass.pc.AddThing("water").SetNum(20).SetBlessedState(BlessedState.Blessed);
EClass.pc.AddThing("water").SetNum(20).SetBlessedState(BlessedState.Cursed);
EClass.pc.AddThing("potion_empty").SetNum(20);
EClass.pc.AddThing(ThingGen.CreateScroll(9004).SetNum(100));
EClass.pc.AddThing(ThingGen.CreateScroll(9008).SetNum(100));
EClass.pc.AddThing(ThingGen.CreateScroll(9001).SetNum(100));
EClass.pc.AddThing(ThingGen.CreateScroll(9005).SetNum(100));
EClass.pc.ModCurrency(10000000);
EClass.pc.AddCard(ThingGen.CreateBlock(67, 1).SetNum(99));
EClass.pc.AddCard(ThingGen.CreateFloor(41, 1).SetNum(99));CraftUtil โ
public static void MakeDish(Thing food, int lv, Chara crafter = null, int seed =
foreach (Recipe.Ingredient ingredient in recipeSource.GetIngredients())
{
SetSeed();
Thing thing = ThingGen.Create(ingredient.id, -1, lv);
Thing thing = (ingredient.useCat ? ThingGen.CreateFromCategory(ingredient.id, lv) : ThingGen.Create(ingredient.id, -1, lv));
if (thing.id == "deadbody")
{
thing = ThingGen.Create("_meat");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, 813, 812, 802, 803, 804, 814, 805, 811, 806,
810, 802, 813, 812, 803, 804, 814, 805, 811, 806,
807, 808, 809, 815, 800, 801
};
}ENC โ
public const int mod_feint = 623;
public const int sustain_PER = 443;
public const int sustain_LER = 444;
public const int mod_flurry = 621;
public const int encTail = 419;
public const int negatePoison = 420;
public const int negateBlind = 421;
public const int negateSteal = 426;
public const int innocence = 418;
public const int negateNeckHunt = 427;
public const int breathing = 429;
public const int encTail = 419;
public const int allNeckHunt = 428;
public const int negateShockwave = 430;
public const int knightly = 438;
public const int allNeckHunt = 428;
public const int negateParry = 439;
public const int breathing = 429;
public const int innocence = 418;
public const int loving = 417;
public const int invisibility = 415;
public const int seeInvisible = 416;
public const int counter = 380;
public const int expMod = 403;
public const int seeInvisible = 416;
public const int weightMod = 404;
public const int slowDecay = 405;
public const int resMutation = 406;
public const int travelSpeed = 407;
public const int mod_cleave = 622;
public const int slowDecay = 405;
public const int invisibility = 415;
public const int sustain_STR = 440;
public const int encHit = 414;
public const int sustain_END = 441;
public const int sustain_DEX = 442;
public const int encHit = 414;
public const int deathagony = 488;
public const int sustain_PER = 443;
public const int music_drunk = 489;
public const int extendedSentence = 494;
public const int saddle = 495;
public const int mod_ammo = 600;
public const int creativeChef = 487;
public const int deathagony = 488;
public const int mod_reload = 601;
public const int mod_chaser = 620;
public const int sustain_END = 441;
public const int sustain_DEX = 442;
public const int mod_ammo_knockback = 603;
public const int safetyMeasure = 486;
public const int creativeChef = 487;
public const int mod_rapid = 602;
public const int slot_rune = 484;
public const int nonLethal = 485;
public const int sustain_LER = 444;
public const int safetyMeasure = 486;
public const int sustain_WIL = 445;
public const int sustain_CHA = 447;
public const int bane_dragon = 460;
public const int sustain_figure = 450;
public const int bane_undead = 461;
public const int bane_animal = 463;
public const int sustain_figure = 450;
public const int bane_man = 464;
public const int bane_machine = 465;
public const int bane_dragon = 460;
public const int bane_god = 466;
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]
public const int bane_machine = 465;
public const int slot_rune = 484;
public static readonly int[] IDS = new int[112]
{
656, 655, 654, 653, 651, 641, 650, 652, 660, 640,
661, 851, 663, 664, 665, 666, 667, 850, 624, 865,
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, 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
864, 852, 662, 623, 444, 621, 420, 421, 422, 423,
424, 425, 426, 427, 419, 428, 430, 431, 432, 435,
436, 437, 438, 439, 429, 418, 417, 416, 380, 381,
382, 383, 400, 401, 402, 403, 404, 405, 406, 407,
408, 409, 410, 411, 412, 622, 415, 440, 441, 414,
443, 489, 490, 491, 492, 493, 494, 495, 600, 488,
601, 604, 605, 606, 607, 608, 609, 620, 442, 603,
487, 602, 485, 486, 445, 446, 447, 450, 461, 462,
463, 464, 460, 466, 467, 468, 480, 481, 482, 483,
465, 484
};
}ElementContainerCard โ
public void CheckSkillActions()
TryLearn(6700, 1649, 0);
TryLearn(6720, 1657, 0);
TryLearn(6450, 132, 5);
TryLearn(6603, 6020, 50);
TryLearn(6603, 6020, 20);
}
void TryLearn(int eleAction, int reqEle, int lqlv)
{FACTION โ
public const int fAttraction = 2206;
public const int fFood = 2204;
public const int fSafety = 2205;
public const int fMoral = 2203;
public const int fFood = 2204;
public const int fPromo = 2202;
public const int fConstruction = 2003;
public const int fSafety = 2205;
public const int fMoral = 2203;
public static readonly int[] IDS = new int[53]
{
3702, 3601, 3602, 3603, 3604, 3701, 3606, 3700, 3600, 3605,
3500, 2119, 2206, 2204, 2203, 2202, 2201, 2200, 2116, 2120,
3500, 2119, 2206, 2205, 2204, 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
3705, 2003, 2203
};
}
public class Faction : EClasspublic FactionBranch FindBranch(Chara c)
return null;
}
public Chara FindChara(string id, bool inclurdeReserve = true)
{
foreach (FactionBranch child in GetChildren())
{
foreach (Chara member in child.members)
{
if (member.id == id)
{
return member;
}
}
}
if (inclurdeReserve)
{
foreach (HireInfo item in listReserve)
{
if (item.chara.id == id)
{
return item.chara;
}
}
}
return null;
}
public void AddGlobalPolicy(int id)
{
globalPolicies.Add(id);FEAT โ
public class FEAT
{
public const int featNorland = 1236;
public const int featLightEater = 1235;
public const int featSorter = 1643;
public const int featFisher = 1659;
public const int featLooter = 1660;
public const int featMana = 1611;
public const int featDismantler = 1661;
public const int featLooter = 1660;
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 featFoxBless = 1207;
public const int featDwarf = 1215;
public const int featMelilithCurse = 1206;
public const int featFoxBless = 1207;
public const int featCannibalism = 1205;
public const int featSlowFood = 1200;
public const int featLightEater = 1235;
public const int featHeavyEater = 1234;
public const int featSuccubus = 1216;
public const int featMelilithCurse = 1206;
public const int featMana = 1611;
public const int featSuccubus = 1216;
public const int featGolem = 1217;
public const int featElderCrab = 1219;
public const int featMetal = 1218;
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 featNirvana = 1231;
public const int featAdam = 1230;
public const int featLittleOne = 1229;
public const int featFate = 1220;
public const int featMetal = 1218;
public const int featElderCrab = 1219;
public const int featDismantler = 1661;
public const int featLife = 1610;
public const int featAdam = 1230;
public const int featNirvana = 1231;
public const int featArcher = 1404;
public const int featFarmer = 1403;
public const int featPaladin = 1407;
public const int featPaladin2 = 1408;
public const int featBoost = 1409;
public const int featWhiteVixen = 1414;
public const int featFoxMaid = 1415;
public const int featTourist = 1406;
public const int featInquisitor = 1416;
public const int featFoxMaid = 1415;
public const int featWitch = 1417;
public const int featElite = 1424;
public const int featInquisitor = 1416;
public const int featMimic = 1425;
public const int featPaladin2 = 1408;
public const int featPianist = 1405;
public const int featPaladin = 1407;
public const int featWizard = 1402;
public const int featTourist = 1406;
public const int featSadCreature = 1291;
public const int featPianist = 1405;
public const int featGod = 1292;
public const int featSevenPillars = 1293;
public const int featGod_element1 = 1300;
public const int featGod_earth1 = 1305;
public const int featNorland = 1236;
public const int featGod_wind1 = 1310;
public const int featGod_machine1 = 1315;
public const int featRoran = 1237;
public const int featArcher = 1404;
public const int featGod_healing1 = 1320;
public const int featGod_harvest1 = 1325;
public const int featGod_luck1 = 1330;
public const int featNeckHunter = 1426;
public const int featGod_harmony1 = 1335;
public const int featGod_oblivion1 = 1340;
public const int featGod_trickery1 = 1345;
public const int featGod_moonshadow1 = 1350;
public const int featThief = 1401;
public const int featWizard = 1402;
public const int featGod_harvest1 = 1325;
public const int featFarmer = 1403;
public const int featGoddess = 1290;
public const int featHarem = 1276;
public const int featNeckHunter = 1426;
public const int featGod_oblivion1 = 1340;
public const int featMurderer = 1428;
public const int featSadCreature = 1291;
public const int featDemon = 1239;
public const int featDisguise = 1427;
public const int featMassSummoner = 1240;
public const int featManyFace = 1429;
public const int featMeatCushion = 1241;
public const int featGeneSlot = 1242;
public const int featPegasus = 1246;
public const int featLibra = 1247;
public const int featDisguise = 1427;
public const int featMiscreation = 1248;
public const int featLibra = 1247;
public const int featBloodBond = 1249;
public const int featBadKarma = 1271;
public const int featPeacemaker = 1272;
public const int featBloom = 1273;
public const int featMiscreation = 1248;
public const int featMeatCushion = 1241;
public const int featRoran = 1237;
public const int featMurderer = 1428;
public const int featElder = 1238;
public const int featMassSummoner = 1240;
public const int featHarem = 1276;
public const int featElder = 1238;
public const int featManyFace = 1429;
public const int featAstralBody = 1430;
public const int featDeviant = 1431;
public const int featBelovedOne = 1275;
public const int featSlimeEvolution = 1274;
public const int featDemon = 1239;
public const int featBloom = 1273;
public const int featGoddess = 1290;
public const int featPeacemaker = 1272;
public static readonly int[] IDS = new int[153]
public static readonly int[] IDS = new int[156]
{
1236, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1642, 1650,
1235, 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, 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,
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
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, 1230, 1229, 1228,
1227, 1226, 1225, 1224, 1223, 1222, 1221, 1220, 1219, 1661,
1610, 1231, 1403, 1407, 1408, 1409, 1410, 1411, 1412, 1413,
1414, 1406, 1415, 1417, 1418, 1419, 1420, 1421, 1422, 1423,
1424, 1416, 1425, 1405, 1402, 1291, 1292, 1293, 1300, 1305,
1236, 1310, 1315, 1404, 1320, 1330, 1335, 1340, 1345, 1350,
1355, 1400, 1401, 1325, 1290, 1426, 1428, 1239, 1240, 1241,
1242, 1243, 1244, 1245, 1246, 1427, 1247, 1249, 1250, 1251,
1252, 1253, 1254, 1270, 1271, 1248, 1237, 1238, 1276, 1429,
1430, 1431, 1275, 1274, 1273, 1272
};
}
public class Feat : Elementpublic virtual List<string> Apply(int a, ElementContainer owner, bool hint = fal
ModBase(423, a, hide: false);
break;
case 1290:
case 1292:
ModBase(418, a * 100, hide: false);
break;
case 1239:FOOD โ
public class FOOD
{
public const int food_human = 708;
public const int food_cat = 701;
public const int kirimi = 707;
public const int creativeDish = 764;
public const int loseWeight = 706;
public const int food_poison = 702;
public const int food_bug = 704;
public const int gainWeight = 705;
public const int food_blood = 710;
public const int loseWeight = 706;
public const int food_love = 703;
public const int kirimi = 707;
public const int food_poison = 702;
public const int food_human = 708;
public const int food_cat = 701;
public const int food_undead = 709;
public const int justcooked = 757;
public const int food_blood = 710;
public const int food_god = 758;
public const int justcooked = 757;
public const int food_CHA = 700;
public const int creativeDish = 764;
public const int food_undead = 709;
public const int food_love = 703;
public const int food_bug = 704;
public const int food_god = 758;
public static readonly int[] IDS = new int[14]
{
708, 707, 706, 705, 710, 703, 702, 701, 757, 758,
700, 764, 709, 704
701, 764, 702, 704, 705, 706, 707, 708, 709, 710,
757, 700, 703, 758
};
}FoodEffect โ
public static void Proc(Chara c, Thing food, bool consume = true)
break;
}
}
if (!(food.trait is TraitGene) || !c.HasElement(1274))
if (!(food.trait is TraitGene) || !c.IsSlimeEvolvable)
{
return;
}MUTATION โ
public class MUTATION
{
public const int mutationStrN = 1521;
public const int mutationRegen = 1516;
public const int mutationCha = 1522;
public const int mutationRegenN = 1517;
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 mutationHairN = 1533;
public const int mutationHair = 1532;
public const int etherViolence = 1556;
public const int mutationBodyN = 1531;
public const int mutationBody = 1530;
public const int mutationLightningN = 1529;
public const int mutationLightning = 1528;
public const int mutationColdN = 1527;
public const int mutationCold = 1526;
public const int etherUgly = 1551;
public const int mutationBrainN = 1525;
public const int mutationCold = 1526;
public const int mutationBrain = 1524;
public const int mutationChaN = 1523;
public const int mutationBody = 1530;
public const int mutationCha = 1522;
public const int etherHead = 1557;
public const int mutationStrN = 1521;
public const int etherWing = 1554;
public const int mutationStr = 1520;
public const int etherAddict = 1559;
public const int mutationSpeedN = 1519;
public const int mutationSpeed = 1518;
public const int mutationBrainN = 1525;
public const int etherFeet = 1552;
public const int mutationHairN = 1533;
public const int etherWing = 1554;
public const int mutationSkinN = 1511;
public const int mutationDexN = 1515;
public const int etherRain = 1558;
public const int etherEye = 1553;
public const int mutationRegenN = 1517;
public const int etherManaBattery = 1564;
public const int mutationSpeed = 1518;
public const int etherProvoke = 1563;
public const int mutationRegen = 1516;
public const int etherPoisonHand = 1565;
public const int mutationStr = 1520;
public const int etherStupid = 1561;
public const int etherPoisonHand = 1565;
public const int etherWeak = 1560;
public const int etherManaBattery = 1564;
public const int etherAddict = 1559;
public const int etherProvoke = 1563;
public const int etherRain = 1558;
public const int etherArmor = 1562;
public const int etherHead = 1557;
public const int etherStupid = 1561;
public const int etherViolence = 1556;
public const int etherWeak = 1560;
public const int etherNeck = 1555;
public const int mutationSpeedN = 1519;
public const int etherArmor = 1562;
public static readonly int[] IDS = new int[40]
{
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
1516, 1517, 1510, 1550, 1532, 1531, 1530, 1529, 1528, 1527,
1551, 1526, 1524, 1523, 1522, 1521, 1520, 1519, 1518, 1525,
1552, 1533, 1554, 1511, 1512, 1513, 1514, 1515, 1553, 1564,
1563, 1565, 1561, 1560, 1559, 1558, 1557, 1556, 1555, 1562
};
}
public class Mutation : FeatNet โ
public static async UniTask<bool> UploadFile(string id, string password, string
public static async UniTask<FileInfo> DownloadFile(DownloadMeta item, string path, string idLang)
{
string fn = item.id + ".z";
string path2 = item.id + ".z";
string fullPath = path + path2.SanitizeFileName();
DownloadCahce caches = IO.LoadFile<DownloadCahce>(CorePath.ZoneSaveUser + "cache.txt") ?? new DownloadCahce();
if (caches.items.TryGetValue(item.id) == item.date.Replace("\"", "") && File.Exists(path + fn))
if (caches.items.TryGetValue(item.id) == item.date.Replace("\"", "") && File.Exists(fullPath))
{
Debug.Log("Returning Cache:" + path + fn);
return new FileInfo(path + fn);
Debug.Log("Returning Cache:" + fullPath);
return new FileInfo(fullPath);
}
using UnityWebRequest www = UnityWebRequest.Get(urlUpload + "files/" + idLang + "/" + fn);
www.downloadHandler = new DownloadHandlerFile(path + fn);
using UnityWebRequest www = UnityWebRequest.Get(urlUpload + item.path);
www.downloadHandler = new DownloadHandlerFile(fullPath);
try
{
await www.SendWebRequest();public static async UniTask<FileInfo> DownloadFile(DownloadMeta item, string pat
{
EClass.ui.Say(ex.Message);
}
FileInfo fileInfo = new FileInfo(path + fn);
FileInfo fileInfo = new FileInfo(fullPath);
if (!fileInfo.Exists || www.result != UnityWebRequest.Result.Success)
{
if (ShowNetError)POLICY โ
public const int legendary_heirloom = 2821;
public const int home_discount = 2800;
public const int incomeTransfer = 2711;
public const int license_furniture = 2819;
public const int resident_wanted = 2513;
public const int inquisition = 2507;
public const int ban_radio = 2510;
public const int license_general = 2820;
public const int legal_drug = 2505;
public const int resident_tax = 2512;
public const int human_right = 2506;
public const int self_sufficient = 2511;
public const int inquisition = 2507;
public const int ban_radio = 2510;
public const int nocturnal_life = 2508;
public const int vaccination = 2509;
public const int resident_tax = 2512;
public const int nocturnal_life = 2508;
public const int self_sufficient = 2511;
public const int food_for_people = 2502;
public const int trash_no = 2702;
public const int human_right = 2506;
public const int vaccination = 2509;
public const int border_watch = 2704;
public const int weed_no = 2703;
public const int incomeTransfer = 2711;
public const int forcePanty = 2712;
public const int livestock_priv = 2715;
public const int home_discount = 2800;
public const int open_business = 2810;
public const int tourist_safety = 2811;
public const int bed_quality = 2812;
public const int noMother = 2710;
public const int suite_room = 2813;
public const int mass_exhibition = 2814;
public const int noMother = 2710;
public const int bed_quality = 2812;
public const int store_ripoff = 2816;
public static readonly int[] IDS = new int[51]
{
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, 2712, 2715, 2810, 2811, 2812, 2813,
2814, 2710, 2816, 2817, 2818, 2709, 2708, 2707, 2706, 2705,
2822, 2828, 2827, 2826, 2825, 2824, 2823, 2821, 2711, 2819,
2700, 2516, 2515, 2514, 2513, 2510, 2820, 2500, 2701, 2501,
2503, 2504, 2505, 2506, 2507, 2508, 2512, 2511, 2502, 2702,
2509, 2704, 2703, 2712, 2715, 2800, 2810, 2811, 2710, 2813,
2814, 2812, 2816, 2817, 2818, 2709, 2708, 2707, 2706, 2705,
2815
};
}Party โ
public List<Chara> SetMembers()
return _members;
}
public int Count()
{
int num = members.Count;
foreach (Chara member in members)
{
num += member.Evalue(1431);
}
return num;
}
public void AddMemeber(Chara c, bool showMsg = false)
{
if (c.party == this)public bool HasElement(int ele, bool excludePC = false)
return false;
}
public int Count()
{
int num = 0;
foreach (Chara member in members)
{
if (!member.isDead)
{
num++;
}
}
return num;
}
public void RegisterSetup(int index)
{
Player.PartySetup partySetup = new Player.PartySetup();Player โ
public Layer SelectDomain(Action onKill = null)
public void RefreshEmptyAlly()
{
int num = MaxAlly - EClass.pc.party.members.Count + 1;
int num = MaxAlly - EClass.pc.party.Count() + 1;
if (num == lastEmptyAlly)
{
return;Religion โ
public virtual void LeaveFaith(Chara c, Religion newFaith, ConvertType type)
{
c.elements.SetBase(85, 0);
}
c.RemoveAllStances();
if (c.IsPC)
{
EClass.pc.faction.charaElements.OnLeaveFaith();+Ridability โ
File Created
public enum Ridability
{
Default,
GoodRide,
BadRide
}SKILL โ
public class SKILL
{
public const int armorLight = 120;
public const int shield = 123;
public const int fireproof = 50;
public const int throwing = 108;
public const int weaponScythe = 110;
public const int weaponCrossbow = 109;
public const int weaponBlunt = 111;
public const int weaponScythe = 110;
public const int armorLight = 120;
public const int climbing = 242;
public const int fishing = 245;
public const int armorHeavy = 122;
public const int twohand = 130;
public const int eyeofmind = 134;
public const int tactics = 132;
public const int twohand = 130;
public const int climbing = 242;
public const int music = 241;
public const int digging = 230;
public const int parasite = 227;
public const int riding = 226;
public const int mining = 220;
public const int lumberjack = 225;
public const int shield = 123;
public const int mining = 220;
public const int spotting = 210;
public const int weightlifting = 207;
public const int swimming = 200;
public const int stealth = 152;
public const int strategy = 135;
public const int eyeofmind = 134;
public const int marksman = 133;
public const int twowield = 131;
public const int weightlifting = 207;
public const int parasite = 227;
public const int lumberjack = 225;
public const int antiMagic = 93;
public const int penetration = 92;
public const int throwing = 108;
public const int weaponPolearm = 106;
public const int DEX = 72;
public const int END = 71;
public const int PV = 65;
public const int DEX = 72;
public const int DV = 64;
public const int vigor = 62;
public const int mana = 61;
public const int life = 60;
public const int acidproof = 51;
public const int vigor = 62;
public const int PER = 73;
public const int LER = 74;
public const int WIL = 75;
public const int MAG = 76;
public const int weaponDagger = 107;
public const int weaponPolearm = 106;
public const int weaponGun = 105;
public const int weaponBow = 104;
public const int weaponSword = 101;
public const int martial = 100;
public const int weaponCrossbow = 109;
public const int dmgDealt = 94;
public const int martial = 100;
public const int antiMagic = 93;
public const int penetration = 92;
public const int vopal = 91;
public const int CHA = 77;
public const int MAG = 76;
public const int weaponDagger = 107;
public const int fishing = 245;
public const int dmgDealt = 94;
public const int weaponBlunt = 111;
public const int gathering = 250;
public const int carpentry = 255;
public const int armorHeavy = 122;
public const int eleNether = 916;
public const int blacksmith = 256;
public const int eleSound = 917;
public const int eleHoly = 919;
public const int eleChaos = 920;
public const int eleMagic = 921;
public const int eleEther = 922;
public const int resDamage = 971;
public const int eleAcid = 923;
public const int eleVoid = 926;
public const int eleCat = 927;
public const int resFire = 950;
public const int resCold = 951;
public const int resLightning = 952;
public const int resDarkness = 953;
public const int eleNether = 916;
public const int elePoison = 915;
public const int resDarkness = 953;
public const int resMind = 954;
public const int resPoison = 955;
public const int resNether = 956;
public const int resCut = 964;
public const int gathering = 250;
public const int resCurse = 972;
public const int resDamage = 971;
public const int resImpact = 965;
public const int resDecay = 970;
public const int carpentry = 255;
public const int resImpact = 965;
public const int resCat = 973;
public const int resPoison = 955;
public const int resCurse = 972;
public const int eleMind = 914;
public const int resMind = 954;
public const int eleChaos = 920;
public const int elePoison = 915;
public const int eleLightning = 912;
public const int eleEther = 922;
public const int anatomy = 290;
public const int eleDarkness = 913;
public const int appraising = 289;
public const int alchemy = 257;
public const int building = 288;
public const int sculpture = 258;
public const int cooking = 287;
public const int jewelry = 259;
public const int eleDarkness = 913;
public const int weaving = 260;
public const int reading = 285;
public const int handicraft = 261;
public const int negotiation = 291;
public const int lockpicking = 280;
public const int stealing = 281;
public const int handicraft = 261;
public const int eleMind = 914;
public const int weaving = 260;
public const int farming = 286;
public const int jewelry = 259;
public const int cooking = 287;
public const int sculpture = 258;
public const int building = 288;
public const int alchemy = 257;
public const int appraising = 289;
public const int blacksmith = 256;
public const int anatomy = 290;
public const int lockpicking = 280;
public const int negotiation = 291;
public const int investing = 292;
public const int farming = 286;
public const int reading = 285;
public const int regeneration = 300;
public const int eleLightning = 912;
public const int eleCold = 911;
public const int eleFire = 910;
public const int disarmTrap = 293;
public const int env = 313;
public const int fun = 312;
public const int disarmTrap = 293;
public const int bladder = 311;
public const int hygine = 310;
public const int resDecay = 970;
public const int bladder = 311;
public const int memorization = 307;
public const int faith = 306;
public const int magicDevice = 305;
public const int meditation = 301;
public const int controlmana = 302;
public const int magicDevice = 305;
public const int manaCapacity = 303;
public const int casting = 304;
public const int memorization = 307;
public const int hygine = 310;
public static readonly int[] IDS = new int[134]
public static readonly int[] IDS = new int[136]
{
120, 50, 108, 109, 110, 242, 122, 132, 130, 241,
240, 237, 235, 230, 227, 226, 220, 123, 210, 200,
152, 151, 150, 135, 134, 133, 131, 207, 225, 92,
106, 71, 70, 68, 67, 66, 65, 72, 64, 61,
60, 57, 56, 55, 51, 62, 73, 74, 75, 105,
104, 103, 102, 101, 100, 94, 93, 91, 90, 80,
79, 78, 77, 76, 107, 245, 111, 255, 916, 917,
918, 919, 921, 922, 923, 924, 925, 926, 950, 951,
952, 953, 915, 954, 956, 957, 958, 959, 960, 961,
962, 963, 964, 250, 972, 971, 970, 965, 955, 914,
920, 912, 290, 289, 288, 287, 913, 285, 291, 281,
261, 260, 259, 258, 257, 256, 280, 292, 286, 300,
911, 910, 313, 312, 293, 310, 311, 306, 301, 302,
305, 303, 304, 307
123, 50, 110, 111, 120, 245, 130, 134, 132, 242,
241, 240, 237, 235, 230, 226, 225, 220, 210, 207,
200, 152, 151, 150, 135, 133, 131, 227, 93, 108,
72, 71, 70, 68, 67, 66, 65, 64, 62, 61,
60, 57, 56, 55, 51, 73, 74, 75, 76, 107,
106, 105, 104, 103, 102, 101, 109, 100, 92, 91,
90, 80, 79, 78, 77, 94, 250, 122, 256, 917,
918, 919, 920, 921, 971, 923, 924, 925, 926, 927,
950, 951, 952, 916, 953, 955, 956, 957, 958, 959,
960, 961, 962, 963, 964, 965, 255, 973, 972, 954,
915, 922, 913, 257, 258, 259, 260, 261, 280, 281,
914, 286, 287, 288, 289, 290, 291, 292, 285, 300,
912, 911, 910, 293, 313, 312, 311, 970, 307, 306,
305, 301, 302, 303, 304, 310
};
}
public class Skill : ElementSLOT โ
public class SLOT
{
public const int back = 33;
public const int arm = 34;
public const int toolbelt = 44;
public const int hand = 35;
public const int token = 43;
public const int finger = 36;
public const int ammo = 42;
public const int waist = 37;
public const int range = 41;
public const int foot = 39;
public const int tool = 40;
public const int lightsource = 45;
public const int leg = 38;
public const int tool = 40;
public const int waist = 37;
public const int toolbelt = 44;
public const int finger = 36;
public const int range = 41;
public const int hand = 35;
public const int token = 43;
public const int arm = 34;
public const int torso = 32;
public const int leg = 38;
public const int neck = 31;
public const int ammo = 42;
public const int head = 30;
public const int foot = 39;
public const int back = 33;
public const int lightsource = 45;
public static readonly int[] IDS = new int[16]
{
33, 34, 35, 36, 37, 39, 45, 40, 44, 41,
43, 32, 38, 31, 42, 30
44, 43, 42, 41, 40, 38, 37, 36, 35, 34,
32, 31, 30, 39, 33, 45
};
}SPELL โ
public class SPELL
{
public const int hand_Impact = 50415;
public const int flare_Sound = 51207;
public const int SpEnchantWeapon = 8250;
public const int bit_Sound = 51107;
public const int ball_Holy = 50109;
public const int sword_Sound = 51007;
public const int flare_Nerve = 51208;
public const int puddle_Sound = 50907;
public const int bit_Nerve = 51108;
public const int weapon_Sound = 50807;
public const int sword_Nerve = 51008;
public const int miasma_Sound = 50707;
public const int puddle_Nerve = 50908;
public const int funnel_Sound = 50607;
public const int weapon_Nerve = 50808;
public const int arrow_Sound = 50507;
public const int sword_ = 7008;
public const int hand_Sound = 50407;
public const int miasma_Nerve = 50708;
public const int bolt_Sound = 50307;
public const int arrow_Nerve = 50508;
public const int hand_Void = 50416;
public const int hand_Nerve = 50408;
public const int ball_Sound = 50107;
public const int bolt_Nerve = 50308;
public const int flare_Nether = 51206;
public const int bit_ = 7009;
public const int ball_Nerve = 50108;
public const int bolt_Void = 50316;
public const int bolt_Nerve = 50308;
public const int hand_Nerve = 50408;
public const int arrow_Nerve = 50508;
public const int flare_Sound = 51207;
public const int funnel_Nerve = 50608;
public const int miasma_Nerve = 50708;
public const int weapon_Nerve = 50808;
public const int puddle_Nerve = 50908;
public const int sword_Nerve = 51008;
public const int bit_Nerve = 51108;
public const int flare_Nerve = 51208;
public const int ball_Holy = 50109;
public const int bolt_Holy = 50309;
public const int hand_Holy = 50409;
public const int arrow_Holy = 50509;
public const int funnel_Holy = 50609;
public const int weapon_Chaos = 50810;
public const int bit_Nether = 51106;
public const int miasma_Chaos = 50710;
public const int sword_Nether = 51006;
public const int funnel_Chaos = 50610;
public const int puddle_Nether = 50906;
public const int arrow_Chaos = 50510;
public const int arrow_Void = 50516;
public const int hand_Chaos = 50410;
public const int hand_Poison = 50405;
public const int bolt_Chaos = 50310;
public const int bolt_Poison = 50305;
public const int weapon_ = 7007;
public const int puddle_Void = 50916;
public const int ball_Chaos = 50110;
public const int ball_Poison = 50105;
public const int flare_Holy = 51209;
public const int flare_Mind = 51204;
public const int bit_Holy = 51109;
public const int sword_Void = 51016;
public const int sword_Holy = 51009;
public const int arrow_Poison = 50505;
public const int puddle_Holy = 50909;
public const int bit_Mind = 51104;
public const int weapon_Holy = 50809;
public const int puddle_Mind = 50904;
public const int miasma_Holy = 50709;
public const int weapon_Mind = 50804;
public const int funnel_Holy = 50609;
public const int miasma_Mind = 50704;
public const int bit_Sound = 51107;
public const int funnel_Mind = 50604;
public const int puddle_Chaos = 50910;
public const int arrow_Mind = 50504;
public const int sword_Sound = 51007;
public const int hand_Mind = 50404;
public const int weapon_Sound = 50807;
public const int sword_Mind = 51004;
public const int flare_Poison = 51205;
public const int miasma_Holy = 50709;
public const int bit_Poison = 51105;
public const int funnel_Poison = 50605;
public const int sword_Poison = 51005;
public const int weapon_Poison = 50805;
public const int puddle_Poison = 50905;
public const int funnel_Void = 50616;
public const int weapon_Poison = 50805;
public const int weapon_Nether = 50806;
public const int miasma_Poison = 50705;
public const int miasma_Nether = 50706;
public const int ball_Nether = 50106;
public const int funnel_Nether = 50606;
public const int funnel_Poison = 50605;
public const int arrow_Nether = 50506;
public const int hand_Poison = 50405;
public const int hand_Nether = 50406;
public const int bolt_Poison = 50305;
public const int miasma_Poison = 50705;
public const int SpTeleport = 8200;
public const int bolt_Nether = 50306;
public const int ball_Poison = 50105;
public const int ball_Nether = 50106;
public const int flare_Mind = 51204;
public const int flare_Poison = 51205;
public const int bit_Mind = 51104;
public const int bit_Poison = 51105;
public const int arrow_Poison = 50505;
public const int weapon_Void = 50816;
public const int puddle_ = 7800;
public const int sword_Poison = 51005;
public const int bolt_Nether = 50306;
public const int puddle_Poison = 50905;
public const int hand_Nether = 50406;
public const int miasma_Void = 50716;
public const int miasma_Sound = 50707;
public const int bolt_Impact = 50315;
public const int funnel_Sound = 50607;
public const int weapon_Holy = 50809;
public const int arrow_Sound = 50507;
public const int sword_Holy = 51009;
public const int hand_Sound = 50407;
public const int miasma_Ether = 50712;
public const int bolt_Sound = 50307;
public const int weapon_Ether = 50812;
public const int flare_ = 7010;
public const int bolt_Mind = 50304;
public const int ball_Sound = 50107;
public const int sword_Ether = 51012;
public const int flare_Nether = 51206;
public const int bit_Ether = 51112;
public const int bit_Nether = 51106;
public const int flare_Ether = 51212;
public const int sword_Nether = 51006;
public const int ball_Acid = 50113;
public const int puddle_Nether = 50906;
public const int funnel_Impact = 50615;
public const int weapon_Nether = 50806;
public const int bolt_Acid = 50313;
public const int miasma_Nether = 50706;
public const int hand_Acid = 50413;
public const int funnel_Nether = 50606;
public const int arrow_Acid = 50513;
public const int arrow_Nether = 50506;
public const int funnel_Acid = 50613;
public const int puddle_Sound = 50907;
public const int miasma_Acid = 50713;
public const int sword_Mind = 51004;
public const int weapon_Acid = 50813;
public const int sword_Chaos = 51010;
public const int puddle_Acid = 50913;
public const int flare_Chaos = 51210;
public const int sword_Acid = 51013;
public const int bolt_Impact = 50315;
public const int bit_Acid = 51113;
public const int bolt_ = 7002;
public const int ball_Impact = 50115;
public const int sword_Cut = 51014;
public const int puddle_Cut = 50914;
public const int weapon_Cut = 50814;
public const int hand_Impact = 50415;
public const int funnel_Ether = 50612;
public const int puddle_Cut = 50914;
public const int miasma_Cut = 50714;
public const int funnel_Cut = 50614;
public const int arrow_Cut = 50514;
public const int hand_Cut = 50414;
public const int bolt_Cut = 50314;
public const int arrow_Impact = 50515;
public const int ball_Cut = 50114;
public const int hand_ = 7003;
public const int flare_Acid = 51213;
public const int weapon_Cut = 50814;
public const int funnel_Cut = 50614;
public const int arrow_Impact = 50515;
public const int arrow_Ether = 50512;
public const int funnel_Impact = 50615;
public const int hand_Ether = 50412;
public const int miasma_Impact = 50715;
public const int bolt_Ether = 50312;
public const int sword_Void = 51016;
public const int weapon_Chaos = 50810;
public const int puddle_Void = 50916;
public const int miasma_Chaos = 50710;
public const int weapon_Void = 50816;
public const int puddle_Impact = 50915;
public const int miasma_Void = 50716;
public const int sword_Impact = 51015;
public const int funnel_Void = 50616;
public const int bit_Impact = 51115;
public const int arrow_Void = 50516;
public const int flare_Impact = 51215;
public const int hand_Void = 50416;
public const int puddle_Chaos = 50910;
public const int bolt_Void = 50316;
public const int funnel_Chaos = 50610;
public const int ball_ = 7001;
public const int hand_Chaos = 50410;
public const int ball_Void = 50116;
public const int bolt_Chaos = 50310;
public const int flare_Impact = 51215;
public const int ball_Void = 50116;
public const int bit_Impact = 51115;
public const int ball_Chaos = 50110;
public const int sword_Impact = 51015;
public const int flare_Holy = 51209;
public const int puddle_Impact = 50915;
public const int bit_Holy = 51109;
public const int weapon_Impact = 50815;
public const int arrow_Chaos = 50510;
public const int ball_Cut = 50114;
public const int puddle_Holy = 50909;
public const int bit_Chaos = 51110;
public const int sword_Chaos = 51010;
public const int flare_Acid = 51213;
public const int flare_Chaos = 51210;
public const int sword_Acid = 51013;
public const int miasma_Impact = 50715;
public const int funnel_ = 7005;
public const int ball_Ether = 50112;
public const int puddle_Magic = 50911;
public const int bit_Chaos = 51110;
public const int bolt_Ether = 50312;
public const int weapon_Magic = 50811;
public const int bolt_Magic = 50311;
public const int weapon_Impact = 50815;
public const int miasma_ = 7006;
public const int ball_Magic = 50111;
public const int miasma_Magic = 50711;
public const int puddle_Ether = 50912;
public const int bolt_Cold = 50301;
public const int hand_Ether = 50412;
public const int flare_Darkness = 51203;
public const int arrow_Ether = 50512;
public const int SpHero = 8504;
public const int funnel_Ether = 50612;
public const int SpWisdom = 8503;
public const int puddle_Acid = 50913;
public const int SpHolyShield = 8502;
public const int weapon_Acid = 50813;
public const int SpCatsEye = 8501;
public const int miasma_Acid = 50713;
public const int SpHolyVeil = 8500;
public const int funnel_Acid = 50613;
public const int SpVanishHex = 8491;
public const int arrow_Acid = 50513;
public const int SpRemoveHex = 8490;
public const int hand_Acid = 50413;
public const int SpCureMutation = 8480;
public const int bolt_Acid = 50313;
public const int SpRestoreMind = 8471;
public const int arrow_ = 7004;
public const int SpRestoreBody = 8470;
public const int ball_Acid = 50113;
public const int SpHOT = 8450;
public const int flare_Ether = 51212;
public const int SpRevive = 8430;
public const int bit_Ether = 51112;
public const int SpHealJure = 8406;
public const int sword_Ether = 51012;
public const int SpHealOdina = 8405;
public const int puddle_Ether = 50912;
public const int SpHealEris = 8404;
public const int weapon_Ether = 50812;
public const int SpResEle = 8506;
public const int miasma_Ether = 50712;
public const int SpBreath = 8507;
public const int bit_Acid = 51113;
public const int SpSpeedUp = 8510;
public const int puddle_Mind = 50904;
public const int SpRebirth = 8550;
public const int weapon_Mind = 50804;
public const int SpTransmuteBroom = 8790;
public const int miasma_Mind = 50704;
public const int SpIncognito = 8780;
public const int SpFear = 8720;
public const int SpHeal = 8403;
public const int SpTransmuteBroom = 8790;
public const int SpSpeedDown = 8710;
public const int SpSilence = 8700;
public const int SpBrightnessOfLife = 8555;
public const int SpGravity = 8708;
public const int SpTransmutePutit = 8791;
public const int SpHealCritical = 8402;
public const int SpTransmuteCat = 8792;
public const int SpHealLight = 8400;
public const int SpUncurse = 8240;
public const int SpTelekinesis = 8215;
public const int SpSummonTako = 9009;
public const int SpGate = 8202;
public const int SpSummonFish = 9008;
public const int SpTeleportShort = 8201;
public const int SpSummonOrc = 9007;
public const int SpTeleport = 8200;
public const int SpSummonYeek = 9006;
public const int puddle_ = 7800;
public const int SpSummonPawn = 9005;
public const int flare_ = 7010;
public const int SpSummonMonster = 9004;
public const int bit_ = 7009;
public const int SpSummonTentacle = 9003;
public const int sword_ = 7008;
public const int SpSummonFire = 9002;
public const int weapon_ = 7007;
public const int SpSummonUndeadSister = 9001;
public const int miasma_ = 7006;
public const int SpSummon = 9000;
public const int funnel_ = 7005;
public const int SpWeb = 8801;
public const int arrow_ = 7004;
public const int SpDarkness = 8800;
public const int hand_ = 7003;
public const int SpEvac = 8221;
public const int bolt_ = 7002;
public const int SpIdentify = 8230;
public const int ball_ = 7001;
public const int SpIdentifyG = 8232;
public const int SpReturn = 8220;
public const int SpBrightnessOfLife = 8555;
public const int SpEvac = 8221;
public const int SpSummonShubKid = 9010;
public const int SpIdentify = 8230;
public const int SpRebirth = 8550;
public const int SpIdentifyG = 8232;
public const int SpBreath = 8507;
public const int SpHealLight = 8400;
public const int SpWish = 8390;
public const int SpChangeMaterialG = 8286;
public const int SpChangeMaterial = 8285;
public const int SpChangeMaterialLesser = 8284;
public const int SpHealHeavy = 8401;
public const int SpChangeMaterial = 8285;
public const int SpFaith = 8281;
public const int SpLighten = 8280;
public const int SpMagicMap = 8260;
public const int SpEnchantArmorGreat = 8256;
public const int SpEnchantWeaponGreat = 8251;
public const int SpEnchantWeapon = 8250;
public const int SpChangeMaterialLesser = 8284;
public const int SpUncurseG = 8241;
public const int SpHealCritical = 8402;
public const int SpUncurse = 8240;
public const int SpHeal = 8403;
public const int SpLighten = 8280;
public const int SpHealEris = 8404;
public const int ball_Mind = 50104;
public const int SpResEle = 8506;
public const int SpTransmuteCat = 8792;
public const int SpHero = 8504;
public const int SpWeb = 8801;
public const int SpWisdom = 8503;
public const int ball_Lightning = 50102;
public const int SpHolyShield = 8502;
public const int flare_Cold = 51201;
public const int SpCatsEye = 8501;
public const int bit_Cold = 51101;
public const int SpHolyVeil = 8500;
public const int sword_Cold = 51001;
public const int SpVanishHex = 8491;
public const int puddle_Cold = 50901;
public const int SpRemoveHex = 8490;
public const int weapon_Cold = 50801;
public const int SpCureMutation = 8480;
public const int miasma_Cold = 50701;
public const int SpRestoreMind = 8471;
public const int funnel_Cold = 50601;
public const int SpRestoreBody = 8470;
public const int arrow_Cold = 50501;
public const int SpHOT = 8450;
public const int hand_Cold = 50401;
public const int SpRevive = 8430;
public const int ball_Cold = 50101;
public const int SpHealJure = 8406;
public const int flare_Fire = 51200;
public const int SpHealOdina = 8405;
public const int bit_Fire = 51100;
public const int SpSpeedUp = 8510;
public const int sword_Fire = 51000;
public const int SpSummonShadow = 9050;
public const int puddle_Fire = 50900;
public const int SpSummonTidalWave = 9051;
public const int bolt_Lightning = 50302;
public const int SpSummonTrooper = 9052;
public const int hand_Lightning = 50402;
public const int bit_Lightning = 51102;
public const int arrow_Lightning = 50502;
public const int sword_Lightning = 51002;
public const int puddle_Lightning = 50902;
public const int weapon_Lightning = 50802;
public const int miasma_Lightning = 50702;
public const int funnel_Lightning = 50602;
public const int bit_Darkness = 51103;
public const int flare_Lightning = 51202;
public const int sword_Darkness = 51003;
public const int arrow_Lightning = 50502;
public const int puddle_Darkness = 50903;
public const int bolt_Lightning = 50302;
public const int weapon_Darkness = 50803;
public const int SpTelekinesis = 8215;
public const int miasma_Darkness = 50703;
public const int ball_Lightning = 50102;
public const int funnel_Darkness = 50603;
public const int flare_Cold = 51201;
public const int arrow_Darkness = 50503;
public const int bit_Cold = 51101;
public const int weapon_Fire = 50800;
public const int sword_Cold = 51001;
public const int hand_Darkness = 50403;
public const int hand_Lightning = 50402;
public const int ball_Darkness = 50103;
public const int flare_Lightning = 51202;
public const int SpGate = 8202;
public const int bit_Lightning = 51102;
public const int bolt_Darkness = 50303;
public const int sword_Lightning = 51002;
public const int funnel_Mind = 50604;
public const int puddle_Lightning = 50902;
public const int arrow_Mind = 50504;
public const int weapon_Lightning = 50802;
public const int hand_Mind = 50404;
public const int miasma_Lightning = 50702;
public const int bolt_Mind = 50304;
public const int bolt_Darkness = 50303;
public const int SpTeleportShort = 8201;
public const int SpDarkness = 8800;
public const int ball_Mind = 50104;
public const int miasma_Fire = 50700;
public const int flare_Darkness = 51203;
public const int arrow_Fire = 50500;
public const int bit_Darkness = 51103;
public const int SpSummonMachine = 9053;
public const int sword_Darkness = 51003;
public const int SpSummonTrooper = 9052;
public const int puddle_Darkness = 50903;
public const int SpSummonTidalWave = 9051;
public const int weapon_Darkness = 50803;
public const int SpSummonShadow = 9050;
public const int miasma_Darkness = 50703;
public const int SpSummonShubKid = 9010;
public const int funnel_Darkness = 50603;
public const int SpSummonTako = 9009;
public const int arrow_Darkness = 50503;
public const int SpSummonFish = 9008;
public const int hand_Darkness = 50403;
public const int SpSummonOrc = 9007;
public const int puddle_Cold = 50901;
public const int SpSummonYeek = 9006;
public const int weapon_Cold = 50801;
public const int SpSummonPawn = 9005;
public const int miasma_Cold = 50701;
public const int SpSummonMonster = 9004;
public const int funnel_Cold = 50601;
public const int SpSummonTentacle = 9003;
public const int SpDrawBacker = 9503;
public const int SpSummonFire = 9002;
public const int SpDrawMetal = 9502;
public const int SpSummonUndeadSister = 9001;
public const int SpDrawMonster = 9501;
public const int SpSummon = 9000;
public const int SpWardMonster = 9500;
public const int SpSummonDragon = 9054;
public const int SpStripBlessing = 9210;
public const int SpSummonUndead = 9055;
public const int SpShutterHex = 9200;
public const int SpSummonImotoroid = 9056;
public const int SpExterminate = 9160;
public const int SpMoonArrow = 9156;
public const int SpMoonSpear = 9155;
public const int SpEarthquake = 9151;
public const int SpMeteor = 9150;
public const int hand_Fire = 50400;
public const int SpSummonImotoroid = 9056;
public const int bolt_Fire = 50300;
public const int SpSummonUndead = 9055;
public const int bit_Void = 51116;
public const int SpSummonDragon = 9054;
public const int ball_Fire = 50100;
public const int SpSummonMachine = 9053;
public const int FieldSpider = 10000;
public const int SpUncurseG = 8241;
public const int FieldFeast = 10001;
public const int FieldSpider = 10000;
public const int bit_Void = 51116;
public const int SpDrawBacker = 9503;
public const int arrow_Cold = 50501;
public const int funnel_Fire = 50600;
public const int hand_Cold = 50401;
public const int SpDrawMetal = 9502;
public const int bolt_Cold = 50301;
public const int SpWardMonster = 9500;
public const int SpReturn = 8220;
public const int SpStripBlessing = 9210;
public const int ball_Cold = 50101;
public const int SpShutterHex = 9200;
public const int flare_Fire = 51200;
public const int SpExterminate = 9160;
public const int bit_Fire = 51100;
public const int SpMoonArrow = 9156;
public const int sword_Fire = 51000;
public const int SpMoonSpear = 9155;
public const int puddle_Fire = 50900;
public const int SpEarthquake = 9151;
public const int weapon_Fire = 50800;
public const int SpDrawMonster = 9501;
public const int miasma_Fire = 50700;
public const int funnel_Fire = 50600;
public const int arrow_Fire = 50500;
public const int hand_Fire = 50400;
public const int bolt_Fire = 50300;
public const int ball_Fire = 50100;
public const int flare_Void = 51216;
public static readonly int[] IDS = new int[296]
{
50415, 51207, 51107, 51007, 50907, 50807, 50707, 50607, 50507, 50407,
50307, 50416, 50107, 51206, 50108, 50316, 50308, 50408, 50508, 50608,
50708, 50808, 50908, 51008, 51108, 51208, 50109, 50309, 50409, 50509,
50609, 51106, 51006, 50906, 50516, 50405, 50305, 50916, 50105, 51204,
51016, 50505, 51104, 50904, 50804, 50704, 50604, 50504, 50404, 51004,
50709, 50605, 50805, 50616, 50806, 50706, 50606, 50506, 50406, 50705,
50306, 50106, 51205, 51105, 50816, 51005, 50905, 50716, 50315, 50809,
51009, 50712, 50812, 50304, 51012, 51112, 51212, 50113, 50615, 50313,
50413, 50513, 50613, 50713, 50813, 50913, 51013, 51113, 50115, 51214,
51114, 51014, 50914, 50814, 50612, 50714, 50514, 50414, 50314, 50515,
50114, 51213, 50614, 50512, 50412, 50312, 50810, 50710, 50915, 51015,
51115, 51215, 50910, 50610, 50410, 50310, 50116, 50110, 51209, 51109,
50510, 50909, 51010, 51210, 50715, 50112, 51211, 51111, 51011, 50911,
51110, 50811, 50611, 50511, 50411, 50311, 50815, 50111, 50711, 50912,
50301, 51203, 8504, 8503, 8502, 8501, 8500, 8491, 8490, 8480,
8471, 8470, 8450, 8430, 8406, 8405, 8404, 8506, 8507, 8510,
8550, 8790, 8780, 8776, 8775, 8770, 8721, 8720, 8403, 8710,
8707, 8706, 8705, 8704, 8702, 8700, 8555, 8708, 8791, 8402,
8400, 8215, 8202, 8201, 8200, 7800, 7010, 7009, 7008, 7007,
7006, 7005, 7004, 7003, 7002, 7001, 8220, 8221, 8230, 8232,
8390, 8380, 8300, 8288, 8286, 8285, 8284, 8401, 8281, 8260,
8256, 8255, 8251, 8250, 8241, 8240, 8280, 50104, 8792, 8801,
50102, 51201, 51101, 51001, 50901, 50801, 50701, 50601, 50501, 50401,
50101, 51200, 51100, 51000, 50900, 50302, 50402, 50502, 50602, 51103,
51003, 50903, 50803, 50703, 50603, 50503, 50800, 50403, 50103, 51202,
51102, 51002, 50902, 50802, 50702, 50303, 8800, 50700, 50500, 9053,
9052, 9051, 9050, 9010, 9009, 9008, 9007, 9006, 9005, 9004,
9003, 9002, 9001, 9000, 9054, 9055, 9056, 9150, 50400, 50300,
51116, 50100, 10001, 10000, 9503, 50600, 9502, 9500, 9210, 9200,
9160, 9156, 9155, 9151, 9501, 51216
8250, 50109, 51208, 51108, 51008, 50908, 50808, 7008, 50708, 50508,
50408, 50308, 7009, 50108, 51207, 50608, 50309, 50409, 50509, 50810,
50710, 50610, 50510, 50410, 50310, 7007, 50110, 51209, 51109, 51009,
50909, 50809, 50709, 50609, 51107, 50910, 51007, 50807, 51205, 51105,
51005, 50905, 50805, 50705, 50106, 50605, 50405, 50305, 8200, 50105,
51204, 51104, 50505, 7800, 50306, 50406, 50707, 50607, 50507, 50407,
50307, 7010, 50107, 51206, 51106, 51006, 50906, 50806, 50706, 50606,
50506, 50907, 51004, 51010, 51210, 50315, 7002, 50115, 51214, 51114,
51014, 50415, 50914, 50714, 50614, 50514, 50414, 50314, 7003, 50814,
50515, 50615, 50715, 51016, 50916, 50816, 50716, 50616, 50516, 50416,
50316, 7001, 50116, 51215, 51115, 51015, 50915, 50815, 50114, 51110,
51213, 51013, 7005, 50112, 51211, 51111, 51011, 50911, 50312, 50811,
50611, 50511, 50411, 50311, 7006, 50111, 50711, 50412, 50512, 50612,
50913, 50813, 50713, 50613, 50513, 50413, 50313, 7004, 50113, 51212,
51112, 51012, 50912, 50812, 50712, 51113, 50904, 50804, 50704, 8780,
8776, 8775, 8770, 8721, 8720, 8790, 8710, 8707, 8706, 8705,
8704, 8702, 8700, 8708, 8791, 8792, 8240, 9009, 9008, 9007,
9006, 9005, 9004, 9003, 9002, 9001, 9000, 8801, 8800, 8221,
8230, 8232, 8555, 9010, 8550, 8507, 8400, 8390, 8380, 8300,
8288, 8286, 8401, 8285, 8281, 8280, 8260, 8256, 8255, 8251,
8284, 8402, 8403, 8404, 8506, 8504, 8503, 8502, 8501, 8500,
8491, 8490, 8480, 8471, 8470, 8450, 8430, 8406, 8405, 8510,
9050, 9051, 9052, 51102, 51002, 50902, 50802, 50702, 50602, 51202,
50502, 50302, 8215, 50102, 51201, 51101, 51001, 50402, 50103, 8202,
50303, 50604, 50504, 50404, 50304, 8201, 50104, 51203, 51103, 51003,
50903, 50803, 50703, 50603, 50503, 50403, 50901, 50801, 50701, 50601,
9503, 9502, 9501, 9500, 9210, 9200, 9160, 9156, 9155, 9151,
9150, 9056, 9055, 9054, 9053, 10000, 8241, 10001, 51116, 50501,
50401, 50301, 8220, 50101, 51200, 51100, 51000, 50900, 50800, 50700,
50600, 50500, 50400, 50300, 50100, 51216
};
}
public class Spell : AbilitySurvivalManager โ
case "big_daddy":
case "big_daddy2":
case "littleOne":
case "sorin":
case "vesda":
case "azzrasizzle":
case "mamani":
return false;
default:
if (EClass.game.cards.globalCharas.Find(r.id) == null)TaskDig โ
{
if (GetHitResult(p) != HitResult.Invalid)
{
string idRecipe = GetIdRecipe(p);
int num2 = (p.HasBridge ? p.matBridge.hardness : p.matFloor.hardness);
TaskDig taskDig = new TaskDig();
taskDig.owner = owner;
taskDig.pos = p;
taskDig.SetTarget(owner, owner.Tool);
if (!taskDig.IsTooHard)
if (mode == Mode.Default)
{
if (EClass._zone.IsRegion)
EClass._map.MineFloor(p);
p.Animate(AnimeID.Dig, animeBlock: true);
}
else
{
string idRecipe = GetIdRecipe(p);
int num2 = (p.HasBridge ? p.matBridge.hardness : p.matFloor.hardness);
TaskDig taskDig = new TaskDig();
taskDig.owner = owner;
taskDig.pos = p;
taskDig.SetTarget(owner, owner.Tool);
if (!taskDig.IsTooHard)
{
Thing map = GetTreasureMap(p);
if (map != null || EClass.debug.enable)
if (EClass._zone.IsRegion)
{
if (map == null)
Thing map = GetTreasureMap(p);
if (map != null || EClass.debug.enable)
{
map = ThingGen.Create("map_treasure", -1, EClass.pc.LV);
if (map == null)
{
map = ThingGen.Create("map_treasure", -1, EClass.pc.LV);
}
SE.Play("ding_skill");
Msg.Say("digTreasure");
Rand.UseSeed(map.refVal, delegate
{
Thing thing = ThingGen.CreateTreasure("chest_treasure", map.LV);
EClass._zone.AddCard(thing, p);
ThingGen.TryLickChest(thing);
});
map.Destroy();
EClass.player.willAutoSave = true;
return;
}
SE.Play("ding_skill");
Msg.Say("digTreasure");
Rand.UseSeed(map.refVal, delegate
}
switch (mode)
{
case Mode.RemoveFloor:
EClass._map.MineFloor(p, owner);
p.Animate(AnimeID.Dig, animeBlock: true);
if (!owner.IsAgent)
{
Thing thing = ThingGen.CreateTreasure("chest_treasure", map.LV);
EClass._zone.AddCard(thing, p);
ThingGen.TryLickChest(thing);
});
map.Destroy();
EClass.player.willAutoSave = true;
return;
owner.elements.ModExp(230, 20 + num2 / 2);
}
break;
case Mode.Ramp:
EClass._map.MineFloor(p, owner);
break;
}
}
switch (mode)
{
case Mode.Default:
EClass._map.SetBridge(p.x, p.z, 0, 0, 0, 0, 0);
break;
case Mode.RemoveFloor:
EClass._map.MineFloor(p, owner);
p.Animate(AnimeID.Dig, animeBlock: true);
if (!owner.IsAgent)
if (EClass._zone.IsCrime(owner, this))
{
owner.elements.ModExp(230, 20 + num2 / 2);
EClass.player.ModKarma(-1);
}
break;
case Mode.Ramp:
EClass._map.MineFloor(p, owner);
break;
}
if (EClass._zone.IsCrime(owner, this))
{
EClass.player.ModKarma(-1);
}
if (EClass.rnd(2) == 0)
{
owner.stamina.Mod(-1);
}
if (owner != null)
{
if (owner.IsPC)
if (EClass.rnd(2) == 0)
{
EClass.player.recipes.ComeUpWithRecipe(idRecipe, 30);
owner.stamina.Mod(-1);
}
if (owner.IsPC && owner.IsAliveInCurrentZone && EClass._zone.IsSkyLevel && !EClass.game.IsSurvival && owner.pos.IsSky)
if (owner != null)
{
EClass.pc.FallFromZone();
if (owner.IsPC)
{
EClass.player.recipes.ComeUpWithRecipe(idRecipe, 30);
}
if (owner.IsPC && owner.IsAliveInCurrentZone && EClass._zone.IsSkyLevel && !EClass.game.IsSurvival && owner.pos.IsSky)
{
EClass.pc.FallFromZone();
}
}
}
}TaskWater โ
public override IEnumerable<Status> Run()
}
void Water(Point p)
{
if (ShouldWater(p))
{
owner.ModExp(286, 15);
}
p.cell.isWatered = true;
if (!p.cell.blocked && EClass.rnd(5) == 0)
{ {
p.ModFire(-50, extinguish: true);
}
owner.ModExp(286, 15);
}
}Trait โ
public virtual bool CanCopyInBlueprint
public virtual bool CanBeAttacked => false;
public virtual bool CanBeTeleported => true;
public virtual bool CanBeTeleported => !owner.IsMultisize;
public virtual bool CanExtendBuild => false;TraitCrafter โ
public bool IsIngredient(int idx, SourceRecipe.Row r, Card c)
return false;
}
string[] array = ((idx == 0) ? r.ing1 : r.ing2);
if (r.type.ToEnum<MixType>() == MixType.Grind && idx == 1)
switch (r.type.ToEnum<MixType>())
{
case MixType.Grind:
{
if (idx != 1)
{
break;
}
if (r.tag.Contains("rust") && c.encLV >= 0)
{
return false;
}
if (r.tag.Contains("mod_eject"))
if (!r.tag.Contains("mod_eject"))
{
if (c.sockets == null)
{
return false;
}
bool flag = false;
foreach (int socket in c.sockets)
{
if (socket != 0)
{
flag = true;
}
}
if (!flag)
break;
}
if (c.sockets == null)
{
return false;
}
bool flag = false;
foreach (int socket in c.sockets)
{
if (socket != 0)
{
return false;
flag = true;
}
}
if (!flag)
{
return false;
}
break;
}
case MixType.SeedWork:
if (idx == 0 && c.id == "seed" && c.encLV == 0)
{
return false;
}
break;
}
string[] array2 = array;
foreach (string text in array2)TraitFigure โ
public override int GetValue()
{
return base.GetValue();
}
return (base.GetValue() + source.LV * 50) * ((!source.multisize) ? 1 : 2) * ((source.quality < 4) ? 1 : 2);
return MathEx.ClampToInt((base.GetValue() + Mathf.Min(source.LV, 2000000) * 50) * ((!source.multisize) ? 1 : 2) * ((source.quality < 4) ? 1 : 2));
}
public override void TrySetAct(ActPlan p)WidgetSearch โ
public override bool CheckClose()
return;
}
base.Update();
if (selected != null && (selected.isDestroyed || (selected.isChara && !selected.Chara.IsAliveInCurrentZone)))
{
selected = null;
isDirty = true;
}
if (lastZone != EMono._zone || isDirty)
{
lastSearch = "";WidgetStatsBar โ
}
if (extra.maxAlly)
{
Add(null, "maxAlly", iconMaxAlly, () => EMono.pc.party.members.Count - 1 + "/" + EMono.player.MaxAlly, () => (EMono.player.lastEmptyAlly >= 0) ? FontColor.Default : FontColor.Bad);
Add(null, "maxAlly", iconMaxAlly, () => EMono.pc.party.Count() - 1 + "/" + EMono.player.MaxAlly, () => (EMono.player.lastEmptyAlly >= 0) ? FontColor.Default : FontColor.Bad);
}
if (extra.maxMinion)
{Zone โ
public Chara FindChara(int uid)
return map.charas.Find((Chara c) => c.uid == uid);
}
public Chara FindDeadChara(string id)
{
return map.deadCharas.Find((Chara c) => c.id == id);
}
public int GetDeepestLv()
{
int max = base.lv;Zone_Aquli โ
public override void OnActivate()
}
base.OnActivate();
}
public override void OnVisitNewMapOrRegenerate()
{
base.OnVisitNewMapOrRegenerate();
if (FindChara("mamani") == null && FindDeadChara("mamani") == null && EClass.game.cards.globalCharas.Find("mamani") == null && EClass.pc.faction.FindChara("namamani") != null && EClass.pc.faction.FindChara("namamani2") != null)
{
AddChara("mamani", 48, 56).SetHomeZone(this);
}
}
}