EA 23.115 Nightly Patch 1
March 27, 2025
11 files modified.
Important Changes
None.
ActMelee
@@ -157,6 +157,7 @@ void _Attack(BodySlot slot)
int flurry;
int frustration;
int feint;
int mod_talisman;
if (Act.TC != null && Act.TC.IsAliveInCurrentZone)
{
w = null;
@@ -187,6 +188,7 @@ void _Attack(BodySlot slot)
frustration = GetWeaponEnc(624, addSelfEnc: true);
int num3 = GetWeaponEnc(622, addSelfEnc: true);
feint = GetWeaponEnc(623, addSelfEnc: true);
mod_talisman = GetWeaponEnc(609, addSelfEnc: true);
List<Point> list2 = EClass._map.ListPointsInLine(Act.CC.pos, Act.TC.pos, num2 / 10 + ((num2 % 10 > EClass.rnd(10)) ? 1 : 0) + 1);
AttackWithFlurry(Act.TC, Act.TP, 1f, subAttack: false);
if (num2 > 0)
@@ -299,7 +301,7 @@ void Attack(Card _tc, Point _tp, float mtp, bool subAttack)
{
usedTalisman = true;
flag2 = true;
if (Act.CC.Evalue(609) > 0 && Mathf.Min(10f + Mathf.Sqrt(Act.CC.Evalue(609)) * 5f, 90f) > (float)EClass.rnd(100))
if (mod_talisman > 0 && Mathf.Min(10f + Mathf.Sqrt(mod_talisman) * 5f, 90f) > (float)EClass.rnd(100))
{
flag2 = false;
}
@@ -387,7 +389,7 @@ void AttackWithFlurry(Card _tc, Point _tp, float mtp, bool subAttack)
}
int GetWeaponEnc(int ele, bool addSelfEnc)
{
return (addSelfEnc ? Act.CC.Evalue(ele) : 0) + ((w != null) ? w.Evalue(ele) : 0) + (Act.CC.IsPCFactionOrMinion ? EClass.pc.faction.charaElements.Value(ele) : 0);
return AttackProcess.GetWeaponEnc(Act.CC, w, ele, addSelfEnc);
}
}
}
ActPlan
@@ -502,7 +502,7 @@ public void _Update(PointTarget target)
{
if (_c.isThing)
{
if (_c.trait.CanBeAttacked)
if (_c.trait.CanBeAttacked && !(_c.trait is TraitTrainingDummy))
{
TrySetAct(ACT.Melee, _c);
}
ActRush
@@ -44,6 +44,10 @@ public override bool CanPerform()
{
return false;
}
if (Los.GetRushPoint(Act.CC.pos, Act.TP) == null)
{
return false;
}
return base.CanPerform();
}
AttackProcess
@@ -111,6 +111,11 @@ public bool IsCane
}
}
public static int GetWeaponEnc(Chara CC, Thing w, int ele, bool addSelfEnc = false)
{
return (addSelfEnc ? CC.Evalue(ele) : 0) + (w?.Evalue(ele) ?? 0) + (CC.IsPCFactionOrMinion ? EClass.pc.faction.charaElements.Value(ele) : 0);
}
public string GetText()
{
string text = dNum + "d" + dDim;
@@ -609,8 +614,9 @@ public bool Perform(int count, bool hasHit, float dmgMulti = 1f, bool maxRoll =
int num9 = num * penetration / 100;
num -= num9;
num = TC.ApplyProtection(num) + num9 + num8;
int weaponEnc = GetWeaponEnc(CC, weapon, 609, addSelfEnc: true);
TC.DamageHP(num, num4, num5, (!IsRanged && !isThrow) ? AttackSource.Melee : AttackSource.Range, CC, showEffect, weapon);
if (conWeapon != null && (CC.Evalue(609) <= 0 || !(Mathf.Min(10f + Mathf.Sqrt(CC.Evalue(609)) * 5f, 90f) > (float)EClass.rnd(100))))
if (conWeapon != null && (weaponEnc <= 0 || !(Mathf.Min(10f + Mathf.Sqrt(weaponEnc) * 5f, 90f) > (float)EClass.rnd(100))))
{
conWeapon.Mod(-1);
}
BaseTileMap
@@ -1660,6 +1660,15 @@ public virtual void DrawTile()
else
{
param.liquidLv = liquidLv;
if (chara.Pref.Float && liquidLv > 0 && !hasBridge && !flag)
{
float num16 = ((this.cell._bridge != 0) ? sourceBridge.tileType.FloorHeight : sourceFloor.tileType.FloorHeight);
orgY += 0.01f * floatY - num16;
_actorPos.y += 0.01f * floatY - num16;
int num17 = TileType.FloorWaterShallow.LiquidLV * 10;
num17 -= (int)(floatY * 0.5f);
param.liquidLv = num17;
}
if (param.liquidLv > 0)
{
param.liquidLv += chara.Pref.liquidMod;
@@ -1715,16 +1724,16 @@ public virtual void DrawTile()
{
if (sourceEffect2.anime.Length > 2)
{
float num16 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.anime[1] % (float)sourceEffect2.anime[2];
if (!(num16 >= (float)sourceEffect2.anime[0]))
float num18 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.anime[1] % (float)sourceEffect2.anime[2];
if (!(num18 >= (float)sourceEffect2.anime[0]))
{
param.tile += num16;
param.tile += num18;
}
}
else
{
float num17 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.anime[1] % (float)sourceEffect2.anime[0];
param.tile += num17;
float num19 = Time.realtimeSinceStartup * 1000f / (float)sourceEffect2.anime[1] % (float)sourceEffect2.anime[0];
param.tile += num19;
}
}
if (this.cell.effect.IsFire)
@@ -1915,17 +1924,17 @@ public virtual void DrawTile()
}
goto IL_7b80;
IL_6f65:
int num18;
int num20;
if (!showRoof || !roof || this.cell.room == null || this.cell.Front.room == null || this.cell.Right.room == null)
{
param.tile = num18;
param.tile = num20;
rendererFov.Draw(param);
}
goto IL_6fc5;
IL_167b:
if (this.cell.isSlopeEdge)
{
float num19 = (float)height * _heightMod.y;
float num21 = (float)height * _heightMod.y;
orgY = param.y;
orgZ = param.z;
param.dir = this.cell.blockDir;
@@ -1955,17 +1964,17 @@ public virtual void DrawTile()
param.matColor = 104025f;
}
}
for (int l = 0; (float)l < num19 / heightBlockSize; l++)
for (int l = 0; (float)l < num21 / heightBlockSize; l++)
{
param.y += ugFix.y;
param.z += ugFix.z + slopeFixZ * (float)l;
defBlock.renderData.Draw(param);
if (this.cell.pcSync && EMono.player.lightPower > 0f)
{
float num20 = param.tile;
float num22 = param.tile;
param.tile = 0f;
rendererFov.Draw(param);
param.tile = num20;
param.tile = num22;
}
}
param.y = orgY;
@@ -1976,29 +1985,29 @@ public virtual void DrawTile()
{
orgY = param.y;
orgZ = param.z;
int num21 = 0;
int num23 = 0;
if (sourceBlock.tileType.IsFullBlock)
{
SourceBlock.Row row3 = sourceBlock;
num21 = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length];
num23 = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length];
}
else
{
SourceBlock.Row row3 = sourceFloor._defBlock;
num21 = row3._tiles[this.cell.blockDir % row3._tiles.Length];
num23 = row3._tiles[this.cell.blockDir % row3._tiles.Length];
}
if (((this.cell.Front.shore / 12) & 1) == 0 && this.cell.Front.sourceFloor.tileType.IsWater && this.cell.Front.height <= height && this.cell.Front.sourceBlock.tileType.RenderWaterBlock)
{
param.y = (float)(cz - cx) * screen.tileAlign.y - (this.cell.Front.sourceFloor.tileType.IsDeepWater ? 0.6f : 0.4f) + (float)(int)this.cell.Front.height * _heightMod.y;
param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z;
param.tile = num21 + ((!this.cell.Front.sourceFloor.tileType.IsDeepWater) ? 3000000 : 0);
param.tile = num23 + ((!this.cell.Front.sourceFloor.tileType.IsDeepWater) ? 3000000 : 0);
rendererWaterBlock.Draw(param);
}
if (((this.cell.Right.shore / 12) & 8) == 0 && this.cell.Right.sourceFloor.tileType.IsWater && this.cell.Right.height <= height && this.cell.Right.sourceBlock.tileType.RenderWaterBlock)
{
param.y = (float)(cz - cx) * screen.tileAlign.y - (this.cell.Right.sourceFloor.tileType.IsDeepWater ? 0.6f : 0.4f) + (float)(int)this.cell.Right.height * _heightMod.y;
param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z;
param.tile = num21 + ((!this.cell.Right.sourceFloor.tileType.IsDeepWater) ? 3000000 : 0);
param.tile = num23 + ((!this.cell.Right.sourceFloor.tileType.IsDeepWater) ? 3000000 : 0);
rendererWaterBlock.Draw(param);
}
param.y = orgY;
@@ -2096,20 +2105,20 @@ public virtual void DrawTile()
}
sourceFloor.renderData.Draw(param);
}
int num22 = 0;
int num24 = 0;
if (isSnowCovered && sourceFloor == FLOOR.sourceSnow && !this.cell.hasDoor)
{
if (!this.cell.Right.IsSnowTile && this.cell.Right.topHeight == this.cell.topHeight)
{
num22++;
num24++;
}
if (!this.cell.Front.IsSnowTile && this.cell.Front.topHeight == this.cell.topHeight)
{
num22 += 2;
num24 += 2;
}
if (num22 != 0)
if (num24 != 0)
{
param.tile = 448 + num22 + 12;
param.tile = 448 + num24 + 12;
param.z -= 0.1f;
sourceFloor.renderData.Draw(param);
param.z += 0.1f;
@@ -2180,7 +2189,7 @@ public virtual void DrawTile()
}
}
}
if (this.cell.autotile != 0 && sourceFloor.autotile != 0 && (!hasBridge || this.cell.bridgeHeight - this.cell.height > 3) && !this.cell.skipRender && num22 == 0)
if (this.cell.autotile != 0 && sourceFloor.autotile != 0 && (!hasBridge || this.cell.bridgeHeight - this.cell.height > 3) && !this.cell.skipRender && num24 == 0)
{
pass = (isWater ? passAutoTileWater : passAutoTile);
batch = pass.batches[pass.batchIdx];
@@ -2199,16 +2208,16 @@ public virtual void DrawTile()
}
if (isWater)
{
int num23 = 12;
int num24 = this.cell.shore / num23;
int num25 = this.cell.shore % num23;
int num25 = 12;
int num26 = this.cell.shore / num25;
int num27 = this.cell.shore % num25;
bool isShoreSand = this.cell.isShoreSand;
if (this.cell.shore != 0)
{
Cell cell = ((((uint)num24 & (true ? 1u : 0u)) != 0) ? this.cell.Back : ((((uint)num24 & 2u) != 0) ? this.cell.Right : ((((uint)num24 & 4u) != 0) ? this.cell.Front : this.cell.Left)));
Cell cell = ((((uint)num26 & (true ? 1u : 0u)) != 0) ? this.cell.Back : ((((uint)num26 & 2u) != 0) ? this.cell.Right : ((((uint)num26 & 4u) != 0) ? this.cell.Front : this.cell.Left)));
if (isShoreSand && !cell.sourceFloor.isBeach)
{
cell = ((((uint)num24 & 8u) != 0) ? this.cell.Left : ((((uint)num24 & 4u) != 0) ? this.cell.Front : ((((uint)num24 & 2u) != 0) ? this.cell.Right : this.cell.Back)));
cell = ((((uint)num26 & 8u) != 0) ? this.cell.Left : ((((uint)num26 & 4u) != 0) ? this.cell.Front : ((((uint)num26 & 2u) != 0) ? this.cell.Right : this.cell.Back)));
}
if (!cell.IsSnowTile)
{
@@ -2220,7 +2229,7 @@ public virtual void DrawTile()
batch.matrices[pass.idx].m03 = param.x;
batch.matrices[pass.idx].m13 = param.y;
batch.matrices[pass.idx].m23 = param.z;
batch.tiles[pass.idx] = 768 + this.cell.shore / num23;
batch.tiles[pass.idx] = 768 + this.cell.shore / num25;
batch.colors[pass.idx] = param.color;
batch.matColors[pass.idx] = param.matColor;
pass.idx++;
@@ -2228,38 +2237,38 @@ public virtual void DrawTile()
{
pass.NextBatch();
}
num25 = 2;
num27 = 2;
}
else
{
num25 = cell.sourceFloor.edge;
num27 = cell.sourceFloor.edge;
}
param.tile = (24 + num25 / 2) * 32 + num25 % 2 * 16 + num24;
param.tile = (24 + num27 / 2) * 32 + num27 % 2 * 16 + num26;
rendererShore.Draw(param);
}
}
if (this.cell.Back.isShoreSand && ((uint)(this.cell.Back.shore / num23) & 8u) != 0 && this.cell.Left.isShoreSand && ((uint)(this.cell.Left.shore / num23) & (true ? 1u : 0u)) != 0)
if (this.cell.Back.isShoreSand && ((uint)(this.cell.Back.shore / num25) & 8u) != 0 && this.cell.Left.isShoreSand && ((uint)(this.cell.Left.shore / num25) & (true ? 1u : 0u)) != 0)
{
param.tile = 785f;
param.matColor = GetColorInt(ref this.cell.BackLeft.matFloor.matColor, this.cell.BackLeft.sourceFloor.colorMod);
passShore.Add(param);
Draw(60);
}
if (this.cell.Back.isShoreSand && ((uint)(this.cell.Back.shore / num23) & 2u) != 0 && this.cell.Right.isShoreSand && ((uint)(this.cell.Right.shore / num23) & (true ? 1u : 0u)) != 0)
if (this.cell.Back.isShoreSand && ((uint)(this.cell.Back.shore / num25) & 2u) != 0 && this.cell.Right.isShoreSand && ((uint)(this.cell.Right.shore / num25) & (true ? 1u : 0u)) != 0)
{
param.tile = 786f;
param.matColor = GetColorInt(ref this.cell.BackRight.matFloor.matColor, this.cell.BackRight.sourceFloor.colorMod);
passShore.Add(param);
Draw(56);
}
if (this.cell.Front.isShoreSand && ((uint)(this.cell.Front.shore / num23) & 2u) != 0 && this.cell.Right.isShoreSand && ((uint)(this.cell.Right.shore / num23) & 4u) != 0)
if (this.cell.Front.isShoreSand && ((uint)(this.cell.Front.shore / num25) & 2u) != 0 && this.cell.Right.isShoreSand && ((uint)(this.cell.Right.shore / num25) & 4u) != 0)
{
param.tile = 787f;
param.matColor = GetColorInt(ref this.cell.FrontRight.matFloor.matColor, this.cell.FrontRight.sourceFloor.colorMod);
passShore.Add(param);
Draw(48);
}
if (this.cell.Front.isShoreSand && ((uint)(this.cell.Front.shore / num23) & 8u) != 0 && this.cell.Left.isShoreSand && ((uint)(this.cell.Left.shore / num23) & 4u) != 0)
if (this.cell.Front.isShoreSand && ((uint)(this.cell.Front.shore / num25) & 8u) != 0 && this.cell.Left.isShoreSand && ((uint)(this.cell.Left.shore / num25) & 4u) != 0)
{
param.tile = 788f;
param.matColor = GetColorInt(ref this.cell.FrontLeft.matFloor.matColor, this.cell.FrontLeft.sourceFloor.colorMod);
@@ -2285,38 +2294,38 @@ public virtual void DrawTile()
bool flag8 = false;
if (isShoreSand)
{
if (((uint)num24 & (true ? 1u : 0u)) != 0)
if (((uint)num26 & (true ? 1u : 0u)) != 0)
{
if (((uint)num24 & 8u) != 0)
if (((uint)num26 & 8u) != 0)
{
if ((num24 & 2) == 0 && (num24 & 4) == 0)
if ((num26 & 2) == 0 && (num26 & 4) == 0)
{
Draw(16);
}
flag8 = true;
}
if (((uint)num24 & 2u) != 0)
if (((uint)num26 & 2u) != 0)
{
if ((num24 & 8) == 0 && (num24 & 4) == 0)
if ((num26 & 8) == 0 && (num26 & 4) == 0)
{
Draw(20);
}
flag8 = true;
}
}
if (((uint)num24 & 4u) != 0)
if (((uint)num26 & 4u) != 0)
{
if (((uint)num24 & 8u) != 0)
if (((uint)num26 & 8u) != 0)
{
if ((num24 & 2) == 0 && (num24 & 1) == 0)
if ((num26 & 2) == 0 && (num26 & 1) == 0)
{
Draw(24);
}
flag8 = true;
}
if (((uint)num24 & 2u) != 0)
if (((uint)num26 & 2u) != 0)
{
if ((num24 & 8) == 0 && (num24 & 1) == 0)
if ((num26 & 8) == 0 && (num26 & 1) == 0)
{
Draw(28);
}
@@ -2343,7 +2352,7 @@ public virtual void DrawTile()
batch = pass.batches[pass.batchIdx];
batch.tiles[pass.idx] = 608 + waterAnimeIndex % 4;
batch.matColors[pass.idx] = 104025f;
if (((uint)(this.cell.shore / num23) & (true ? 1u : 0u)) != 0)
if (((uint)(this.cell.shore / num25) & (true ? 1u : 0u)) != 0)
{
if (isShoreSand)
{
@@ -2381,7 +2390,7 @@ public virtual void DrawTile()
batch = pass.batches[pass.batchIdx];
batch.tiles[pass.idx] = 612 + waterAnimeIndex % 4;
batch.matColors[pass.idx] = 104025f;
if (((uint)(this.cell.shore / num23) & 8u) != 0)
if (((uint)(this.cell.shore / num25) & 8u) != 0)
{
if (isShoreSand)
{
@@ -2497,16 +2506,16 @@ public virtual void DrawTile()
param.z += bridgeFix.z;
param.dir = 0;
SourceBlock.Row row4 = sourceBridge._bridgeBlock;
float num26 = (float)(this.cell.bridgeHeight - this.cell.height) * _heightMod.y;
float num28 = (float)(this.cell.bridgeHeight - this.cell.height) * _heightMod.y;
if (this.cell.sourceFloor.tileType == TileType.Sky)
{
num26 += (float)EMono._map.config.skyBlockHeight;
num28 += (float)EMono._map.config.skyBlockHeight;
}
int num27 = (int)(num26 / heightBlockSize) + 2;
int num29 = (int)(num28 / heightBlockSize) + 2;
if (this.cell.bridgePillar != 0)
{
row4 = EMono.sources.blocks.rows[this.cell.bridgePillar];
param.tile = row4._tiles[0] + ((num27 == 2) ? 32 : 0);
param.tile = row4._tiles[0] + ((num29 == 2) ? 32 : 0);
param.mat = ((sourceBridge.DefaultMaterial == row4.DefaultMaterial) ? sourceBridge.DefaultMaterial : row4.DefaultMaterial);
param.matColor = ((row4.colorMod == 0) ? 104025 : GetColorInt(ref param.mat.matColor, row4.colorMod));
}
@@ -2518,9 +2527,9 @@ public virtual void DrawTile()
}
param.y += ugFixBridgeTop.y;
param.z += ugFixBridgeTop.z;
for (int n = 0; n < num27; n++)
for (int n = 0; n < num29; n++)
{
if (n == num27 - 1)
if (n == num29 - 1)
{
param.y = (float)(cz - cx) * screen.tileAlign.y + (float)height * _heightMod.y + ugFixBridgeBottom.y;
param.z = 1000f + param.x * screen.tileWeight.x + param.y * screen.tileWeight.z + (float)height * _heightMod.z + ugFixBridgeBottom.z;
@@ -2552,7 +2561,7 @@ public virtual void DrawTile()
{
snowed = false;
}
num18 = 0;
num20 = 0;
if (sourceBlock.id != 0)
{
this.tileType = sourceBlock.tileType;
@@ -2625,8 +2634,8 @@ public virtual void DrawTile()
roomHeight = 0f;
break;
}
int num28 = ((this.room.data.maxHeight == 0) ? 2 : this.room.data.maxHeight);
roomHeight = EMono.setting.render.roomHeightMod * (float)((this.room.lot.height < num28) ? this.room.lot.height : num28) + 0.01f * (float)this.room.lot.heightFix;
int num30 = ((this.room.data.maxHeight == 0) ? 2 : this.room.data.maxHeight);
roomHeight = EMono.setting.render.roomHeightMod * (float)((this.room.lot.height < num30) ? this.room.lot.height : num30) + 0.01f * (float)this.room.lot.heightFix;
}
break;
case WallClipMode.ByLot:
@@ -2672,11 +2681,11 @@ public virtual void DrawTile()
}
if (!_lowblock && (double)roomHeight > 1.2 && this.tileType.RepeatBlock)
{
num18 = 1;
num20 = 1;
}
else if (lowBlock)
{
num18 = 2;
num20 = 2;
}
param.mat = matBlock;
param.dir = this.cell.blockDir;
@@ -2723,8 +2732,8 @@ public virtual void DrawTile()
}
if (!_lowblock)
{
int num29 = ((currentRoom.data.maxHeight == 0) ? 2 : currentRoom.data.maxHeight);
roomHeight = EMono.setting.render.roomHeightMod * (float)((currentRoom.lot.height < num29) ? currentRoom.lot.height : num29) + 0.01f * (float)currentRoom.lot.heightFix;
int num31 = ((currentRoom.data.maxHeight == 0) ? 2 : currentRoom.data.maxHeight);
roomHeight = EMono.setting.render.roomHeightMod * (float)((currentRoom.lot.height < num31) ? currentRoom.lot.height : num31) + 0.01f * (float)currentRoom.lot.heightFix;
}
}
if (flag9)
@@ -2778,12 +2787,12 @@ public virtual void DrawTile()
param.tile = EMono.sources.blocks.rows[0].ConvertTile(1000 + room2.lot.idDeco2);
param.matColor = room2.lot.colDeco2;
float y2 = param.y;
float num30 = param.z;
float num32 = param.z;
param.y += (float)room2.lot.decoFix2 * 0.01f;
param.z += (float)room2.lot.decoFix2 * 0.01f * heightModDeco;
rendererWallDeco.Draw(param);
param.y = y2;
param.z = num30;
param.z = num32;
}
}
room2 = this.cell.Right.room ?? this.cell.room;
@@ -2807,12 +2816,12 @@ public virtual void DrawTile()
param.tile = EMono.sources.blocks.rows[0].ConvertTile(1000 + room2.lot.idDeco2) * -1;
param.matColor = room2.lot.colDeco2;
float y4 = param.y;
float num31 = param.z;
float num33 = param.z;
param.y += (float)room2.lot.decoFix2 * 0.01f;
param.z += (float)room2.lot.decoFix2 * 0.01f * heightModDeco;
rendererWallDeco.Draw(param);
param.y = y4;
param.z = num31;
param.z = num33;
}
}
break;
@@ -3010,8 +3019,8 @@ public virtual void DrawTile()
}
else
{
int num32 = ((room5.data.maxHeight == 0) ? 2 : room5.data.maxHeight);
roomHeight = EMono.setting.render.roomHeightMod * (float)((room5.lot.height < num32) ? room5.lot.height : num32) + 0.01f * (float)room5.lot.heightFix;
int num34 = ((room5.data.maxHeight == 0) ? 2 : room5.data.maxHeight);
roomHeight = EMono.setting.render.roomHeightMod * (float)((room5.lot.height < num34) ? room5.lot.height : num34) + 0.01f * (float)room5.lot.heightFix;
}
}
Cell back2 = this.cell.Back;
@@ -3084,14 +3093,14 @@ public virtual void DrawTile()
RenderData renderData2 = sourceBlock.renderData;
param.tile = sourceBlock._tiles[this.cell.blockDir % sourceBlock._tiles.Length];
param.matColor = ((sourceBlock.colorMod == 0) ? 104025 : GetColorInt(ref matBlock.matColor, sourceBlock.colorMod));
int num33 = this.cell.objDir + ((this.cell.objDir >= 7) ? this.cell.objDir : 0) + 1;
if (num33 == 0)
int num35 = this.cell.objDir + ((this.cell.objDir >= 7) ? this.cell.objDir : 0) + 1;
if (num35 == 0)
{
renderData2.Draw(param);
}
else
{
renderData2.DrawRepeat(param, num33, sourceBlock.tileType.RepeatSize);
renderData2.DrawRepeat(param, num35, sourceBlock.tileType.RepeatSize);
}
param.tile = renderData2.idShadow;
SourcePref shadowPref2 = renderData2.shadowPref;
Card
@@ -3018,10 +3018,6 @@ void TryAdd(Thing a)
public void PurgeDuplicateArtifact(Thing af)
{
if (EClass.debug.enable)
{
return;
}
List<Chara> list = new List<Chara>();
foreach (FactionBranch child in EClass.pc.faction.GetChildren())
{
{
dmg = dmg * 100 / Mathf.Clamp(105 + EClass.pc.Evalue(135) / 10, 10, 110);
}
if (HasElement(1218))
if (HasElement(1218) && attackSource != AttackSource.ManaBackfire && (hp > 0 || Evalue(1421) <= 0))
{
dmg = dmg * (1000 - Evalue(1218)) / 1000;
if (dmg <= 0 && EClass.rnd(4) == 0)
if (EClass.player.invlunerable)
{
EvadeDeath();
goto IL_0af8;
goto IL_0b19;
}
}
if (IsPC && Evalue(1220) > 0 && Chara.stamina.value >= Chara.stamina.max / 2)
}
}
}
goto IL_0af8;
IL_0af8:
goto IL_0b19;
IL_0b19:
if (trait.CanBeAttacked)
{
renderer.PlayAnime(AnimeID.HitObj);
Chara
@@ -1246,6 +1246,10 @@ public void OnBanish()
return;
}
memberType = FactionMemberType.Default;
foreach (Thing item in things.List((Thing a) => a.HasTag(CTAG.godArtifact)))
{
EClass.pc.PickOrDrop(EClass.pc.pos, item);
}
UniqueData uniqueData = base.c_uniqueData;
if (uniqueData != null)
{
ConStrife
@@ -26,6 +26,10 @@ public override bool CanStack(Condition c)
public void AddKill(Chara c)
{
if (c == null)
{
return;
}
if (c.IsPCFactionOrMinion)
{
if (c.IsMinion)
FactionBranch
@@ -1391,44 +1391,49 @@ public void AddFeat(int ele, int v)
public void AddMemeber(Chara c)
{
if (!members.Contains(c))
if (members.Contains(c))
{
EClass.Home.FindBranch(c)?.RemoveMemeber(c);
EClass.Home.RemoveReserve(c);
c.SetGlobal();
c.SetFaction(EClass.Home);
c.SetHomeZone(owner);
if (c.OriginalHostility <= Hostility.Ally)
{
c.c_originalHostility = Hostility.Ally;
}
c.hostility = Hostility.Ally;
c.enemy = null;
c.orgPos = null;
if (c.memberType != 0 && c.memberType != FactionMemberType.Livestock)
{
c.memberType = FactionMemberType.Default;
}
if (c.hp > c.MaxHP)
{
c.hp = c.MaxHP;
}
if (c.mana.value > c.mana.max)
{
c.mana.value = c.mana.max;
}
if (c.stamina.value > c.stamina.max)
{
c.stamina.value = c.stamina.max;
}
members.Add(c);
EClass.pc.faction.charaElements.OnAddMemeber(c);
RefreshEfficiency();
c.RefreshWorkElements(elements);
if (uidMaid == 0 && c.id == "maid")
{
uidMaid = c.uid;
}
return;
}
EClass.Home.FindBranch(c)?.RemoveMemeber(c);
EClass.Home.RemoveReserve(c);
c.SetGlobal();
c.SetFaction(EClass.Home);
c.SetHomeZone(owner);
foreach (Thing item in c.things.List((Thing a) => a.HasTag(CTAG.godArtifact)).Copy())
{
c.PurgeDuplicateArtifact(item);
}
if (c.OriginalHostility <= Hostility.Ally)
{
c.c_originalHostility = Hostility.Ally;
}
c.hostility = Hostility.Ally;
c.enemy = null;
c.orgPos = null;
if (c.memberType != 0 && c.memberType != FactionMemberType.Livestock)
{
c.memberType = FactionMemberType.Default;
}
if (c.hp > c.MaxHP)
{
c.hp = c.MaxHP;
}
if (c.mana.value > c.mana.max)
{
c.mana.value = c.mana.max;
}
if (c.stamina.value > c.stamina.max)
{
c.stamina.value = c.stamina.max;
}
members.Add(c);
EClass.pc.faction.charaElements.OnAddMemeber(c);
RefreshEfficiency();
c.RefreshWorkElements(elements);
if (uidMaid == 0 && c.id == "maid")
{
uidMaid = c.uid;
}
}
LayerInventory
@@ -582,6 +582,10 @@ public static LayerInventory CreateContainer(Card owner, Card container)
ELayer.ui.AddLayer(layerInventory);
if (container.id == "barrel")
{
if ((bool)WidgetFeed.Instance)
{
WidgetFeed.Instance.Nerun("barrel".langList().RandomItem());
}
ELayer.player.forceTalk = true;
ELayer.pc.party.members.RandomItem().Talk("barrel");
}
Zone
@@ -2306,7 +2306,7 @@ public void Generate()
Point randomSurface2 = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
if (!randomSurface2.HasObj)
{
Thing t2 = ThingGen.Create("pearl_oyster");
Thing t2 = ThingGen.Create("pearl_oyster", new string[3] { "wood_birch", "poplar", "coralwood" }.RandomItem());
EClass._zone.AddCard(t2, randomSurface2).Install();
}
}