EA 23.104 Nightly
March 16, 2025
20 files modified. 2 new files created.
Important Changes
None.
ABILITY
public class ABILITY
{
public const int ActChat = 5044;
public const int AI_TendAnimal = 5043;
public const int ActThrow = 5038;
@@ -14,7 +14,7 @@ public class ABILITY
public const int ActKick = 5042;
public const int AI_TendAnimal = 5043;
public const int ActChat = 5044;
public const int AI_Drink = 5045;
@@ -62,7 +62,7 @@ public class ABILITY
public const int ActSuicide = 6410;
public const int ActDuplicate = 6420;
public const int ActRush = 6450;
public const int AI_Bladder = 5054;
@@ -136,7 +136,7 @@ public class ABILITY
public const int ActCurse = 6600;
public const int ActRush = 6450;
public const int ActDuplicate = 6420;
public const int ActDraw = 6602;
@@ -154,9 +154,9 @@ public class ABILITY
public const int breathe_Poison = 50205;
public const int ActEntangle = 6601;
public const int breathe_Nether = 50206;
public const int breathe_Sound = 50207;
public const int ActEntangle = 6601;
public const int breathe_Nerve = 50208;
@@ -188,16 +188,16 @@ public class ABILITY
public const int ActKizuamiTrick = 6903;
public const int breathe_Nether = 50206;
public const int breathe_Sound = 50207;
public const int ActJureHeal = 6901;
public const int ActWeaken = 6610;
public const int ActLulwyTrick = 6902;
public const int ActNTR = 6603;
public const int ActLulwyTrick = 6902;
public const int ActTouchSleep = 6612;
public const int ActTouchDrown = 6613;
@@ -208,48 +208,48 @@ public class ABILITY
public const int ActGazeMutation = 6622;
public const int ActGazeMana = 6623;
public const int ActFear = 6611;
public const int ActDrainBlood = 6626;
public const int ActInsult = 6630;
public const int ActDrainBlood = 6626;
public const int ActGazeMana = 6623;
public const int ActSteal = 6640;
public const int ActStealFood = 6641;
public const int ActManaAbsorb = 6900;
public const int ActStealMoney = 6642;
public const int StManaCost = 6720;
public const int ActNeckHunt = 6650;
public const int ActScream = 6631;
public const int ActDropMine = 6660;
public const int StTaunt = 6700;
public const int ActThrowPotion = 6661;
public const int StTaunt = 6700;
public const int ActFear = 6611;
public const int StManaCost = 6720;
public const int ActNeckHunt = 6650;
public const int ActManaAbsorb = 6900;
public const int ActStealMoney = 6642;
public const int ActScream = 6631;
public const int ActStealFood = 6641;
public const int ActDropMine = 6660;
public static readonly int[] IDS = new int[117]
{
5044, 5038, 5039, 5040, 5041, 5042, 5043, 5045, 5046, 5047,
5043, 5038, 5039, 5040, 5041, 5042, 5044, 5045, 5046, 5047,
5048, 5049, 5050, 5051, 5052, 5037, 5053, 5055, 6001, 6003,
6011, 6012, 6013, 6015, 6018, 6019, 6020, 6050, 6400, 6410,
6420, 5054, 6500, 5036, 5034, 5004, 5005, 5006, 5007, 5008,
6450, 5054, 6500, 5036, 5034, 5004, 5005, 5006, 5007, 5008,
5009, 5010, 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5035,
5018, 5020, 5021, 5022, 5023, 5024, 5025, 5026, 5027, 5028,
5029, 5030, 5031, 5032, 5033, 5019, 6600, 6450, 6602, 7000,
50200, 50201, 50202, 50203, 50204, 50205, 6601, 50207, 50208, 6904,
5029, 5030, 5031, 5032, 5033, 5019, 6600, 6420, 6602, 7000,
50200, 50201, 50202, 50203, 50204, 50205, 50206, 6601, 50208, 6904,
50209, 50211, 50212, 50213, 50214, 50215, 50216, 5000, 5001, 5002,
5003, 50210, 6903, 50206, 6901, 6610, 6902, 6603, 6612, 6613,
6620, 6621, 6622, 6623, 6611, 6630, 6626, 6640, 6641, 6642,
6650, 6660, 6661, 6700, 6720, 6900, 6631
5003, 50210, 6903, 50207, 6901, 6610, 6603, 6902, 6612, 6613,
6620, 6621, 6622, 6626, 6630, 6623, 6640, 6900, 6720, 6631,
6700, 6661, 6611, 6650, 6642, 6641, 6660
};
}
public class Ability : Act
AI_Idle
@@ -569,7 +569,7 @@ public override IEnumerable<Status> Run()
}
if (EClass.rnd(100) == 0 && owner.trait is TraitBitch)
{
Chara chara2 = DoSomethingToNearChara((Chara c) => c.IsIdle && !c.IsPCParty && !(c.trait is TraitBitch) && !c.HasElement(418));
Chara chara2 = DoSomethingToNearChara((Chara c) => c.IsIdle && !c.IsPCParty && !(c.trait is TraitBitch) && c.Evalue(418) <= 0);
if (chara2 != null)
{
yield return Do(new AI_Fuck
ActNTR
@@ -2,9 +2,9 @@ public class ActNTR : Ability
{
public override bool CanPerform()
{
if (Act.TC.isChara && (Act.TC.Chara.conSleep != null || Act.CC.HasElement(1239)))
if (Act.TC.isChara && (Act.TC.Chara.conSleep != null || Act.CC.HasElement(1239) || Act.TC.Evalue(418) < 0))
{
return !Act.TC.HasElement(418);
return Act.TC.Evalue(418) <= 0;
}
return false;
}
Card
@@ -6320,6 +6320,10 @@ public void TryUnrestrain(bool force = false, Chara c = null)
EClass.player.ModKarma(2);
}
}
if (EClass._zone.IsPCFaction || EClass._zone is Zone_Tent)
{
return;
}
foreach (Chara item in c.pos.ListCharasInRadius(c, 5, (Chara _c) => _c.id == "fanatic" && _c.faith != Chara.faith))
{
c.DoHostileAction(item, immediate: true);
Chara
@@ -3383,7 +3383,7 @@ public void TickConditions()
case 1:
if (!IsPC || !EClass.debug.godMode)
{
if (EClass.rnd(2) == 0)
if (EClass.rnd(2) == 0 && !HasCondition<ConAwakening>())
{
sleepiness.Mod(1);
}
@@ -6202,6 +6202,16 @@ public override string GetHoverText2()
text2 = text2 + base.uid + IsMinion + "/" + base.c_uidMaster + "/" + master;
text2 = text2 + " dir:" + base.dir + " skin:" + base.idSkin;
}
if (EClass.pc.held?.trait is TraitWhipLove && IsPCFaction)
{
text2 += Environment.NewLine;
text2 += "<size=14>";
foreach (Hobby item in ListHobbies().Concat(ListWorks()))
{
text2 = text2 + item.Name + ", ";
}
text2 = text2.TrimEnd(", ".ToCharArray()) + "</size>";
}
string text3 = "";
IEnumerable<BaseStats> enumerable = conditions.Concat((!IsPCFaction) ? new BaseStats[0] : new BaseStats[2] { hunger, stamina });
if (enumerable.Count() > 0)
@@ -6209,15 +6219,15 @@ public override string GetHoverText2()
text3 += Environment.NewLine;
text3 += "<size=14>";
int num = 0;
foreach (BaseStats item in enumerable)
foreach (BaseStats item2 in enumerable)
{
string text4 = item.GetPhaseStr();
string text4 = item2.GetPhaseStr();
if (text4.IsEmpty() || text4 == "#")
{
continue;
}
Color c = Color.white;
switch (item.source.group)
switch (item2.source.group)
{
case "Bad":
case "Debuff":
@@ -6230,10 +6240,10 @@ public override string GetHoverText2()
}
if (EClass.debug.showExtra)
{
text4 = text4 + "(" + item.GetValue() + ")";
if (resistCon != null && resistCon.ContainsKey(item.id))
text4 = text4 + "(" + item2.GetValue() + ")";
if (resistCon != null && resistCon.ContainsKey(item2.id))
{
text4 = text4 + "{" + resistCon[item.id] + "}";
text4 = text4 + "{" + resistCon[item2.id] + "}";
}
}
num++;
@@ -6252,9 +6262,9 @@ public override string GetHoverText2()
if (EClass.debug.showExtra)
{
text3 += Environment.NewLine;
foreach (ActList.Item item2 in ability.list.items)
foreach (ActList.Item item3 in ability.list.items)
{
text3 = text3 + item2.act.Name + ", ";
text3 = text3 + item3.act.Name + ", ";
}
text3 = text3.TrimEnd(", ".ToCharArray());
}
@@ -7125,6 +7135,11 @@ public bool TryUse(Thing t)
{
return false;
}
if (t.id == "cigar")
{
(t.trait as TraitItemProc).OnUse(this);
return true;
}
if (t.trait.CanEat(this) && hunger.GetPhase() > ((IsPCFaction || IsPCFactionMinion) ? 2 : 0))
{
SetAIImmediate(new AI_Eat
c.ModAffinity(EClass.pc, a, show);
return;
}
int num = StatsHygiene.GetAffinityMod(EClass.pc.hygiene.GetPhase()) + (HasElement(417) ? 30 : 0);
int num = StatsHygiene.GetAffinityMod(EClass.pc.hygiene.GetPhase()) + (HasElement(417) ? 30 : 0) + (EClass.pc.HasCondition<ConSmoking>() ? (-30) : 0);
if (IsPCFaction && homeBranch != null)
{
num += (int)Mathf.Sqrt(homeBranch.Evalue(2117)) * 5;
+ConAwakening
File Created
public class ConAwakening : Condition
{
public override int GetPhase()
{
return 0;
}
public override void OnStart()
{
base.OnStart();
owner.sleepiness.Mod(-20);
}
}
ConSleep
@@ -179,12 +179,12 @@ public static void SuccubusVisit(Chara tg)
}
foreach (Chara chara in EClass._map.charas)
{
if (chara == tg || chara.IsPC || chara.HasElement(418) || EClass.rnd(3) != 0 || chara.IsDisabled || !chara.IsIdle)
if (chara == tg || chara.IsPC || chara.host != null || chara.IsDisabled || !chara.IsIdle || chara.Evalue(418) > 0 || tg.Evalue(418) > 0)
{
continue;
}
Thing thing = chara.things.Find<TraitDreamBug>();
if ((!chara.HasElement(1216) && thing == null) || chara.host != null || (tg.IsPC && thing == null && EClass.rnd(200) != 0))
if ((!chara.HasElement(1216) && thing == null) || (tg.Evalue(418) == 0 && (EClass.rnd(3) != 0 || (tg.IsPC && thing == null && EClass.rnd(200) != 0))))
{
continue;
}
+ConSmoking
File Created
public class ConSmoking : Condition
{
public override int GetPhase()
{
return 0;
}
public override void Tick()
{
base.Tick();
if (EClass.rnd(2) == 0)
{
owner.sleepiness.Mod(-1);
}
}
}
CoreRef
@@ -68,6 +68,8 @@ public class Enc
public Sprite trait;
public Sprite traitFood;
public Sprite mod;
public Sprite weaponEnc;
CraftUtil
@@ -160,7 +160,7 @@ public static Card MixIngredients(Card product, List<Thing> ings, MixType type,
{
foreach (Element value3 in product.sourceCard.model.elements.dict.Values)
{
if (value3.IsFoodTraitMain)
if (value3.IsTrait || value3.IsFoodTraitMain)
{
product.elements.ModBase(value3.id, value3.Value);
}
DOMAIN
public class DOMAIN
{
public const int domEarth = 812;
public const int domHealing = 811;
public const int domEyth = 814;
public const int domLuck = 810;
public const int domOblivion = 813;
public const int domMachine = 809;
public const int domTest = 800;
public const int domEyth = 814;
public const int domElement = 806;
public const int domHarmony = 815;
public const int domFaith = 802;
public const int domEarth = 812;
public const int domLuck = 810;
public const int domMiracle = 803;
public const int domMachine = 809;
public const int domTest = 800;
public const int domHarvest = 808;
public const int domWind = 807;
public const int domElement = 806;
public const int domComm = 805;
public const int domArcane = 804;
public const int domMiracle = 803;
public const int domHarmony = 815;
public const int domFaith = 802;
public const int domSurvival = 801;
public const int domOblivion = 813;
public static readonly int[] IDS = new int[16]
{
812, 811, 814, 813, 800, 806, 802, 810, 809, 808,
807, 805, 804, 803, 815, 801
811, 810, 809, 814, 815, 812, 803, 800, 808, 807,
806, 805, 804, 802, 801, 813
};
}
public class Domain : EClass
ELEMENT
public class ELEMENT
{
public const int stimulant = 760;
public const int comfort = 750;
public const int rare = 751;
public const int cute = 752;
@@ -17,9 +21,9 @@ public class ELEMENT
public const int hotspring = 756;
public const int purity = 759;
public const int recharge = 761;
public const int comfort = 750;
public const int purity = 759;
public const int _void = 0;
@@ -39,7 +43,7 @@ public class ELEMENT
public const int hardness = 13;
public const int water = 15;
public const int growth = 14;
public const int heat = 16;
@@ -47,7 +51,7 @@ public class ELEMENT
public const int taste = 18;
public const int growth = 14;
public const int water = 15;
public const int fire = 21;
@@ -67,12 +71,12 @@ public class ELEMENT
public const int poison = 20;
public static readonly int[] IDS = new int[31]
public static readonly int[] IDS = new int[33]
{
751, 752, 753, 754, 755, 756, 759, 750, 0, 2,
1, 3, 5, 10, 11, 12, 13, 15, 16, 17,
18, 14, 21, 22, 23, 24, 25, 26, 29, 85,
20
760, 750, 751, 752, 753, 754, 755, 756, 761, 759,
0, 2, 1, 3, 5, 10, 11, 12, 13, 14,
16, 17, 18, 15, 21, 22, 23, 24, 25, 26,
29, 85, 20
};
}
public class Element : EClass
ENC
@@ -10,16 +10,14 @@ public class ENC
public const int r_life = 640;
public const int mod_flurry = 621;
public const int mod_chaser = 620;
public const int mod_feint = 623;
public const int mod_splash = 608;
public const int mod_cleave = 622;
public const int mod_flurry = 621;
public const int living = 653;
public const int mod_frustration = 624;
@@ -46,7 +44,7 @@ public class ENC
public const int convertFire = 850;
public const int mod_scatter = 607;
public const int mod_splash = 608;
public const int convertImpact = 865;
@@ -54,11 +52,13 @@ public class ENC
public const int onlyPet = 655;
public const int mod_drill = 606;
public const int mod_scatter = 607;
public const int bane_fairy = 462;
public const int bane_animal = 463;
public const int mod_ammo_recover = 604;
public const int mod_precision = 605;
public const int allNeckHunt = 428;
public const int negateNeckHunt = 427;
@@ -70,7 +70,7 @@ public class ENC
public const int negateFear = 423;
public const int negateParalysis = 422;
public const int negateBlind = 421;
public const int negatePoison = 420;
@@ -84,10 +84,10 @@ public class ENC
public const int encHit = 414;
public const int allNeckHunt = 428;
public const int slowCorruption = 412;
public const int encSpell = 411;
public const int throwReturn = 410;
public const int corruption = 409;
@@ -110,15 +110,17 @@ public class ENC
public const int negateTeleport = 400;
public const int mod_precision = 605;
public const int encSpell = 411;
public const int mod_drill = 606;
public const int breathing = 429;
public const int negateBlind = 421;
public const int sustain_STR = 440;
public const int optimizeMana = 483;
public const int negateParalysis = 422;
public const int slot_rune = 484;
public const int mod_ammo_knockback = 603;
public const int mod_rapid = 602;
@@ -126,7 +128,9 @@ public class ENC
public const int mod_ammo = 600;
public const int slot_rune = 484;
public const int sustain_END = 441;
public const int optimizeMana = 483;
public const int force_weapon = 482;
@@ -140,13 +144,13 @@ public class ENC
public const int bane_god = 466;
public const int bane_machine = 465;
public const int bane_man = 464;
public const int bane_animal = 463;
public const int bane_machine = 465;
public const int bane_undead = 461;
public const int bane_man = 464;
public const int bane_dragon = 460;
public const int sustain_CHA = 447;
@@ -156,28 +160,24 @@ public class ENC
public const int sustain_LER = 444;
public const int sustain_PER = 443;
public const int bane_fairy = 462;
public const int bane_dragon = 460;
public const int sustain_PER = 443;
public const int sustain_DEX = 442;
public const int sustain_END = 441;
public const int sustain_STR = 440;
public const int mod_ammo_knockback = 603;
public const int mod_ammo_recover = 604;
public static readonly int[] IDS = new int[84]
{
652, 651, 650, 641, 640, 620, 623, 608, 622, 621,
653, 624, 654, 851, 656, 660, 661, 662, 663, 664,
665, 666, 850, 607, 865, 852, 655, 606, 462, 604,
427, 426, 425, 424, 423, 422, 420, 418, 417, 416,
415, 414, 428, 412, 410, 409, 408, 407, 406, 405,
404, 403, 402, 401, 400, 605, 411, 429, 421, 483,
602, 601, 600, 484, 482, 481, 480, 468, 467, 466,
465, 463, 461, 464, 447, 446, 445, 444, 443, 460,
442, 441, 440, 603
652, 651, 650, 641, 640, 621, 620, 623, 622, 653,
624, 654, 851, 656, 660, 661, 662, 663, 664, 665,
666, 850, 608, 865, 852, 655, 607, 463, 605, 428,
427, 426, 425, 424, 423, 421, 420, 418, 417, 416,
415, 414, 412, 411, 410, 409, 408, 407, 406, 405,
404, 403, 402, 401, 400, 606, 429, 440, 422, 484,
603, 602, 601, 600, 441, 483, 482, 481, 480, 468,
467, 466, 464, 465, 461, 460, 447, 446, 445, 444,
462, 443, 442, 604
};
}
ElementContainer
sprite = EClass.core.refs.icons.enc.card;
}
}
if (thing.IsFood && e.IsFoodTrait)
{
sprite = EClass.core.refs.icons.enc.traitFood;
}
if (e.id == thing.GetInt(107))
{
sprite = EClass.core.refs.icons.enc.cat;
FACTION
public class FACTION
{
public const int bfBeach = 3604;
public const int bfHill = 3603;
public const int bfCave = 3500;
@@ -14,19 +14,19 @@ public class FACTION
public const int bfSnow = 3602;
public const int bfHill = 3603;
public const int bfFertile = 3700;
public const int bfSea = 3605;
public const int bfBeach = 3604;
public const int fRation = 2207;
public const int bfGeyser = 3701;
public const int fAttraction = 2206;
public const int fEducation = 2116;
public const int fLoyal = 2117;
public const int fFood = 2204;
@@ -40,8 +40,6 @@ public class FACTION
public const int fHeirloom = 2120;
public const int fLoyal = 2117;
public const int fConstruction = 2003;
public const int bfRuin = 3702;
@@ -52,11 +50,13 @@ public class FACTION
public const int fAdmin = 2115;
public const int fEducation = 2116;
public const int fSafety = 2205;
public const int bfTranquil = 3703;
public const int bfFish = 3706;
public const int bfMonster = 3707;
public const int bfHunt = 3705;
@@ -96,7 +96,7 @@ public class FACTION
public const int bfLandmark1 = 3780;
public const int bfMonster = 3707;
public const int bfFish = 3706;
public const int bfLandmark3 = 3782;
@@ -110,11 +110,11 @@ public class FACTION
public static readonly int[] IDS = new int[52]
{
3604, 3500, 3600, 3601, 3602, 3603, 3700, 3605, 2207, 3701,
2206, 2116, 2204, 2203, 2202, 2201, 2200, 2120, 2117, 2003,
3702, 2119, 2118, 2115, 2205, 3703, 3706, 3705, 4006, 4005,
3603, 3500, 3600, 3601, 3602, 3700, 3605, 3604, 2207, 3701,
2206, 2117, 2204, 2203, 2202, 2201, 2200, 2120, 2003, 3702,
2119, 2118, 2115, 2116, 2205, 3703, 3707, 3705, 4006, 4005,
4004, 4003, 4002, 4001, 3704, 3900, 3805, 3804, 3803, 4000,
3801, 3802, 3708, 3709, 3710, 3780, 3707, 3782, 3783, 3784,
3801, 3802, 3708, 3709, 3710, 3780, 3706, 3782, 3783, 3784,
3800, 3781
};
}
FEAT
@@ -57,7 +57,7 @@ public class FEAT
public const int featEarthStrength = 1411;
public const int featManaCost = 1657;
public const int featChef = 1658;
public const int featScavenger = 1656;
@@ -103,7 +103,7 @@ public class FEAT
public const int featReboot = 1410;
public const int featChef = 1658;
public const int featManaCost = 1657;
public const int featPaladin2 = 1408;
@@ -233,10 +233,10 @@ public class FEAT
{
1628, 1627, 1626, 1625, 1624, 1623, 1622, 1621, 1620, 1612,
1412, 1610, 1421, 1420, 1419, 1418, 1417, 1416, 1415, 1414,
1413, 1629, 1611, 1630, 1645, 1632, 1411, 1657, 1656, 1655,
1413, 1629, 1611, 1630, 1645, 1632, 1411, 1658, 1656, 1655,
1654, 1653, 1652, 1651, 1650, 1649, 1631, 1648, 1646, 1644,
1643, 1642, 1641, 1640, 1636, 1635, 1634, 1633, 1647, 1410,
1658, 1408, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232,
1657, 1408, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232,
1234, 1235, 1236, 1237, 1238, 1239, 1300, 1305, 1310, 1315,
1320, 1325, 1330, 1224, 1223, 1222, 1221, 1409, 1200, 1201,
1202, 1203, 1204, 1205, 1206, 1207, 1208, 1335, 1209, 1211,
FoodEffect
@@ -419,6 +419,7 @@ public static void Proc(Chara c, Thing food)
public static void ProcTrait(Chara c, Card t)
{
bool flag = false;
foreach (Element value in t.elements.dict.Values)
{
if (!value.IsTrait)
@@ -441,6 +442,27 @@ public static void ProcTrait(Chara c, Card t)
case 756:
c.AddCondition<ConHotspring>(value.Value * 2)?.SetPerfume();
break;
case 760:
if (!c.HasCondition<ConAwakening>())
{
flag = true;
}
c.AddCondition<ConAwakening>(1000 + value.Value * 20);
break;
case 761:
if (c.HasCondition<ConAwakening>() && !flag)
{
if (c.IsPC)
{
Msg.Say("recharge_stamina_fail");
}
}
else
{
c.Say("recharge_stamina", c);
c.stamina.Mod(value.Value * 2 / 3 + EClass.rnd(5));
}
break;
}
}
else
@@ -457,6 +479,10 @@ public static void ProcTrait(Chara c, Card t)
c.AddCondition<ConInsane>(-value.Value * 10);
c.AddCondition<ConHallucination>(-value.Value * 20);
break;
case 761:
c.Say("recharge_stamina_negative", c);
c.stamina.Mod(value.Value);
break;
}
}
}
GoalCombat
@@ -486,6 +486,20 @@ public virtual bool TryUseAbility(int dist, bool beforeMove = false)
}
switch (act.id)
{
case 6603:
if (!tc.IsPCParty || tc.Evalue(418) < 0)
{
break;
}
foreach (Chara member in EClass.pc.party.members)
{
if (member.Evalue(418) < 0)
{
owner.enemy = (tc = member);
return false;
}
}
break;
case 6602:
if (dist <= 1 || tc.HasCondition<ConEntangle>())
{
LayerCraft
@@ -483,10 +483,7 @@ public void RefreshProduct()
{
foreach (Element item in thing.elements.dict.Values.ToList())
{
if (!item.IsTrait)
{
thing.elements.Remove(item.id);
}
_ = item;
}
}
info1.buttonProduct.SetCard(thing);
Net
@@ -43,7 +43,11 @@ public class DownloadMeta
public bool IsValidVersion()
{
return !Version.Get(version).IsBelow(EClass.core.versionMoongate);
if (!Version.Get(version).IsBelow(EClass.core.versionMoongate))
{
return Version.Get(version).IsSameOrBelow(EClass.core.version);
}
return false;
}
}
Thing
uIItem.text2.SetText(text2);
if (showEQStats && flag2)
{
if (!flag)
text2 = "";
if (DV != 0 || PV != 0 || base.HIT != 0 || base.DMG != 0 || Penetration != 0)
{
text2 = "";
if (DV != 0 || PV != 0 || base.HIT != 0 || base.DMG != 0 || Penetration != 0)
if (base.DMG != 0)
{
if (base.DMG != 0)
{
text2 = text2 + "DMG".lang() + ((base.DMG > 0) ? "+" : "") + base.DMG + ", ";
}
if (base.HIT != 0)
{
text2 = text2 + "HIT".lang() + ((base.HIT > 0) ? "+" : "") + base.HIT + ", ";
}
if (DV != 0)
{
text2 = text2 + "DV".lang() + ((DV > 0) ? "+" : "") + DV + ", ";
}
if (PV != 0)
{
text2 = text2 + "PV".lang() + ((PV > 0) ? "+" : "") + PV + ", ";
}
if (Penetration != 0)
{
text2 = text2 + "PEN".lang() + ((Penetration > 0) ? "+" : "") + Penetration + "%, ";
}
text2 = text2.TrimEnd(' ').TrimEnd(',');
text2 = text2 + "DMG".lang() + ((base.DMG > 0) ? "+" : "") + base.DMG + ", ";
}
if (!text2.IsEmpty())
if (base.HIT != 0)
{
n.AddText("NoteText_eqstats", text2);
text2 = text2 + "HIT".lang() + ((base.HIT > 0) ? "+" : "") + base.HIT + ", ";
}
if (DV != 0)
{
text2 = text2 + "DV".lang() + ((DV > 0) ? "+" : "") + DV + ", ";
}
if (PV != 0)
{
text2 = text2 + "PV".lang() + ((PV > 0) ? "+" : "") + PV + ", ";
}
if (Penetration != 0)
{
text2 = text2 + "PEN".lang() + ((Penetration > 0) ? "+" : "") + Penetration + "%, ";
}
text2 = text2.TrimEnd(' ').TrimEnd(',');
}
if (!text2.IsEmpty())
{
n.AddText("NoteText_eqstats", text2);
}
if (trait is TraitToolRange traitToolRange)
{
if (mode == IInspect.NoteMode.Product && HasTag(CTAG.dish_bonus))
{
n.AddHeader("HeaderAdditionalTrait", "additional_trait");
source.model.elements.AddNote(n, (Element e) => e.IsFoodTraitMain, null, ElementContainer.NoteMode.Trait, addRaceFeat: false, delegate(Element e, string s)
source.model.elements.AddNote(n, (Element e) => e.IsTrait || e.IsFoodTraitMain, null, ElementContainer.NoteMode.Trait, addRaceFeat: false, delegate(Element e, string s)
{
string text9 = s;
string text10 = e.source.GetText("textExtra");
{
AddText("isReplica", FontColor.Passive);
}
if (flag2)
if (flag2 && mode != IInspect.NoteMode.Product)
{
Chara chara = GetRootCard() as Chara;
if (base.parentCard?.trait is TraitChestMerchant)
n.AddText(base.ammoData.Name);
}
onWriteNote?.Invoke(n);
if (mode == IInspect.NoteMode.Product && base.IsEquipmentOrRangedOrAmmo)
{
AddText("isProductWarning", FontColor.Default);
}
if ((bool)LayerDragGrid.Instance)
{
LayerDragGrid.Instance.owner.OnWriteNote(this, n);
TraitDrink
@@ -158,6 +158,7 @@ public override void OnDrink(Chara c)
refThing = owner.Thing,
act = ((source != null) ? ACT.Create(source) : null)
});
FoodEffect.ProcTrait(c, owner);
}
public override void OnThrowGround(Chara c, Point p)