Merged with released L2J-Unity files.

This commit is contained in:
mobiusdev
2016-06-12 01:34:09 +00:00
parent e003e87887
commit 635557f5da
18352 changed files with 3245113 additions and 2892959 deletions

View File

@@ -0,0 +1,5 @@
<html><body>Ivory Tower Wizard Belkadhi:<br>
This is a very dangerous place. You shouldn't come here if you're not adequately prepared.<br>
I tell you this for your own good, so don't feel bad.<br>
(This quest can only be performed by Ertheia who have completed "In Search of an Ancient Giant" and are Lv. 48 or above.)
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Ivory Tower Wizard Belkadhi:<br>
Were you waiting for a long time?<br>
The Regeneration Device Core is complete. Were you thinking of finding the Ancient Giant right away?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10776_TheWrathOfTheGiants 30485-02.htm">"Yes."</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Ivory Tower Wizard Belkadi:<br>
I would stop you if I could, but you have an earnestness in your eyes. I hope then you get what you're seeking from the Ancient Giant.<br>
They are suspicious of strangers and are on the defensive, so be careful when speaking with one. Good luck.<br>
Here, won't you take the Regeneration Device Core?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10776_TheWrathOfTheGiants 30485-03.htm">"Give it to me."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Ivory Tower Wizard Belkadhi:<br>
Good! Take the Regeneration Device Core.<br>
Find the <font color="LEVEL">Destroyed Device</font> in <font color="LEVEL">Cruma Tower</font> and <font color="LEVEL">insert</font> the <font color="LEVEL">Regeneration Device Core</font>.<br>
The magic from the Regeneration Device Core will enable the Destroyed Device to work temporarily. Once it's up and running, you'll be able to find the Ancient Giant sleeping inside Cruma Tower. Good luck.
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Ivory Tower Wizard Belkadhi:<br>
I see you haven't left yet. Don't worry yourself.<br>
I don't know how easy it'll be communicating with an Ancient Giant, but he won't refuse a request from a beautiful race like the Ertheia.<br>
Find the <font color="LEVEL">Broken Device</font> in <font color="LEVEL">Cruma Tower</font> and <font color="LEVEL">insert</font> the <font color="LEVEL">Regeneration Device Core</font>.<br>
The magic from the Regeneration Device Core will enable the device to work temporarily. Once it's up and running, you'll be able to find the Ancient Giant sleeping inside Cruma Tower. Good luck.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Ivory Tower Wizard Belkadhi:<br>
What's wrong? Were you unable to find the Ancient Giant?<br>
Try <font color="LEVEL">summoning the Ancient Giant</font> again before the broken device stops working.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Ivory Tower Wizard Belkadhi:<br>
You're back! Were you able to speak to an Ancient Giant?<br>
Your expression doesn't look good. What happened?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10776_TheWrathOfTheGiants 30485-07.html">"The giant was pretty enraged."</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Ivory Tower Wizard Belkadhi:<br>
Enraged? How...<br>
You know what, everything will be fine. Giants normally aren't honest with anyone outside of their own race.<br>
The Ertheia are known to be a strong race. Certainly, you could've gotten what you were searching for without any help.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10776_TheWrathOfTheGiants 30485-08.html">"Thank you."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Ivory Tower Wizard Belkadhi:<br>
Oh, it was nothing. Once I finish my mission and I can leave Cruma Tower I will pay you a visit in Faeron Village.<br>
I am curious to see just how beautiful an Ertheia village is. Stay safe until then. Thank you for all your hard work.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Destroyed Device:<br>
Very old...<br1>
It doesn't seem to be working, but if it has a Regeneration Device Core, we can make it work temporarily at least.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10776_TheWrathOfTheGiants spawn_narsides">"Let me install the Regeneration Device Core."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Broken Device:<br>
The broken device is already running.<br>
(Only one player may use it at any given time.)
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Cruma Tower Narsides the Giant:<br>
I am Narsides the Giant. Who disturbs my slumber?...<br>
You are...Ertheia...how are you still here in this realm? Why have you awakened me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10776_TheWrathOfTheGiants 33992-02.html">"It's an honor to meet an Ancient Giant."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Cruma Tower Narsides the Giant:<br>
Salutations are unnecessary. Just tell me, what's your business. Why have you summoned me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10776_TheWrathOfTheGiants 33992-03.html">"I need to find the Grail so that I may go home again."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Cruma Tower Narsides the Giant:<br>
Grail? The Ertheia covet the grail as well?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10776_TheWrathOfTheGiants 33992-04.html">"Please give me clues."</Button>
</body></html>

View File

@@ -0,0 +1,8 @@
<html><body>Cruma Tower Narsides the Giant:<br>
You want clues to finding the Grail? You are a stupid and foolish race, indeed!<br>
What makes you think we have anything to tell you?<br>
<font color="LEVEL">Ertheia. Don't ever ask us giants for anything again!</font><br>
The Grail is ours. Not yours! You are now our enemy!<br>
You lowly creature of the gods, I will crush you!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10776_TheWrathOfTheGiants spawn_mob">"I'm ready to fight you if I must."</Button>
</body></html>

View File

