EA 23.239 Nightly Patch 1
November 24, 2025
24 files modified. 1 new file created.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
AttackProcess (1)
public static int GetTwoHandEncBonus(Chara CC)
public static int GetTwoHandEncBonus(Chara CC, Thing w) ABILITY
public const int ActRush = 6450;
public const int ActGazeMana = 6623;
public const int ActBash = 5052;
public const int ActZap = 5051;
public const int AI_Sleep = 5050;
public const int TaskReadBoard = 5019;
public const int TaskFarm = 5020;
public const int TaskTrain = 5021;
public const int ActCancelTask = 5033;
public const int ActZap = 5051;
public const int GoalIdle = 5034;
public const int TaskMoveInstalled = 5036;
public const int TaskBuild = 5035;
public const int ActNoItem = 5037;
public const int AI_OpenLock = 5049;
public const int ActThrow = 5038;
public const int ActItem = 5048;
public const int AI_Fish = 5039;
public const int ActPick = 5047;
public const int ActRanged = 5040;
public const int ActInstall = 5046;
public const int AI_Read = 5041;
public const int AI_Drink = 5045;
public const int ActKick = 5042;
public const int ActChat = 5044;
public const int ActGazeMana = 6623;
public const int AI_TendAnimal = 5043;
public const int ActChat = 5044;
public const int AI_Read = 5041;
public const int AI_Drink = 5045;
public const int ActRanged = 5040;
public const int ActInstall = 5046;
public const int AI_Fish = 5039;
public const int ActPick = 5047;
public const int ActThrow = 5038;
public const int ActItem = 5048;
public const int ActNoItem = 5037;
public const int AI_OpenLock = 5049;
public const int TaskMoveInstalled = 5036;
public const int TaskBuild = 5035;
public const int ActKick = 5042;
public const int ActDrainBlood = 6626;
public const int ActInsult = 6630;
public const int ActCatHuffing = 6627;
public const int breathe_Nether = 50206;
public const int breathe_Sound = 50207;
public const int breathe_Void = 50216;
public const int TaskReadBoard = 5019;
public const int TaskPick = 5018;
public const int TaskTalk = 5017;
public const int TaskTame = 5016;
public const int TaskAttack = 5015;
public const int ActCatHuffing = 6627;
public const int TaskPlow = 5014;
public const int TaskAttack = 5015;
public const int ActWait = 5000;
public const int ActAttack = 5013;
public const int ActMelee = 5001;
public const int AI_Goto = 5012;
public const int Melee = 5002;
public const int TaskCut = 5011;
public const int Ranged = 5003;
public const int TaskDig = 5010;
public const int Sleep = 5004;
public const int TaskMine = 5009;
public const int Wait = 5005;
public const int General = 5008;
public const int breathe_Poison = 50205;
public const int Use = 5007;
public const int Shoot = 5006;
public const int General = 5008;
public const int Wait = 5005;
public const int TaskMine = 5009;
public const int Sleep = 5004;
public const int TaskDig = 5010;
public const int Ranged = 5003;
public const int TaskCut = 5011;
public const int Melee = 5002;
public const int AI_Goto = 5012;
public const int ActMelee = 5001;
public const int ActAttack = 5013;
public const int ActWait = 5000;
public const int Use = 5007;
public const int TaskPlow = 5014;
public const int breathe_Mind = 50204;
public const int breathe_Nether = 50206;
public const int breathe_Poison = 50205;
public const int breathe_Lightning = 50202;
public const int ActBladeStorm2 = 6665;
public const int breathe_Darkness = 50203;
public const int ActWhirlwind = 6666;
public const int ActMissileBarrage = 6667;
public const int breathe_Darkness = 50203;
public const int ActSummonSpecial = 6800;
public const int ActWhirlwind = 6666;
public const int StTaunt = 6700;
public const int StManaCost = 6720;
public const int ActMissileBarrage = 6667;
public const int breathe_Cold = 50201;
public const int ActHeadpat = 6904;
public const int breathe_Fire = 50200;
public const int SongSleep = 6750;
public const int SpTransmuteBat = 8793;
public const int SongTulip = 6751;
public const int breathe_ = 7000;
public const int SongValor = 6752;
public const int StTaunt = 6700;
public const int ActManaAbsorb = 6900;
public const int ActKizuamiTrick = 6903;
public const int ActJureHeal = 6901;
public const int ActLulwyTrick = 6902;
public const int ActHeadpat = 6904;
public const int ActKizuamiTrick = 6903;
public const int ActManaAbsorb = 6900;
public const int StManaCost = 6720;
public const int SongValor = 6752;
public const int breathe_ = 7000;
public const int SongTulip = 6751;
public const int SpTransmuteBat = 8793;
public const int SongSleep = 6750;
public const int breathe_Fire = 50200;
public const int ActJureHeal = 6901;
public const int breathe_Cold = 50201;
public static readonly int[] IDS = new int[133]
{
6604, 5054, 5055, 6001, 6003, 6011, 6012, 6013, 6015, 6018,
6019, 6020, 6050, 6400, 6410, 5053, 6420, 6500, 6600, 6601,
6602, 6603, 6605, 6606, 6607, 6610, 6611, 6612, 6613, 6620,
6621, 6450, 6623, 5052, 5050, 5020, 5021, 5022, 5023, 5024,
5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5051,
5034, 5036, 5037, 5038, 5039, 5040, 5041, 5042, 5043, 5044,
5045, 5046, 5047, 5048, 5049, 5035, 6626, 6622, 6630, 6627,
50207, 50208, 50209, 50210, 50211, 50212, 50213, 50214, 50215, 50216,
5019, 5018, 5017, 5016, 5015, 5014, 5000, 5001, 5002, 5003,
5004, 5005, 50205, 5006, 5008, 5009, 5010, 5011, 5012, 5013,
5007, 50204, 50206, 50202, 6631, 6640, 6641, 6642, 6650, 6660,
6661, 6662, 6663, 6664, 6665, 50203, 6667, 6800, 6666, 6720,
50201, 50200, 8793, 7000, 6700, 6903, 6902, 6904, 6900, 6752,
6751, 6750, 6901
6621, 6450, 5052, 5051, 5050, 5019, 5020, 5021, 5022, 5023,
5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033,
5034, 5035, 5049, 5048, 5047, 5046, 5045, 5044, 6623, 5043,
5041, 5040, 5039, 5038, 5037, 5036, 5042, 6626, 6622, 6630,
50206, 50207, 50208, 50209, 50210, 50211, 50212, 50213, 50214, 50215,
50216, 5018, 5017, 5016, 6627, 5015, 5013, 5012, 5011, 5010,
5009, 5008, 5007, 5006, 5005, 5004, 5003, 5002, 5001, 5000,
5014, 50204, 50205, 50202, 6631, 6640, 6641, 6642, 6650, 6660,
6661, 6662, 6663, 6664, 6665, 6666, 50203, 6800, 6700, 6667,
6904, 6750, 6751, 6752, 6900, 6901, 6902, 6903, 6720, 7000,
8793, 50200, 50201
};
}
public class Ability : ActAttackProcess
public static int GetWeaponEnc(Chara CC, Thing w, int ele, bool addSelfEnc = fal
{
num += EClass.pc.faction.charaElements.Value(ele);
}
num = num * (100 + GetTwoHandEncBonus(CC)) / 100;
num = num * (100 + GetTwoHandEncBonus(CC, w)) / 100;
if (addSelfEnc)
{
num += CC.Evalue(ele);public static int GetWeaponEnc(Chara CC, Thing w, int ele, bool addSelfEnc = fal
return num;
}
public static int GetTwoHandEncBonus(Chara CC)
public static int GetTwoHandEncBonus(Chara CC, Thing w)
{
if (CC == null || CC.body.GetAttackStyle() != AttackStyle.TwoHand)
if (CC == null || CC.body.GetAttackStyle() != AttackStyle.TwoHand || w == null || !w.IsWeapon)
{
return 0;
}public bool Perform(int count, bool hasHit, float dmgMulti = 1f, bool maxRoll =
ModExpDef(150, 90);
ModExpDef(151, 90);
}
ProcAbility(list, CC, TC, weaponSkill.Value * (100 + GetTwoHandEncBonus(CC)) / 100, subAttack);
ProcAbility(list, CC, TC, weaponSkill.Value * (100 + GetTwoHandEncBonus(CC, weapon)) / 100, subAttack);
return false;
}
if (TC.IsPC)public bool Perform(int count, bool hasHit, float dmgMulti = 1f, bool maxRoll =
{
int num10 = 25;
int num11 = EClass.rnd(num * (100 + item.Value * 10) / 500 + 5);
num11 = num11 * (100 + GetTwoHandEncBonus(CC)) / 100;
num11 = num11 * (100 + GetTwoHandEncBonus(CC, weapon)) / 100;
if (conWeapon == null && weapon != null && weapon.trait is TraitToolRangeCane)
{
num10 = 0;public bool Perform(int count, bool hasHit, float dmgMulti = 1f, bool maxRoll =
}
}
}
ProcAbility(list, CC, TC, weaponSkill.Value * (100 + GetTwoHandEncBonus(CC)) / 100, subAttack);
ProcAbility(list, CC, TC, weaponSkill.Value * (100 + GetTwoHandEncBonus(CC, weapon)) / 100, subAttack);
}
if (!CC.IsAliveInCurrentZone || !TC.IsAliveInCurrentZone)
{public bool Perform(int count, bool hasHit, float dmgMulti = 1f, bool maxRoll =
}
TC.Chara.AddCondition<ConParalyze>(EClass.rnd(2), force: true);
}
ProcShieldEncs(CC, TC, 500 + num13);
if (!TC.isRestrained)
{
ProcShieldEncs(CC, TC, 500 + num13);
}
if (CC.IsAliveInCurrentZone)
{
CC.ModExp(123, 50);BaseCondition
public virtual bool TryMove(Point p)
return true;
}
public virtual ElementContainer GetElementContainer()
{
return elements;
}
public void SetElement(int id)
{
refVal = id;public override void _WriteNote(UINote n, bool asChild = false)
}
else if (elements != null && elements.Has(e.id) && elements.Value(e.id) != e.Value)
{
list.Add("modValue".lang(e.Name, ((e.Value < 0) ? "" : "+") + elements.Value(e.id) + " (" + e.Value + ")").TagColor(() => e.Value >= 0));
list.Add("modValue".lang(e.Name, ((e.Value < 0) ? "" : "+") + elements.Value(e.id) + (e.source.tag.Contains("ratio") ? "%" : "") + " (" + e.Value + ")").TagColor(() => e.Value >= 0));
}
else
{
list.Add("modValue".lang(e.Name, ((e.Value < 0) ? "" : "+") + e.Value).TagColorGoodBad(() => e.Value >= 0));
list.Add("modValue".lang(e.Name, ((e.Value < 0) ? "" : "+") + e.Value + (e.source.tag.Contains("ratio") ? "%" : "")).TagColorGoodBad(() => e.Value >= 0));
}
}
if (list.Count <= 0)Card
public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
break;
}
}
if (origin != null)
{
dmg = dmg * (100 + origin.Evalue(94)) / 100;
}
Element e;
if (ele == 0 || ele == 926)
{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_104d;
goto IL_1077;
}
}
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_104d;
goto IL_1077;
}
}
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_104d;
IL_104d:
goto IL_1077;
IL_1077:
if (trait.CanBeAttacked)
{
renderer.PlayAnime(AnimeID.HitObj);public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
EClass.player.codex.AddKill(id);
if (Guild.Fighter.CanGiveContribution(Chara))
{
Guild.Fighter.AddContribution(5 + LV / 5);
Guild.Fighter.AddContribution(10 + Mathf.Min(LV, 200) / 5);
}
if (Guild.Fighter.HasBounty(Chara))
{
int a = EClass.rndHalf(200 + LV * 20);
int a = EClass.rndHalf(200 + EClass.curve(LV, 20, 15) * 20);
Msg.Say("bounty", Chara, a.ToString() ?? "");
EClass.pc.ModCurrency(a);
SE.Pay();public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
{
ActEffect.Proc(EffectId.Duplicate, this);
}
if (origin != null)
if (origin != null && !Chara.isRestrained)
{
AttackProcess.ProcShieldEncs(Chara, origin);
}Chara
public override void OnCreate(int genLv)
SetFeat(1644, j + 1);
}
}
string text = id;
if (text == "putty_mech_b" || text == "putty_mech")
switch (id)
{
case "putty_mech_b":
case "putty_mech":
case "robot":
SetFeat(1248, 1 + EClass.rnd(5));
break;
}
InitStats();
body.SetOwner(this); AddCondition<ConBurning>(1000, force: true);
}
break;
case 15:
if (HasElement(1250) && !HasCondition<ConVampire>())
{
AddCondition<ConVampire>();
}
break;
}
if (turn % 200 == 0)
{public override string GetHoverText()
{
text2 += ("(" + faith.Name + ")").TagSize(14);
}
if (EClass.pc.HasElement(1250))
if (EClass.pc.HasElement(6607))
{
s += CraftUtil.GetBloodText(this).TagSize(14).TagColor(EClass.Colors.colorBlood);
}ConBerserk
public override void SetOwner(Chara _owner, bool onDeserialize = false)
public override void OnRemoved()
{
owner.isBerserk = false;
owner.ai.Cancel();
}
}ConDisease
public override bool PreventRegen
}
}
public override ElementContainer GetElementContainer()
{
return ec;
}
public override void SetOwner(Chara _owner, bool onDeserialize = false)
{
base.SetOwner(_owner);ConTransmuteBat
public override void OnStart()
public override void OnRemoved()
{
base.OnRemoved();
owner.HealHP(owner.MaxHP / 2, HealSource.Item);
owner.HealHP(owner.MaxHP, HealSource.Item);
owner.SetCooldown(8793);
}
}+ConVampire
File Created
using Newtonsoft.Json;
public class ConVampire : Condition
{
public static int[] List_Vampire = new int[13]
{
70, 72, 71, 77, 74, 75, 76, 73, 60, 61,
79, 300, 301
};
[JsonProperty]
private ElementContainer ec = new ElementContainer();
public override int GetPhase()
{
return 0;
}
public override ElementContainer GetElementContainer()
{
return ec;
}
public override void Tick()
{
if (EClass._zone.IsRegion || EClass.rnd(10) != 0)
{
return;
}
int num = List_Vampire.RandomItem();
int num2 = ec.Value(num);
if (EClass.world.date.IsNight)
{
int num3 = owner.elements.Base(num) / 5 + 5;
switch (num)
{
case 60:
case 61:
num3 = 20;
break;
case 79:
num3 = 20;
break;
}
if (num2 < num3 && (float)EClass.rnd(100) >= 99f * (float)num2 / (float)num3)
{
ec.ModBase(num, 1);
}
}
else if (num2 > 0)
{
ec.ModBase(num, -1);
}
}
public override void SetOwner(Chara _owner, bool onDeserialize = false)
{
base.SetOwner(_owner);
ec.SetParent(owner);
}
public override void OnRemoved()
{
ec.SetParent();
}
}CoreDebug
if (targetChara != null)
{
EClass.pc.Pick(CraftUtil.MakeBloodMeal(EClass.pc, targetChara));
EClass.pc.Pick(CraftUtil.MakeLoveLunch(targetChara));
}
targetChara.ScaleByPrincipal();
if (EClass.game.quests.Get<QuestDebt>() == null)CraftUtil
public static Thing MakeBloodMeal(Chara sucker, Chara feeder, bool msg = true)
Thing c_bloodData = feeder.c_bloodData;
if (c_bloodData == null)
{
int seed = ((feeder.GetInt(118) == 0) ? (EClass.game.seed + feeder.uid) : feeder.GetInt(118));
Rand.SetSeed(seed);
int num = ((feeder.GetInt(118) == 0) ? (EClass.game.seed + feeder.uid) : feeder.GetInt(118));
Rand.SetSeed(num);
c_bloodData = ThingGen.CreateFromCategory("meal", 100);
if (msg)
{
sucker.Say("food_blood", c_bloodData);
}
MakeDish(c_bloodData, 100, null, seed);
MakeDish(c_bloodData, 100, null, num + feeder.uid);
c_bloodData.elements.SetTo(709, 0);
c_bloodData.elements.SetTo(708, 0);
c_bloodData.elements.SetTo(701, 0);public static Thing MakeBloodMeal(Chara sucker, Chara feeder, bool msg = true)
}
}
c_bloodData.elements.SetTo(2, Mathf.Min(EClass.curve(feeder.LV, 30, 10, 65), 200));
c_bloodData.elements.ModBase(710, 15 + (int)Mathf.Min(Mathf.Sqrt(sucker.Evalue(6607) + Mathf.Max(sucker.LER, 0)), 50f));
c_bloodData.elements.ModBase(710, 15 + (int)Mathf.Min(Mathf.Sqrt(sucker.Evalue(6607) + Mathf.Max(sucker.LER, 0)), 55f));
return c_bloodData;
}public static Thing MakeLoveLunch(Chara c)
{
thing.elements.SetBase(753, 0);
}
if (EClass.pc.HasElement(1250) && !thing.HasElement(710))
{
thing.elements.SetBase(710, 1);
}
Rand.SetSeed();
return thing;
}DOMAIN
public class DOMAIN
{
public const int domFaith = 802;
public const int domSurvival = 801;
public const int domComm = 805;
public const int domTest = 800;
public const int domArcane = 804;
public const int domElement = 806;
public const int domTest = 800;
public const int domMiracle = 803;
public const int domArcane = 804;
public const int domSurvival = 801;
public const int domComm = 805;
public const int domFaith = 802;
public const int domWind = 807;
public const int domMachine = 809;
public const int domHarvest = 808;
public const int domLuck = 810;
public const int domHarmony = 815;
public const int domHarvest = 808;
public const int domMachine = 809;
public static readonly int[] IDS = new int[16]
{
802, 801, 800, 806, 803, 804, 805, 807, 809, 810,
811, 812, 813, 814, 815, 808
805, 804, 806, 800, 803, 801, 802, 807, 808, 810,
811, 812, 813, 814, 815, 809
};
}
public class Domain : EClassDate
{
get
{
if (hour < 19)
if (hour < HourNight)
{
return hour <= 5;
return hour <= HourMorning;
}
return true;
}
}
public int HourMorning => 5;
public int HourNight => 19;
public PeriodOfDay periodOfDay
{
getELEMENT
public const int growth = 14;
public const int lv = 1;
public const int hardness = 13;
public const int water = 15;
public const int size = 12;
public const int d = 3;
public const int weight = 11;
public const int socket = 5;
public const int nutrition = 10;
public const int quality = 2;
public const int socket = 5;
public const int weight = 11;
public const int d = 3;
public const int size = 12;
public const int water = 15;
public const int hardness = 13;
public const int lv = 1;
public const int nutrition = 10;
public const int quality = 2;
public static readonly int[] IDS = new int[36]
{
752, 753, 754, 755, 756, 762, 760, 761, 763, 765,
751, 759, 750, 0, 25, 85, 29, 26, 24, 23,
22, 21, 18, 17, 16, 20, 14, 1, 15, 3,
5, 2, 11, 12, 13, 10
22, 21, 18, 17, 16, 20, 14, 13, 12, 11,
10, 5, 3, 15, 1, 2
};
}
public class Element : EClass }
foreach (Condition condition in c.conditions)
{
if (condition.elements != null)
if (condition.GetElementContainer() != null)
{
AddText(condition.elements.Value(id), condition.Name);
AddText(condition.GetElementContainer().Value(id), condition.Name);
}
}
if (c.tempElements != null)public virtual Act.Cost GetCost(Chara c)
break;
case 6663:
case 6664:
case 6665:
{
int num2 = -2;
foreach (BodySlot slot in c.body.slots)ENC
public class ENC
{
public const int negateBlind = 421;
public const int negatePoison = 420;
public const int invisibility = 415;
public const int encTail = 419;
public const int encHit = 414;
public const int seeInvisible = 416;
public const int loving = 417;
public const int innocence = 418;
public const int encHit = 414;
public const int encTail = 419;
public const int invisibility = 415;
public const int negatePoison = 420;
public const int negateBlind = 421;
public const int negateParalysis = 422;
public const int innocence = 418;
public const int negateSleep = 424;
public const int encRagnarok = 667;
public const int meleeDistance = 666;
public const int negateFear = 423;
public const int planter = 665;
public const int absorbMP = 661;
public const int absorbHP = 660;
public const int slowCorruption = 412;
public const int absorbHP = 660;
public const int permaCurse = 656;
public const int encRagnarok = 667;
public const int meleeDistance = 666;
public const int encSpell = 411;
public const int corruption = 409;
public const int negateFear = 423;
public const int negateParalysis = 422;
public const int convertImpact = 865;
public const int convertLightning = 852;
public const int convertFire = 850;
public const int convertCold = 851;
public const int counter = 380;
public const int redirect_blaser = 383;
public const int permaCurse = 656;
public const int onlyPet = 655;
public const int levitation = 401;
public const int throwReturn = 410;
public const int onlyPet = 655;
public const int noDamage = 654;
public const int convertCold = 851;
public const int convertFire = 850;
public const int living = 653;
public const int eco = 652;
public const int sustain_MAG = 446;
public const int sustain_CHA = 447;
public const int bane_all = 468;
public const int strongStomach = 480;
public const int revealFaith = 481;
public const int force_weapon = 482;
public const int optimizeMana = 483;
public const int slot_rune = 484;
public const int sustain_WIL = 445;
public const int sustain_MAG = 446;
public const int slot_rune = 484;
public const int nonLethal = 485;
public const int sustain_LER = 444;
public const int sustain_WIL = 445;
public const int sustain_DEX = 442;
public const int sustain_PER = 443;
public const int living = 653;
public const int noDamage = 654;
public const int negateConfusion = 425;
public const int negateSteal = 426;
public const int sustain_END = 441;
public const int sustain_DEX = 442;
public const int sustain_PER = 443;
public const int sustain_LER = 444;
public const int nonLethal = 485;
public const int safetyMeasure = 486;
public const int strongStomach = 480;
public const int revealFaith = 481;
public const int creativeChef = 487;
public const int deathagony = 488;
public const int mod_chaser = 620;
public const int negateConfusion = 425;
public const int negateSleep = 424;
public const int mod_feint = 623;
public const int mod_frustration = 624;
public const int r_mana = 641;
public const int safetyMeasure = 486;
public const int r_DV = 650;
public const int r_PV = 651;
public const int mod_talisman = 609;
public const int creativeChef = 487;
public const int mod_splash = 608;
public const int mod_flurry = 621;
public const int mod_chaser = 620;
public const int mod_talisman = 609;
public const int mod_cleave = 622;
public const int mod_drill = 606;
public const int mod_scatter = 607;
public const int mod_splash = 608;
public const int mod_ammo_recover = 604;
public const int mod_precision = 605;
public const int r_PV = 651;
public const int music_drunk = 489;
public const int deathagony = 488;
public const int eco = 652;
public const int music_drunk = 489;
public const int mod_ammo = 600;
public const int mod_reload = 601;
public const int mod_rapid = 602;
public const int mod_drill = 606;
public const int mod_precision = 605;
public const int mod_feint = 623;
public const int mod_rapid = 602;
public const int mod_ammo_knockback = 603;
public const int mod_ammo_recover = 604;
public const int mod_cleave = 622;
public static readonly int[] IDS = new int[104]
{
421, 415, 416, 417, 418, 414, 419, 420, 422, 424,
666, 665, 664, 663, 662, 661, 412, 660, 667, 411,
400, 409, 423, 865, 852, 850, 380, 381, 382, 383,
656, 401, 402, 403, 404, 405, 406, 407, 408, 410,
655, 851, 653, 447, 450, 460, 461, 462, 463, 464,
465, 466, 467, 468, 480, 482, 483, 484, 446, 485,
445, 443, 654, 426, 427, 428, 429, 430, 431, 435,
436, 437, 438, 439, 440, 441, 442, 444, 486, 481,
488, 425, 624, 640, 641, 650, 651, 487, 621, 620,
609, 622, 607, 608, 605, 489, 652, 600, 601, 602,
606, 623, 603, 604
420, 419, 414, 416, 417, 415, 421, 418, 667, 423,
665, 664, 663, 662, 661, 660, 412, 656, 666, 411,
400, 409, 422, 865, 852, 851, 380, 381, 382, 383,
655, 401, 402, 403, 404, 405, 406, 407, 408, 410,
654, 850, 652, 446, 447, 450, 460, 461, 462, 463,
464, 465, 466, 467, 468, 481, 482, 483, 445, 484,
444, 442, 653, 425, 426, 427, 428, 429, 430, 431,
435, 436, 437, 438, 439, 440, 441, 443, 485, 480,
487, 620, 424, 623, 624, 640, 641, 486, 650, 609,
608, 621, 606, 607, 604, 651, 488, 489, 600, 601,
605, 602, 603, 622
};
}FACTION
public const int bfLandmark4 = 3783;
public const int bfBasin = 3709;
public const int bfLandmark5 = 3784;
public const int bfLandmark3 = 3782;
public const int bfMonster = 3707;
public const int bfFreshAir = 3708;
public const int bfBasin = 3709;
public const int bfLandmark1 = 3780;
public const int bfLandmark3 = 3782;
public const int fTaxEvasion = 2119;
public const int fLuck = 2118;
public const int fAdmin = 2115;
public const int fLoyal = 2117;
public const int fLuck = 2118;
public const int fTaxEvasion = 2119;
public const int fHeirloom = 2120;
public static readonly int[] IDS = new int[53]
{
3781, 3710, 3783, 3784, 3707, 3708, 3709, 3780, 3782, 2119,
2115, 2116, 2117, 2118, 2120, 2200, 2201, 2202, 2207, 2203,
3781, 3710, 3783, 3709, 3784, 3782, 3707, 3708, 3780, 2118,
2115, 2116, 2117, 2119, 2120, 2200, 2201, 2202, 2207, 2203,
2204, 2206, 3800, 2205, 2003, 3801, 3804, 3803, 3802, 3600,
3601, 3602, 3603, 3604, 3605, 3700, 3701, 3702, 3703, 3704,
3606, 3706, 3805, 3705, 3900, 4000, 4001, 4002, 3500, 4004,FEAT
public class FEAT
{
public const int featStamina = 1612;
public const int featSTR = 1620;
public const int featLuck = 1628;
public const int featHardy = 1630;
public const int featSTR = 1620;
public const int featSPD = 1629;
public const int featWhiteVixen = 1414;
public const int featMana = 1611;
public const int featLife = 1610;
public const int featHealer = 1422;
public const int featLuckyCat = 1412;
public const int featMana = 1611;
public const int featStamina = 1612;
public const int featEvade = 1632;
public const int featEternalYouth = 1243;
public const int featBoost = 1409;
public const int featSevenSense = 1245;
public const int featPegasus = 1246;
public const int featGoddess = 1290;
public const int featCentaur = 1244;
public const int featBoost = 1409;
public const int featGod_element1 = 1300;
public const int featGod_earth1 = 1305;
public const int featSevenSense = 1245;
public const int featCentaur = 1244;
public const int featGod_machine1 = 1315;
public const int featTourist = 1406;
public const int featPianist = 1405;
public const int featArcher = 1404;
public const int featWarrior = 1400;
public const int featPaladin = 1407;
public const int featGod_strife1 = 1355;
public const int featGod_trickery1 = 1345;
public const int featGod_moonshadow1 = 1350;
public const int featGod_wind1 = 1310;
public const int featGod_trickery1 = 1345;
public const int featGod_oblivion1 = 1340;
public const int featGod_wind1 = 1310;
public const int featGod_harmony1 = 1335;
public const int featGod_luck1 = 1330;
public const int featGod_healing1 = 1320;
public const int featGod_moonshadow1 = 1350;
public const int featTourist = 1406;
public const int featPaladin = 1407;
public static readonly int[] IDS = new int[135]
{
1612, 1628, 1627, 1626, 1625, 1624, 1623, 1622, 1621, 1630,
1620, 1629, 1414, 1610, 1422, 1421, 1420, 1419, 1418, 1417,
1416, 1415, 1631, 1413, 1412, 1611, 1632, 1648, 1634, 1411,
1620, 1628, 1627, 1626, 1625, 1624, 1623, 1622, 1621, 1630,
1629, 1414, 1611, 1610, 1422, 1421, 1420, 1419, 1418, 1417,
1416, 1415, 1631, 1413, 1412, 1612, 1632, 1648, 1634, 1411,
1662, 1661, 1660, 1659, 1658, 1657, 1656, 1655, 1654, 1653,
1652, 1651, 1650, 1649, 1647, 1646, 1645, 1644, 1643, 1642,
1641, 1640, 1636, 1635, 1633, 1410, 1234, 1408, 1230, 1231,
1232, 1233, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242,
1229, 1243, 1409, 1246, 1247, 1248, 1249, 1250, 1251, 1270,
1271, 1272, 1273, 1290, 1244, 1300, 1228, 1226, 1200, 1201,
1229, 1243, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1270,
1271, 1272, 1273, 1290, 1409, 1300, 1228, 1226, 1200, 1201,
1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211,
1227, 1212, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221,
1222, 1223, 1224, 1225, 1213, 1305, 1245, 1315, 1406, 1405,
1404, 1403, 1402, 1401, 1400, 1407, 1355, 1345, 1310, 1340,
1335, 1330, 1325, 1320, 1350
1222, 1223, 1224, 1225, 1213, 1305, 1244, 1315, 1405, 1404,
1403, 1402, 1401, 1400, 1355, 1350, 1345, 1340, 1310, 1335,
1330, 1325, 1320, 1406, 1407
};
}
public class Feat : ElementFOOD
public const int food_god = 758;
public const int justcooked = 757;
public const int food_CHA = 700;
public const int food_cat = 701;
public const int food_blood = 710;
public const int justcooked = 757;
public const int loseWeight = 706;
public static readonly int[] IDS = new int[14]
{
764, 758, 757, 700, 701, 702, 704, 705, 703, 707,
708, 709, 710, 706
764, 758, 700, 701, 702, 704, 705, 703, 707, 708,
709, 710, 757, 706
};
}MUTATION
public const int mutationSkin = 1510;
public const int mutationSkinN = 1511;
public const int mutationEye = 1512;
public const int mutationEyeN = 1513;
public const int mutationDex = 1514;
public const int mutationRegen = 1516;
public const int mutationEyeN = 1513;
public const int mutationSkinN = 1511;
public const int mutationSpeed = 1518;
public const int mutationHairN = 1533;
public const int mutationSpeedN = 1519;
public const int etherGravity = 1550;
public const int mutationStr = 1520;
public const int mutationStrN = 1521;
public const int mutationCha = 1522;
public const int mutationBrainN = 1525;
public const int mutationStr = 1520;
public const int mutationSpeedN = 1519;
public const int mutationColdN = 1527;
public static readonly int[] IDS = new int[40]
{
1515, 1510, 1511, 1512, 1514, 1516, 1513, 1518, 1565, 1564,
1515, 1510, 1512, 1513, 1514, 1516, 1511, 1518, 1565, 1564,
1563, 1562, 1561, 1560, 1559, 1558, 1557, 1517, 1555, 1554,
1553, 1552, 1551, 1556, 1533, 1519, 1550, 1521, 1522, 1523,
1524, 1525, 1520, 1527, 1528, 1529, 1530, 1531, 1532, 1526
1553, 1552, 1551, 1556, 1533, 1550, 1520, 1521, 1522, 1523,
1524, 1525, 1519, 1527, 1528, 1529, 1530, 1531, 1532, 1526
};
}
public class Mutation : FeatPOLICY
public class POLICY
{
public const int store_ripoff = 2816;
public const int store_premium = 2817;
public const int license_food = 2818;
public const int legendary_heirloom = 2821;
public const int celeb = 2822;
public const int milk_fan = 2825;
public const int legendary_exhibition = 2823;
public const int license_stolen = 2824;
public const int egg_fan = 2826;
public const int license_slaver = 2828;
public const int store_ripoff = 2816;
public const int legendary_exhibition = 2823;
public const int platinum_ticket = 2815;
public const int faith_tax = 2501;
public const int celeb = 2822;
public const int suite_room = 2813;
public const int mass_exhibition = 2814;
public const int stop_growth = 2515;
public const int wealth_tax = 2500;
public const int bed_quality = 2812;
public const int taxfree = 2514;
public const int vaccination = 2509;
public const int nocturnal_life = 2508;
public const int stop_growth = 2515;
public const int inquisition = 2507;
public const int nocturnal_life = 2508;
public const int human_right = 2506;
public const int prohibition = 2503;
public const int wealth_tax = 2500;
public const int mass_exhibition = 2814;
public const int food_for_people = 2502;
public const int speed_growth = 2516;
public const int suite_room = 2813;
public const int energy_conservation = 2700;
public const int inquisition = 2507;
public const int food_for_people = 2502;
public const int speed_growth = 2516;
public const int trash_no = 2702;
public const int faith_tax = 2501;
public const int bed_quality = 2812;
public const int trash_sort = 2701;
public const int tourist_safety = 2811;
public const int home_discount = 2800;
public const int trash_sort = 2701;
public const int livestock_priv = 2715;
public const int forcePanty = 2712;
public const int energy_conservation = 2700;
public const int incomeTransfer = 2711;
public const int livestock_priv = 2715;
public const int noMother = 2710;
public const int noAnimal = 2709;
public const int forcePanty = 2712;
public const int noDM = 2708;
public const int weed_no = 2703;
public const int noMother = 2710;
public const int trash_no = 2702;
public const int noAnimal = 2709;
public static readonly int[] IDS = new int[51]
{
2817, 2818, 2819, 2820, 2821, 2822, 2825, 2824, 2826, 2827,
2828, 2816, 2823, 2815, 2501, 2813, 2515, 2514, 2513, 2512,
2511, 2510, 2509, 2508, 2507, 2506, 2505, 2504, 2503, 2500,
2814, 2516, 2700, 2502, 2702, 2812, 2811, 2810, 2800, 2701,
2712, 2711, 2715, 2709, 2708, 2707, 2706, 2705, 2704, 2703,
2710
2816, 2817, 2818, 2819, 2820, 2821, 2825, 2823, 2824, 2826,
2827, 2828, 2815, 2822, 2814, 2500, 2812, 2514, 2513, 2512,
2511, 2510, 2509, 2515, 2508, 2506, 2505, 2504, 2503, 2502,
2813, 2507, 2516, 2501, 2701, 2811, 2810, 2800, 2715, 2700,
2711, 2710, 2712, 2708, 2707, 2706, 2705, 2704, 2703, 2702,
2709
};
}
public class Policy : EClassSKILL
public class SKILL
{
public const int eyeofmind = 134;
public const int marksman = 133;
public const int tactics = 132;
public const int shield = 123;
public const int throwing = 108;
public const int armorHeavy = 122;
public const int armorLight = 120;
public const int weaponPolearm = 106;
public const int weaponBlunt = 111;
public const int weaponCrossbow = 109;
public const int strategy = 135;
public const int throwing = 108;
public const int weaponDagger = 107;
public const int armorHeavy = 122;
public const int eyeofmind = 134;
public const int evasion = 150;
public const int armorLight = 120;
public const int riding = 226;
public const int strategy = 135;
public const int lumberjack = 225;
public const int evasionPlus = 151;
public const int stealth = 152;
public const int mining = 220;
public const int lumberjack = 225;
public const int riding = 226;
public const int parasite = 227;
public const int music = 241;
public const int climbing = 242;
public const int weaponPolearm = 106;
public const int weaponGun = 105;
public const int evasionPlus = 151;
public const int evasion = 150;
public const int weaponGun = 105;
public const int weaponBow = 104;
public const int DEX = 72;
public const int PER = 73;
public const int weaponStaff = 103;
public const int weaponAxe = 102;
public const int fireproof = 50;
public const int END = 71;
public const int weaponBow = 104;
public const int weaponStaff = 103;
public const int fishing = 245;
public const int DEX = 72;
public const int LER = 74;
public const int antiMagic = 93;
public const int dmgDealt = 94;
public const int martial = 100;
public const int weaponSword = 101;
public const int weaponAxe = 102;
public const int PER = 73;
public const int climbing = 242;
public const int gathering = 250;
public const int fishing = 245;
public const int vigor = 62;
public const int blacksmith = 256;
public const int carpentry = 255;
public const int eleNether = 916;
public const int eleSound = 917;
public const int eleNerve = 918;
public const int eleHoly = 919;
public const int eleChaos = 920;
public const int resDamage = 971;
public const int carpentry = 255;
public const int gathering = 250;
public const int resPoison = 955;
public const int eleMind = 914;
public const int eleHoly = 919;
public const int eleNerve = 918;
public const int eleLightning = 912;
public const int alchemy = 257;
public const int anatomy = 290;
public const int sculpture = 258;
public const int appraising = 289;
public const int jewelry = 259;
public const int eleDarkness = 913;
public const int weaving = 260;
public const int cooking = 287;
public const int handicraft = 261;
public const int farming = 286;
public const int lockpicking = 280;
public const int reading = 285;
public const int negotiation = 291;
public const int stealing = 281;
public const int reading = 285;
public const int handicraft = 261;
public const int farming = 286;
public const int weaving = 260;
public const int cooking = 287;
public const int jewelry = 259;
public const int eleDarkness = 913;
public const int sculpture = 258;
public const int appraising = 289;
public const int alchemy = 257;
public const int anatomy = 290;
public const int blacksmith = 256;
public const int negotiation = 291;
public const int lockpicking = 280;
public const int investing = 292;
public const int meditation = 301;
public static readonly int[] IDS = new int[133]
public static readonly int[] IDS = new int[134]
{
134, 133, 132, 131, 130, 123, 108, 120, 111, 110,
109, 135, 107, 122, 150, 226, 152, 200, 207, 210,
220, 225, 227, 230, 235, 237, 240, 241, 242, 106,
151, 105, 72, 103, 50, 51, 55, 56, 57, 60,
61, 64, 65, 66, 67, 68, 70, 71, 104, 245,
133, 132, 131, 130, 123, 122, 106, 111, 110, 109,
108, 107, 134, 120, 135, 225, 151, 152, 200, 207,
210, 220, 226, 227, 230, 235, 237, 240, 241, 105,
150, 104, 73, 102, 50, 51, 55, 56, 57, 60,
61, 64, 65, 66, 67, 68, 70, 71, 103, 72,
74, 75, 76, 77, 78, 79, 80, 90, 91, 92,
93, 100, 101, 102, 73, 250, 62, 256, 916, 917,
918, 920, 921, 922, 923, 924, 925, 926, 950, 951,
93, 94, 100, 101, 242, 245, 62, 255, 916, 917,
919, 920, 921, 922, 923, 924, 925, 926, 950, 951,
952, 953, 915, 954, 956, 957, 958, 959, 960, 961,
972, 962, 963, 964, 965, 970, 971, 255, 955, 914,
919, 912, 257, 258, 259, 260, 261, 280, 281, 285,
286, 287, 913, 289, 290, 291, 292, 288, 300, 911,
910, 293, 312, 311, 310, 313, 306, 305, 304, 303,
302, 307, 301
972, 962, 963, 964, 965, 970, 971, 250, 955, 914,
918, 912, 290, 289, 913, 287, 286, 285, 291, 281,
261, 260, 259, 258, 257, 256, 280, 292, 288, 300,
911, 910, 293, 312, 311, 310, 313, 306, 305, 304,
303, 302, 307, 301
};
}
public class Skill : ElementSLOT
public const int neck = 31;
public const int range = 41;
public const int head = 30;
public const int finger = 36;
public const int token = 43;
public const int range = 41;
public const int head = 30;
public const int token = 43;
public const int ammo = 42;
public static readonly int[] IDS = new int[16]
{
44, 32, 39, 45, 34, 38, 37, 35, 40, 33,
31, 41, 36, 43, 30, 42
31, 30, 36, 41, 43, 42
};
}SPELL
public const int ball_Sound = 50107;
public const int ball_Chaos = 50110;
public const int bolt_Sound = 50307;
public const int ball_Chaos = 50110;
public const int hand_Sound = 50407;
public const int arrow_Sound = 50507; 50704, 50609, 50709, 50809, 50909, 51009, 51109, 51209, 51208, 51107,
51007, 50907, 50805, 50905, 51005, 51105, 51205, 50106, 50505, 50306,
50406, 50405, 50506, 50606, 50706, 50806, 50906, 50305, 51006, 51106,
51206, 50107, 50110, 50307, 50407, 50507, 50607, 50707, 50105, 50807,
51206, 50107, 50307, 50110, 50407, 50507, 50607, 50707, 50105, 50807,
51204, 50605, 50705, 51212, 50410, 50115, 51214, 51114, 51014, 50914,
50814, 50315, 50714, 50514, 50414, 50314, 50114, 51213, 51113, 50614,
50415, 50515, 50615, 50604, 50916, 50816, 50716, 50616, 50516, 50416,Thing
public override void WriteNote(UINote n, Action<UINote> onWriteNote = null, IIns
int num3 = e.Value;
if (e.source.IsWeaponEnc && (!e.source.tag.Contains("modRanged") || e.id == 609) && isEquipped && root.isChara)
{
num3 = num3 * (100 + AttackProcess.GetTwoHandEncBonus(root.Chara)) / 100;
int num4 = e.id;
if (num4 != 482 && (uint)(num4 - 660) > 2u && num4 != 666)
{
num3 = num3 * (100 + AttackProcess.GetTwoHandEncBonus(root.Chara, this)) / 100;
}
}
string text13 = " (" + e.Value + ((e.Value == num3) ? "" : (" → " + num3)) + ")";
string text14 = "_bracketLeft3".lang() + e.Name + "_bracketRight3".lang();WidgetStatsBar
text2 = text2 + " (" + ele.ValueWithoutLink + ")";
}
int num = ((EMono.pc.tempElements != null) ? EMono.pc.tempElements.Value(ele.id) : 0);
foreach (Condition condition in EMono.pc.conditions)
{
num += (condition.GetElementContainer()?.GetElement(ele.id)?.Value).GetValueOrDefault();
}
if (ele.DisplayValue < ele.ValueWithoutLink || num < 0)
{
fontColor = FontColor.Bad;