added filter: only check when zones contains towers

This commit is contained in:
AxeelAnder 2018-10-24 15:56:24 +08:00
parent 2ea9a0161b
commit 42e413012d

View file

@ -1006,32 +1006,35 @@ namespace TShockAPI
/// <param name="args">The packet arguments that the event has.</param> /// <param name="args">The packet arguments that the event has.</param>
internal void OnPlayerZone(object sender, GetDataHandlers.PlayerZoneEventArgs args) internal void OnPlayerZone(object sender, GetDataHandlers.PlayerZoneEventArgs args)
{ {
bool hasSolarTower = false; if(args.Zone2[1] || args.Zone2[2] || args.Zone2[3] || args.Zone2[4])
bool hasVortexTower = false;
bool hasNebulaTower = false;
bool hasStardustTower = false;
// May need to optimize
foreach (var npc in Main.npc)
{ {
if (npc.netID == NPCID.LunarTowerSolar) bool hasSolarTower = false;
hasSolarTower = true; bool hasVortexTower = false;
else if (npc.netID == NPCID.LunarTowerVortex) bool hasNebulaTower = false;
hasVortexTower = true; bool hasStardustTower = false;
else if (npc.netID == NPCID.LunarTowerNebula)
hasNebulaTower = true;
else if (npc.netID == NPCID.LunarTowerStardust)
hasStardustTower = true;
}
if((args.Zone2[1] && !hasSolarTower) // May need to optimize
|| (args.Zone2[2] && !hasVortexTower) foreach (var npc in Main.npc)
|| (args.Zone2[3] && !hasNebulaTower) {
|| (args.Zone2[4] && !hasStardustTower) if (npc.netID == NPCID.LunarTowerSolar)
) hasSolarTower = true;
{ else if (npc.netID == NPCID.LunarTowerVortex)
args.Handled = true; hasVortexTower = true;
return; else if (npc.netID == NPCID.LunarTowerNebula)
hasNebulaTower = true;
else if (npc.netID == NPCID.LunarTowerStardust)
hasStardustTower = true;
}
if ((args.Zone2[1] && !hasSolarTower)
|| (args.Zone2[2] && !hasVortexTower)
|| (args.Zone2[3] && !hasNebulaTower)
|| (args.Zone2[4] && !hasStardustTower)
)
{
args.Handled = true;
return;
}
} }
} }