EA 23.178 Nightly Patch 1
August 13, 2025
21 files modified. 2 new files created. 1 file removed.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
Chara (1)
public Thing MakeLunch()
ELEMENT (1)
public static SourceElement.Row GetRandomElement(int lv = 1)
public static SourceElement.Row GetRandomElement(int lv = 1, bool useWeight = true)
FoodEffect (1)
public static void Proc(Chara c, Thing food)
public static void Proc(Chara c, Thing food, bool consume = true)
AI_Eat
public override IEnumerable<Status> Run()
owner.Say("eat_end", owner, target.GetName(NameStyle.Full, 1));
owner.ShowEmo(Emo.happy);
FoodEffect.Proc(owner, target.Thing);
target.ModNum(-1);
}
}
}.SetDuration(max, 5);
ActEffect
public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
bool flag3 = false;
bool flag4 = actRef.n1 == "special";
int num5 = -1;
string text = "";
switch (actRef.n1)
{
case "shadow":
public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
continue;
}
Chara chara = null;
CardBlueprint.Set(new CardBlueprint());
if (num5 != -1)
{
CardBlueprint.Set(new CardBlueprint
CardBlueprint.current.lv = num5;
}
if (!text.IsEmpty())
{
CardBlueprint.current.idEle = text;
}
switch (actRef.n1)
{
case "special":
if (j == 0 && !CC.HasMinion("imolonac") && !CC.HasMinion("ygolonac"))
{
lv = num5
});
chara = CharaGen.Create((EClass.rnd(20) == 0) ? "imolonac" : "ygolonac");
break;
}
Debug.Log(CardBlueprint.current.idEle);
chara = CharaGen.Create("hound", CC.LV);
if (text.IsEmpty())
{
text = chara.MainElement.source.alias;
}
break;
case "yeek":
chara = CharaGen.CreateFromFilter(SpawnListChara.Get("summon_yeek", (SourceChara.Row r) => r.race == "yeek"), power / 10);
break;
case "orc":
chara = CharaGen.CreateFromFilter(SpawnListChara.Get("summon_orc", (SourceChara.Row r) => r.race == "orc"), power / 10);
break;
case "pawn":
chara = CharaGen.CreateFromFilter("c_pawn", power / 10);
break;
case "monster":
chara = CharaGen.CreateFromFilter("c_dungeon", power / 10);
break;
case "animal":
chara = CharaGen.CreateFromFilter("c_animal", power / 15);
break;
case "fire":
chara = CharaGen.CreateFromElement("Fire", power / 10);
break;
case "fish":
chara = CharaGen.CreateFromFilter(SpawnListChara.Get("summon_fish", (SourceChara.Row r) => r.ContainsTag("water") || r.model.Chara.race.tag.Contains("water")), power / 10);
break;
case "octopus":
chara = CharaGen.CreateFromFilter(SpawnListChara.Get("summon_octopus", (SourceChara.Row r) => r.race == "octopus"), power / 10);
break;
default:
chara = CharaGen.Create(id3, power / 10);
break;
}
chara = actRef.n1 switch
{
"special" => (j != 0 || CC.HasMinion("imolonac") || CC.HasMinion("ygolonac")) ? CharaGen.Create("hound", 50) : CharaGen.Create((EClass.rnd(20) == 0) ? "imolonac" : "ygolonac"),
"yeek" => CharaGen.CreateFromFilter(SpawnListChara.Get("summon_yeek", (SourceChara.Row r) => r.race == "yeek"), power / 10),
"orc" => CharaGen.CreateFromFilter(SpawnListChara.Get("summon_orc", (SourceChara.Row r) => r.race == "orc"), power / 10),
"pawn" => CharaGen.CreateFromFilter("c_pawn", power / 10),
"monster" => CharaGen.CreateFromFilter("c_dungeon", power / 10),
"animal" => CharaGen.CreateFromFilter("c_animal", power / 15),
"fire" => CharaGen.CreateFromElement("Fire", power / 10),
"fish" => CharaGen.CreateFromFilter(SpawnListChara.Get("summon_fish", (SourceChara.Row r) => r.ContainsTag("water") || r.model.Chara.race.tag.Contains("water")), power / 10),
"octopus" => CharaGen.CreateFromFilter(SpawnListChara.Get("summon_octopus", (SourceChara.Row r) => r.race == "octopus"), power / 10),
_ => CharaGen.Create(id3, power / 10),
};
if (chara == null)
{
continue;
public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
continue;
}
int num6 = -1;
num6 = ((!(actRef.n1 == "shadow")) ? (chara.LV * (100 + power / 10) / 100 + power / 30) : (power / 10 + 1));
string n = actRef.n1;
if (!(n == "shadow"))
{
if (!(n == "special"))
{
num6 = chara.LV * (100 + power / 10) / 100 + power / 30;
}
}
else
{
num6 = power / 10 + 1;
}
if (chara.LV < num6)
{
chara.SetLv(num6);
public static bool DamageEle(Card CC, EffectId id, int power, Element e, List<Po
{
chara.c_fur = -1;
}
string n = actRef.n1;
n = actRef.n1;
if (!(n == "shadow"))
{
if (n == "special_force")
Affinity
public bool CanGiveCard()
{
if (!EClass.debug.marryAnytime)
{
return CurrentStage >= Stage.Love;
}
return true;
return CurrentStage >= Stage.Love;
}
public bool CanMarry()
return true;
}
public int GetLunchChance()
{
if (!EClass.debug.enable)
{
if (CurrentStage < Stage.LoveLoveLove)
{
if (CurrentStage < Stage.LoveLove)
{
if (CurrentStage < Stage.Love)
{
return 0;
}
return 10;
}
return 25;
}
return 50;
}
return 100;
}
public Sprite GetIcon()
{
int affinity = CC._affinity;
CINT
public const int dateSpecialSummon = 70;
public const int dateLunchGift = 71;
public const int fiamaPet = 100;
public const int noRestock = 101;
public const int price_copy = 124;
public const int isHalfEaten = 125;
public const int dateDeathLock = 130;
public const int fixedValue = 131;
COBJ
public const int corruptionHistory = 16;
public const int socketList = 17;
public const int mixedFoodData = 18;
}
Card
}
}
public MixedFoodData c_mixedFoodData
{
get
{
return GetObj<MixedFoodData>(18);
}
set
{
SetObj(18, value);
}
}
public byte[] c_textureData
{
get
{
if (rarity >= Rarity.Legendary || trait is TraitAdventurer)
{
return !IsPCFaction;
return !IsPCFactionOrMinion;
}
return false;
}
public Thing TryMakeRandomItem(int lv = -1)
case "egg_fertilized":
case "_meat":
case "meat_marble":
case "dattamono":
case "deadbody":
{
string text = "c_wilds";
if (id == "_meat" || id == "meat_marble")
Chara
public override bool IsMultisize => sourceCard.multisize;
public override int MaxHP => (int)Mathf.Clamp(((long)(base.END * 2 + base.STR + base.WIL / 2) * (long)Mathf.Min(base.LV, 25) / 25 + base.END + 10) * Evalue(60) / 100 * ((IsPCFaction ? 100 : (100 + (int)base.rarity * 300)) + (IsPC ? (EClass.player.lastEmptyAlly * Evalue(1646)) : 0)) / 100, 1f, 100000000f);
public override int MaxHP => (int)Mathf.Clamp(((long)(base.END * 2 + base.STR + base.WIL / 2) * (long)Mathf.Min(base.LV, 25) / 25 + base.END + 10) * Evalue(60) / 100 * ((base.IsPCFactionOrMinion ? 100 : (100 + (int)base.rarity * 300)) + (IsPC ? (EClass.player.lastEmptyAlly * Evalue(1646)) : 0)) / 100, 1f, 100000000f);
public override int WeightLimit => Mathf.Max((base.STR * 500 + base.END * 250 + Evalue(207) * 2000) * ((!HasElement(1411)) ? 1 : 5) + 45000, 1000);
public override void OnCreate(int genLv)
Tuple<string, int, int> tuple = list.RandomItemWeighted((Tuple<string, int, int> a) => 10000 / (100 + (_genLv - a.Item3) * 25));
if (!bp.idEle.IsEmpty())
{
tuple = list.Where((Tuple<string, int, int> a) => a.Item1 == bp.idEle).FirstOrDefault() ?? tuple;
tuple = list.Where((Tuple<string, int, int> a) => a.Item1 == bp.idEle || "ele" + a.Item1 == bp.idEle).FirstOrDefault() ?? tuple;
}
SetMainElement(tuple.Item1, (tuple.Item2 == 0) ? 10 : tuple.Item2, elemental: true);
if (list.Count >= 2)
public void RefreshSpeed(Element.BonusInfo info = null)
{
ride.RefreshSpeed();
_Speed = ride._Speed;
info?.AddText("rideSpeed".lang(_Speed.ToString() ?? ""));
}
else if (host != null)
{
public void RefreshSpeed(Element.BonusInfo info = null)
}
if (parasite != null)
{
int speed = _Speed;
_Speed = _Speed * 100 / Mathf.Clamp(120 + parasite.LV * 2 - base.STR - Evalue(227) * 2, 100, 1000);
info?.AddText(_Speed - speed, "parasiteSpeed".lang());
}
if (_Speed < elements.ValueWithoutLink(79) / 3)
{
{
RemoveCondition<ConSuspend>();
}
if (IsDeadOrSleeping)
if (LayerDrama.forceJump == null)
{
ShowDialog("_chara", "sleep");
}
else if (EClass.pc.isHidden && !CanSee(EClass.pc))
{
ShowDialog("_chara", "invisible");
}
else if (base.isRestrained)
{
ShowDialog("_chara", "strain");
}
else if (base.IsUnique && !EClass.player.codex.DroppedCard(id) && affinity.CanGiveCard())
{
EClass.player.codex.MarkCardDrop(id);
ShowDialog("_chara", "give_card");
Thing thing = ThingGen.Create("figure");
thing.MakeFigureFrom(id);
EClass.player.DropReward(thing);
thing = ThingGen.Create("figure3");
thing.MakeFigureFrom(id);
EClass.player.DropReward(thing);
}
else if (IsEscorted())
{
ShowDialog("_chara", "escort");
}
else if (EClass._zone is Zone_Music)
{
ShowDialog("_chara", "party");
}
else
{
if (LayerDrama.forceJump == null && EClass.game.quests.OnShowDialog(this))
if (IsDeadOrSleeping)
{
ShowDialog("_chara", "sleep");
return;
}
if (EClass.pc.isHidden && !CanSee(EClass.pc))
{
ShowDialog("_chara", "invisible");
return;
}
if (!IsPC && !EClass.player.codex.DroppedCard(id) && affinity.CanGiveCard())
{
EClass.player.codex.MarkCardDrop(id);
ShowDialog("_chara", "give_card");
Thing thing = ThingGen.Create("figure");
thing.MakeFigureFrom(id);
EClass.player.DropReward(thing);
thing = ThingGen.Create("figure3");
thing.MakeFigureFrom(id);
EClass.player.DropReward(thing);
return;
}
if (GetInt(71) == -2)
{
ShowDialog("_chara", "give_lunch");
Thing t = CraftUtil.MakeLoveLunch(this);
EClass.player.DropReward(t);
SetInt(71, EClass.world.date.GetRaw() + 43200);
return;
}
if (base.isRestrained)
{
ShowDialog("_chara", "strain");
return;
}
if (IsEscorted())
{
ShowDialog("_chara", "escort");
return;
}
if (EClass._zone is Zone_Music)
{
ShowDialog("_chara", "party");
return;
}
if (EClass.game.quests.OnShowDialog(this))
{
return;
}
ShowDialog("guild_clerk", "main", tag2);
return;
}
bool flag = true;
if (id == "parttimer_jure" && (!EClass._zone.IsFestival || !(EClass._zone is Zone_Noyel) || EClass.pc.faith == EClass.game.religions.Healing))
{
flag = false;
}
if (flag && File.Exists(CorePath.DramaData + id + ".xlsx"))
{
ShowDialog(id);
}
else
{
ShowDialog("_chara");
}
}
bool flag = true;
if (id == "parttimer_jure" && (!EClass._zone.IsFestival || !(EClass._zone is Zone_Noyel) || EClass.pc.faith == EClass.game.religions.Healing))
{
flag = false;
}
if (flag && File.Exists(CorePath.DramaData + id + ".xlsx"))
{
ShowDialog(id);
}
else
{
ShowDialog("_chara");
}
}
public void InstantEat(Thing t = null, bool sound = true)
PlaySound("eat");
}
FoodEffect.Proc(this, t);
t.ModNum(-1);
}
}
public void ModAffinity(Chara c, int a, bool show = true, bool showOnlyEmo = fal
if (flag)
{
a = a * num / 100;
if (affinity.GetLunchChance() > EClass.rnd(100) && GetInt(71) >= 0 && GetInt(71) < EClass.world.date.GetRaw())
{
SetInt(71, -1);
}
}
if (show)
{
public SourceThing.Row GetFavFood()
{
foreach (SourceThing.Row row in EClass.sources.things.rows)
{
if (row._origin == "dish" && row.value != 0)
if (row._origin == "dish" && row.value != 0 && row.chance != 0)
{
_listFavFood.Add(row);
}
public Thing MakeGene(DNA.Type? type = null)
return DNA.GenerateGene(this, type);
}
public Thing MakeLunch()
{
Thing thing = ThingGen.Create("lunch_love");
thing.MakeRefFrom(this);
return thing;
}
public Thing MakeBraineCell()
{
return DNA.GenerateGene(this, DNA.Type.Brain);
CharaAbility
public class CharaAbility : EClass
case 5048:
case 6400:
case 6410:
case 6800:
case 8200:
continue;
}
CoreDebug
EClass.game.world.date.year = 3000;
EClass._zone.development += 10;
EClass._zone.development *= EClass._zone.development;
EClass.pc.Pick(ThingGen.CreateSpellbook(8550));
EClass.pc.Pick(ThingGen.CreatePotion(8550));
EClass.pc.Pick(ThingGen.CreateSpellbook(9004));
EClass.pc.Pick(ThingGen.CreateRedBook("advweek_1"));
Chara targetChara = EClass.scene.mouseTarget.TargetChara;
if (targetChara != null)
{
EClass.pc.Pick(targetChara.MakeLunch());
EClass.pc.Pick(CraftUtil.MakeLoveLunch(targetChara));
EClass.pc.Pick(CraftUtil.MakeDarkSoup());
EClass.pc.Pick(targetChara.MakeMilk());
EClass.pc.Pick(targetChara.MakeGene());
EClass.pc.Pick(targetChara.MakeBraineCell());
{
EClass.Branch.ModExp(EClass.Branch.GetNextExp());
}
foreach (Chara chara2 in EClass._map.charas)
foreach (Chara item in EClass._map.charas.ToList())
{
chara2.AddExp(chara2.ExpToNext);
item.AddExp(item.ExpToNext);
item.Vomit();
}
EClass.pc.PlayEffect("boost");
EClass.pc.PlaySound("boost");
{
if (Input.GetMouseButtonDown(0))
{
foreach (Card item in list)
foreach (Card item2 in list)
{
Debug.Log(item.Name + "/" + item.dir + "/" + item.flipX + "/" + item.angle);
Debug.Log(item2.Name + "/" + item2.dir + "/" + item2.flipX + "/" + item2.angle);
}
}
if (Input.GetMouseButtonDown(1))
}
if (key)
{
foreach (Card item2 in EClass._map.Roaming.all)
foreach (Card item3 in EClass._map.Roaming.all)
{
EClass._zone.RemoveCard(item2);
EClass._zone.RemoveCard(item3);
}
}
else if (hitPoint.detail != null)
{
break;
}
foreach (Card item3 in hitPoint.ListCards())
foreach (Card item4 in hitPoint.ListCards())
{
item3.renderer.PlayAnime(num5.ToEnum<AnimeID>());
item4.renderer.PlayAnime(num5.ToEnum<AnimeID>());
}
Debug.Log(num5.ToEnum<AnimeID>());
break;
CraftUtil
public static void MakeDish(Thing food, int lv, Chara crafter = null)
int num = Mathf.Min(EClass.rnd(lv), 50);
foreach (Recipe.Ingredient ingredient in recipeSource.GetIngredients())
{
Thing thing = ThingGen.Create(ingredient.id);
Thing thing = ThingGen.Create(ingredient.id).TryMakeRandomItem(lv);
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)
}
}
public static Thing MakeDarkSoup()
{
Thing thing = ThingGen.Create("soup_dark");
for (int i = 0; i < 4 + EClass.rnd(4); i++)
{
Chara c = EClass._map.charas.RandomItem();
AddIngredient(thing, c, GetRandomDarkSoupIngredient(c));
}
if (!EClass.debug.autoIdentify)
{
thing.c_IDTState = 1;
}
return thing;
}
public static Thing GetRandomDarkSoupIngredient(Chara c)
{
return ThingGen.CreateFromFilter("darksoup", c.LV);
}
public static Thing MakeLoveLunch(Chara c)
{
Thing thing = ThingGen.Create("lunch_love");
thing.MakeRefFrom(c);
int num = c.uid + EClass.world.date.year * 10000 + EClass.world.date.month * 100;
Rand.SetSeed(num);
int num2 = 3 + EClass.rnd(3);
if (!EClass.debug.autoIdentify)
{
thing.c_IDTState = 5;
}
for (int i = 0; i < num2; i++)
{
Rand.SetSeed(num + i);
AddIngredient(thing, c, GetRandomLoveLunchIngredient(c), writeCrafter: false);
}
Rand.SetSeed();
return thing;
}
public static Thing GetRandomLoveLunchIngredient(Chara c)
{
Thing thing = null;
int lV = c.LV;
for (int i = 0; i < 3; i++)
{
thing = ThingGen.Create("dish", -1, lV + i * 3);
if (!thing.HasTag(CTAG.dish_fail))
{
break;
}
}
MakeDish(thing, lV, c);
return thing;
}
public static void AddIngredient(Card product, Chara c, Card ing, bool writeCrafter = true)
{
if (product.c_mixedFoodData == null)
{
product.c_mixedFoodData = new MixedFoodData();
}
product.c_mixedFoodData.texts.Add(ing.Name + (writeCrafter ? "isMixedBy".lang(c.NameSimple) : ""));
foreach (Element value in ing.elements.dict.Values)
{
if (!IsValidTrait(value))
{
continue;
}
if (value.IsFoodTraitMain)
{
int num = value.Value;
if (product.id == "lunch_dystopia")
{
num *= -1;
}
product.elements.ModBase(value.id, num);
}
else
{
int num2 = product.elements.Base(value.id);
if ((num2 <= 0 && value.Value < 0 && value.Value < num2) || (value.Value > 0 && value.Value > num2))
{
product.elements.SetTo(value.id, value.Value);
}
}
}
product.elements.ModBase(10, ing.Evalue(10));
static bool IsValidTrait(Element e)
{
if (e.HasTag("noInherit"))
{
return false;
}
if (e.IsFoodTrait || e.IsTrait || e.id == 2)
{
return true;
}
return false;
}
}
public static void MakeDish(Card food, List<Thing> ings, int qualityBonus, Chara crafter = null)
{
List<Thing> list = new List<Thing>();
DramaCustomSequence
SE.Pay();
EClass.pc.ModCurrency(-cost);
TempTalkTopic("food2", StepDefault);
FoodEffect.Proc(EClass.pc, ThingGen.Create("dish_lunch"));
FoodEffect.Proc(EClass.pc, ThingGen.Create("dish_lunch"), consume: false);
EClass.pc.hunger.value = 0;
}
});
ELEMENT
public static Dictionary<int, int> GetElementMap(int[] list, Dictionary<int, int
return map;
}
public static SourceElement.Row GetRandomElement(int lv = 1)
public static SourceElement.Row GetRandomElement(int lv = 1, bool useWeight = true)
{
if (lv > 100)
{
public static SourceElement.Row GetRandomElement(int lv = 1)
list.Add(new Tuple<SourceElement.Row, int>(listElement, num));
}
}
return list.RandomItemWeighted((Tuple<SourceElement.Row, int> a) => 10000 / (100 + (lv - a.Item2) * 25)).Item1;
return (useWeight ? list.RandomItemWeighted((Tuple<SourceElement.Row, int> a) => 10000 / (100 + (lv - a.Item2) * 25)) : list.RandomItem()).Item1;
}
public void WriteNote(UINote n, ElementContainer owner = null, Action<UINote> onWriteNote = null)
Emo2
brush_hate,
brush_like,
brush_like2,
brush_like3
brush_like3,
hintEvent
}
FactionBranch
public void OnSimulateHour(VirtualDate date)
if (meal != null)
{
FoodEffect.Proc(c, meal);
meal.Destroy();
}
else
{
FoodEffect
public class FoodEffect : EClass
{
public static void Proc(Chara c, Thing food)
public static void Proc(Chara c, Thing food, bool consume = true)
{
food.CheckJustCooked();
bool flag = EClass._zone.IsPCFaction && c.IsInSpot<TraitSpotDining>();
public static void Proc(Chara c, Thing food)
bool flag3 = food.HasElement(709);
bool flag4 = c.HasElement(1205);
bool flag5 = food.IsDecayed || flag3;
bool flag6 = food.trait is TraitLunchLove;
c.AddFoodHistory(food);
if (c.IsPCFaction && !c.IsPC)
{
int num6 = c.CountNumEaten(food);
bool flag6 = c.GetFavFood().id == food.id;
if (num6 < 2 || flag6)
bool flag7 = c.GetFavFood().id == food.id;
if (num6 < 2 || flag7)
{
if (num6 == 1 || flag6 || EClass.rnd(4) == 0)
if (num6 == 1 || flag7 || EClass.rnd(4) == 0)
{
c.Talk("foodNice");
}
public static void Proc(Chara c, Thing food)
float num8 = num2 * (float)value.Value;
if (value.source.category == "food" && c.IsPC)
{
bool flag7 = num8 >= 0f;
string text = value.source.GetText(flag7 ? "textInc" : "textDec", returnNull: true);
bool flag8 = num8 >= 0f;
string text = value.source.GetText(flag8 ? "textInc" : "textDec", returnNull: true);
if (text != null)
{
Msg.SetColor(flag7 ? "positive" : "negative");
Msg.SetColor(flag8 ? "positive" : "negative");
c.Say(text);
}
}
public static void Proc(Chara c, Thing food)
c.PlaySound("ding_potential");
c.elements.ModExp(306, -1000f);
c.SetInt(117, int2 + 1);
flag6 = false;
break;
}
case "exp":
public static void Proc(Chara c, Thing food)
c.SetFeat(1230, c.elements.Base(1230) + 1);
}
c.SetInt(112, @int + 1);
flag6 = false;
break;
}
}
public static void Proc(Chara c, Thing food)
{
food.trait.OnDrink(c);
}
if (consume)
{
num7 += 5f;
if (flag6 && (float)food.Evalue(10) > num7 + 10f)
{
food.elements.SetTo(10, (int)Mathf.Max((float)food.Evalue(10) - num7, 1f));
food.SetBool(125, enable: true);
}
else
{
food.ModNum(-1);
}
}
}
public static void ProcTrait(Chara c, Card t)
LayerSleep
{
ELayer.player.SimulateFaction();
}
foreach (Chara chara in ELayer._map.charas)
{
if (chara.affinity.GetLunchChance() > ELayer.rnd(100) && chara.GetInt(71) == -1)
{
chara.SetInt(71, -2);
}
}
foreach (Chara member in ELayer.pc.party.members)
{
member.OnSleep(bed);
+MixedFoodData
File Created
using System.Collections.Generic;
using Newtonsoft.Json;
public class MixedFoodData : EClass
{
[JsonProperty]
public List<string> texts = new List<string>();
}
SourceFood
public override Row CreateRow()
unit = SourceData.GetString(5),
name2_JP = SourceData.GetStringArray(6),
name2 = SourceData.GetStringArray(7),
tiles = SourceData.GetIntArray(8),
parse = SourceData.GetStringArray(9),
vals = SourceData.GetStringArray(10),
trait = SourceData.GetStringArray(11),
elements = Core.ParseElements(SourceData.GetStr(12)),
idTaste = SourceData.GetString(14),
TST = SourceData.GetInt(15),
NUT = SourceData.GetInt(16),
STR = SourceData.GetInt(17),
STR2 = SourceData.GetInt(18),
END = SourceData.GetInt(19),
END2 = SourceData.GetInt(20),
DEX = SourceData.GetInt(21),
DEX2 = SourceData.GetInt(22),
PER = SourceData.GetInt(23),
PER2 = SourceData.GetInt(24),
LER = SourceData.GetInt(25),
LER2 = SourceData.GetInt(26),
WIL = SourceData.GetInt(27),
WIL2 = SourceData.GetInt(28),
MAG = SourceData.GetInt(29),
MAG2 = SourceData.GetInt(30),
CHA = SourceData.GetInt(31),
CHA2 = SourceData.GetInt(32),
LV = SourceData.GetInt(34),
chance = SourceData.GetInt(35),
value = SourceData.GetInt(36),
weight = SourceData.GetInt(37),
recipeKey = SourceData.GetStringArray(38),
factory = SourceData.GetStringArray(39),
components = SourceData.GetStringArray(40),
defMat = SourceData.GetString(41),
category = SourceData.GetString(42),
tag = SourceData.GetStringArray(43),
detail_JP = SourceData.GetString(44),
detail = SourceData.GetString(45)
unknown_JP = SourceData.GetString(8),
unknown = SourceData.GetString(9),
tiles = SourceData.GetIntArray(10),
parse = SourceData.GetStringArray(11),
vals = SourceData.GetStringArray(12),
trait = SourceData.GetStringArray(13),
elements = Core.ParseElements(SourceData.GetStr(14)),
idTaste = SourceData.GetString(16),
TST = SourceData.GetInt(17),
NUT = SourceData.GetInt(18),
STR = SourceData.GetInt(19),
STR2 = SourceData.GetInt(20),
END = SourceData.GetInt(21),
END2 = SourceData.GetInt(22),
DEX = SourceData.GetInt(23),
DEX2 = SourceData.GetInt(24),
PER = SourceData.GetInt(25),
PER2 = SourceData.GetInt(26),
LER = SourceData.GetInt(27),
LER2 = SourceData.GetInt(28),
WIL = SourceData.GetInt(29),
WIL2 = SourceData.GetInt(30),
MAG = SourceData.GetInt(31),
MAG2 = SourceData.GetInt(32),
CHA = SourceData.GetInt(33),
CHA2 = SourceData.GetInt(34),
LV = SourceData.GetInt(36),
chance = SourceData.GetInt(37),
value = SourceData.GetInt(38),
weight = SourceData.GetInt(39),
recipeKey = SourceData.GetStringArray(40),
factory = SourceData.GetStringArray(41),
components = SourceData.GetStringArray(42),
defMat = SourceData.GetString(43),
category = SourceData.GetString(44),
tag = SourceData.GetStringArray(45),
detail_JP = SourceData.GetString(46),
detail = SourceData.GetString(47)
};
}
public override void OnImportRow(Row _r, SourceThing.Row c)
c.elements = list.ToArray();
c.name2 = row.name2;
c.name2_JP = row.name2_JP;
c.unknown = row.unknown;
c.unknown_JP = row.unknown_JP;
if (!row.unit_JP.IsEmpty())
{
c.unit_JP = row.unit_JP;
StatsMana
public class StatsMana : Stats
{
public override int max => (int)Mathf.Clamp(((long)(BaseStats.CC.MAG * 2 + BaseStats.CC.WIL + BaseStats.CC.LER / 2) * (long)Mathf.Min(BaseStats.CC.LV, 25) / 25 + BaseStats.CC.MAG + 10) * (BaseStats.CC.Evalue(61) - BaseStats.CC.Evalue(93)) / 100 * ((BaseStats.CC.IsPCFaction ? 100 : (100 + (int)BaseStats.CC.rarity * 250)) + (BaseStats.CC.IsPC ? (EClass.player.lastEmptyAlly * BaseStats.CC.Evalue(1646)) : 0)) / 100, 1f, 100000000f);
public override int max => (int)Mathf.Clamp(((long)(BaseStats.CC.MAG * 2 + BaseStats.CC.WIL + BaseStats.CC.LER / 2) * (long)Mathf.Min(BaseStats.CC.LV, 25) / 25 + BaseStats.CC.MAG + 10) * (BaseStats.CC.Evalue(61) - BaseStats.CC.Evalue(93)) / 100 * ((BaseStats.CC.IsPCFactionOrMinion ? 100 : (100 + (int)BaseStats.CC.rarity * 250)) + (BaseStats.CC.IsPC ? (EClass.player.lastEmptyAlly * BaseStats.CC.Evalue(1646)) : 0)) / 100, 1f, 100000000f);
public override int min => -999999;
TCOrbitChara
{
emo = owner.trait.GetRestockedIcon();
}
else if (!owner.IsPC && ((owner.affinity.CanGiveCard() && !EMono.player.codex.DroppedCard(owner.id)) || owner.GetInt(71) == -2))
{
emo = Emo2.hintEvent;
}
else
{
bool flag = false;
Thing
public override string GetName(NameStyle style, int _num = -1)
{
text = id;
}
if (!isEquipmentOrRangedOrAmmo || !base.IsIdentified || base.rarity < Rarity.Legendary)
if (isEquipmentOrRangedOrAmmo && base.IsIdentified && base.rarity >= Rarity.Legendary)
{
if (source.naming == "m" || (source.naming == "ms" && base.material != source.DefaultMaterial))
if (base.rarity != Rarity.Artifact && !base.material.GetTextArray("altName").IsEmpty())
{
if (isEquipmentOrRangedOrAmmo)
{
string[] textArray = base.material.GetTextArray("altName");
if (textArray != null && textArray.Length >= 2)
{
text = base.material.GetTextArray("altName")[1] + Lang.space + text;
goto IL_01f2;
}
}
text = "_of2".lang(base.material.GetName(), text);
text = base.material.GetTextArray("altName")[0] + Lang.space + text;
}
goto IL_01f2;
goto IL_0215;
}
if (base.rarity != Rarity.Artifact && !base.material.GetTextArray("altName").IsEmpty())
if (source.naming == "m" || (source.naming == "ms" && base.material != source.DefaultMaterial))
{
text = base.material.GetTextArray("altName")[0] + Lang.space + text;
if (isEquipmentOrRangedOrAmmo)
{
string[] textArray = base.material.GetTextArray("altName");
if (textArray != null && textArray.Length >= 2)
{
text = base.material.GetTextArray("altName")[1] + Lang.space + text;
goto IL_01f2;
}
}
text = "_of2".lang(base.material.GetName(), text);
}
goto IL_01f2;
}
else
text = "unknown";
string idUnknown = source.GetText("unknown");
if (idUnknown.StartsWith("#"))
{
text = "unknown";
string idUnknown = source.GetText("unknown");
if (idUnknown.StartsWith("#"))
Rand.UseSeed(EClass.game.seed + (trait.CanStack ? sourceCard._index : base.uid) + base.refVal, delegate
{
Rand.UseSeed(EClass.game.seed + (trait.CanStack ? sourceCard._index : base.uid) + base.refVal, delegate
{
idUnknown = Lang.GetList(idUnknown.Remove(0, 1)).RandomItem();
});
}
text = idUnknown;
idUnknown = Lang.GetList(idUnknown.Remove(0, 1)).RandomItem();
});
}
goto IL_02a1;
IL_02a1:
if (!base.c_idRefCard.IsEmpty() && trait.RefCardName != RefCardName.None)
text = idUnknown;
goto IL_047d;
IL_047d:
if (GetBool(125))
{
string text7 = base.c_altName.IsEmpty(base.refCard.GetName());
if (!base.c_idRefCard2.IsEmpty())
{
text7 = "_and".lang(text7, base.c_altName2.IsEmpty(base.refCard2.GetName()));
}
if (!(text7 == "*r"))
{
text = ((!source.name2.IsEmpty()) ? source.GetTextArray("name2")[0].Replace("#1b", base.c_extraNameRef.IsEmpty((base.refCard == null) ? text7 : (base.refCard.isChara ? base.refCard.GetName() : base.refCard.GetText()))).Replace("#1", base.c_extraNameRef.IsEmpty(text7)) : (source.naming.Contains("last") ? (text + Lang.space + text7) : (source.naming.Contains("first") ? (text7 + Lang.space + text) : ((!source.naming.Contains("of")) ? (text6.IsEmpty() ? "_of3" : "_of2").lang(text7, text) : "_of".lang(text7, text)))));
}
else
{
string text8 = base.refCard.GetText("aka");
if (!text8.IsEmpty())
{
text = "_of".lang(text8, text);
}
}
text = "_halfeaten".lang(text);
}
if (base.c_bill != 0)
{
public override string GetName(NameStyle style, int _num = -1)
int dMG = base.DMG;
if ((base.IsMeleeWeapon || base.IsRangedWeapon || base.IsAmmo || hIT != 0 || dMG != 0) && source.offense.Length != 0)
{
string text9 = "";
string text7 = "";
if (source.offense[0] != 0)
{
text9 = text9 + source.offense[0] + "d" + base.c_diceDim;
text7 = text7 + source.offense[0] + "d" + base.c_diceDim;
}
if (dMG != 0)
{
text9 += ((base.IsMeleeWeapon || base.IsRangedWeapon || base.IsAmmo) ? dMG.ToText() : (dMG.ToString() ?? ""));
text7 += ((base.IsMeleeWeapon || base.IsRangedWeapon || base.IsAmmo) ? dMG.ToText() : (dMG.ToString() ?? ""));
}
if (hIT != 0)
{
text9 = text9 + ((dMG != 0 || source.offense[0] != 0) ? ", " : "") + hIT;
text7 = text7 + ((dMG != 0 || source.offense[0] != 0) ? ", " : "") + hIT;
}
text2 = text2 + " (" + text9.IsEmpty(" - ") + ") ";
text2 = text2 + " (" + text7.IsEmpty(" - ") + ") ";
}
int dV = DV;
int pV = PV;
public override string GetName(NameStyle style, int _num = -1)
}
else if (base.c_IDTState == 3 || base.c_IDTState == 1)
{
text2 = "(" + base.TextRarity.ToTitleCase() + ")";
text2 = Lang.space + "(" + base.TextRarity.ToTitleCase() + ")";
}
if (base.IsDecayed)
{
public override string GetName(NameStyle style, int _num = -1)
}
if (!base.c_note.IsEmpty() && (!base.isBackerContent || EClass.core.config.backer.Show(base.c_note)))
{
string text10 = base.c_note;
if (text10.StartsWith('@'))
string text8 = base.c_note;
if (text8.StartsWith('@'))
{
text10 = Lang.Note.map.TryGetValue(text10.TrimStart('@'))?.GetText("text") ?? base.c_note;
text8 = Lang.Note.map.TryGetValue(text8.TrimStart('@'))?.GetText("text") ?? base.c_note;
}
string text11 = (base.category.IsChildOf("book") ? "_written" : "_engraved");
string text9 = (base.category.IsChildOf("book") ? "_written" : "_engraved");
if (id == "grave_dagger1" || id == "grave_dagger2")
{
text11 = "_daggerGrave";
text9 = "_daggerGrave";
}
text = ((!text10.Contains("_bracketLeft".lang())) ? text11.lang(text10, text) : (text11 + "Alt").lang(text10, text));
text = ((!text8.Contains("_bracketLeft".lang())) ? text9.lang(text8, text) : (text9 + "Alt").lang(text8, text));
}
text = (flag ? ((num <= 1) ? (text4 + text) : "_unit".lang(num.ToFormat() ?? "", text4 + text, text6)) : ((trait is TraitAbility) ? text.ToTitleCase(wholeText: true) : ((!text6.IsEmpty() && (base.IsIdentified || source.unknown.IsEmpty())) ? "_unit".lang((num == 1) ? "" : (num.ToFormat() ?? ""), text, (text4 + text6).AddArticle(num, style2, source.unit)) : (text4 + text).AddArticle(num, style2, source.name))));
if (base.rarity >= Rarity.Legendary)
{
text = text.ToTitleCase(wholeText: true);
}
string text12 = ((base.isSale && things.Count > 0) ? "forSale2".lang() : ((base.isSale || (base.parentThing != null && base.parentThing.isSale && TraitSalesTag.CanTagSale(this, insideContainer: true))) ? "forSale".lang(Lang._currency(GetPrice(CurrencyType.Money, sell: true, PriceType.PlayerShop), "money")) : ""));
string text10 = ((base.isSale && things.Count > 0) ? "forSale2".lang() : ((base.isSale || (base.parentThing != null && base.parentThing.isSale && TraitSalesTag.CanTagSale(this, insideContainer: true))) ? "forSale".lang(Lang._currency(GetPrice(CurrencyType.Money, sell: true, PriceType.PlayerShop), "money")) : ""));
if (trait is TraitSalesTag && base.isOn && !GetStr(11).IsEmpty())
{
text12 += "soldOut".lang(EClass.sources.categories.map[GetStr(11)].GetName());
text10 += "soldOut".lang(EClass.sources.categories.map[GetStr(11)].GetName());
}
if (GetInt(101) != 0)
{
text5 = "_limitedStock".lang(text5);
}
return text5 + text3 + text + sig + text2 + text12;
return text5 + text3 + text + sig + text2 + text10;
}
}
IL_01f2:
public override string GetName(NameStyle style, int _num = -1)
{
text = base.material.GetName();
}
goto IL_02a1;
goto IL_0215;
IL_0215:
if (!base.c_idRefCard.IsEmpty() && trait.RefCardName != RefCardName.None)
{
string text11 = base.c_altName.IsEmpty(base.refCard.GetName());
if (!base.c_idRefCard2.IsEmpty())
{
text11 = "_and".lang(text11, base.c_altName2.IsEmpty(base.refCard2.GetName()));
}
if (!(text11 == "*r"))
{
text = ((!source.name2.IsEmpty()) ? source.GetTextArray("name2")[0].Replace("#1b", base.c_extraNameRef.IsEmpty((base.refCard == null) ? text11 : (base.refCard.isChara ? base.refCard.GetName() : base.refCard.GetText()))).Replace("#1", base.c_extraNameRef.IsEmpty(text11)) : (source.naming.Contains("last") ? (text + Lang.space + text11) : (source.naming.Contains("first") ? (text11 + Lang.space + text) : ((!source.naming.Contains("of")) ? (text6.IsEmpty() ? "_of3" : "_of2").lang(text11, text) : "_of".lang(text11, text)))));
}
else
{
string text12 = base.refCard.GetText("aka");
if (!text12.IsEmpty())
{
text = "_of".lang(text12, text);
}
}
}
goto IL_047d;
}
public override string GetHoverText()
public override void WriteNote(UINote n, Action<UINote> onWriteNote = null, IIns
}
}
trait.WriteNote(n, flag2);
if (flag2 && showTraits)
if (flag2)
{
elements.AddNote(n, (Element e) => listTrait.Contains(e), null, ElementContainer.NoteMode.BonusTrait, addRaceFeat: false, delegate(Element e, string s)
if (showTraits)
{
string text12 = s;
string text13 = e.source.GetText("textExtra");
if (!text13.IsEmpty())
elements.AddNote(n, (Element e) => listTrait.Contains(e), null, ElementContainer.NoteMode.BonusTrait, addRaceFeat: false, delegate(Element e, string s)
{
string text14 = "";
if (e.id == 2 && mode == IInspect.NoteMode.Product)
string text12 = s;
string text13 = e.source.GetText("textExtra");
if (!text13.IsEmpty())
{
int num2 = recipe.GetQualityBonus() / 10;
if (num2 >= 0)
string text14 = "";
if (e.id == 2 && mode == IInspect.NoteMode.Product)
{
num2++;
int num2 = recipe.GetQualityBonus() / 10;
if (num2 >= 0)
{
num2++;
}
text14 = "qualityLimit".lang(num2.ToString() ?? "");
}
text14 = "qualityLimit".lang(num2.ToString() ?? "");
}
int num3 = e.Value / 10;
num3 = ((e.Value < 0) ? (num3 - 1) : (num3 + 1));
text13 = "Lv." + num3 + text14 + " " + text13;
if (infoMode && e.IsFoodTraitMain)
{
text13 += "traitAdditive".lang();
int num3 = e.Value / 10;
num3 = ((e.Value < 0) ? (num3 - 1) : (num3 + 1));
text13 = "Lv." + num3 + text14 + " " + text13;
if (infoMode && e.IsFoodTraitMain)
{
text13 += "traitAdditive".lang();
}
text12 += (" <size=12>" + text13 + "</size>").TagColor(FontColor.Passive);
}
text12 += (" <size=12>" + text13 + "</size>").TagColor(FontColor.Passive);
return text12;
}, delegate
{
});
if (listTrait.Count != list.Count)
{
AddText("traitOther".lang((list.Count - listTrait.Count).ToString() ?? ""), FontColor.Default);
}
return text12;
}, delegate
{
});
if (listTrait.Count != list.Count)
}
if (base.c_mixedFoodData != null)
{
AddText("traitOther".lang((list.Count - listTrait.Count).ToString() ?? ""), FontColor.Default);
n.AddHeader("isMixedFood");
foreach (string text15 in base.c_mixedFoodData.texts)
{
AddText("_bullet".lang() + text15, FontColor.Default);
}
}
}
if (!flag2)
else
{
AddText("isUnidentified".lang(), FontColor.Flavor);
if (base.c_IDTState == 1)
Trait
{
case ShopType.Moyer:
{
for (int num10 = 1; num10 <= 3; num10++)
for (int num10 = 1; num10 <= 6; num10++)
{
AddAdvWeek(num10);
}
+TraitLunchLove
File Created
public class TraitLunchLove : TraitMixedFood
{
}
~TraitFoodLunchLove
File Renamed
public class TraitFoodLunchLove : TraitFood
public class TraitMixedFood : TraitFood
{
public override bool CanSearchContent => false;