EA 23.285 Nightly
March 13, 2026
56 files modified. 4 new files created.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
Core (1)
public override void FreezeScreen(float duration = 0.3f)
public override void FreezeScreen(float duration = 0.2f) ELEMENT (1)
public static int GetResistDamage(int dmg, int v, int power = 0)
public static long GetResistDamage(long dmg, int v, int power = 0) ItemGeneral (2)
public void SetChara(Chara c, Mode mode = Mode.Default)
public void SetChara(Chara c, BaseListPeople list = null) public UIButton AddSubButton(Sprite sprite, Action action, string lang = null, Action<UITooltip> onTooltip = null)
public UIButton AddSubButton(Sprite sprite, Action action, string lang = null, Action<UITooltip> onTooltip = null, string id = null) LayerPeople (1)
public static LayerPeople CreateSelect(string langHeader, string langHint, Action<UIList> onList, Action<Chara> onClick, Func<Chara, string> _onShowSubText = null)
public static LayerPeople CreateSelect(string langHeader, string langHint, Action<BaseList> onList, Action<Chara> onClick, Func<Chara, string> _onShowSubText = null) ListPeopleParty (1)
public override void OnInstantiate(Chara c, ItemGeneral i)
public bool CanJoinParty(Chara c) ThingContainer (1)
public int GetCurrency(string id, ref int sum, SourceMaterial.Row mat = null)
public long GetCurrency(string id, ref long sum, SourceMaterial.Row mat = null) ABILITY
public class ABILITY
{
public const int ActSlime = 6608;
public const int AI_Steal = 6011;
public const int ActBurnMana = 6606;
public const int ActQuickCraft = 6012;
public const int ActRush = 6450;
public const int AI_PassTime = 6013;
public const int ActDuplicate = 6420;
public const int AI_SelfHarm = 6015;
public const int ActSuicide = 6410;
public const int ActRide = 6018;
public const int ActEscape = 6400;
public const int ActParasite = 6019;
public const int ActPray = 6050;
public const int ActDreamBug = 6020;
public const int ActPray = 6050;
public const int ActCrabBreathe = 6500;
public const int ActEscape = 6400;
public const int ActParasite = 6019;
public const int ActSuicide = 6410;
public const int AI_SelfHarm = 6015;
public const int ActDuplicate = 6420;
public const int AI_PassTime = 6013;
public const int ActRush = 6450;
public const int ActQuickCraft = 6012;
public const int ActCrabBreathe = 6500;
public const int AI_Steal = 6011;
public const int ActCurse = 6600;
public const int AI_Meditate = 6003;
public const int ActEntangle = 6601;
public const int AI_PlayMusic = 6001;
public const int ActDraw = 6602;
public const int ActRide = 6018;
public const int ActNTR = 6603;
public const int ActMoneyDump = 5058;
public const int ActKiss = 6628;
public const int ActCurse = 6600;
public const int ActDrainBlood = 6626;
public const int ActDraw = 6602;
public const int ActCatHuffing = 6627;
public const int ActGazeMana = 6623;
public const int ActGazeDim = 6620;
public const int AI_Meditate = 6003;
public const int ActTouchDrown = 6613;
public const int ActFear = 6611;
public const int ActEntangle = 6601;
public const int ActTouchSleep = 6612;
public const int ActWeaken = 6610;
public const int ActBloodsuck = 6607;
public const int ActSlime = 6608;
public const int ActBurnMana = 6606;
public const int ActBloodsuck = 6607;
public const int ActCrySad = 6605;
public const int ActCryRage = 6604;
public const int ActTouchSleep = 6612;
public const int ActNTR = 6603;
public const int AI_PlayMusic = 6001;
public const int ActFear = 6611;
public const int ActRestrain = 5055;
public const int ActMoneyThrow = 5057;
public const int AI_Bladder = 5054;
public const int ActMoneySlap = 5056;
public const int ActRestrain = 5055;
public const int TaskBuild = 5035;
public const int TaskMoveInstalled = 5036;
public const int AI_Offer = 5029;
public const int GoalSleep = 5027;
public const int TaskSleepOnBed = 5022;
public const int TaskGoOut = 5023;
public const int AI_Eat = 5024;
public const int AI_Grab = 5025;
public const int AI_Haul = 5026;
public const int GoalSleep = 5027;
public const int ActReleaseHeld = 5028;
public const int ActDeepKiss = 6629;
public const int AI_Offer = 5029;
public const int TaskGoOut = 5023;
public const int ActNoItem = 5037;
public const int ActThrow = 5038;
public const int AI_Fish = 5039;
public const int AI_Bladder = 5054;
public const int TaskHarvest = 5053;
public const int ActBash = 5052;
public const int ActItem = 5048;
public const int ActThrow = 5038;
public const int ActPick = 5047;
public const int ActInstall = 5046;
public const int AI_Drink = 5045;
public const int ActChat = 5044;
public const int ActRanged = 5040;
public const int ActInstall = 5046;
public const int ActKiss = 6628;
public const int ActInsult = 6630;
public const int ActDeepKiss = 6629;
public const int ActCatHuffing = 6627;
public const int ActDrainBlood = 6626;
public const int ActSteal = 6640;
public const int ActScream = 6631;
public const int TaskReadBoard = 5019;
public const int breathe_Nether = 50206;
public const int ActScream = 6631;
public const int ActInsult = 6630;
public const int breathe_Magic = 50211;
public const int breathe_Cold = 50201;
public const int ActStealFood = 6641;
public const int ActSummonSpecial = 6800;
public const int ActStealMoney = 6642;
public const int breathe_Lightning = 50202;
public const int ActNeckHunt = 6650;
public const int ActWhirlwind = 6666;
public const int ActDropMine = 6660;
public const int ActBladeStorm2 = 6665;
public const int ActThrowPotion = 6661;
public const int ActBladeStorm = 6664;
public const int ActSwarm = 6662;
public const int ActMultiHit = 6663;
public const int ActWombDark = 6801;
public const int TaskTrain = 5021;
public const int ActMultiHit = 6663;
public const int ActThrowPotion = 6661;
public const int ActBladeStorm = 6664;
public const int ActDropMine = 6660;
public const int ActBladeStorm2 = 6665;
public const int ActNeckHunt = 6650;
public const int ActWhirlwind = 6666;
public const int ActStealMoney = 6642;
public const int breathe_Lightning = 50202;
public const int ActStealFood = 6641;
public const int ActSummonSpecial = 6800;
public const int ActSteal = 6640;
public const int ActWombDark = 6801;
public const int ActSwarm = 6662;
public const int ActDeathSentense = 6802;
public const int ActLulwyTrick = 6902;
public static readonly int[] IDS = new int[141]
public static readonly int[] IDS = new int[144]
{
6608, 6011, 6012, 6013, 6015, 6018, 6019, 6020, 6050, 6400,
6410, 6420, 6450, 6500, 6600, 6601, 6602, 6603, 6628, 6626,
6623, 6622, 6621, 6620, 6003, 6613, 6611, 6610, 6607, 6606,
6605, 6604, 6612, 6001, 5055, 5054, 5035, 5034, 5033, 5032,
5031, 5030, 5036, 5029, 5027, 5022, 5023, 5024, 5025, 5026,
5028, 6629, 5037, 5039, 5053, 5052, 5051, 5050, 5049, 5048,
5038, 5047, 5045, 5044, 5043, 5042, 5041, 5040, 5046, 6630,
6627, 6640, 5019, 5020, 50216, 50215, 50214, 50213, 5018, 50212,
50210, 50209, 50208, 50207, 50206, 6631, 50211, 5017, 5016, 5015,
5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008, 5009,
5010, 5011, 5012, 5013, 5014, 50204, 50203, 50205, 50201, 6641,
6642, 6650, 6660, 6661, 6662, 5021, 6663, 6664, 6665, 6666,
50202, 6800, 6801, 6802, 6667, 6720, 50200, 8795, 8794, 8793,
6700, 6904, 6903, 7000, 6901, 6900, 6753, 6752, 6751, 6750,
6902
6606, 6450, 6420, 6410, 6400, 6050, 6020, 6500, 6019, 6015,
6013, 6012, 6011, 6003, 6001, 6018, 5058, 6600, 6602, 6627,
6623, 6622, 6621, 6620, 6613, 6601, 6612, 6610, 6608, 6607,
6605, 6604, 6603, 6611, 5057, 5056, 5055, 5035, 5034, 5033,
5032, 5031, 5030, 5036, 5022, 5024, 5025, 5026, 5027, 5028,
5029, 5023, 5037, 5038, 5039, 5054, 5053, 5052, 5051, 5050,
5049, 5048, 5047, 5046, 5045, 5044, 5043, 5042, 5041, 5040,
6628, 6629, 6626, 6631, 5019, 5020, 50216, 50215, 50214, 50213,
5018, 50212, 50210, 50209, 50208, 50207, 50206, 6630, 50211, 5017,
5016, 5015, 5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007,
5008, 5009, 5010, 5011, 5012, 5013, 5014, 50204, 50203, 50205,
50201, 6800, 50202, 6666, 6665, 6664, 6663, 6801, 5021, 6661,
6660, 6650, 6642, 6641, 6640, 6662, 6802, 6667, 6720, 50200,
8795, 8794, 8793, 6700, 6904, 6903, 7000, 6901, 6900, 6753,
6752, 6751, 6750, 6902
};
}
public class Ability : Actpublic override long GetSourceValue(long v, int lv, SourceValueType type)
{
return base.GetSourceValue(v, lv, type);
}
return 10L * (long)(100 + (lv - 1) * base.source.lvFactor / 10) / 100;
return 10 * (100 + ((long)lv - 1L) * base.source.lvFactor / 10) / 100;
}
public override int GetPower(Card c)
{
long num = base.Value * 8 + 50;
long a = base.Value * 8 + 50;
if (!c.IsPC)
{
num = (int)Mathf.Max(num, c.LV * 6 + 30);
a = MathEx.Max(a, (long)c.LV * 6L + 30);
if (c.IsPCFactionOrMinion && !base.source.aliasParent.IsEmpty())
{
num = (int)Mathf.Max(num, c.Evalue(base.source.aliasParent) * 4 + 30);
a = MathEx.Max(a, (long)c.Evalue(base.source.aliasParent) * 4L + 30);
}
}
num = EClass.curve(num, 400, 100);
a = EClass.curve(a, 400, 100);
if (this is Spell)
{
num = num * Mathf.Max(100 + c.Evalue(411) - c.Evalue(93), 1) / 100;
a = a * Mathf.Max(100 + c.Evalue(411) - c.Evalue(93), 1) / 100;
}
else if (this is ActBreathe)
{
num = num * Mathf.Max(100 + c.Evalue(411), 1) / 100;
a = a * Mathf.Max(100 + c.Evalue(411), 1) / 100;
}
if (num > 214748364)
if (a > 214748364)
{
num = 214748364L;
a = 214748364L;
}
return (int)num;
return (int)a;
}
public override void OnChangeValue()AI_Idle
public override IEnumerable<Status> Run()
});
}
}
if (EClass.rnd(owner.isSynced ? 10 : 2000) == 0 && owner.ability.Has(5058))
{
if (!owner.UseAbility(5058))
{
owner.AddCondition<ConInsane>(10000);
owner.SetHostility(Hostility.Enemy);
if (owner.isSynced)
{
owner.DoHostileAction(EClass.pc);
}
}
yield return Restart();
}
if (EClass.rnd(35) == 0 && owner.id == "child" && owner.pos.cell.IsSnowTile)
{
foreach (Chara chara6 in EClass._map.charas)AI_Steal
public override IEnumerable<Status> Run()
return;
}
}
if (target.ChildrenAndSelfWeight > owner.Evalue(281) * 200 + owner.STR * 100 + 1000)
if (target.ChildrenAndSelfWeight > (long)owner.Evalue(281) * 200L + (long)owner.STR * 100L + 1000)
{
EClass.pc.Say("tooHeavy", target);
p.Cancel();ActEffect
void AddCon<T>(int rate, int power) where T : Condition
{
CC.PlaySound("clean_floor");
Msg.Say("exterminate");
List<Chara> list2 = EClass._map.charas.Where((Chara c) => c.isCopy && !c.IsPCFaction).ToList();
if (list2.Count == 0)
List<Chara> list3 = EClass._map.charas.Where((Chara c) => c.isCopy && !c.IsPCFaction).ToList();
if (list3.Count == 0)
{
Msg.SayNothingHappen();
return;
}
foreach (Chara item in list2)
foreach (Chara item in list3)
{
item.Say("split_fail", item);
item.PlayEffect("vanish");void AddCon<T>(int rate, int power) where T : Condition
break;
}
case EffectId.LittleSisterMigration:
case EffectId.SilverCatMigration:
{
if (!(EClass._zone is Zone_LittleGarden) && !EClass.game.IsSurvival)
bool flag3 = id == EffectId.SilverCatMigration;
if (!EClass.game.IsSurvival && ((flag3 && !(EClass._zone is Zone_EternalGarden)) || (!flag3 && !(EClass._zone is Zone_LittleGarden))))
{
Msg.SayNothingHappen();
return;
}
List<Chara> list3 = new List<Chara>();
bool flag3 = false;
List<Chara> list2 = new List<Chara>();
bool flag4 = false;
foreach (Chara chara2 in EClass._map.charas)
{
if (!chara2.IsPCFactionOrMinion && chara2.id == "littleOne")
if (!chara2.IsPCFactionOrMinion && chara2.id == (flag3 ? "cat_silver" : "littleOne"))
{
if (flag3)
if (flag4)
{
flag3 = false;
flag4 = false;
continue;
}
list3.Add(chara2);
flag3 = true;
list2.Add(chara2);
flag4 = true;
}
}
if (list3.Count == 0)
if (list2.Count == 0)
{
Msg.SayNothingHappen();
return;
}
EClass.pc.PlaySound("chime_angel");
foreach (Chara item2 in list3)
foreach (Chara item2 in list2)
{
item2.PlayEffect("revive");
item2.Destroy();
}
Msg.Say("little_migration", list3.Count.ToString() ?? "");
EClass._zone.ModInfluence(list3.Count);
EClass.player.stats.sistersDepart += list3.Count;
Msg.Say(flag3 ? "cat_migration" : "little_migration", list2.Count.ToString() ?? "");
EClass._zone.ModInfluence(list2.Count);
if (flag3)
{
EClass.player.stats.catDepart += list2.Count;
}
else
{
EClass.player.stats.sistersDepart += list2.Count;
}
break;
}
case EffectId.MagicMap:void AddCon<T>(int rate, int power) where T : Condition
case EffectId.EnchantArmorGreat:
{
bool armor = id == EffectId.EnchantArmor || id == EffectId.EnchantArmorGreat;
bool flag6 = id == EffectId.EnchantWeaponGreat || id == EffectId.EnchantArmorGreat;
bool flag7 = id == EffectId.EnchantWeaponGreat || id == EffectId.EnchantArmorGreat;
if (!tc.isThing)
{
LayerDragGrid.CreateEnchant(CC, armor, flag6, state);
LayerDragGrid.CreateEnchant(CC, armor, flag7, state);
return;
}
cc.PlaySound("identify");void AddCon<T>(int rate, int power) where T : Condition
tc.ModEncLv(-1);
break;
}
int num6 = (flag6 ? 4 : 2) + (blessed ? 1 : 0);
int num6 = (flag7 ? 4 : 2) + (blessed ? 1 : 0);
if (tc.encLV >= num6)
{
cc.Say("enc_resist", tc);void AddCon<T>(int rate, int power) where T : Condition
case EffectId.Identify:
case EffectId.GreaterIdentify:
{
bool flag5 = id == EffectId.GreaterIdentify;
bool flag6 = id == EffectId.GreaterIdentify;
if (flag)
{
Redirect(EffectId.ForgetItems, flag5 ? BlessedState.Cursed : BlessedState.Normal, default(ActRef));
Redirect(EffectId.ForgetItems, flag6 ? BlessedState.Cursed : BlessedState.Normal, default(ActRef));
break;
}
if (!tc.isThing)
{
int count = ((!blessed) ? 1 : (flag5 ? (2 + EClass.rnd(2)) : (3 + EClass.rnd(3))));
LayerDragGrid.CreateIdentify(CC, flag5, state, 0, count);
int count = ((!blessed) ? 1 : (flag6 ? (2 + EClass.rnd(2)) : (3 + EClass.rnd(3))));
LayerDragGrid.CreateIdentify(CC, flag6, state, 0, count);
return;
}
cc.PlaySound("identify");
cc.PlayEffect("identify");
tc.Thing.Identify(cc.IsPCParty, (!flag5) ? IDTSource.Identify : IDTSource.SuperiorIdentify);
tc.Thing.Identify(cc.IsPCParty, (!flag6) ? IDTSource.Identify : IDTSource.SuperiorIdentify);
break;
}
case EffectId.Uncurse:void AddCon<T>(int rate, int power) where T : Condition
Element orCreateElement2 = tc.elements.GetOrCreateElement(65);
Element orCreateElement3 = tc.elements.GetOrCreateElement(67);
Element orCreateElement4 = tc.elements.GetOrCreateElement(66);
bool flag4 = tc.IsEquipmentOrRangedOrAmmo || tc.IsThrownWeapon;
bool flag5 = tc.IsEquipmentOrRangedOrAmmo || tc.IsThrownWeapon;
if (flag)
{
num3 = (int)(0.01f * (float)num3 * (float)power * 0.75f + 500f);
if (num3 < 0 || num3 > 10000000)
{
num3 = 10000000;
flag4 = false;
flag5 = false;
}
if (flag4)
if (flag5)
{
if (tc.IsWeapon || tc.IsThrownWeapon || tc.IsAmmo)
{void AddCon<T>(int rate, int power) where T : Condition
{
power /= 4;
}
if (flag4)
if (flag5)
{
if (tc.IsWeapon || tc.IsThrownWeapon || tc.IsAmmo)
{void AddCon<T>(int rate, int power) where T : Condition
break;
}
CC.Say("abDraw", CC, TC);
CC.PlaySound("draw");
if (TC.HasCondition<ConGravity>())
{
CC.SayNothingHappans();void AddCon<T>(int rate, int power) where T : Condition
break;
}
Thing thing6 = null;
bool flag9 = actRef.n1 == "food";
bool flag10 = actRef.n1 == "food";
if (actRef.n1 == "money")
{
int currency = TC.GetCurrency();void AddCon<T>(int rate, int power) where T : Condition
else
{
Func<Thing, bool> func = (Thing t) => true;
if (flag9)
if (flag10)
{
func = (Thing t) => t.IsFood;
}void AddCon<T>(int rate, int power) where T : Condition
case EffectId.DamageMindGreat:
case EffectId.Weaken:
{
bool flag10 = id == EffectId.DamageBody || id == EffectId.DamageBodyGreat;
bool flag11 = id == EffectId.DamageBody || id == EffectId.DamageBodyGreat;
bool mind2 = id == EffectId.DamageMind || id == EffectId.DamageMindGreat;
int num9 = ((id == EffectId.DamageBody || id == EffectId.DamageMind) ? 1 : (4 + EClass.rnd(4)));
if (id == EffectId.Weaken)
{
flag10 = EClass.rnd(2) == 0;
mind2 = !flag10;
flag11 = EClass.rnd(2) == 0;
mind2 = !flag11;
num9 = 1;
}
elsevoid AddCon<T>(int rate, int power) where T : Condition
TC.PlayEffect("debuff");
TC.PlaySound("debuff");
}
TC.Say(flag10 ? "damageBody" : "damageMind", TC);
TC.Say(flag11 ? "damageBody" : "damageMind", TC);
for (int l = 0; l < num9; l++)
{
TC.DamageTempElements(power, flag10, mind2, id != EffectId.Weaken);
TC.DamageTempElements(power, flag11, mind2, id != EffectId.Weaken);
}
if (TC.IsPC)
{void AddCon<T>(int rate, int power) where T : Condition
case EffectId.EnhanceBodyGreat:
case EffectId.EnhanceMindGreat:
{
bool flag7 = id == EffectId.EnhanceBody || id == EffectId.EnhanceBodyGreat;
bool flag8 = id == EffectId.EnhanceBody || id == EffectId.EnhanceBodyGreat;
bool mind = id == EffectId.EnhanceMind || id == EffectId.EnhanceMindGreat;
if (id != EffectId.EnhanceBody && id != EffectId.EnhanceMind)
{
EClass.rnd(4);
}
TC.Say(flag7 ? "enhanceBody" : "enhanceMind", TC);
TC.Say(flag8 ? "enhanceBody" : "enhanceMind", TC);
TC.PlayEffect("buff");
TC.PlaySound("buff");
TC.EnhanceTempElements(power, flag7, mind, onlyRenew: true);
TC.EnhanceTempElements(power, flag8, mind, onlyRenew: true);
break;
}
case EffectId.RestoreBody:
case EffectId.RestoreMind:
{
bool flag8 = id == EffectId.RestoreBody;
bool flag9 = id == EffectId.RestoreBody;
if (flag)
{
Redirect(flag8 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef));
Redirect(flag9 ? EffectId.DamageBodyGreat : EffectId.DamageMindGreat, BlessedState.Normal, default(ActRef));
break;
}
TC.Say(flag8 ? "restoreBody" : "restoreMind", TC);
TC.Say(flag9 ? "restoreBody" : "restoreMind", TC);
TC.PlaySound("heal");
TC.PlayEffect("heal");
TC.CureHost(flag8 ? CureType.CureBody : CureType.CureMind, power, state);
TC.CureHost(flag9 ? CureType.CureBody : CureType.CureMind, power, state);
if (blessed)
{
Redirect(flag8 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef));
Redirect(flag9 ? EffectId.EnhanceBodyGreat : EffectId.EnhanceMindGreat, BlessedState.Normal, default(ActRef));
}
break;
}+ActMoneyDump
File Created
using System.Collections.Generic;
using UnityEngine;
public class ActMoneyDump : Ability
{
public override bool CanPressRepeat => true;
public override bool CanPerform()
{
return Act.CC.GetCurrency() >= 100;
}
public override bool Perform()
{
List<Point> points = new List<Point>();
Act.TP.ForeachNeighbor(delegate(Point _p)
{
if (!_p.Equals(Act.TP) && EClass.rnd(3) != 0 && !_p.IsBlocked)
{
points.Add(_p.Copy());
}
});
Act.CC.Talk("insane");
Act.CC.PlaySound("money_dump");
foreach (Point item in points)
{
int num = EClass.rndHalf(Mathf.Clamp(Act.CC.GetCurrency() / 50, 1, 20000000)) + EClass.rndHalf(10);
if (Act.CC.GetCurrency() >= num)
{
Thing t = ThingGen.Create("money").SetNum(num);
Act.CC.ModCurrency(-num * 3 / 2);
ActThrow.Throw(Act.CC, item, null, t, ThrowMethod.Reward);
}
}
Act.TP.TalkWitnesses(Act.CC, new string[4] { "rumor_good", "callGuards", "disgust", "wow" }.RandomItem(), 4, WitnessType.everyone, (Chara c) => true);
foreach (Chara item2 in Act.TP.ListWitnesses(Act.CC, 4, WitnessType.everyone))
{
ActMoneySlap.MoneyEffect(Act.CC, item2, GetPower(Act.CC));
}
return true;
}
}+ActMoneySlap
File Created
using UnityEngine;
public class ActMoneySlap : Ability
{
public override bool CanPressRepeat => true;
public override bool CanPerform()
{
if (Act.TC != null)
{
return Act.CC.GetCurrency() > 0;
}
return false;
}
public override bool Perform()
{
bool num = this is ActMoneyThrow;
int num2 = Mathf.Clamp(Act.CC.GetCurrency() / 100, 1, 20000000);
Thing thing = ThingGen.Create("money").SetNum(num2);
long dmg = (long)Mathf.Sqrt(num2) * GetPower(Act.CC) / 100;
Act.CC.ModCurrency(-num2);
if (!num)
{
Act.CC.PlaySound("whip");
}
Act.CC.PlaySound("money_dump");
Act.CC.LookAt(Act.TP);
if (num)
{
Act.CC.Say("throw", Act.CC, thing.GetName(NameStyle.Full));
Chara chara = Act.CC.host ?? Act.CC;
Effect.Get<EffectIRenderer>("throw").Play(chara, thing, chara.pos, Act.TP, 0.2f);
thing.renderer.SetFirst(first: false, chara.renderer.position);
}
else
{
Act.CC.renderer.PlayAnime(AnimeID.Attack, Act.TC);
Act.CC.Say("use_whip", Act.CC, Act.TC, thing.Name);
}
Act.TC.PlayAnime(AnimeID.Shiver);
Act.TC.DamageHP(dmg, 926, 100, AttackSource.Throw, Act.CC);
Act.TC.PlayEffect("hit_blunt").SetScale(1f);
Act.CC.PlaySound("hit_blunt");
if (Act.TC.isChara && Act.TC.ExistsOnMap)
{
Act.TC.Chara.OnInsulted();
MoneyEffect(Act.CC, Act.TC.Chara, GetPower(Act.CC), 1);
}
return true;
}
public static void MoneyEffect(Chara owner, Chara c, int power, int chance = 5)
{
if (c != owner && EClass.rnd(chance) == 0)
{
if (EClass.rnd(2) == 0)
{
c.AddCondition<ConConfuse>(power);
}
if (EClass.rnd(2) == 0)
{
c.AddCondition<ConDim>(power);
}
if (EClass.rnd(4) == 0)
{
c.AddCondition<ConFear>(power);
}
if (EClass.rnd(1) == 0)
{
c.AddCondition<ConEuphoric>(power);
}
}
}
}+ActMoneyThrow
File Created
public class ActMoneyThrow : ActMoneySlap
{
public override bool CanPressRepeat => true;
}BaseGameScreen
public virtual void RefreshWeather()
emission.rateOverTime = ((currentCondition == Weather.Condition.RainHeavy) ? 750 : 200);
EMono.scene.snow.enableEmission = !flag && currentCondition == Weather.Condition.Snow;
EMono.scene.ether.enableEmission = !flag && weather.IsEther;
bool enableEmission = !flag && weather.IsBlossom;
bool flag3 = !flag && weather.IsBlossom;
ParticleSystem[] blossoms = EMono.scene.blossoms;
for (int i = 0; i < blossoms.Length; i++)
foreach (ParticleSystem particleSystem in blossoms)
{
blossoms[i].enableEmission = enableEmission;
particleSystem.enableEmission = flag3;
if (flag3)
{
ParticleSystem.MainModule main = particleSystem.main;
ParticleSystem.MinMaxGradient startColor = main.startColor;
if (EMono._zone is Zone_Mifu)
{
startColor.mode = ParticleSystemGradientMode.RandomColor;
startColor.gradient = EMono.Colors.particleColors.blossomGradient;
}
else
{
startColor.mode = ParticleSystemGradientMode.TwoColors;
startColor.colorMin = EMono.Colors.particleColors.blossomMin;
startColor.colorMax = EMono.Colors.particleColors.blossomMax;
}
main.startColor = startColor;
}
}
enableEmission = !flag && currentCondition == Weather.Condition.SnowHeavy && EMono.core.config.graphic.blizzard;
flag3 = !flag && currentCondition == Weather.Condition.SnowHeavy && EMono.core.config.graphic.blizzard;
blossoms = EMono.scene.blizzards;
for (int i = 0; i < blossoms.Length; i++)
{
blossoms[i].enableEmission = enableEmission;
blossoms[i].enableEmission = flag3;
}
EMono.scene.transBlizzard.localScale = new Vector3(1f, 1f, 1f);
bool flag3 = (EMono._zone.IsUnderwater || EMono._map.config.forceGodRay || (EMono.core.config.graphic.godray && !flag && (currentCondition == Weather.Condition.Fine || currentCondition == Weather.Condition.Snow))) && !BuildMenu.Instance;
EMono.scene.godray.SetActive(flag3, delegate(bool enabled)
bool flag4 = (EMono._zone.IsUnderwater || EMono._map.config.forceGodRay || (EMono.core.config.graphic.godray && !flag && (currentCondition == Weather.Condition.Fine || currentCondition == Weather.Condition.Snow))) && !BuildMenu.Instance;
EMono.scene.godray.SetActive(flag4, delegate(bool enabled)
{
if (!enabled)
{
EMono.scene.godray.Clear();
}
});
EMono.scene.godrayDust.SetActive(flag3 && EMono.world.date.IsNight);
EMono.scene.godrayDust.SetActive(flag4 && EMono.world.date.IsNight);
EMono.scene.snow.SetActive(enable: true);
EMono.scene.rain.SetActive(enable: true);
EMono.scene.ether.SetActive(enable: true);public virtual void RefreshWeather()
num2 += EMono.scene.profile.global.snowBrightness;
}
camSupport.grading.sceneBrightness = num2;
ParticleSystem.MainModule main = EMono.scene.rain.main;
ParticleSystem.MainModule main2 = EMono.scene.snow.main;
ParticleSystem.MainModule main3 = EMono.scene.ether.main;
bool flag5 = (main3.prewarm = false);
bool prewarm = (main2.prewarm = flag5);
main.prewarm = prewarm;
ParticleSystem.MainModule main2 = EMono.scene.rain.main;
ParticleSystem.MainModule main3 = EMono.scene.snow.main;
ParticleSystem.MainModule main4 = EMono.scene.ether.main;
bool flag6 = (main4.prewarm = false);
bool prewarm = (main3.prewarm = flag6);
main2.prewarm = prewarm;
blossoms = EMono.scene.blossoms;
for (int i = 0; i < blossoms.Length; i++)
{
ParticleSystem.MainModule main4 = blossoms[i].main;
main4.prewarm = false;
ParticleSystem.MainModule main5 = blossoms[i].main;
main5.prewarm = false;
}
camSupport.grading.SetGrading();
}BaseListPeople
{
list.callbacks = new UIList.Callback<Chara, ItemGeneral>
{
onInstantiate = delegate(Chara a, ItemGeneral b)
onInstantiate = delegate
{
b.SetChara(a, (this is ListPeopleBuySlave) ? ItemGeneral.Mode.Slave : ItemGeneral.Mode.Default);
},
onRedraw = delegate(Chara a, ItemGeneral b, int i)
{
b.SetChara(a, this);
OnInstantiate(a, b);
b.Build();
},public override void OnInstantiate(Chara a, ItemGeneral b)
{
});
}
}).icon.SetAlpha((bed != null) ? 1f : 0.4f);
}, "home").icon.SetAlpha((bed != null) ? 1f : 0.4f);
}
}
if (ShowCharaSheet && EClass.debug.showExtra)public override void OnInstantiate(Chara a, ItemGeneral b)
LayerChara layerChara = EClass.ui.AddLayerDontCloseOthers<LayerChara>();
layerChara.windows[0].SetRect(EClass.core.refs.rects.center);
layerChara.SetChara(a);
}, "charaInfo");
}, "charaInfo", null, "sheet");
}
if (IsDisabled(a))
{public void AddSubButtonWork(ItemGeneral b, Chara a)
}, null, delegate(UITooltip t)
{
WriteHobbies(t, a, roomWork);
}).icon.SetAlpha(flag ? 1f : 0.4f);
}, "room").icon.SetAlpha(flag ? 1f : 0.4f);
}
public void WriteHobbies(UITooltip t, Chara a, BaseArea roomWork) }
foreach (Chara member2 in EClass.pc.party.members)
{
if (member2.memberType == memberType && !list.items.Contains(member2))
if (member2.memberType == memberType && !list.Contains(member2))
{
list.Add(member2);
}public override void OnRefreshMenu()
List();
});
}
if (!(this is ListPeopleParty))
{
return;
}
menuLeft.AddSpace();
menuLeft.AddHeader("party");
if (EClass.pc.party.members.Count > 1)
{
menuLeft.AddButton("disband", delegate
{
EClass.pc.party.Disband();
SE.Trash();
RefreshAll();
});
}
}
}BaseTileMap
public Vector3 GetThingPosition(Card tg, Point p)
public int GetApproximateBlocklight(Cell cell)
{
float num = _baseBrightness + 0.38f;
float num = _baseBrightness + 0.25f;
num = ((!cell.IsSnowTile) ? ((float)((int)(num * 50f) * 262144 + ((cell.lightR >= 64) ? 63 : cell.lightR) * 4096 + ((cell.lightG >= 64) ? 63 : cell.lightG) * 64 + ((cell.lightB >= 64) ? 63 : cell.lightB))) : ((float)((int)(num * 50f) * 262144 + (int)((float)((cell.lightR >= 50) ? 50 : cell.lightR) * snowColor) * 4096 + (int)((float)((cell.lightG >= 50) ? 50 : cell.lightG) * snowColor) * 64 + (int)((float)((cell.lightB >= 50) ? 50 : cell.lightB) * snowColor) + snowColorToken)));
return (int)num;
}Card
public int GetCurrency(string id = "money")
{
return EClass._zone.influence;
}
int sum = 0;
long sum = 0L;
SourceMaterial.Row mat = null;
things.GetCurrency(id, ref sum, mat);
return sum;
if (sum > int.MaxValue)
{
sum = 2147483647L;
}
return (int)sum;
}
public virtual void HealHPHost(int a, HealSource origin = HealSource.None)public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
{
num3++;
}
dmg = Element.GetResistDamage((int)dmg, Evalue(e.source.aliasRef), num3);
dmg = Element.GetResistDamage(dmg, Evalue(e.source.aliasRef), num3);
dmg = dmg * 100 / (100 + Mathf.Clamp(Evalue(961) * 5, -50, 200));
dmg = dmg * Mathf.Max(100 - Evalue(93), 10) / 100;
}public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
Chara.AddCondition<ConFractured>((int)Mathf.Max(10f, 30f - Mathf.Sqrt(Evalue(436))));
hp = Mathf.Min(half * (int)Mathf.Sqrt(Evalue(436) * 2) / 100, MaxHP / 3);
});
goto IL_1077;
goto IL_1075;
}
}
if (zoneInstanceBout != null && (bool)LayerDrama.Instance)public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
if (EClass.player.invlunerable)
{
EvadeDeath(null);
goto IL_1077;
goto IL_1075;
}
}
if (Evalue(1220) > 0 && Chara.stamina.value >= (IsPC ? (Chara.stamina.max / 2) : (Chara.stamina.max / 3 * 2)))public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
}
}
}
goto IL_1077;
IL_1077:
goto IL_1075;
IL_1075:
if (trait.CanBeAttacked)
{
renderer.PlayAnime(AnimeID.HitObj);public SoundSource PlaySound(string id, float v = 1f, bool spatial = true)
{
spatial = false;
}
if (rootCard.Dist(EClass.pc) < EClass.player.lightRadius + 1 || !spatial)
if (rootCard.Dist(EClass.pc) < 6 || !spatial)
{
return rootCard.pos.PlaySound(id, isSynced || !spatial, v, spatial);
}Chara
public void RestockEquip(bool onCreate)
EQ_ID("dagger_hocho");
}
break;
case "mad_rich":
if (onCreate)
{
int a = EClass.rndHalf(100 + (EClass.debug.enable ? 10 : EClass._zone.influence) * 50 + (int)Mathf.Sqrt(EClass._zone.DangerLv) * 100 + (int)Mathf.Sqrt(EClass.pc.FameLv) * 100 + EClass._zone.development * 10);
ModCurrency(a);
}
break;
}
if (!TryEquipRanged())
{public override void SetSortVal(UIList.SortMode m, CurrencyType currency = Curre
case UIList.SortMode.ByFeat:
sortVal = -GetTotalFeat();
break;
case UIList.SortMode.ByPartyOrder:
sortVal = EClass.pc.party.members.IndexOf(this);
return;
default:
sortVal = sourceCard._index * ((!IsHuman) ? 1 : (-1));
break;ColorProfile
public class ColorProfile : EScriptable
{
[Serializable]
public class ParticleColors
{
public Color blossomMin;
public Color blossomMax;
public Gradient blossomGradient;
}
[Serializable]
public class RarityColors
{
public PCLights pcLights;
public ParticleColors particleColors;
public Color colorIngCost;
public Color colorIngPredict;Core
{
}
public override void FreezeScreen(float duration = 0.3f)
public override void FreezeScreen(float duration = 0.2f)
{
ui.FreezeScreen(duration);
}CoreDebug
public static string RegenerateNames()
[ConsoleCommand("")]
public static string Stats()
{
return string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat("" + "Fish Stolen: " + EClass.player.flags.fishStolen + Environment.NewLine, "Little Saved: ", EClass.player.little_saved.ToString(), Environment.NewLine), "Little Lost: ", EClass.player.little_dead.ToString(), Environment.NewLine), "Angry Cats: ", EClass.player.stats.angryCats.ToString(), Environment.NewLine), "Love Made: ", EClass.player.stats.kimo.ToString(), Environment.NewLine), "Nefia Beaten: ", EClass.player.stats.nefiaBeaten.ToString(), Environment.NewLine), "Sheared: ", EClass.player.stats.shear.ToString(), Environment.NewLine), "Brushed: ", EClass.player.stats.brush.ToString(), Environment.NewLine), "Egg Hatched: ", EClass.player.stats.eggHatched.ToString(), Environment.NewLine), "Plowed: ", EClass.player.stats.plow.ToString(), Environment.NewLine), "Cleaned: ", EClass.player.stats.clean.ToString(), Environment.NewLine), "Unpaid Bill: ", EClass.player.unpaidBill.ToString(), Environment.NewLine), "Statue Shipped: ", EClass.player.flags.statueShipped.ToString(), Environment.NewLine);
return string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat(string.Concat("" + "Fish Stolen: " + EClass.player.flags.fishStolen + Environment.NewLine, "Little Saved: ", EClass.player.little_saved.ToString(), Environment.NewLine), "Little Lost: ", EClass.player.little_dead.ToString(), Environment.NewLine), "Little Depart: ", EClass.player.stats.sistersDepart.ToString(), Environment.NewLine), "Cat Depart: ", EClass.player.stats.catDepart.ToString(), Environment.NewLine), "Angry Cats: ", EClass.player.stats.angryCats.ToString(), Environment.NewLine), "Love Made: ", EClass.player.stats.kimo.ToString(), Environment.NewLine), "Nefia Beaten: ", EClass.player.stats.nefiaBeaten.ToString(), Environment.NewLine), "Sheared: ", EClass.player.stats.shear.ToString(), Environment.NewLine), "Brushed: ", EClass.player.stats.brush.ToString(), Environment.NewLine), "Egg Hatched: ", EClass.player.stats.eggHatched.ToString(), Environment.NewLine), "Plowed: ", EClass.player.stats.plow.ToString(), Environment.NewLine), "Cleaned: ", EClass.player.stats.clean.ToString(), Environment.NewLine), "Unpaid Bill: ", EClass.player.unpaidBill.ToString(), Environment.NewLine), "Statue Shipped: ", EClass.player.flags.statueShipped.ToString(), Environment.NewLine);
}
[ConsoleCommand("")]ELEMENT
public virtual long GetSourceValue(long v, int lv, SourceValueType type)
{
return type switch
{
SourceValueType.Chara => v * (100 + (lv - 1 + EClass.rnd(lv / 2 + 1)) * source.lvFactor / 10) / 100 + EClass.rnd(lv / 3) * source.lvFactor / 100,
SourceValueType.Chara => v * (100 + (lv - 1 + EClass.rnd(lv / 2 + 1)) * source.lvFactor / 10) / 100 + (long)EClass.rnd(lv / 3) * (long)source.lvFactor / 100,
SourceValueType.Fixed => v,
_ => v * ((source.encFactor == 0) ? 100 : (50 + EClass.rnd(100) + EClass.rnd((int)Mathf.Sqrt(lv * 100)) * source.encFactor / 100)) / 100,
_ => v * ((source.encFactor == 0) ? 100 : (50 + EClass.rnd(100) + (long)EClass.rnd((int)Mathf.Sqrt(lv * 100)) * (long)source.encFactor / 100)) / 100,
};
}public static int GetResistLv(int v)
return num;
}
public static int GetResistDamage(int dmg, int v, int power = 0)
public static long GetResistDamage(long dmg, int v, int power = 0)
{
int num = GetResistLv(v);
if (power > 0 && num > 0)public static int GetResistDamage(int dmg, int v, int power = 0)
}
if (num >= 4)
{
return 0;
return 0L;
}
return num switch
{ENC
public const int negateFear = 423;
public const int negateSunburn = 431;
public const int guts = 436;
public const int negateConfusion = 425;
public const int breathing = 429;
public const int encRagnarok = 667;
public const int negateShockwave = 430;
public const int encHit = 414;
public const int meleeDistance = 666;
public const int negateSunburn = 431;
public const int negateSleep = 424;
public const int slowCorruption = 412;
public const int convertFire = 850;
public const int convertImpact = 865;
public const int throwReturn = 410;
public const int negateShockwave = 430;
public const int defense_range = 435;
public const int counter = 380;
public const int rusher = 382;
public const int basher = 381;
public const int redirect_blaser = 383;
public const int negateTeleport = 400;
public const int convertImpact = 865;
public const int levitation = 401;
public const int convertLightning = 852;
public const int searchRange = 402;
public const int convertCold = 851;
public const int expMod = 403;
public const int encSpell = 411;
public const int planter = 665;
public const int sanctified = 432;
public const int searchRange = 402;
public const int convertCold = 851;
public const int expMod = 403;
public const int convertFire = 850;
public const int weightMod = 404;
public const int corruption = 409;
public const int levitation = 401;
public const int boostMachine = 664;
public const int basher = 381;
public const int absorbSP = 662;
public const int convertLightning = 852;
public const int bane_machine = 465;
public const int encRagnarok = 667;
public const int bane_god = 466;
public const int rusher = 382;
public const int bane_fish = 467;
public const int planter = 665;
public const int bane_all = 468;
public const int creativeChef = 487;
public const int deathagony = 488;
public const int music_drunk = 489;
public const int farsee = 490;
public const int negateGravity = 491;
public const int bane_man = 464;
public const int bane_animal = 463;
public const int mod_reload = 601;
public const int bane_fairy = 462;
public const int mod_rapid = 602;
public const int bane_undead = 461;
public const int bane_fish = 467;
public const int eheluck = 663;
public const int bane_god = 466;
public const int defense_range = 435;
public const int bane_machine = 465;
public const int guts = 436;
public const int bane_man = 464;
public const int parry = 437;
public const int meleeDistance = 666;
public const int knightly = 438;
public const int sustain_STR = 440;
public const int mod_ammo = 600;
public const int sustain_END = 441;
public const int sustain_DEX = 442;
public const int sustain_PER = 443;
public const int sustain_LER = 444;
public const int mod_ammo_knockback = 603;
public const int sustain_WIL = 445;
public const int sustain_LER = 444;
public const int sustain_MAG = 446;
public const int bane_dragon = 460;
public const int sustain_DEX = 442;
public const int bane_undead = 461;
public const int mod_reload = 601;
public const int bane_fairy = 462;
public const int deathagony = 488;
public const int bane_animal = 463;
public const int mod_ammo_knockback = 603;
public const int sustain_WIL = 445;
public const int absorbMP = 661;
public const int mod_ammo_recover = 604;
public const int mod_ammo = 600;
public const int mod_drill = 606;
public const int parry = 437;
public const int boostMachine = 664;
public const int eheluck = 663;
public const int absorbSP = 662;
public const int mod_precision = 605;
public const int absorbHP = 660;
public const int permaCurse = 656;
public const int sanctified = 432;
public const int mod_rapid = 602;
public const int onlyPet = 655;
public const int noDamage = 654;
public const int r_DV = 650;
public const int absorbMP = 661;
public const int r_mana = 641;
public const int r_life = 640;
public const int mod_frustration = 624;
public const int onlyPet = 655;
public const int mod_feint = 623;
public const int mod_scatter = 607;
public const int mod_cleave = 622;
public const int mod_feint = 623;
public const int mod_ammo_recover = 604;
public const int mod_flurry = 621;
public const int mod_precision = 605;
public const int mod_chaser = 620;
public const int mod_talisman = 609;
public const int mod_splash = 608;
public const int mod_drill = 606;
public static readonly int[] IDS = new int[107]
{
422, 416, 415, 417, 418, 419, 420, 421, 423, 431,
425, 426, 427, 428, 429, 667, 414, 666, 424, 412,
850, 410, 430, 380, 382, 383, 400, 865, 852, 851,
411, 665, 402, 403, 404, 405, 406, 407, 408, 409,
401, 664, 381, 662, 465, 466, 467, 468, 480, 481,
482, 483, 484, 485, 486, 487, 489, 490, 491, 464,
463, 462, 461, 663, 435, 436, 437, 438, 439, 440,
600, 441, 443, 444, 445, 446, 447, 450, 460, 442,
601, 488, 603, 661, 660, 656, 432, 602, 654, 653,
652, 651, 650, 641, 640, 624, 655, 607, 622, 623,
604, 621, 605, 620, 609, 608, 606
422, 416, 415, 417, 418, 419, 420, 421, 423, 436,
425, 426, 427, 428, 429, 430, 414, 431, 424, 412,
865, 410, 435, 380, 381, 383, 400, 401, 402, 403,
411, 432, 851, 850, 404, 405, 406, 407, 408, 409,
852, 667, 382, 665, 468, 480, 481, 482, 483, 484,
485, 486, 487, 488, 489, 490, 491, 601, 602, 467,
466, 465, 464, 666, 438, 439, 440, 441, 442, 443,
603, 444, 446, 447, 450, 460, 461, 462, 463, 445,
604, 600, 606, 437, 664, 663, 662, 605, 660, 656,
655, 654, 653, 652, 651, 650, 661, 641, 640, 624,
623, 607, 622, 621, 620, 609, 608
};
}EffectId
Flare = 310,
GravityGun = 311,
TransBlood = 312,
Field = 313
Field = 313,
SilverCatMigration = 314
}ElementContainer
public int GetSpellExp(Chara c, Element e, int costMod = 100)
if (!e.source.aliasParent.IsEmpty())
{
int num2 = ValueWithoutLink(e.source.aliasParent) - ValueWithoutLink(e.source.id);
if (num2 > 10000)
{
num2 = 10000;
}
num = ((num2 < 0) ? (num * 100 / (100 - num2 * 25)) : (num * (100 + num2 * 5) / 100));
}
if (num < 0)FACTION
public class FACTION
{
public const int bfIce = 3804;
public const int bfGum = 3803;
public const int fSafety = 2205;
public const int bfSilica = 3802;
public const int actBuildCut = 4000;
public const int bfLandmark4 = 3783;
public const int bfStart = 3900;
public const int bfCoal = 3800;
public const int bfChitin = 3805;
public const int bfLandmark5 = 3784;
public const int bfIce = 3804;
public const int bfLandmark3 = 3782;
public const int bfCoal = 3800;
public const int bfLandmark2 = 3781;
public const int bfSilica = 3802;
public const int bfMushroom = 3801;
public const int fRation = 2207;
public const int fConstruction = 2003;
public const int fLoyal = 2117;
public const int bfLandmark5 = 3784;
public const int bfGum = 3803;
public const int fAdmin = 2115;
public const int fEducation = 2116;
public const int fHeirloom = 2120;
public const int fLoyal = 2117;
public const int fLuck = 2118;
public const int fTaxEvasion = 2119;
public const int fHeirloom = 2120;
public const int fRation = 2207;
public const int fSoil = 2200;
public const int fPromo = 2202;
public const int bfLandmark1 = 3780;
public const int fAttraction = 2206;
public const int fSafety = 2205;
public const int bfLandmark4 = 3783;
public const int fMoral = 2203;
public const int fFood = 2204;
public const int fConstruction = 2003;
public const int fEducation = 2116;
public const int bfBreed = 3710;
public const int bfLandmark3 = 3782;
public const int bfChitin = 3805;
public const int bfBasin = 3709;
public const int bfFreshAir = 3708;
public const int bfLandmark1 = 3780;
public const int bfBasin = 3709;
public const int bfLandmark2 = 3781;
public const int bfPlain = 3600;
public const int bfSea = 3605;
public const int bfCave = 3500;
public const int bfFertile = 3700;
public const int bfGeyser = 3701;
public const int bfTranquil = 3703;
public const int bfUndersea = 3606;
public const int bfVolcano = 3704;
public const int bfHunt = 3705;
public const int bfUndersea = 3606;
public const int bfFish = 3706;
public const int actBuildInspect = 4006;
public const int bfBreed = 3710;
public const int actBuildRecipe = 4005;
public const int bfHunt = 3705;
public const int actBuildCollect = 4004;
public const int bfFreshAir = 3708;
public const int actBuildAnywhere = 4003;
public const int bfMonster = 3707;
public const int actBuildMine = 4001;
public const int actBuildTerrain = 4002;
public const int actBuildMine = 4001;
public const int bfCave = 3500;
public const int actBuildCut = 4000;
public const int actBuildCollect = 4004;
public const int bfStart = 3900;
public const int actBuildRecipe = 4005;
public const int bfVolcano = 3704;
public const int actBuildInspect = 4006;
public const int bfMonster = 3707;
public const int actBuildAnywhere = 4003;
public static readonly int[] IDS = new int[53]
{
3804, 3803, 3802, 3783, 3800, 3784, 3782, 3781, 3801, 2207,
2117, 2115, 2116, 2118, 2119, 2120, 2200, 2201, 2202, 3780,
2206, 2205, 2203, 2204, 2003, 3710, 3805, 3708, 3709, 3600,
3601, 3602, 3603, 3604, 3605, 3500, 3700, 3701, 3702, 3703,
3606, 3705, 3706, 4006, 4005, 4004, 4003, 4002, 4001, 4000,
3900, 3704, 3707
2205, 4000, 3900, 3805, 3804, 3800, 3802, 3801, 2003, 3784,
3803, 2115, 2120, 2117, 2118, 2119, 2207, 2200, 2201, 2202,
2206, 3783, 2203, 2204, 2116, 3782, 3709, 3780, 3781, 3600,
3601, 3602, 3603, 3604, 3605, 3700, 3701, 3702, 3703, 3704,
3606, 3706, 3710, 3705, 3708, 3707, 4001, 4002, 3500, 4004,
4005, 4006, 4003
};
}
public class Faction : EClassFEAT
{
public const int featEND = 1622;
public const int featPER = 1623;
public const int featLER = 1624;
public const int featHardy = 1630;
public const int featMAG = 1625;
public const int featSPD = 1629;
public const int featHardy = 1630;
public const int featLuck = 1628;
public const int featCHA = 1627;
public const int featLuck = 1628;
public const int featWIL = 1626;
public const int featSPD = 1629;
public const int featMAG = 1625;
public const int featDefense = 1631;
public const int featLER = 1624;
public const int featWIL = 1626;
public const int featPER = 1623;
public const int featDEX = 1621;
public const int featEvade = 1632;
public const int featMilitant = 1419;
public const int featDefense = 1631;
public const int featExecutioner = 1420;
public const int featSTR = 1620;
public const int featStamina = 1612;
public const int featManaMeat = 1421;
public const int featExecutioner = 1420;
public const int featSpotting = 1633;
public const int featEvade = 1632;
public const int featMilitant = 1419;
public const int featSwordsage = 1418;
public const int featWitch = 1417;
public const int featSTR = 1620;
public const int featDEX = 1621;
public const int featSpotting = 1633;
public const int featNegotiate = 1634;
public const int featDefender = 1649;
public const int featGourmet = 1650;
public const int featMartial = 1635;
public const int featFaith = 1636;
public const int featInquisitor = 1416;
public const int featWitch = 1417;
public const int featComat = 1750;
public const int featHeavyCasting = 1654;
public const int featNegotiate = 1634;
public const int featDreamWaker = 1653;
public const int featRapidArrow = 1652;
public const int featMagicManner = 1651;
public const int featGourmet = 1650;
public const int featDefender = 1649;
public const int featRapidMagic = 1648;
public const int featAnimalLover = 1640;
public const int featFaith = 1636;
public const int featRapidArrow = 1652;
public const int featFoxMaid = 1415;
public const int featMartial = 1635;
public const int featEternalYouth = 1243;
public const int featInquisitor = 1416;
public const int featFairysan = 1413;
public const int featSevenSense = 1245;
public const int featBaby = 1232;
public const int featWhiteVixen = 1414;
public const int featCosmicHorror = 1233;
public const int featGeneSlot = 1242;
public const int featCentaur = 1244;
public const int featSevenSense = 1245;
public const int featEternalYouth = 1243;
public const int featNirvana = 1231;
public const int featCentaur = 1244;
public const int featPegasus = 1246;
public const int featMiscreation = 1248;
public const int featBaby = 1232;
public const int featLibra = 1247;
public const int featBloodBond = 1249;
public const int featVampire = 1250;
public const int featWhiteVixen = 1414;
public const int featAshborn = 1251;
public const int featAquatic = 1252;
public const int featFoxMaid = 1415;
public const int featGoodKarma = 1270;
public const int featGoddess = 1290;
public const int featLibra = 1247;
public const int featGod_element1 = 1300;
public const int featMiscreation = 1248;
public const int featNirvana = 1231;
public const int featAdam = 1230;
public const int featDemigod = 1228;
public const int featLittleOne = 1229;
public const int featSlowFood = 1200;
public const int featFairyResist = 1212;
public const int featLittleOne = 1229;
public const int featElea = 1213;
public const int featManaPrecision = 1214;
public const int featDwarf = 1215;
public const int featSuccubus = 1216;
public const int featServant = 1227;
public const int featManaPrecision = 1214;
public const int featDemigod = 1228;
public const int featGod_earth1 = 1305;
public const int featAshborn = 1251;
public const int featGod_wind1 = 1310;
public const int featGod_machine1 = 1315;
public const int featAquatic = 1252;
public const int featWizard = 1402;
public const int featGod_healing1 = 1320;
public const int featFarmer = 1403;
public const int featFairysan = 1413;
public const int featArcher = 1404;
public const int featLuckyCat = 1412;
public const int featPianist = 1405;
public const int featEarthStrength = 1411;
public const int featTourist = 1406;
public const int featReboot = 1410;
public const int featPaladin = 1407;
public const int featBoost = 1409;
public const int featPaladin2 = 1408;
public const int featBoost = 1409;
public const int featPaladin = 1407;
public const int featReboot = 1410;
public const int featTourist = 1406;
public const int featEarthStrength = 1411;
public const int featPianist = 1405;
public const int featLuckyCat = 1412;
public const int featGod_machine1 = 1315;
public const int featGod_wind1 = 1310;
public const int featArcher = 1404;
public const int featGod_strife1 = 1355;
public const int featWizard = 1402;
public const int featGod_healing1 = 1320;
public const int featThief = 1401;
public const int featGod_harvest1 = 1325;
public const int featWarrior = 1400;
public const int featGod_luck1 = 1330;
public const int featGod_strife1 = 1355;
public const int featGod_harmony1 = 1335;
public const int featGod_moonshadow1 = 1350;
public const int featGod_trickery1 = 1345;
public const int featGod_oblivion1 = 1340;
public const int featGod_trickery1 = 1345;
public const int featGod_harmony1 = 1335;
public const int featGod_moonshadow1 = 1350;
public const int featGod_luck1 = 1330;
public const int featWarrior = 1400;
public const int featGod_harvest1 = 1325;
public const int featThief = 1401;
public const int featFarmer = 1403;
public static readonly int[] IDS = new int[145]
{
1622, 1623, 1624, 1625, 1630, 1627, 1628, 1629, 1631, 1626,
1621, 1419, 1612, 1611, 1610, 1426, 1425, 1424, 1423, 1422,
1421, 1420, 1632, 1418, 1417, 1620, 1633, 1649, 1635, 1416,
1622, 1630, 1629, 1628, 1627, 1626, 1625, 1624, 1623, 1632,
1631, 1420, 1620, 1612, 1611, 1610, 1426, 1425, 1424, 1423,
1422, 1421, 1633, 1419, 1418, 1621, 1634, 1650, 1636, 1417,
1750, 1663, 1662, 1661, 1660, 1659, 1658, 1657, 1656, 1655,
1654, 1634, 1653, 1651, 1650, 1648, 1647, 1646, 1645, 1644,
1643, 1642, 1641, 1640, 1636, 1652, 1415, 1243, 1413, 1232,
1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242,
1244, 1245, 1231, 1246, 1248, 1249, 1250, 1414, 1252, 1270,
1271, 1272, 1273, 1274, 1275, 1276, 1290, 1247, 1300, 1230,
1228, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208,
1209, 1210, 1211, 1212, 1229, 1213, 1215, 1216, 1217, 1218,
1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1214,
1305, 1251, 1315, 1402, 1403, 1404, 1405, 1406, 1407, 1408,
1409, 1410, 1411, 1412, 1310, 1355, 1320, 1325, 1330, 1335,
1340, 1345, 1350, 1400, 1401
1654, 1653, 1652, 1651, 1649, 1648, 1647, 1646, 1645, 1644,
1643, 1642, 1641, 1640, 1635, 1416, 1245, 1414, 1233, 1234,
1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244,
1246, 1232, 1247, 1249, 1250, 1251, 1415, 1270, 1271, 1272,
1273, 1274, 1275, 1276, 1290, 1300, 1248, 1231, 1230, 1229,
1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209,
1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219,
1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1305,
1310, 1252, 1320, 1413, 1412, 1411, 1410, 1409, 1408, 1407,
1406, 1405, 1315, 1404, 1402, 1401, 1400, 1355, 1350, 1345,
1340, 1335, 1330, 1325, 1403
};
}
public class Feat : ElementFOOD
public class FOOD
{
public const int food_cat = 701;
public const int creativeDish = 764;
public const int food_CHA = 700;
public const int food_god = 758;
public const int food_poison = 702;
public const int food_undead = 709;
public const int food_god = 758;
public const int food_blood = 710;
public const int food_love = 703;
public const int food_CHA = 700;
public const int creativeDish = 764;
public const int justcooked = 757;
public const int gainWeight = 705;
public const int food_poison = 702;
public const int loseWeight = 706;
public const int food_love = 703;
public const int food_bug = 704;
public const int food_human = 708;
public const int food_undead = 709;
public const int food_cat = 701;
public const int justcooked = 757;
public const int loseWeight = 706;
public const int kirimi = 707;
public const int food_blood = 710;
public const int food_human = 708;
public const int gainWeight = 705;
public static readonly int[] IDS = new int[14]
{
701, 700, 702, 758, 703, 764, 705, 706, 704, 708,
709, 757, 707, 710
764, 758, 709, 710, 700, 757, 702, 703, 704, 701,
706, 707, 708, 705
};
}FactionBranch
num5 = num6;
}
}
int num7 = ((isWealthy ? 50 : 10) + member.LV * 2) * num5 / 100 * num4 / 100;
int num7 = (int)((isWealthy ? 50 : 10) + (long)member.LV * 2L) * num5 / 100 * num4 / 100;
if (isWealthy && num2 > 0)
{
num7 = num7 * (150 + (int)Mathf.Sqrt(num2) * 5) / 100;GameDate
Thing thing4 = ThingGen.Create("parchment");
thing4.MakeRefFrom(value2, null, simple: true);
thing4.SetStr(53, "letter_love");
Thing p3 = ThingGen.CreateParcel(null, thing3, thing4);
Thing p3 = ThingGen.CreateParcel(null, thing3, ThingGen.Create("1165"), thing4);
EClass.world.SendPackage(p3);
}
}ID_Achievement
FAITH_HEALING,
ONEV,
JURE,
BELL
BELL,
NERUN2
}ItemGeneral
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ItemGeneral : UIItem, IPrefImage
{
public enum Mode
{
Default,
Slave
}
private const int IconSize = 40;
private const int IconPadding = 10;
private int count;
public void SetChara(Chara c, Mode mode = Mode.Default)
private bool built;
private Dictionary<string, UIButton> subButtons = new Dictionary<string, UIButton>();
private Dictionary<string, Component> prefabs = new Dictionary<string, Component>();
public void SetChara(Chara c, BaseListPeople list = null)
{
card = c;
c.SetImage(button1.icon);public void SetChara(Chara c, Mode mode = Mode.Default)
text += ("(" + "maid".lang() + ")").TagSize(12);
}
FontColor c2 = FontColor.ButtonGeneral;
if (c.isDead)
if (list is ListPeopleParty)
{
if (c.isDead)
{
c2 = FontColor.Bad;
}
else if (!(list as ListPeopleParty).CanJoinParty(c))
{
c2 = FontColor.Warning;
}
}
else if (c.isDead)
{
c2 = FontColor.Bad;
}public void SetChara(Chara c, Mode mode = Mode.Default)
{
c2 = FontColor.Warning;
}
if (mode == Mode.Slave)
if (list is ListPeopleBuySlave)
{
text = text + " " + c.bio.TextBioSlave(c);
}
button1.mainText.SetText(text, c2);
_ = button1.icon.rectTransform;
}
public RenderRow GetRenderRow() count = 0;
}
public UIButton AddSubButton(Sprite sprite, Action action, string lang = null, Action<UITooltip> onTooltip = null)
public UIButton AddSubButton(Sprite sprite, Action action, string lang = null, Action<UITooltip> onTooltip = null, string id = null)
{
UIButton uIButton = Util.Instantiate<UIButton>("UI/Element/Button/SubButton", base.transform);
uIButton.Rect().anchoredPosition = new Vector2(count * -40 - 20 - 10, 0f);
UIButton uIButton;
if (built)
{
uIButton = subButtons[id];
}
else
{
uIButton = Util.Instantiate<UIButton>("UI/Element/Button/SubButton", base.transform);
uIButton.Rect().anchoredPosition = new Vector2(count * -40 - 20 - 10, 0f);
}
uIButton.icon.sprite = sprite;
uIButton.onClick.RemoveAllListeners();
uIButton.onClick.AddListener(delegate
{
action();public UIButton AddSubButton(Sprite sprite, Action action, string lang = null, A
uIButton.tooltip.enable = true;
}
uIButton.highlightTarget = button1;
count++;
if (!built)
{
count++;
if (id != null)
{
subButtons[id] = uIButton;
}
}
return uIButton;
}public UIButton SetSubText2(string lang, FontColor c = FontColor.Default, TextAn
public T AddPrefab<T>(string id) where T : Component
{
return Util.Instantiate<T>("UI/Element/Item/Extra/" + id, base.transform);
T val = prefabs.TryGetValue(id) as T;
if (val != null)
{
return val;
}
val = Util.Instantiate<T>("UI/Element/Item/Extra/" + id, base.transform);
prefabs[id] = val;
return val;
}
public void SetSound(SoundData data = null) {
rectTransform.sizeDelta = new Vector2(count * -40 - 10 - 3, 0f);
}
built = true;
}
}LayerEditPlaylist
{
list.callbacks = new UIList.Callback<BGMData, ItemGeneral>
{
onInstantiate = delegate(BGMData a, ItemGeneral b)
onRedraw = delegate(BGMData a, ItemGeneral b, int i)
{
b.SetMainText(((a.id > 1) ? "♪ " : "") + a._name.IsEmpty(a.name).ToTitleCase());
b.button1.keyText.text = a.id.ToString() ?? ""; b.AddSubButton(EClass.core.refs.icons.resume, delegate
{
EClass.Sound.PlayBGM(a);
});
}, null, null, "play");
}
if (main && layer.mode == Mode.Playlist)
{ {
BGMData select2 = items.Move(a, 1);
list.OnMove(a, select2);
});
}, null, null, "down");
b.AddSubButton(EClass.core.refs.icons.up, delegate
{
BGMData select = items.Move(a, -1);
list.OnMove(a, select);
});
}, null, null, "up");
}
b.Build();
if (!single)LayerHome
b.AddSubButton(ELayer.core.refs.icons.go, delegate
{
ELayer.screen.Focus(a.points[0]);
}, "tFocus");
}, "tFocus", null, "focus");
b.Build();
},
onList = delegate b.AddSubButton(ELayer.core.refs.icons.go, delegate
{
ELayer.screen.Focus(a.GetPoint());
}, "tFocus");
}, "tFocus", null, "focus");
b.Build();
},
onList = delegateLayerList
public LayerList SetList2<TValue>(ICollection<TValue> _list, Func<TValue, string
{
item.button1.mainText.text = getText(a);
item.DisableIcon();
item.Build();
if (noSound)
{
item.button1.soundClick = null;public LayerList SetList2<TValue>(ICollection<TValue> _list, Func<TValue, string
{
onInstantiate(a, item);
}
item.Build();
},
onList = delegate
{LayerPeople
Default,
Select,
Double,
Hire
Hire,
Party
}
public enum ShowMode
public LayoutGroup layoutMenu;
public UISearchPeople search;
public Action onConfirm;
public UIMultiList multi;public override void OnSwitchContent(Window window)
{
if (multi.Double)
{
multi.owners[window.windowIndex].OnSwitchContent();
InitList(multi.owners[window.windowIndex]);
}
else
{
multi.owners[window.idTab].OnSwitchContent();
InitList(multi.owners[window.idTab]);
}
}
public void InitList(ListOwner o)
{
if ((bool)search && (!multi.Double || o.main))
{
search.Init(o);
}
o.OnSwitchContent();
}
public static LayerPeople Create(Mode mode)
{
string path = "LayerPeople";
if (mode == Mode.Double)
switch (mode)
{
case Mode.Double:
path = "LayerPeople/LayerPeopleDouble";
break;
case Mode.Party:
path = "LayerPeople/LayerPeopleDouble_party";
break;
}
return Layer.Create(path) as LayerPeople;
}public static LayerPeople CreateReserve()
public static LayerPeople CreateParty()
{
LayerPeople layerPeople = Create(Mode.Double);
LayerPeople layerPeople = Create(Mode.Party);
layerPeople.multi.AddOwner(0, new ListPeopleParty
{
textHeader = "candidates"public static LayerPeople Create(BaseListPeople list)
return layerPeople;
}
public static LayerPeople CreateSelect(string langHeader, string langHint, Action<UIList> onList, Action<Chara> onClick, Func<Chara, string> _onShowSubText = null)
public static LayerPeople CreateSelect(string langHeader, string langHint, Action<BaseList> onList, Action<Chara> onClick, Func<Chara, string> _onShowSubText = null)
{
LayerPeople layerPeople = Create(Mode.Select);
layerPeople.multi.AddOwner(0, new ListPeopleSelectListOwner
public class ListOwner : EClass
public ListOwner other;
public UIList list;
public UIDynamicList list;
public WindowMenu menu;ListPeopleBed
public override void OnInstantiate(Chara c, ItemGeneral i)
{
}, null, delegate
{
});
}, "bed");
uIButton.icon.SetAlpha((c.FindBed() != null) ? 0.9f : 0.4f);
uIButton.SetTooltip(delegate(UITooltip t)
{ListPeopleCallReserve
public class ListPeopleCallReserve : BaseListPeople
public override void OnInstantiate(Chara a, ItemGeneral b)
{
b.SetSubText(a.job.GetName().ToTitleCase(), 280);
if (a.trait.CanBeBanished)
b.AddSubButton(EClass.core.refs.icons.trash, delegate
{
b.AddSubButton(EClass.core.refs.icons.trash, delegate
Action func = delegate
{
Action func = delegate
{
EClass.Home.RemoveReserve(a);
a.OnBanish();
list.List();
SE.Trash();
};
if (skipDialog)
{
func();
}
else
EClass.Home.RemoveReserve(a);
a.OnBanish();
list.List();
SE.Trash();
};
if (skipDialog)
{
func();
}
else
{
Dialog.Choice("dialogDeleteRecruit", delegate(Dialog d)
{
Dialog.Choice("dialogDeleteRecruit", delegate(Dialog d)
d.AddButton("yes".lang(), delegate
{
d.AddButton("yes".lang(), delegate
{
func();
});
d.AddButton("yesAndSkip".lang(), delegate
{
func();
skipDialog = true;
});
d.AddButton("no".lang());
func();
});
}
});
}
d.AddButton("yesAndSkip".lang(), delegate
{
func();
skipDialog = true;
});
d.AddButton("no".lang());
});
}
}, null, null, "remove").SetActive(a.trait.CanBeBanished);
AddSubButtonWork(b, a);
}ListPeopleParty
public override void OnCreate()
list.sortMode = UIList.SortMode.ByFeat;
}
public override void OnInstantiate(Chara c, ItemGeneral i)
public bool CanJoinParty(Chara c)
{
Zone zone = (main ? c.currentZone : c.homeZone);
i.SetSubText((zone == null) ? "???" : zone.Name, 240);
if (!c.IsPC)
{
UIButton uIButton = i.AddSubButton(EClass.core.refs.icons.fav, delegate
if (!c.isDead && !c.HasCondition<ConSuspend>() && c.currentZone != null && c.trait.CanJoinParty)
{
SE.ClickGeneral();
c.isFav = !c.isFav;
return c.trait.CanJoinPartyResident;
}
return false;
}
return true;
}
public override void OnRefreshMenu()
{
base.OnRefreshMenu();
if (!main)
{
return;
}
WindowMenu menuLeft = window.menuLeft;
menuLeft.AddSpace();
menuLeft.AddHeader("party");
menuLeft.AddSpace(13f);
if (EClass.pc.party.members.Count > 1)
{
menuLeft.AddButton("disband", delegate
{
EClass.pc.party.Disband();
SE.Trash();
RefreshAll();
});
}
for (int j = 0; j < 5; j++)
{
int i = j;
Player.PartySetup setup = EClass.player.partySetups[i];
if (setup == null)
{
menuLeft.AddButton("party_empty".lang((i + 1).ToString() ?? ""), delegate
{
if (EClass.pc.party.members.Count == 1)
{
SE.Beep();
}
else
{
SE.Equip();
EClass.pc.party.RegisterSetup(i);
RefreshAll();
}
});
continue;
}
UIButton uIButton = menuLeft._AddButton("Party", null);
uIButton.SetOnClick(delegate
{
EClass.pc.party.Disband();
foreach (int uid in setup.uids)
{
Chara chara3 = EClass.game.cards.globalCharas.Find(uid);
if (chara3 != null && !chara3.IsPC && CanJoinParty(chara3))
{
JoinParty(chara3);
if (chara3.uid == setup.ride)
{
ActRide.Ride(EClass.pc, chara3, parasite: false, talk: false);
}
else if (chara3.uid == setup.parasite)
{
ActRide.Ride(EClass.pc, chara3, parasite: true, talk: false);
}
}
}
SE.Equip();
RefreshAll();
});
bool flag = true;
foreach (int uid2 in setup.uids)
{
Chara chara = EClass.game.cards.globalCharas.Find(uid2);
if (chara == null || !CanJoinParty(chara))
{
flag = false;
}
}
uIButton.mainText.SetText("party_load".lang((i + 1).ToString() ?? ""), flag ? FontColor.Good : FontColor.Warning);
uIButton.SetTooltip(delegate(UITooltip n)
{
n.note.Clear();
n.note.AddHeader("faction_Member");
foreach (int uid3 in setup.uids)
{
Chara chara2 = EClass.game.cards.globalCharas.Find(uid3);
string text = ((chara2 == null) ? "???" : chara2.NameBraced);
if (chara2 != null)
{
if (chara2.uid == setup.ride)
{
text = text + " " + "party_ride".lang();
}
else if (chara2.uid == setup.parasite)
{
text = text + " " + "party_parasite".lang();
}
}
n.note.AddText(text, (chara2 == null || chara2.isDead) ? FontColor.Bad : ((!CanJoinParty(chara2)) ? FontColor.Warning : FontColor.Good));
}
n.note.Build();
});
uIButton.GetComponentInDirectChildren<UIButton>().SetOnClick(delegate
{
SE.Trash();
EClass.player.partySetups[i] = null;
RefreshAll();
});
uIButton.icon.SetAlpha(c.isFav ? 1f : 0.3f);
uIButton.icon.SetNativeSize();
}
}
public override void OnInstantiate(Chara c, ItemGeneral i)
{
Zone zone = (main ? c.currentZone : c.homeZone);
if (main)
{
i.SetSubText((zone == null) ? "???" : zone.Name, 240);
}
UIButton uIButton = i.AddSubButton(EClass.core.refs.icons.fav, delegate
{
SE.ClickGeneral();
c.isFav = !c.isFav;
RefreshAll();
}, null, null, "fav");
uIButton.icon.SetAlpha(c.isFav ? 1f : 0.3f);
uIButton.icon.SetNativeSize();
}
public override void OnClick(Chara c, ItemGeneral i)
{
if (main)
{
if (c.isDead || c.HasCondition<ConSuspend>() || c.currentZone == null)
if (!CanJoinParty(c))
{
SE.Beep();
if (!c.trait.CanJoinPartyResident)
{
Msg.Say("ride_req");
}
return;
}
if (c.currentZone != EClass._zone)
{
c.MoveZone(EClass._zone);
c.MoveImmediate(EClass.pc.pos.GetNearestPoint(allowBlock: false, allowChara: false) ?? EClass.pc.pos);
}
EClass.pc.party.AddMemeber(c);
JoinParty(c);
}
else
{public override void OnClick(Chara c, ItemGeneral i)
base.Main.OnRefreshMenu();
}
public void JoinParty(Chara c)
{
if (c.currentZone != EClass._zone)
{
c.MoveZone(EClass._zone);
c.MoveImmediate(EClass.pc.pos.GetNearestPoint(allowBlock: false, allowChara: false) ?? EClass.pc.pos);
}
EClass.pc.party.AddMemeber(c);
}
public override void OnList()
{
if (main) {
list.Add(member);
}
list.sortMode = UIList.SortMode.ByNone;
list.sortMode = UIList.SortMode.ByPartyOrder;
}
public HireInfo GetInfo(Chara c)ListPeopleSelect
public class ListPeopleSelect : BaseListPeople
{
public Action<UIList> onList;
public Action<UIDynamicList> onList;
public Action<Chara> onClick;MUTATION
public class MUTATION
{
public const int mutationRegen = 1516;
public const int mutationSkin = 1510;
public const int mutationSkinN = 1511;
public const int mutationDexN = 1515;
public const int mutationRegen = 1516;
public const int mutationRegenN = 1517;
public const int mutationStr = 1520;
public const int mutationSpeedN = 1519;
public const int etherPoisonHand = 1565;
public const int etherViolence = 1556;
public const int mutationSpeed = 1518;
public const int etherNeck = 1555;
public const int etherWing = 1554;
public const int mutationSpeed = 1518;
public const int etherEye = 1553;
public const int etherFeet = 1552;
public const int etherUgly = 1551;
public const int etherNeck = 1555;
public const int mutationCha = 1522;
public const int etherWing = 1554;
public const int mutationStr = 1520;
public const int mutationBrain = 1524;
public const int mutationStrN = 1521;
public const int etherGravity = 1550;
public const int mutationCha = 1522;
public const int mutationChaN = 1523;
public const int mutationBrain = 1524;
public const int mutationCold = 1526;
public const int etherUgly = 1551;
public const int mutationBrainN = 1525;
public const int mutationLightning = 1528;
public const int mutationCold = 1526;
public const int mutationColdN = 1527;
public const int mutationLightningN = 1529;
public const int mutationHairN = 1533;
public const int mutationColdN = 1527;
public const int etherGravity = 1550;
public const int mutationLightning = 1528;
public static readonly int[] IDS = new int[40]
{
1516, 1510, 1511, 1512, 1513, 1514, 1515, 1517, 1519, 1565,
1564, 1563, 1562, 1561, 1560, 1559, 1558, 1557, 1556, 1518,
1554, 1553, 1552, 1551, 1555, 1522, 1520, 1521, 1550, 1523,
1524, 1526, 1525, 1528, 1529, 1530, 1531, 1532, 1533, 1527
1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1520, 1519,
1565, 1564, 1563, 1562, 1561, 1560, 1559, 1558, 1557, 1556,
1555, 1518, 1553, 1552, 1554, 1524, 1521, 1522, 1523, 1551,
1525, 1526, 1527, 1529, 1530, 1531, 1532, 1533, 1550, 1528
};
}
public class Mutation : FeatPOLICY
public class POLICY
{
public const int legendary_exhibition = 2823;
public const int celeb = 2822;
public const int license_general = 2820;
public const int license_stolen = 2824;
public const int legendary_heirloom = 2821;
public const int legendary_exhibition = 2823;
public const int license_furniture = 2819;
public const int milk_fan = 2825;
public const int egg_fan = 2826;
public const int breed_season = 2827;
public const int license_slaver = 2828;
public const int license_stolen = 2824;
public const int milk_fan = 2825;
public const int license_food = 2818;
public const int license_general = 2820;
public const int wealth_tax = 2500;
public const int faith_tax = 2501;
public const int store_ripoff = 2816;
public const int license_food = 2818;
public const int energy_conservation = 2700;
public const int speed_growth = 2516;
public const int ban_radio = 2510;
public const int energy_conservation = 2700;
public const int vaccination = 2509;
public const int nocturnal_life = 2508;
public const int inquisition = 2507;
public const int human_right = 2506;
public const int legal_drug = 2505;
public const int impressment = 2504;
public const int prohibition = 2503;
public const int food_for_people = 2502;
public const int faith_tax = 2501;
public const int store_premium = 2817;
public const int wealth_tax = 2500;
public const int nocturnal_life = 2508;
public const int license_furniture = 2819;
public const int trash_sort = 2701;
public const int prohibition = 2503;
public const int trash_no = 2702;
public const int impressment = 2504;
public const int border_watch = 2704;
public const int weed_no = 2703;
public const int trash_no = 2702;
public const int store_premium = 2817;
public const int platinum_ticket = 2815;
public const int store_ripoff = 2816;
public const int mass_exhibition = 2814;
public const int suite_room = 2813;
public const int bed_quality = 2812;
public const int tourist_safety = 2811;
public const int home_discount = 2800;
public const int livestock_priv = 2715;
public const int platinum_ticket = 2815;
public const int suite_room = 2813;
public const int forcePanty = 2712;
public const int incomeTransfer = 2711;
public const int auto_farm = 2707;
public const int demon_invocation = 2706;
public const int livestock_priv = 2715;
public const int forcePanty = 2712;
public const int demon_invocation = 2706;
public const int taxTransfer = 2705;
public const int border_watch = 2704;
public static readonly int[] IDS = new int[51]
{
2822, 2820, 2821, 2823, 2819, 2825, 2826, 2827, 2828, 2824,
2818, 2500, 2816, 2516, 2515, 2514, 2513, 2512, 2511, 2510,
2700, 2509, 2507, 2506, 2505, 2504, 2502, 2501, 2817, 2508,
2701, 2503, 2703, 2702, 2815, 2814, 2812, 2811, 2810, 2800,
2715, 2813, 2711, 2710, 2709, 2708, 2707, 2706, 2712, 2705,
2704
2823, 2822, 2824, 2821, 2826, 2827, 2828, 2825, 2820, 2501,
2818, 2700, 2516, 2515, 2514, 2513, 2512, 2511, 2510, 2509,
2508, 2507, 2506, 2505, 2503, 2502, 2500, 2819, 2701, 2702,
2504, 2704, 2703, 2817, 2816, 2814, 2813, 2812, 2811, 2810,
2800, 2815, 2712, 2711, 2710, 2709, 2708, 2707, 2715, 2706,
2705
};
}
public class Policy : EClassParty
public void RemoveMember(Chara c)
{
if (c.host != null)
{
ActRide.Unride(c.host, c.host.parasite == c);
ActRide.Unride(c.host, c.host.parasite == c, talk: false);
}
members.Remove(c);
uidMembers.Remove(c.uid); return num;
}
public void RegisterSetup(int index)
{
Player.PartySetup partySetup = new Player.PartySetup();
foreach (Chara member in members)
{
partySetup.uids.Add(member.uid);
if (member == EClass.pc.ride)
{
partySetup.ride = member.uid;
}
if (member == EClass.pc.parasite)
{
partySetup.parasite = member.uid;
}
}
EClass.player.partySetups[index] = partySetup;
}
public void Disband()
{
foreach (Chara item in members.Copy())Player
[JsonProperty]
public int sistersDepart;
[JsonProperty]
public int catDepart;
[JsonProperty]
public int married; }
}
public class PartySetup : EClass
{
[JsonProperty]
public List<int> uids = new List<int>();
[JsonProperty]
public int ride;
[JsonProperty]
public int parasite;
}
public const int MaxPartySetup = 5;
[JsonProperty]
public ReturnInfo returnInfo; [JsonProperty]
public List<string> favMoongate = new List<string>();
[JsonProperty]
public PartySetup[] partySetups = new PartySetup[5];
public static int seedHallucination;
public static int realHour;SKILL
public const int strategy = 135;
public const int riding = 226;
public const int parasite = 227;
public const int evasionPlus = 151;
public const int lumberjack = 225;
public const int parasite = 227;
public const int riding = 226;
public const int digging = 230;
public const int weaponBow = 104;
public const int END = 71;
public const int STR = 70;
public const int weaponAxe = 102;
public const int vigor = 62;
public const int PV = 65;
public const int DV = 64;
public const int HIT = 66;
public const int FPV = 68;
public const int STR = 70;
public const int climbing = 242;
public const int END = 71;
public const int weaponStaff = 103;
public const int DEX = 72;
public const int fishing = 245;
public const int DV = 64;
public const int PV = 65;
public const int carpentry = 255;
public const int eleLightning = 912;
public const int anatomy = 290;
public const int sculpture = 258;
public const int appraising = 289;
public const int alchemy = 257;
public const int building = 288;
public const int blacksmith = 256;
public const int cooking = 287;
public const int handicraft = 261;
public const int eleDarkness = 913;
public const int lockpicking = 280;
public const int reading = 285;
public const int stealing = 281;
public const int negotiation = 291;
public const int reading = 285;
public const int stealing = 281;
public const int farming = 286;
public const int handicraft = 261;
public const int eleDarkness = 913;
public const int weaving = 260;
public const int cooking = 287;
public const int jewelry = 259;
public const int building = 288;
public const int sculpture = 258;
public const int appraising = 289;
public const int alchemy = 257;
public const int anatomy = 290;
public const int blacksmith = 256;
public const int negotiation = 291;
public const int lockpicking = 280;
public const int jewelry = 259;
public const int investing = 292;
public const int farming = 286;
public const int regeneration = 300;
public const int eleCold = 911;
public const int eleFire = 910;
public const int env = 313;
public const int disarmTrap = 293;
public const int fun = 312;
public const int eleFire = 910;
public const int bladder = 311;
public const int eleCold = 911;
public const int disarmTrap = 293;
public const int hygine = 310;
public const int fun = 312;
public const int weaving = 260;
public const int memorization = 307;
public const int faith = 306;
public const int magicDevice = 305;
public const int meditation = 301;
public const int faith = 306;
public const int bladder = 311;
public const int memorization = 307;
public static readonly int[] IDS = new int[134]
{
133, 132, 131, 130, 123, 122, 110, 111, 109, 108,
107, 134, 106, 120, 135, 226, 151, 152, 200, 207,
210, 220, 225, 227, 230, 235, 237, 240, 241, 105,
150, 104, 71, 102, 50, 51, 55, 56, 57, 60,
61, 62, 65, 66, 67, 68, 70, 242, 103, 72,
107, 134, 106, 120, 135, 227, 151, 152, 200, 207,
210, 220, 225, 226, 230, 235, 237, 240, 241, 105,
150, 104, 70, 102, 50, 51, 55, 56, 57, 60,
61, 62, 64, 66, 67, 68, 242, 71, 103, 72,
74, 75, 76, 77, 78, 79, 80, 90, 91, 92,
93, 94, 100, 101, 73, 245, 64, 255, 916, 917,
93, 94, 100, 101, 73, 245, 65, 255, 916, 917,
918, 919, 921, 922, 923, 924, 925, 926, 950, 951,
952, 953, 915, 954, 956, 957, 958, 959, 960, 961,
962, 963, 964, 972, 971, 970, 965, 250, 955, 914,
920, 912, 290, 289, 288, 287, 913, 285, 291, 281,
261, 260, 259, 258, 257, 256, 280, 292, 286, 300,
313, 293, 910, 911, 310, 312, 307, 305, 304, 303,
302, 301, 306, 311
920, 912, 258, 257, 256, 261, 280, 281, 285, 286,
913, 287, 288, 289, 290, 291, 259, 292, 300, 911,
910, 313, 312, 311, 293, 310, 260, 306, 305, 304,
303, 302, 301, 307
};
}
public class Skill : ElementSLOT
public class SLOT
{
public const int back = 33;
public const int arm = 34;
public const int hand = 35;
public const int lightsource = 45;
public const int back = 33;
public const int token = 43;
public const int waist = 37;
public const int foot = 39;
public const int lightsource = 45;
public const int tool = 40;
public const int toolbelt = 44;
public const int torso = 32;
public const int token = 43;
public const int finger = 36;
public const int neck = 31;
public static readonly int[] IDS = new int[16]
{
33, 34, 35, 45, 37, 38, 39, 40, 44, 41,
32, 43, 36, 31, 42, 30
34, 35, 33, 43, 37, 38, 39, 45, 40, 44,
41, 32, 36, 31, 42, 30
};
}SPELL
public const int miasma_Chaos = 50710;
public const int sword_Impact = 51015;
public const int sword_Chaos = 51010;
public const int funnel_Chaos = 50610;
public const int bolt_Impact = 50315;
public const int sword_Chaos = 51010;
public const int sword_Impact = 51015;
public const int flare_Chaos = 51210;
public const int puddle_Ether = 50912;
public const int SpTransmutePutit = 8791;
public const int SpTransmuteBroom = 8790;
public const int flare_Darkness = 51203;
public const int SpSpeedUp = 8510;
public const int SpTransmuteBroom = 8790;
public const int SpTransmutePutit = 8791;
public const int SpIncognito = 8780; 50413, 50513, 50613, 50713, 50813, 50913, 51013, 51113, 50115, 51214,
51114, 51014, 50914, 50814, 50612, 50714, 50514, 50414, 50314, 50515,
50114, 51213, 50614, 50512, 50412, 50312, 50910, 51115, 51215, 50116,
50810, 50710, 51015, 50610, 50410, 50310, 50110, 51209, 51109, 51009,
50510, 50315, 51010, 51210, 50815, 50112, 51211, 51111, 51011, 50911,
50810, 50710, 51010, 50610, 50410, 50310, 50110, 51209, 51109, 51009,
50510, 50315, 51015, 51210, 50815, 50112, 51211, 51111, 51011, 50911,
51110, 50811, 50611, 50511, 50411, 50311, 50915, 50111, 50711, 50912,
8791, 51203, 8503, 8502, 8501, 8500, 8491, 8490, 8480, 8471,
8790, 51203, 8503, 8502, 8501, 8500, 8491, 8490, 8480, 8471,
8470, 8450, 8430, 8406, 8405, 8404, 8403, 8504, 8402, 8506,
8510, 8790, 8780, 8776, 8775, 8770, 8710, 8708, 8707, 8706,
8510, 8791, 8780, 8776, 8775, 8770, 8710, 8708, 8707, 8706,
8705, 8704, 8702, 8700, 8555, 8550, 8507, 8401, 8400, 8390,
8202, 8201, 8200, 7800, 7010, 7009, 7008, 7007, 7006, 7005,
7004, 7003, 7002, 7001, 51116, 8215, 8220, 8221, 8230, 8380,ShopType
StrangeGirl,
Sweet,
Moyer,
Curry
Curry,
KeeperOfGarden
}SourceElement
public override void OnAfterImportData()
{
Core.SetCurrent();
map.Clear();
alias.Clear();
foreach (Row row in rows)
{
map[row.id] = row;public override void OnAfterImportData()
AddRow(ele, num + num2 + 1200, "flare_");
num2++;
}
initialized = false;
}
public void AddRow(Row ele, int id, string idOrg)ThingContainer
public ThingStack GetThingStack(string id, ThingStack s, bool isOrigin)
return s;
}
public int GetCurrency(string id, ref int sum, SourceMaterial.Row mat = null)
public long GetCurrency(string id, ref long sum, SourceMaterial.Row mat = null)
{
using (Enumerator enumerator = GetEnumerator())
{public int GetCurrency(string id, ref int sum, SourceMaterial.Row mat = null)
}
if (sum < 0)
{
sum = int.MaxValue;
sum = 2147483647L;
}
return sum;
}Trait
public void OnBarter(bool reroll = false)
Add("board_build", 1, 0);
Add("book_resident", 1, 0);
Add("board_party", 1, 0);
Add("board_party2", 1, 0);
Add("3", 1, 0);
Add("4", 1, 0);
Add("5", 1, 0);public void OnBarter(bool reroll = false)
break;
case ShopType.Moyer:
{
for (int num12 = 1; num12 <= 17; num12++)
for (int num13 = 1; num13 <= 17; num13++)
{
AddAdvWeek(num12);
AddAdvWeek(num13);
}
break;
}
case ShopType.KeeperOfGarden:
Add("1329", 1, 0);
break;
case ShopType.StrangeGirl:
{
int num13 = (EClass.debug.enable ? 20 : (EClass._zone.development / 10));
if (num13 > 0)
int num12 = (EClass.debug.enable ? 20 : (EClass._zone.development / 10));
if (num12 > 0)
{
Add("syringe_gene", num13, 0);
Add("syringe_gene", num12, 0);
Add("diary_little", 1, 0);
}
if (num13 > 10)
if (num12 > 10)
{
Add("syringe_heaven", num13 / 5, 0);
Add("syringe_heaven", num12 / 5, 0);
Add("1276", 1, 0);
}
Add("medal", 10, 0); }
return FromFilter("shop_drink");
case ShopType.Furniture:
case ShopType.KeeperOfGarden:
return FromFilter("shop_furniture");
case ShopType.Book:
return FromFilter("shop_book");TraitDeedDivorce
public override void TrySetHeldAct(ActPlan p)
{
Dialog.YesNo("dialogDivorce", delegate
{
EClass.pc.Say("use_whip", a, owner);
EClass.pc.Say("use_whip", EClass.pc, a, owner.Name);
a.Talk("death_other");
EClass.pc.PlaySound("whip");
a.PlayAnime(AnimeID.Shiver);TraitDeedLostRing
public override void TrySetHeldAct(ActPlan p)
{
p.TrySetAct("actReissue", delegate
{
EClass.pc.Say("use_whip", a, owner);
EClass.pc.Say("use_whip", a, a, owner.Name);
a.Talk("death_other");
EClass.pc.PlaySound("whip");
a.PlayAnime(AnimeID.Shiver);TraitGeneMachine
public override bool OnUse(Chara c)
Chara target = GetTarget();
if (target == null)
{
LayerPeople.CreateSelect("", "", delegate(UIList l)
LayerPeople.CreateSelect("", "", delegate(BaseList l)
{
foreach (Chara member in EClass.Branch.members)
{TraitGeneratorWheel
public override bool CanUse(Chara c)
public override bool OnUse(Chara c)
{
LayerPeople.CreateSelect("", "", delegate(UIList l)
LayerPeople.CreateSelect("", "", delegate(BaseList l)
{
foreach (Chara member in EClass.Branch.members)
{TraitKeeperOfGarden
public class TraitKeeperOfGarden : TraitUniqueChara
public override bool CanInvite => false;
public override bool CanChangeAffinity => false;
public override ShopType ShopType
{
get
{
if (!(EClass._zone is Zone_EternalGarden) && !EClass.game.IsSurvival)
{
return ShopType.None;
}
return ShopType.KeeperOfGarden;
}
}
public override CurrencyType CurrencyType => CurrencyType.Influence;
}TraitPartyBoard
public override void TrySetAct(ActPlan p)
{
if (EClass._zone.IsPCFaction)
{
p.TrySetAct("LayerPeople", () => LayerPeople.CreateParty(), owner);
p.TrySetAct("party_setup", delegate
{
LayerPeople.CreateParty();
return false;
}, owner);
}
}
}TraitWhipEgg
public override void TrySetHeldAct(ActPlan p)
{
p.TrySetAct("actWhip", delegate
{
EClass.pc.Say("use_whip", c, owner);
EClass.pc.Say("use_whip", EClass.pc, c, owner.Name);
EClass.pc.Say("use_scope2", c);
EClass.player.forceTalk = true;
EClass.pc.Talk("egg");TraitWhipLove
public override void TrySetHeldAct(ActPlan p)
{
p.TrySetAct("actWhip", delegate
{
EClass.pc.Say("use_whip", c, owner);
EClass.pc.Say("use_whip", EClass.pc, c, owner.Name);
EClass.pc.Say("use_scope2", c);
c.Talk("pervert2");
EClass.pc.PlaySound("whip");UIHomeInfo
b.button1.mainText.SetColor(a.GetFontColor());
if (a.onClick != null)
{
b.AddSubButton(EMono.core.refs.icons.go, a.onClick);
b.AddSubButton(EMono.core.refs.icons.go, a.onClick, null, null, "go");
}
b.Build();
if (a.onShowTooltip != null)UIMultiList
public class UIMultiList : MonoBehaviour
public Window[] windows;
public UIList[] lists;
public UIDynamicList[] lists;
public UIHeader[] headers;+UISearchPeople
File Created
using System.Collections.Generic;
using UnityEngine.UI;
public class UISearchPeople : EMono
{
public InputField inputSearch;
public UIButton buttonClearSearch;
public UIDropdown dropdown;
public ListOwner list;
public bool disable;
public float intervalSearch;
private int uidFilterZone = -1;
private float timerSearch;
private string lastSearch = "";
public void Init(ListOwner _list)
{
if (disable)
{
base.gameObject.SetActive(value: false);
return;
}
this.list = _list;
inputSearch.onValueChanged.AddListener(Search);
inputSearch.onSubmit.AddListener(Search);
List<int> list = new List<int> { -1 };
foreach (FactionBranch child in EMono.pc.faction.GetChildren())
{
list.Add(child.owner.uid);
}
dropdown.SetList(0, list, delegate(int a, int i)
{
object obj;
if (a != -1)
{
obj = EMono.game.spatials.Find(a)?.Name;
if (obj == null)
{
return "???";
}
}
else
{
obj = "all".lang();
}
return (string)obj;
}, delegate(int i, int a)
{
SE.ClickOk();
uidFilterZone = a;
this.list.List();
});
this.list.list.funcFilter = FuncFilter;
}
private void LateUpdate()
{
if (!disable && timerSearch > 0f)
{
timerSearch -= Core.delta;
if (timerSearch <= 0f)
{
Search(inputSearch.text);
}
}
}
public bool FuncFilter(object _c)
{
Chara chara = _c as Chara;
if (uidFilterZone != -1 && (chara.homeZone == null || chara.homeZone.uid != uidFilterZone))
{
return false;
}
if (!lastSearch.IsEmpty() && !chara.NameBraced.ToLower().Contains(lastSearch))
{
return false;
}
return true;
}
public void Search(string s)
{
s = s.ToLower();
if (s.IsEmpty())
{
s = "";
}
buttonClearSearch.SetActive(inputSearch.text != "");
if (!(s == lastSearch))
{
timerSearch = intervalSearch;
lastSearch = s;
Redraw();
}
}
public void ClearSearch()
{
inputSearch.text = "";
timerSearch = 0f;
lastSearch = "";
Redraw();
}
public void Redraw()
{
list.List();
}
}Zone_EternalGarden
public class Zone_EternalGarden : Zone_Civilized
{
public override void OnActivate()
{
base.OnActivate();
if (EClass._map.version.IsBelow(0, 23, 226))
{
SetBGM(121, refresh: false);
}
base.OnActivate();
int num = 0;
foreach (Chara chara in EClass._map.charas)
{
if (chara.id == "cat_silver" && !chara.IsPCFaction)
{
num++;
}
}
if (num > 0)
{
Msg.Say("num_silvercat", num.ToString() ?? "");
}
}
}Zone_LittleGarden
public class Zone_LittleGarden : Zone_Civilized
public override void OnRegenerate()
{
base.OnRegenerate();
base.development = (EClass.player.little_saved * 2 - EClass.player.little_dead * 3) * 10;
}
public override void OnActivate()
{
base.OnActivate();
int num = 0;
foreach (Chara chara in EClass._map.charas)
{
if (chara.id == "littleOne" && !chara.IsPCFaction)
{
num++;
}
}
if (num > 0)
{
Msg.Say("num_little", num.ToString() ?? "");
}
}
}Zone_Town
public class Zone_Town : Zone_Civilized
public override bool CanSpawnAdv => base.lv == 0;
public override bool AllowCriminal => false;
public override void OnRegenerate()
{
if (EClass.rnd(5) == 0)
{
Chara chara = CharaGen.Create("mad_rich");
chara.isSubsetCard = true;
EClass._zone.AddCard(chara, GetSpawnPos(chara));
}
}
}