From 57dcdb065d4380e9e4f0f4f8f552b4e6284f3418 Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sat, 7 Nov 2015 01:14:51 +0000 Subject: [PATCH] Partial sync with L2jServer HighFive Nov 6th 2015. --- trunk/dist/game/config/Character.ini | 5 - trunk/dist/game/data/html/default/30761-1.htm | 3 +- trunk/dist/game/data/html/default/30761.htm | 5 +- trunk/dist/game/data/html/default/30762-1.htm | 3 +- trunk/dist/game/data/html/default/30762.htm | 3 +- trunk/dist/game/data/html/default/30763-1.htm | 2 +- trunk/dist/game/data/html/default/30763.htm | 4 +- trunk/dist/game/data/html/default/30765.htm | 6 +- .../AdminFightCalculator.java | 6 +- .../30512-01.html | 3 + .../30512-01a.html | 3 + .../30512-02.html | 6 + .../30512-03.html | 3 + .../30512-04.html | 4 + .../30645-01.html | 3 + .../30645-02.html | 5 + .../30645-03.html | 3 + .../30645-04.html | 4 + .../30645-05.html | 6 + .../30645-06.html | 3 + .../30645-07.html | 3 + .../30645-08.html | 3 + .../30758-01.html | 3 + .../30759-01.html | 3 + .../30760-01.html | 6 + .../30760-02.html | 6 + .../30760-03.html | 3 + .../30760-04.html | 5 + .../30760-04t.html | 5 + .../30760-05.html | 5 + .../30760-06.html | 5 + .../30760-07.html | 4 + .../30760-08.html | 4 + .../30760-09.html | 3 + .../30760-10.html | 3 + .../30760-11.html | 5 + .../30760-11t.html | 3 + .../30760-12.html | 4 + .../30760-13.html | 3 + .../30760-14.html | 3 + .../30760-15.html | 5 + .../30760-15t.html | 4 + .../30760-16.html | 5 + .../30760-17.html | 3 + .../30760-18.html | 3 + .../30760-19.html | 5 + .../30760-19t.html | 3 + .../30760-20.html | 4 + .../30760-21.html | 10 + .../30760-22.html | 4 + .../30760-23.html | 3 + .../30760-24.html | 5 + .../30760-24t.html | 3 + .../30761-01.html | 4 + .../30761-02.html | 3 + .../30761-03.html | 3 + .../30762-01.html | 4 + .../30762-02.html | 3 + .../30762-03.html | 3 + .../30763-01.html | 4 + .../30763-02.html | 3 + .../30763-03.html | 3 + .../30764-01.html | 3 + .../30764-02.html | 4 + .../30764-03.html | 4 + .../30764-04.html | 4 + .../30764-05.html | 5 + .../30764-06.html | 3 + .../30764-07a.html | 3 + .../30764-08a.html | 3 + .../30764-09.html | 3 + .../30765-01.html | 4 + .../30765-02.html | 3 + .../30765-03.html | 4 + .../30765-04.html | 3 + .../30765-05.html | 4 + .../30765-05a.html | 3 + .../30766-01.html | 3 + .../30766-02.html | 4 + .../30766-03.html | 4 + .../30766-04.html | 3 + .../30766-05.html | 3 + .../30766-06.html | 3 + .../30766-07.html | 4 + .../30766-08.html | 7 + .../30868-01.html | 3 + .../30868-02.html | 5 + .../30868-03.html | 4 + .../30868-04.html | 3 + .../30868-05.html | 3 + .../30868-06.html | 4 + .../30868-06a.html | 7 + .../30868-07.html | 3 + .../30868-08.html | 4 + .../30868-09.html | 4 + .../30868-10.html | 5 + .../30868-11.html | 3 + .../Q00503_PursuitOfClanAmbition.java | 845 ++++++++++++++++++ .../scripts/quests/QuestMasterHandler.java | 2 + trunk/java/com/l2jserver/Config.java | 5 - .../l2jserver/gameserver/model/L2World.java | 36 - .../gameserver/model/actor/L2Character.java | 304 +++---- .../model/itemcontainer/ItemContainer.java | 1 + .../model/itemcontainer/PcInventory.java | 4 +- .../gameserver/model/items/L2Weapon.java | 15 + .../model/multisell/PreparedEntry.java | 5 + .../clientpackets/CharacterSelect.java | 2 +- 107 files changed, 1331 insertions(+), 266 deletions(-) create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-01a.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-02.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-03.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-02.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-03.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-05.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-06.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-07.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-08.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30758-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30759-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-02.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-03.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-04t.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-05.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-06.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-07.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-08.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-09.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-10.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-11.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-11t.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-12.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-13.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-14.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-15.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-15t.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-16.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-17.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-18.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-19.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-19t.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-20.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-21.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-22.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-23.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-24.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-24t.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30761-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30761-02.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30761-03.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30762-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30762-02.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30762-03.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30763-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30763-02.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30763-03.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-02.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-03.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-05.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-06.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-07a.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-08a.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-09.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-02.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-03.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-05.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-05a.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-02.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-03.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-05.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-06.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-07.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-08.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-02.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-03.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-05.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-06.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-06a.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-07.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-08.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-09.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-10.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-11.html create mode 100644 trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/Q00503_PursuitOfClanAmbition.java diff --git a/trunk/dist/game/config/Character.ini b/trunk/dist/game/config/Character.ini index 93722a73a8..466566413a 100644 --- a/trunk/dist/game/config/Character.ini +++ b/trunk/dist/game/config/Character.ini @@ -45,11 +45,6 @@ HpRegenMultiplier = 100 MpRegenMultiplier = 100 CpRegenMultiplier = 100 -# Decrease CP by 10 every normal hit a player do -# Default: False -AltGameTiredness = False - - # --------------------------------------------------------------------------- # Skills & Effects # --------------------------------------------------------------------------- diff --git a/trunk/dist/game/data/html/default/30761-1.htm b/trunk/dist/game/data/html/default/30761-1.htm index ff174c33be..e6d1341c27 100644 --- a/trunk/dist/game/data/html/default/30761-1.htm +++ b/trunk/dist/game/data/html/default/30761-1.htm @@ -1,2 +1,3 @@ Corpse of Fritz:
-There is nothing inside. \ No newline at end of file +Nothing is there. + \ No newline at end of file diff --git a/trunk/dist/game/data/html/default/30761.htm b/trunk/dist/game/data/html/default/30761.htm index 14079be99c..09f2cd298f 100644 --- a/trunk/dist/game/data/html/default/30761.htm +++ b/trunk/dist/game/data/html/default/30761.htm @@ -1,5 +1,4 @@ Corpse of Fritz:
-Dwarven corpse. Is carrying a large bag.
- - +An unfamiliar Dwarf has collapsed. He appears to have died of a bad injury.
+Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest. \ No newline at end of file diff --git a/trunk/dist/game/data/html/default/30762-1.htm b/trunk/dist/game/data/html/default/30762-1.htm index 0b632b44c0..f30815fc38 100644 --- a/trunk/dist/game/data/html/default/30762-1.htm +++ b/trunk/dist/game/data/html/default/30762-1.htm @@ -1,2 +1,3 @@ Corpse of Lutz:
-There is nothing inside. \ No newline at end of file +It is empty. + \ No newline at end of file diff --git a/trunk/dist/game/data/html/default/30762.htm b/trunk/dist/game/data/html/default/30762.htm index ca3f1ab21e..116ddc3ef1 100644 --- a/trunk/dist/game/data/html/default/30762.htm +++ b/trunk/dist/game/data/html/default/30762.htm @@ -1,5 +1,4 @@ Corpse of Lutz:
-Dwarven corpse. Is carrying a large bag.
- +The corpse of a Dwarf, apparently the victim of a grievous injury.
\ No newline at end of file diff --git a/trunk/dist/game/data/html/default/30763-1.htm b/trunk/dist/game/data/html/default/30763-1.htm index 99c975b5d1..3269dc5159 100644 --- a/trunk/dist/game/data/html/default/30763-1.htm +++ b/trunk/dist/game/data/html/default/30763-1.htm @@ -1,4 +1,4 @@ Corpse of Kurtz:
-There is nothing inside.
+There is nothing there.
\ No newline at end of file diff --git a/trunk/dist/game/data/html/default/30763.htm b/trunk/dist/game/data/html/default/30763.htm index 4031faaed5..15159bbc79 100644 --- a/trunk/dist/game/data/html/default/30763.htm +++ b/trunk/dist/game/data/html/default/30763.htm @@ -1,4 +1,4 @@ Corpse of Kurtz:
-Dwarven corpse. Is carrying a large bag.
- +A dead Dwarf, apparently the victim of grievous injury.
+ \ No newline at end of file diff --git a/trunk/dist/game/data/html/default/30765.htm b/trunk/dist/game/data/html/default/30765.htm index a2c3449c4e..0fc4dc9a23 100644 --- a/trunk/dist/game/data/html/default/30765.htm +++ b/trunk/dist/game/data/html/default/30765.htm @@ -1,4 +1,4 @@ -Imperial Coffer:

-Large box in which an exquisite decorative pattern is carved. It is fastened with six locks.

