Modified peace zone to accept enabled option.

This commit is contained in:
MobiusDev 2017-10-03 22:19:53 +00:00
parent 3e6efb52d1
commit ba934beb71
6 changed files with 184 additions and 14 deletions

View File

@ -17,7 +17,9 @@
package com.l2jmobius.gameserver.model.zone.type;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.zone.L2ZoneType;
import com.l2jmobius.gameserver.model.zone.ZoneId;
@ -36,6 +38,11 @@ public class L2PeaceZone extends L2ZoneType
@Override
protected void onEnter(L2Character character)
{
if (!isEnabled())
{
return;
}
if (character.isPlayer())
{
final L2PcInstance player = character.getActingPlayer();
@ -71,4 +78,40 @@ public class L2PeaceZone extends L2ZoneType
character.setInsideZone(ZoneId.NO_STORE, false);
}
}
@Override
public void setEnabled(boolean state)
{
super.setEnabled(state);
if (state)
{
for (L2PcInstance player : L2World.getInstance().getPlayers())
{
if ((player != null) && isInsideZone(player))
{
revalidateInZone(player);
if (player.getPet() != null)
{
revalidateInZone(player.getPet());
}
for (L2Summon summon : player.getServitors().values())
{
revalidateInZone(summon);
}
}
}
}
else
{
for (L2Character character : getCharactersInside())
{
if (character != null)
{
removeCharacter(character);
}
}
}
}
}

View File

