EA 23.235 Nightly Patch 1
November 17, 2025
21 files modified. 2 new files created.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
CraftUtil (1)
public static void MakeDish(Thing food, int lv, Chara crafter = null)
public static void MakeDish(Thing food, int lv, Chara crafter = null, int seed = -1) AI_Fuck
public override IEnumerable<Status> Run()
Chara tc = (sell ? owner : target);
int destDist = ((Type == FuckType.fuck) ? 1 : 1);
yield return DoGoto(target.pos, destDist);
cc.Say(Type.ToString() + "_start", cc, tc);
cc.Say((variation == Variation.Bloodsuck) ? "suck_start" : (Type.ToString() + "_start"), cc, tc);
isFail = () => !tc.IsAliveInCurrentZone || tc.Dist(owner) > 3;
if (Type == FuckType.tame)
{ int value = chara.hunger.value;
Thing food = CraftUtil.MakeBloodMeal(chara, chara2);
FoodEffect.Proc(chara, food, consume: false);
chara2.AddCondition<ConBleed>(EClass.rndHalf(value * 20));
chara2.AddCondition<ConBleed>(EClass.rndHalf(value * 10));
}
else
{ActEffect
void AddCon<T>(int rate, int power) where T : Condition
case "dragon":
chara = CharaGen.CreateFromFilter(SpawnListChara.Get("summon_dragon", (SourceChara.Row r) => r.race == "dragon" || r.race == "drake" || r.race == "wyvern"), power / 5);
break;
case "undead":
chara = CharaGen.CreateFromFilter(SpawnListChara.Get("summon_undead", (SourceChara.Row r) => r.HasTag(CTAG.undead) || (EClass.sources.races.map.TryGetValue(r.race)?.IsUndead ?? false)), power / 5);
break;
case "pawn":
chara = CharaGen.CreateFromFilter("c_pawn", power / 10);
break;CardRenderer
public SourcePref GetPref()
{
if (owner.IsPCC || (owner.HasHost && owner.Chara.host.ride == owner))
if ((owner.IsPCC && replacer == null) || (owner.HasHost && owner.Chara.host.ride == owner))
{
return EClass.core.refs.prefs.pcc;
}Chara
public class Chara : Card, IPathfindWalker
public ConSuspend conSuspend;
public ConTransmute conTrans;
public Emo2 emoIcon;
public int happiness;public override SourcePref Pref
{
get
{
if (renderer.replacer != null)
{
return renderer.replacer.pref;
}
if (spriteReplacer != null)
{
return spriteReplacer.data?.pref ?? EClass.core.refs.prefs.replacer1;public void Refresh(bool calledRecursive = false)
isWet = false;
_isLevitating = HasElement(401) || (ride != null && ride._isLevitating);
canSeeInvisible = HasElement(416);
isWeakToSunlight = HasElement(1250) && !HasElement(431);
isWeakToSunlight = HasElement(1251) && !HasElement(431);
base.isHidden = HasElement(415);
foreach (Condition condition in conditions)
{CharaRenderer
public override void OnEnterScreen()
public override void Draw(RenderParam p, ref Vector3 v, bool drawShadow)
{
base.Draw(p, ref v, drawShadow);
if ((Zone.sourceHat != null || owner.hat != null) && owner.Pref.hatY != 0f && owner.host == null)
if ((Zone.sourceHat != null || owner.hat != null) && owner.host == null)
{
DrawHat();
} }
CardRow cardRow = Zone.sourceHat ?? owner.hat;
SourcePref pref = GetPref();
bool flag = currentDir == 1 || currentDir == 3;
int liquidLv = RenderObject.currentParam.liquidLv;
float num = ((replacer != null) ? replacer.pref.hatY : pref.hatY);
if (pccData != null)
if (pref.hatY != 0f)
{
num += RenderObject.renderSetting.hatPos[actor.GetFrame()].y;
bool flag = currentDir == 1 || currentDir == 3;
int liquidLv = RenderObject.currentParam.liquidLv;
float num = ((replacer != null) ? replacer.pref.hatY : pref.hatY);
if (pccData != null)
{
num += RenderObject.renderSetting.hatPos[actor.GetFrame()].y;
}
RenderObject.currentParam.liquidLv = 0;
RenderObject.currentParam.x += 0.01f * (float)pref.equipX;
RenderObject.currentParam.y += num + 0.01f * (float)(pref.equipY + cardRow.pref.equipY);
RenderObject.currentParam.z += -0.09f;
RenderObject.currentParam.tile = cardRow._tiles[owner.uid % cardRow._tiles.Length] * ((!flag) ? 1 : (-1));
RenderObject.currentParam.mat = cardRow.DefaultMaterial;
RenderObject.currentParam.matColor = cardRow.GetColorInt(RenderObject.currentParam.mat);
cardRow.renderData.Draw(RenderObject.currentParam);
RenderObject.currentParam.x -= 0.01f * (float)pref.equipX;
RenderObject.currentParam.y -= num + 0.01f * (float)(pref.equipY + cardRow.pref.equipY);
RenderObject.currentParam.z -= -0.09f;
RenderObject.currentParam.liquidLv = liquidLv;
}
RenderObject.currentParam.liquidLv = 0;
RenderObject.currentParam.x += 0.01f * (float)pref.equipX;
RenderObject.currentParam.y += num + 0.01f * (float)(pref.equipY + cardRow.pref.equipY);
RenderObject.currentParam.z += -0.09f;
RenderObject.currentParam.tile = cardRow._tiles[owner.uid % cardRow._tiles.Length] * ((!flag) ? 1 : (-1));
RenderObject.currentParam.mat = cardRow.DefaultMaterial;
RenderObject.currentParam.matColor = cardRow.GetColorInt(RenderObject.currentParam.mat);
cardRow.renderData.Draw(RenderObject.currentParam);
RenderObject.currentParam.x -= 0.01f * (float)pref.equipX;
RenderObject.currentParam.y -= num + 0.01f * (float)(pref.equipY + cardRow.pref.equipY);
RenderObject.currentParam.z -= -0.09f;
RenderObject.currentParam.liquidLv = liquidLv;
}
public override void DrawHeld()ConTransmute
public override void OnStart()
{
owner.conTrans = this;
owner._CreateRenderer();
if (owner.IsPCParty)
{public override void OnStart()
public override void OnRemoved()
{
owner.conTrans = null;
owner._CreateRenderer();
if (owner.IsPCParty)
{CraftUtil
public static void AddRandomFoodEnc(Thing t)
}
}
public static void MakeDish(Thing food, int lv, Chara crafter = null)
public static void MakeDish(Thing food, int lv, Chara crafter = null, int seed = -1)
{
RecipeManager.BuildList();
List<Thing> list = new List<Thing>();
RecipeSource recipeSource = RecipeManager.Get(food.id);
Debug.Log(recipeSource);
if (recipeSource == null)
{
return;
}
SetSeed();
int num = Mathf.Min(EClass.rnd(lv), 50);
foreach (Recipe.Ingredient ingredient in recipeSource.GetIngredients())
{
SetSeed();
Thing thing = ThingGen.Create(ingredient.id, -1, lv);
if (thing.id == "deadbody")
{
thing = ThingGen.Create("_meat");
}
SetSeed();
thing = thing.TryMakeRandomItem(lv, TryMakeRandomItemSource.Cooking, crafter);
SetSeed();
TraitSeed.LevelSeed(thing, null, EClass.rnd(lv / 4) + 1);
thing.SetEncLv(thing.encLV / 2);
if (num > 0 && EClass.rnd(3) == 0)public static void MakeDish(Thing food, int lv, Chara crafter = null)
food.elements.Remove(708);
}
}
if (seed != -1)
{
Rand.SetSeed();
}
void SetSeed()
{
if (seed != -1)
{
Rand.SetSeed(seed);
seed++;
}
}
}
public static Thing MakeBloodMeal(Chara sucker, Chara feeder)
{
int lV = feeder.LV;
lV = lV / 10 * 10 + 10;
Rand.SetSeed(EClass.game.seed + feeder.uid);
Thing thing = ThingGen.CreateFromCategory("meal", lV);
Thing thing = ThingGen.CreateFromCategory("meal", 100);
sucker.Say("food_blood", thing);
Rand.SetSeed(EClass.game.seed + feeder.uid);
MakeDish(thing, lV);
Rand.SetSeed();
MakeDish(thing, 100, null, EClass.game.seed + feeder.uid);
if (thing.HasElement(709))
{
thing.elements.Remove(709);
}
if (thing.HasElement(708))
{
thing.elements.Remove(708);
}
thing.elements.ModBase(710, 1);
if (thing.HasElement(701))
{
thing.elements.Remove(701);
}
thing.elements.ModBase(710, 30);
thing.elements.SetTo(2, Mathf.Min(EClass.curve(feeder.LV, 30, 10, 60), 200));
return thing;
}
public static Thing MakeBloodSample(Chara sucker, Chara feeder)
{
Thing thing = MakeBloodMeal(sucker, feeder);
Thing thing2 = ThingGen.Create("bloodsample");
foreach (Element value in thing.elements.dict.Values)
{
thing2.elements.SetTo(value.id, value.Value);
}
thing2.elements.SetTo(10, 0);
thing2.MakeRefFrom(feeder);
thing2.c_idRefCard = thing.id;
return thing2;
}
public static Thing MakeDarkSoup()
{
Thing thing = ThingGen.Create("soup_dark");DOMAIN
public const int domWind = 807;
public const int domHarvest = 808;
public const int domMachine = 809;
public const int domLuck = 810;
public const int domHarmony = 815;
public const int domMachine = 809;
public const int domHarvest = 808;
public static readonly int[] IDS = new int[16]
{
802, 801, 800, 806, 803, 804, 805, 807, 808, 810,
811, 812, 813, 814, 815, 809
802, 801, 800, 806, 803, 804, 805, 807, 809, 810,
811, 812, 813, 814, 815, 808
};
}
public class Domain : EClassENC
public const int convertLightning = 852;
public const int convertCold = 851;
public const int convertFire = 850;
public const int counter = 380;
public const int onlyPet = 655;
public const int convertFire = 850;
public const int convertCold = 851;
public const int living = 653;
public const int mod_splash = 608;
public const int mod_feint = 623;
public const int mod_precision = 605;
public const int music_drunk = 489;
public const int mod_ammo_recover = 604;
public const int mod_ammo_knockback = 603;
public const int eco = 652;
public const int mod_ammo = 600;
public const int mod_reload = 601;
public const int eco = 652;
public const int mod_rapid = 602;
public const int mod_drill = 606;
public const int mod_rapid = 602;
public const int mod_feint = 623;
public const int mod_ammo_knockback = 603;
public const int mod_ammo_recover = 604;
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, 851, 380, 381, 382, 383,
400, 409, 423, 865, 852, 850, 380, 381, 382, 383,
656, 401, 402, 403, 404, 405, 406, 407, 408, 410,
655, 850, 653, 447, 450, 460, 461, 462, 463, 464,
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, 623, 605, 489, 604, 603, 600,
601, 652, 606, 602
609, 622, 607, 608, 605, 489, 652, 600, 601, 602,
606, 623, 603, 604
};
}FACTION
public class FACTION
{
public const int bfLandmark5 = 3784;
public const int bfLandmark3 = 3782;
public const int bfLandmark2 = 3781;
public const int bfLandmark1 = 3780;
public const int bfBreed = 3710;
public const int bfLandmark4 = 3783;
public const int bfLandmark5 = 3784;
public const int bfMonster = 3707;
public const int bfFreshAir = 3708;
public const int bfLandmark4 = 3783;
public const int bfBasin = 3709;
public const int bfLandmark1 = 3780;
public const int bfLandmark3 = 3782;
public const int fTaxEvasion = 2119;
public const int fAdmin = 2115;
public const int bfMushroom = 3801;
public const int bfChitin = 3805;
public const int bfIce = 3804;
public const int bfGum = 3803;
public const int bfFish = 3706;
public const int bfIce = 3804;
public const int bfChitin = 3805;
public const int bfHunt = 3705;
public static readonly int[] IDS = new int[53]
{
3784, 3782, 3781, 3780, 3710, 3707, 3708, 3783, 3709, 2119,
3781, 3710, 3783, 3784, 3707, 3708, 3709, 3780, 3782, 2119,
2115, 2116, 2117, 2118, 2120, 2200, 2201, 2202, 2207, 2203,
2204, 2206, 3800, 2205, 2003, 3801, 3805, 3803, 3802, 3600,
2204, 2206, 3800, 2205, 2003, 3801, 3804, 3803, 3802, 3600,
3601, 3602, 3603, 3604, 3605, 3700, 3701, 3702, 3703, 3704,
3606, 3706, 3804, 3705, 3900, 4000, 4001, 4002, 3500, 4004,
3606, 3706, 3805, 3705, 3900, 4000, 4001, 4002, 3500, 4004,
4005, 4006, 4003
};
}FEAT
public class FEAT
{
public const int featSTR = 1620;
public const int featStamina = 1612;
public const int featLuck = 1628;
public const int featEND = 1622;
public const int featDEX = 1621;
public const int featHardy = 1630;
public const int featDEX = 1621;
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 featFairysan = 1413;
public const int featStamina = 1612;
public const int featLuckyCat = 1412;
public const int featMana = 1611;
public const int featEvade = 1632;
public const int featNegotiate = 1634;
public const int featLuckyCat = 1412;
public const int featEarthStrength = 1411;
public const int featGoldenFinger = 1662;
public const int featSpotting = 1633;
public const int featEarthStrength = 1411;
public const int featReboot = 1410;
public const int featHeavyEater = 1234;
public const int featBoost = 1409;
public const int featPaladin2 = 1408;
public const int featAdam = 1230;
public const int featEternalYouth = 1243;
public const int featReboot = 1410;
public const int featBoost = 1409;
public const int featPegasus = 1246;
public const int featVampire = 1250;
public const int featAshborn = 1251;
public const int featGoodKarma = 1270;
public const int featBadKarma = 1271;
public const int featGoddess = 1290;
public const int featGod_element1 = 1300;
public const int featCentaur = 1244;
public const int featGod_earth1 = 1305;
public const int featGod_element1 = 1300;
public const int featDemigod = 1228;
public const int featElea = 1213;
public const int featGod_wind1 = 1310;
public const int featGod_earth1 = 1305;
public const int featSevenSense = 1245;
public const int featGod_healing1 = 1320;
public const int featPaladin = 1407;
public const int featGod_machine1 = 1315;
public const int featTourist = 1406;
public const int featThief = 1401;
public const int featPaladin2 = 1408;
public const int featWarrior = 1400;
public const int featGod_moonshadow1 = 1350;
public const int featPaladin = 1407;
public const int featGod_machine1 = 1315;
public const int featGod_strife1 = 1355;
public const int featGod_trickery1 = 1345;
public const int featGod_wind1 = 1310;
public const int featGod_oblivion1 = 1340;
public const int featGod_harmony1 = 1335;
public const int featGod_harvest1 = 1325;
public const int featGod_strife1 = 1355;
public const int featGod_healing1 = 1320;
public const int featGod_moonshadow1 = 1350;
public static readonly int[] IDS = new int[134]
public static readonly int[] IDS = new int[135]
{
1620, 1628, 1627, 1626, 1625, 1624, 1623, 1622, 1630, 1621,
1629, 1414, 1611, 1610, 1422, 1421, 1420, 1419, 1418, 1417,
1416, 1415, 1631, 1413, 1612, 1632, 1648, 1634, 1412, 1662,
1661, 1660, 1659, 1658, 1657, 1656, 1655, 1654, 1653, 1652,
1651, 1650, 1649, 1647, 1646, 1645, 1644, 1643, 1642, 1641,
1640, 1636, 1635, 1633, 1411, 1234, 1409, 1230, 1231, 1232,
1233, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1229,
1243, 1410, 1246, 1247, 1248, 1249, 1250, 1270, 1271, 1272,
1273, 1290, 1300, 1244, 1305, 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, 1310, 1245, 1320, 1407, 1406, 1405,
1404, 1403, 1402, 1401, 1408, 1400, 1350, 1315, 1345, 1340,
1335, 1330, 1325, 1355
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,
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,
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
};
}
public class Feat : ElementFoodEffect
public static bool IsLeftoverable(Thing food)
public static void Proc(Chara c, Thing food, bool consume = true)
{
if (food.id == "bloodsample")
{
food.ModNum(-1);
return;
}
food.CheckJustCooked();
bool flag = EClass._zone.IsPCFaction && c.IsInSpot<TraitSpotDining>();
int num = (food.isCrafted ? ((EClass.pc.Evalue(1650) >= 3) ? 5 : 0) : 0);public static void Proc(Chara c, Thing food, bool consume = true)
{
if (food.HasElement(710))
{
num2 *= 4f;
num2 = num2 * 0.1f * (float)(food.Evalue(710) + 10);
}
else
{public static void Proc(Chara c, Thing food, bool consume = true)
{
break;
}
goto IL_0f4b;
goto IL_0f76;
case "love":
ActEffect.LoveMiracle(c, EClass.pc, value.Value * 10);
break;public static void Proc(Chara c, Thing food, bool consume = true)
{
food.trait.OnDrink(c);
}
goto IL_0f4b;
IL_0f4b:
goto IL_0f76;
IL_0f76:
if (!consume)
{
return;Religion
public int GetOfferingValue(Thing t, int num = -1)
{
num = t.Num;
}
int v = 0;
long v = 0L;
if (t.source._origin == "meat")
{
v = Mathf.Clamp(t.SelfWeight / 10, 1, 1000);
if (t.refCard == null)
{
v /= 10;
v /= 10L;
}
}
else if (GetOfferingMtp(t) > 0)public int GetOfferingValue(Thing t, int num = -1)
}
}
}
if (v == 0)
if (v == 0L)
{
return 0;
}
if (t.IsDecayed)
{
v /= 10;
v /= 10L;
}
v = v * (100 + Mathf.Min(t.LV * 2, 100) + (t.HasElement(757) ? 50 : 0)) / 100;
v = Mathf.Max(v, 1) * num;
return v;
v = (int)Mathf.Clamp(Mathf.Max(v, 1f) * (float)num, 1f, 214748370f);
return (int)v;
void SetValue(SourceCategory.Row cat, int mtp)
{
v = Mathf.Clamp(t.SelfWeight / 10, 50, 1000);SKILL
public const int mana = 61;
public const int vigor = 62;
public const int DV = 64;
public const int PV = 65;
public const int gathering = 250;
public const int DV = 64;
public const int vigor = 62;
public const int blacksmith = 256;
public const int resHoly = 960;
public const int resCurse = 972;
public const int resMagic = 961;
public const int resCurse = 972;
public const int resEther = 962;
public const int resAcid = 963; 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, 62, 65, 66, 67, 68, 70, 71, 104, 245,
61, 64, 65, 66, 67, 68, 70, 71, 104, 245,
74, 75, 76, 77, 78, 79, 80, 90, 91, 92,
93, 100, 101, 102, 73, 250, 64, 256, 916, 917,
93, 100, 101, 102, 73, 250, 62, 256, 916, 917,
918, 920, 921, 922, 923, 924, 925, 926, 950, 951,
952, 953, 915, 954, 956, 957, 958, 959, 960, 972,
961, 962, 963, 964, 965, 970, 971, 255, 955, 914,
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,SLOT
public const int neck = 31;
public const int head = 30;
public const int range = 41;
public const int finger = 36;
public const int range = 41;
public const int token = 43;
public const int head = 30;
public const int ammo = 42;
public static readonly int[] IDS = new int[16]
{
44, 32, 39, 45, 34, 38, 37, 35, 40, 33,
31, 30, 36, 41, 43, 42
31, 41, 36, 43, 30, 42
};
}SPELL
public class SPELL
{
public const int sword_Nerve = 51008;
public const int puddle_Nerve = 50908;
public const int weapon_Nerve = 50808;
public const int arrow_Nerve = 50508;
public const int bit_Nerve = 51108;
public const int sword_Mind = 51004;
public const int hand_Nerve = 50408;
public const int sword_Void = 51016;
public const int bolt_Nerve = 50308;
public const int flare_Mind = 51204;
public const int sword_Void = 51016;
public const int bit_Mind = 51104;
public const int flare_Nerve = 51208;
public const int ball_Nerve = 50108;
public const int sword_Nerve = 51008;
public const int bit_Nerve = 51108;
public const int ball_Holy = 50109;
public const int sword_Mind = 51004;
public const int flare_Sound = 51207;
public const int puddle_Mind = 50904;
public const int bolt_Holy = 50309;
public const int hand_Holy = 50409;
public const int weapon_Mind = 50804;
public const int puddle_Mind = 50904;
public const int hand_Holy = 50409;
public const int arrow_Holy = 50509;
public const int weapon_Mind = 50804;
public const int miasma_Mind = 50704;
public const int funnel_Holy = 50609;
public const int flare_Holy = 51209;
public const int ball_Nerve = 50108;
public const int flare_Nerve = 51208;
public const int flare_Sound = 51207;
public const int bit_Sound = 51107;
public const int sword_Sound = 51007;
public const int miasma_Poison = 50705;
public const int puddle_Sound = 50907;
public const int weapon_Poison = 50805;
public const int puddle_Poison = 50905;
public const int ball_Nether = 50106;
public const int funnel_Poison = 50605;
public const int arrow_Poison = 50505;
public const int bolt_Nether = 50306;
public const int hand_Nether = 50406;
public const int arrow_Nether = 50506;
public const int hand_Poison = 50405;
public const int arrow_Poison = 50505;
public const int arrow_Nether = 50506;
public const int funnel_Nether = 50606;
public const int puddle_Nether = 50906;
public const int sword_Nether = 51006;
public const int bolt_Poison = 50305;
public const int hand_Poison = 50405;
public const int sword_Nether = 51006;
public const int bit_Nether = 51106;
public const int ball_Sound = 50107;
public const int bolt_Poison = 50305;
public const int ball_Chaos = 50110;
public const int bolt_Sound = 50307;
public const int hand_Sound = 50407;
public const int ball_Chaos = 50110;
public const int arrow_Sound = 50507;
public const int funnel_Sound = 50607;
public const int miasma_Sound = 50707;
public const int weapon_Sound = 50807;
public const int ball_Poison = 50105;
public const int puddle_Sound = 50907;
public const int weapon_Sound = 50807;
public const int ball_Poison = 50105;
public const int flare_Mind = 51204;
public const int bit_Sound = 51107;
public const int funnel_Poison = 50605;
public const int weapon_Poison = 50805;
public const int miasma_Poison = 50705;
public const int flare_Ether = 51212;
public const int funnel_Impact = 50615;
public const int miasma_Mind = 50704;
public const int funnel_Mind = 50604;
public const int puddle_Void = 50916;
public const int bit_Magic = 51111;
public const int funnel_Mind = 50604;
public const int arrow_Mind = 50504;
public const int SpIncognito = 8780;
public const int SpTransmuteBroom = 8790;
public const int hand_Mind = 50404;
public const int bolt_Mind = 50304;
public const int SpWisdom = 8503;
public const int SpTransmutePutit = 8791;
public const int SpTransmuteBroom = 8790;
public const int SpIncognito = 8780;
public const int SpSeeInvisible = 8776;
public const int SpIdentify = 8230;
public const int arrow_Mind = 50504;
public const int hand_Mind = 50404;
public const int SpDarkness = 8800;
public const int SpSummon = 9000;
public const int funnel_Lightning = 50602;
public const int arrow_Lightning = 50502;
public const int hand_Lightning = 50402;
public const int bolt_Cold = 50301;
public const int miasma_Lightning = 50702;
public const int ball_Cold = 50101;
public const int weapon_Lightning = 50802;
public const int funnel_Lightning = 50602;
public const int sword_Lightning = 51002;
public const int flare_Fire = 51200;
public const int bolt_Mind = 50304;
public const int miasma_Lightning = 50702;
public const int puddle_Lightning = 50902;
public const int ball_Mind = 50104;
public const int bit_Lightning = 51102;
public const int puddle_Lightning = 50902;
public const int sword_Lightning = 51002;
public const int weapon_Lightning = 50802;
public const int SpWeb = 8801;
public const int flare_Fire = 51200;
public const int bit_Fire = 51100;
public const int sword_Fire = 51000;
public const int puddle_Fire = 50900;
public const int SpSummonDragon = 9054;
public const int SpSummonUndeadSister = 9001;
public const int SpMeteor = 9150;
public const int SpSummonUndead = 9055;
public const int bit_Fire = 51100;
public const int SpEarthquake = 9151;
public const int sword_Fire = 51000;
public const int SpMoonArrow = 9156;
public const int SpMeteor = 9150;
public const int puddle_Fire = 50900;
public const int SpMoonSpear = 9155;
public const int weapon_Fire = 50800;
public const int SpExterminate = 9160;
public const int SpMoonSpear = 9155;
public const int SpMoonArrow = 9156;
public const int SpEarthquake = 9151;
public const int flare_Void = 51216;
public static readonly int[] IDS = new int[289]
public static readonly int[] IDS = new int[290]
{
51008, 50908, 50808, 50708, 50608, 50508, 51108, 50408, 51016, 50308,
51204, 51104, 51208, 50109, 51004, 50309, 50409, 50904, 50509, 50804,
50609, 50709, 50809, 50909, 51009, 51109, 51209, 50108, 51207, 51007,
50705, 50905, 51005, 51105, 51205, 50106, 50605, 50306, 50406, 50506,
50505, 50606, 50706, 50806, 50906, 51006, 50405, 51106, 51206, 50107,
50305, 50307, 50407, 50110, 50507, 50607, 50707, 50807, 50907, 50105,
51107, 50805, 51212, 50410, 50115, 51214, 51114, 51014, 50914, 50814,
50315, 50714, 50514, 50414, 50314, 50114, 51213, 51113, 50614, 50415,
50515, 50615, 50704, 50916, 50816, 50716, 50616, 50516, 50416, 50316,
50116, 51215, 51115, 51015, 50915, 50815, 50715, 51013, 50913, 50813,
50713, 50811, 50711, 50611, 50511, 50411, 50311, 50111, 51210, 51110,
51010, 50910, 50810, 50710, 50610, 50510, 50911, 50310, 51011, 51211,
50613, 50513, 50413, 50313, 50113, 51112, 51012, 50912, 50812, 50712,
50612, 50512, 50412, 50312, 50112, 51111, 50604, 8780, 50404, 8503,
8502, 8501, 8500, 8491, 8490, 8480, 8471, 8470, 8450, 8430,
8406, 8405, 8404, 8403, 8504, 8402, 8506, 8510, 8791, 8790,
8776, 8775, 8770, 8710, 8708, 8707, 8706, 8705, 8704, 8702,
8700, 8555, 8550, 8507, 8792, 8401, 8390, 8202, 8201, 8200,
7800, 7010, 7009, 7008, 7007, 7006, 7005, 7004, 7003, 7002,
7001, 51116, 8220, 8400, 8221, 8232, 8380, 8300, 8288, 8286,
8285, 8284, 8281, 8280, 8260, 8256, 8255, 8251, 8250, 8241,
8240, 8230, 50504, 8800, 9000, 50602, 50502, 50402, 50302, 50102,
50908, 50808, 50708, 50608, 50508, 51004, 50408, 50308, 51016, 51104,
50108, 51008, 51108, 50109, 51207, 50904, 50309, 50804, 50409, 50509,
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,
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,
50316, 50116, 51215, 51115, 51015, 50915, 50815, 50715, 51013, 50913,
50813, 50713, 50811, 50711, 50611, 50511, 50411, 50311, 50111, 51210,
51110, 51010, 50910, 50810, 50710, 50610, 50510, 50911, 50310, 51011,
51211, 50613, 50513, 50413, 50313, 50113, 51112, 51012, 50912, 50812,
50712, 50612, 50512, 50412, 50312, 50112, 51111, 50504, 8790, 50304,
8503, 8502, 8501, 8500, 8491, 8490, 8480, 8471, 8470, 8450,
8430, 8406, 8405, 8404, 8403, 8504, 8402, 8506, 8510, 8791,
8780, 8776, 8775, 8770, 8710, 8708, 8707, 8706, 8705, 8704,
8702, 8700, 8555, 8550, 8507, 8792, 8401, 8390, 8202, 8201,
8200, 7800, 7010, 7009, 7008, 7007, 7006, 7005, 7004, 7003,
7002, 7001, 51116, 8220, 8400, 8221, 8232, 8380, 8300, 8288,
8286, 8285, 8284, 8281, 8280, 8260, 8256, 8255, 8251, 8250,
8241, 8240, 8230, 50404, 8800, 9000, 50502, 50402, 50302, 50102,
51201, 51101, 51001, 50901, 50801, 50701, 50601, 50501, 50401, 50301,
50702, 50101, 50802, 51002, 50304, 50104, 51203, 51103, 51003, 50903,
50803, 50703, 50603, 50503, 50403, 50303, 50103, 51202, 51102, 50902,
8801, 51200, 51000, 9054, 9053, 9052, 9051, 9050, 9010, 9009,
9008, 9007, 9006, 9005, 9004, 9003, 9002, 9001, 9150, 51100,
9151, 9156, 50900, 50800, 50700, 50600, 50500, 50400, 50300, 50100,
9503, 9502, 9501, 9500, 9210, 9200, 9160, 9155, 51216
50101, 50602, 51200, 50702, 50902, 50104, 51203, 51103, 51003, 50903,
50803, 50703, 50603, 50503, 50403, 50303, 50103, 51202, 51102, 51002,
50802, 8801, 51100, 50900, 9054, 9053, 9052, 9051, 9050, 9010,
9009, 9008, 9007, 9006, 9005, 9004, 9003, 9002, 9001, 9055,
51000, 9150, 9155, 50800, 50700, 50600, 50500, 50400, 50300, 50100,
9503, 9502, 9501, 9500, 9210, 9200, 9160, 9156, 9151, 51216
};
}
public class Spell : AbilityThing
public override void WriteNote(UINote n, Action<UINote> onWriteNote = null, IIns
{
return s;
}
int num4 = e.Value;
int num3 = e.Value;
if (e.source.IsWeaponEnc && (!e.source.tag.Contains("modRanged") || e.id == 609) && isEquipped && root.isChara)
{
num4 = num4 * (100 + AttackProcess.GetTwoHandEncBonus(root.Chara)) / 100;
num3 = num3 * (100 + AttackProcess.GetTwoHandEncBonus(root.Chara)) / 100;
}
string text16 = " (" + e.Value + ((e.Value == num4) ? "" : (" → " + num4)) + ")";
string text17 = "_bracketLeft3".lang() + e.Name + "_bracketRight3".lang();
return s + text16 + " " + text17;
string text12 = " (" + e.Value + ((e.Value == num3) ? "" : (" → " + num3)) + ")";
string text13 = "_bracketLeft3".lang() + e.Name + "_bracketRight3".lang();
return s + text12 + " " + text13;
});
}
if (sockets != null)public override void WriteNote(UINote n, Action<UINote> onWriteNote = null, IIns
{
if (showTraits)
{
elements.AddNote(n, (Element e) => listTrait.Contains(e), null, ElementContainer.NoteMode.BonusTrait, addRaceFeat: false, delegate(Element e, string s)
{
string text13 = s;
string text14 = e.source.GetText("textExtra");
if (!text14.IsEmpty())
{
string text15 = "";
if (e.id == 2 && mode == IInspect.NoteMode.Product)
{
int num2 = recipe.GetQualityBonus() / 10;
if (num2 >= 0)
{
num2++;
}
text15 = "qualityLimit".lang(num2.ToString() ?? "");
}
int num3 = e.Value / 10;
num3 = ((e.Value < 0) ? (num3 - 1) : (num3 + 1));
text14 = "Lv." + num3 + text15 + " " + text14;
if (infoMode && e.IsFoodTraitMain)
{
text14 += "traitAdditive".lang();
}
text13 += (" <size=12>" + text14 + "</size>").TagColor(FontColor.Passive);
}
return text13;
}, delegate
elements.AddNote(n, (Element e) => listTrait.Contains(e), null, ElementContainer.NoteMode.BonusTrait, addRaceFeat: false, (Element e, string s) => s + GetTextTrait(e), delegate
{
});
if (listTrait.Count != list.Count)public override void WriteNote(UINote n, Action<UINote> onWriteNote = null, IIns
if (base.c_mixedFoodData != null)
{
n.AddHeader("isMixedFood");
foreach (string text18 in base.c_mixedFoodData.texts)
foreach (string text14 in base.c_mixedFoodData.texts)
{
AddText("_bullet".lang() + text18 + text2, FontColor.Default);
AddText("_bullet".lang() + text14 + text2, FontColor.Default);
}
}
}public override void WriteNote(UINote n, Action<UINote> onWriteNote = null, IIns
n.AddHeader("HeaderAdditionalTrait", "additional_trait");
foreach (Element item in ListCraftBonusTraits())
{
item.AddEncNote(n, this, ElementContainer.NoteMode.BonusTrait, delegate(Element e, string s)
{
string text10 = s;
string text11 = e.source.GetText("textExtra");
if (!text11.IsEmpty())
{
string text12 = "";
int num = e.Value / 10;
num = ((e.Value < 0) ? (num - 1) : (num + 1));
text11 = "Lv." + num + text12 + " " + text11;
if (infoMode && e.IsFoodTraitMain)
{
text11 += "traitAdditive".lang();
}
text10 += (" <size=12>" + text11 + "</size>").TagColor(FontColor.Passive);
}
return text10;
});
item.AddEncNote(n, this, ElementContainer.NoteMode.BonusTrait, (Element e, string s) => s + GetTextTrait(e));
}
}
if (EClass.debug.showExtra)void AddTextWithIcon(string text, Sprite sprite, FontColor col)
uIItem2.image1.SetActive(enable: true);
uIItem2.image1.sprite = sprite;
}
string GetTextTrait(Element e)
{
string text10 = e.source.GetText("textExtra");
if (text10.IsEmpty())
{
return "";
}
if (e.id == 710)
{
text10 = text10.Replace("#1", $"{0.1f * (float)(e.Value + 10):F1}");
}
string text11 = "";
if (e.id == 2 && mode == IInspect.NoteMode.Product)
{
int num = recipe.GetQualityBonus() / 10;
if (num >= 0)
{
num++;
}
text11 = "qualityLimit".lang(num.ToString() ?? "");
}
int num2 = e.Value / 10;
num2 = ((e.Value < 0) ? (num2 - 1) : (num2 + 1));
text10 = "Lv." + num2 + text11 + " " + text10;
if (infoMode && e.IsFoodTraitMain)
{
text10 += "traitAdditive".lang();
}
return (" <size=12>" + text10 + "</size>").TagColor(FontColor.Passive);
}
}
public static void AddAttackEvaluation(UINote n, Chara chara, Thing current = null)Trait
public void OnBarter(bool reroll = false)
Add("stethoscope", 1, 0);
Add("whip_love", 1, 0);
Add("whip_interest", 1, 0);
Add("syringe_blood", 20, 0);
if (EClass.game.IsSurvival)
{
Add("chest_tax", 1, 0);+TraitBloodSample
File Created
public class TraitBloodSample : TraitFoodMeal
{
public override void SetName(ref string s)
{
if (!owner.c_idRefCard.IsEmpty())
{
s = s + Lang.space + "_flavor".lang(EClass.sources.cards.map.TryGetValue(owner.c_idRefCard, "fail_dish").GetName().ToTitleCase(wholeText: true));
}
}
}+TraitSyringeBlood
File Created
public class TraitSyringeBlood : TraitTicketChampagne.TraitSyringe
{
public override void TrySetHeldAct(ActPlan p)
{
p.pos.Charas.ForEach(delegate(Chara c)
{
p.TrySetAct("actInject".lang("", c.Name), delegate
{
EClass.pc.PlaySound("syringe");
EClass.pc.Say("syringe", EClass.pc, c, owner.NameOne);
c.PlayEffect("blood").SetParticleColor(EClass.Colors.matColors[c.material.alias].main).Emit(20);
c.AddBlood(2 + EClass.rnd(2));
EClass.pc.PickOrDrop(EClass.pc.pos, CraftUtil.MakeBloodSample(EClass.pc, c));
owner.ModNum(-1);
return false;
}, c);
});
}
}TraitSyringeGene
public class TraitSyringeGene : Trait
public class TraitSyringeGene : Trait
public class TraitSyringeGene : TraitTicketChampagne.TraitSyringe
{
public override bool CanChangeHeight => false;
public override void TrySetHeldAct(ActPlan p)
{
p.pos.Charas.ForEach(delegate(Chara c)public override void TrySetHeldAct(ActPlan p)
p.TrySetAct("actInject".lang("", c.Name), delegate
{
EClass.pc.PlaySound("syringe");
EClass.pc.Say("syringe", EClass.pc, owner.NameOne, c.Name);
EClass.pc.Say("syringe", EClass.pc, c, owner.NameOne);
c.PlayEffect("blood").SetParticleColor(EClass.Colors.matColors[c.material.alias].main).Emit(20);
c.AddBlood(2 + EClass.rnd(2));
c.AddCondition<ConHallucination>(50);TraitSyringeHeaven
public class TraitSyringeHeaven : Trait
public class TraitSyringeHeaven : Trait
public class TraitSyringeHeaven : TraitTicketChampagne.TraitSyringe
{
public override bool CanChangeHeight => false;
public override void TrySetHeldAct(ActPlan p)
{
p.pos.Charas.ForEach(delegate(Chara c)public override void TrySetHeldAct(ActPlan p)
p.TrySetAct("actInject".lang("", c.Name), delegate
{
EClass.pc.PlaySound("syringe");
EClass.pc.Say("syringe", EClass.pc, owner.NameOne, c.Name);
EClass.pc.Say("syringe", EClass.pc, c, owner.NameOne);
c.PlayEffect("blood").SetParticleColor(EClass.Colors.matColors[c.material.alias].main).Emit(20);
c.AddBlood(2 + EClass.rnd(2));
c.AddCondition<ConHallucination>(50);TraitTicketChampagne
public class TraitTicketChampagne : TraitTicketMassage
public class TraitTicketChampagne : TraitTicketMassage
{
public class TraitSyringe : Trait
{
public override bool CanChangeHeight => false;
}
}