/*
* 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 silentium.scripts.custom;
import silentium.gameserver.model.L2Spawn;
import silentium.gameserver.model.actor.L2Npc;
import silentium.gameserver.model.actor.instance.L2PcInstance;
import silentium.gameserver.model.quest.Quest;
import silentium.gameserver.model.quest.QuestState;
import silentium.gameserver.scripting.ScriptFile;
import silentium.gameserver.tables.SpawnTable;
import silentium.gameserver.utils.Util;
/**
* @authors L2Emu Team (python), Nyaran (java)
*/
public class NpcLocationInfo extends Quest implements ScriptFile {
private static final String qn = "NpcLocationInfo";
private static final int[] NPCRADAR = {
// Talking Island
30006, // Gatekeeper Roxxy
30039, // Captain Gilbert
30040, // Guard Leon
30041, // Guard Arnold
30042, // Guard Abellos
30043, // Guard Johnstone
30044, // Guard Chiperan
30045, // Guard Kenyos
30046, // Guard Hanks
30283, // Blacksmith Altran
30003, // Trader Silvia
30004, // Trader Katerina
30001, // Trader Lector
30002, // Trader Jackson
30031, // High Priest Biotin
30033, // Magister Baulro
30035, // Magister Harrys
30032, // Priest Yohanes
30036, // Priest Petron
30026, // Grand Master Bitz
30027, // Master Gwinter
30029, // Master Minia
30028, // Master Pintage
30054, // Warehouse Keeper Rant
30055, // Warehouse Keeper Rolfe
30005, // Warehouse Keeper Wilford
30048, // Darin
30312, // Lighthouse Keeper Rockswell
30368, // Lilith
30049, // Bonnie
30047, // Wharf Manager Firon
30497, // Edmond
30050, // Elias
30311, // Sir Collin Windawood
30051, // Cristel
// Dark Elf Village
30134, // Gatekeeper Jasmine
30224, // Sentry Knight Rayla
30348, // Sentry Nelsya
30355, // Sentry Roselyn
30347, // Sentry Marion
30432, // Sentry Irene
30356, // Sentry Altima
30349, // Sentry Jenna
30346, // Sentry Kayleen
30433, // Sentry Kathaway
30357, // Sentry Kristin
30431, // Sentry Eriel
30430, // Sentry Trionell
30307, // Blacksmith Karrod
30138, // Trader Minaless
30137, // Trader Vollodos
30135, // Trader Iria
30136, // Trader Payne
30143, // Master Trudy
30360, // Master Harant
30145, // Master Vlasty
30135, // Magister Harne
30144, // Tetrarch Vellior
30358, // Tetrarch Thifiell
30359, // Tetrarch Kaitar
30141, // Tetrarch Talloth
30139, // Warehouse Keeper Dorankus
30140, // Warehouse Keeper Erviante
30350, // Warehouse Freightman Carlon
30421, // Varika
30419, // Arkenia
30130, // Abyssal Celebrant Undrias
30351, // Astaron
30353, // Jughead
30354, // Jewel
// Elven Village
30146, // Gatekeeper Mirabel
30285, // Sentinel Gartrandell
30284, // Sentinel Knight Alberius
30221, // Sentinel Rayen
30217, // Sentinel Berros
30219, // Sentinel Veltress
30220, // Sentinel Starden
30218, // Sentinel Kendell
30216, // Sentinel Wheeler
30363, // Blacksmith Aios
30149, // Trader Creamees
30150, // Trader Herbiel
30148, // Trader Ariel
30147, // Trader Unoren
30155, // Master Ellenia
30156, // Master Cobendell
30157, // Magister Greenis
30158, // Magister Esrandell
30154, // Hierarch Asterios
30153, // Warehouse Keeper Markius
30152, // Warehouse Keeper Julia
30151, // Warehouse Freightman Chad
30423, // Northwind
30414, // Rosella
31853, // Treant Bremec
30223, // Arujien
30362, // Andellia
30222, // Alshupes
30371, // Thalia
31852, // Pixy Murika
// Dwarven Village
30540, // Gatekeeper Wirphy
30541, // Protector Paion
30542, // Defender Runant
30543, // Defender Ethan
30544, // Defender Cromwell
30545, // Defender Proton
30546, // Defender Dinkey
30547, // Defender Tardyon
30548, // Defender Nathan
30531, // Iron Gate's Lockirin
30532, // Golden Wheel's Spiron
30533, // Silver Scale's Balanki
30534, // Bronze Key's Keef
30535, // Filaur of the Gray Pillar
30536, // Black Anvil's Arin
30525, // Head Blacksmith Bronk
30526, // Blacksmith Brunon
30527, // Blacksmith Silvera
30518, // Trader Garita
30519, // Trader Mion
30516, // Trader Reep
30517, // Trader Shari
30520, // Warehouse Chief Reed
30521, // Warehouse Freightman Murdoc
30522, // Warehouse Keeper Airy
30523, // Collector Gouph
30524, // Collector Pippi
30537, // Daichir, Priest of the Eart
30650, // Priest of the Earth Gerald
30538, // Priest of the Earth Zimenf
30539, // Priestess of the Earth Chichirin
30671, // Captain Croto
30651, // Wanderer Dorf
30550, // Gauri Twinklerock
30554, // Miner Bolter
30553, // Maryse Redbonnet
// Orc Village
30576, // Gatekeeper Tamil
30577, // Praetorian Rukain
30578, // Centurion Nakusin
30579, // Centurion Tamai
30580, // Centurion Parugon
30581, // Centurion Orinak
30582, // Centurion Tiku
30583, // Centurion Petukai
30584, // Centurion Vapook
30569, // Prefect Brukurse
30570, // Prefect Karukia
30571, // Seer Tanapi
30572, // Seer Livina
30564, // Blacksmith Sumari
30560, // Trader Uska
30561, // Trader Papuma
30558, // Trader Jakal
30559, // Trader Kunai
30562, // Warehouse Keeper Grookin
30563, // Warehouse Keeper Imantu
30565, // Flame Lord Kakai
30566, // Atuba Chief Varkees
30567, // Neruga Chief Tantus
30568, // Urutu Chief Hatos
30585, // Tataru Zu Hestui
30587, // Gantaki Zu Urutu
};
@Override
public String onAdvEvent(final String event, final L2Npc npc, final L2PcInstance player) {
String htmltext = event;
final QuestState st = player.getQuestState(qn);
if (st == null)
return htmltext;
if (Util.isDigit(event)) {
htmltext = null;
final int npcId = Integer.parseInt(event);
if (Util.contains(NPCRADAR, npcId)) {
int x = 0, y = 0, z = 0;
for (final L2Spawn spawn : SpawnTable.getInstance().getSpawnTable()) {
if (npcId == spawn.getNpcId()) {
x = spawn.getLocx();
y = spawn.getLocy();
z = spawn.getLocz();
break;
}
}
st.addRadar(x, y, z);
htmltext = "MoveToLoc.htm";
}
st.exitQuest(true);
}
return htmltext;
}
@Override
public String onTalk(final L2Npc npc, final L2PcInstance player) {
return npc.getNpcId() + ".htm";
}
public static void onLoad() {
new NpcLocationInfo(-1, "NpcLocationInfo", "Npc Location Info", "custom");
}
public NpcLocationInfo(final int scriptId, final String name, final String dname, final String path) {
super(scriptId, name, dname, path);
addStartNpc(30598, 30599, 30600, 30601, 30602);
addTalkId(30598, 30599, 30600, 30601, 30602);
}
}