Fixed probable random player NPE in solo instances.

This commit is contained in:
MobiusDevelopment 2022-08-22 22:18:07 +00:00
parent 7765b83c16
commit 573f765b23
15 changed files with 72 additions and 57 deletions

View File

@ -354,7 +354,8 @@ public class BaylorWarzone extends AbstractInstance
{
giveItems(member, BENUSTAS_REWARD_BOX);
}
final Player randomPlayer = world.getFirstPlayer().getParty().getRandomPlayer();
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);

View File

@ -337,7 +337,8 @@ public class AshenShadowRevolutionaries extends AbstractInstance
{
giveItems(member, BENUSTAS_REWARD_BOX);
}
final Player randomPlayer = world.getFirstPlayer().getParty().getRandomPlayer();
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);

View File

@ -154,26 +154,27 @@ public class NightmareKamaloka extends AbstractInstance
@Override
public String onKill(Npc npc, Player killer, boolean isSummon)
{
final Instance instance = npc.getInstanceWorld();
if (isInInstance(instance))
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
final int nextDoorId = BOSS_MAP.getOrDefault(npc.getId(), -1);
if (nextDoorId == -1)
{
for (Player member : instance.getPlayers())
for (Player member : world.getPlayers())
{
giveItems(member, BENUSTAS_REWARD_BOX);
}
final Player randomPlayer = instance.getFirstPlayer().getParty().getRandomPlayer();
if ((randomPlayer != null) && (getRandom(100) < 80) && (instance.getPlayersCount() == instance.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);
}
instance.finishInstance();
world.finishInstance();
}
else
{
instance.openCloseDoor(nextDoorId, true);
world.openCloseDoor(nextDoorId, true);
}
}
return super.onKill(npc, killer, isSummon);

View File

@ -366,7 +366,8 @@ public class BaylorWarzone extends AbstractInstance
{
giveItems(member, world.getTemplateId() == TEMPLATE_IDS[0] ? BENUSTAS_REWARD_BOX : BENUSTAS_REWARD_BOX_110);
}
final Player randomPlayer = world.getFirstPlayer().getParty().getRandomPlayer();
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);

View File

@ -382,7 +382,8 @@ public class AshenShadowRevolutionaries extends AbstractInstance
{
giveItems(member, world.getTemplateId() == TEMPLATE_IDS[0] ? BENUSTAS_REWARD_BOX : BENUSTAS_REWARD_BOX_110);
}
final Player randomPlayer = world.getFirstPlayer().getParty().getRandomPlayer();
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);

View File

@ -441,7 +441,8 @@ public class KrofinNest extends AbstractInstance
{
final boolean kroshaFirstFormMinionsSpawnedTwice = world.getParameters().getBoolean("KROSHA_FIRST_FORM_MINIONS_SPAWNED_TWICE", false);
final boolean kroshaFinalFormSpawned = world.getParameters().getBoolean("KROSHA_FINAL_FORM_SPAWNED", false);
final Player randomPl = world.getFirstPlayer().getParty().getRandomPlayer();
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if (world.getStatus() == 5)
{
if (CommonUtil.contains(KROSHA_FIRST_FORM_MINIONS, npc.getId()))
@ -473,9 +474,9 @@ public class KrofinNest extends AbstractInstance
{
giveItems(member, BENUSTAS_REWARD_BOX);
}
if ((randomPl != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPl, BENUSTAS_SHINING_REWARD_BOX);
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);
}
showOnScreenMsg(world, NpcStringId.THE_WATER_POWER_PROTECTING_QUEEN_KROSHA_HAS_DISAPPEARED, ExShowScreenMessage.TOP_CENTER, 7000, true);
world.finishInstance();
@ -486,9 +487,9 @@ public class KrofinNest extends AbstractInstance
{
giveItems(member, BENUSTAS_REWARD_BOX_110);
}
if ((randomPl != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPl, BENUSTAS_SHINING_REWARD_BOX);
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);
}
showOnScreenMsg(world, NpcStringId.THE_WATER_POWER_PROTECTING_QUEEN_KROSHA_HAS_DISAPPEARED, ExShowScreenMessage.TOP_CENTER, 7000, true);
world.finishInstance();

View File

