Merged with released L2J-Unity files.
This commit is contained in:
113
trunk/dist/game/data/scripts/ai/areas/FantasyIsle/HandysBlockCheckerEvent.java
vendored
Normal file
113
trunk/dist/game/data/scripts/ai/areas/FantasyIsle/HandysBlockCheckerEvent.java
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package ai.areas.FantasyIsle;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.l2jmobius.Config;
|
||||
import com.l2jmobius.gameserver.instancemanager.HandysBlockCheckerManager;
|
||||
import com.l2jmobius.gameserver.model.ArenaParticipantsHolder;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.ExCubeGameChangeTimeToStart;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.ExCubeGameRequestReady;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.ExCubeGameTeamList;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
|
||||
/**
|
||||
* Handys Block Checker Event AI.
|
||||
* @authors BiggBoss, Gigiikun
|
||||
*/
|
||||
public class HandysBlockCheckerEvent extends AbstractNpcAI
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(HandysBlockCheckerEvent.class.getName());
|
||||
|
||||
// Arena Managers
|
||||
private static final int A_MANAGER_1 = 32521;
|
||||
private static final int A_MANAGER_2 = 32522;
|
||||
private static final int A_MANAGER_3 = 32523;
|
||||
private static final int A_MANAGER_4 = 32524;
|
||||
|
||||
public HandysBlockCheckerEvent()
|
||||
{
|
||||
addFirstTalkId(A_MANAGER_1, A_MANAGER_2, A_MANAGER_3, A_MANAGER_4);
|
||||
HandysBlockCheckerManager.getInstance().startUpParticipantsQueue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
if ((npc == null) || (player == null))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
final int arena = npc.getId() - A_MANAGER_1;
|
||||
if (eventIsFull(arena))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.YOU_CANNOT_REGISTER_BECAUSE_CAPACITY_HAS_BEEN_EXCEEDED);
|
||||
return null;
|
||||
}
|
||||
|
||||
if (HandysBlockCheckerManager.getInstance().arenaIsBeingUsed(arena))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.THE_MATCH_IS_BEING_PREPARED_PLEASE_TRY_AGAIN_LATER);
|
||||
return null;
|
||||
}
|
||||
|
||||
if (HandysBlockCheckerManager.getInstance().addPlayerToArena(player, arena))
|
||||
{
|
||||
final ArenaParticipantsHolder holder = HandysBlockCheckerManager.getInstance().getHolder(arena);
|
||||
|
||||
final ExCubeGameTeamList tl = new ExCubeGameTeamList(holder.getRedPlayers(), holder.getBluePlayers(), arena);
|
||||
|
||||
player.sendPacket(tl);
|
||||
|
||||
final int countBlue = holder.getBlueTeamSize();
|
||||
final int countRed = holder.getRedTeamSize();
|
||||
final int minMembers = Config.MIN_BLOCK_CHECKER_TEAM_MEMBERS;
|
||||
|
||||
if ((countBlue >= minMembers) && (countRed >= minMembers))
|
||||
{
|
||||
holder.updateEvent();
|
||||
holder.broadCastPacketToTeam(ExCubeGameRequestReady.STATIC_PACKET);
|
||||
holder.broadCastPacketToTeam(new ExCubeGameChangeTimeToStart(10));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private boolean eventIsFull(int arena)
|
||||
{
|
||||
return HandysBlockCheckerManager.getInstance().getHolder(arena).getAllPlayers().size() == 12;
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
if (Config.ENABLE_BLOCK_CHECKER_EVENT)
|
||||
{
|
||||
new HandysBlockCheckerEvent();
|
||||
LOGGER.info("Handy's Block Checker Event is enabled");
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER.info("Handy's Block Checker Event is disabled");
|
||||
}
|
||||
}
|
||||
}
|
259
trunk/dist/game/data/scripts/ai/areas/FantasyIsle/Parade.java
vendored
Normal file
259
trunk/dist/game/data/scripts/ai/areas/FantasyIsle/Parade.java
vendored
Normal file
@@ -0,0 +1,259 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package ai.areas.FantasyIsle;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
|
||||
import com.l2jmobius.gameserver.GameTimeController;
|
||||
import com.l2jmobius.gameserver.ThreadPoolManager;
|
||||
import com.l2jmobius.gameserver.ai.CtrlIntention;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
|
||||
/**
|
||||
* Fantasy Isle Parade
|
||||
* @author JOJO, Pandragon
|
||||
*/
|
||||
public final class Parade extends AbstractNpcAI
|
||||
{
|
||||
// @formatter:off
|
||||
final int[] ACTORS =
|
||||
{
|
||||
32379, 0, 32379,
|
||||
32379, 0, 32379,
|
||||
32379, 0, 32379,
|
||||
0, 0, 0,
|
||||
32380, 0, 32380,
|
||||
32380, 32381, 32380,
|
||||
32380, 0, 32380,
|
||||
32380, 32381, 32380,
|
||||
0, 0, 0,
|
||||
32382, 32382, 32382,
|
||||
32382, 32383, 32382,
|
||||
32383, 32384, 32383,
|
||||
32383, 32384, 32383,
|
||||
0, 0, 0,
|
||||
0, 32385, 0,
|
||||
32385, 0, 32385,
|
||||
0, 32385, 0,
|
||||
0, 0, 0,
|
||||
32412, 0, 32411,
|
||||
0, 0, 0,
|
||||
32421, 0, 32409,
|
||||
32423, 0, 32422,
|
||||
0, 0, 0,
|
||||
32420, 32419, 32417,
|
||||
32418, 0, 32416,
|
||||
0, 0, 0,
|
||||
32414, 0, 32414,
|
||||
0, 32413, 0,
|
||||
32414, 0, 32414,
|
||||
0, 0, 0,
|
||||
32393, 0, 32394,
|
||||
0, 32430, 0,
|
||||
32392, 0, 32391,
|
||||
0, 0, 0,
|
||||
0, 32404, 0,
|
||||
32403, 0, 32401,
|
||||
0, 0, 0,
|
||||
0, 32408, 0,
|
||||
32406, 0, 32407,
|
||||
0, 32405, 0,
|
||||
0, 0, 0,
|
||||
32390, 32389, 32387,
|
||||
32388, 0, 32386,
|
||||
0, 0, 0,
|
||||
0, 32400, 0,
|
||||
32397, 32398, 32396,
|
||||
0, 0, 0,
|
||||
0, 32450, 0,
|
||||
32448, 32449, 32447,
|
||||
0, 0, 0,
|
||||
32380, 0, 32380,
|
||||
32380, 32381, 32380,
|
||||
32380, 0, 32380,
|
||||
32380, 32381, 32380,
|
||||
0, 0, 0,
|
||||
32379, 0, 32379,
|
||||
32379, 0, 32379,
|
||||
32379, 0, 32379,
|
||||
0, 0, 0,
|
||||
0, 32415, 0
|
||||
};
|
||||
|
||||
//(Northbound 270 degrees) Route 1
|
||||
private final int[][] START1 = {{-54780, -56810, -2015, 49152},{-54860, -56810, -2015, 49152},{-54940, -56810, -2015, 49152}};
|
||||
private final int[][] GOAL1 = {{-54780, -57965, -2015, 49152},{-54860, -57965, -2015, 49152},{-54940, -57965, -2015, 49152}};
|
||||
//(Westbound 180 degrees) Route 2
|
||||
private final int[][] START2 = {{-55715, -58900, -2015, 32768},{-55715, -58820, -2015, 32768},{-55715, -58740, -2015, 32768}};
|
||||
private final int[][] GOAL2 = {{-60850, -58900, -2015, 32768},{-60850, -58820, -2015, 32768},{-60850, -58740, -2015, 32768}};
|
||||
//(Southbound 90 degrees) Route 3
|
||||
private final int[][] START3 = {{-61790, -57965, -2015, 16384},{-61710, -57965, -2015, 16384},{-61630, -57965, -2015, 16384}};
|
||||
private final int[][] GOAL3 = {{-61790, -53890, -2116, 16384},{-61710, -53890, -2116, 16384},{-61630, -53890, -2116, 16384}};
|
||||
//(Eastbound 0 degrees) Route 4
|
||||
private final int[][] START4 = {{-60840, -52990, -2108, 0},{-60840, -53070, -2108, 0},{-60840, -53150, -2108, 0}};
|
||||
private final int[][] GOAL4 = {{-58620, -52990, -2015, 0},{-58620, -53070, -2015, 0},{-58620, -53150, -2015, 0}};
|
||||
//(To 315 degrees northeast) Route 5
|
||||
private final int[][] START5 = {{-57233, -53554, -2015, 57344},{-57290, -53610, -2015, 57344},{-57346, -53667, -2015, 57344}};
|
||||
private final int[][] GOAL5 = {{-55338, -55435, -2015, 57344},{-55395, -55491, -2015, 57344},{-55451, -55547, -2015, 57344}};
|
||||
|
||||
final int[][][] START = {START1, START2, START3, START4, START5};
|
||||
final int[][][] GOAL = {GOAL1, GOAL2, GOAL3, GOAL4, GOAL5};
|
||||
// @formatter:on
|
||||
|
||||
int npcIndex;
|
||||
CopyOnWriteArrayList<L2Npc> spawns;
|
||||
ScheduledFuture<?> spawnTask;
|
||||
ScheduledFuture<?> deleteTask;
|
||||
ScheduledFuture<?> cleanTask;
|
||||
|
||||
public Parade()
|
||||
{
|
||||
// Starts at 8:00 and repeats every 6 hours.
|
||||
final long diff = timeLeftMilli(8, 0, 0), cycle = 3600000L;
|
||||
ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Start(), diff, cycle);
|
||||
|
||||
// Test - Starts 3 minutes after server startup and repeats every 20 minutes.
|
||||
// final long diff = timeLeftMilli(8, 0, 0), cycle = 600000L;
|
||||
// ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Start(), 180000L, cycle);
|
||||
|
||||
_log.info("Fantasy Isle: Parade starting at " + new SimpleDateFormat("yyyy/MM/dd HH:mm").format(System.currentTimeMillis() + diff) + " and is scheduled each next " + (cycle / 3600000) + " hours.");
|
||||
}
|
||||
|
||||
void load()
|
||||
{
|
||||
npcIndex = 0;
|
||||
spawns = new CopyOnWriteArrayList<>();
|
||||
}
|
||||
|
||||
void clean()
|
||||
{
|
||||
if (spawns != null)
|
||||
{
|
||||
spawns.forEach(L2Npc::deleteMe);
|
||||
}
|
||||
spawns = null;
|
||||
}
|
||||
|
||||
private long timeLeftMilli(int hh, int mm, int ss)
|
||||
{
|
||||
final int now = (GameTimeController.getInstance().getGameTicks() * 60) / 100;
|
||||
int dd = ((hh * 3600) + (mm * 60) + ss) - (now % 86400);
|
||||
if (dd < 0)
|
||||
{
|
||||
dd += 86400;
|
||||
}
|
||||
|
||||
return (dd * 1000L) / 6L;
|
||||
}
|
||||
|
||||
class Start implements Runnable
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
load();
|
||||
spawnTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Spawn(), 0, 5000);
|
||||
deleteTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Delete(), 10000, 1000);
|
||||
cleanTask = ThreadPoolManager.getInstance().scheduleGeneral(new Clean(), 420000);
|
||||
}
|
||||
}
|
||||
|
||||
class Spawn implements Runnable
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
for (int i = 0; i < 3; ++i)
|
||||
{
|
||||
if (npcIndex >= ACTORS.length)
|
||||
{
|
||||
spawnTask.cancel(false);
|
||||
break;
|
||||
}
|
||||
final int npcId = ACTORS[npcIndex++];
|
||||
if (npcId == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
for (int route = 0; route < 5; ++route)
|
||||
{
|
||||
final int[] start = START[route][i];
|
||||
final int[] goal = GOAL[route][i];
|
||||
final L2Npc actor = addSpawn(npcId, start[0], start[1], start[2], start[3], false, 0);
|
||||
actor.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(goal[0], goal[1], goal[2], goal[3]));
|
||||
spawns.add(actor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Delete implements Runnable
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if (spawns.size() <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
for (L2Npc actor : spawns)
|
||||
{
|
||||
if (actor != null)
|
||||
{
|
||||
if (actor.calculateDistance(actor.getXdestination(), actor.getYdestination(), 0, false, true) < (100 * 100))
|
||||
{
|
||||
actor.deleteMe();
|
||||
spawns.remove(actor);
|
||||
}
|
||||
else if (!actor.isMoving())
|
||||
{
|
||||
actor.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(actor.getXdestination(), actor.getYdestination(), actor.getZdestination(), actor.getHeading()));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (spawns.size() == 0)
|
||||
{
|
||||
deleteTask.cancel(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Clean implements Runnable
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
spawnTask.cancel(false);
|
||||
spawnTask = null;
|
||||
deleteTask.cancel(false);
|
||||
deleteTask = null;
|
||||
cleanTask.cancel(false);
|
||||
cleanTask = null;
|
||||
clean();
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new Parade();
|
||||
}
|
||||
}
|
522
trunk/dist/game/data/scripts/ai/areas/FantasyIsle/TalentShow.java
vendored
Normal file
522
trunk/dist/game/data/scripts/ai/areas/FantasyIsle/TalentShow.java
vendored
Normal file
@@ -0,0 +1,522 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package ai.areas.FantasyIsle;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.l2jmobius.gameserver.GameTimeController;
|
||||
import com.l2jmobius.gameserver.ai.CtrlIntention;
|
||||
import com.l2jmobius.gameserver.enums.ChatType;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.network.NpcStringId;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.NpcSay;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.PlaySound;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
|
||||
/**
|
||||
* Talent Show AI.
|
||||
* @author Kerberos
|
||||
*/
|
||||
public final class TalentShow extends AbstractNpcAI
|
||||
{
|
||||
private static int MC = 32433;
|
||||
// @formatter:off
|
||||
private static int[] SINGERS =
|
||||
{
|
||||
32431, 32432
|
||||
};
|
||||
private static int[] CIRCUS =
|
||||
{
|
||||
32442, 32443, 32444, 32445, 32446
|
||||
};
|
||||
private static int[] INDIVIDUALS =
|
||||
{
|
||||
32439, 32440, 32441
|
||||
};
|
||||
private static int[] SHOWSTUFF =
|
||||
{
|
||||
32424, 32425, 32426, 32427, 32428
|
||||
};
|
||||
// @formatter:on
|
||||
private static boolean IS_STARTED = false;
|
||||
private static NpcStringId[] MESSAGES =
|
||||
{
|
||||
NpcStringId.LADIES_AND_GENTLEMEN_THE_SHOW_IS_ABOUT_TO_BEGIN,
|
||||
NpcStringId.MAY_I_HAVE_YOUR_ATTENTION_PLEASE,
|
||||
NpcStringId.THANK_YOU_ALL_FOR_COMING_HERE_TONIGHT,
|
||||
NpcStringId.IT_IS_AN_HONOR_TO_HAVE_YOU_ALL_IN_ATTENDANCE_THIS_EVENING,
|
||||
NpcStringId.FANTASY_ISLE_TAKES_GREAT_PRIDE_IN_PROVIDING_THE_VERY_BEST_IN_ENTERTAINMENT,
|
||||
NpcStringId.NOW_I_D_LIKE_TO_INTRODUCE_THE_MOST_BEAUTIFUL_SINGER_IN_ADEN_PLEASE_WELCOME_LEYLA_MIRA,
|
||||
NpcStringId.PERFORMING_HER_LATEST_HIT,
|
||||
NpcStringId.THANK_YOU_VERY_MUCH_LEYLA,
|
||||
NpcStringId.NOW_WE_RE_IN_FOR_A_REAL_TREAT,
|
||||
NpcStringId.JUST_BACK_FROM_THEIR_WORLD_TOUR_PUT_YOUR_HANDS_TOGETHER_FOR_THE_FANTASY_ISLE_CIRCUS,
|
||||
NpcStringId.EVERYONE_GIVE_THEM_A_HAND,
|
||||
NpcStringId.IMPRESSIVE_NO_A_VERY_TALENTED_GROUP,
|
||||
NpcStringId.NOW_WE_HAVE_A_SPECIAL_REQUEST_FROM_SOME_FOLKS_WHO_WISH_TO_PERFORM,
|
||||
NpcStringId.LET_S_WELCOME_OUR_FIRST_VOLUNTEER,
|
||||
NpcStringId.AH,
|
||||
NpcStringId.MOVING_ON_LET_S_WELCOME_OUR_NEXT_VOLUNTEER,
|
||||
NpcStringId.I_M_SURE_THEY_HAVE_SOMETHING_MUCH_MORE_EXCITING,
|
||||
NpcStringId.REALLY,
|
||||
NpcStringId.THAT_WAS_JUST_SUPER_AND_NOW_FOR_OUR_LAST_VOLUNTEER,
|
||||
NpcStringId.SIGH_AND_THAT_S_OUR_SHOW_FOLKS,
|
||||
NpcStringId.I_HOPE_EVERYONE_ENJOYED_THE_SHOW,
|
||||
NpcStringId.PLEASE_REMEMBER_THAT_FANTASY_ISLE_IS_ALWAYS_PLANNING_A_LOT_OF_GREAT_SHOWS_FOR_YOU,
|
||||
NpcStringId.WELL_WE_WISH_WE_COULD_KEEP_THIS_PARTY_GOING_BUT_WE_MUST_TAKE_A_BREAK_THANK_YOU,
|
||||
NpcStringId.WE_LOVE_YOU_ALL
|
||||
};
|
||||
|
||||
private class ShoutInfo
|
||||
{
|
||||
private final NpcStringId _npcStringId;
|
||||
private final String _nextEvent;
|
||||
private final int _time;
|
||||
|
||||
public ShoutInfo(NpcStringId npcStringId, String nextEvent, int time)
|
||||
{
|
||||
_npcStringId = npcStringId;
|
||||
_nextEvent = nextEvent;
|
||||
_time = time;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the _npcStringId
|
||||
*/
|
||||
public NpcStringId getNpcStringId()
|
||||
{
|
||||
return _npcStringId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the _nextEvent
|
||||
*/
|
||||
public String getNextEvent()
|
||||
{
|
||||
return _nextEvent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the _time
|
||||
*/
|
||||
public int getTime()
|
||||
{
|
||||
return _time;
|
||||
}
|
||||
}
|
||||
|
||||
private class WalkInfo
|
||||
{
|
||||
private final Location _charPos;
|
||||
private final String _nextEvent;
|
||||
private final int _time;
|
||||
|
||||
public WalkInfo(Location charPos, String nextEvent, int time)
|
||||
{
|
||||
_charPos = charPos;
|
||||
_nextEvent = nextEvent;
|
||||
_time = time;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the _charPos
|
||||
*/
|
||||
public Location getCharPos()
|
||||
{
|
||||
return _charPos;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the _nextEvent
|
||||
*/
|
||||
public String getNextEvent()
|
||||
{
|
||||
return _nextEvent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the _time
|
||||
*/
|
||||
public int getTime()
|
||||
{
|
||||
return _time;
|
||||
}
|
||||
}
|
||||
|
||||
private static final Map<String, ShoutInfo> TALKS = new HashMap<>();
|
||||
private static final Map<String, WalkInfo> WALKS = new HashMap<>();
|
||||
|
||||
private TalentShow()
|
||||
{
|
||||
addSpawnId(32433, 32431, 32432, 32442, 32443, 32444, 32445, 32446, 32424, 32425, 32426, 32427, 32428);
|
||||
load();
|
||||
scheduleTimer();
|
||||
}
|
||||
|
||||
private void load()
|
||||
{
|
||||
// TODO put this stuff in Routes.xml
|
||||
TALKS.put("1", new ShoutInfo(MESSAGES[1], "2", 1000));
|
||||
TALKS.put("2", new ShoutInfo(MESSAGES[2], "3", 6000));
|
||||
TALKS.put("3", new ShoutInfo(MESSAGES[3], "4", 4000));
|
||||
TALKS.put("4", new ShoutInfo(MESSAGES[4], "5", 5000));
|
||||
TALKS.put("5", new ShoutInfo(MESSAGES[5], "6", 3000));
|
||||
TALKS.put("8", new ShoutInfo(MESSAGES[9], "9", 5000));
|
||||
TALKS.put("9", new ShoutInfo(MESSAGES[10], "10", 5000));
|
||||
TALKS.put("12", new ShoutInfo(MESSAGES[12], "13", 5000));
|
||||
TALKS.put("13", new ShoutInfo(MESSAGES[13], "14", 5000));
|
||||
TALKS.put("15", new ShoutInfo(MESSAGES[14], "16", 5000));
|
||||
TALKS.put("16", new ShoutInfo(MESSAGES[15], "17", 5000));
|
||||
TALKS.put("18", new ShoutInfo(MESSAGES[17], "19", 5000));
|
||||
TALKS.put("19", new ShoutInfo(MESSAGES[18], "20", 5000));
|
||||
TALKS.put("21", new ShoutInfo(MESSAGES[19], "22", 5000));
|
||||
TALKS.put("22", new ShoutInfo(MESSAGES[20], "23", 400));
|
||||
TALKS.put("25", new ShoutInfo(MESSAGES[21], "26", 5000));
|
||||
TALKS.put("26", new ShoutInfo(MESSAGES[22], "27", 5400));
|
||||
|
||||
WALKS.put("npc1_1", new WalkInfo(new Location(-56546, -56384, -2008, 0), "npc1_2", 1200));
|
||||
WALKS.put("npc1_2", new WalkInfo(new Location(-56597, -56384, -2008, 0), "npc1_3", 1200));
|
||||
WALKS.put("npc1_3", new WalkInfo(new Location(-56596, -56428, -2008, 0), "npc1_4", 1200));
|
||||
WALKS.put("npc1_4", new WalkInfo(new Location(-56593, -56474, -2008, 0), "npc1_5", 1000));
|
||||
WALKS.put("npc1_5", new WalkInfo(new Location(-56542, -56474, -2008, 0), "npc1_6", 1000));
|
||||
WALKS.put("npc1_6", new WalkInfo(new Location(-56493, -56473, -2008, 0), "npc1_7", 2000));
|
||||
WALKS.put("npc1_7", new WalkInfo(new Location(-56495, -56425, -2008, 0), "npc1_1", 4000));
|
||||
WALKS.put("npc2_1", new WalkInfo(new Location(-56550, -56291, -2008, 0), "npc2_2", 1200));
|
||||
WALKS.put("npc2_2", new WalkInfo(new Location(-56601, -56293, -2008, 0), "npc2_3", 1200));
|
||||
WALKS.put("npc2_3", new WalkInfo(new Location(-56603, -56247, -2008, 0), "npc2_4", 1200));
|
||||
WALKS.put("npc2_4", new WalkInfo(new Location(-56605, -56203, -2008, 0), "npc2_5", 1000));
|
||||
WALKS.put("npc2_5", new WalkInfo(new Location(-56553, -56202, -2008, 0), "npc2_6", 1100));
|
||||
WALKS.put("npc2_6", new WalkInfo(new Location(-56504, -56200, -2008, 0), "npc2_7", 2000));
|
||||
WALKS.put("npc2_7", new WalkInfo(new Location(-56503, -56243, -2008, 0), "npc2_1", 4000));
|
||||
WALKS.put("npc3_1", new WalkInfo(new Location(-56500, -56290, -2008, 0), "npc3_2", 1200));
|
||||
WALKS.put("npc3_2", new WalkInfo(new Location(-56551, -56313, -2008, 0), "npc3_3", 1200));
|
||||
WALKS.put("npc3_3", new WalkInfo(new Location(-56601, -56293, -2008, 0), "npc3_4", 1200));
|
||||
WALKS.put("npc3_4", new WalkInfo(new Location(-56651, -56294, -2008, 0), "npc3_5", 1200));
|
||||
WALKS.put("npc3_5", new WalkInfo(new Location(-56653, -56250, -2008, 0), "npc3_6", 1200));
|
||||
WALKS.put("npc3_6", new WalkInfo(new Location(-56654, -56204, -2008, 0), "npc3_7", 1200));
|
||||
WALKS.put("npc3_7", new WalkInfo(new Location(-56605, -56203, -2008, 0), "npc3_8", 1200));
|
||||
WALKS.put("npc3_8", new WalkInfo(new Location(-56554, -56202, -2008, 0), "npc3_9", 1200));
|
||||
WALKS.put("npc3_9", new WalkInfo(new Location(-56503, -56200, -2008, 0), "npc3_10", 1200));
|
||||
WALKS.put("npc3_10", new WalkInfo(new Location(-56502, -56244, -2008, 0), "npc3_1", 900));
|
||||
WALKS.put("npc4_1", new WalkInfo(new Location(-56495, -56381, -2008, 0), "npc4_2", 1200));
|
||||
WALKS.put("npc4_2", new WalkInfo(new Location(-56548, -56383, -2008, 0), "npc4_3", 1200));
|
||||
WALKS.put("npc4_3", new WalkInfo(new Location(-56597, -56383, -2008, 0), "npc4_4", 1200));
|
||||
WALKS.put("npc4_4", new WalkInfo(new Location(-56643, -56385, -2008, 0), "npc4_5", 1200));
|
||||
WALKS.put("npc4_5", new WalkInfo(new Location(-56639, -56436, -2008, 0), "npc4_6", 1200));
|
||||
WALKS.put("npc4_6", new WalkInfo(new Location(-56639, -56473, -2008, 0), "npc4_7", 1200));
|
||||
WALKS.put("npc4_7", new WalkInfo(new Location(-56589, -56473, -2008, 0), "npc4_8", 1200));
|
||||
WALKS.put("npc4_8", new WalkInfo(new Location(-56541, -56473, -2008, 0), "npc4_9", 1200));
|
||||
WALKS.put("npc4_9", new WalkInfo(new Location(-56496, -56473, -2008, 0), "npc4_10", 1200));
|
||||
WALKS.put("npc4_10", new WalkInfo(new Location(-56496, -56429, -2008, 0), "npc4_1", 900));
|
||||
WALKS.put("npc5_1", new WalkInfo(new Location(-56549, -56335, -2008, 0), "npc5_2", 1000));
|
||||
WALKS.put("npc5_2", new WalkInfo(new Location(-56599, -56337, -2008, 0), "npc5_3", 2000));
|
||||
WALKS.put("npc5_3", new WalkInfo(new Location(-56649, -56341, -2008, 0), "npc5_4", 26000));
|
||||
WALKS.put("npc5_4", new WalkInfo(new Location(-56600, -56341, -2008, 0), "npc5_5", 1000));
|
||||
WALKS.put("npc5_5", new WalkInfo(new Location(-56553, -56341, -2008, 0), "npc5_6", 1000));
|
||||
WALKS.put("npc5_6", new WalkInfo(new Location(-56508, -56331, -2008, 0), "npc5_2", 8000));
|
||||
WALKS.put("npc6_1", new WalkInfo(new Location(-56595, -56428, -2008, 0), "npc6_2", 1000));
|
||||
WALKS.put("npc6_2", new WalkInfo(new Location(-56596, -56383, -2008, 0), "npc6_3", 1000));
|
||||
WALKS.put("npc6_3", new WalkInfo(new Location(-56648, -56384, -2008, 0), "npc6_4", 1000));
|
||||
WALKS.put("npc6_4", new WalkInfo(new Location(-56645, -56429, -2008, 0), "npc6_5", 1000));
|
||||
WALKS.put("npc6_5", new WalkInfo(new Location(-56644, -56475, -2008, 0), "npc6_6", 1000));
|
||||
WALKS.put("npc6_6", new WalkInfo(new Location(-56595, -56473, -2008, 0), "npc6_7", 1000));
|
||||
WALKS.put("npc6_7", new WalkInfo(new Location(-56542, -56473, -2008, 0), "npc6_8", 1000));
|
||||
WALKS.put("npc6_8", new WalkInfo(new Location(-56492, -56472, -2008, 0), "npc6_9", 1200));
|
||||
WALKS.put("npc6_9", new WalkInfo(new Location(-56495, -56426, -2008, 0), "npc6_10", 2000));
|
||||
WALKS.put("npc6_10", new WalkInfo(new Location(-56540, -56426, -2008, 0), "npc6_1", 3000));
|
||||
WALKS.put("npc7_1", new WalkInfo(new Location(-56603, -56249, -2008, 0), "npc7_2", 1000));
|
||||
WALKS.put("npc7_2", new WalkInfo(new Location(-56601, -56294, -2008, 0), "npc7_3", 1000));
|
||||
WALKS.put("npc7_3", new WalkInfo(new Location(-56651, -56295, -2008, 0), "npc7_4", 1000));
|
||||
WALKS.put("npc7_4", new WalkInfo(new Location(-56653, -56248, -2008, 0), "npc7_5", 1000));
|
||||
WALKS.put("npc7_5", new WalkInfo(new Location(-56605, -56203, -2008, 0), "npc7_6", 1000));
|
||||
WALKS.put("npc7_6", new WalkInfo(new Location(-56554, -56202, -2008, 0), "npc7_7", 1000));
|
||||
WALKS.put("npc7_7", new WalkInfo(new Location(-56504, -56201, -2008, 0), "npc7_8", 1000));
|
||||
WALKS.put("npc7_8", new WalkInfo(new Location(-56502, -56247, -2008, 0), "npc7_9", 1200));
|
||||
WALKS.put("npc7_9", new WalkInfo(new Location(-56549, -56248, -2008, 0), "npc7_10", 2000));
|
||||
WALKS.put("npc7_10", new WalkInfo(new Location(-56549, -56248, -2008, 0), "npc7_1", 3000));
|
||||
WALKS.put("npc8_1", new WalkInfo(new Location(-56493, -56426, -2008, 0), "npc8_2", 1000));
|
||||
WALKS.put("npc8_2", new WalkInfo(new Location(-56497, -56381, -2008, 0), "npc8_3", 1200));
|
||||
WALKS.put("npc8_3", new WalkInfo(new Location(-56544, -56381, -2008, 0), "npc8_4", 1200));
|
||||
WALKS.put("npc8_4", new WalkInfo(new Location(-56596, -56383, -2008, 0), "npc8_5", 1200));
|
||||
WALKS.put("npc8_5", new WalkInfo(new Location(-56594, -56428, -2008, 0), "npc8_6", 900));
|
||||
WALKS.put("npc8_6", new WalkInfo(new Location(-56645, -56429, -2008, 0), "npc8_7", 1200));
|
||||
WALKS.put("npc8_7", new WalkInfo(new Location(-56647, -56384, -2008, 0), "npc8_8", 1200));
|
||||
WALKS.put("npc8_8", new WalkInfo(new Location(-56649, -56362, -2008, 0), "npc8_9", 9200));
|
||||
WALKS.put("npc8_9", new WalkInfo(new Location(-56654, -56429, -2008, 0), "npc8_10", 1200));
|
||||
WALKS.put("npc8_10", new WalkInfo(new Location(-56644, -56474, -2008, 0), "npc8_11", 900));
|
||||
WALKS.put("npc8_11", new WalkInfo(new Location(-56593, -56473, -2008, 0), "npc8_12", 1100));
|
||||
WALKS.put("npc8_12", new WalkInfo(new Location(-56543, -56472, -2008, 0), "npc8_13", 1200));
|
||||
WALKS.put("npc8_13", new WalkInfo(new Location(-56491, -56471, -2008, 0), "npc8_1", 1200));
|
||||
WALKS.put("npc9_1", new WalkInfo(new Location(-56505, -56246, -2008, 0), "npc9_2", 1000));
|
||||
WALKS.put("npc9_2", new WalkInfo(new Location(-56504, -56291, -2008, 0), "npc9_3", 1200));
|
||||
WALKS.put("npc9_3", new WalkInfo(new Location(-56550, -56291, -2008, 0), "npc9_4", 1200));
|
||||
WALKS.put("npc9_4", new WalkInfo(new Location(-56600, -56292, -2008, 0), "npc9_5", 1200));
|
||||
WALKS.put("npc9_5", new WalkInfo(new Location(-56603, -56248, -2008, 0), "npc9_6", 900));
|
||||
WALKS.put("npc9_6", new WalkInfo(new Location(-56653, -56249, -2008, 0), "npc9_7", 1200));
|
||||
WALKS.put("npc9_7", new WalkInfo(new Location(-56651, -56294, -2008, 0), "npc9_8", 1200));
|
||||
WALKS.put("npc9_8", new WalkInfo(new Location(-56650, -56316, -2008, 0), "npc9_9", 9200));
|
||||
WALKS.put("npc9_9", new WalkInfo(new Location(-56660, -56250, -2008, 0), "npc9_10", 1200));
|
||||
WALKS.put("npc9_10", new WalkInfo(new Location(-56656, -56205, -2008, 0), "npc9_11", 900));
|
||||
WALKS.put("npc9_11", new WalkInfo(new Location(-56606, -56204, -2008, 0), "npc9_12", 1100));
|
||||
WALKS.put("npc9_12", new WalkInfo(new Location(-56554, -56203, -2008, 0), "npc9_13", 1200));
|
||||
WALKS.put("npc9_13", new WalkInfo(new Location(-56506, -56203, -2008, 0), "npc9_1", 1200));
|
||||
WALKS.put("24", new WalkInfo(new Location(-56730, -56340, -2008, 0), "25", 1800));
|
||||
WALKS.put("27", new WalkInfo(new Location(-56702, -56340, -2008, 0), "29", 1800));
|
||||
}
|
||||
|
||||
private void scheduleTimer()
|
||||
{
|
||||
final int gameTime = GameTimeController.getInstance().getGameTime();
|
||||
final int hours = (gameTime / 60) % 24;
|
||||
final int minutes = gameTime % 60;
|
||||
int hourDiff, minDiff;
|
||||
hourDiff = 20 - hours;
|
||||
if (hourDiff < 0)
|
||||
{
|
||||
hourDiff = 24 - (hourDiff *= -1);
|
||||
}
|
||||
minDiff = 30 - minutes;
|
||||
if (minDiff < 0)
|
||||
{
|
||||
minDiff = 60 - (minDiff *= -1);
|
||||
}
|
||||
long diff;
|
||||
hourDiff *= 3600000;
|
||||
minDiff *= 60000;
|
||||
diff = hourDiff + minDiff;
|
||||
_log.info("Fantasy Isle: MC show script starting at " + (new SimpleDateFormat("dd/MM/yyyy HH:mm:ss")).format(System.currentTimeMillis() + diff) + " and is scheduled each next 4 hours.");
|
||||
startQuestTimer("Start", diff, null, null); // first start
|
||||
}
|
||||
|
||||
private void autoChat(L2Npc npc, NpcStringId npcString, ChatType type)
|
||||
{
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), type, npc.getId(), npcString));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(L2Npc npc)
|
||||
{
|
||||
if (IS_STARTED)
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case 32433:
|
||||
{
|
||||
autoChat(npc, MESSAGES[0], ChatType.NPC_SHOUT);
|
||||
startQuestTimer("1", 30000, npc, null);
|
||||
break;
|
||||
}
|
||||
case 32431:
|
||||
{
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(-56657, -56338, -2008, 33102));
|
||||
startQuestTimer("social1", 6000, npc, null, true);
|
||||
startQuestTimer("7", 215000, npc, null);
|
||||
break;
|
||||
}
|
||||
case 32432:
|
||||
{
|
||||
startQuestTimer("social1", 6000, npc, null, true);
|
||||
startQuestTimer("7", 215000, npc, null);
|
||||
break;
|
||||
}
|
||||
case 32442:
|
||||
case 32443:
|
||||
case 32444:
|
||||
case 32445:
|
||||
case 32446:
|
||||
{
|
||||
startQuestTimer("11", 100000, npc, null);
|
||||
break;
|
||||
}
|
||||
case 32424:
|
||||
case 32425:
|
||||
case 32426:
|
||||
case 32427:
|
||||
case 32428:
|
||||
{
|
||||
startQuestTimer("social1", 5500, npc, null);
|
||||
startQuestTimer("social1", 12500, npc, null);
|
||||
startQuestTimer("28", 19700, npc, null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
if ((event == null) || event.isEmpty())
|
||||
{
|
||||
_log.warning("MC_Show: Null/Empty event for npc " + npc + " and player " + player + "!");
|
||||
return null;
|
||||
}
|
||||
|
||||
if (event.equalsIgnoreCase("Start"))
|
||||
{
|
||||
IS_STARTED = true;
|
||||
addSpawn(MC, -56698, -56430, -2008, 32768, false, 0);
|
||||
startQuestTimer("Start", 14400000L, null, null); // repeat
|
||||
}
|
||||
else if ((npc != null) && IS_STARTED)
|
||||
{
|
||||
// TODO switch on event
|
||||
if (event.equalsIgnoreCase("6"))
|
||||
{
|
||||
autoChat(npc, MESSAGES[6], ChatType.NPC_SHOUT);
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(-56511, -56647, -2008, 36863));
|
||||
npc.broadcastPacket(new PlaySound(1, "NS22_F", 0, 0, 0, 0, 0));
|
||||
addSpawn(SINGERS[0], -56344, -56328, -2008, 32768, false, 224000);
|
||||
addSpawn(SINGERS[1], -56552, -56245, -2008, 36863, false, 224000);
|
||||
addSpawn(SINGERS[1], -56546, -56426, -2008, 28672, false, 224000);
|
||||
addSpawn(SINGERS[1], -56570, -56473, -2008, 28672, false, 224000);
|
||||
addSpawn(SINGERS[1], -56594, -56516, -2008, 28672, false, 224000);
|
||||
addSpawn(SINGERS[1], -56580, -56203, -2008, 36863, false, 224000);
|
||||
addSpawn(SINGERS[1], -56606, -56157, -2008, 36863, false, 224000);
|
||||
startQuestTimer("7", 215000, npc, null);
|
||||
}
|
||||
else if (event.equalsIgnoreCase("7"))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case 32433:
|
||||
{
|
||||
autoChat(npc, MESSAGES[7], ChatType.NPC_SHOUT);
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(-56698, -56430, -2008, 32768));
|
||||
startQuestTimer("8", 12000, npc, null);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
cancelQuestTimer("social1", npc, null);
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(-56594, -56064, -2008, 32768));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (event.equalsIgnoreCase("10"))
|
||||
{
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(-56483, -56665, -2034, 32768));
|
||||
npc.broadcastPacket(new PlaySound(1, "TP05_F", 0, 0, 0, 0, 0));
|
||||
startQuestTimer("npc1_1", 3000, addSpawn(CIRCUS[0], -56495, -56375, -2008, 32768, false, 101000), null);
|
||||
startQuestTimer("npc2_1", 3000, addSpawn(CIRCUS[0], -56491, -56289, -2008, 32768, false, 101000), null);
|
||||
startQuestTimer("npc3_1", 3000, addSpawn(CIRCUS[1], -56502, -56246, -2008, 32768, false, 101000), null);
|
||||
startQuestTimer("npc4_1", 3000, addSpawn(CIRCUS[1], -56496, -56429, -2008, 32768, false, 101000), null);
|
||||
startQuestTimer("npc5_1", 3500, addSpawn(CIRCUS[2], -56505, -56334, -2008, 32768, false, 101000), null);
|
||||
startQuestTimer("npc6_1", 4000, addSpawn(CIRCUS[3], -56545, -56427, -2008, 32768, false, 101000), null);
|
||||
startQuestTimer("npc7_1", 4000, addSpawn(CIRCUS[3], -56552, -56248, -2008, 32768, false, 101000), null);
|
||||
startQuestTimer("npc8_1", 3000, addSpawn(CIRCUS[4], -56493, -56473, -2008, 32768, false, 101000), null);
|
||||
startQuestTimer("npc9_1", 3000, addSpawn(CIRCUS[4], -56504, -56201, -2008, 32768, false, 101000), null);
|
||||
startQuestTimer("11", 100000, npc, null);
|
||||
}
|
||||
else if (event.equalsIgnoreCase("11"))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case 32433:
|
||||
{
|
||||
autoChat(npc, MESSAGES[11], ChatType.NPC_SHOUT);
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(-56698, -56430, -2008, 32768));
|
||||
startQuestTimer("12", 5000, npc, null);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(-56343, -56330, -2008, 32768));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (event.equalsIgnoreCase("14"))
|
||||
{
|
||||
startQuestTimer("social1", 2000, addSpawn(INDIVIDUALS[0], -56700, -56385, -2008, 32768, false, 49000), null);
|
||||
startQuestTimer("15", 7000, npc, null);
|
||||
}
|
||||
else if (event.equalsIgnoreCase("17"))
|
||||
{
|
||||
autoChat(npc, MESSAGES[16], ChatType.NPC_SHOUT);
|
||||
startQuestTimer("social1", 2000, addSpawn(INDIVIDUALS[1], -56700, -56340, -2008, 32768, false, 32000), null);
|
||||
startQuestTimer("18", 9000, npc, null);
|
||||
}
|
||||
else if (event.equalsIgnoreCase("20"))
|
||||
{
|
||||
startQuestTimer("social1", 2000, addSpawn(INDIVIDUALS[2], -56703, -56296, -2008, 32768, false, 13000), null);
|
||||
startQuestTimer("21", 8000, npc, null);
|
||||
}
|
||||
else if (event.equalsIgnoreCase("23"))
|
||||
{
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(-56702, -56340, -2008, 32768));
|
||||
startQuestTimer("24", 2800, npc, null);
|
||||
addSpawn(SHOWSTUFF[0], -56672, -56406, -2000, 32768, false, 20900);
|
||||
addSpawn(SHOWSTUFF[1], -56648, -56368, -2000, 32768, false, 20900);
|
||||
addSpawn(SHOWSTUFF[2], -56608, -56338, -2000, 32768, false, 20900);
|
||||
addSpawn(SHOWSTUFF[3], -56652, -56307, -2000, 32768, false, 20900);
|
||||
addSpawn(SHOWSTUFF[4], -56672, -56272, -2000, 32768, false, 20900);
|
||||
}
|
||||
else if (event.equalsIgnoreCase("28"))
|
||||
{
|
||||
autoChat(npc, MESSAGES[23], ChatType.NPC_GENERAL);
|
||||
startQuestTimer("social1", 1, npc, null);
|
||||
}
|
||||
else if (event.equalsIgnoreCase("29"))
|
||||
{
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(-56730, -56340, -2008, 32768));
|
||||
startQuestTimer("clean_npc", 4100, npc, null);
|
||||
startQuestTimer("timer_check", 60000, null, null, true);
|
||||
}
|
||||
else if (event.equalsIgnoreCase("social1"))
|
||||
{
|
||||
npc.broadcastSocialAction(1);
|
||||
}
|
||||
else if (event.equalsIgnoreCase("clean_npc"))
|
||||
{
|
||||
IS_STARTED = false;
|
||||
npc.deleteMe();
|
||||
}
|
||||
else if (TALKS.containsKey(event))
|
||||
{
|
||||
final ShoutInfo si = TALKS.get(event);
|
||||
if (si != null)
|
||||
{
|
||||
autoChat(npc, si.getNpcStringId(), ChatType.NPC_SHOUT);
|
||||
startQuestTimer(si.getNextEvent(), si.getTime(), npc, null);
|
||||
}
|
||||
}
|
||||
else if (WALKS.containsKey(event))
|
||||
{
|
||||
final WalkInfo wi = WALKS.get(event);
|
||||
if (wi != null)
|
||||
{
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, wi.getCharPos());
|
||||
startQuestTimer(wi.getNextEvent(), wi.getTime(), npc, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new TalentShow();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user