EA 23.291 Nightly Patch 1
April 5, 2026
32 files modified. 2 new files created.
Important Changes
Possible breaking changes. Click the filename to view the chunk.
ConStrife (1)
public Dice GetDice() ConTransmuteMimic (4)
public override void SetOwner(Chara _owner, bool onDeserialize = false) public override void OnRemoved() public virtual void TrySetAct(ActPlan p)
public override void TrySetAct(ActPlan p) public virtual void RevealMimicry(Card c, bool surprise) ABILITY
public class ABILITY
{
public const int ActBurnMana = 6606;
public const int ActMoneyDump = 5058;
public const int ActRush = 6450;
public const int AI_PlayMusic = 6001;
public const int ActDuplicate = 6420;
public const int ActMoneyThrow = 5057;
public const int ActSuicide = 6410;
public const int ActMoneySlap = 5056;
public const int ActEscape = 6400;
public const int ActRestrain = 5055;
public const int ActPray = 6050;
public const int AI_Bladder = 5054;
public const int ActDreamBug = 6020;
public const int TaskHarvest = 5053;
public const int ActCrabBreathe = 6500;
public const int ActBash = 5052;
public const int ActParasite = 6019;
public const int ActZap = 5051;
public const int AI_SelfHarm = 6015;
public const int AI_Sleep = 5050;
public const int AI_PassTime = 6013;
public const int AI_OpenLock = 5049;
public const int ActQuickCraft = 6012;
public const int ActItem = 5048;
public const int AI_Steal = 6011;
public const int ActPick = 5047;
public const int AI_Meditate = 6003;
public const int ActInstall = 5046;
public const int AI_PlayMusic = 6001;
public const int AI_Drink = 5045;
public const int ActRide = 6018;
public const int ActChat = 5044;
public const int ActMoneyDump = 5058;
public const int AI_TendAnimal = 5043;
public const int ActCurse = 6600;
public const int ActKick = 5042;
public const int ActDraw = 6602;
public const int AI_Meditate = 6003;
public const int ActCatHuffing = 6627;
public const int AI_Read = 5041;
public const int ActGazeMana = 6623;
public const int AI_Steal = 6011;
public const int ActGazeMutation = 6622;
public const int AI_PassTime = 6013;
public const int ActGazeInsane = 6621;
public const int ActBurnMana = 6606;
public const int ActGazeDim = 6620;
public const int ActCrySad = 6605;
public const int ActTouchDrown = 6613;
public const int ActCryRage = 6604;
public const int ActNTR = 6603;
public const int ActDraw = 6602;
public const int ActEntangle = 6601;
public const int ActTouchSleep = 6612;
public const int ActCurse = 6600;
public const int ActWeaken = 6610;
public const int ActCrabBreathe = 6500;
public const int ActSlime = 6608;
public const int ActRush = 6450;
public const int ActBloodsuck = 6607;
public const int ActDuplicate = 6420;
public const int ActCrySad = 6605;
public const int ActSuicide = 6410;
public const int ActCryRage = 6604;
public const int ActEscape = 6400;
public const int ActNTR = 6603;
public const int ActPray = 6050;
public const int ActFear = 6611;
public const int ActDreamBug = 6020;
public const int ActMoneyThrow = 5057;
public const int ActParasite = 6019;
public const int ActMoneySlap = 5056;
public const int ActRide = 6018;
public const int ActRestrain = 5055;
public const int AI_SelfHarm = 6015;
public const int TaskBuild = 5035;
public const int ActQuickCraft = 6012;
public const int GoalIdle = 5034;
public const int ActSlime = 6608;
public const int ActCancelTask = 5033;
public const int ActRanged = 5040;
public const int AI_Equip = 5032;
public const int ActThrow = 5038;
public const int AI_Deconstruct = 5031;
public const int TaskPlow = 5014;
public const int AI_ReleaseHeld = 5030;
public const int TaskAttack = 5015;
public const int TaskMoveInstalled = 5036;
public const int TaskTame = 5016;
public const int TaskTalk = 5017;
public const int TaskPick = 5018;
public const int TaskReadBoard = 5019;
public const int TaskFarm = 5020;
public const int TaskTrain = 5021;
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_Offer = 5029;
public const int TaskGoOut = 5023;
public const int ActNoItem = 5037;
public const int AI_ReleaseHeld = 5030;
public const int ActThrow = 5038;
public const int ActAttack = 5013;
public const int AI_Fish = 5039;
public const int AI_Bladder = 5054;
public const int AI_Goto = 5012;
public const int TaskHarvest = 5053;
public const int TaskDig = 5010;
public const int ActBash = 5052;
public const int ActNoItem = 5037;
public const int ActZap = 5051;
public const int TaskMoveInstalled = 5036;
public const int AI_Sleep = 5050;
public const int TaskBuild = 5035;
public const int AI_OpenLock = 5049;
public const int GoalIdle = 5034;
public const int ActItem = 5048;
public const int ActCancelTask = 5033;
public const int ActPick = 5047;
public const int AI_Equip = 5032;
public const int ActInstall = 5046;
public const int AI_Deconstruct = 5031;
public const int AI_Drink = 5045;
public const int ActWait = 5000;
public const int ActChat = 5044;
public const int ActMelee = 5001;
public const int AI_TendAnimal = 5043;
public const int Melee = 5002;
public const int ActKick = 5042;
public const int Ranged = 5003;
public const int AI_Read = 5041;
public const int Sleep = 5004;
public const int ActRanged = 5040;
public const int Wait = 5005;
public const int ActKiss = 6628;
public const int Shoot = 5006;
public const int ActDeepKiss = 6629;
public const int Use = 5007;
public const int ActDrainBlood = 6626;
public const int General = 5008;
public const int ActScream = 6631;
public const int TaskMine = 5009;
public const int TaskReadBoard = 5019;
public const int TaskCut = 5011;
public const int TaskFarm = 5020;
public const int ActWeaken = 6610;
public const int breathe_Void = 50216;
public const int ActBloodsuck = 6607;
public const int breathe_Impact = 50215;
public const int ActTouchSleep = 6612;
public const int breathe_Cut = 50214;
public const int SongValor = 6752;
public const int breathe_Acid = 50213;
public const int SongEnd = 6753;
public const int TaskPick = 5018;
public const int ActManaAbsorb = 6900;
public const int breathe_Ether = 50212;
public const int ActJureHeal = 6901;
public const int breathe_Chaos = 50210;
public const int ActLulwyTrick = 6902;
public const int breathe_Holy = 50209;
public const int ActKizuamiTrick = 6903;
public const int breathe_Nerve = 50208;
public const int ActHeadpat = 6904;
public const int breathe_Sound = 50207;
public const int breathe_ = 7000;
public const int breathe_Nether = 50206;
public const int SpTransmuteBat = 8793;
public const int ActInsult = 6630;
public const int SpTransmuteMimic = 8794;
public const int breathe_Magic = 50211;
public const int ActFear = 6611;
public const int TaskTalk = 5017;
public const int SpTransmuteHuman = 8796;
public const int TaskTame = 5016;
public const int breathe_Fire = 50200;
public const int TaskAttack = 5015;
public const int breathe_Cold = 50201;
public const int ActWait = 5000;
public const int breathe_Lightning = 50202;
public const int ActMelee = 5001;
public const int breathe_Darkness = 50203;
public const int Melee = 5002;
public const int breathe_Mind = 50204;
public const int Ranged = 5003;
public const int breathe_Poison = 50205;
public const int Sleep = 5004;
public const int breathe_Nether = 50206;
public const int Wait = 5005;
public const int breathe_Sound = 50207;
public const int Shoot = 5006;
public const int breathe_Nerve = 50208;
public const int Use = 5007;
public const int breathe_Holy = 50209;
public const int General = 5008;
public const int breathe_Chaos = 50210;
public const int TaskMine = 5009;
public const int breathe_Magic = 50211;
public const int TaskDig = 5010;
public const int breathe_Ether = 50212;
public const int TaskCut = 5011;
public const int breathe_Acid = 50213;
public const int AI_Goto = 5012;
public const int breathe_Cut = 50214;
public const int ActAttack = 5013;
public const int breathe_Impact = 50215;
public const int TaskPlow = 5014;
public const int breathe_Void = 50216;
public const int breathe_Mind = 50204;
public const int SongTulip = 6751;
public const int breathe_Darkness = 50203;
public const int SongSleep = 6750;
public const int breathe_Poison = 50205;
public const int SpTransmuteShadow = 8795;
public const int breathe_Cold = 50201;
public const int StTaunt = 6700;
public const int ActSummonSpecial = 6800;
public const int ActTouchDrown = 6613;
public const int breathe_Lightning = 50202;
public const int StManaCost = 6720;
public const int ActWhirlwind = 6666;
public const int ActGazeDim = 6620;
public const int ActBladeStorm2 = 6665;
public const int ActGazeInsane = 6621;
public const int ActBladeStorm = 6664;
public const int ActGazeMutation = 6622;
public const int ActMultiHit = 6663;
public const int ActGazeMana = 6623;
public const int ActWombDark = 6801;
public const int ActDrainBlood = 6626;
public const int TaskTrain = 5021;
public const int ActCatHuffing = 6627;
public const int ActThrowPotion = 6661;
public const int ActKiss = 6628;
public const int ActDropMine = 6660;
public const int ActDeepKiss = 6629;
public const int ActNeckHunt = 6650;
public const int ActInsult = 6630;
public const int ActStealMoney = 6642;
public const int ActScream = 6631;
public const int ActStealFood = 6641;
public const int ActSteal = 6640;
public const int ActSwarm = 6662;
public const int ActDeathSentense = 6802;
public const int ActMissileBarrage = 6667;
public const int StManaCost = 6720;
public const int breathe_Fire = 50200;
public const int SpTransmuteShadow = 8795;
public const int ActStealMoney = 6642;
public const int SpTransmuteMimic = 8794;
public const int ActSteal = 6640;
public const int SpTransmuteBat = 8793;
public const int ActDropMine = 6660;
public const int StTaunt = 6700;
public const int ActThrowPotion = 6661;
public const int ActHeadpat = 6904;
public const int ActSwarm = 6662;
public const int ActKizuamiTrick = 6903;
public const int ActMultiHit = 6663;
public const int breathe_ = 7000;
public const int ActBladeStorm = 6664;
public const int ActJureHeal = 6901;
public const int ActBladeStorm2 = 6665;
public const int ActManaAbsorb = 6900;
public const int ActWhirlwind = 6666;
public const int SongEnd = 6753;
public const int ActNeckHunt = 6650;
public const int SongValor = 6752;
public const int ActMissileBarrage = 6667;
public const int SongTulip = 6751;
public const int ActSummonSpecial = 6800;
public const int SongSleep = 6750;
public const int ActWombDark = 6801;
public const int ActLulwyTrick = 6902;
public const int ActDeathSentense = 6802;
public static readonly int[] IDS = new int[144]
public static readonly int[] IDS = new int[145]
{
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
5058, 6001, 5057, 5056, 5055, 5054, 5053, 5052, 5051, 5050,
5049, 5048, 5047, 5046, 5045, 5044, 5043, 5042, 6003, 5041,
6011, 6013, 6606, 6605, 6604, 6603, 6602, 6601, 6600, 6500,
6450, 6420, 6410, 6400, 6050, 6020, 6019, 6018, 6015, 6012,
6608, 5040, 5038, 5014, 5015, 5016, 5017, 5018, 5019, 5020,
5021, 5022, 5023, 5024, 5025, 5026, 5027, 5028, 5029, 5030,
5013, 5039, 5012, 5010, 5037, 5036, 5035, 5034, 5033, 5032,
5031, 5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008,
5009, 5011, 6610, 6607, 6612, 6752, 6753, 6900, 6901, 6902,
6903, 6904, 7000, 8793, 8794, 6611, 8796, 50200, 50201, 50202,
50203, 50204, 50205, 50206, 50207, 50208, 50209, 50210, 50211, 50212,
50213, 50214, 50215, 50216, 6751, 6750, 8795, 6700, 6613, 6720,
6620, 6621, 6622, 6623, 6626, 6627, 6628, 6629, 6630, 6631,
6641, 6642, 6640, 6660, 6661, 6662, 6663, 6664, 6665, 6666,
6650, 6667, 6800, 6801, 6802
};
}
public class Ability : ActACT
public virtual bool ShowMouseHint(Card c)
public virtual bool IsValidTC(Card c)
{
if (!c.isChara || (c.Chara.mimicry != null && !c.IsPCParty))
if (!c.isChara || (c.Chara.mimicry != null && !c.Chara.mimicry.IsChara && !c.IsPCParty))
{
return c.trait.CanBeAttacked;
}public bool Perform(Chara _cc, Card _tc = null, Point _tp = null)
{
return false;
}
if (_cc.mimicry != null && ShouldEndMimicry)
if (_cc.mimicry != null && ShouldEndMimicry && _cc.mimicry.ShouldEndMimicry(this))
{
_cc.mimicry.Kill();
}public bool CanPerform(Chara _cc, Card _tc = null, Point _tp = null)
}
}
}
if (!(this is ActMelee) && tt.Range == TargetRange.Chara && (TC == null || !CC.CanSee(TC) || (TC.Chara?.mimicry != null && CC.IsPC && !TC.IsPCParty)))
if (!(this is ActMelee) && tt.Range == TargetRange.Chara && (TC == null || !CC.CanSee(TC) || (TC.Chara?.mimicry != null && TC.Chara.mimicry.IsThing && CC.IsPC && !TC.IsPCParty)))
{
return false;
}AIAct
owner.PickHeld();
}
}
if (owner.mimicry != null && ShouldEndMimicry)
if (owner.mimicry != null && ShouldEndMimicry && owner.mimicry.ShouldEndMimicry(this))
{
owner.mimicry.Kill();
}AI_Idle
public override IEnumerable<Status> Run()
}
}
}
if (!EClass._zone.IsRegion && owner.HasElement(1425) && EClass.rnd(5) == 0 && owner.mimicry == null)
if (!EClass._zone.IsRegion)
{
owner.UseAbility(8794, owner);
if (EClass.rnd(5) == 0 && owner.HasElement(1425) && owner.mimicry == null)
{
owner.UseAbility(8794, owner);
}
if (EClass.rnd(25) == 0 && owner.HasElement(1427) && owner.mimicry == null)
{
owner.UseAbility(8796, owner);
}
}
Party party = owner.party;
if (party == null || party.leader == owner || !party.leader.IsAliveInCurrentZone || owner.host != null || !EClass._zone.PetFollow)public override IEnumerable<Status> Run()
string aiIdle = owner.source.aiIdle;
if (!(aiIdle == "stand") && !(aiIdle == "root"))
{
if (EClass.rnd(15) == 0 && owner.mimicry == null)
if (EClass.rnd(15) == 0 && (owner.mimicry == null || owner.mimicry.IsChara))
{
owner.MoveRandom();
}AM_Adv
public override void OnRenderTile(Point point, HitResult result, int dir)
}
foreach (Chara chara in EClass._map.charas)
{
if (chara.isSynced && chara.IsHostile(EClass.pc) && !chara.IsMultisize && EClass.pc.CanSee(chara) && chara.mimicry == null)
if (chara.isSynced && chara.IsHostile(EClass.pc) && !chara.IsMultisize && EClass.pc.CanSee(chara) && (chara.mimicry == null || !chara.mimicry.IsThing))
{
Vector3 vector = chara.pos.Position();
EClass.screen.guide.passGuideFloor.Add(vector.x, vector.y, vector.z - 0.01f, 23f, 0.3f);ActPlan
public void _Update(PointTarget target)
int num = c2.Dist(EClass.pc);
if (num <= 1 || !EClass.pc.isBlind)
{
if (c2.mimicry != null && !c2.IsPCParty)
if (c2.mimicry != null && c2.mimicry.IsThing && !c2.IsPCParty)
{
if (num <= 1)
{public void _Update(PointTarget target)
items.ForeachReverse(delegate(Card _c)
{
Chara c = _c.Chara;
if (c != null && (c.mimicry == null || c.IsPCParty))
if (c != null && (c.mimicry == null || c.mimicry.IsChara || c.IsPCParty))
{
bool flag3 = EClass.pc.CanSee(c);
if (flag3) {
hotItem.TrySetAct(this);
}
bool flag = EClass.game.config.autoCombat.enable && EClass.scene.mouseTarget.TargetChara != null && EClass.scene.mouseTarget.TargetChara.mimicry == null;
bool flag = EClass.game.config.autoCombat.enable && EClass.scene.mouseTarget.TargetChara != null && (EClass.scene.mouseTarget.TargetChara.mimicry == null || EClass.scene.mouseTarget.TargetChara.mimicry.IsChara);
if (hotItem.Thing != null && hotItem.Thing.trait.DisableAutoCombat)
{
flag = false;ActRush
public override bool CanPerform()
{
return false;
}
if (Act.TC.Chara?.mimicry != null)
if (Act.TC.Chara?.mimicry != null && Act.TC.Chara.mimicry.IsThing)
{
return false;
}ActThrow
public static EffectIRenderer Throw(Card c, Point p, Card target, Thing t, Throw
{
Msg.Say("shatter");
}
if (Act.TC?.Chara?.mimicry != null)
if (Act.TC?.Chara?.mimicry != null && Act.TC.Chara.mimicry.ShouldRevealOnContact)
{
Act.TC.Chara.mimicry.RevealMimicry(c, surprise: false);
}AttackProcess
public long GetRawDamage(float dmgMulti, bool crit, bool maxRoll)
dMulti *= 1.25f;
}
}
int num2 = CC.Evalue(1355);
ConStrife condition = CC.GetCondition<ConStrife>();
if (condition != null)
{
num += condition.GetDice().Roll();
}
else if (num2 > 0)
if (CC.Evalue(1355) > 0)
{
num++;
}
num = (long)(dMulti * (float)num * dmgMulti);
return (long)Mathf.Clamp(num, 0f, 100000000f);
long num2 = 99999999L;
ConStrife condition = CC.GetCondition<ConStrife>();
if (condition != null)
{
num = num * (100 + condition.lv * 10) / 100;
num2 = num2 * (100 + condition.lv * 5) / 100;
}
return (long)Mathf.Clamp(num, 0f, num2);
}
public static void ProcShieldEncs(Chara CC, Card TC, int mtpChance = 100)BaseTileMap
public virtual void DrawTile()
}
if (chara != EMono.pc && chara != LayerDrama.alwaysVisible)
{
if (chara.mimicry != null)
if (chara.mimicry != null && chara.mimicry.IsThing)
{
if (flag3 || fogged || !this.cell.isSeen)
{Card
public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
{
int num5 = 0;
int num6 = 0;
foreach (Condition condition2 in Chara.conditions)
foreach (Condition condition3 in Chara.conditions)
{
if (condition2.Type == ConditionType.Buff)
if (condition3.Type == ConditionType.Buff)
{
num5++;
}
else if (condition2.Type == ConditionType.Debuff)
else if (condition3.Type == ConditionType.Debuff)
{
num6++;
}public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
{
dmg = 0L;
}
if (dmg > 99999999)
long num9 = 99999999L;
ConStrife condition = GetCondition<ConStrife>();
if (condition != null)
{
dmg = 99999999L;
num9 = num9 * (100 + condition.lv * 5) / 100;
}
float num9 = Mathf.Clamp(dmg * 6 / MaxHP, 0f, 4f) + (float)((dmg > 0) ? 1 : 0);
int num10 = hp;
if (dmg > num9)
{
dmg = num9;
}
float num10 = Mathf.Clamp(dmg * 6 / MaxHP, 0f, 4f) + (float)((dmg > 0) ? 1 : 0);
int num11 = hp;
if (Evalue(1421) > 0)
{
long num11 = 0L;
long num12 = dmg;
long num12 = 0L;
long num13 = dmg;
if (hp > 0)
{
num12 = dmg - hp;
num13 = dmg - hp;
hp -= (int)dmg;
num11 += dmg;
num12 += dmg;
if (hp < 0 && Chara.mana.value >= 0)
{
num11 += hp;
num12 += hp;
hp = 0;
}
}public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
{
if (Evalue(1421) >= 2)
{
num12 /= 2;
num13 /= 2;
}
dmg = num12;
dmg = num13;
if (Chara.mana.value > 0)
{
num12 -= Chara.mana.value;
num13 -= Chara.mana.value;
Chara.mana.value -= (int)dmg;
num11 += dmg;
num12 += dmg;
}
if (Chara.mana.value <= 0)
{
hp -= (int)num12;
num11 += num12;
hp -= (int)num13;
num12 += num13;
}
}
dmg = num11;
dmg = num12;
}
else
{public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
if (origin != null && origin != this && Evalue(436) > 0 && !HasCondition<ConFractured>())
{
int half = (HasElement(1218) ? MaxHP : (MaxHP / 2));
if (num10 > half)
if (num11 > half)
{
EvadeDeath(delegate
{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_1075;
goto IL_1092;
}
}
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_1075;
goto IL_1092;
}
}
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_1075;
IL_1075:
goto IL_1092;
IL_1092:
if (trait.CanBeAttacked)
{
renderer.PlayAnime(AnimeID.HitObj);public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
}
else if ((attackSource == AttackSource.Melee || attackSource == AttackSource.Range) && origin != null && originalTarget == null)
{
(IsPC ? EClass.pc : origin).Say("dmgMelee" + num9 + (IsPC ? "pc" : ""), origin, this);
(IsPC ? EClass.pc : origin).Say("dmgMelee" + num10 + (IsPC ? "pc" : ""), origin, this);
}
else if (isChara)
{
int num13 = ((attackSource != AttackSource.Condition && attackSource != AttackSource.WeaponEnchant) ? 1 : 2);
if (num9 >= (float)num13)
int num14 = ((attackSource != AttackSource.Condition && attackSource != AttackSource.WeaponEnchant) ? 1 : 2);
if (num10 >= (float)num14)
{
if (e != Element.Void)
{
Say("dmg_" + e.source.alias, this);
}
if (e == Element.Void || num9 >= 2f)
if (e == Element.Void || num10 >= 2f)
{
Say("dmg" + num9, this);
Say("dmg" + num10, this);
}
}
}
onEvade?.Invoke();
if (isChara)
{
if (Chara.mimicry != null)
if (Chara.mimicry != null && Chara.mimicry.ShouldRevealOnDamage)
{
Chara.RemoveCondition<ConTransmuteMimic>();
Chara.mimicry.RevealMimicry(origin, surprise: false);
}
foreach (Condition condition3 in Chara.conditions)
foreach (Condition condition4 in Chara.conditions)
{
(condition3 as ConPeaky)?.OnHit();
(condition4 as ConPeaky)?.OnHit();
}
if (flag2)
{public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
}
if (attackSource == AttackSource.Melee || attackSource == AttackSource.Range)
{
int num14 = origin.Dist(this);
if (attackSource == AttackSource.Melee && HasElement(1221) && num14 <= Evalue(1221))
int num15 = origin.Dist(this);
if (attackSource == AttackSource.Melee && HasElement(1221) && num15 <= Evalue(1221))
{
int ele2 = ((Chara.MainElement == Element.Void) ? 924 : Chara.MainElement.id);
if (id == "hedgehog_ether")public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
Say("reflect_thorne", origin, this);
origin.DamageHP((int)Mathf.Clamp(dmg / 10, 1f, MaxHP / (origin.IsPowerful ? 200 : 20)), ele2, Power, AttackSource.Condition, this);
}
if (HasElement(1223) && num14 <= Evalue(1223))
if (HasElement(1223) && num15 <= Evalue(1223))
{
int ele3 = ((Chara.MainElement == Element.Void) ? 923 : Chara.MainElement.id);
Say("reflect_acid", this, origin);public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
}
}
}
int num15 = ((EClass.rnd(2) == 0) ? 1 : 0);
int num16 = ((EClass.rnd(2) == 0) ? 1 : 0);
if (attackSource == AttackSource.Condition)
{
num15 = 1 + EClass.rnd(2);
num16 = 1 + EClass.rnd(2);
}
if (num15 > 0)
if (num16 > 0)
{
bool flag3 = Chara.HasCondition<ConPoison>() || ((e.id == 915 || e.id == 923) && ResistLv(Evalue(955)) < 4);
AddBlood(num15, flag3 ? 6 : (-1));
AddBlood(num16, flag3 ? 6 : (-1));
}
if (dmg > 0 || (origin != null && origin.HasElement(1345)))
{public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
}
if (IsPC)
{
float num16 = (float)hp / (float)MaxHP;
float num17 = (float)hp / (float)MaxHP;
if (Evalue(1421) > 0)
{
num16 = (float)Chara.mana.value / (float)Chara.mana.max;
num17 = (float)Chara.mana.value / (float)Chara.mana.max;
}
if (num16 < 0.3f)
if (num17 < 0.3f)
{
PlaySound("heartbeat", 1f - num16 * 2f);
PlaySound("heartbeat", 1f - num17 * 2f);
}
}
if (!IsPC && hp < MaxHP / 5 && Evalue(423) <= 0 && dmg * 100 / MaxHP + 10 > EClass.rnd(IsPowerful ? 400 : 150) && !HasCondition<ConFear>())public void DamageHP(long dmg, int ele, int eleP = 100, AttackSource attackSourc
}
if (Chara.HasCondition<ConWeapon>())
{
ConWeapon condition = Chara.GetCondition<ConWeapon>();
if (e.source.aliasRef == condition.sourceElement.aliasRef)
ConWeapon condition2 = Chara.GetCondition<ConWeapon>();
if (e.source.aliasRef == condition2.sourceElement.aliasRef)
{
condition.Mod(-1);
condition2.Mod(-1);
}
}
if (Chara.HasElement(1222) && (dmg >= MaxHP / 10 || EClass.rnd(20) == 0)) int valueOrDefault2 = (origin.Evalue(661) + weapon?.Evalue(661, ignoreGlobalElement: true)).GetValueOrDefault();
if (valueOrDefault > 0 && attackSource == AttackSource.Melee && origin.isChara && !origin.Chara.ignoreSPAbsorb && Chara.IsHostile(origin as Chara))
{
int num17 = EClass.rnd(3 + (int)Mathf.Clamp(dmg / 100, 0f, valueOrDefault / 10));
origin.Chara.stamina.Mod(num17);
int num18 = EClass.rnd(3 + (int)Mathf.Clamp(dmg / 100, 0f, valueOrDefault / 10));
origin.Chara.stamina.Mod(num18);
if (IsAliveInCurrentZone)
{
Chara.stamina.Mod(-num17);
Chara.stamina.Mod(-num18);
}
}
if (origin.HasElement(1350) && attackSource == AttackSource.Melee)
{
int num18 = EClass.rndHalf(2 + (int)Mathf.Clamp(dmg / 10, 0f, origin.Chara.GetPietyValue() + 10));
origin.Chara.mana.Mod(num18);
int num19 = EClass.rndHalf(2 + (int)Mathf.Clamp(dmg / 10, 0f, origin.Chara.GetPietyValue() + 10));
origin.Chara.mana.Mod(num19);
if (IsAliveInCurrentZone)
{
Chara.mana.Mod(-num18);
Chara.mana.Mod(-num19);
}
}
if (valueOrDefault2 > 0 && attackSource == AttackSource.Melee)
{
int num19 = EClass.rnd(2 + (int)Mathf.Clamp(dmg / 10, 0f, valueOrDefault2 + 10));
origin.Chara.mana.Mod(num19);
int num20 = EClass.rnd(2 + (int)Mathf.Clamp(dmg / 10, 0f, valueOrDefault2 + 10));
origin.Chara.mana.Mod(num20);
if (IsAliveInCurrentZone)
{
Chara.mana.Mod(-num19);
Chara.mana.Mod(-num20);
}
}
}public void Kick(Chara t, bool ignoreSelf = false, bool karmaLoss = true, bool s
EClass.player.ModKarma(-1);
}
t.PlayEffect("kick");
t.mimicry?.RevealMimicry(this, surprise: false);
if (t.mimicry != null && t.mimicry.ShouldRevealOnContact)
{
t.mimicry.RevealMimicry(this, surprise: false);
}
}
public int ResistLvFrom(int ele)public virtual int GetPrice(CurrencyType currency = CurrencyType.Money, bool sel
}
break;
case CurrencyType.Money2:
if (id == "water_jure")
{
string text = id;
if (!(text == "mathammer"))
{
return 1000;
if (!(text == "water_jure"))
{
break;
}
return 2000;
}
break;
return 50 + material.tier * material.tier * 10;
}
case CurrencyType.Ecopo:
switch (id)
{Chara
public class Chara : Card, IPathfindWalker
public ConSuspend conSuspend;
public ConTransmuteMimic mimicry;
public ConBaseTransmuteMimic mimicry;
public Emo2 emoIcon;public override string GetName(NameStyle style, int num = -1)
{
if (mimicry != null)
{
return mimicry.thing.GetName(style, num);
return mimicry.GetName(style, num);
}
if (base.isBackerContent && EClass.core.config.backer.Show(base.c_idBacker))
{ chara.hp = (int)Mathf.Clamp((float)chara.MaxHP * ((float)base.hp / (float)MaxHP) * 0.99f, 0f, chara.MaxHP);
chara.isCopy = true;
chara.isScaled = base.isScaled;
chara.c_altName = base.c_altName;
chara._alias = _alias;
if (HaveFur())
{
chara.c_fur = -1;public override MoveResult _Move(Point newPoint, MoveType type = MoveType.Walk)
{
if (item.mimicry != null && item.IsHostile(this))
{
item.mimicry.RevealMimicry(this, surprise: true);
if (item.mimicry.ShouldRevealOnPush)
{
item.mimicry.RevealMimicry(this, surprise: true);
}
return MoveResult.Event;
}
}public void HoldCard(Card t, int num = -1)
}
}
held = t;
held._CreateRenderer();
if (held.GetLightRadius() > 0)
{
RecalculateFOV();public override void Die(Element e = null, Card origin = null, AttackSource atta
if (origin.IsPCParty || origin.IsPCPartyMinion)
{
int num = 0;
if (OriginalHostility >= Hostility.Friend && IsHuman && !base.IsPCFactionOrMinion)
if (trait is TraitMerchantTravel)
{
num = -20;
}
else if (OriginalHostility >= Hostility.Friend && IsHuman && !base.IsPCFactionOrMinion)
{
num = -5;
} {
return false;
}
if (mimicry != null)
if (mimicry != null && mimicry.IsThing)
{
return false;
} for (int i = 0; i < EClass._map.charas.Count; i++)
{
Chara chara2 = EClass._map.charas[i];
if (chara2 == this || !IsHostile(chara2) || !CanSee(chara2) || chara2.mimicry != null)
if (chara2 == this || !IsHostile(chara2) || !CanSee(chara2) || (chara2.mimicry != null && chara2.mimicry.IsThing))
{
continue;
}public bool FindNearestNewEnemy()
for (int i = 0; i < EClass._map.charas.Count; i++)
{
Chara chara = EClass._map.charas[i];
if (chara != this && chara != enemy && chara.mimicry == null && IsHostile(chara) && Dist(chara) <= 1 && CanInteractTo(chara.pos))
if (chara != this && chara != enemy && (chara.mimicry == null || !chara.mimicry.IsThing) && IsHostile(chara) && Dist(chara) <= 1 && CanInteractTo(chara.pos))
{
DoHostileAction(chara);
enemy = chara;public override void SetRenderParam(RenderParam p)
public override string GetHoverText()
{
if (mimicry != null)
if (mimicry != null && mimicry.IsThing)
{
return mimicry.thing.GetHoverText();
return mimicry.GetHoverText();
}
string text = base.Name;
string text = ((mimicry != null) ? mimicry.GetName(NameStyle.Full) : base.Name);
if (IsFriendOrAbove())
{
text = text.TagColor(EClass.Colors.colorFriend);public override string GetHoverText()
public override string GetHoverText2()
{
if (mimicry != null)
if (mimicry != null && mimicry.IsThing)
{
return mimicry.thing.GetHoverText2();
return mimicry.GetHoverText2();
}
string text = "";
if (knowFav)public override string GetHoverText2()
int num = 0;
foreach (BaseStats item3 in enumerable)
{
if (item3 is ConBaseTransmuteMimic)
{
continue;
}
string text4 = item3.GetPhaseStr();
if (text4.IsEmpty() || text4 == "#")
{+ConBaseTransmuteMimic
File Created
public class ConBaseTransmuteMimic : ConTransmute
{
public virtual Card Card => null;
public override bool HasDuration => false;
public virtual bool ShouldRevealOnContact => true;
public virtual bool ShouldRevealOnPush => true;
public virtual bool ShouldRevealOnDamage => true;
public virtual bool IsThing => Card.isThing;
public virtual bool IsChara => Card.isChara;
public override void SetOwner(Chara _owner, bool onDeserialize = false)
{
base.SetOwner(_owner);
owner.mimicry = this;
}
public override void OnRemoved()
{
owner.mimicry = null;
base.OnRemoved();
}
public virtual void RevealMimicry(Card c, bool surprise)
{
if (c != null && owner.IsHostile(c.Chara))
{
owner.DoHostileAction(c, immediate: true);
}
if (surprise)
{
owner.AddCondition<ConAmbush>();
}
Kill();
}
public virtual string GetName(NameStyle style, int num = -1)
{
return Card.GetName(style, num);
}
public virtual string GetHoverText()
{
return Card.GetHoverText();
}
public virtual string GetHoverText2()
{
return Card.GetHoverText2();
}
public virtual void TrySetAct(ActPlan p)
{
}
public virtual bool ShouldEndMimicry(Act act)
{
return true;
}
}ConStrife
public class ConStrife : BaseBuff
{
[JsonProperty]
private ElementContainer ec = new ElementContainer();
[JsonProperty]
public int exp;public override bool CanStack(Condition c)
return true;
}
public override ElementContainer GetElementContainer()
{
return ec;
}
public void AddKill(Chara c)
{
if (!owner.IsPC)
{
return;
}
if (c.IsPCFactionOrMinion)
{
if (c.IsMinion) }
while (exp >= ExpToNext)
{
if (lv >= 5)
{
exp = ExpToNext;
break;
}
exp -= ExpToNext;
lv++;
ec.SetBase(964, (lv >= 3) ? ((lv - 2) * 5) : 0);
ec.SetBase(662, lv * 10);
TryApplyParty();
}
SetTurn();
}
public Dice GetDice()
{
return new Dice(1, 1 + Mathf.Min(lv, 10) * 2);
}
public void SetTurn()
{
turn = Mathf.Max(100 - lv * 10, 10);
public override void Tick()
{
if (!owner.IsPC)
{
SyncPC();
return;
}
turn--;
if (turn < 0)
{ Kill();
}
}
else
{
TryApplyParty();
}
}
public void TryApplyParty()
{
if (lv < 2 || !owner.IsPC)
{
return;
}
foreach (Chara member in EClass.pc.party.members)
{
if (!member.HasCondition<ConStrife>())
{
(member.AddCondition<ConStrife>() as ConStrife)?.SyncPC();
}
}
}
public void SyncPC()
{
ConStrife condition = EClass.pc.GetCondition<ConStrife>();
if (condition == null || condition.lv < 2)
{
turn = 0;
Kill();
return;
}
turn = condition.turn;
lv = condition.lv;
exp = condition.exp;
ec.SetBase(964, condition.ec.GetOrCreateElement(964).vBase);
ec.SetBase(662, condition.ec.GetOrCreateElement(662).vBase);
}
public override void OnWriteNote(List<string> list)
{
list.Add("hintStrife".lang(lv.ToString() ?? "", exp + "/" + ExpToNext, GetDice().ToString()));
list.Add("hintStrife".lang(lv.ToString() ?? "", exp + "/" + ExpToNext));
list.Add("hintStrife2".lang((lv * 10).ToString() ?? "", (lv * 5).ToString() ?? "").TagColorGoodBad(() => true));
foreach (Element e in ec.dict.Values)
{
if (e.IsFlag)
{
list.Add(e.Name.TagColorGoodBad(() => e.Value >= 0));
}
else if (elements != null && elements.Has(e.id) && elements.Value(e.id) != e.Value)
{
list.Add("modValue".lang(e.Name, ((e.Value < 0) ? "" : "+") + elements.Value(e.id) + (e.source.tag.Contains("ratio") ? "%" : "") + " (" + e.Value + ")").TagColor(() => e.Value >= 0));
}
else
{
list.Add("modValue".lang(e.Name, ((e.Value < 0) ? "" : "+") + e.Value + (e.source.tag.Contains("ratio") ? "%" : "")).TagColorGoodBad(() => e.Value >= 0));
}
}
if (lv >= 2)
{
list.Add("hintStrife3".lang().TagColorGoodBad(() => true));
}
}
public override void SetOwner(Chara _owner, bool onDeserialize = false)
{
base.SetOwner(_owner);
ec.SetParent(owner);
}
public override void OnRemoved()
{
ec.SetParent();
}
}+ConTransmuteHuman
File Created
using System.Collections.Generic;
using Newtonsoft.Json;
public class ConTransmuteHuman : ConBaseTransmuteMimic
{
[JsonProperty]
public Chara chara;
public override Card Card => chara;
public override bool HasDuration => false;
public override bool ShouldRevealOnContact => false;
public override bool ShouldRevealOnPush => false;
public override bool ShouldRevealOnDamage => (float)EClass.rnd(50) > (float)owner.hp / (float)owner.MaxHP * 100f;
public override bool ShouldEndMimicry(Act act)
{
return false;
}
public override RendererReplacer GetRendererReplacer()
{
return RendererReplacer.CreateFrom(chara.id);
}
public override void OnBeforeStart()
{
List<Chara> list = owner.pos.ListCharasInRadius(owner, 5, delegate(Chara c)
{
if (c.IsHumanSpeak)
{
CardRenderer renderer = c.renderer;
if (renderer != null && !renderer.hasActor)
{
return !c.HasElement(1427);
}
}
return false;
});
if (list.Count > 0)
{
chara = list.RandomItem().Duplicate();
}
else
{
chara = CharaGen.CreateFromFilter("c_guest");
}
base.OnBeforeStart();
}
}ConTransmuteMimic
using System.Collections.Generic;
using System.Collections.Generic;
using Newtonsoft.Json;
public class ConTransmuteMimic : ConTransmute
public class ConTransmuteMimic : ConBaseTransmuteMimic
{
[JsonProperty]
public Thing thing;
public override bool HasDuration => false;
public override Card Card => thing;
public override RendererReplacer GetRendererReplacer()
{public override void OnBeforeStart()
base.OnBeforeStart();
}
public override void SetOwner(Chara _owner, bool onDeserialize = false)
{
base.SetOwner(_owner);
owner.mimicry = this;
}
public override void OnRemoved()
{
owner.mimicry = null;
base.OnRemoved();
}
public virtual void TrySetAct(ActPlan p)
public override void TrySetAct(ActPlan p)
{
if (thing.IsContainer)
{public virtual void TrySetAct(ActPlan p)
}, owner, CursorSystem.Container);
}
}
public virtual void RevealMimicry(Card c, bool surprise)
{
if (owner.IsHostile(c.Chara))
{
owner.DoHostileAction(c, immediate: true);
}
if (surprise)
{
owner.AddCondition<ConAmbush>();
}
Kill();
}
}CoreDebug
AddHotbar("pickaxe").ChangeMaterial(0);
break;
}
EClass.player.ModKeyItem("license_adv");
Thing thing = ThingGen.Create("backpack");
thing.AddCard(ThingGen.Create("rp_food", -1, 10).SetNum(30));
thing.AddCard(ThingGen.Create("rp_block", -1, 10).SetNum(30)); Chara targetChara = EClass.scene.mouseTarget.TargetChara;
if (targetChara != null)
{
EClass.pc.Pick(CraftUtil.MakeLoveLunch(targetChara));
EClass.pc.Pick(targetChara.MakeEgg(effect: true, 10));
EClass.pc.Pick(targetChara.MakeGene());
TraitFoodEggFertilized.Incubate(targetChara.MakeEgg(effect: false, 1, addToZone: false, 100), targetChara.pos.GetNearestPoint(allowBlock: false, allowChara: false));DOMAIN
{
public const int domTest = 800;
public const int domElement = 806;
public const int domLuck = 810;
public const int domSurvival = 801;
public const int domHarmony = 815;
public const int domFaith = 802;
public const int domEarth = 812;
public const int domMiracle = 803;
public const int domSurvival = 801;
public const int domArcane = 804;
public const int domHealing = 811;
public const int domComm = 805;
public const int domFaith = 802;
public const int domWind = 807;
public const int domEyth = 814;
public const int domHarmony = 815;
public const int domArcane = 804;
public const int domMachine = 809;
public const int domLuck = 810;
public const int domHarvest = 808;
public const int domHealing = 811;
public const int domWind = 807;
public const int domEarth = 812;
public const int domElement = 806;
public const int domOblivion = 813;
public const int domMiracle = 803;
public const int domEyth = 814;
public const int domOblivion = 813;
public const int domHarvest = 808;
public const int domComm = 805;
public static readonly int[] IDS = new int[16]
{
800, 806, 801, 802, 803, 804, 805, 807, 815, 809,
810, 811, 812, 813, 814, 808
800, 810, 815, 812, 801, 811, 802, 814, 804, 809,
808, 807, 806, 803, 813, 805
};
}
public class Domain : EClassELEMENT
public class ELEMENT
{
public const int cute = 752;
public const int antidote = 753;
public const int purity = 759;
public const int nerve = 754;
public const int hotspring = 756;
public const int blood = 755;
public const int hotspring = 756;
public const int recharge = 761;
public const int roasted = 762;
public const int antidote = 753;
public const int stimulant = 760;
public const int cute = 752;
public const int recharge = 761;
public const int rare = 751;
public const int comfort = 750;
public const int roasted = 762;
public const int air = 763;
public const int difficulty = 765;
public const int rare = 751;
public const int purity = 759;
public const int stimulant = 760;
public const int comfort = 750;
public const int nerve = 754;
public const int _void = 0;
public const int old_antidote = 25;
public const int piety = 85;
public const int d = 3;
public const int race = 29;
public const int lv = 1;
public const int cure = 26;
public const int quality = 2;
public const int old_heal = 24;
public const int socket = 5;
public const int old_detox = 23;
public const int nutrition = 10;
public const int cut = 22;
public const int weight = 11;
public const int fire = 21;
public const int size = 12;
public const int taste = 18;
public const int hardness = 13;
public const int decay = 17;
public const int growth = 14;
public const int heat = 16;
public const int poison = 20;
public const int growth = 14;
public const int decay = 17;
public const int lv = 1;
public const int taste = 18;
public const int water = 15;
public const int d = 3;
public const int fire = 21;
public const int socket = 5;
public const int cut = 22;
public const int quality = 2;
public const int old_detox = 23;
public const int weight = 11;
public const int old_heal = 24;
public const int size = 12;
public const int old_antidote = 25;
public const int hardness = 13;
public const int cure = 26;
public const int nutrition = 10;
public const int race = 29;
public const int piety = 85;
public const int poison = 20;
public static readonly int[] IDS = new int[36]
{
752, 753, 754, 755, 756, 762, 760, 761, 763, 765,
751, 759, 750, 0, 25, 85, 29, 26, 24, 23,
22, 21, 18, 17, 16, 20, 14, 1, 15, 3,
5, 2, 11, 12, 13, 10
759, 756, 755, 761, 753, 752, 751, 750, 762, 763,
765, 760, 754, 0, 3, 1, 2, 5, 10, 11,
12, 13, 14, 16, 17, 18, 15, 21, 22, 23,
24, 25, 26, 29, 85, 20
};
}
public class Element : EClassENC
public class ENC
{
public const int negateParalysis = 422;
public const int noDamage = 654;
public const int seeInvisible = 416;
public const int living = 653;
public const int invisibility = 415;
public const int eco = 652;
public const int loving = 417;
public const int r_PV = 651;
public const int innocence = 418;
public const int r_mana = 641;
public const int encTail = 419;
public const int mod_frustration = 624;
public const int negatePoison = 420;
public const int r_life = 640;
public const int negateBlind = 421;
public const int onlyPet = 655;
public const int negateFear = 423;
public const int r_DV = 650;
public const int guts = 436;
public const int permaCurse = 656;
public const int negateConfusion = 425;
public const int convertLightning = 852;
public const int negateSteal = 426;
public const int absorbMP = 661;
public const int negateNeckHunt = 427;
public const int absorbSP = 662;
public const int allNeckHunt = 428;
public const int eheluck = 663;
public const int breathing = 429;
public const int boostMachine = 664;
public const int negateShockwave = 430;
public const int planter = 665;
public const int encHit = 414;
public const int meleeDistance = 666;
public const int negateSunburn = 431;
public const int encRagnarok = 667;
public const int negateSleep = 424;
public const int convertCold = 851;
public const int slowCorruption = 412;
public const int mod_feint = 623;
public const int convertImpact = 865;
public const int throwReturn = 410;
public const int defense_range = 435;
public const int absorbHP = 660;
public const int counter = 380;
public const int mod_cleave = 622;
public const int basher = 381;
public const int convertFire = 850;
public const int redirect_blaser = 383;
public const int mod_chaser = 620;
public const int negateTeleport = 400;
public const int negateParalysis = 422;
public const int levitation = 401;
public const int negateFear = 423;
public const int searchRange = 402;
public const int negateSleep = 424;
public const int expMod = 403;
public const int negateConfusion = 425;
public const int encSpell = 411;
public const int negateSteal = 426;
public const int sanctified = 432;
public const int negateNeckHunt = 427;
public const int convertCold = 851;
public const int allNeckHunt = 428;
public const int convertFire = 850;
public const int breathing = 429;
public const int weightMod = 404;
public const int negateShockwave = 430;
public const int slowDecay = 405;
public const int negateBlind = 421;
public const int resMutation = 406;
public const int negateSunburn = 431;
public const int travelSpeed = 407;
public const int defense_range = 435;
public const int resWeather = 408;
public const int guts = 436;
public const int corruption = 409;
public const int parry = 437;
public const int convertLightning = 852;
public const int knightly = 438;
public const int encRagnarok = 667;
public const int negateParry = 439;
public const int rusher = 382;
public const int sustain_STR = 440;
public const int planter = 665;
public const int sustain_END = 441;
public const int bane_all = 468;
public const int sustain_DEX = 442;
public const int strongStomach = 480;
public const int sustain_PER = 443;
public const int revealFaith = 481;
public const int sanctified = 432;
public const int force_weapon = 482;
public const int negatePoison = 420;
public const int optimizeMana = 483;
public const int encTail = 419;
public const int slot_rune = 484;
public const int innocence = 418;
public const int nonLethal = 485;
public const int mod_flurry = 621;
public const int safetyMeasure = 486;
public const int counter = 380;
public const int creativeChef = 487;
public const int rusher = 382;
public const int deathagony = 488;
public const int redirect_blaser = 383;
public const int music_drunk = 489;
public const int negateTeleport = 400;
public const int farsee = 490;
public const int levitation = 401;
public const int negateGravity = 491;
public const int searchRange = 402;
public const int mod_reload = 601;
public const int expMod = 403;
public const int mod_rapid = 602;
public const int weightMod = 404;
public const int bane_fish = 467;
public const int slowDecay = 405;
public const int bane_god = 466;
public const int resMutation = 406;
public const int bane_machine = 465;
public const int travelSpeed = 407;
public const int bane_man = 464;
public const int resWeather = 408;
public const int meleeDistance = 666;
public const int corruption = 409;
public const int knightly = 438;
public const int throwReturn = 410;
public const int negateParry = 439;
public const int encSpell = 411;
public const int sustain_STR = 440;
public const int slowCorruption = 412;
public const int sustain_END = 441;
public const int encHit = 414;
public const int sustain_DEX = 442;
public const int invisibility = 415;
public const int sustain_PER = 443;
public const int seeInvisible = 416;
public const int mod_ammo_knockback = 603;
public const int loving = 417;
public const int sustain_LER = 444;
public const int sustain_MAG = 446;
public const int sustain_WIL = 445;
public const int basher = 381;
public const int sustain_CHA = 447;
public const int sustain_figure = 450;
public const int sustain_MAG = 446;
public const int bane_dragon = 460;
public const int mod_scatter = 607;
public const int bane_undead = 461;
public const int mod_drill = 606;
public const int bane_fairy = 462;
public const int mod_precision = 605;
public const int bane_animal = 463;
public const int slot_rune = 484;
public const int sustain_WIL = 445;
public const int nonLethal = 485;
public const int mod_ammo_recover = 604;
public const int safetyMeasure = 486;
public const int mod_ammo = 600;
public const int creativeChef = 487;
public const int mod_drill = 606;
public const int deathagony = 488;
public const int parry = 437;
public const int music_drunk = 489;
public const int boostMachine = 664;
public const int farsee = 490;
public const int eheluck = 663;
public const int negateGravity = 491;
public const int absorbSP = 662;
public const int mod_ammo = 600;
public const int mod_precision = 605;
public const int mod_reload = 601;
public const int absorbHP = 660;
public const int mod_rapid = 602;
public const int permaCurse = 656;
public const int mod_splash = 608;
public const int onlyPet = 655;
public const int mod_ammo_knockback = 603;
public const int noDamage = 654;
public const int mod_ammo_recover = 604;
public const int living = 653;
public const int bane_god = 466;
public const int eco = 652;
public const int sustain_figure = 450;
public const int r_PV = 651;
public const int force_weapon = 482;
public const int r_DV = 650;
public const int bane_dragon = 460;
public const int absorbMP = 661;
public const int mod_talisman = 609;
public const int r_mana = 641;
public const int bane_undead = 461;
public const int r_life = 640;
public const int revealFaith = 481;
public const int mod_frustration = 624;
public const int strongStomach = 480;
public const int mod_feint = 623;
public const int bane_all = 468;
public const int mod_scatter = 607;
public const int bane_fairy = 462;
public const int mod_cleave = 622;
public const int bane_fish = 467;
public const int mod_flurry = 621;
public const int optimizeMana = 483;
public const int mod_chaser = 620;
public const int bane_animal = 463;
public const int mod_talisman = 609;
public const int bane_man = 464;
public const int mod_splash = 608;
public const int bane_machine = 465;
public static readonly int[] IDS = new int[107]
{
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
654, 653, 652, 651, 641, 624, 640, 655, 650, 656,
852, 661, 662, 663, 664, 665, 666, 667, 851, 623,
865, 660, 622, 850, 620, 422, 423, 424, 425, 426,
427, 428, 429, 430, 421, 431, 435, 436, 437, 438,
439, 440, 441, 442, 443, 432, 420, 419, 418, 621,
380, 382, 383, 400, 401, 402, 403, 404, 405, 406,
407, 408, 409, 410, 411, 412, 414, 415, 416, 417,
444, 445, 381, 447, 446, 607, 606, 605, 484, 485,
486, 487, 488, 489, 490, 491, 600, 601, 602, 608,
603, 604, 466, 450, 482, 460, 609, 461, 481, 480,
468, 462, 467, 483, 463, 464, 465
};
}FACTION
public class FACTION
{
public const int fSafety = 2205;
public const int bfGum = 3803;
public const int bfMushroom = 3801;
public const int bfSilica = 3802;
public const int actBuildMine = 4001;
public const int actBuildCut = 4000;
public const int bfStart = 3900;
public const int bfChitin = 3805;
public const int bfIce = 3804;
public const int bfCoal = 3800;
public const int bfSilica = 3802;
public const int bfMushroom = 3801;
public const int fConstruction = 2003;
public const int bfLandmark5 = 3784;
public const int bfGum = 3803;
public const int bfChitin = 3805;
public const int fAdmin = 2115;
public const int fAttraction = 2206;
public const int fHeirloom = 2120;
public const int fSafety = 2205;
public const int fLoyal = 2117;
public const int fFood = 2204;
public const int fLuck = 2118;
public const int fMoral = 2203;
public const int fTaxEvasion = 2119;
public const int fPromo = 2202;
public const int fRation = 2207;
public const int fElec = 2201;
public const int fSoil = 2200;
public const int fElec = 2201;
public const int fHeirloom = 2120;
public const int fPromo = 2202;
public const int fTaxEvasion = 2119;
public const int fAttraction = 2206;
public const int fLuck = 2118;
public const int bfLandmark4 = 3783;
public const int fLoyal = 2117;
public const int fMoral = 2203;
public const int fEducation = 2116;
public const int fFood = 2204;
public const int fAdmin = 2115;
public const int fEducation = 2116;
public const int fConstruction = 2003;
public const int bfLandmark3 = 3782;
public const int bfLandmark5 = 3784;
public const int bfBasin = 3709;
public const int bfLandmark4 = 3783;
public const int bfLandmark1 = 3780;
public const int fRation = 2207;
public const int bfLandmark2 = 3781;
public const int bfPlain = 3600;
public const int bfLandmark3 = 3782;
public const int bfForest = 3601;
public const int bfHunt = 3705;
public const int bfSnow = 3602;
public const int bfVolcano = 3704;
public const int bfHill = 3603;
public const int bfTranquil = 3703;
public const int bfBeach = 3604;
public const int bfFish = 3706;
public const int bfSea = 3605;
public const int bfRuin = 3702;
public const int bfCave = 3500;
public const int bfGeyser = 3701;
public const int bfFertile = 3700;
public const int bfGeyser = 3701;
public const int bfUndersea = 3606;
public const int bfRuin = 3702;
public const int bfBeach = 3604;
public const int bfTranquil = 3703;
public const int bfHill = 3603;
public const int bfUndersea = 3606;
public const int bfSnow = 3602;
public const int bfHunt = 3705;
public const int bfForest = 3601;
public const int bfFish = 3706;
public const int bfSea = 3605;
public const int bfBreed = 3710;
public const int bfCave = 3500;
public const int actBuildInspect = 4006;
public const int bfLandmark1 = 3780;
public const int actBuildRecipe = 4005;
public const int actBuildCollect = 4004;
public const int actBuildTerrain = 4002;
public const int actBuildMine = 4001;
public const int bfMonster = 3707;
public const int bfFreshAir = 3708;
public const int bfVolcano = 3704;
public const int bfBasin = 3709;
public const int bfPlain = 3600;
public const int bfBreed = 3710;
public static readonly int[] IDS = new int[53]
{
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, 3500, 3700, 3701, 3702, 3703,
3606, 3705, 3706, 3710, 4006, 4005, 4004, 4003, 4002, 4001,
3707, 3708, 3704
3803, 3801, 3802, 4001, 4000, 3900, 3804, 3800, 3805, 2206,
2205, 2204, 2203, 2202, 2201, 2200, 2120, 2119, 2118, 2117,
2116, 2115, 2003, 3784, 3783, 2207, 3781, 3782, 3705, 3704,
3703, 3706, 3702, 3701, 3700, 3606, 3604, 3603, 3602, 3601,
3605, 3500, 4006, 3780, 4005, 4004, 4003, 4002, 3707, 3708,
3709, 3600, 3710
};
}
public class Faction : EClassFEAT
public const int featWIL = 1626;
public const int featCHA = 1627;
public const int featDefense = 1631;
public const int featEvade = 1632;
public const int featLuck = 1628;
public const int featSPD = 1629;
public const int featHardy = 1630;
public const int featDefense = 1631;
public const int featPER = 1623;
public const int featSpotting = 1633;
public const int featEvade = 1632;
public const int featLuck = 1628;
public const int featCHA = 1627;
public const int featPER = 1623;
public const int featEND = 1622;
public const int featManaMeat = 1421;
public const int featDEX = 1621;
public const int featSTR = 1620;
public const int featStamina = 1612;
public const int featLife = 1610;
public const int featDisguise = 1427;
public const int featNeckHunter = 1426;
public const int featMimic = 1425;
public const int featHealer = 1422;
public const int featNegotiate = 1634;
public const int featSpotting = 1633;
public const int featExecutioner = 1420;
public const int featMilitant = 1419;
public const int featEND = 1622;
public const int featDEX = 1621;
public const int featMartial = 1635;
public const int featNegotiate = 1634;
public const int featMagicManner = 1651;
public const int featGourmet = 1650;
public const int featAnimalLover = 1640;
public const int featFaith = 1636;
public const int featSwordsage = 1418;
public const int featMilitant = 1419;
public const int featComat = 1750;
public const int featModelBeliever = 1655;
public const int featHeavyCasting = 1654;
public const int featMartial = 1635;
public const int featDreamWaker = 1653;
public const int featHeavyCasting = 1654;
public const int featRapidArrow = 1652;
public const int featGourmet = 1650;
public const int featMagicManner = 1651;
public const int featDefender = 1649;
public const int featResCurse = 1641;
public const int featFaith = 1636;
public const int featAnimalLover = 1640;
public const int featWitch = 1417;
public const int featDreamWaker = 1653;
public const int featPegasus = 1246;
public const int featSwordsage = 1418;
public const int featFoxMaid = 1415;
public const int featGod_trickery1 = 1345;
public const int featInquisitor = 1416;
public const int featCosmicHorror = 1233;
public const int featSevenSense = 1245;
public const int featBaby = 1232;
public const int featPegasus = 1246;
public const int featLibra = 1247;
public const int featMiscreation = 1248;
public const int featBloodBond = 1249;
public const int featVampire = 1250;
public const int featAshborn = 1251;
public const int featAquatic = 1252;
public const int featWitch = 1417;
public const int featInquisitor = 1416;
public const int featGoodKarma = 1270;
public const int featBadKarma = 1271;
public const int featGod_element1 = 1300;
public const int featMiscreation = 1248;
public const int featBaby = 1232;
public const int featNirvana = 1231;
public const int featGod_earth1 = 1305;
public const int featAdam = 1230;
public const int featNirvana = 1231;
public const int featLittleOne = 1229;
public const int featDemigod = 1228;
public const int featGod_earth1 = 1305;
public const int featAdam = 1230;
public const int featGod_wind1 = 1310;
public const int featGoodKarma = 1270;
public const int featAquatic = 1252;
public const int featGod_healing1 = 1320;
public const int featFoxMaid = 1415;
public const int featWhiteVixen = 1414;
public const int featFairysan = 1413;
public const int featPaladin = 1407;
public const int featTourist = 1406;
public const int featGod_machine1 = 1315;
public const int featTourist = 1406;
public const int featPianist = 1405;
public const int featArcher = 1404;
public const int featGod_moonshadow1 = 1350;
public const int featGod_trickery1 = 1345;
public const int featGod_oblivion1 = 1340;
public const int featGod_harmony1 = 1335;
public const int featGod_harvest1 = 1325;
public static readonly int[] IDS = new int[146]
public static readonly int[] IDS = new int[147]
{
1624, 1625, 1626, 1627, 1632, 1629, 1630, 1631, 1633, 1628,
1623, 1421, 1621, 1620, 1612, 1611, 1610, 1426, 1425, 1424,
1423, 1422, 1634, 1420, 1419, 1622, 1635, 1651, 1640, 1418,
1750, 1664, 1663, 1662, 1661, 1660, 1659, 1658, 1657, 1656,
1655, 1654, 1653, 1652, 1650, 1649, 1648, 1647, 1646, 1645,
1644, 1643, 1642, 1641, 1636, 1417, 1246, 1415, 1233, 1234,
1624, 1625, 1626, 1631, 1628, 1629, 1630, 1623, 1632, 1627,
1622, 1421, 1620, 1612, 1611, 1610, 1427, 1426, 1425, 1424,
1423, 1422, 1633, 1420, 1621, 1634, 1650, 1636, 1419, 1750,
1664, 1663, 1662, 1661, 1660, 1659, 1658, 1657, 1656, 1655,
1635, 1654, 1652, 1651, 1649, 1648, 1647, 1646, 1645, 1644,
1643, 1642, 1641, 1640, 1653, 1418, 1345, 1416, 1233, 1234,
1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244,
1245, 1232, 1247, 1249, 1250, 1251, 1252, 1416, 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, 1270, 1320, 1414, 1413, 1412, 1411, 1410, 1409, 1408,
1407, 1406, 1315, 1405, 1404, 1403, 1402, 1401, 1400, 1355,
1350, 1345, 1340, 1335, 1330, 1325
1245, 1246, 1247, 1248, 1249, 1250, 1251, 1417, 1270, 1271,
1272, 1273, 1274, 1275, 1276, 1290, 1300, 1232, 1305, 1231,
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,
1230, 1310, 1252, 1320, 1415, 1414, 1413, 1412, 1411, 1410,
1409, 1408, 1407, 1315, 1406, 1405, 1404, 1403, 1402, 1401,
1400, 1355, 1350, 1340, 1335, 1330, 1325
};
}
public class Feat : ElementGoalCombat
public virtual void BuildAbilityList()
{
AddAbility(item.act, 0, item.chance, item.pt);
}
if (owner.mimicry != null && owner.mimicry.IsChara)
{
foreach (ActList.Item item2 in owner.mimicry.Card.Chara.ability.list.items)
{
AddAbility(item2.act, 0, item2.chance, item2.pt);
}
}
AddAbility(ACT.Ranged);
AddAbility(ACT.Melee);
AddAbility(ACT.Item);HotItemHeld
public bool TrySetToolAct(ActPlan p)
Card tc = null;
foreach (Chara item in pos.ListVisibleCharas())
{
if (item.isSynced && item.IsAliveInCurrentZone && (item.mimicry == null || item.IsPCParty))
if (item.isSynced && item.IsAliveInCurrentZone && (item.mimicry == null || item.mimicry.IsChara || item.IsPCParty))
{
tc = item;
break;Recipe
public static Recipe Create(Thing t)
recipeCard.BuildIngredientList(t);
if (t.uid == 0 || recipeCard.ingredients[0].uid == 0 || recipeCard.ingredients[0].thing == null)
{
Debug.LogError("expection: invalid ingredient " + t);
Debug.LogError("exception: invalid ingredient " + t);
}
return recipeCard;
}RecipeManager
public static void BuildList()
dict.Clear();
foreach (CardRow row in EClass.sources.cards.rows)
{
if (!row.isOrigin && (row.factory.IsEmpty() || !(row.factory[0] == "x")))
if (!row.isOrigin)
{
Create(row, "", row.isChara ? "-c" : "");
}public static void Create(RenderRow row, string type, string suffix = "")
recipeSource.type = type;
recipeSource.row = row;
recipeSource.isChara = row is SourceChara.Row;
if (!row.factory.IsEmpty() && row.factory[0] == "x")
{
recipeSource.noListing = true;
}
list.Add(recipeSource);
dict[recipeSource.id] = recipeSource;
_ = row.components;RecipeSource
public List<Recipe.Ingredient> GetIngredients()
{
if (!row.factory.IsEmpty() && row.factory[0] == "x")
{
noListing = true;
}
if (row.components.Length == 0)
{
return DefaultIngredients; array3[0] = array3[0].Remove(0, 1);
break;
case '+':
goto IL_0164;
goto IL_0132;
}
break;
IL_0164:
IL_0132:
optional = true;
array3[0] = array3[0].Remove(0, 1);
}Region
public override void OnAdvanceHour()
BiomeProfile biome = regionPoint.biome;
SpawnList list = ((biome.spawn.chara.Count <= 0) ? SpawnList.Get(biome.name, "chara", new CharaFilter
{
ShouldPass = (SourceChara.Row s) => s.quality < 3 && (s.biome == biome.name || s.biome.IsEmpty())
}) : SpawnList.Get(biome.spawn.GetRandomCharaId(), null, new CharaFilter
{
ShouldPass = (SourceChara.Row s) => s.quality < 3
}));
ShouldPass = (SourceChara.Row s) => s.biome == biome.name || s.biome.IsEmpty()
}) : SpawnList.Get(biome.spawn.GetRandomCharaId()));
Chara chara = null;
chara = ((EClass.rnd(EClass.debug.enable ? 5 : 50) != 0) ? CharaGen.CreateFromFilter(list, regionPoint.dangerLv) : CharaGen.Create((EClass.rnd(5) == 0) ? "merchant_travel" : "merchant_travel2"));
if (chara != null && !(chara.trait is TraitUniqueMonster))
if (chara != null && chara.rarity < Rarity.Legendary)
{
AddCard(chara, randomPoint);
}SKILL
public const int resAcid = 963;
public const int resCut = 964;
public const int resCurse = 972;
public const int resDamage = 971;
public const int resImpact = 965;
public const int resCut = 964;
public const int gathering = 250;
public const int resPoison = 955;
public const int eleLightning = 912;
public const int jewelry = 259;
public const int sculpture = 258;
public const int alchemy = 257;
public const int blacksmith = 256;
public const int handicraft = 261;
public const int lockpicking = 280;
public const int stealing = 281;
public const int negotiation = 291;
public const int jewelry = 259;
public const int weaving = 260;
public const int investing = 292;
public const int hygine = 310;
public const int weaving = 260;
public const int handicraft = 261;
public const int faith = 306; 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, 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,
962, 963, 972, 971, 970, 965, 964, 250, 955, 914,
920, 912, 259, 258, 257, 256, 280, 281, 285, 286,
913, 287, 288, 289, 290, 291, 260, 292, 300, 911,
910, 313, 312, 311, 293, 310, 261, 306, 305, 304,
303, 302, 301, 307
};
}SPELL
public class SPELL
{
public const int hand_Impact = 50415;
public const int ball_Impact = 50115;
public const int flare_Sound = 51207;
public const int puddle_Holy = 50909;
public const int funnel_Ether = 50612;
public const int miasma_Ether = 50712;
public const int weapon_Ether = 50812;
public const int funnel_Impact = 50615;
public const int miasma_Impact = 50715;
public const int puddle_Ether = 50912;
public const int sword_Ether = 51012;
public const int ball_Acid = 50113;
public const int funnel_Impact = 50615;
public const int arrow_Impact = 50515;
public const int bolt_Acid = 50313;
public const int sword_Acid = 51013;
public const int bit_Acid = 51113;
public const int ball_Impact = 50115;
public const int flare_Cut = 51214;
public const int bit_Cut = 51114;
public const int weapon_Cut = 50814;
public const int funnel_Ether = 50612;
public const int miasma_Cut = 50714;
public const int arrow_Cut = 50514;
public const int arrow_Ether = 50512;
public const int funnel_Cut = 50614;
public const int hand_Cut = 50414;
public const int bolt_Cut = 50314;
public const int arrow_Impact = 50515;
public const int hand_Impact = 50415;
public const int ball_Cut = 50114;
public const int flare_Acid = 51213;
public const int funnel_Cut = 50614;
public const int bit_Acid = 51113;
public const int arrow_Ether = 50512;
public const int arrow_Cut = 50514;
public const int hand_Ether = 50412;
public const int bolt_Ether = 50312;
public const int puddle_Chaos = 50910;
public const int miasma_Impact = 50715;
public const int sword_Impact = 51015;
public const int bit_Impact = 51115;
public const int miasma_Chaos = 50710;
public const int sword_Chaos = 51010;
public const int puddle_Chaos = 50910;
public const int funnel_Chaos = 50610;
public const int bolt_Impact = 50315;
public const int sword_Impact = 51015;
public const int flare_Chaos = 51210;
public const int puddle_Impact = 50915;
public const int weapon_Impact = 50815;
public const int bit_Chaos = 51110;
public const int ball_Ether = 50112;
public const int puddle_Magic = 50911;
public const int bit_Chaos = 51110;
public const int weapon_Magic = 50811;
public const int funnel_Magic = 50611;
public const int sword_Chaos = 51010;
public const int miasma_Magic = 50711;
public const int arrow_Magic = 50511;
public const int bolt_Magic = 50311;
public const int puddle_Impact = 50915;
public const int weapon_Impact = 50815;
public const int ball_Magic = 50111;
public const int miasma_Magic = 50711;
public const int flare_Chaos = 51210;
public const int puddle_Ether = 50912;
public const int funnel_Magic = 50611;
public const int SpTransmuteBroom = 8790;
public const int weapon_Ether = 50812;
public const int SpTransmutePutit = 8791;
public const int flare_Darkness = 51203;
public const int SpSpeedUp = 8510;
public const int SpTransmutePutit = 8791;
public const int SpTransmuteBroom = 8790;
public const int SpIncognito = 8780;
public static readonly int[] IDS = new int[294]
{
50415, 51207, 51107, 51016, 51007, 50907, 50807, 50707, 50607, 50507,
50115, 51207, 51107, 51016, 51007, 50907, 50807, 50707, 50607, 50507,
50407, 50307, 50516, 50107, 50108, 50416, 50308, 50408, 50508, 50608,
50708, 50808, 50908, 51008, 51108, 51208, 50109, 50316, 50309, 50409,
50509, 51206, 50616, 51106, 51006, 50405, 50305, 50916, 50304, 50105,
51204, 50505, 51104, 50904, 50804, 50704, 50604, 50504, 50404, 51004,
50609, 50605, 50805, 50906, 50806, 50706, 50606, 50506, 50406, 50705,
50306, 50106, 50816, 51205, 51105, 51005, 50905, 50716, 50709, 50809,
50909, 50712, 50812, 50715, 51012, 51112, 51212, 50113, 50615, 50313,
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, 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,
8790, 51203, 8503, 8502, 8501, 8500, 8491, 8490, 8480, 8471,
50909, 50612, 50712, 50615, 50912, 51012, 51112, 51212, 50113, 50515,
50313, 50413, 50513, 50613, 50713, 50813, 50913, 51013, 51214, 51114,
51014, 50914, 50814, 50714, 50512, 50614, 50414, 50314, 50415, 50114,
51213, 51113, 50514, 50412, 50312, 50715, 51015, 51115, 51215, 50116,
50810, 50710, 50910, 50610, 50410, 50310, 50110, 51209, 51109, 51009,
50510, 50315, 50915, 51110, 50112, 51211, 51111, 51011, 50911, 50811,
51010, 50711, 50511, 50411, 50311, 50815, 50111, 51210, 50611, 50812,
8791, 51203, 8503, 8502, 8501, 8500, 8491, 8490, 8480, 8471,
8470, 8450, 8430, 8406, 8405, 8404, 8403, 8504, 8402, 8506,
8510, 8791, 8780, 8776, 8775, 8770, 8710, 8708, 8707, 8706,
8510, 8790, 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,Trait
public void OnBarter(bool reroll = false)
case ShopType.TravelMerchant2:
Add("tool_talisman", 1, 0);
Add("camera", 1, 0);
Add("dreambug", 10, 0);
Add("mathammer", 1, 0);
Add("dreambug", EClass.rndHalf(10), 0);
Add("mathammer", 1, 0).ChangeMaterial(MATERIAL.GetRandomMaterial(80));
Add("unicorn_horn", 1, 0);
Add("core_user", 1, 0);
Add("generator_hamster1", 1, 0);
Add("generator_hamster2", 1, 0);
Add("generator_solar", 1, 0);
Add("generator_wind", 1, 0);
Add("curtainL", 1, 0);
Add("curtainL", EClass.rndHalf(5), 0);
Add("1337", EClass.rndHalf(5), 0);
Add("1338", EClass.rndHalf(5), 0);
Add("1339", EClass.rndHalf(5), 0);
Add("1340", EClass.rndHalf(5), 0);
Add("1301", EClass.rndHalf(5), 0);
Add("1302", EClass.rndHalf(5), 0);
Add("censored_item", 1, 0);
Add("block_strawberry", 10, 0);
Add("block_cream", 10, 0);
Add("block_mango", 10, 0);
Add("block_cherry", 10, 0);
Add("block_chocoplate", 10, 0);
Add("block_banana", 10, 0);
Add("block_mousse", 10, 0);
Add("block_melon", 10, 0);
Add("block_kiwi", 10, 0);
Add("block_peach", 10, 0);
Add("block_strawberry", EClass.rndHalf(6), 0);
Add("block_cream", EClass.rndHalf(6), 0);
Add("block_mango", EClass.rndHalf(6), 0);
Add("block_cherry", EClass.rndHalf(6), 0);
Add("block_chocoplate", EClass.rndHalf(6), 0);
Add("block_banana", EClass.rndHalf(6), 0);
Add("block_mousse", EClass.rndHalf(6), 0);
Add("block_melon", EClass.rndHalf(6), 0);
Add("block_kiwi", EClass.rndHalf(6), 0);
Add("block_peach", EClass.rndHalf(6), 0);
Add("water", 1, 0);
if (EClass.rndSeed(EClass.debug.enable ? 1 : 5, owner.uid) == 0)
{TraitMerchantTravel
public class TraitMerchantTravel : TraitMerchant
public class TraitMerchantTravel : TraitMerchant
{
public bool ShouldOpenShop
{
get
{
if (!base.owner.IsPCFactionOrMinion)
{
return !EClass._zone.IsPCFactionOrTent;
}
return false;
}
}
public override int ShopLv
{
get
{
if (!base.owner.IsPCFactionOrMinion && !EClass._zone.IsPCFactionOrTent)
if (!ShouldOpenShop)
{
return base.ShopLv;
}
return EClass.pc.FameLv * 2 + 10;
}
}
public override ShopType ShopType
{
get
{
if (!ShouldOpenShop)
{
return base.owner.LV;
return ShopType.None;
}
return base.ShopLv;
return ShopType.TravelMerchant;
}
}
public override ShopType ShopType => ShopType.TravelMerchant;
public override bool CanInvest => false;
public override bool AllowCriminal => true;
public override int CostRerollShop => 10;
public override int CostRerollShop => 0;
public override int RestockDay => 360;
public override int RestockDay => -1;
}TraitMerchantTravel2
public class TraitMerchantTravel2 : TraitMerchantTravel
{
public override CurrencyType CurrencyType => CurrencyType.Money2;
public override ShopType ShopType => ShopType.TravelMerchant2;
public override int CostRerollShop => 0;
public override int RestockDay => -1;
public override ShopType ShopType
{
get
{
if (!base.ShouldOpenShop)
{
return ShopType.None;
}
return ShopType.TravelMerchant2;
}
}
}Zone
EClass._zone.AddCard(CharaGen.Create("priest"), randomSurface5);
}
}
if (base.Tile.isRoad)
{
for (int n = 0; n < EClass.rnd(4); n++)
{
EClass._zone.SpawnMob(map.GetCenterPos().GetRandomPointInRadius(2, 6, requireLos: false, allowChara: false), SpawnSetting.HomeGuest(EClass._zone.DangerLv));
}
}
}
map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList) ?? EClass.Sound.GetPlaylist("Day"));
}