@ -169,26 +169,27 @@ public class NightmareKamaloka extends AbstractInstance
@Override
public String onKill(Npc npc, Player killer, boolean isSummon)
{
final Instance instance = npc.getInstanceWorld();
if (isInInstance(instance))
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
final int nextDoorId = instance.getTemplateId() == TEMPLATE_IDS[0] ? BOSS_MAP.getOrDefault(npc.getId(), -1) : BOSS_MAP_110.getOrDefault(npc.getId(), -1);
final int nextDoorId = world.getTemplateId() == TEMPLATE_IDS[0] ? BOSS_MAP.getOrDefault(npc.getId(), -1) : BOSS_MAP_110.getOrDefault(npc.getId(), -1);
if (nextDoorId == -1)
{
for (Player member : instance.getPlayers())
for (Player member : world.getPlayers())
{
giveItems(member, instance.getTemplateId() == TEMPLATE_IDS[0] ? BENUSTAS_REWARD_BOX : BENUSTAS_REWARD_BOX_110);
giveItems(member, world.getTemplateId() == TEMPLATE_IDS[0] ? BENUSTAS_REWARD_BOX : BENUSTAS_REWARD_BOX_110);
}
final Player randomPlayer = instance.getFirstPlayer().getParty().getRandomPlayer();
if ((randomPlayer != null) && (getRandom(100) < 80) && (instance.getPlayersCount() == instance.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);
}
instance.finishInstance();
world.finishInstance();
}
else
{
instance.openCloseDoor(nextDoorId, true);
world.openCloseDoor(nextDoorId, true);
}
}
return super.onKill(npc, killer, isSummon);

View File

@ -366,7 +366,8 @@ public class BaylorWarzone extends AbstractInstance
{
giveItems(member, world.getTemplateId() == TEMPLATE_IDS[0] ? BENUSTAS_REWARD_BOX : BENUSTAS_REWARD_BOX_110);
}
final Player randomPlayer = world.getFirstPlayer().getParty().getRandomPlayer();
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);

View File

@ -382,7 +382,8 @@ public class AshenShadowRevolutionaries extends AbstractInstance
{
giveItems(member, world.getTemplateId() == TEMPLATE_IDS[0] ? BENUSTAS_REWARD_BOX : BENUSTAS_REWARD_BOX_110);
}
final Player randomPlayer = world.getFirstPlayer().getParty().getRandomPlayer();
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);

View File

@ -441,7 +441,8 @@ public class KrofinNest extends AbstractInstance
{
final boolean kroshaFirstFormMinionsSpawnedTwice = world.getParameters().getBoolean("KROSHA_FIRST_FORM_MINIONS_SPAWNED_TWICE", false);
final boolean kroshaFinalFormSpawned = world.getParameters().getBoolean("KROSHA_FINAL_FORM_SPAWNED", false);
final Player randomPl = world.getFirstPlayer().getParty().getRandomPlayer();
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if (world.getStatus() == 5)
{
if (CommonUtil.contains(KROSHA_FIRST_FORM_MINIONS, npc.getId()))
@ -473,9 +474,9 @@ public class KrofinNest extends AbstractInstance
{
giveItems(member, BENUSTAS_REWARD_BOX);
}
if ((randomPl != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPl, BENUSTAS_SHINING_REWARD_BOX);
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);
}
showOnScreenMsg(world, NpcStringId.THE_WATER_POWER_PROTECTING_QUEEN_KROSHA_HAS_DISAPPEARED, ExShowScreenMessage.TOP_CENTER, 7000, true);
world.finishInstance();
@ -486,9 +487,9 @@ public class KrofinNest extends AbstractInstance
{
giveItems(member, BENUSTAS_REWARD_BOX_110);
}
if ((randomPl != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPl, BENUSTAS_SHINING_REWARD_BOX);
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);
}
showOnScreenMsg(world, NpcStringId.THE_WATER_POWER_PROTECTING_QUEEN_KROSHA_HAS_DISAPPEARED, ExShowScreenMessage.TOP_CENTER, 7000, true);
world.finishInstance();

View File

@ -169,26 +169,27 @@ public class NightmareKamaloka extends AbstractInstance
@Override
public String onKill(Npc npc, Player killer, boolean isSummon)
{
final Instance instance = npc.getInstanceWorld();
if (isInInstance(instance))
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
final int nextDoorId = instance.getTemplateId() == TEMPLATE_IDS[0] ? BOSS_MAP.getOrDefault(npc.getId(), -1) : BOSS_MAP_110.getOrDefault(npc.getId(), -1);
final int nextDoorId = world.getTemplateId() == TEMPLATE_IDS[0] ? BOSS_MAP.getOrDefault(npc.getId(), -1) : BOSS_MAP_110.getOrDefault(npc.getId(), -1);
if (nextDoorId == -1)
{
for (Player member : instance.getPlayers())
for (Player member : world.getPlayers())
{
giveItems(member, instance.getTemplateId() == TEMPLATE_IDS[0] ? BENUSTAS_REWARD_BOX : BENUSTAS_REWARD_BOX_110);
giveItems(member, world.getTemplateId() == TEMPLATE_IDS[0] ? BENUSTAS_REWARD_BOX : BENUSTAS_REWARD_BOX_110);
}
final Player randomPlayer = instance.getFirstPlayer().getParty().getRandomPlayer();
if ((randomPlayer != null) && (getRandom(100) < 80) && (instance.getPlayersCount() == instance.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);
}
instance.finishInstance();
world.finishInstance();
}
else
{
instance.openCloseDoor(nextDoorId, true);
world.openCloseDoor(nextDoorId, true);
}
}
return super.onKill(npc, killer, isSummon);

