EA 23.343.3 Nightly โ
September 7, 2026
6 files modified.
Important Changes โ
None.
CurrencyType โ
cs
Money2,
BranchMoney,
Influence,
Casino_coin
Casino_coin,
BlueCapsule
}DNA โ
cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using Newtonsoft.Json;
using UnityEngine;cs
Inferior = 0,
Default = 3,
Superior = 5,
Superimani = 6,
Brain = 8
}cs
}
}
public bool isManiGene
{
get
{
return bits[0];
}
set
{
bits[0] = value;
}
}
[OnSerializing]
private void _OnSerializing(StreamingContext context)
{public static void GenerateManiGene(Card owner)
cs
Rand.SetSeed(owner.c_seed);
CardRow r = SpawnList.Get("chara").Select(100);
Rand.SetSeed(owner.c_seed);
Thing thing = GenerateGene(r, Type.Superior, owner.LV, owner.c_seed);
thing.c_DNA.cost = thing.c_DNA.cost / 2;
thing.c_DNA.isManiGene = true;
thing.ChangeMaterial(36);
Thing thing = GenerateGene(r, Type.Superimani, owner.LV, owner.c_seed);
thing.MakeRefFrom("mani");
Rand.SetSeed();
owner.c_seed++;public void Generate(Type _type, Chara model = null)
cs
}
AddSpecial();
break;
case Type.Superimani:
AddRandom(EClass.rnd(EClass.rnd(4)) + 3);
if (EClass.rnd(3) == 0)
{
AddSpecial();
}
AddSpecial();
if (EClass.rnd(3) != 0)
{
IEnumerable<SourceElement.Row> enumerable = EClass.sources.elements.map.Values.Where((SourceElement.Row row) => row.tag.Contains("gene_mani") && lv + ((!EClass.debug.enable) ? 1 : 100) >= row.LV);
if (enumerable.Count() > 0)
{
SourceElement.Row e = enumerable.RandomItem();
AddVal(e.id, (!(e.category == "ability")) ? 1 : 100, allowStack: false, (int v) => e.cost[0], allowNegative: false);
}
}
cost = cost / 2 - 10;
break;
}
if (vals.Count == 0)
{
for (int i = 0; i < 10; i++)
for (int num = 0; num < 10; num++)
{
if (EClass.rnd(4) == 0)
{cs
if (body == 0)
{
BodySlot bodySlot = null;
for (int j = 0; j < 100; j++)
for (int i = 0; i < 100; i++)
{
BodySlot bodySlot2 = model.body.slots.RandomItem();
if (bodySlot2 != null && bodySlot2.elementId != 40 && bodySlot2.elementId != 44 && bodySlot2.elementId != 46)cs
if (listFeat.Count != 0)
{
feat++;
Element e = listFeat.RandomItem();
if (maxSlot <= 1 || e.source.geneSlot <= 1)
Element e2 = listFeat.RandomItem();
if (maxSlot <= 1 || e2.source.geneSlot <= 1)
{
if (e.source.geneSlot > maxSlot)
if (e2.source.geneSlot > maxSlot)
{
maxSlot = e.source.geneSlot;
maxSlot = e2.source.geneSlot;
}
AddVal(e.id, 1, allowStack: false, (int v) => e.source.cost[0] * 5, allowNegative: false);
AddVal(e2.id, 1, allowStack: false, (int v) => e2.source.cost[0] * 5, allowNegative: false);
}
}
}
void AddRandom(int n)
{
for (int j = 0; j < n; j++)
for (int i = 0; i < n; i++)
{
if (EClass.debug.enable && EClass.rnd(2) == 0)
{void AddVal(int id, int v, bool allowStack, Func<int, int> funcCost, bool allowNโฆ)
cs
if (v >= 0 || allowNegative)
{
bool flag = false;
int num = EClass.curve(v, 20, 10, 90);
int num2 = EClass.curve(v, 20, 10, 90);
if (v < -100)
{
num = EClass.curve(Mathf.Abs(v + 100), 20, 10, 90);
num2 = EClass.curve(Mathf.Abs(v + 100), 20, 10, 90);
}
v = EClass.curve(v, 20, 10, 80);
for (int j = 0; j < vals.Count; j += 2)
for (int i = 0; i < vals.Count; i += 2)
{
if (vals[j] == id)
if (vals[i] == id)
{
if (allowStack)
{
v /= 2;
num /= 2;
vals[j + 1] += v;
Debug.Log(vals[j + 1] + ": " + v + "/" + num);
num2 /= 2;
vals[i + 1] += v;
Debug.Log(vals[i + 1] + ": " + v + "/" + num2);
flag = true;
break;
}void AddVal(int id, int v, bool allowStack, Func<int, int> funcCost, bool allowNโฆ)
cs
vals.Add(id);
vals.Add(v);
}
cost += Mathf.Max(0, funcCost(num));
cost += Mathf.Max(0, funcCost(num2));
}
}
}cs
for (int i = 0; i < vals.Count; i += 2)
{
Element element = Element.Create(vals[i], vals[i + 1]);
if (element.source.geneSlot < 0)
if (type != Type.Superimani || !element.HasTag("gene_mani"))
{
slot = 99;
}
if (element.source.geneSlot > slot)
{
slot = element.source.geneSlot;
if (element.source.geneSlot < 0)
{
slot = 99;
}
if (element.source.geneSlot > slot)
{
slot = element.source.geneSlot;
}
}
}
if (slot < 0)public static Type GetType(string idMat)
cs
"jelly" => Type.Default,
"gold" => Type.Superior,
"amethyst" => Type.Brain,
"lapis" => Type.Superimani,
_ => Type.Inferior,
};
}public string GetMaterialId(Type type)
cs
{
Type.Default => "jelly",
Type.Superior => "gold",
Type.Superimani => "lapis",
Type.Brain => "amethyst",
_ => "process",
};Trait โ
public virtual int CostRerollShop
cs
}
}
public virtual CurrencyType CurrencyRerollShop => CurrencyType.Influence;
public virtual bool AllowCriminal => owner.isThing;
public virtual int RestockDay => 5;public virtual void OnBarter(bool reroll = false)
cs
break;
}
ShopType shopType = ShopType;
if ((uint)(shopType - 24) <= 1u && EClass._zone is Zone_Yowyn)
if ((uint)(shopType - 24) <= 1u)
{
Add("milk_kumiromi", EClass.rndHalf(6), 0);
if (EClass._zone is Zone_Yowyn)
{
Add("milk_kumiromi", EClass.rndHalf(6), 0);
}
if (EClass._zone is Zone_Nefu)
{
Add("milk_horome", EClass.rndHalf(6), 0);
}
}
switch (owner.id)
{TraitGodStatue โ
public override void OnCreate(int lv)
cs
OnChangeMaterial();
}
public override void OnBarter(bool reroll = false)
{
if (Religion.id == "machine")
{
DNA.GenerateManiGene(owner);
}
}
public void OnChangeMaterial()
{
owner.isOn = owner.material.alias == "gold";TraitPowerStatue โ
public override bool CanBeDestroyed
cs
public override string IDInvStyle => "jewelbox";
public override int CostRerollShop => 0;
public override int CostRerollShop => 1;
public override CurrencyType CurrencyRerollShop => CurrencyType.BlueCapsule;
public override bool CanStack => false;public override bool OnUse(Chara c)
cs
{
DNA.GenerateManiGene(owner);
}
LayerInventory.CreateContainer<InvOwnerChoose>(owner, owner);
LayerInventory.CreateContainer<InvOwnerChoose>(owner, owner).TryShowHint("h_invManiGene");
SE.Play("pop_principal");
return false;
}
Msg.Say("shrine_power", owner);UIInventory โ
public void SwitchTab(Tab tab)
cs
{
tab.owner.BuildUICurrency(layer.uiCurrency, tab.owner.owner.trait.CostRerollShop != 0 || EMono.debug.enable);
}
layer.TryShowHint("h_inv" + tab.mode);
if ((bool)headerRow)
{
UIHeader[] componentsInChildren = headerRow.GetComponentsInChildren<UIHeader>(includeInactive: true);cs
{
break;
}
menuBottom.AddButton("rerollShop".lang(cost.ToString() ?? ""), delegate
menuBottom.AddButton("rerollShop".lang(cost.ToString() ?? "", (_owner.trait.CurrencyRerollShop == CurrencyType.BlueCapsule) ? EMono.sources.things.map["drug_blue"].GetName() : "influence".lang()), delegate
{
if (EMono._zone.influence < cost)
if (_owner.trait.CurrencyRerollShop == CurrencyType.BlueCapsule)
{
SE.Beep();
Msg.Say("notEnoughInfluence");
if (EMono.pc.GetCurrency("drug_blue") < cost)
{
SE.Beep();
Msg.Say("notEnoughSomething", EMono.sources.things.map["drug_blue"].GetName());
return;
}
EMono.pc.ModCurrency(-1, "drug_blue");
}
else
{
SE.Dice();
if (EMono._zone.influence < cost)
{
SE.Beep();
Msg.Say("notEnoughInfluence");
return;
}
EMono._zone.influence -= cost;
_owner.c_dateStockExpire = 0;
_owner.trait.OnBarter(reroll: true);
RefreshGrid();
Sort();
SE.Play("shop_open");
}
});
SE.Dice();
_owner.c_dateStockExpire = 0;
_owner.trait.OnBarter(reroll: true);
RefreshGrid();
Sort();
SE.Play("shop_open");
TooltipManager.Instance.HideTooltips(immediate: true);
}, null, "DefaultContentFit").RebuildLayout();
break;
}
}