- +Imperial Coffer:
+A large wooden box, carved with an exquisite decorative pattern.
+ \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminFightCalculator.java b/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminFightCalculator.java index e5f6c4da44..039a4c3a3c 100644 --- a/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminFightCalculator.java +++ b/trunk/dist/game/data/scripts/handlers/admincommandhandlers/AdminFightCalculator.java @@ -204,8 +204,8 @@ public class AdminFightCalculator implements IAdminCommandHandler double dmg2 = 0; // ATTACK speed in milliseconds - int sAtk1 = npc1.calculateTimeBetweenAttacks(npc2, null); - int sAtk2 = npc2.calculateTimeBetweenAttacks(npc1, null); + int sAtk1 = npc1.calculateTimeBetweenAttacks(); + int sAtk2 = npc2.calculateTimeBetweenAttacks(); // number of ATTACK per 100 seconds sAtk1 = 100000 / sAtk1; sAtk2 = 100000 / sAtk2; @@ -353,4 +353,4 @@ public class AdminFightCalculator implements IAdminCommandHandler ((L2MonsterInstance) npc2).deleteMe(); } } -} +} \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-01.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-01.html new file mode 100644 index 0000000000..0346d1d4f1 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-01.html @@ -0,0 +1,3 @@ +Head Blacksmith Kusto:
+I've heard about your clan... you are the Clan in high spirits, no? I heard that you were headed towards Death Pass...? I'll be counting on you. Please find my brother. He received the title of honorable Bounty Hunter... These days he hangs out with a bad crowd called the Magpie's Brothers. People say they were hired by a human aristocrat to find something in Death Pass... There is something very fishy about them.... + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-01a.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-01a.html new file mode 100644 index 0000000000..67b5c84080 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-01a.html @@ -0,0 +1,3 @@ +Head Blacksmith Kusto:
+I have heard many impressive tales of your clan... I would be greatly honored to meet the lord of your clan. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-02.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-02.html new file mode 100644 index 0000000000..2b782af8b4 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-02.html @@ -0,0 +1,6 @@ +Head Blacksmith Kusto:
+A magpie brooch...? Does this mean...?! How could he...!
+Sob! It's from the Magpie Brothers! He fell in with those ruffians and see where it got him... He sullied the reputations of honorable Bounty Hunters everywhere... How dreadful!
+Even though he has disgraced himself, I cannot deny our blood connection. Thank you for discovering the fate of my brother. As a token of appreciation from myself and the Black Anvil Guild, please take these coins.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-03.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-03.html new file mode 100644 index 0000000000..802783ee07 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-03.html @@ -0,0 +1,3 @@ +Head Blacksmith Kusto:
+They don't respect their ancestors. They are bounty hunters who dig up graves and rummage through relics to collect anything that's valuable. They were named the Magpie's Brothers because of their greed. They even hoarded relics from the Dwarf Kingdom found in the ancient labyrinth in Schuttgart and sold them to collectors at high prices! They have no shame! The Magpie's Brothers were eventually banished from the Dwarf Kingdom, and rumor has it that they since sneaked into the Kingdom of Aden and have been stealing relics from the Elmore-Aden national cemetery... Recently, I heard that they are working on collecting eggs in Death Pass, and are cooperating with some human aristocrat.... + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-04.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-04.html new file mode 100644 index 0000000000..66202b9a03 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30512-04.html @@ -0,0 +1,4 @@ +Head Blacksmith Kusto:
+I will never forget your kindness in bringing me the news of my poor brother. I hope that the guild can help you someday.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-01.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-01.html new file mode 100644 index 0000000000..639b958235 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-01.html @@ -0,0 +1,3 @@ +Martien:
+Sir Gustav professed much faith in your clan. I must speak to your leader! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-02.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-02.html new file mode 100644 index 0000000000..ebda1d80fc --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-02.html @@ -0,0 +1,5 @@ +Martien:
+I have already given it to Athebaldt. Antharas is preparing to awaken The Land Dragon. Many people dismiss it as mere rumor, but according to Athebaldt's report, it's starting, and starting soon. At that time, the wyrms and drakes inhabiting Death Pass shall follow Antharas, like soldiers being led onto the battlefield, and they will lay waste to this region.
+In order for Giran to survive, we must prepare. We can't suppress him, and using normal methods to fight Antharas is pointless. We must find a way to stand against Antharas's monsters. We have come up with a plan... Thankfully, Athebaldt must have heard somehow, and he chose to support us.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-03.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-03.html new file mode 100644 index 0000000000..2da992467f --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-03.html @@ -0,0 +1,3 @@ +Martien:
+We are collecting the eggs of wyrms and drakes in order to learn about their breeding habits. One expert in this field is thinking of studying these eggs at the suggestion of numerous pet managers. In order to collect the eggs, several dwarven bounty hunters were dispatched to Death Pass, but it has been over a week since their departure, and they have not yet returned. Perhaps it was too much for them? I would like for you to go to Death Pass and collect the eggs. Please obtain 10 each of the Sandworm Eggs, Drake Eggs, Blitz Wyrm Eggs, and Mist Drake Eggs. The Blitz Wyrms and Mist Drakes are very rare, so you may have difficulty finding them. Also, if you run into the dwarves who were dispatched earlier, you may receive some clues. Good luck! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-04.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-04.html new file mode 100644 index 0000000000..c9a23d671f --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-04.html @@ -0,0 +1,4 @@ +Martien:
+The land dragon will soon be awake. This will decide the fate of Giran... no, the entire kingdom itself. Hurry to Death Pass, and obtain Sandworm Eggs, Drake Eggs, Blitz Wyrm Eggs, and Mist Drake Eggs. One or two won't do 0 I need 10 of each. I know it will be difficult, but please do this for me.
+Oh! One more thing - the Blitz Wyrm and the Mist Drake are quite rare, so you will have more difficulty finding them. And if you run into the dwarves who were dispatched earlier, you may receive some clues. Good luck. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-05.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-05.html new file mode 100644 index 0000000000..9338df02be --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-05.html @@ -0,0 +1,6 @@ +Martien:
+All dead?...Oh, my!
+How dreadful! Oh, well, what can be done? I mean, frankly, they were grave robbers and made their living smuggling stolen relics... It is a dangerous life which always seems to end prematurely.
+Anyway, good job! I'll take all the eggs that you've brought. Now you should report back to Athebaldt.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-06.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-06.html new file mode 100644 index 0000000000..85d082d567 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-06.html @@ -0,0 +1,3 @@ +Martien:
+Hmm, I wouldn't know. They had rather unsavory reputations, even for Dwarves... Just put them out of your mind. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-07.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-07.html new file mode 100644 index 0000000000..366cade4f2 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-07.html @@ -0,0 +1,3 @@ +Martien:
+Thank you again for all of your help. I have reported to Athebaldt what a big help you've been. Go and see him. He is expecting you. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-08.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-08.html new file mode 100644 index 0000000000..07ce86cd4f --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30645-08.html @@ -0,0 +1,3 @@ +Martien:
+Athebaldt has a very high opinion of your clan. His influence will be a big factor in your success. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30758-01.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30758-01.html new file mode 100644 index 0000000000..f18b7d9ac7 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30758-01.html @@ -0,0 +1,3 @@ +Witch Athrea:
+Take heed, my ambitious friend! The path of a king is often ravaged by war and death! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30759-01.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30759-01.html new file mode 100644 index 0000000000..c9f22560ed --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30759-01.html @@ -0,0 +1,3 @@ +Witch Kalis:
+You who will walk the path of a king, listen carefully! Ambition and power will guide your fate! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-01.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-01.html new file mode 100644 index 0000000000..7511a9fc25 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-01.html @@ -0,0 +1,6 @@ +Sir Gustav Athebaldt:
+The power of the royals has been eroding for years now. Just look at the peasants' uprising in Dion a few years ago; past generations wouldn't have dared dream of such things, and yet... here we are. The uprising planted seeds, see, and now a number of groups are preparing to claim power from the throne.
+Our kingdom needs young, energetic lords like you to lead it into the future, but you're not yet ready yet.
+Once your clan distinguishes itself further, I will join forces with you and lend you my support.
+(Only a level 4 clan leader can undertake this quest.) + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-02.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-02.html new file mode 100644 index 0000000000..5ad6f322a0 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-02.html @@ -0,0 +1,6 @@ +Sir Gustav Athebaldt:
+The power of the royals has been eroding for years now. Just look at the peasants' uprising in Dion a few years ago; past generations wouldn't have dared dream of such things, and yet... here we are. The uprising planted seeds, see, and now a number of groups are preparing to claim power from the throne.
+Our kingdom needs young, energetic lords like you to lead it into the future, but you're not yet ready yet.
+Once your clan distinguishes itself further, I will join forces with you and lend you my support, even if you already have more than enough allies.
+(Only a level 4 clan leader can undertake this quest.) + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-03.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-03.html new file mode 100644 index 0000000000..e6730eed0d --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-03.html @@ -0,0 +1,3 @@ +Sir Gustav Athebaldt:
+Finally, the Seal of Aspiration! Good work! Now you must take it to one of the grand masters. Show it to them and they will instruct you on how to strengthen your clan. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-04.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-04.html new file mode 100644 index 0000000000..ece04f6ac3 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-04.html @@ -0,0 +1,5 @@ +Sir Gustav Athebaldt:
+The power of the royals has been eroding for years now. Just look at the peasants' uprising in Dion a few years ago; past generations wouldn't have dared dream of such things, and yet... here we are. The uprising planted seeds, see, and now a number of groups are preparing to claim power from the throne.
+Our kingdom needs young, energetic lords like you to lead it into the future. If you would accept my aid, I would gladly give it.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-04t.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-04t.html new file mode 100644 index 0000000000..716e7f5107 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-04t.html @@ -0,0 +1,5 @@ +Sir Gustav Athebaldt:
+The power of the royals has been eroding for years now. Just look at the peasants' uprising in Dion a few years ago; past generations wouldn't have dared dream of such things, and yet... here we are. The uprising planted seeds, see, and now a number of groups are preparing to claim power from the throne.
+Our kingdom needs young, energetic lords like you to lead it into the future.
+(Only a level 4 clan leader can undertake this quest.) + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-05.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-05.html new file mode 100644 index 0000000000..e28bff550b --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-05.html @@ -0,0 +1,5 @@ +Sir Gustav Athebaldt:
+Yes, I agree. But first I must ask you a question: why do you wish to seek your clan? As clan leader, what is it that you truly desire? Answer truly.
+ + + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-06.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-06.html new file mode 100644 index 0000000000..b44e2e3036 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-06.html @@ -0,0 +1,5 @@ +Sir Gustav Athebaldt:
+Ha... you remind me of myself when I was young. But this world is not so easily conquered my friend....
+I believe that you have what it takes to be a capable leader, and I'm sure things will work out for the best. Now though... now you must help me prepare for my mission.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-07.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-07.html new file mode 100644 index 0000000000..83ff95e3e2 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-07.html @@ -0,0 +1,4 @@ +Sir Gustav Athebaldt:
+Then you must never show your true feelings; a leader with as many followers as you must keep their private opinions to themselves. You have shown much potential, so now I will tell you how you can help me.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-08.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-08.html new file mode 100644 index 0000000000..ccb17090ac --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-08.html @@ -0,0 +1,4 @@ +Sir Gustav Athebaldt:
+Right now, Giran is very unhapppy because of the Land Dragon Antharas. It's understandable because rumor has it Antharas is awake again. The ones in power in Giran, the nobles and merchants, are discussing ridiculous solutions about hiring mercenaries and such. The fools.... You know, a swarm of drakes and wyrms may emerge from Death Pass soon, so I can't just wait 'til those useless nobles come up with a half-baked solution.
+I'm starting a business in Giran to find a solution; here's something you might interested in. First, go to Giran Castle Town, and meet with Martien. He's taking care of business me. He's someone I trust, so cooperate with him. May god bless you and your clan. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-09.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-09.html new file mode 100644 index 0000000000..3f16b4f9fa --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-09.html @@ -0,0 +1,3 @@ +Sir Gustav Athebaldt:
+You must hurry to the Town of Giran and meet with Martien. Do whatever he says, and go prepared! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-10.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-10.html new file mode 100644 index 0000000000..afecc4a224 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-10.html @@ -0,0 +1,3 @@ +Sir Gustav Athebaldt:
+How are things going with Martien? I have his report right here, and by the sounds of it you and your clan are doing well. Just never forget the responsibilities you shoulder now, towards the whole of Aden. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-11.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-11.html new file mode 100644 index 0000000000..52542d0daa --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-11.html @@ -0,0 +1,5 @@ +Sir Gustav Athebaldt:
+I have just received Martien's report. I have given compensation to the families of the dead Dwarves, but it still pains me to see good men in my employ meet their end under my watch. Today is truly a sad day....
+At least their suffering was not in vaun: the first part of my plan has been completed. Now we must move on to the next.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-11t.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-11t.html new file mode 100644 index 0000000000..07dc3fe9fc --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-11t.html @@ -0,0 +1,3 @@ +Sir Gustav Athebaldt:
+Martien tells me that you have completed the first stage of the plan. Now you and your clan are needed elsewhere. Please have your clan lord come and see me in the next few days. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-12.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-12.html new file mode 100644 index 0000000000..dd5897607a --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-12.html @@ -0,0 +1,4 @@ +Sir Gustav Athebaldt:
+History shows us again and again that ultimate power, complete domination comes most often to those with the superior technology. It's because of that that I have long supported the Black Anvil guild. Their mission is to research the ancient technology of the giants, technology which has so far failed to yield any practical applications even when it has such amazing potential.
+There is a Dwarf in the guild named Balthazar in whom I have invested much time and resources. He is an amazing Artisan, and I believe that his efforts will soon bear fruit. However, he has reached an impasse in his work and has requested my help. It has something to do with a new type of golem he is developing.... He will tell you more when you see him. Take this letter and find him in Hunters Village. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-13.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-13.html new file mode 100644 index 0000000000..af37aa49ee --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-13.html @@ -0,0 +1,3 @@ +Sir Gustav Athebaldt:
+You must hurry to Balthazar with the letter I gave you. He can be found in Hunters Village. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-14.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-14.html new file mode 100644 index 0000000000..2c3ec6ce98 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-14.html @@ -0,0 +1,3 @@ +Sir Gustav Athebaldt:
+Although Balthazar is not well-known in Dwarven society, he is an incredibly talented Artisan, and now it seems that his efforts will finally bear fruit. Your clan will be a great help to him; I also expect that the results of his research will be of great use to you.... + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-15.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-15.html new file mode 100644 index 0000000000..d6058592b2 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-15.html @@ -0,0 +1,5 @@ +Sir Gustav Athebaldt:
+I have heard that your clan has been a great help to Balthazar... thank you.
+I hate to bring this up so soon after your return, but the next part of your mission awaits. Are you ready?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-15t.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-15t.html new file mode 100644 index 0000000000..c6dc7edebf --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-15t.html @@ -0,0 +1,4 @@ +Sir Gustav Athebaldt:
+I have heard of the great help that you and your clan have given to Balthazar... thank you.
+Now why didn't you bring your clan leader with you? I must meet with him to ask for his help with something. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-16.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-16.html new file mode 100644 index 0000000000..1c2fd8bfb8 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-16.html @@ -0,0 +1,5 @@ +Sir Gustav Athebaldt:
+Much has transpired since then. Dire warnings of global destruction and chaos are rife throughout the land. A force has been dispatched to deal with Antharas, and evil spirits are wreaking havoc in several parts of the kingdom. Warlords are battling against each other for the privilege of ruling the territories. We haven't much time; we must quickly finish our preparations.
+Have you heard of the Scepter of Judgment? Legend states that whoever holds it becomes invincible in battle. Of course this is complete nonsense, but the problem is that everyone believes it to be true, commoner and soldier alike....
+Take this letter to Sir Eric Rodemai in the Town of Aden. He and his family are all my faithful servants. He will tell you what you are to do when you see him. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-17.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-17.html new file mode 100644 index 0000000000..395e8cb26e --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-17.html @@ -0,0 +1,3 @@ +Sir Gustav Athebaldt:
+You must find the Scepter of Judgment and secure it before it falls into the wrong hands. Go and see Sir Eric Rodemai in the Town of Aden. Give him the letter I gave you and he will tell you what to do next. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-18.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-18.html new file mode 100644 index 0000000000..2c5b7c6ceb --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-18.html @@ -0,0 +1,3 @@ +Sir Gustav Athebaldt:
+I hear that you have met with Sir Rodemai. As you know, you must find the Scepter of Judgment. If it falls into the hands of our rivals, it will bring chaos and destruction to all that we know. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-19.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-19.html new file mode 100644 index 0000000000..45cc320442 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-19.html @@ -0,0 +1,5 @@ +Sir Gustav Athebaldt:
+Wonderful work! You managed to obtain the Scepter of Judgment! Now quick... hand it over!
+ + + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-19t.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-19t.html new file mode 100644 index 0000000000..0086a74f03 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-19t.html @@ -0,0 +1,3 @@ +Sir Gustav Athebaldt:
+Wonderful! You were able to secure the Scepter of Judgement! Where is your clan leader, by the way? I trust he wasn't hurt? + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-20.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-20.html new file mode 100644 index 0000000000..9f7e57c1d9 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-20.html @@ -0,0 +1,4 @@ +Sir Gustav Athebaldt:
+Well, our time together has finally come to an end. I pray that one day your clan will become strong enough to establish peace on this continent, but fear that it will take a great many deaths before peace can be established here.
+Now I bestow upon your clan the Seal of Aspiration. Since the days of King Rauhel this honor has been given to Aden's most promising young lords who dare to dream great dreams. Present this seal to High Priests and Grand Masters and you'll receive help in strengthening your clan. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-21.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-21.html new file mode 100644 index 0000000000..cc9345a780 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-21.html @@ -0,0 +1,10 @@ +Sir Gustav Athebaldt:
+I see from your face that Sir Rodemai has been talking about me....
+Please don't misunderstand my intentions; When King Rauhel was alive, I served him faithfully, and I have been as truthful with you as I thought I could be, but I believe my country needs a strong ruler such as myself....
+Ah yes, the mighty Scepter of Judgment! Ha! Even if it has no genuine powers, the reputation it has garnered and the fear it instills in others almost makes it as powerful as the legend. Now with the scepter by my side I can rally my troops and make our enemies tremble! I will become invincible!
+And what of you? I must admit, I took advantage of your clan, but didn't you also use me for your own purposes? You will certainly need my help in the future. There may come a day when we will face each other as enemies, but for now, what is it that you need the most?
+Perhaps the very thing I have in my hand? The Seal of Aspiration?
+We can each help ourselves by helping each other! A fair trade, no?
+ + + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-22.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-22.html new file mode 100644 index 0000000000..754942dfc1 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-22.html @@ -0,0 +1,4 @@ +Sir Gustav Athebaldt:
+You are an... an idiot! How can you be so short-sighted! What a hypocrite! I certainly judged you wrong!
+Even now the Black Legion is coming for this, and you will be powerless to fight back. They will wash over you like the incoming tide, and when they have what they want they will leave, leaving you little more than broken, ruined potential. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-23.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-23.html new file mode 100644 index 0000000000..e8e7a37c6b --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-23.html @@ -0,0 +1,3 @@ +Sir Gustav Athebaldt:
+I suppose I misjudged you. We all seek what we think is most important. Here you go. Take the Seal of Aspiration--it will bring you one step closer to your dream. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-24.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-24.html new file mode 100644 index 0000000000..b542a3f494 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-24.html @@ -0,0 +1,5 @@ +Sir Gustav Athebaldt:
+An elder knows when to change his mind; a child does not. What were you thinking by refusing me the scepter? You must have known that you couldn't keep it from me--I am destined to possess it.
+ + + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-24t.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-24t.html new file mode 100644 index 0000000000..187bffad04 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30760-24t.html @@ -0,0 +1,3 @@ +Sir Gustav Athebaldt:
+Go and tell your clan leader that he must relinquish the scepter immediately. It is of no use to your clan. If he values his own life and that of his clan he will comply. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30761-01.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30761-01.html new file mode 100644 index 0000000000..e5d1efacf3 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30761-01.html @@ -0,0 +1,4 @@ +Corpse of Fritz:
+A dead Dwarf with a large bag.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30761-02.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30761-02.html new file mode 100644 index 0000000000..36bb33a0ef --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30761-02.html @@ -0,0 +1,3 @@ +Corpse of Fritz:
+There are three Blitz Wyrm Eggs inside. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30761-03.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30761-03.html new file mode 100644 index 0000000000..e38becd71d --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30761-03.html @@ -0,0 +1,3 @@ +Corpse of Fritz:
+There is nothing there. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30762-01.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30762-01.html new file mode 100644 index 0000000000..5b2b7fd3a6 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30762-01.html @@ -0,0 +1,4 @@ +Corpse of Lutz:
+The corpse of a Dwarf with a large bag.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30762-02.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30762-02.html new file mode 100644 index 0000000000..11c00fb930 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30762-02.html @@ -0,0 +1,3 @@ +Corpse of Lutz:
+There are three Blitz Wyrm Eggs and four Mist Drake Eggs inside. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30762-03.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30762-03.html new file mode 100644 index 0000000000..f30815fc38 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30762-03.html @@ -0,0 +1,3 @@ +Corpse of Lutz:
+It is empty. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30763-01.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30763-01.html new file mode 100644 index 0000000000..8a84bfca05 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30763-01.html @@ -0,0 +1,4 @@ +Corpse of Kurtz:
+A seriously injured Dwarf, gasping for his last breath.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30763-02.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30763-02.html new file mode 100644 index 0000000000..b410e8dacc --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30763-02.html @@ -0,0 +1,3 @@ +Corpse of Kurtz:
+Uhhhh... Luh, luh, look here... I was wrong... Woe is me!... What an awful way to die... Eggs of drake... Tuh, tuh, take them to Martien... And, this brooch... Puh, puh, please... take it to muh, my brother Kusto...! Maphr... welcomes... my... soul... Arghhhh... + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30763-03.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30763-03.html new file mode 100644 index 0000000000..6619e30055 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30763-03.html @@ -0,0 +1,3 @@ +Corpse of Kurtz:
+The still-warm corpse of a Dwarf. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-01.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-01.html new file mode 100644 index 0000000000..7aabd5f32e --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-01.html @@ -0,0 +1,3 @@ +Balthazar:
+Sir Athebaldt has told me that your clan would be helpful in my research. I don't have the time to repeat myself, where is the leader of your fine clan? + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-02.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-02.html new file mode 100644 index 0000000000..6af72bbc1d --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-02.html @@ -0,0 +1,4 @@ +Balthazar:
+From what Sir Athebaldt has told me, your clan has decided to aid my research. Is that true? Excellent! Oh, you want to know some details about my studies? Of course; I will gladly tell you, my friend. I am working with my old friend Tajif Goldgather to find a new energy source. If we are successful, we will be able to maximize the efficiency of a number of devices. Exciting, isn't it?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-03.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-03.html new file mode 100644 index 0000000000..7c4db90ba3 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-03.html @@ -0,0 +1,4 @@ +Balthazar:
+Ah! I need more Spiteful Soul energy to complete my research. Go to the Massacre Fields. There you will find the Spiteful Soul Captain, who possesses the energies of several vengeful spirits. It will not be easy to defeat him because he surrounds himself with followers, but I think your party is powerful enough to do so. Defeat the
+Spiteful Soul Captain and obtain the Spiteful Soul Energy before the souls disappear. If they are destroyed, they are worthless to me... Bring me at least 10 and I will be exceedingly grateful. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-04.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-04.html new file mode 100644 index 0000000000..5d0a6143f2 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-04.html @@ -0,0 +1,4 @@ +Balthazar:
+From what Sir Athebaldt has told me, your clan has decided to aid my research. Is that true? Excellent! Oh, you want to know some details about my studies? Of course; I will gladly tell you, my friend. My old friend Tajif Goldgather recently found some mysterious documents in the Cruma Tower. To make a long story short, we are researching a potential energy source. If we are successful, we will be able to maximize the efficiency of a number of devices.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-05.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-05.html new file mode 100644 index 0000000000..0fdb351b64 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-05.html @@ -0,0 +1,5 @@ +Balthazar:
+Ah! I need more Spiteful Soul energy to complete my research. Go to the Massacre Fields. There you will find the Spiteful Soul Captain, who possesses the energies of several vengeful spirits. It will not be easy to defeat him because he surrounds himself with followers, but I think your party is powerful enough to do so. Defeat the
+Spiteful Soul Captain and obtain the Spiteful Soul Energy before the souls disappear. If they are destroyed, they are worthless to me... Bring me at least 10 and I will be exceedingly grateful. Very well, then...wait! What is that coin? Let me see it!
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-06.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-06.html new file mode 100644 index 0000000000..1915cd8c7d --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-06.html @@ -0,0 +1,3 @@ +Balthazar:
+This is a guild coin! You must have helped a member of the Black Anvil Guild... Well, we Dwarves have long memories for those who render us aid. I will give you one item that prove helpful to you in this task. This is a recipe for converting partial Spiteful Souls into useable energy. If there is a Dwarf in your midst, he will be able to use this on your behalf. Now then, may Maphr bring you a prosperous journey! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-07a.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-07a.html new file mode 100644 index 0000000000..65132fabf5 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-07a.html @@ -0,0 +1,3 @@ +Balthazar:
+As I already told you, I need 10 Spiteful Soul Energies. After defeating the Spiteful Soul Captain in the Massacre Fields, collect the energies before his body vanishes. Remember, though -- I need the Spiteful Soul Energies, not the Spiteful Souls themselves! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-08a.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-08a.html new file mode 100644 index 0000000000..ba4573cd6a --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-08a.html @@ -0,0 +1,3 @@ +Balthazar:
+Excellent! You have brought all Spiteful Soul Energies I asked for. Shall I take a look? Join me, my friend! Ah...I can feel the power of the souls thrumming like the string of a lyre! If we can tap this source, we will be able to develop an almost unlimited source of energy! Then my name will be sung forever in the halls of my descendants! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-09.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-09.html new file mode 100644 index 0000000000..be2ff69168 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30764-09.html @@ -0,0 +1,3 @@ +Balthazar:
+Thanks to you my research is proceeding as scheduled. Soon we shall all see the amazing results! The prototype is almost finished! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-01.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-01.html new file mode 100644 index 0000000000..d66ca25d80 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-01.html @@ -0,0 +1,4 @@ +Imperial Coffer:
+The box is secured with six locks.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-02.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-02.html new file mode 100644 index 0000000000..90bb6bdeee --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-02.html @@ -0,0 +1,3 @@ +Imperial Coffer:
+This box may only be opened by a clan leader. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-03.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-03.html new file mode 100644 index 0000000000..be9158382f --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-03.html @@ -0,0 +1,4 @@ +Imperial Coffer:
+The box is secured with six locks.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-04.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-04.html new file mode 100644 index 0000000000..007160124e --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-04.html @@ -0,0 +1,3 @@ +Imperial Coffer:
+You have discovered the Scepter of Judgment. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-05.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-05.html new file mode 100644 index 0000000000..8bbb113361 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-05.html @@ -0,0 +1,4 @@ +Imperial Coffer:
+The box is secured with six locks.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-05a.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-05a.html new file mode 100644 index 0000000000..abdc5cd935 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30765-05a.html @@ -0,0 +1,3 @@ +Imperial Coffer:
+It will not open. + diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-01.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-01.html new file mode 100644 index 0000000000..55581a70b5 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-01.html @@ -0,0 +1,3 @@ +Witch Cleo:
+I must find the leader of the brothers of blood. They are warriors united by their firm resolve and ambition. I must guide him to a priceless royal symbol of no monetary value... + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-02.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-02.html new file mode 100644 index 0000000000..aff33669b3 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-02.html @@ -0,0 +1,4 @@ +Witch Cleo:
+Welcome leader of the resolute and anmitious brothers of blood. I have been expecting you...
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-03.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-03.html new file mode 100644 index 0000000000..4e296e1a4f --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-03.html @@ -0,0 +1,4 @@ +Witch Cleo:
+Listen carefully. There is one whose path freely traverses time and space. The holder of 6 keys, the great king of grave lookouts... If he is pierced with a two-pronged spear, he will be brought down, and then his effects shall become yours... Or if you wish, I could tell you another story.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-04.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-04.html new file mode 100644 index 0000000000..7e54229585 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-04.html @@ -0,0 +1,3 @@ +Witch Cleo:
+The path of a king is rife with blood and honor, war and death, ambition and power. Soon you will know all of them well. Such has it always been and such shall it always be. Soon you will be forced to choose whether to stand against the waves of fate or to ride over them... + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-05.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-05.html new file mode 100644 index 0000000000..a02ef5548a --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-05.html @@ -0,0 +1,3 @@ +Witch Cleo:
+I never repeat myself. If you don't understand what I have already explained to you, go and see Sir Eric Rodemai. His family often visits me to listen to the ramblings of a crazy old woman. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-06.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-06.html new file mode 100644 index 0000000000..91f868d3bd --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-06.html @@ -0,0 +1,3 @@ +Witch Cleo:
+Did you hear what I said? Riding the waves of fate or standing against them. Although fate may be cruel regardless of which you choose, you still must make a choice. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-07.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-07.html new file mode 100644 index 0000000000..96d44ec707 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-07.html @@ -0,0 +1,4 @@ +Witch Cleo:
+The Scepter of Judgment is desperately sought after by many of the military elite... You can trade it for something you would find much more useful. Why have you brought it to me? Can I touch it?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-08.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-08.html new file mode 100644 index 0000000000..95ba03715b --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30766-08.html @@ -0,0 +1,7 @@ +Witch Cleo:
+Ah, the scepter of shunaiman! It's been many years since I laid eyes on it. Its color has completely faded!
+Although it is quite ancient it is very fragile. For instance, if I were to drop it while standing on a stone floor...
+Clang!! It would break just like that! Ha!
+Destruction and chaos! It's what I live for! Stop frowning, it was of no use to you anyway. Why else would you have handed it over so willingly...
+Instead, why don't you take this? It was given to me by a young king who had gotten it from the lady of the lake. Take it with you. When next we meet you shall be drenched in blood, and I will be waiting... + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-01.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-01.html new file mode 100644 index 0000000000..00f4717329 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-01.html @@ -0,0 +1,3 @@ +Sir Eric Rodemai:
+Gustav Athebaldt told me about you. It's an honor to finally get to work with you. Actually my father Sir Kristof Rodemai often speaks of you. He says that you and your race have embarked on a great mission, and I should watch you carefully and learn. I wish to meet the lord of your clan as soon as possible. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-02.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-02.html new file mode 100644 index 0000000000..dff6dee0cc --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-02.html @@ -0,0 +1,5 @@ +Sir Eric Rodemai:
+Gustav Athebaldt told me about you. It's an honor to finally get to work with you. Actually my father Sir Kristof Rodemai often speaks of you. He says that you and your race have embarked on a great mission, and I should watch you carefully and learn. I wish to meet the lord of your clan as soon as possible.
+Generations ago my family agreed to work for the Athebaldt family. Now they have ordered us to recover the Scepter of Judgment, a relic of the ancient kingdom. It may actually be just a legend, we have been searching everywhere without success.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-03.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-03.html new file mode 100644 index 0000000000..c0a55b34d3 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-03.html @@ -0,0 +1,4 @@ +Sir Eric Rodemai:
+As you may know, it is said that the scepter makes its possessor invincible in battle. Although this is probably just a legend, having it will greatly boost our soldiers' morale. However, we are losing hope of finding it. We hired Dwarven Bounty Hunters to find it and they have had no success either. My father has recommended that I ask the witches' advice regarding this matter...
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-04.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-04.html new file mode 100644 index 0000000000..9bb792001b --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-04.html @@ -0,0 +1,3 @@ +Sir Eric Rodemai:
+It is impossible to guess how old these three women are. They typically show up, mumble some incomprehensible incantations and vanish. My father has become obsessed by their remarks. I'm not sure if these witches have been of any help to my family in the past. If it was up to me I wouldn't have anything to do with those blasphemous old women. Would you be willing to visit them on my behalf? It is said that the youngest of the three sisters, Cleo, can be found east of the village. Cross the bridge and you will find her. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-05.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-05.html new file mode 100644 index 0000000000..ae67d2153c --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-05.html @@ -0,0 +1,3 @@ +Sir Eric Rodemai:
+Please find Cleo and ask her advice on the Scepter of Judgment. East of the village you will find a bridge. Cross it and you will find her. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-06.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-06.html new file mode 100644 index 0000000000..d761f34904 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-06.html @@ -0,0 +1,4 @@ +Sir Eric Rodemai:
+An Imperial grave? A grave keeper? Guardian of a key? Traveling freely through time and space? Must be pierced with two-pronged lance? I've got a pretty good idea what they mean...
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-06a.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-06a.html new file mode 100644 index 0000000000..7d6adba65d --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-06a.html @@ -0,0 +1,7 @@ +Sir Eric Rodemai:
+Let me see if I can put them together...
+It is at the National Cemetery...
+Once you defeat the grave keeper a key master will show up and give you a key...
+When you collect all six keys, you must overpower the imperial grave keeper and find the scepter...
+You must take care, as the Imperial grave keeper can move through time and space... This will appear as instantaneous attacks... You must divide your team into two parts to defeat him. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-07.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-07.html new file mode 100644 index 0000000000..29980af3c1 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-07.html @@ -0,0 +1,3 @@ +Sir Eric Rodemai:
+You have obtained an important clue from the witch regarding the Scepter of Judgment? Now you must go and find it! I must speak with your clan lord regarding this matter. Please bring him to me at once! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-08.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-08.html new file mode 100644 index 0000000000..d6ed586deb --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-08.html @@ -0,0 +1,4 @@ +Sir Eric Rodemai:
+Will it be possible to find the Scepter of Judgment by following the obscure clues of the witches?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-09.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-09.html new file mode 100644 index 0000000000..f9e206ec19 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-09.html @@ -0,0 +1,4 @@ +Sir Eric Rodemai:
+Ah, at last, the Scepter of Judgment! It truly does exist! This is a great accomplishment... Sir Gustav Athebaldt sends word that he would like for all of you to bring the scepter to him. However, I must ask you something... Why are you allowing yourselves to be taken advantage of by someone like Sir Gustav Athebaldt? My father has told me a lot about you and that's why I ask. With your skills you can follow your own path.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-10.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-10.html new file mode 100644 index 0000000000..d2c21d5788 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-10.html @@ -0,0 +1,5 @@ +Sir Eric Rodemai:
+Sir Gustav Athebaldt is an uncle of King Amadeo Cadmus. He is next in succession to the royal throne. He feigns a disinterest in politics to dispel people's suspicions, while in reality he controls many cliques which are undermining the power of the king. He ulimately plans to seize the throne!
+The dragon eggs you have collected will be used to create his own private army of striders. Even now Dwarven Artisans are completing the gigantic siege weapons he will use in the coup.
+This is all I will say on the subject. Please go to Sir Gustav Athebaldt. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-11.html b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-11.html new file mode 100644 index 0000000000..a71b801d6e --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/30868-11.html @@ -0,0 +1,3 @@ +Sir Eric Rodemai:
+Despite his outward appearance Sir Athebaldt is a very crafty man. You must take care that he doesn't take advantage of you. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/Q00503_PursuitOfClanAmbition.java b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/Q00503_PursuitOfClanAmbition.java new file mode 100644 index 0000000000..cbc41454d0 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00503_PursuitOfClanAmbition/Q00503_PursuitOfClanAmbition.java @@ -0,0 +1,845 @@ +/* + * Copyright (C) 2004-2015 L2J DataPack + * + * This file is part of L2J DataPack. + * + * L2J DataPack 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. + * + * L2J DataPack 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 . + */ +package quests.Q00503_PursuitOfClanAmbition; + +import com.l2jserver.gameserver.enums.ChatType; +import com.l2jserver.gameserver.model.L2Clan; +import com.l2jserver.gameserver.model.actor.L2Npc; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.model.quest.Quest; +import com.l2jserver.gameserver.model.quest.QuestState; +import com.l2jserver.gameserver.network.NpcStringId; +import com.l2jserver.gameserver.network.serverpackets.NpcSay; +import com.l2jserver.gameserver.util.Util; + +/** + * Pursuit Of Clan Ambition (503) + * @author ivantotov, Zoey76 + */ +public final class Q00503_PursuitOfClanAmbition extends Quest +{ + // NPCs + private static final int HEAD_BLACKSMITH_KUSTO = 30512; + private static final int MARTIEN = 30645; + private static final int WITCH_ATHREA = 30758; + private static final int WITCH_KALIS = 30759; + private static final int SIR_GUSTAV_ATHEBALDT = 30760; + private static final int CORPSE_OF_FRITZ = 30761; + private static final int CORPSE_OF_LUTZ = 30762; + private static final int CORPSE_OF_KURTZ = 30763; + private static final int BALTHAZAR = 30764; + private static final int IMPERIAL_COFFER = 30765; + private static final int WITCH_CLEO = 30766; + private static final int SIR_ERIC_RODEMAI = 30868; + // Items + private static final int MIST_DRAKES_EGG = 3839; + private static final int BLITZ_WYRM_EGG = 3840; + private static final int DRAKES_EGG = 3841; + private static final int THUNDER_WYRM_EGG = 3842; + private static final int BROOCH_OF_THE_MAGPIE = 3843; + private static final int IMPERIAL_KEY = 3847; + private static final int GUSTAVS_1ST_LETTER = 3866; + private static final int GUSTAVS_2ND_LETTER = 3867; + private static final int GUSTAVS_3RD_LETTER = 3868; + private static final int SCEPTER_OF_JUDGMENT = 3869; + private static final int BLACK_ANVIL_COIN = 3871; + private static final int RECIPE_SPITEFUL_SOUL_ENERGY = 14854; + private static final int SPITEFUL_SOUL_ENERGY = 14855; + private static final int SPITEFUL_SOUL_VENGEANCE = 14856; + // Reward + private static final int SEAL_OF_ASPIRATION = 3870; + // Monsters + private static final int DRAKE = 20137; + private static final int DRAKE2 = 20285; + private static final int THUNDER_WYRM = 20243; + private static final int THUNDER_WYRM2 = 20282; + private static final int GRAVE_GUARD = 20668; + private static final int SPITEFUL_SOUL_LEADER = 20974; + // Quest Monster + private static final int GRAVE_KEYMASTER = 27179; + private static final int IMPERIAL_GRAVEKEEPER = 27181; + private static final int BLITZ_WYRM = 27178; + + public Q00503_PursuitOfClanAmbition() + { + super(503, Q00503_PursuitOfClanAmbition.class.getSimpleName(), "Pursuit Of Clan Ambition"); + addStartNpc(SIR_GUSTAV_ATHEBALDT); + addTalkId(SIR_GUSTAV_ATHEBALDT, HEAD_BLACKSMITH_KUSTO, MARTIEN, WITCH_ATHREA, WITCH_KALIS, CORPSE_OF_FRITZ, CORPSE_OF_LUTZ, CORPSE_OF_KURTZ, BALTHAZAR, IMPERIAL_COFFER, WITCH_CLEO, SIR_ERIC_RODEMAI); + addKillId(DRAKE, DRAKE2, THUNDER_WYRM, THUNDER_WYRM2, GRAVE_GUARD, SPITEFUL_SOUL_LEADER, GRAVE_KEYMASTER, BLITZ_WYRM, IMPERIAL_GRAVEKEEPER); + addSpawnId(WITCH_ATHREA, WITCH_KALIS, IMPERIAL_COFFER, BLITZ_WYRM); + registerQuestItems(MIST_DRAKES_EGG, BLITZ_WYRM_EGG, DRAKES_EGG, THUNDER_WYRM_EGG, BROOCH_OF_THE_MAGPIE, IMPERIAL_KEY, GUSTAVS_1ST_LETTER, GUSTAVS_2ND_LETTER, GUSTAVS_3RD_LETTER, SCEPTER_OF_JUDGMENT, BLACK_ANVIL_COIN, RECIPE_SPITEFUL_SOUL_ENERGY, SPITEFUL_SOUL_ENERGY, SPITEFUL_SOUL_VENGEANCE); + } + + @Override + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) + { + if (event.startsWith("DESPAWN")) + { + npc.deleteMe(); + return super.onAdvEvent(event, npc, player); + } + + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + switch (event) + { + case "30760-08.html": + { + if (qs.isCreated()) + { + giveItems(player, GUSTAVS_1ST_LETTER, 1); + qs.startQuest(); + qs.setMemoState(1000); + htmltext = event; + } + break; + } + case "30760-12.html": + { + giveItems(player, GUSTAVS_2ND_LETTER, 1); + qs.setMemoState(4000); + qs.setCond(4); + htmltext = event; + break; + } + case "30760-16.html": + { + giveItems(player, GUSTAVS_3RD_LETTER, 1); + qs.setMemoState(7000); + qs.setCond(7); + htmltext = event; + break; + } + case "30760-20.html": + { + if (hasQuestItems(player, SCEPTER_OF_JUDGMENT)) + { + giveItems(player, SEAL_OF_ASPIRATION, 1); + addExpAndSp(player, 0, 250000); + qs.exitQuest(false, true); + htmltext = event; + } + break; + } + case "30760-22.html": + { + qs.setMemoState(10000); + qs.setCond(12); + htmltext = event; + break; + } + case "30760-23.html": + { + if (hasQuestItems(player, SCEPTER_OF_JUDGMENT)) + { + giveItems(player, SEAL_OF_ASPIRATION, 1); + addExpAndSp(player, 0, 250000); + qs.exitQuest(false, true); + htmltext = event; + } + break; + } + case "30512-03.html": + { + if (hasQuestItems(player, BROOCH_OF_THE_MAGPIE)) + { + takeItems(player, BROOCH_OF_THE_MAGPIE, -1); + giveItems(player, BLACK_ANVIL_COIN, 1); + } + htmltext = event; + break; + } + case "30645-03.html": + { + takeItems(player, GUSTAVS_1ST_LETTER, -1); + qs.setMemoState(2000); + qs.setCond(2, true); + htmltext = event; + break; + } + case "30761-02.html": + { + if (qs.isMemoState(2000) || qs.isMemoState(2011) || qs.isMemoState(2010) || qs.isMemoState(2001)) + { + giveItems(player, BLITZ_WYRM_EGG, 3); + qs.setMemoState(qs.getMemoState() + 100); + addAttackPlayerDesire(addSpawn(BLITZ_WYRM, npc, true, 0, false), player); + addAttackPlayerDesire(addSpawn(BLITZ_WYRM, npc, true, 0, false), player); + startQuestTimer("DESPAWN", 10000, npc, player); + htmltext = event; + } + else if (qs.isMemoState(2100) || qs.isMemoState(2111) || qs.isMemoState(2110) || qs.isMemoState(2101)) + { + addAttackPlayerDesire(addSpawn(BLITZ_WYRM, npc, true, 0, false), player); + addAttackPlayerDesire(addSpawn(BLITZ_WYRM, npc, true, 0, false), player); + startQuestTimer("DESPAWN", 10000, npc, player); + htmltext = "30761-03.html"; + } + break; + } + case "30762-02.html": + { + if (qs.isMemoState(2000) || qs.isMemoState(2101) || qs.isMemoState(2001) || qs.isMemoState(2100)) + { + giveItems(player, BLITZ_WYRM_EGG, 3); + giveItems(player, MIST_DRAKES_EGG, 4); + qs.setMemoState(qs.getMemoState() + 10); + addAttackPlayerDesire(addSpawn(BLITZ_WYRM, npc, true, 0, false), player); + addAttackPlayerDesire(addSpawn(BLITZ_WYRM, npc, true, 0, false), player); + startQuestTimer("DESPAWN", 10000, npc, player); + htmltext = event; + } + else if (qs.isMemoState(2100) || qs.isMemoState(2111) || qs.isMemoState(2011) || qs.isMemoState(2110)) + { + addAttackPlayerDesire(addSpawn(BLITZ_WYRM, npc, true, 0, false), player); + addAttackPlayerDesire(addSpawn(BLITZ_WYRM, npc, true, 0, false), player); + startQuestTimer("DESPAWN", 10000, npc, player); + htmltext = "30762-03.html"; + } + break; + } + case "30763-02.html": + { + if (qs.isMemoState(2000) || qs.isMemoState(2110) || qs.isMemoState(2010) || qs.isMemoState(2100)) + { + giveItems(player, BROOCH_OF_THE_MAGPIE, 1); + giveItems(player, MIST_DRAKES_EGG, 6); + qs.setMemoState(qs.getMemoState() + 1); + npc.deleteMe(); + htmltext = event; + } + break; + } + case "30764-03.html": + { + takeItems(player, GUSTAVS_2ND_LETTER, -1); + qs.setMemoState(5000); + qs.setCond(5, true); + htmltext = event; + break; + } + case "30764-06.html": + { + takeItems(player, GUSTAVS_2ND_LETTER, -1); + takeItems(player, BLACK_ANVIL_COIN, -1); + giveItems(player, RECIPE_SPITEFUL_SOUL_ENERGY, 1); + qs.setMemoState(5000); + qs.setCond(5, true); + htmltext = event; + break; + } + case "30765-04.html": + { + takeItems(player, IMPERIAL_KEY, -1); + giveItems(player, SCEPTER_OF_JUDGMENT, 1); + qs.setMemoState(8700); + htmltext = event; + break; + } + case "30766-04.html": + { + qs.setMemoState(8100); + qs.setCond(9, true); + npc.broadcastPacket(new NpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.BLOOD_AND_HONOR)); + startQuestTimer("SPAWN_WITCH", 5000, npc, player); + htmltext = event; + break; + } + case "30766-08.html": + { + if (hasQuestItems(player, SCEPTER_OF_JUDGMENT)) + { + giveItems(player, SEAL_OF_ASPIRATION, 1); + addExpAndSp(player, 0, 250000); + qs.exitQuest(false, true); + htmltext = event; + } + break; + } + case "30868-04.html": + { + takeItems(player, GUSTAVS_3RD_LETTER, -1); + qs.setMemoState(8000); + qs.setCond(8, true); + htmltext = event; + break; + } + case "30868-10.html": + { + qs.setMemoState(9000); + qs.setCond(11, true); + htmltext = event; + break; + } + case "30645-06.html": + case "30760-05.html": + case "30760-06.html": + case "30760-07.html": + case "30760-21.html": + case "30764-05.html": + case "30765-02.html": + case "30765-05a.html": + case "30766-03.html": + case "30868-03.html": + case "30868-06a.html": + { + htmltext = event; + break; + } + case "SPAWN_WITCH": + { + addSpawn(WITCH_ATHREA, 160688, 21296, -3714, 0, false, 5000); + addSpawn(WITCH_KALIS, 160690, 21176, -3712, 0, false, 5000); + break; + } + } + return htmltext; + } + + @Override + public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs == null) || !qs.isStarted() || !Util.checkIfInRange(1500, npc, killer, true)) + { + return super.onKill(npc, killer, isSummon); + } + + final L2Clan clan = killer.getClan(); + if (clan == null) + { + return super.onKill(npc, killer, isSummon); + } + + final L2PcInstance leader = clan.getLeader().getPlayerInstance(); + if ((leader == null) || !Util.checkIfInRange(1500, npc, leader, true)) + { + return super.onKill(npc, killer, isSummon); + } + + final QuestState leaderQS = getQuestState(leader, false); + if (leaderQS == null) + { + return super.onKill(npc, killer, isSummon); + } + + switch (npc.getId()) + { + case DRAKE: + case DRAKE2: + { + if ((leaderQS.getMemoState() >= 2000) || (leaderQS.getMemoState() < 3000)) + { + giveItemRandomly(leader, MIST_DRAKES_EGG, 1, 10, 0.1, true); + + giveItemRandomly(leader, DRAKES_EGG, 1, 10, 0.5, true); + } + break; + } + case THUNDER_WYRM: + case THUNDER_WYRM2: + { + if ((leaderQS.getMemoState() >= 2000) || (leaderQS.getMemoState() < 3000)) + { + giveItemRandomly(leader, THUNDER_WYRM_EGG, 1, 10, 0.5, true); + } + break; + } + case GRAVE_GUARD: + { + if ((leaderQS.getMemoState() < 8511) || (leaderQS.getMemoState() >= 8500)) + { + leaderQS.setMemoState(leaderQS.getMemoState() + 1); + + if ((leaderQS.getMemoState() >= 8505) && (getRandom(100) < 50)) + { + leaderQS.setMemoState(8500); + addSpawn(GRAVE_KEYMASTER, npc, true, 0, false); + } + else if (leaderQS.getMemoState() >= 8510) + { + leaderQS.setMemoState(8500); + addSpawn(GRAVE_KEYMASTER, npc, true, 0, false); + } + } + break; + } + case SPITEFUL_SOUL_LEADER: + { + if (leaderQS.getMemoState() == 5000) + { + final int rand = getRandom(100); + if (rand < 10) + { + giveItemRandomly(leader, SPITEFUL_SOUL_ENERGY, 1, 10, 1, false); + } + else if (rand < 60) + { + giveItems(leader, SPITEFUL_SOUL_VENGEANCE, 1); + } + } + break; + } + case BLITZ_WYRM: + { + if ((leaderQS.getMemoState() >= 2000) || (leaderQS.getMemoState() < 3000)) + { + giveItemRandomly(leader, BLITZ_WYRM_EGG, 1, 10, 1, true); + } + break; + } + case GRAVE_KEYMASTER: + { + if (leaderQS.getMemoState() >= 8500) + { + giveItemRandomly(leader, IMPERIAL_KEY, 1, 6, 1, true); + } + break; + } + case IMPERIAL_GRAVEKEEPER: + { + if ((leaderQS.getMemoState() < 8511) || (leaderQS.getMemoState() >= 8500)) + { + addSpawn(IMPERIAL_COFFER, npc, true, 0, false); + } + break; + } + } + return super.onKill(npc, killer, isSummon); + } + + @Override + public String onTalk(L2Npc npc, L2PcInstance player) + { + final QuestState qs = getQuestState(player, true); + final QuestState lqs = getLeaderQuestState(player, getName()); + String htmltext = getNoQuestMsg(player); + if (qs.isCreated() || qs.isCompleted()) + { + if (npc.getId() == SIR_GUSTAV_ATHEBALDT) + { + if (lqs != null) + { + if (player.isClanLeader()) + { + L2Clan clan = player.getClan(); + if (clan != null) + { + if (clan.getLevel() < 4) + { + htmltext = "30760-01.html"; + } + else if (clan.getLevel() >= 5) + { + htmltext = "30760-02.html"; + } + else if ((clan.getLevel() == 4) && hasQuestItems(player, SEAL_OF_ASPIRATION)) + { + htmltext = "30760-03.html"; + } + else if ((clan.getLevel() == 4) && !hasQuestItems(player, SEAL_OF_ASPIRATION)) + { + htmltext = "30760-04.html"; + } + } + } + else + { + htmltext = "30760-04t.html"; + } + } + } + } + else if (qs.isStarted()) + { + switch (npc.getId()) + { + case SIR_GUSTAV_ATHEBALDT: + { + if (lqs != null) + { + if (qs.getMemoState() == 1000) + { + htmltext = "30760-09.html"; + } + else if (qs.getMemoState() == 2000) + { + htmltext = "30760-10.html"; + } + else if (qs.getMemoState() == 3000) + { + if (!player.isClanLeader()) + { + htmltext = "30760-11t.html"; + } + else + { + htmltext = "30760-11.html"; + } + } + else if (qs.getMemoState() == 4000) + { + htmltext = "30760-13.html"; + } + else if (qs.getMemoState() == 5000) + { + htmltext = "30760-14.html"; + } + else if (qs.getMemoState() == 6000) + { + if (!player.isClanLeader()) + { + htmltext = "30760-15t.html"; + } + else + { + htmltext = "30760-15.html"; + } + } + else if (qs.getMemoState() == 7000) + { + htmltext = "30760-17.html"; + } + else if ((qs.getMemoState() >= 8000) && (qs.getMemoState() < 8700)) + { + htmltext = "30760-18.html"; + } + else if ((qs.getMemoState() >= 8700) && (qs.getMemoState() < 10000) && player.isClanLeader()) + { + htmltext = "30760-19.html"; + } + else if ((qs.getMemoState() == 9000) && !player.isClanLeader()) + { + htmltext = "30760-19t.html"; + } + else if (qs.getMemoState() == 10000) + { + if (!player.isClanLeader()) + { + htmltext = "30760-24t.html"; + } + else + { + htmltext = "30760-24.html"; + } + } + } + break; + } + case HEAD_BLACKSMITH_KUSTO: + { + if ((lqs != null) && !player.isClanLeader()) + { + htmltext = "30512-01a.html"; + } + else if (!hasAtLeastOneQuestItem(player, BROOCH_OF_THE_MAGPIE, BLACK_ANVIL_COIN)) + { + htmltext = "30512-01.html"; + } + else if (hasQuestItems(player, BROOCH_OF_THE_MAGPIE)) + { + htmltext = "30512-02.html"; + } + else if ((lqs != null) && hasQuestItems(player, BLACK_ANVIL_COIN) && !hasQuestItems(player, BROOCH_OF_THE_MAGPIE)) + { + htmltext = "30512-04.html"; + } + break; + } + case MARTIEN: + { + if (lqs != null) + { + if ((qs.getMemoState() == 1000)) + { + if (!player.isClanLeader()) + { + htmltext = "30645-01.html"; + } + else + { + htmltext = "30645-02.html"; + } + } + else if ((qs.getMemoState() < 3000) && (qs.getMemoState() >= 2000)) + { + if ((getQuestItemsCount(player, MIST_DRAKES_EGG) < 10) || (getQuestItemsCount(player, BLITZ_WYRM_EGG) < 10) || (getQuestItemsCount(player, THUNDER_WYRM_EGG) < 10) || (getQuestItemsCount(player, DRAKES_EGG) < 10)) + { + htmltext = "30645-04.html"; + } + else + { + takeItems(player, MIST_DRAKES_EGG, -1); + takeItems(player, BLITZ_WYRM_EGG, -1); + takeItems(player, DRAKES_EGG, -1); + takeItems(player, THUNDER_WYRM_EGG, -1); + qs.setMemoState(3000); + qs.setCond(3, true); + htmltext = "30645-05.html"; + } + } + else if ((qs.getMemoState() == 3000)) + { + htmltext = "30645-07.html"; + } + else if ((qs.getMemoState() > 3000)) + { + htmltext = "30645-08.html"; + } + } + break; + } + case WITCH_ATHREA: + { + if (lqs != null) + { + htmltext = "30758-01.html"; + } + break; + } + case WITCH_KALIS: + { + if (lqs != null) + { + htmltext = "30759-01.html"; + } + break; + } + case CORPSE_OF_FRITZ: + { + if ((qs.getMemoState() < 3000) && (qs.getMemoState() >= 2000)) + { + htmltext = "30761-01.html"; + } + break; + } + case CORPSE_OF_LUTZ: + { + if ((qs.getMemoState() < 3000) && (qs.getMemoState() >= 2000)) + { + htmltext = "30762-01.html"; + } + break; + } + case CORPSE_OF_KURTZ: + { + if (((qs.getMemoState() < 3000) && (qs.getMemoState() == 2000)) || (qs.getMemoState() == 2110) || (qs.getMemoState() == 2010) || (qs.getMemoState() == 2100)) + { + htmltext = "30763-01.html"; + } + else if ((qs.getMemoState() == 2001) || (qs.getMemoState() == 2111) || (qs.getMemoState() == 2011) || (qs.getMemoState() == 2101)) + { + htmltext = "30763-03.html"; + } + break; + } + case BALTHAZAR: + { + if (lqs != null) + { + if ((qs.getMemoState() == 4000)) + { + if (!player.isClanLeader()) + { + htmltext = "30764-01.html"; + } + else if (!hasQuestItems(player, BLACK_ANVIL_COIN) && player.isClanLeader()) + { + htmltext = "30764-02.html"; + } + else if (hasQuestItems(player, BLACK_ANVIL_COIN)) + { + htmltext = "30764-04.html"; + } + } + else if ((qs.getMemoState() == 5000)) + { + if (getQuestItemsCount(player, SPITEFUL_SOUL_ENERGY) < 10) + { + htmltext = "30764-07a.html"; + } + else + { + takeItems(player, SPITEFUL_SOUL_ENERGY, -1); + qs.setMemoState(6000); + qs.setCond(6, true); + htmltext = "30764-08a.html"; + } + } + else if ((qs.getMemoState() >= 6000)) + { + htmltext = "30764-09.html"; + } + } + break; + } + case IMPERIAL_COFFER: + { + if (lqs != null) + { + if ((qs.getMemoState() >= 8500) && (qs.getMemoState() < 8700)) + { + if (getQuestItemsCount(player, IMPERIAL_KEY) >= 6) + { + if (!player.isClanLeader()) + { + htmltext = "30765-01.html"; + } + else + { + htmltext = "30765-03.html"; + } + } + } + else if (qs.getMemoState() >= 8700) + { + htmltext = "30765-05.html"; + } + } + break; + } + case WITCH_CLEO: + { + if (lqs != null) + { + if (!player.isClanLeader()) + { + htmltext = "30766-01.html"; + } + else if (qs.getMemoState() == 8000) + { + htmltext = "30766-02.html"; + } + else if (qs.getMemoState() == 8100) + { + htmltext = "30766-05.html"; + } + else if ((qs.getMemoState() > 8100) && (qs.getMemoState() < 10000)) + { + htmltext = "30766-06.html"; + } + else if ((qs.getMemoState() == 10000) && player.isClanLeader()) + { + htmltext = "30766-07.html"; + } + } + break; + } + case SIR_ERIC_RODEMAI: + { + if (lqs != null) + { + if (qs.getMemoState() == 7000) + { + if (!player.isClanLeader()) + { + htmltext = "30868-01.html"; + } + else + { + htmltext = "30868-02.html"; + } + } + else if (qs.getMemoState() == 8000) + { + htmltext = "30868-05.html"; + } + else if (qs.getMemoState() == 8100) + { + if (player.isClanLeader()) + { + qs.setMemoState(8500); + qs.setCond(10, true); + htmltext = "30868-06.html"; + } + else + { + htmltext = "30868-07.html"; + } + } + else if ((qs.getMemoState() < 8511) && (qs.getMemoState() >= 8500)) + { + htmltext = "30868-08.html"; + } + else if (qs.getMemoState() == 8700) + { + htmltext = "30868-09.html"; + } + else if (qs.getMemoState() >= 9000) + { + htmltext = "30868-11.html"; + } + break; + } + } + } + } + return htmltext; + } + + @Override + public String onSpawn(L2Npc npc) + { + switch (npc.getId()) + { + case WITCH_ATHREA: + { + startQuestTimer("DESPAWN_WITCH_ATHREA", 5000, npc, null); + npc.broadcastPacket(new NpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.WAR_AND_DEATH)); + break; + } + case WITCH_KALIS: + { + startQuestTimer("DESPAWN_WITCH_KALIS", 5000, npc, null); + npc.broadcastPacket(new NpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.AMBITION_AND_POWER)); + break; + } + case IMPERIAL_COFFER: + { + startQuestTimer("DESPAWN_IMPERIAL_COFFER", 180000, npc, null); + npc.broadcastPacket(new NpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.CURSE_OF_THE_GODS_ON_THE_ONE_THAT_DEFILES_THE_PROPERTY_OF_THE_EMPIRE)); + break; + } + case BLITZ_WYRM: + { + startQuestTimer("DESPAWN_BLITZ_WYRM", 180000, npc, null); + break; + } + } + return super.onSpawn(npc); + } + + private static QuestState getLeaderQuestState(L2PcInstance player, String quest) + { + if (player.getClan() != null) + { + final L2PcInstance leader = player.getClan().getLeader().getPlayerInstance(); + if (leader != null) + { + return leader.getQuestState(quest); + } + } + return null; + } +} diff --git a/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java b/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java index cb83089f44..43453ca9a8 100644 --- a/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -125,6 +125,7 @@ import quests.Q00458_PerfectForm.Q00458_PerfectForm; import quests.Q00463_IMustBeaGenius.Q00463_IMustBeaGenius; import quests.Q00464_Oath.Q00464_Oath; import quests.Q00501_ProofOfClanAlliance.Q00501_ProofOfClanAlliance; +import quests.Q00503_PursuitOfClanAmbition.Q00503_PursuitOfClanAmbition; import quests.Q00504_CompetitionForTheBanditStronghold.Q00504_CompetitionForTheBanditStronghold; import quests.Q00508_AClansReputation.Q00508_AClansReputation; import quests.Q00509_AClansFame.Q00509_AClansFame; @@ -358,6 +359,7 @@ public class QuestMasterHandler Q00463_IMustBeaGenius.class, Q00464_Oath.class, Q00501_ProofOfClanAlliance.class, + Q00503_PursuitOfClanAmbition.class, Q00504_CompetitionForTheBanditStronghold.class, Q00508_AClansReputation.class, Q00509_AClansFame.class, diff --git a/trunk/java/com/l2jserver/Config.java b/trunk/java/com/l2jserver/Config.java index 5e162b13a6..46a9bfc716 100644 --- a/trunk/java/com/l2jserver/Config.java +++ b/trunk/java/com/l2jserver/Config.java @@ -124,7 +124,6 @@ public final class Config public static double RESPAWN_RESTORE_CP; public static double RESPAWN_RESTORE_HP; public static double RESPAWN_RESTORE_MP; - public static boolean ALT_GAME_TIREDNESS; public static boolean ENABLE_MODIFY_SKILL_DURATION; public static Map SKILL_DURATION_LIST; public static boolean ENABLE_MODIFY_SKILL_REUSE; @@ -1407,7 +1406,6 @@ public final class Config HP_REGEN_MULTIPLIER = character.getDouble("HpRegenMultiplier", 100) / 100; MP_REGEN_MULTIPLIER = character.getDouble("MpRegenMultiplier", 100) / 100; CP_REGEN_MULTIPLIER = character.getDouble("CpRegenMultiplier", 100) / 100; - ALT_GAME_TIREDNESS = character.getBoolean("AltGameTiredness", false); ENABLE_MODIFY_SKILL_DURATION = character.getBoolean("EnableModifySkillDuration", false); // Create Map only if enabled @@ -3427,9 +3425,6 @@ public final class Config case "announcemammonspawn": ANNOUNCE_MAMMON_SPAWN = Boolean.parseBoolean(pValue); break; - case "altgametiredness": - ALT_GAME_TIREDNESS = Boolean.parseBoolean(pValue); - break; case "enablefallingdamage": ENABLE_FALLING_DAMAGE = Boolean.parseBoolean(pValue); break; diff --git a/trunk/java/com/l2jserver/gameserver/model/L2World.java b/trunk/java/com/l2jserver/gameserver/model/L2World.java index b4531cc118..0658432aef 100644 --- a/trunk/java/com/l2jserver/gameserver/model/L2World.java +++ b/trunk/java/com/l2jserver/gameserver/model/L2World.java @@ -35,7 +35,6 @@ import com.l2jserver.gameserver.data.xml.impl.AdminData; import com.l2jserver.gameserver.model.actor.L2Playable; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.actor.instance.L2PetInstance; -import com.l2jserver.util.StringUtil; public final class L2World { @@ -79,8 +78,6 @@ public final class L2World private final static Map _allEvilPlayers = new ConcurrentHashMap<>(); /** Map containing all visible objects. */ private final Map _allObjects = new ConcurrentHashMap<>(); - /** Map used for debug. */ - private final Map _allObjectsDebug = new ConcurrentHashMap<>(); /** Map with the pets instances and their owner ID. */ private final Map _petsInstance = new ConcurrentHashMap<>(); @@ -106,15 +103,11 @@ public final class L2World if (_allObjects.containsKey(object.getObjectId())) { _log.log(Level.WARNING, getClass().getSimpleName() + ": Current object: " + object + " already exist in OID map!"); - _log.log(Level.WARNING, StringUtil.getTraceString(Thread.currentThread().getStackTrace())); - _log.log(Level.WARNING, getClass().getSimpleName() + ": Previous object: " + _allObjects.get(object.getObjectId()) + " already exist in OID map!"); - _log.log(Level.WARNING, _allObjectsDebug.get(object.getObjectId())); _log.log(Level.WARNING, "---------------------- End ---------------------"); return; } _allObjects.put(object.getObjectId(), object); - _allObjectsDebug.put(object.getObjectId(), StringUtil.getTraceString(Thread.currentThread().getStackTrace())); } /** @@ -130,7 +123,6 @@ public final class L2World public void removeObject(L2Object object) { _allObjects.remove(object.getObjectId()); - _allObjectsDebug.remove(object.getObjectId()); } /** @@ -281,24 +273,6 @@ public final class L2World */ public void addVisibleObject(L2Object object, L2WorldRegion newRegion) { - // TODO: this code should be obsoleted by protection in putObject func... - if (object.isPlayer()) - { - L2PcInstance player = object.getActingPlayer(); - if (!player.isTeleporting()) - { - final L2PcInstance old = getPlayer(player.getObjectId()); - if (old != null) - { - _log.warning("Duplicate character!? Closing both characters (" + player.getName() + ")"); - player.logout(); - old.logout(); - return; - } - addPlayerToWorld(player); - } - } - if (!newRegion.isActive()) { return; @@ -419,16 +393,6 @@ public final class L2World // Remove all L2Object from L2ObjectHashSet(L2Object) containing all L2Object detected by the L2Character // Remove all L2PcInstance from L2ObjectHashSet(L2PcInstance) containing all player ingame detected by the L2Character object.getKnownList().removeAllKnownObjects(); - - // If selected L2Object is a L2PcIntance, remove it from L2ObjectHashSet(L2PcInstance) _allPlayers of L2World - if (object.isPlayer()) - { - final L2PcInstance player = object.getActingPlayer(); - if (!player.isTeleporting()) - { - removeFromAllPlayers(player); - } - } } } diff --git a/trunk/java/com/l2jserver/gameserver/model/actor/L2Character.java b/trunk/java/com/l2jserver/gameserver/model/actor/L2Character.java index 1551c24bcd..2ef5cd3d66 100644 --- a/trunk/java/com/l2jserver/gameserver/model/actor/L2Character.java +++ b/trunk/java/com/l2jserver/gameserver/model/actor/L2Character.java @@ -267,7 +267,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe /** Represents the time where the attack should end, in nanoseconds. */ private volatile long _attackEndTime; private int _disableBowAttackEndTime; - private int _disableCrossBowAttackEndTime; private int _castInterruptTime; @@ -812,6 +811,78 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe teleToLocation(MapRegionManager.getInstance().getTeleToLocation(this, teleportWhere), true); } + private boolean canUseRangeWeapon() + { + if (isTransformed()) + { + return true; + } + L2Weapon weaponItem = getActiveWeaponItem(); + + if ((weaponItem == null) || !weaponItem.isRange()) + { + return false; + } + // Check for arrows and MP + if (isPlayer()) + { + // Equip arrows needed in left hand and send a Server->Client packet ItemList to the L2PcInstance then return True + if (!checkAndEquipArrows()) + { + // Cancel the action because the L2PcInstance have no arrow + getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); + sendPacket(ActionFailed.STATIC_PACKET); + sendPacket(weaponItem.isBow() ? SystemMessageId.YOU_HAVE_RUN_OUT_OF_ARROWS : SystemMessageId.NOT_ENOUGH_BOLTS); + return false; + } + + // Verify if the bow can be use + if (_disableBowAttackEndTime <= GameTimeController.getInstance().getGameTicks()) + { + // Verify if L2PcInstance owns enough MP + int mpConsume = weaponItem.getMpConsume(); + if ((weaponItem.getReducedMpConsume() > 0) && (Rnd.get(100) < weaponItem.getReducedMpConsumeChance())) + { + mpConsume = weaponItem.getReducedMpConsume(); + } + mpConsume = (int) calcStat(Stats.BOW_MP_CONSUME_RATE, mpConsume, null, null); + + if (getCurrentMp() < mpConsume) + { + // If L2PcInstance doesn't have enough MP, stop the attack + ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); + sendPacket(SystemMessageId.NOT_ENOUGH_MP); + sendPacket(ActionFailed.STATIC_PACKET); + return false; + } + + // If L2PcInstance have enough MP, the bow consumes it + if (mpConsume > 0) + { + getStatus().reduceMp(mpConsume); + } + + // Set the period of bow no re-use + _disableBowAttackEndTime = (5 * GameTimeController.TICKS_PER_SECOND) + GameTimeController.getInstance().getGameTicks(); + } + else + { + // Cancel the action because the bow can't be re-use at this moment + ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); + sendPacket(ActionFailed.STATIC_PACKET); + return false; + } + } + else if (isNpc()) + { + if (_disableBowAttackEndTime > GameTimeController.getInstance().getGameTicks()) + { + return false; + } + } + return true; + } + /** * Launch a physical attack against a target (Simple, Bow, Pole or Dual).
* Actions: @@ -941,186 +1012,42 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe return; } - // BOW and CROSSBOW checks - // Get the active weapon item corresponding to the active weapon instance (always equipped in the right hand) - L2Weapon weaponItem = getActiveWeaponItem(); - if ((weaponItem != null) && !isTransformed()) - { - if (weaponItem.getItemType() == WeaponType.BOW) - { - // Check for arrows and MP - if (isPlayer()) - { - // Checking if target has moved to peace zone - only for player-bow attacks at the moment - // Other melee is checked in movement code and for offensive spells a check is done every time - if (target.isInsidePeaceZone(getActingPlayer())) - { - getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE); - sendPacket(ActionFailed.STATIC_PACKET); - return; - } - - // Equip arrows needed in left hand and send a Server->Client packet ItemList to the L2PcInstance then return True - if (!checkAndEquipArrows()) - { - // Cancel the action because the L2PcInstance have no arrow - getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); - sendPacket(ActionFailed.STATIC_PACKET); - sendPacket(SystemMessageId.YOU_HAVE_RUN_OUT_OF_ARROWS); - return; - } - - // Verify if the bow can be use - if (_disableBowAttackEndTime <= GameTimeController.getInstance().getGameTicks()) - { - // Verify if L2PcInstance owns enough MP - int mpConsume = weaponItem.getMpConsume(); - if ((weaponItem.getReducedMpConsume() > 0) && (Rnd.get(100) < weaponItem.getReducedMpConsumeChance())) - { - mpConsume = weaponItem.getReducedMpConsume(); - } - mpConsume = (int) calcStat(Stats.BOW_MP_CONSUME_RATE, mpConsume, null, null); - - if (getCurrentMp() < mpConsume) - { - // If L2PcInstance doesn't have enough MP, stop the attack - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); - sendPacket(SystemMessageId.NOT_ENOUGH_MP); - sendPacket(ActionFailed.STATIC_PACKET); - return; - } - - // If L2PcInstance have enough MP, the bow consumes it - if (mpConsume > 0) - { - getStatus().reduceMp(mpConsume); - } - - // Set the period of bow no re-use - _disableBowAttackEndTime = (5 * GameTimeController.TICKS_PER_SECOND) + GameTimeController.getInstance().getGameTicks(); - } - else - { - // Cancel the action because the bow can't be re-use at this moment - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); - sendPacket(ActionFailed.STATIC_PACKET); - return; - } - } - } - if (weaponItem.getItemType() == WeaponType.CROSSBOW) - { - // Check for bolts - if (isPlayer()) - { - // Checking if target has moved to peace zone - only for player-crossbow attacks at the moment - // Other melee is checked in movement code and for offensive spells a check is done every time - if (target.isInsidePeaceZone(getActingPlayer())) - { - getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE); - sendPacket(ActionFailed.STATIC_PACKET); - return; - } - - // Equip bolts needed in left hand and send a Server->Client packet ItemList to the L2PcINstance then return True - if (!checkAndEquipBolts()) - { - // Cancel the action because the L2PcInstance have no arrow - getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); - sendPacket(ActionFailed.STATIC_PACKET); - sendPacket(SystemMessageId.NOT_ENOUGH_BOLTS); - return; - } - - // Verify if the crossbow can be use - if (_disableCrossBowAttackEndTime <= GameTimeController.getInstance().getGameTicks()) - { - // Verify if L2PcInstance owns enough MP - int mpConsume = weaponItem.getMpConsume(); - if ((weaponItem.getReducedMpConsume() > 0) && (Rnd.get(100) < weaponItem.getReducedMpConsumeChance())) - { - mpConsume = weaponItem.getReducedMpConsume(); - } - mpConsume = (int) calcStat(Stats.BOW_MP_CONSUME_RATE, mpConsume, null, null); - - if (getCurrentMp() < mpConsume) - { - // If L2PcInstance doesn't have enough MP, stop the attack - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); - sendPacket(SystemMessageId.NOT_ENOUGH_MP); - sendPacket(ActionFailed.STATIC_PACKET); - return; - } - - // If L2PcInstance have enough MP, the bow consumes it - if (mpConsume > 0) - { - getStatus().reduceMp(mpConsume); - } - - // Set the period of crossbow no re-use - _disableCrossBowAttackEndTime = (5 * GameTimeController.TICKS_PER_SECOND) + GameTimeController.getInstance().getGameTicks(); - } - else - { - // Cancel the action because the crossbow can't be re-use at this moment - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000); - sendPacket(ActionFailed.STATIC_PACKET); - return; - } - } - else if (isNpc()) - { - if (_disableCrossBowAttackEndTime > GameTimeController.getInstance().getGameTicks()) - { - return; - } - } - } - } - - // Add the L2PcInstance to _knownObjects and _knownPlayer of the target target.getKnownList().addKnownObject(this); - // Reduce the current CP if TIREDNESS configuration is activated - if (Config.ALT_GAME_TIREDNESS) - { - setCurrentCp(getCurrentCp() - 10); - } - - // Verify if soulshots are charged. - final boolean wasSSCharged = isChargedShot(ShotType.SOULSHOTS); - // Get the Attack Speed of the L2Character (delay (in milliseconds) before next attack) - final int timeAtk = calculateTimeBetweenAttacks(target, weaponItem); - // the hit is calculated to happen halfway to the animation - might need further tuning e.g. in bow case + L2Weapon weaponItem = getActiveWeaponItem(); + final int timeAtk = calculateTimeBetweenAttacks(); final int timeToHit = timeAtk / 2; - _attackEndTime = System.nanoTime() + TimeUnit.NANOSECONDS.convert(timeAtk, TimeUnit.MILLISECONDS); - final int ssGrade = (weaponItem != null) ? weaponItem.getItemGrade().ordinal() : 0; - // Create a Server->Client packet Attack - Attack attack = new Attack(this, target, wasSSCharged, ssGrade); - // Make sure that char is facing selected target - // also works: setHeading(Util.convertDegreeToClientHeading(Util.calculateAngleFrom(this, target))); + Attack attack = new Attack(this, target, isChargedShot(ShotType.SOULSHOTS), (weaponItem != null) ? weaponItem.getItemGrade().ordinal() : 0); setHeading(Util.calculateHeadingFrom(this, target)); - - // Get the Attack Reuse Delay of the L2Weapon - int reuse = calculateReuseTime(target, weaponItem); + int reuse = calculateReuseTime(weaponItem); boolean hitted = false; switch (getAttackType()) { case BOW: { + if (!canUseRangeWeapon()) + { + return; + } + _attackEndTime = System.nanoTime() + TimeUnit.NANOSECONDS.convert(timeToHit + (reuse / 2), TimeUnit.MILLISECONDS); hitted = doAttackHitByBow(attack, target, timeAtk, reuse); break; } case CROSSBOW: { + if (!canUseRangeWeapon()) + { + return; + } + _attackEndTime = System.nanoTime() + TimeUnit.NANOSECONDS.convert(timeToHit + (reuse / 2), TimeUnit.MILLISECONDS); hitted = doAttackHitByCrossBow(attack, target, timeAtk, reuse); break; } case POLE: { + _attackEndTime = System.nanoTime() + TimeUnit.NANOSECONDS.convert(timeAtk, TimeUnit.MILLISECONDS); hitted = doAttackHitByPole(attack, target, timeToHit); break; } @@ -1136,11 +1063,13 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe case DUALFIST: case DUALDAGGER: { + _attackEndTime = System.nanoTime() + TimeUnit.NANOSECONDS.convert(timeAtk, TimeUnit.MILLISECONDS); hitted = doAttackHitByDual(attack, target, timeToHit); break; } default: { + _attackEndTime = System.nanoTime() + TimeUnit.NANOSECONDS.convert(timeAtk, TimeUnit.MILLISECONDS); hitted = doAttackHitSimple(attack, target, timeToHit); break; } @@ -1193,9 +1122,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } // Notify AI with EVT_READY_TO_ACT - // Old method - use in case of bow reuse issues occur. - // ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), timeAtk + reuse); - ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), timeAtk); + ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), timeAtk + reuse); } finally { @@ -1334,7 +1261,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe ThreadPoolManager.getInstance().scheduleAi(new HitTask(this, target, damage1, crit1, miss1, attack.hasSoulshot(), shld1), sAtk); // Calculate and set the disable delay of the bow in function of the Attack Speed - _disableCrossBowAttackEndTime = ((sAtk + reuse) / GameTimeController.MILLIS_IN_TICK) + GameTimeController.getInstance().getGameTicks(); + _disableBowAttackEndTime = ((sAtk + reuse) / GameTimeController.MILLIS_IN_TICK) + GameTimeController.getInstance().getGameTicks(); // Add this hit to the Server-Client packet Attack attack.addHit(target, damage1, miss1, crit1, shld1); @@ -5311,61 +5238,36 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe } /** - * @param target - * @param weapon * @return the Attack Speed of the L2Character (delay (in milliseconds) before next attack). */ - public int calculateTimeBetweenAttacks(L2Character target, L2Weapon weapon) + public int calculateTimeBetweenAttacks() { - if ((weapon != null) && !isTransformed()) - { - switch (weapon.getItemType()) - { - case BOW: - return (int) ((1500 * 345) / getPAtkSpd()); - case CROSSBOW: - return (int) ((1200 * 345) / getPAtkSpd()); - case DAGGER: - // atkSpd /= 1.15; - break; - } - } - return Formulas.calcPAtkSpd(this, target, getPAtkSpd()); + return (int) (500000 / getPAtkSpd()); } - public int calculateReuseTime(L2Character target, L2Weapon weapon) + /** + * @param weapon + * @return the Reuse Time of Attack (used for bow delay) + */ + public int calculateReuseTime(final L2Weapon weapon) { if (isTransformed()) { switch (getAttackType()) { case BOW: + return (int) ((1500 * 333 * getStat().getWeaponReuseModifier(null)) / getStat().getPAtkSpd()); case CROSSBOW: - return (int) ((517500 * getStat().getWeaponReuseModifier(null)) / getStat().getPAtkSpd()); + return (int) ((1200 * 333 * getStat().getWeaponReuseModifier(null)) / getStat().getPAtkSpd()); } } - if ((weapon == null)) + + if ((weapon == null) || (weapon.getReuseDelay() == 0)) { return 0; } - int reuse = weapon.getReuseDelay(); - - // only bows should continue for now - if (reuse == 0) - { - return 0; - } - reuse *= getStat().getWeaponReuseModifier(null); - double atkSpd = getStat().getPAtkSpd(); - switch (weapon.getItemType()) - { - case BOW: - case CROSSBOW: - return (int) ((reuse * 345) / atkSpd); - default: - return (int) ((reuse * 312) / atkSpd); - } + return (int) ((weapon.getReuseDelay() * 333) / getPAtkSpd()); } /** diff --git a/trunk/java/com/l2jserver/gameserver/model/itemcontainer/ItemContainer.java b/trunk/java/com/l2jserver/gameserver/model/itemcontainer/ItemContainer.java index b1ce940ea4..55bc099bad 100644 --- a/trunk/java/com/l2jserver/gameserver/model/itemcontainer/ItemContainer.java +++ b/trunk/java/com/l2jserver/gameserver/model/itemcontainer/ItemContainer.java @@ -320,6 +320,7 @@ public abstract class ItemContainer item.setOwnerId(getOwnerId()); item.setItemLocation(getBaseLocation()); item.setLastChange(L2ItemInstance.ADDED); + item.setEnchantLevel(template.getDefaultEnchantLevel()); // Add item in inventory addItem(item); diff --git a/trunk/java/com/l2jserver/gameserver/model/itemcontainer/PcInventory.java b/trunk/java/com/l2jserver/gameserver/model/itemcontainer/PcInventory.java index 2fc684d88a..77d677437d 100644 --- a/trunk/java/com/l2jserver/gameserver/model/itemcontainer/PcInventory.java +++ b/trunk/java/com/l2jserver/gameserver/model/itemcontainer/PcInventory.java @@ -556,7 +556,7 @@ public class PcInventory extends Inventory actor.sendPacket(new ExAdenaInvenCount(actor)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), item.getItem()); + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor); } } @@ -611,7 +611,7 @@ public class PcInventory extends Inventory actor.sendPacket(new ExAdenaInvenCount(actor)); // Notify to scripts - EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), item.getItem()); + EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemAdd(actor, item), actor); } return item; diff --git a/trunk/java/com/l2jserver/gameserver/model/items/L2Weapon.java b/trunk/java/com/l2jserver/gameserver/model/items/L2Weapon.java index 0e569e4b42..9c7ab51243 100644 --- a/trunk/java/com/l2jserver/gameserver/model/items/L2Weapon.java +++ b/trunk/java/com/l2jserver/gameserver/model/items/L2Weapon.java @@ -454,4 +454,19 @@ public final class L2Weapon extends L2Item caster.sendPacket(sm); } } + + public boolean isRange() + { + return isBow() || isCrossBow(); + } + + public boolean isBow() + { + return _type == WeaponType.BOW; + } + + public boolean isCrossBow() + { + return _type == WeaponType.CROSSBOW; + } } diff --git a/trunk/java/com/l2jserver/gameserver/model/multisell/PreparedEntry.java b/trunk/java/com/l2jserver/gameserver/model/multisell/PreparedEntry.java index 7cb3615b63..ee962f6f9d 100644 --- a/trunk/java/com/l2jserver/gameserver/model/multisell/PreparedEntry.java +++ b/trunk/java/com/l2jserver/gameserver/model/multisell/PreparedEntry.java @@ -98,6 +98,11 @@ public class PreparedEntry extends Entry { newProduct.setItemInfo(info); } + else if (ing.isArmorOrWeapon() && (ing.getTemplate().getDefaultEnchantLevel() > 0)) + { + info = new ItemInfo(ing.getTemplate().getDefaultEnchantLevel()); + newProduct.setItemInfo(info); + } _products.add(newProduct); } } diff --git a/trunk/java/com/l2jserver/gameserver/network/clientpackets/CharacterSelect.java b/trunk/java/com/l2jserver/gameserver/network/clientpackets/CharacterSelect.java index baa3ea8dd8..6652bd46da 100644 --- a/trunk/java/com/l2jserver/gameserver/network/clientpackets/CharacterSelect.java +++ b/trunk/java/com/l2jserver/gameserver/network/clientpackets/CharacterSelect.java @@ -161,7 +161,7 @@ public class CharacterSelect extends L2GameClientPacket { return; // handled in L2GameClient } - + L2World.getInstance().addPlayerToWorld(cha); CharNameTable.getInstance().addName(cha); cha.setClient(client);