View File

@ -366,7 +366,8 @@ public class BaylorWarzone extends AbstractInstance
{
giveItems(member, world.getTemplateId() == TEMPLATE_IDS[0] ? BENUSTAS_REWARD_BOX : BENUSTAS_REWARD_BOX_110);
}
final Player randomPlayer = world.getFirstPlayer().getParty().getRandomPlayer();
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);

View File

@ -382,7 +382,8 @@ public class AshenShadowRevolutionaries extends AbstractInstance
{
giveItems(member, world.getTemplateId() == TEMPLATE_IDS[0] ? BENUSTAS_REWARD_BOX : BENUSTAS_REWARD_BOX_110);
}
final Player randomPlayer = world.getFirstPlayer().getParty().getRandomPlayer();
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);

View File

@ -441,7 +441,8 @@ public class KrofinNest extends AbstractInstance
{
final boolean kroshaFirstFormMinionsSpawnedTwice = world.getParameters().getBoolean("KROSHA_FIRST_FORM_MINIONS_SPAWNED_TWICE", false);
final boolean kroshaFinalFormSpawned = world.getParameters().getBoolean("KROSHA_FINAL_FORM_SPAWNED", false);
final Player randomPl = world.getFirstPlayer().getParty().getRandomPlayer();
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if (world.getStatus() == 5)
{
if (CommonUtil.contains(KROSHA_FIRST_FORM_MINIONS, npc.getId()))
@ -473,9 +474,9 @@ public class KrofinNest extends AbstractInstance
{
giveItems(member, BENUSTAS_REWARD_BOX);
}
if ((randomPl != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPl, BENUSTAS_SHINING_REWARD_BOX);
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);
}
showOnScreenMsg(world, NpcStringId.THE_WATER_POWER_PROTECTING_QUEEN_KROSHA_HAS_DISAPPEARED, ExShowScreenMessage.TOP_CENTER, 7000, true);
world.finishInstance();
@ -486,9 +487,9 @@ public class KrofinNest extends AbstractInstance
{
giveItems(member, BENUSTAS_REWARD_BOX_110);
}
if ((randomPl != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPl, BENUSTAS_SHINING_REWARD_BOX);
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);
}
showOnScreenMsg(world, NpcStringId.THE_WATER_POWER_PROTECTING_QUEEN_KROSHA_HAS_DISAPPEARED, ExShowScreenMessage.TOP_CENTER, 7000, true);
world.finishInstance();

View File

@ -169,26 +169,27 @@ public class NightmareKamaloka extends AbstractInstance
@Override
public String onKill(Npc npc, Player killer, boolean isSummon)
{
final Instance instance = npc.getInstanceWorld();
if (isInInstance(instance))
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
final int nextDoorId = instance.getTemplateId() == TEMPLATE_IDS[0] ? BOSS_MAP.getOrDefault(npc.getId(), -1) : BOSS_MAP_110.getOrDefault(npc.getId(), -1);
final int nextDoorId = world.getTemplateId() == TEMPLATE_IDS[0] ? BOSS_MAP.getOrDefault(npc.getId(), -1) : BOSS_MAP_110.getOrDefault(npc.getId(), -1);
if (nextDoorId == -1)
{
for (Player member : instance.getPlayers())
for (Player member : world.getPlayers())
{
giveItems(member, instance.getTemplateId() == TEMPLATE_IDS[0] ? BENUSTAS_REWARD_BOX : BENUSTAS_REWARD_BOX_110);
giveItems(member, world.getTemplateId() == TEMPLATE_IDS[0] ? BENUSTAS_REWARD_BOX : BENUSTAS_REWARD_BOX_110);
}
final Player randomPlayer = instance.getFirstPlayer().getParty().getRandomPlayer();
if ((randomPlayer != null) && (getRandom(100) < 80) && (instance.getPlayersCount() == instance.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
final Party party = world.getFirstPlayer().getParty();
final Player randomPlayer = party != null ? party.getRandomPlayer() : null;
if ((randomPlayer != null) && (getRandom(100) < 80) && (world.getPlayersCount() == world.getParameters().getInt("INITIAL_PARTY_MEMBERS", 0)))
{
giveItems(randomPlayer, BENUSTAS_SHINING_REWARD_BOX);
}
instance.finishInstance();
world.finishInstance();
}
else
{
instance.openCloseDoor(nextDoorId, true);
world.openCloseDoor(nextDoorId, true);
}
}
return super.onKill(npc, killer, isSummon);