@ -49,7 +49,6 @@ public final class GainakSiege extends AbstractNpcAI
{
private static final int SIEGE_EFFECT = 20140700;
private static final int SIEGE_DURATION = 30;
private static final L2PeaceZone GAINAK_PEACE_ZONE = ZoneManager.getInstance().getZoneById(60018, L2PeaceZone.class);
private static final L2SiegeZone GAINAK_SIEGE_ZONE = ZoneManager.getInstance().getZoneById(60019, L2SiegeZone.class);
private static final L2PeaceZone GAINAK_TOWN_ZONE = ZoneManager.getInstance().getZoneById(60020, L2PeaceZone.class);
protected static final int[] ASSASSIN_IDS =
@ -97,11 +96,11 @@ public final class GainakSiege extends AbstractNpcAI
if (_isInSiege)
{
_isInSiege = false;
GAINAK_PEACE_ZONE.setEnabled(true);
GAINAK_SIEGE_ZONE.setIsActive(false);
GAINAK_SIEGE_ZONE.updateZoneStatusForCharactersInside();
GAINAK_TOWN_ZONE.setEnabled(true); // enable before broadcast
GAINAK_TOWN_ZONE.broadcastPacket(new OnEventTrigger(SIEGE_EFFECT, false));
GAINAK_TOWN_ZONE.broadcastPacket(new ExShowScreenMessage(NpcStringId.GAINAK_IN_PEACE, ExShowScreenMessage.TOP_CENTER, 5000, true));
GAINAK_SIEGE_ZONE.setIsActive(false);
GAINAK_SIEGE_ZONE.updateZoneStatusForCharactersInside();
startQuestTimer("GAINAK_WAR", getTimeBetweenSieges() * 60000, null, null);
if (Config.ANNOUNCE_GAINAK_SIEGE)
{
@ -117,11 +116,11 @@ public final class GainakSiege extends AbstractNpcAI
addSpawn(ASSASSIN_IDS[getRandom(ASSASSIN_IDS.length)], loc, true, 1800000);
}
_isInSiege = true;
GAINAK_PEACE_ZONE.setEnabled(false);
GAINAK_SIEGE_ZONE.setIsActive(true);
GAINAK_SIEGE_ZONE.updateZoneStatusForCharactersInside();
GAINAK_TOWN_ZONE.broadcastPacket(new OnEventTrigger(SIEGE_EFFECT, true));
GAINAK_TOWN_ZONE.broadcastPacket(new ExShowScreenMessage(NpcStringId.GAINAK_IN_WAR, ExShowScreenMessage.TOP_CENTER, 5000, true));
GAINAK_TOWN_ZONE.setEnabled(false); // disable after broadcast
GAINAK_SIEGE_ZONE.setIsActive(true);
GAINAK_SIEGE_ZONE.updateZoneStatusForCharactersInside();
startQuestTimer("GAINAK_WAR", SIEGE_DURATION * 60000, null, null);
if (Config.ANNOUNCE_GAINAK_SIEGE)
{

View File

@ -17,7 +17,9 @@
package com.l2jmobius.gameserver.model.zone.type;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.zone.L2ZoneType;
import com.l2jmobius.gameserver.model.zone.ZoneId;
@ -36,6 +38,11 @@ public class L2PeaceZone extends L2ZoneType
@Override
protected void onEnter(L2Character character)
{
if (!isEnabled())
{
return;
}
if (character.isPlayer())
{
final L2PcInstance player = character.getActingPlayer();
@ -71,4 +78,40 @@ public class L2PeaceZone extends L2ZoneType
character.setInsideZone(ZoneId.NO_STORE, false);
}
}
@Override
public void setEnabled(boolean state)
{
super.setEnabled(state);
if (state)
{
for (L2PcInstance player : L2World.getInstance().getPlayers())
{
if ((player != null) && isInsideZone(player))
{
revalidateInZone(player);
if (player.getPet() != null)
{
revalidateInZone(player.getPet());
}
for (L2Summon summon : player.getServitors().values())
{
revalidateInZone(summon);
}
}
}
}
else
{
for (L2Character character : getCharactersInside())
{
if (character != null)
{
removeCharacter(character);
}
}
}
}
}

View File

@ -49,7 +49,6 @@ public final class GainakSiege extends AbstractNpcAI
{
private static final int SIEGE_EFFECT = 20140700;
private static final int SIEGE_DURATION = 30;
private static final L2PeaceZone GAINAK_PEACE_ZONE = ZoneManager.getInstance().getZoneById(60018, L2PeaceZone.class);
private static final L2SiegeZone GAINAK_SIEGE_ZONE = ZoneManager.getInstance().getZoneById(60019, L2SiegeZone.class);
private static final L2PeaceZone GAINAK_TOWN_ZONE = ZoneManager.getInstance().getZoneById(60020, L2PeaceZone.class);
protected static final int[] ASSASSIN_IDS =
@ -97,11 +96,11 @@ public final class GainakSiege extends AbstractNpcAI
if (_isInSiege)
{
_isInSiege = false;
GAINAK_PEACE_ZONE.setEnabled(true);
GAINAK_SIEGE_ZONE.setIsActive(false);
GAINAK_SIEGE_ZONE.updateZoneStatusForCharactersInside();
GAINAK_TOWN_ZONE.setEnabled(true); // enable before broadcast
GAINAK_TOWN_ZONE.broadcastPacket(new OnEventTrigger(SIEGE_EFFECT, false));
GAINAK_TOWN_ZONE.broadcastPacket(new ExShowScreenMessage(NpcStringId.GAINAK_IN_PEACE, ExShowScreenMessage.TOP_CENTER, 5000, true));
GAINAK_SIEGE_ZONE.setIsActive(false);
GAINAK_SIEGE_ZONE.updateZoneStatusForCharactersInside();
startQuestTimer("GAINAK_WAR", getTimeBetweenSieges() * 60000, null, null);
if (Config.ANNOUNCE_GAINAK_SIEGE)
{
@ -117,11 +116,11 @@ public final class GainakSiege extends AbstractNpcAI
addSpawn(ASSASSIN_IDS[getRandom(ASSASSIN_IDS.length)], loc, true, 1800000);
}
_isInSiege = true;
GAINAK_PEACE_ZONE.setEnabled(false);
GAINAK_SIEGE_ZONE.setIsActive(true);
GAINAK_SIEGE_ZONE.updateZoneStatusForCharactersInside();
GAINAK_TOWN_ZONE.broadcastPacket(new OnEventTrigger(SIEGE_EFFECT, true));
GAINAK_TOWN_ZONE.broadcastPacket(new ExShowScreenMessage(NpcStringId.GAINAK_IN_WAR, ExShowScreenMessage.TOP_CENTER, 5000, true));
GAINAK_TOWN_ZONE.setEnabled(false); // disable after broadcast
GAINAK_SIEGE_ZONE.setIsActive(true);
GAINAK_SIEGE_ZONE.updateZoneStatusForCharactersInside();
startQuestTimer("GAINAK_WAR", SIEGE_DURATION * 60000, null, null);
if (Config.ANNOUNCE_GAINAK_SIEGE)
{

View File

@ -17,7 +17,9 @@
package com.l2jmobius.gameserver.model.zone.type;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.zone.L2ZoneType;
import com.l2jmobius.gameserver.model.zone.ZoneId;
@ -36,6 +38,11 @@ public class L2PeaceZone extends L2ZoneType
@Override
protected void onEnter(L2Character character)
{
if (!isEnabled())
{
return;
}
if (character.isPlayer())
{
final L2PcInstance player = character.getActingPlayer();
@ -71,4 +78,40 @@ public class L2PeaceZone extends L2ZoneType
character.setInsideZone(ZoneId.NO_STORE, false);
}
}
@Override
public void setEnabled(boolean state)
{
super.setEnabled(state);
if (state)
{
for (L2PcInstance player : L2World.getInstance().getPlayers())
{
if ((player != null) && isInsideZone(player))
{
revalidateInZone(player);
if (player.getPet() != null)
{
revalidateInZone(player.getPet());
}
for (L2Summon summon : player.getServitors().values())
{
revalidateInZone(summon);
}
}
}
}
else
{
for (L2Character character : getCharactersInside())
{
if (character != null)
{
removeCharacter(character);
}
}
}
}
}

View File

@ -17,7 +17,9 @@
package com.l2jmobius.gameserver.model.zone.type;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.zone.L2ZoneType;
import com.l2jmobius.gameserver.model.zone.ZoneId;
@ -36,6 +38,11 @@ public class L2PeaceZone extends L2ZoneType
@Override
protected void onEnter(L2Character character)
{
if (!isEnabled())
{
return;
}
if (character.isPlayer())
{
final L2PcInstance player = character.getActingPlayer();
@ -71,4 +78,40 @@ public class L2PeaceZone extends L2ZoneType
character.setInsideZone(ZoneId.NO_STORE, false);
}
}
@Override
public void setEnabled(boolean state)
{
super.setEnabled(state);
if (state)
{
for (L2PcInstance player : L2World.getInstance().getPlayers())
{
if ((player != null) && isInsideZone(player))
{
revalidateInZone(player);
if (player.getPet() != null)
{
revalidateInZone(player.getPet());
}
for (L2Summon summon : player.getServitors().values())
{
revalidateInZone(summon);
}
}
}
}
else
{
for (L2Character character : getCharactersInside())
{
if (character != null)
{
removeCharacter(character);
}
}
}
}
}