@@ -0,0 +1,282 @@
/*
* 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 quests.Q10776_TheWrathOfTheGiants;
import com.l2jmobius.gameserver.enums.ChatType;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.network.NpcStringId;
import quests.Q10775_InSearchOfAnAncientGiant.Q10775_InSearchOfAnAncientGiant;
/**
* The Wrath of the Giants (10776)
* @author malyelfik
*/
public final class Q10776_TheWrathOfTheGiants extends Quest
{
// NPCs
private static final int BELKADHI = 30485;
private static final int DESTROYED_DEVICE = 32366;
private static final int NARSIDES = 33992;
// Monsters
private static final int ENRAGED_GIANT_NARSIDES = 27534;
private static final int GIANT_MINION = 27535;
// Items
private static final int REGENERATION_DEVICE_CORE = 39716;
private static final int ENCHANT_ARMOR_C = 952;
// Location
private static final Location NARSIDES_LOC = new Location(16422, 113281, -9064);
private static final Location ENRAGED_NARSIDES_LOC = new Location(16422, 113281, -9064);
private static final Location[] MINIONS_LOC =
{
new Location(16313, 113301, -9064),
new Location(16515, 113298, -9064)
};
// Misc
private static final int MIN_LEVEL = 48;
public Q10776_TheWrathOfTheGiants()
{
super(10776);
addStartNpc(BELKADHI);
addTalkId(BELKADHI, DESTROYED_DEVICE, NARSIDES);
addKillId(ENRAGED_GIANT_NARSIDES);
addCondRace(Race.ERTHEIA, "30485-00.htm");
addCondMinLevel(MIN_LEVEL, "30485-00.htm");
addCondCompletedQuest(Q10775_InSearchOfAnAncientGiant.class.getSimpleName(), "30485-00.htm");
registerQuestItems(REGENERATION_DEVICE_CORE);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = event;
switch (event)
{
case "30485-02.htm":
case "33992-02.html":
case "33992-03.html":
case "30485-07.html":
break;
case "30485-03.htm":
{
qs.startQuest();
giveItems(player, REGENERATION_DEVICE_CORE, 1);
break;
}
case "spawn_narsides":
{
if (npc.isScriptValue(0))
{
qs.setCond(2, true);
npc.setScriptValue(player.getObjectId());
npc.setTitle(player.getName());
npc.broadcastInfo();
final L2Npc narsides = addSpawn(NARSIDES, NARSIDES_LOC);
narsides.setSummoner(npc);
narsides.setScriptValue(player.getObjectId());
getTimers().addTimer("DESPAWN_NARSIDES", 62000, narsides, null);
htmltext = null;
}
else
{
htmltext = "32366-02.html";
}
break;
}
case "33992-04.html":
{
if (qs.isCond(2) || qs.isCond(3))
{
qs.setCond(3, true);
}
break;
}
case "spawn_mob":
{
if (!npc.isScriptValue(0) && getTimers().hasTimer("DESPAWN_NARSIDES", npc, null))
{
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.CURSED_ERTHEIA_I_WILL_KILL_YOU_ALL);
getTimers().cancelTimer("DESPAWN_NARSIDES", npc, null);
getTimers().addTimer("SPAWN_MINIONS", 4000, npc, player);
}
htmltext = null;
break;
}
case "30485-08.html":
{
if (qs.isCond(4))
{
giveItems(player, ENCHANT_ARMOR_C, 4);
giveStoryQuestReward(player, 20);
addExpAndSp(player, 4838400, 1161);
qs.exitQuest(false, true);
}
break;
}
default:
htmltext = null;
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (npc.getId() == BELKADHI)
{
switch (qs.getState())
{
case State.CREATED:
htmltext = "30485-01.htm";
break;
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
htmltext = "30485-04.html";
break;
case 2:
case 3:
htmltext = "30485-05.html";
break;
case 4:
htmltext = "30485-06.html";
break;
}
break;
}
case State.COMPLETED:
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
else if (qs.isStarted())
{
if (npc.getId() == DESTROYED_DEVICE)
{
switch (qs.getCond())
{
case 1:
case 2:
case 3:
htmltext = "32366-01.html";
break;
}
}
else if (npc.isScriptValue(player.getObjectId()) && (qs.isCond(2) || qs.isCond(3)))
{
htmltext = "33992-01.html";
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(3))
{
qs.setCond(4, true);
final L2Npc device = (L2Npc) npc.getSummoner();
device.setTitle("");
device.setScriptValue(0);
device.broadcastInfo();
}
return super.onKill(npc, killer, isSummon);
}
@Override
public void onTimerEvent(String event, StatsSet params, L2Npc npc, L2PcInstance player)
{
switch (event)
{
case "DESPAWN_NARSIDES":
{
if ((npc != null) && (npc.getId() == NARSIDES))
{
final L2Npc summoner = (L2Npc) npc.getSummoner();
summoner.setTitle("");
summoner.setScriptValue(0);
summoner.broadcastInfo();
npc.deleteMe();
}
break;
}
case "SPAWN_MINIONS":
{
if ((npc != null) && (player != null))
{
for (Location loc : MINIONS_LOC)
{
final L2Npc mob = addSpawn(GIANT_MINION, loc, false, 120000);
addAttackPlayerDesire(mob, player);
}
getTimers().addTimer("SPAWN_MASTER", 2000, npc, player);
}
break;
}
case "SPAWN_MASTER":
{
if (npc != null)
{
final L2Npc master = addSpawn(ENRAGED_GIANT_NARSIDES, ENRAGED_NARSIDES_LOC);
master.setSummoner(npc.getSummoner());
addAttackPlayerDesire(master, player);
npc.deleteMe();
getTimers().addTimer("MASTER_DESPAWN", 120000, master, null);
}
break;
}
case "MASTER_DESPAWN":
{
if (npc != null)
{
final L2Npc device = (L2Npc) npc.getSummoner();
device.setTitle("");
device.setScriptValue(0);
device.broadcastInfo();
npc.deleteMe();
}
break;
}
default:
super.onTimerEvent(event, params, npc, player);
}
}
}