Skip to content

Commit 807384b

Browse files
Pillar towers sync their defeation upon death
Vanilla does update their downed states in the WorldData sync. However, it does not trigger when the Pillars are killed, which is what we want, but are instead updated when all are defeated.
1 parent d3141a3 commit 807384b

File tree

3 files changed

+28
-37
lines changed

3 files changed

+28
-37
lines changed

NPCAssist.cs

+14-26
Original file line numberDiff line numberDiff line change
@@ -94,34 +94,22 @@ public override void OnKill(NPC npc) {
9494
/// <summary>
9595
/// Handles all of BossChecklist's custom downed variables, makring them as defeated and updating all clients when needed.
9696
/// </summary>
97-
public void HandleDownedNPCs(int npcType) {
97+
/// <returns>If the corresponding flag was flipped.</returns>
98+
internal static bool HandleDownedNPCs(int npcType) {
9899
if (!WorldAssist.TrackingDowns)
99-
return;
100+
return false;
100101

101-
if ((npcType == NPCID.DD2DarkMageT1 || npcType == NPCID.DD2DarkMageT3) && !WorldAssist.downedDarkMage) {
102-
WorldAssist.downedDarkMage = true;
103-
if (Main.netMode == NetmodeID.Server) {
104-
NetMessage.SendData(MessageID.WorldData);
105-
}
106-
}
107-
else if ((npcType == NPCID.DD2OgreT2 || npcType == NPCID.DD2OgreT3) && !WorldAssist.downedOgre) {
108-
WorldAssist.downedOgre = true;
109-
if (Main.netMode == NetmodeID.Server) {
110-
NetMessage.SendData(MessageID.WorldData);
111-
}
112-
}
113-
else if (npcType == NPCID.PirateShip && !WorldAssist.downedFlyingDutchman) {
114-
WorldAssist.downedFlyingDutchman = true;
115-
if (Main.netMode == NetmodeID.Server) {
116-
NetMessage.SendData(MessageID.WorldData);
117-
}
118-
}
119-
else if (npcType == NPCID.MartianSaucerCore && !WorldAssist.downedMartianSaucer) {
120-
WorldAssist.downedMartianSaucer = true;
121-
if (Main.netMode == NetmodeID.Server) {
122-
NetMessage.SendData(MessageID.WorldData);
123-
}
124-
}
102+
return npcType switch {
103+
NPCID.DD2DarkMageT1 | NPCID.DD2DarkMageT1 => Networking.DownedEntryCheck(ref WorldAssist.downedDarkMage),
104+
NPCID.DD2OgreT2 | NPCID.DD2OgreT3 => Networking.DownedEntryCheck(ref WorldAssist.downedOgre),
105+
NPCID.PirateShip => Networking.DownedEntryCheck(ref WorldAssist.downedFlyingDutchman),
106+
NPCID.MartianSaucerCore => Networking.DownedEntryCheck(ref WorldAssist.downedMartianSaucer),
107+
NPCID.LunarTowerVortex => Networking.DownedEntryCheck(ref NPC.downedTowerVortex),
108+
NPCID.LunarTowerStardust => Networking.DownedEntryCheck(ref NPC.downedTowerStardust),
109+
NPCID.LunarTowerNebula => Networking.DownedEntryCheck(ref NPC.downedTowerNebula),
110+
NPCID.LunarTowerSolar => Networking.DownedEntryCheck(ref NPC.downedTowerSolar),
111+
_ => false
112+
};
125113
}
126114
}
127115
}

Networking.cs

+10
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ internal class Networking {
3131
public static bool NewWorldRecord(NetRecordID netRecord) => netRecord.HasFlag(NetRecordID.WorldRecord_Duration) || netRecord.HasFlag(NetRecordID.WorldRecord_HitsTaken);
3232
public static bool ResettingRecords(NetRecordID netRecord) => netRecord.HasFlag(NetRecordID.PersonalBest_Reset) || netRecord.HasFlag(NetRecordID.FirstVictory_Reset);
3333

34+
public static bool DownedEntryCheck(ref bool downed) {
35+
bool temp = downed;
36+
downed = true;
37+
if (temp == false && Main.netMode == NetmodeID.Server) {
38+
NetMessage.SendData(MessageID.WorldData);
39+
return true;
40+
}
41+
return false;
42+
}
43+
3444
/// <summary>
3545
/// Send a packet to the server to add, remove, or clear entries from the hidden entries list.
3646
/// </summary>

WorldAssist.cs

+4-11
Original file line numberDiff line numberDiff line change
@@ -185,14 +185,11 @@ public override void NetSend(BinaryWriter writer) {
185185
};
186186
writer.Write(flags);
187187

188-
//8 flags added, do not add more, move onto next BitsByte
188+
/* 8 flags added, do not add more, move onto next BitsByte
189189
flags = new BitsByte {
190-
[0] = NPC.downedTowerSolar,
191-
[1] = NPC.downedTowerVortex,
192-
[2] = NPC.downedTowerNebula,
193-
[3] = NPC.downedTowerStardust,
190+
194191
};
195-
writer.Write(flags);
192+
writer.Write(flags); */
196193

197194
writer.Write(HiddenEntries.Count);
198195
foreach (var bossKey in HiddenEntries) {
@@ -216,11 +213,7 @@ public override void NetReceive(BinaryReader reader) {
216213
downedFlyingDutchman = flags[6];
217214
downedMartianSaucer = flags[7];
218215

219-
flags = reader.ReadByte();
220-
NPC.downedTowerSolar = flags[0];
221-
NPC.downedTowerVortex = flags[1];
222-
NPC.downedTowerNebula = flags[2];
223-
NPC.downedTowerStardust = flags[3];
216+
//flags = reader.ReadByte();
224217

225218
HiddenEntries.Clear();
226219
int count = reader.ReadInt32();

0 commit comments

Comments
 (0)