Sync with L2jServer HighFive Dec 21st 2015.
This commit is contained in:
@@ -298,9 +298,9 @@ INSERT IGNORE INTO `raidboss_spawnlist` (`boss_id`,`loc_x`,`loc_y`,`loc_z`,`head
|
||||
-- (25693,0,0,0,0,0,0,0,0), -- Aenkinel (81) (Spawned by Delusion Chamber)
|
||||
-- (25694,0,0,0,0,0,0,0,0), -- Aenkinel (82) (Spawned by Delusion Chamber)
|
||||
-- (25695,0,0,0,0,0,0,0,0), -- Aenkinel (84) (Spawned by Delusion Chamber)
|
||||
(25696,-180146,175202,-10287,13632,86400,21600,1206907,20499), -- Taklacan (85)
|
||||
(25697,-174800,186738,-15100,49504,86400,21600,9974437,20499), -- Torumba (85)
|
||||
(25698,-213004,175631,-11978,16380,86400,21600,997444,20499), -- Dopagen (85)
|
||||
(25696,-180146,175202,-10287,13632,86400,21600,1817998,40998), -- Taklacan (85)
|
||||
(25697,-174800,186738,-15100,49504,86400,21600,15024785,40998), -- Torumba (85)
|
||||
(25698,-213004,175631,-11978,16380,86400,21600,1502478,40998), -- Dopagen (85)
|
||||
-- (25699,0,0,0,0,0,0,0,0), -- Glakias (85) (Spawned by Freya Boss Instance Normal)
|
||||
-- (25700,0,0,0,0,0,0,0,0), -- Glakias (85) (Spawned by Freya Boss Instance Hard)
|
||||
(25701,112798,-76800,-10,-15544,86400,43200,2231403,48422), -- Anays (84)
|
||||
|
15
trunk/dist/game/data/html/teleporter/32864.htm
vendored
15
trunk/dist/game/data/html/teleporter/32864.htm
vendored
@@ -1,15 +0,0 @@
|
||||
<html><body>Separated Soul:<br>
|
||||
The Claw of Antharas barely touched me, but even so, my soul was ripped from my body!<br>
|
||||
I can not gather the souls scattered in the area, but I can sense them. If you desire, I can send you to the location where the separated souls are located.<br>
|
||||
I can also release the <font color="LEVEL">Sealed Blood Crystal</font> using the <font color="LEVEL">Will of Antharas</font> you possess. What say you?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValley">Entrance to Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleyCenter">The Center of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleyNorth">Deep inside Dragon Valley (North)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleySouth">Deep inside Dragon Valley (South)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLair">Entrance of Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLairMagicForceFieldBridge">Antharas' Lair - Magic Force Field Bridge</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLairDeep">Deep inside Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link teleporter/separatedsoul.htm">Hear about Blood Crystal of Antharas.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul Synthesis">Request item synthesis.</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
15
trunk/dist/game/data/html/teleporter/32868.htm
vendored
15
trunk/dist/game/data/html/teleporter/32868.htm
vendored
@@ -1,15 +0,0 @@
|
||||
<html><body>Separated Soul:<br>
|
||||
The Claw of Antharas barely touched me, but even so, my soul was ripped from my body!<br>
|
||||
I can not gather the souls scattered in the area, but I can sense them. If you desire, I can send you to the location where the separated souls are located.<br>
|
||||
I can also release the <font color="LEVEL">Sealed Blood Crystal</font> using the <font color="LEVEL">Will of Antharas</font> you possess. What say you?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul HuntersVillage">Hunter's Village</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValley">Entrance to Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleyCenter">The Center of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleyNorth">Deep inside Dragon Valley (North)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleySouth">Deep inside Dragon Valley (South)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLair">Entrance of Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLairMagicForceFieldBridge">Antharas' Lair - Magic Force Field Bridge</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link teleporter/separatedsoul.htm">Hear about Blood Crystal of Antharas.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul Synthesis">Request item synthesis.</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
15
trunk/dist/game/data/html/teleporter/32891.htm
vendored
15
trunk/dist/game/data/html/teleporter/32891.htm
vendored
@@ -1,15 +0,0 @@
|
||||
<html><body>Separated Soul:<br>
|
||||
The Claw of Antharas barely touched me, but even so, my soul was ripped from my body!<br>
|
||||
I can not gather the souls scattered in the area, but I can sense them. If you desire, I can send you to the location where the separated souls are located.<br>
|
||||
I can also release the <font color="LEVEL">Sealed Blood Crystal</font> using the <font color="LEVEL">Will of Antharas</font> you possess. What say you?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul HuntersVillage">Hunter's Village</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValley">Entrance to Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleyCenter">The Center of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleyNorth">Deep inside Dragon Valley (North)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleySouth">Deep inside Dragon Valley (South)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLairMagicForceFieldBridge">Antharas' Lair - Magic Force Field Bridge</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLairDeep">Deep inside Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link teleporter/separatedsoul.htm">Hear about Blood Crystal of Antharas.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul Synthesis">Request item synthesis.</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -1,4 +0,0 @@
|
||||
<html><body>Separated Soul:<br>
|
||||
The <font color="LEVEL">Will of Antharas</font> is a command stone that Antharas embedded into his high commanding minions. With this stone Antharas has the ability to control these creatures to do his bidding. It is a required ingredient for creating an Antharas Blood Crystal.<br>
|
||||
A long time ago when Antharas' blood was split on the ground the poison in the blood corrupted the land. However, over time land acted as a filter separating the poison from the blood. The result was a pure form of Antharas blood that crystallized over time into small <font color="LEVEL">Sealed Blood Crystals</font>. The power in Antharas' blood has a high concentration of regenaration and restoration power. Enough that it even has the power to bring back the dead. It is a required ingredient for creating an Antharas Blood Crystal.
|
||||
</body></html>
|
15
trunk/dist/game/data/scripts/ai/npc/Teleports/SeparatedSoul/32864.htm
vendored
Normal file
15
trunk/dist/game/data/scripts/ai/npc/Teleports/SeparatedSoul/32864.htm
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
<html><body>Separated Soul:<br>
|
||||
The Claw of Antharas barely touched me, but even so, my soul was ripped from my body!<br>
|
||||
I can not gather the souls scattered in the area, but I can sense them. If you desire, I can send you to the location where the separated souls are located.<br>
|
||||
I can also release the <font color="LEVEL">Sealed Blood Crystal</font> using the <font color="LEVEL">Will of Antharas</font> you possess. What say you?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 7">Entrance to Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 2">The Center of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 3">Deep inside Dragon Valley (North)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 4">Deep inside Dragon Valley (South)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 8">Entrance of Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 5">Antharas' Lair - Magic Force Field Bridge</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 6">Deep inside Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23242">Hear about Blood Crystal of Antharas.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23241">Request item synthesis.</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -2,14 +2,14 @@
|
||||
The Claw of Antharas barely touched me, but even so, my soul was ripped from my body!<br>
|
||||
I can not gather the souls scattered in the area, but I can sense them. If you desire, I can send you to the location where the separated souls are located.<br>
|
||||
I can also release the <font color="LEVEL">Sealed Blood Crystal</font> using the <font color="LEVEL">Will of Antharas</font> you possess. What say you?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul HuntersVillage">Hunter's Village</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValley">Entrance to Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleyNorth">Deep inside Dragon Valley (North)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleySouth">Deep inside Dragon Valley (South)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLair">Entrance of Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLairMagicForceFieldBridge">Antharas' Lair - Magic Force Field Bridge</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLairDeep">Deep inside Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link teleporter/separatedsoul.htm">Hear about Blood Crystal of Antharas.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul Synthesis">Request item synthesis.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 1">Hunter's Village</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 7">Entrance to Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 3">Deep inside Dragon Valley (North)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 4">Deep inside Dragon Valley (South)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 8">Entrance of Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 5">Antharas' Lair - Magic Force Field Bridge</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 6">Deep inside Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23242">Hear about Blood Crystal of Antharas.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23241">Request item synthesis.</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -2,14 +2,14 @@
|
||||
The Claw of Antharas barely touched me, but even so, my soul was ripped from my body!<br>
|
||||
I can not gather the souls scattered in the area, but I can sense them. If you desire, I can send you to the location where the separated souls are located.<br>
|
||||
I can also release the <font color="LEVEL">Sealed Blood Crystal</font> using the <font color="LEVEL">Will of Antharas</font> you possess. What say you?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul HuntersVillage">Hunter's Village</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValley">Entrance of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleyCenter">The Center of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleySouth">Deep inside Dragon Valley (South)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLair">Entrance of Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLairMagicForceFieldBridge">Antharas' Lair - Magic Force Field Bridge</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLairDeep">Deep inside Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link teleporter/separatedsoul.htm">Hear about Blood Crystal of Antharas.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul Synthesis">Request item synthesis.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 1">Hunter's Village</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 7">Entrance of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 2">The Center of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 4">Deep inside Dragon Valley (South)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 8">Entrance of Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 5">Antharas' Lair - Magic Force Field Bridge</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 6">Deep inside Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23242">Hear about Blood Crystal of Antharas.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23241">Request item synthesis.</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -2,14 +2,14 @@
|
||||
The Claw of Antharas barely touched me, but even so, my soul was ripped from my body!<br>
|
||||
I can not gather the souls scattered in the area, but I can sense them. If you desire, I can send you to the location where the separated souls are located.<br>
|
||||
I can also release the <font color="LEVEL">Sealed Blood Crystal</font> using the <font color="LEVEL">Will of Antharas</font> you possess. What say you?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul HuntersVillage">Hunter's Village</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValley">Entrance of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleyCenter">The Center of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleyNorth">Deep inside Dragon Valley (North)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLair">Entrance of Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLairMagicForceFieldBridge">Antharas' Lair - Magic Force Field Bridge</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLairDeep">Deep inside Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link teleporter/separatedsoul.htm">Hear about Blood Crystal of Antharas.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul Synthesis">Request item synthesis.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 1">Hunter's Village</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 7">Entrance of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 2">The Center of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 3">Deep inside Dragon Valley (North)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 8">Entrance of Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 5">Antharas' Lair - Magic Force Field Bridge</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 6">Deep inside Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23242">Hear about Blood Crystal of Antharas.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23241">Request item synthesis.</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
15
trunk/dist/game/data/scripts/ai/npc/Teleports/SeparatedSoul/32868.htm
vendored
Normal file
15
trunk/dist/game/data/scripts/ai/npc/Teleports/SeparatedSoul/32868.htm
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
<html><body>Separated Soul:<br>
|
||||
The Claw of Antharas barely touched me, but even so, my soul was ripped from my body!<br>
|
||||
I can not gather the souls scattered in the area, but I can sense them. If you desire, I can send you to the location where the separated souls are located.<br>
|
||||
I can also release the <font color="LEVEL">Sealed Blood Crystal</font> using the <font color="LEVEL">Will of Antharas</font> you possess. What say you?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 1">Hunter's Village</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 7">Entrance to Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 2">The Center of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 3">Deep inside Dragon Valley (North)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 4">Deep inside Dragon Valley (South)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 8">Entrance of Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 5">Antharas' Lair - Magic Force Field Bridge</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23242">Hear about Blood Crystal of Antharas.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23241">Request item synthesis.</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -2,14 +2,14 @@
|
||||
The Claw of Antharas barely touched me, but even so, my soul was ripped from my body!<br>
|
||||
I can not gather the souls scattered in the area, but I can sense them. If you desire, I can send you to the location where the separated souls are located.<br>
|
||||
I can also release the <font color="LEVEL">Sealed Blood Crystal</font> using the <font color="LEVEL">Will of Antharas</font> you possess. What say you?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul HuntersVillage">Hunter's Village</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValley">Entrance to Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleyCenter">The Center of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleyNorth">Deep inside Dragon Valley (North)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleySouth">Deep inside Dragon Valley (South)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLair">Entrance of Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLairDeep">Deep inside Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link teleporter/separatedsoul.htm">Hear about Blood Crystal of Antharas.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul Synthesis">Request item synthesis.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 1">Hunter's Village</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 7">Entrance to Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 2">The Center of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 3">Deep inside Dragon Valley (North)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 4">Deep inside Dragon Valley (South)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 8">Entrance of Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 6">Deep inside Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23242">Hear about Blood Crystal of Antharas.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23241">Request item synthesis.</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -2,14 +2,14 @@
|
||||
Antharas' claws covered my face for only a moment, but it ripped my soul to pieces.<br>
|
||||
The torn souls have been scattered all over, but I can feel all the pieces are connected. If you wish, I can send you to where each of my torn souls is.<br>
|
||||
I can also use your <font color="LEVEL">Will of Antharas</font> to unseal the <font color="LEVEL">Sealed Blood Crystal</font>. What do you think?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul HuntersVillage">Hunters Village</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleyCenter">The Center of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleyNorth">Deep in the Dragon Valley (North)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul DragonValleySouth">Deep in the Dragon Valley (South)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLair">Entrance to Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLairMagicForceFieldBridge">Antharas' Lair - Barrier Bridge</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul AntharasLairDeep">Deep in Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link teleporter/separatedsoul.htm">Hear about the Antharas Blood Crystal.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul Synthesis">Request item combination.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 1">Hunters Village</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 2">The Center of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 3">Deep in the Dragon Valley (North)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 4">Deep in the Dragon Valley (South)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 8">Entrance to Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 5">Antharas' Lair - Barrier Bridge</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 6">Deep in Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23242">Hear about the Antharas Blood Crystal.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23241">Request item combination.</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
15
trunk/dist/game/data/scripts/ai/npc/Teleports/SeparatedSoul/32891.htm
vendored
Normal file
15
trunk/dist/game/data/scripts/ai/npc/Teleports/SeparatedSoul/32891.htm
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
<html><body>Separated Soul:<br>
|
||||
The Claw of Antharas barely touched me, but even so, my soul was ripped from my body!<br>
|
||||
I can not gather the souls scattered in the area, but I can sense them. If you desire, I can send you to the location where the separated souls are located.<br>
|
||||
I can also release the <font color="LEVEL">Sealed Blood Crystal</font> using the <font color="LEVEL">Will of Antharas</font> you possess. What say you?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 1">Hunter's Village</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 7">Entrance to Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 2">The Center of Dragon Valley</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 3">Deep inside Dragon Valley (North)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 4">Deep inside Dragon Valley (South)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 5">Antharas' Lair - Magic Force Field Bridge</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 6">Deep inside Antharas' Lair</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23242">Hear about Blood Crystal of Antharas.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest SeparatedSoul 23241">Request item synthesis.</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
@@ -29,7 +29,7 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
|
||||
/**
|
||||
* Separated Soul teleport AI.
|
||||
* @author UnAfraid, improved by Adry_85
|
||||
* @author UnAfraid, improved by Adry_85, Zealar
|
||||
*/
|
||||
public final class SeparatedSoul extends AbstractNpcAI
|
||||
{
|
||||
@@ -45,7 +45,6 @@ public final class SeparatedSoul extends AbstractNpcAI
|
||||
32870,
|
||||
32891
|
||||
};
|
||||
|
||||
// Items
|
||||
private static final int WILL_OF_ANTHARAS = 17266;
|
||||
private static final int SEALED_BLOOD_CRYSTAL = 17267;
|
||||
@@ -53,17 +52,17 @@ public final class SeparatedSoul extends AbstractNpcAI
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 80;
|
||||
// Locations
|
||||
private static final Map<String, Location> LOCATIONS = new HashMap<>();
|
||||
private static final Map<Integer, Location> LOCATIONS = new HashMap<>();
|
||||
static
|
||||
{
|
||||
LOCATIONS.put("HuntersVillage", new Location(117031, 76769, -2696));
|
||||
LOCATIONS.put("AntharasLair", new Location(131116, 114333, -3704));
|
||||
LOCATIONS.put("AntharasLairDeep", new Location(148447, 110582, -3944));
|
||||
LOCATIONS.put("AntharasLairMagicForceFieldBridge", new Location(146129, 111232, -3568));
|
||||
LOCATIONS.put("DragonValley", new Location(73122, 118351, -3714));
|
||||
LOCATIONS.put("DragonValleyCenter", new Location(99218, 110283, -3696));
|
||||
LOCATIONS.put("DragonValleyNorth", new Location(116992, 113716, -3056));
|
||||
LOCATIONS.put("DragonValleySouth", new Location(113203, 121063, -3712));
|
||||
LOCATIONS.put(1, new Location(117046, 76798, -2696)); // Hunter's Village
|
||||
LOCATIONS.put(2, new Location(99218, 110283, -3696)); // The Center of Dragon Valley
|
||||
LOCATIONS.put(3, new Location(116992, 113716, -3056)); // Deep inside Dragon Valley(North)
|
||||
LOCATIONS.put(4, new Location(113203, 121063, -3712)); // Deep inside Dragon Valley (South)
|
||||
LOCATIONS.put(5, new Location(146129, 111232, -3568)); // Antharas' Lair - Magic Force Field Bridge
|
||||
LOCATIONS.put(6, new Location(148447, 110582, -3944)); // Deep inside Antharas' Lair
|
||||
LOCATIONS.put(7, new Location(73122, 118351, -3714)); // Entrance to Dragon Valley
|
||||
LOCATIONS.put(8, new Location(131116, 114333, -3704)); // Entrance of Antharas' Lair
|
||||
}
|
||||
|
||||
private SeparatedSoul()
|
||||
@@ -71,33 +70,56 @@ public final class SeparatedSoul extends AbstractNpcAI
|
||||
super(SeparatedSoul.class.getSimpleName(), "ai/npc/Teleports");
|
||||
addStartNpc(SEPARATED_SOULS);
|
||||
addTalkId(SEPARATED_SOULS);
|
||||
addFirstTalkId(SEPARATED_SOULS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
return npc.getId() + ".htm";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
if (LOCATIONS.containsKey(event))
|
||||
final int ask = Integer.parseInt(event);
|
||||
switch (ask)
|
||||
{
|
||||
if (player.getLevel() >= MIN_LEVEL)
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
{
|
||||
player.teleToLocation(LOCATIONS.get(event), true);
|
||||
if (player.getLevel() >= MIN_LEVEL)
|
||||
{
|
||||
player.teleToLocation(LOCATIONS.get(ask), false);
|
||||
}
|
||||
else
|
||||
{
|
||||
return "no-level.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
case 23241:
|
||||
{
|
||||
return "no-level.htm";
|
||||
if (hasQuestItems(player, WILL_OF_ANTHARAS, SEALED_BLOOD_CRYSTAL))
|
||||
{
|
||||
takeItems(player, WILL_OF_ANTHARAS, 1);
|
||||
takeItems(player, SEALED_BLOOD_CRYSTAL, 1);
|
||||
giveItems(player, ANTHARAS_BLOOD_CRYSTAL, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
return "no-items.htm";
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ("Synthesis".equals(event)) // Request Item Synthesis
|
||||
{
|
||||
if (hasQuestItems(player, WILL_OF_ANTHARAS, SEALED_BLOOD_CRYSTAL))
|
||||
case 23242:
|
||||
{
|
||||
takeItems(player, WILL_OF_ANTHARAS, 1);
|
||||
takeItems(player, SEALED_BLOOD_CRYSTAL, 1);
|
||||
giveItems(player, ANTHARAS_BLOOD_CRYSTAL, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
return "no-items.htm";
|
||||
return "separatedsoul.htm";
|
||||
}
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
|
@@ -1,3 +1,3 @@
|
||||
<html><body>Separated Soul:<br>
|
||||
In order for me to create a <font color="LEVEL">Blood Crystal of Antharas</font> you will need to bring me the <font color="LEVEL">Will of Antharas</font> and a <font color="LEVEL">Sealed Blood Crystal</font>. You can acquire these items from his commanders in either Antharas' Lair or Dragon Valley.<br>
|
||||
In order for me to create a <font color="LEVEL">Blood Crystal of Antharas</font> you will need to bring me the <font color="LEVEL">Will of Antharas</font> and a <font color="LEVEL">Sealed Blood Crystal</font>. You can acquire these items from his commanders in either Antharas's Lair or Dragon Valley.
|
||||
</body></html>
|
@@ -1,5 +1,5 @@
|
||||
<html><body>Separated Soul:<br>
|
||||
The claw of Antharas barely touched my face,but my soul was still ripped apart!<br>
|
||||
The Claw of Antharas barely touched my face, but my soul was still ripped apart like this.<br>
|
||||
I can't gather the scattered souls in the area, but I can sense them. I could send you to the location of the souls, but you don't look capable yet of combining my ripped soul.<br>
|
||||
(Moving to the location of the other separated souls requires the character to be at <font color="LEVEL">level 80 or above</font>.)
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Teleports/SeparatedSoul/separatedsoul.htm
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Teleports/SeparatedSoul/separatedsoul.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>Separaed Soul:<br>
|
||||
The <font color="LEVEL">Will of Antharas</font> is a command stone that Antharas embedded into his high commanding minions. With this stone Antharas has the ability to control these creatures to do his bidding. It is a required ingredient for creating an Antharas Blood Crystal.<br>
|
||||
A long time ago when Antharas's blood was spilt on the ground the poison in the blood corrupted the land. However, over time land acted as a filter separating the poison from the blood. The result was a pure form of Antharas blood that crystallized over time into small <font color="LEVEL">Sealed Blood Crystals</font>. The power in Antharas's blood has a high concentration of regeneration and restoration power. Enough that it even has the power to bring back the dead. It is a required ingredient for creating an Antharas Blood Crystal.
|
||||
</body></html>
|
@@ -34,6 +34,7 @@ import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
|
||||
import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
|
||||
import com.l2jserver.gameserver.data.xml.impl.ClassListData;
|
||||
import com.l2jserver.gameserver.data.xml.impl.SkillTreesData;
|
||||
import com.l2jserver.gameserver.data.xml.impl.TransformData;
|
||||
import com.l2jserver.gameserver.enums.Race;
|
||||
import com.l2jserver.gameserver.enums.SubclassInfoType;
|
||||
import com.l2jserver.gameserver.handler.IAdminCommandHandler;
|
||||
@@ -357,8 +358,8 @@ public class AdminEditChar implements IAdminCommandHandler
|
||||
if ((ClassId.getClassId(classidval) != null) && (player.getClassId().getId() != classidval))
|
||||
{
|
||||
final boolean wasAwaken = player.isAwaken();
|
||||
TransformData.getInstance().transformPlayer(255, player);
|
||||
player.setClassId(classidval);
|
||||
|
||||
if (player.isSubClassActive())
|
||||
{
|
||||
player.getSubClasses().get(player.getClassIndex()).setClassId(player.getActiveClassId());
|
||||
@@ -368,16 +369,17 @@ public class AdminEditChar implements IAdminCommandHandler
|
||||
player.setBaseClassId(player.getActiveClassId());
|
||||
player.setInitialClassId(ClassId.getInitialClassId(player));
|
||||
}
|
||||
|
||||
if (player.getBaseClass().getRace().equals(Race.ERTHEIA))
|
||||
{
|
||||
player.getAppearance().setSex(true);
|
||||
}
|
||||
|
||||
final String newclass = ClassListData.getInstance().getClass(player.getClassId()).getClassName();
|
||||
player.storeMe();
|
||||
player.sendMessage("A GM changed your class to " + newclass + ".");
|
||||
player.untransform();
|
||||
player.broadcastUserInfo();
|
||||
activeChar.setTarget(null);
|
||||
activeChar.setTarget(player);
|
||||
if (!wasAwaken && player.isAwaken())
|
||||
{
|
||||
SkillTreesData.getInstance().cleanSkillUponAwakening(player);
|
||||
|
@@ -324,13 +324,13 @@ public class AdminShowQuests implements IAdminCommandHandler
|
||||
QuestState qs = target.getQuestState(val[0]);
|
||||
String[] outval = new String[3];
|
||||
|
||||
if (val[1].equals("state"))
|
||||
if ("state".equals(val[1]))
|
||||
{
|
||||
switch (val[2])
|
||||
{
|
||||
case "COMPLETED":
|
||||
{
|
||||
qs.exitQuest((val[3].equals("1")) ? true : false);
|
||||
qs.exitQuest("1".equals(val[3]));
|
||||
break;
|
||||
}
|
||||
case "DELETE":
|
||||
|
@@ -38,6 +38,7 @@ import com.l2jserver.util.StringUtil;
|
||||
|
||||
public class QuestLink implements IBypassHandler
|
||||
{
|
||||
private static final int MAX_QUEST_COUNT = 40;
|
||||
private static final String[] COMMANDS =
|
||||
{
|
||||
"Quest"
|
||||
@@ -225,7 +226,7 @@ public class QuestLink implements IBypassHandler
|
||||
if ((q.getId() >= 1) && (q.getId() < 20000))
|
||||
{
|
||||
// Too many ongoing quests.
|
||||
if (player.getAllActiveQuests().size() > 40)
|
||||
if (player.getAllActiveQuests().size() >= MAX_QUEST_COUNT)
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId());
|
||||
html.setFile(player.getHtmlPrefix(), "html/fullquest.html");
|
||||
|
@@ -55,7 +55,7 @@ public final class DispelBySlotProbability extends AbstractEffect
|
||||
for (String ngtStack : _dispel.split(";"))
|
||||
{
|
||||
String[] ngt = ngtStack.split(",");
|
||||
_dispelAbnormals.put(AbnormalType.getAbnormalType(ngt[0]), Short.MAX_VALUE);
|
||||
_dispelAbnormals.put(AbnormalType.getAbnormalType(ngt[0]), (ngt.length > 1) ? Short.parseShort(ngt[1]) : Short.MAX_VALUE);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@@ -57,6 +57,7 @@ public final class ServitorShare extends AbstractEffect
|
||||
for (L2Summon summon : info.getEffected().getActingPlayer().getServitors().values())
|
||||
{
|
||||
summon.broadcastInfo();
|
||||
summon.getStatus().startHpMpRegeneration();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -81,6 +82,14 @@ public final class ServitorShare extends AbstractEffect
|
||||
{
|
||||
for (L2Summon summon : info.getEffected().getActingPlayer().getServitors().values())
|
||||
{
|
||||
if (summon.getCurrentHp() > summon.getMaxHp())
|
||||
{
|
||||
summon.setCurrentHp(summon.getMaxHp());
|
||||
}
|
||||
if (summon.getCurrentMp() > summon.getMaxMp())
|
||||
{
|
||||
summon.setCurrentMp(summon.getMaxMp());
|
||||
}
|
||||
summon.broadcastInfo();
|
||||
}
|
||||
}
|
||||
|
@@ -52,6 +52,10 @@ public class Seed implements IItemHandler
|
||||
}
|
||||
|
||||
final L2Object tgt = playable.getTarget();
|
||||
if (tgt == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!tgt.isNpc())
|
||||
{
|
||||
playable.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||
|
@@ -288,10 +288,7 @@ public final class DarkCloudMansion extends AbstractInstance
|
||||
{
|
||||
for (L2PcInstance partyMember : party.getMembers())
|
||||
{
|
||||
if (partyMember.getQuestState(getName()) == null)
|
||||
{
|
||||
newQuestState(partyMember);
|
||||
}
|
||||
getQuestState(partyMember, true);
|
||||
world.addAllowed(partyMember.getObjectId());
|
||||
teleportPlayer(partyMember, new Location(146534, 180464, -6117), world.getInstanceId());
|
||||
}
|
||||
|
@@ -342,7 +342,7 @@ public class Q00114_ResurrectionOfAnOldManager extends Quest
|
||||
{
|
||||
if (creature.isPlayer())
|
||||
{
|
||||
final QuestState st = creature.getActingPlayer().getQuestState(getName());
|
||||
final QuestState st = getQuestState(creature.getActingPlayer(), false);
|
||||
if ((st != null) && st.isCond(17))
|
||||
{
|
||||
st.takeItems(DETCTOR, 1);
|
||||
@@ -591,4 +591,4 @@ public class Q00114_ResurrectionOfAnOldManager extends Quest
|
||||
|
||||
return htmltext;
|
||||
}
|
||||
}
|
||||
}
|
@@ -138,7 +138,7 @@ public class Q00142_FallenAngelRequestOfDawn extends Quest
|
||||
final QuestState st;
|
||||
if ((npc.getId() == FALLEN_ANGEL))
|
||||
{
|
||||
st = player.getQuestState(getName());
|
||||
st = getQuestState(player, false);
|
||||
if (st.isCond(5))
|
||||
{
|
||||
st.giveItems(FALLEN_ANGEL_BLOOD, 1);
|
||||
|
@@ -1793,7 +1793,7 @@ public final class Q00336_CoinsOfMagic extends Quest
|
||||
|
||||
private QuestState getRandomPlayerFromParty(L2PcInstance player, L2Npc npc, int memoState)
|
||||
{
|
||||
QuestState qs = player.getQuestState(getName());
|
||||
QuestState qs = getQuestState(player, false);
|
||||
final List<QuestState> candidates = new ArrayList<>();
|
||||
|
||||
if ((qs != null) && qs.isStarted() && (qs.getMemoState() == memoState))
|
||||
@@ -1807,7 +1807,7 @@ public final class Q00336_CoinsOfMagic extends Quest
|
||||
player.getParty().getMembers().stream().forEach(pm ->
|
||||
{
|
||||
|
||||
QuestState qss = pm.getQuestState(getName());
|
||||
QuestState qss = getQuestState(pm, false);
|
||||
if ((qss != null) && qss.isStarted() && (qss.getMemoState() == memoState) && Util.checkIfInRange(1500, npc, pm, true))
|
||||
{
|
||||
candidates.add(qss);
|
||||
@@ -1819,7 +1819,7 @@ public final class Q00336_CoinsOfMagic extends Quest
|
||||
|
||||
private QuestState getRandomPlayerFromPartyCoin(L2PcInstance player, L2Npc npc, int memoState)
|
||||
{
|
||||
QuestState qs = player.getQuestState(getName());
|
||||
QuestState qs = getQuestState(player, false);
|
||||
final List<QuestState> candidates = new ArrayList<>();
|
||||
if ((qs != null) && qs.isStarted() && (qs.getMemoState() == memoState) && !qs.hasQuestItems(Q_KALDIS_GOLD_DRAGON))
|
||||
{
|
||||
@@ -1832,7 +1832,7 @@ public final class Q00336_CoinsOfMagic extends Quest
|
||||
player.getParty().getMembers().stream().forEach(pm ->
|
||||
{
|
||||
|
||||
QuestState qss = pm.getQuestState(getName());
|
||||
QuestState qss = getQuestState(pm, false);
|
||||
if ((qss != null) && qss.isStarted() && (qss.getMemoState() == memoState) && !qss.hasQuestItems(Q_KALDIS_GOLD_DRAGON) && Util.checkIfInRange(1500, npc, pm, true))
|
||||
{
|
||||
candidates.add(qss);
|
||||
|
5
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-01.htm
vendored
Normal file
5
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-01.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
The Iron Gate Guild is dedicated to keeping its customers' goods safe and sound. Our warehouses are virtual fortresses, strong and solid.<br>
|
||||
We now use Infernium for our warehouse doors, locks and exterior walls. There's nothing stronger that we know of. But... <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 5">"But what?"</Button>
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-03.html
vendored
Normal file
5
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-03.html
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
Something happened a few days ago. The <font color="LEVEL">Blacksmith who was refining Infernium was attacked by monsters</font>, and all the Infernium ore were stolen. That ore was going to be used to construct a new, state-of-the-art warehouse. We must retrieve them at all costs! <br>
|
||||
Will you help us <font color="LEVEL">retrieve the Infernium ore</font>? We will gladly pay you...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity QUEST_ACCEPTED">Say yes.</Button>
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-04.html
vendored
Normal file
4
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-04.html
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
The Iron Gate Guild is dedicated to keeping its customers' goods safe and sound. Our warehouses are virtual fortresses, strong and solid.<br>We now use Infernium for our warehouse doors, locks and exterior walls. There's nothing stronger that we know of. But... Eh, no, never mind. It's too early to tell you this story.<br>
|
||||
(Only characters who are level 58 or higher may undertake this quest.)
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-05.htm
vendored
Normal file
4
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-05.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
Good! <font color="LEVEL">For every 100 Infernium Ores you recover, I will give you a chance to play bingo.</font> If you do well in bingo you will also receive a nice reward: a necessary ingredient for the manufacture of an A-Grade weapon. Nice, eh?<br>
|
||||
Oh! I forgot to tell you something important. From the footprints, fur and eyewitness testimony, the monsters that attacked the blacksmith shop seem to be <font color="LEVEL">Glow Wisps, Marsh Predators, Hames Orc Snipers, Cursed Guardians, Hames Orc Overlords, Wretched Archers, Grace Lichs, Grave Predators, Crimson Drakes, Kadios, Fallen Orc Shamans, Sharp Talon Tigers, Past Knights, Hungered Corpses, Bloody Lords, Bloody Ghosts, Dark Guards, Death Agents, Spiteful Soul Leaders, Spiteful Soul Wizards, Giant's Shadows, Past Creatures, Warriors of Ancient Times and Soldiers of Ancient Times</font>. Please help us -- our Guild's pride is at stake!
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-06.html
vendored
Normal file
5
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-06.html
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
As I told you, hunt <font color="LEVEL">Glow Wisps, Marsh Predators, Hames Orc Snipers, Cursed Guardians, Hames Orc Overlords, Wretched Archers, Grace Lichs, Grave Predators, Crimson Drakes, Kadios, Fallen Orc Shamans, Sharp Talon Tigers, Past Knights, Hungered Corpses, Bloody Lords, Bloody Ghosts, Dark Guards, Death Agents, Spiteful Soul Leaders, Spiteful Soul Wizards, Giant's Shadows, Past Creatures, Warriors of Ancient Times and Soldiers of Ancient Times</font> and bring back the Infernium Ores they stole. <font color="LEVEL">For every 100 Infernium Ores you recover, I will give you a chance to play bingo.</font> If you do well in bingo you will also receive a nice reward: a necessary ingredient for the manufacture of an A-Grade weapon. Nice, eh? Please hurry-- our Guild's pride is at stake!<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 3">Listen to the rules of bingo.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 6">Say you want to quit.</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-07.html
vendored
Normal file
6
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-07.html
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
Did you recover the Infernium Ores? Then let's play bingo!<br>
|
||||
<font color="LEVEL">Oh, make sure you have enough spaces in your inventory before we start playing. I'd hate for you to do well and then not be able to actually receive the item!</font><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 8">Use 100 Infernium Ores to play bingo.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 9">Listen to the rules of bingo.</Button>
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-08.html
vendored
Normal file
4
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-08.html
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
Ah well. You haven't yet recovered all the stolen Infernium Ores, but I suppose you have other concerns to deal with, too... <br>
|
||||
If you change your mind and want to help us again, please come see me.
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-09.html
vendored
Normal file
5
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-09.html
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
I'll place numbers 1-9 on a 3x3 number pad. Then you need to pick 6 numbers out of 1-9. When you have finished making your choices, we count how many horizontal, vertical and diagonal lines were created by your choice of numbers. Is that clear enough? I think you'll understand once you play. <br>
|
||||
If your numbers make 3 lines, I'll give you a reward.<br>
|
||||
<a action ="bypass -h Quest Q00386_StolenDignity warehouse_keeper_romp_q0386_07.htm">Back</Button>
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-09a.htm
vendored
Normal file
4
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-09a.htm
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
I'll place numbers 1-9 on a 3x3 numberpad. Then you need to pick 6 numbers out of 1-9. When you have finished making your choices, we count how many horizontal, vertical and diagonal lines were created by your choice of numbers. Is that clear enough? I think you'll understand once you play. <br>
|
||||
If your numbers make 3 lines, I'll give you a reward.
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-11.html
vendored
Normal file
4
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-11.html
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
Well? It looks like you have only a few Infernium Ores here. Is this all you brought? <br>
|
||||
Please go back and collect more before seeing me again.
|
||||
</body></html>
|
14
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-12.html
vendored
Normal file
14
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-12.html
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
I placed numbers ranging from 1-9 on a numberpad. Of course I won't show you what they are!<br>
|
||||
But I will take 100 Infernium Ores in advance. If you quit midgame, I won't give them back! Understand?<br>
|
||||
Now it's time for you to pick 6 numbers ranging from 1-9. Pick your first number. <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 10">1</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 11">2</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 12">3</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 13">4</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 14">5</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 15">6</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 16">7</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 17">8</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 18">9</Button>
|
||||
</body></html>
|
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-13.html
vendored
Normal file
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-13.html
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
Now, pick your second number.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 19">1</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 20">2</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 21">3</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 22">4</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 23">5</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 24">6</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 25">7</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 26">8</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 27">9</Button>
|
||||
Current status<br>
|
||||
<table border="1" border color="white" width=100>
|
||||
<tr>
|
||||
<td align="center"><?Cell1?></td>
|
||||
<td align="center"><?Cell2?></td>
|
||||
<td align="center"><?Cell3?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell4?></td>
|
||||
<td align="center"><?Cell5?></td>
|
||||
<td align="center"><?Cell6?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell7?></td>
|
||||
<td align="center"><?Cell8?></td>
|
||||
<td align="center"><?Cell9?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body></html>
|
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-14.html
vendored
Normal file
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-14.html
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
Ready to pick your third number?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 19">1</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 20">2</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 21">3</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 22">4</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 23">5</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 24">6</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 25">7</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 26">8</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 27">9</Button>
|
||||
Current status<br>
|
||||
<table border="1" border color="white" width=100>
|
||||
<tr>
|
||||
<td align="center"><?Cell1?></td>
|
||||
<td align="center"><?Cell2?></td>
|
||||
<td align="center"><?Cell3?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell4?></td>
|
||||
<td align="center"><?Cell5?></td>
|
||||
<td align="center"><?Cell6?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell7?></td>
|
||||
<td align="center"><?Cell8?></td>
|
||||
<td align="center"><?Cell9?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body></html>
|
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-15.html
vendored
Normal file
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-15.html
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
That number has been picked already. Pick the second number again.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 19">1</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 20">2</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 21">3</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 22">4</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 23">5</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 24">6</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 25">7</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 26">8</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 27">9</Button>
|
||||
Current status<br>
|
||||
<table border="1" border color="white" width=100>
|
||||
<tr>
|
||||
<td align="center"><?Cell1?></td>
|
||||
<td align="center"><?Cell2?></td>
|
||||
<td align="center"><?Cell3?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell4?></td>
|
||||
<td align="center"><?Cell5?></td>
|
||||
<td align="center"><?Cell6?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell7?></td>
|
||||
<td align="center"><?Cell8?></td>
|
||||
<td align="center"><?Cell9?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body></html>
|
29
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-16.html
vendored
Normal file
29
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-16.html
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
Time for the fourth number. Pick it well...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 19">1</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 20">2</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 21">3</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 22">4</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 23">5</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 24">6</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 25">7</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 26">8</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 27">9</Button>
|
||||
Current status<br><table border="1" border color="white" width=100>
|
||||
<tr>
|
||||
<td align="center"><?Cell1?></td>
|
||||
<td align="center"><?Cell2?></td>
|
||||
<td align="center"><?Cell3?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell4?></td>
|
||||
<td align="center"><?Cell5?></td>
|
||||
<td align="center"><?Cell6?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell7?></td>
|
||||
<td align="center"><?Cell8?></td>
|
||||
<td align="center"><?Cell9?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body></html>
|
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-17.html
vendored
Normal file
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-17.html
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
That number has been picked already. Pick the third number again.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 19">1</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 20">2</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 21">3</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 22">4</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 23">5</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 24">6</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 25">7</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 26">8</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 27">9</Button>
|
||||
Current status<br>
|
||||
<table border="1" border color="white" width=100>
|
||||
<tr>
|
||||
<td align="center"><?Cell1?></td>
|
||||
<td align="center"><?Cell2?></td>
|
||||
<td align="center"><?Cell3?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell4?></td>
|
||||
<td align="center"><?Cell5?></td>
|
||||
<td align="center"><?Cell6?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell7?></td>
|
||||
<td align="center"><?Cell8?></td>
|
||||
<td align="center"><?Cell9?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body></html>
|
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-18.html
vendored
Normal file
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-18.html
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
You're almost finished. Choose your fifth number carefully.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 19">1</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 20">2</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 21">3</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 22">4</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 23">5</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 24">6</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 25">7</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 26">8</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 27">9</Button>
|
||||
Current status<br>
|
||||
<table border="1" border color="white" width=100>
|
||||
<tr>
|
||||
<td align="center"><?Cell1?></td>
|
||||
<td align="center"><?Cell2?></td>
|
||||
<td align="center"><?Cell3?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell4?></td>
|
||||
<td align="center"><?Cell5?></td>
|
||||
<td align="center"><?Cell6?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell7?></td>
|
||||
<td align="center"><?Cell8?></td>
|
||||
<td align="center"><?Cell9?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body></html>
|
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-19.html
vendored
Normal file
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-19.html
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
The number you have picked has already been chosen. Pick the fourth number again.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 19">1</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 20">2</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 21">3</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 22">4</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 23">5</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 24">6</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 25">7</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 26">8</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 27">9</Button>
|
||||
Current status<br>
|
||||
<table border="1" border color="white" width=100>
|
||||
<tr>
|
||||
<td align="center"><?Cell1?></td>
|
||||
<td align="center"><?Cell2?></td>
|
||||
<td align="center"><?Cell3?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell4?></td>
|
||||
<td align="center"><?Cell5?></td>
|
||||
<td align="center"><?Cell6?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell7?></td>
|
||||
<td align="center"><?Cell8?></td>
|
||||
<td align="center"><?Cell9?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body></html>
|
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-20.html
vendored
Normal file
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-20.html
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
Good! Now, it's time to pick your sixth and final number.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 55">1</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 56">2</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 57">3</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 58">4</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 59">5</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 60">6</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 61">7</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 62">8</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 63">9</Button>
|
||||
Current status<br>
|
||||
<table border="1" border color="white" width=100>
|
||||
<tr>
|
||||
<td align="center"><?Cell1?></td>
|
||||
<td align="center"><?Cell2?></td>
|
||||
<td align="center"><?Cell3?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell4?></td>
|
||||
<td align="center"><?Cell5?></td>
|
||||
<td align="center"><?Cell6?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell7?></td>
|
||||
<td align="center"><?Cell8?></td>
|
||||
<td align="center"><?Cell9?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body></html>
|
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-21.html
vendored
Normal file
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-21.html
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
Are you starting to get a little confused because of all the numbers? You chose one that has already been picked. Pick the fifth number again.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 19">1</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 20">2</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 21">3</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 22">4</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 23">5</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 24">6</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 25">7</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 26">8</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 27">9</Button>
|
||||
Current status<br>
|
||||
<table border="1" border color="white" width=100>
|
||||
<tr>
|
||||
<td align="center"><?Cell1?></td>
|
||||
<td align="center"><?Cell2?></td>
|
||||
<td align="center"><?Cell3?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell4?></td>
|
||||
<td align="center"><?Cell5?></td>
|
||||
<td align="center"><?Cell6?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell7?></td>
|
||||
<td align="center"><?Cell8?></td>
|
||||
<td align="center"><?Cell9?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body></html>
|
20
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-22.html
vendored
Normal file
20
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-22.html
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
Ah! Congratulations! You can see your choices in red on the bingo pad below. As you can see, you made 3 lines. Well done. As promised, here is your reward.<br>
|
||||
<table border="1" border color="white" width=100>
|
||||
<tr>
|
||||
<td align="center"><font color="<?FontColor1?>"><?Cell1?></font></td>
|
||||
<td align="center"><font color="<?FontColor2?>"><?Cell2?></font></td>
|
||||
<td align="center"><font color="<?FontColor3?>"><?Cell3?></font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><font color="<?FontColor4?>"><?Cell4?></font></td>
|
||||
<td align="center"><font color="<?FontColor5?>"><?Cell5?></font></td>
|
||||
<td align="center"><font color="<?FontColor6?>"><?Cell6?></font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><font color="<?FontColor7?>"><?Cell7?></font></td>
|
||||
<td align="center"><font color="<?FontColor8?>"><?Cell8?></font></td>
|
||||
<td align="center"><font color="<?FontColor9?>"><?Cell9?></font></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body></html>
|
20
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-23.html
vendored
Normal file
20
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-23.html
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
Oh... You can see your choices in red on the bingo pad below. Unfortunately, you didn't end up with 3 lines. Better luck next time!<br>
|
||||
<table border="1" border color="white" width=100>
|
||||
<tr>
|
||||
<td align="center"><font color="<?FontColor1?>"><?Cell1?></font></td>
|
||||
<td align="center"><font color="<?FontColor2?>"><?Cell2?></font></td>
|
||||
<td align="center"><font color="<?FontColor3?>"><?Cell3?></font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><font color="<?FontColor4?>"><?Cell4?></font></td>
|
||||
<td align="center"><font color="<?FontColor5?>"><?Cell5?></font></td>
|
||||
<td align="center"><font color="<?FontColor6?>"><?Cell6?></font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><font color="<?FontColor7?>"><?Cell7?></font></td>
|
||||
<td align="center"><font color="<?FontColor8?>"><?Cell8?></font></td>
|
||||
<td align="center"><font color="<?FontColor9?>"><?Cell9?></font></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body></html>
|
21
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-24.html
vendored
Normal file
21
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-24.html
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
You are a seriously unlucky person! Your choices are in red on the bingo pad below. As you can see, you didn't even make a single line! You know, that's actually harder to do than to complete all 3 lines.<br>Usually, we only reward winners, but I want to do something nice for you to keep your spirits up.<br>
|
||||
Here, take this. I hope it helps!<br>
|
||||
<table border="1" border color="white" width=100>
|
||||
<tr>
|
||||
<td align="center"><font color="<?FontColor1?>"><?Cell1?></font></td>
|
||||
<td align="center"><font color="<?FontColor2?>"><?Cell2?></font></td>
|
||||
<td align="center"><font color="<?FontColor3?>"><?Cell3?></font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><font color="<?FontColor4?>"><?Cell4?></font></td>
|
||||
<td align="center"><font color="<?FontColor5?>"><?Cell5?></font></td>
|
||||
<td align="center"><font color="<?FontColor6?>"><?Cell6?></font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><font color="<?FontColor7?>"><?Cell7?></font></td>
|
||||
<td align="center"><font color="<?FontColor8?>"><?Cell8?></font></td>
|
||||
<td align="center"><font color="<?FontColor9?>"><?Cell9?></font></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body></html>
|
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-25.html
vendored
Normal file
30
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/30843-25.html
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<html><body>Warehouse Keeper Romp:<br>
|
||||
The number you picked has already been chosen. Pick the sixth number again.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 55">1</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 56">2</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 57">3</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 58">4</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 59">5</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 60">6</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 61">7</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 62">8</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00386_StolenDignity 63">9</Button>
|
||||
Current status<br>
|
||||
<table border="1" border color="white" width=100>
|
||||
<tr>
|
||||
<td align="center"><?Cell1?></td>
|
||||
<td align="center"><?Cell2?></td>
|
||||
<td align="center"><?Cell3?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell4?></td>
|
||||
<td align="center"><?Cell5?></td>
|
||||
<td align="center"><?Cell6?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><?Cell7?></td>
|
||||
<td align="center"><?Cell8?></td>
|
||||
<td align="center"><?Cell9?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body></html>
|
898
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/Q00386_StolenDignity.java
vendored
Normal file
898
trunk/dist/game/data/scripts/quests/Q00386_StolenDignity/Q00386_StolenDignity.java
vendored
Normal file
@@ -0,0 +1,898 @@
|
||||
/*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package quests.Q00386_StolenDignity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jserver.gameserver.enums.QuestSound;
|
||||
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.util.Util;
|
||||
|
||||
/**
|
||||
* Stolen Dignity (386)
|
||||
* @author Zealar
|
||||
*/
|
||||
public final class Q00386_StolenDignity extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int WAREHOUSE_KEEPER_ROMP = 30843;
|
||||
// Monsters
|
||||
private static final int CRIMSON_DRAKE = 20670;
|
||||
private static final int KADIOS = 20671;
|
||||
private static final int HUNGRY_CORPSE = 20954;
|
||||
private static final int PAST_KNIGHT = 20956;
|
||||
private static final int BLADE_DEATH = 20958;
|
||||
private static final int DARK_GUARD = 20959;
|
||||
private static final int BLOODY_GHOST = 20960;
|
||||
private static final int BLOODY_LORD = 20963;
|
||||
private static final int PAST_CREATURE = 20967;
|
||||
private static final int GIANT_SHADOW = 20969;
|
||||
private static final int ANCIENTS_SOLDIER = 20970;
|
||||
private static final int ANCIENTS_WARRIOR = 20971;
|
||||
private static final int SPITE_SOUL_LEADER = 20974;
|
||||
private static final int SPITE_SOUL_WIZARD = 20975;
|
||||
private static final int WRECKED_ARCHER = 21001;
|
||||
private static final int FLOAT_OF_GRAVE = 21003;
|
||||
private static final int GRAVE_PREDATOR = 21005;
|
||||
private static final int FALLEN_ORC_SHAMAN = 21020;
|
||||
private static final int SHARP_TALON_TIGER = 21021;
|
||||
private static final int GLOW_WISP = 21108;
|
||||
private static final int MARSH_PREDATOR = 21110;
|
||||
private static final int HAMES_ORC_SNIPER = 21113;
|
||||
private static final int CURSED_GUARDIAN = 21114;
|
||||
private static final int HAMES_ORC_CHIEFTAIN = 21116;
|
||||
private static final int FALLEN_ORC_SHAMAN_TRANS = 21258;
|
||||
private static final int SHARP_TALON_TIGER_TRANS = 21259;
|
||||
// Items
|
||||
private static final int Q_STOLEN_INF_ORE = 6363;
|
||||
// Reward
|
||||
private static final int DRAGON_SLAYER_EDGE = 5529;
|
||||
private static final int METEOR_SHOWER_HEAD = 5532;
|
||||
private static final int ELYSIAN_HEAD = 5533;
|
||||
private static final int SOUL_BOW_SHAFT = 5534;
|
||||
private static final int CARNIUM_BOW_SHAFT = 5535;
|
||||
private static final int BLOODY_ORCHID_HEAD = 5536;
|
||||
private static final int SOUL_SEPARATOR_HEAD = 5537;
|
||||
private static final int DRAGON_GRINDER_EDGE = 5538;
|
||||
private static final int BLOOD_TORNADO_EDGE = 5539;
|
||||
private static final int TALLUM_GLAIVE_EDGE = 5541;
|
||||
private static final int HALBARD_EDGE = 5542;
|
||||
private static final int DASPARIONS_STAFF_HEAD = 5543;
|
||||
private static final int WORLDTREES_BRANCH_HEAD = 5544;
|
||||
private static final int DARK_LEGIONS_EDGE_EDGE = 5545;
|
||||
private static final int SWORD_OF_MIRACLE_EDGE = 5546;
|
||||
private static final int ELEMENTAL_SWORD_EDGE = 5547;
|
||||
private static final int TALLUM_BLADE_EDGE = 5548;
|
||||
private static final int INFERNO_MASTER_BLADE = 8331;
|
||||
private static final int EYE_OF_SOUL_PIECE = 8341;
|
||||
private static final int DRAGON_FLAME_HEAD_PIECE = 8342;
|
||||
private static final int DOOM_CRUSHER_HEAD = 8349;
|
||||
private static final int HAMMER_OF_DESTROYER_PIECE = 8346;
|
||||
private static final int SIRR_BLADE_BLADE = 8712;
|
||||
private static final int SWORD_OF_IPOS_BLADE = 8713;
|
||||
private static final int BARAKIEL_AXE_PIECE = 8714;
|
||||
private static final int TUNING_FORK_OF_BEHEMOTH_PIECE = 8715;
|
||||
private static final int NAGA_STORM_PIECE = 8716;
|
||||
private static final int TIPHON_SPEAR_EDGE = 8717;
|
||||
private static final int SHYID_BOW_SHAFT = 8718;
|
||||
private static final int SOBEKK_HURRICANE_EDGE = 8719;
|
||||
private static final int TONGUE_OF_THEMIS_PIECE = 8720;
|
||||
private static final int HAND_OF_CABRIO_HEAD = 8721;
|
||||
private static final int CRYSTAL_OF_DEAMON_PIECE = 8722;
|
||||
|
||||
public Q00386_StolenDignity()
|
||||
{
|
||||
super(386, Q00386_StolenDignity.class.getSimpleName(), "Stolen Dignity");
|
||||
addStartNpc(WAREHOUSE_KEEPER_ROMP);
|
||||
addTalkId(WAREHOUSE_KEEPER_ROMP);
|
||||
addKillId(CRIMSON_DRAKE, KADIOS, HUNGRY_CORPSE, PAST_KNIGHT, BLADE_DEATH, DARK_GUARD, BLOODY_GHOST, BLOODY_LORD, PAST_CREATURE, GIANT_SHADOW, ANCIENTS_SOLDIER, ANCIENTS_WARRIOR, SPITE_SOUL_LEADER, SPITE_SOUL_WIZARD, WRECKED_ARCHER, FLOAT_OF_GRAVE, GRAVE_PREDATOR, FALLEN_ORC_SHAMAN, SHARP_TALON_TIGER, GLOW_WISP, MARSH_PREDATOR, HAMES_ORC_SNIPER, CURSED_GUARDIAN, HAMES_ORC_CHIEFTAIN, FALLEN_ORC_SHAMAN_TRANS, SHARP_TALON_TIGER_TRANS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
if ((qs != null) && (npc.getId() == WAREHOUSE_KEEPER_ROMP))
|
||||
{
|
||||
if (qs.isCreated())
|
||||
{
|
||||
if (player.getLevel() >= 58)
|
||||
{
|
||||
return "30843-01.htm";
|
||||
}
|
||||
return "30843-04.html";
|
||||
}
|
||||
if (qs.getQuestItemsCount(Q_STOLEN_INF_ORE) < 100)
|
||||
{
|
||||
return "30843-06.html";
|
||||
}
|
||||
return "30843-07.html";
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && (npc.getId() == WAREHOUSE_KEEPER_ROMP))
|
||||
{
|
||||
if (event.equals("QUEST_ACCEPTED"))
|
||||
{
|
||||
qs.playSound(QuestSound.ITEMSOUND_QUEST_ACCEPT);
|
||||
qs.setMemoState(336);
|
||||
qs.startQuest();
|
||||
qs.showQuestionMark(336);
|
||||
qs.playSound(QuestSound.ITEMSOUND_QUEST_MIDDLE);
|
||||
return "30843-05.htm";
|
||||
}
|
||||
if (event.contains(".html"))
|
||||
{
|
||||
return event;
|
||||
}
|
||||
int ask = Integer.parseInt(event);
|
||||
switch (ask)
|
||||
{
|
||||
case 3:
|
||||
return "30843-09a.html";
|
||||
case 5:
|
||||
return "30843-03.html";
|
||||
case 6:
|
||||
{
|
||||
qs.exitQuest(true);
|
||||
return "30843-08.html";
|
||||
}
|
||||
case 9:
|
||||
return "30843-09.htm";
|
||||
case 8:
|
||||
{
|
||||
if (qs.getQuestItemsCount(Q_STOLEN_INF_ORE) >= 100)
|
||||
{
|
||||
qs.takeItems(Q_STOLEN_INF_ORE, 100);
|
||||
createBingoBoard(qs);
|
||||
return "30843-12.html";
|
||||
}
|
||||
return "30843-11.html";
|
||||
}
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
case 13:
|
||||
case 14:
|
||||
case 15:
|
||||
case 16:
|
||||
case 17:
|
||||
case 18:
|
||||
{
|
||||
selectBingoNumber(qs, (ask - 10) + 1);
|
||||
return fillBoard(player, qs, getHtm(player.getHtmlPrefix(), "30843-13.html"));
|
||||
}
|
||||
case 19:
|
||||
{
|
||||
return takeHtml(player, qs, 1);
|
||||
}
|
||||
case 20:
|
||||
{
|
||||
return takeHtml(player, qs, 2);
|
||||
}
|
||||
case 21:
|
||||
{
|
||||
return takeHtml(player, qs, 3);
|
||||
}
|
||||
case 22:
|
||||
{
|
||||
return takeHtml(player, qs, 4);
|
||||
}
|
||||
case 23:
|
||||
{
|
||||
return takeHtml(player, qs, 5);
|
||||
}
|
||||
case 24:
|
||||
{
|
||||
return takeHtml(player, qs, 6);
|
||||
}
|
||||
case 25:
|
||||
{
|
||||
return takeHtml(player, qs, 7);
|
||||
}
|
||||
case 26:
|
||||
{
|
||||
return takeHtml(player, qs, 8);
|
||||
}
|
||||
case 27:
|
||||
{
|
||||
return takeHtml(player, qs, 9);
|
||||
}
|
||||
case 55:
|
||||
{
|
||||
return beforeReward(player, qs, 1);
|
||||
}
|
||||
case 56:
|
||||
{
|
||||
return beforeReward(player, qs, 2);
|
||||
}
|
||||
case 57:
|
||||
{
|
||||
return beforeReward(player, qs, 3);
|
||||
}
|
||||
case 58:
|
||||
{
|
||||
return beforeReward(player, qs, 4);
|
||||
}
|
||||
case 59:
|
||||
{
|
||||
return beforeReward(player, qs, 5);
|
||||
}
|
||||
case 60:
|
||||
{
|
||||
return beforeReward(player, qs, 6);
|
||||
}
|
||||
case 61:
|
||||
{
|
||||
return beforeReward(player, qs, 7);
|
||||
}
|
||||
case 62:
|
||||
{
|
||||
return beforeReward(player, qs, 8);
|
||||
}
|
||||
case 63:
|
||||
{
|
||||
return beforeReward(player, qs, 9);
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
private String takeHtml(L2PcInstance player, QuestState qs, int num)
|
||||
{
|
||||
String html = null;
|
||||
int i3;
|
||||
if (!isSelectedBingoNumber(qs, num))
|
||||
{
|
||||
selectBingoNumber(qs, num);
|
||||
i3 = getBingoSelectCount(qs);
|
||||
|
||||
if (i3 == 2)
|
||||
{
|
||||
html = getHtm(player.getHtmlPrefix(), "30843-14.html");
|
||||
}
|
||||
else if (i3 == 3)
|
||||
{
|
||||
html = getHtm(player.getHtmlPrefix(), "30843-16.html");
|
||||
}
|
||||
else if (i3 == 4)
|
||||
{
|
||||
html = getHtm(player.getHtmlPrefix(), "30843-18.html");
|
||||
}
|
||||
else if (i3 == 5)
|
||||
{
|
||||
html = getHtm(player.getHtmlPrefix(), "30843-20.html");
|
||||
}
|
||||
return fillBoard(player, qs, html);
|
||||
}
|
||||
i3 = getBingoSelectCount(qs);
|
||||
if (i3 == 1)
|
||||
{
|
||||
html = getHtm(player.getHtmlPrefix(), "30843-15.html");
|
||||
}
|
||||
else if (i3 == 2)
|
||||
{
|
||||
html = getHtm(player.getHtmlPrefix(), "30843-17.html");
|
||||
}
|
||||
else if (i3 == 3)
|
||||
{
|
||||
html = getHtm(player.getHtmlPrefix(), "30843-19.html");
|
||||
}
|
||||
else if (i3 == 4)
|
||||
{
|
||||
html = getHtm(player.getHtmlPrefix(), "30843-21.html");
|
||||
}
|
||||
return fillBoard(player, qs, html);
|
||||
}
|
||||
|
||||
private String fillBoard(L2PcInstance player, QuestState qs, String html)
|
||||
{
|
||||
for (int i0 = 0; i0 < 9; i0 = i0 + 1)
|
||||
{
|
||||
int i1 = getNumberFromBingoBoard(qs, i0);
|
||||
if (isSelectedBingoNumber(qs, i1))
|
||||
{
|
||||
html = html.replace("<?Cell" + (i0 + 1) + "?>", i1 + "");
|
||||
}
|
||||
else
|
||||
{
|
||||
html = html.replace("<?Cell" + (i0 + 1) + "?>", "?");
|
||||
}
|
||||
}
|
||||
return html;
|
||||
}
|
||||
|
||||
private String colorBoard(L2PcInstance player, QuestState qs, String html)
|
||||
{
|
||||
for (int i0 = 0; i0 < 9; i0 = i0 + 1)
|
||||
{
|
||||
int i1 = getNumberFromBingoBoard(qs, i0);
|
||||
html = html.replace("<?FontColor" + (i0 + 1) + "?>", (isSelectedBingoNumber(qs, i1)) ? "ff0000" : "ffffff");
|
||||
html = html.replace("<?Cell" + (i0 + 1) + "?>", i1 + "");
|
||||
}
|
||||
return html;
|
||||
}
|
||||
|
||||
private String beforeReward(L2PcInstance player, QuestState qs, int num)
|
||||
{
|
||||
if (!isSelectedBingoNumber(qs, num))
|
||||
{
|
||||
selectBingoNumber(qs, num);
|
||||
int i3 = getMatchedBingoLineCount(qs);
|
||||
String html;
|
||||
if ((i3 == 3) && ((getBingoSelectCount(qs)) == 6))
|
||||
{
|
||||
reward(player, qs, 4);
|
||||
html = getHtm(player.getHtmlPrefix(), "30843-22.html");
|
||||
}
|
||||
else if ((i3 == 0) && (getBingoSelectCount(qs) == 6))
|
||||
{
|
||||
reward(player, qs, 10);
|
||||
html = getHtm(player.getHtmlPrefix(), "30843-24.html");
|
||||
}
|
||||
else
|
||||
{
|
||||
html = getHtm(player.getHtmlPrefix(), "30843-23.html");
|
||||
}
|
||||
return colorBoard(player, qs, html);
|
||||
}
|
||||
return fillBoard(player, qs, getHtm(player.getHtmlPrefix(), "30843-25.html"));
|
||||
}
|
||||
|
||||
private void reward(L2PcInstance player, QuestState qs, int count)
|
||||
{
|
||||
switch (getRandom(33))
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
qs.giveItems(DRAGON_SLAYER_EDGE, count);
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
qs.giveItems(METEOR_SHOWER_HEAD, count);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
qs.giveItems(ELYSIAN_HEAD, count);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
qs.giveItems(SOUL_BOW_SHAFT, count);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
qs.giveItems(CARNIUM_BOW_SHAFT, count);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
qs.giveItems(BLOODY_ORCHID_HEAD, count);
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
qs.giveItems(SOUL_SEPARATOR_HEAD, count);
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
qs.giveItems(DRAGON_GRINDER_EDGE, count);
|
||||
break;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
qs.giveItems(BLOOD_TORNADO_EDGE, count);
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
qs.giveItems(TALLUM_GLAIVE_EDGE, count);
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
qs.giveItems(HALBARD_EDGE, count);
|
||||
break;
|
||||
}
|
||||
case 11:
|
||||
{
|
||||
qs.giveItems(DASPARIONS_STAFF_HEAD, count);
|
||||
break;
|
||||
}
|
||||
case 12:
|
||||
{
|
||||
qs.giveItems(WORLDTREES_BRANCH_HEAD, count);
|
||||
break;
|
||||
}
|
||||
case 13:
|
||||
{
|
||||
qs.giveItems(DARK_LEGIONS_EDGE_EDGE, count);
|
||||
break;
|
||||
}
|
||||
case 14:
|
||||
{
|
||||
qs.giveItems(SWORD_OF_MIRACLE_EDGE, count);
|
||||
break;
|
||||
}
|
||||
case 15:
|
||||
{
|
||||
qs.giveItems(ELEMENTAL_SWORD_EDGE, count);
|
||||
break;
|
||||
}
|
||||
case 16:
|
||||
{
|
||||
qs.giveItems(TALLUM_BLADE_EDGE, count);
|
||||
break;
|
||||
}
|
||||
case 17:
|
||||
{
|
||||
qs.giveItems(INFERNO_MASTER_BLADE, count);
|
||||
break;
|
||||
}
|
||||
case 18:
|
||||
{
|
||||
qs.giveItems(EYE_OF_SOUL_PIECE, count);
|
||||
break;
|
||||
}
|
||||
case 19:
|
||||
{
|
||||
qs.giveItems(DRAGON_FLAME_HEAD_PIECE, count);
|
||||
break;
|
||||
}
|
||||
case 20:
|
||||
{
|
||||
qs.giveItems(DOOM_CRUSHER_HEAD, count);
|
||||
break;
|
||||
}
|
||||
case 21:
|
||||
{
|
||||
qs.giveItems(HAMMER_OF_DESTROYER_PIECE, count);
|
||||
break;
|
||||
}
|
||||
case 22:
|
||||
{
|
||||
qs.giveItems(SIRR_BLADE_BLADE, count);
|
||||
break;
|
||||
}
|
||||
case 23:
|
||||
{
|
||||
qs.giveItems(SWORD_OF_IPOS_BLADE, count);
|
||||
break;
|
||||
}
|
||||
case 24:
|
||||
{
|
||||
qs.giveItems(BARAKIEL_AXE_PIECE, count);
|
||||
break;
|
||||
}
|
||||
case 25:
|
||||
{
|
||||
qs.giveItems(TUNING_FORK_OF_BEHEMOTH_PIECE, count);
|
||||
break;
|
||||
}
|
||||
case 26:
|
||||
{
|
||||
qs.giveItems(NAGA_STORM_PIECE, count);
|
||||
break;
|
||||
}
|
||||
case 27:
|
||||
{
|
||||
qs.giveItems(TIPHON_SPEAR_EDGE, count);
|
||||
break;
|
||||
}
|
||||
case 28:
|
||||
{
|
||||
qs.giveItems(SHYID_BOW_SHAFT, count);
|
||||
break;
|
||||
}
|
||||
case 29:
|
||||
{
|
||||
qs.giveItems(SOBEKK_HURRICANE_EDGE, count);
|
||||
break;
|
||||
}
|
||||
case 30:
|
||||
{
|
||||
qs.giveItems(TONGUE_OF_THEMIS_PIECE, count);
|
||||
break;
|
||||
}
|
||||
case 31:
|
||||
{
|
||||
qs.giveItems(HAND_OF_CABRIO_HEAD, count);
|
||||
break;
|
||||
}
|
||||
case 32:
|
||||
{
|
||||
qs.giveItems(CRYSTAL_OF_DEAMON_PIECE, count);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param qs
|
||||
*/
|
||||
private void createBingoBoard(QuestState qs)
|
||||
{
|
||||
//@formatter:off
|
||||
Integer[] arr = {1,2,3,4,5,6,7,8,9};
|
||||
//@formatter:on
|
||||
Collections.shuffle(Arrays.asList(arr));
|
||||
qs.set("numbers", Arrays.asList(arr).toString().replaceAll("[^\\d ]", ""));
|
||||
qs.set("selected", "? ? ? ? ? ? ? ? ?");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param qs
|
||||
* @return
|
||||
*/
|
||||
private int getMatchedBingoLineCount(QuestState qs)
|
||||
{
|
||||
String[] q = qs.get("selected").split(" ");
|
||||
int found = 0;
|
||||
// Horizontal
|
||||
if ((q[0] + q[1] + q[2]).matches("\\d+"))
|
||||
{
|
||||
found++;
|
||||
}
|
||||
if ((q[3] + q[4] + q[5]).matches("\\d+"))
|
||||
{
|
||||
found++;
|
||||
}
|
||||
if ((q[6] + q[7] + q[8]).matches("\\d+"))
|
||||
{
|
||||
found++;
|
||||
}
|
||||
// Vertical
|
||||
if ((q[0] + q[3] + q[6]).matches("\\d+"))
|
||||
{
|
||||
found++;
|
||||
}
|
||||
if ((q[1] + q[4] + q[7]).matches("\\d+"))
|
||||
{
|
||||
found++;
|
||||
}
|
||||
if ((q[2] + q[5] + q[8]).matches("\\d+"))
|
||||
{
|
||||
found++;
|
||||
}
|
||||
// Diagonal
|
||||
if ((q[0] + q[4] + q[8]).matches("\\d+"))
|
||||
{
|
||||
found++;
|
||||
}
|
||||
if ((q[2] + q[4] + q[6]).matches("\\d+"))
|
||||
{
|
||||
found++;
|
||||
}
|
||||
return found;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param qs
|
||||
* @param num
|
||||
*/
|
||||
private void selectBingoNumber(QuestState qs, int num)
|
||||
{
|
||||
String[] numbers = qs.get("numbers").split(" ");
|
||||
int pos = 0;
|
||||
for (int i = 0; i < numbers.length; i++)
|
||||
{
|
||||
if (Integer.parseInt(numbers[i]) == num)
|
||||
{
|
||||
pos = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
String[] selected = qs.get("selected").split(" ");
|
||||
for (int i = 0; i < selected.length; i++)
|
||||
{
|
||||
if (i == pos)
|
||||
{
|
||||
selected[i] = num + "";
|
||||
continue;
|
||||
}
|
||||
}
|
||||
String result = selected[0];
|
||||
for (int i = 1; i < selected.length; i++)
|
||||
{
|
||||
result += " " + selected[i];
|
||||
}
|
||||
qs.set("selected", result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param qs
|
||||
* @param num
|
||||
* @return
|
||||
*/
|
||||
private boolean isSelectedBingoNumber(QuestState qs, int num)
|
||||
{
|
||||
return qs.get("selected").contains(num + "");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param qs
|
||||
* @param num
|
||||
* @return
|
||||
*/
|
||||
private int getNumberFromBingoBoard(QuestState qs, int num)
|
||||
{
|
||||
return Integer.parseInt(qs.get("numbers").split(" ")[num]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param qs
|
||||
* @return
|
||||
*/
|
||||
private int getBingoSelectCount(QuestState qs)
|
||||
{
|
||||
String current = qs.get("selected");
|
||||
return current.replaceAll("\\D", "").length();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getRandomPlayerFromParty(killer, npc);
|
||||
if (qs != null)
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case CRIMSON_DRAKE:
|
||||
{
|
||||
if (getRandom(1000) < 20.200001)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case KADIOS:
|
||||
{
|
||||
if (getRandom(1000) < 211)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HUNGRY_CORPSE:
|
||||
{
|
||||
if (getRandom(1000) < 184)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PAST_KNIGHT:
|
||||
{
|
||||
if (getRandom(1000) < 216)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BLADE_DEATH:
|
||||
{
|
||||
if (getRandom(100) < 17)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DARK_GUARD:
|
||||
{
|
||||
if (getRandom(1000) < 273)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BLOODY_GHOST:
|
||||
{
|
||||
if (getRandom(1000) < 149)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BLOODY_LORD:
|
||||
{
|
||||
if (getRandom(1000) < 199)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PAST_CREATURE:
|
||||
{
|
||||
if (getRandom(1000) < 257)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GIANT_SHADOW:
|
||||
{
|
||||
if (getRandom(1000) < 205)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ANCIENTS_SOLDIER:
|
||||
{
|
||||
if (getRandom(1000) < 208)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ANCIENTS_WARRIOR:
|
||||
{
|
||||
if (getRandom(1000) < 299)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SPITE_SOUL_LEADER:
|
||||
{
|
||||
if (getRandom(100) < 44)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SPITE_SOUL_WIZARD:
|
||||
{
|
||||
if (getRandom(100) < 39)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WRECKED_ARCHER:
|
||||
{
|
||||
if (getRandom(1000) < 214)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FLOAT_OF_GRAVE:
|
||||
{
|
||||
if (getRandom(1000) < 173)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GRAVE_PREDATOR:
|
||||
{
|
||||
if (getRandom(1000) < 211)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FALLEN_ORC_SHAMAN:
|
||||
{
|
||||
if (getRandom(1000) < 478)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SHARP_TALON_TIGER:
|
||||
{
|
||||
if (getRandom(1000) < 234)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GLOW_WISP:
|
||||
{
|
||||
if (getRandom(1000) < 245)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MARSH_PREDATOR:
|
||||
{
|
||||
if (getRandom(100) < 26)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HAMES_ORC_SNIPER:
|
||||
{
|
||||
if (getRandom(100) < 37)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CURSED_GUARDIAN:
|
||||
{
|
||||
if (getRandom(1000) < 352)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HAMES_ORC_CHIEFTAIN:
|
||||
case FALLEN_ORC_SHAMAN_TRANS:
|
||||
case SHARP_TALON_TIGER_TRANS:
|
||||
{
|
||||
if (getRandom(1000) < 487)
|
||||
{
|
||||
giveItemRandomly(qs.getPlayer(), npc, Q_STOLEN_INF_ORE, 1, 0, 1, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
private QuestState getRandomPlayerFromParty(L2PcInstance player, L2Npc npc)
|
||||
{
|
||||
QuestState qs = getQuestState(player, false);
|
||||
final List<QuestState> candidates = new ArrayList<>();
|
||||
|
||||
if ((qs != null) && qs.isStarted())
|
||||
{
|
||||
candidates.add(qs);
|
||||
candidates.add(qs);
|
||||
}
|
||||
|
||||
if (player.isInParty())
|
||||
{
|
||||
player.getParty().getMembers().stream().forEach(pm ->
|
||||
{
|
||||
|
||||
QuestState qss = getQuestState(pm, false);
|
||||
if ((qss != null) && qss.isStarted() && Util.checkIfInRange(1500, npc, pm, true))
|
||||
{
|
||||
candidates.add(qss);
|
||||
}
|
||||
});
|
||||
}
|
||||
return candidates.isEmpty() ? null : candidates.get(getRandom(candidates.size()));
|
||||
}
|
||||
}
|
@@ -309,8 +309,10 @@ public final class Q00503_PursuitOfClanAmbition extends Quest
|
||||
}
|
||||
case "SPAWN_WITCH":
|
||||
{
|
||||
addSpawn(WITCH_ATHREA, 160688, 21296, -3714, 0, false, 5000);
|
||||
addSpawn(WITCH_KALIS, 160690, 21176, -3712, 0, false, 5000);
|
||||
final L2Npc athrea = addSpawn(WITCH_ATHREA, 160688, 21296, -3714, 0, false, 0);
|
||||
athrea.setScriptValue(50301);
|
||||
final L2Npc kalis = addSpawn(WITCH_KALIS, 160690, 21176, -3712, 0, false, 0);
|
||||
kalis.setScriptValue(50302);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -805,14 +807,20 @@ public final class Q00503_PursuitOfClanAmbition extends Quest
|
||||
{
|
||||
case WITCH_ATHREA:
|
||||
{
|
||||
startQuestTimer("DESPAWN_WITCH_ATHREA", 5000, npc, null);
|
||||
npc.broadcastPacket(new NpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.WAR_AND_DEATH));
|
||||
if (npc.isScriptValue(50301))
|
||||
{
|
||||
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));
|
||||
if (npc.isScriptValue(50302))
|
||||
{
|
||||
startQuestTimer("DESPAWN_WITCH_KALIS", 5000, npc, null);
|
||||
npc.broadcastPacket(new NpcSay(npc, ChatType.NPC_GENERAL, NpcStringId.AMBITION_AND_POWER));
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMPERIAL_COFFER:
|
||||
|
@@ -112,6 +112,7 @@ import quests.Q00376_ExplorationOfTheGiantsCavePart1.Q00376_ExplorationOfTheGian
|
||||
import quests.Q00377_ExplorationOfTheGiantsCavePart2.Q00377_ExplorationOfTheGiantsCavePart2;
|
||||
import quests.Q00381_LetsBecomeARoyalMember.Q00381_LetsBecomeARoyalMember;
|
||||
import quests.Q00382_KailsMagicCoin.Q00382_KailsMagicCoin;
|
||||
import quests.Q00386_StolenDignity.Q00386_StolenDignity;
|
||||
import quests.Q00420_LittleWing.Q00420_LittleWing;
|
||||
import quests.Q00421_LittleWingsBigAdventure.Q00421_LittleWingsBigAdventure;
|
||||
import quests.Q00431_WeddingMarch.Q00431_WeddingMarch;
|
||||
@@ -356,6 +357,7 @@ public class QuestMasterHandler
|
||||
Q00377_ExplorationOfTheGiantsCavePart2.class,
|
||||
Q00381_LetsBecomeARoyalMember.class,
|
||||
Q00382_KailsMagicCoin.class,
|
||||
Q00386_StolenDignity.class,
|
||||
Q00420_LittleWing.class,
|
||||
Q00421_LittleWingsBigAdventure.class,
|
||||
Q00431_WeddingMarch.class,
|
||||
|
120
trunk/dist/game/data/stats/items/21100-21199.xml
vendored
120
trunk/dist/game/data/stats/items/21100-21199.xml
vendored
@@ -928,180 +928,260 @@
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22191-1" />
|
||||
</item>
|
||||
<item id="21173" name="Transformation Scroll: Doom Wraith" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into a Doom Wraith for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22192-1" />
|
||||
</item>
|
||||
<item id="21174" name="Transformation Scroll: Grail Apostle" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into a Grail Apostle for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22193-1" />
|
||||
</item>
|
||||
<item id="21175" name="Transformation Scroll: Unicorn" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into a Unicorn for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22194-1" />
|
||||
</item>
|
||||
<item id="21176" name="Transformation Scroll: Lilim Knight" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into a Lilim Knight for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22195-1" />
|
||||
</item>
|
||||
<item id="21177" name="Transformation Scroll: Golem Guardian" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into a Golem Guardian for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22196-1" />
|
||||
</item>
|
||||
<item id="21178" name="Transformation Scroll: Inferno Drake" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into an Inferno Drake for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22197-1" />
|
||||
</item>
|
||||
<item id="21179" name="Transformation Scroll: Dragon Bomber" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into a Dragon Bomber for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22198-1" />
|
||||
</item>
|
||||
<item id="21180" name="Transformation Scroll: Heretic" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into a Heretic for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22199-1" />
|
||||
</item>
|
||||
<item id="21181" name="Transformation Scroll: Veil Master" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into a Veil Master for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22200-1" />
|
||||
</item>
|
||||
<item id="21182" name="Transformation Scroll: Saber Tooth Tiger" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into a Saber Tooth Tiger for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22201-1" />
|
||||
</item>
|
||||
<item id="21183" name="Transformation Scroll: Oel Mahum" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into an Ol Mahum for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22202-1" />
|
||||
</item>
|
||||
<item id="21184" name="Transformation Scroll: Doll Blader" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into a Doll Blader for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22203-1" />
|
||||
</item>
|
||||
<item id="21185" name="Transformation Scroll: Zaken" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into Zaken for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22204-1" />
|
||||
</item>
|
||||
<item id="21186" name="Transformation Scroll: Anakim" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into Anakim for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22205-1" />
|
||||
</item>
|
||||
<item id="21187" name="Transformation Scroll: Venom" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into a Venom for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22206-1" />
|
||||
</item>
|
||||
<item id="21188" name="Transformation Scroll: Gordon" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into a Gordon for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22207-1" />
|
||||
</item>
|
||||
<item id="21189" name="Transformation Scroll: Ranku" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into a Ranku for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22208-1" />
|
||||
</item>
|
||||
<item id="21190" name="Transformation Scroll: Kechi" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into Kechi for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22209-1" />
|
||||
</item>
|
||||
<item id="21191" name="Transformation Scroll: Demon Prince" additionalName="Event" type="EtcItem">
|
||||
<!-- Transforms you into a Demon Prince for 30 min. No effect if used while transformed. -->
|
||||
<set name="icon" val="icon.etc_trans_4f_s_b_01" />
|
||||
<set name="commissionItemType" val="SCROLL_OTHER" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="etcitem_type" val="SCROLL" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="120" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="is_oly_restricted" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="item_skill" val="22210-1" />
|
||||
</item>
|
||||
<item id="21192" name="Dimensional Diamond Pack" type="EtcItem">
|
||||
<!-- Wrapped Pack containing 50 Dimensional Diamonds. -->
|
||||
|
@@ -1325,6 +1325,7 @@
|
||||
<enchant1 name="basicProperty" val="MEN" />
|
||||
<enchant1 name="isDebuff" val="true" />
|
||||
<enchant1 name="lvlBonusRate" val="1" />
|
||||
<enchant1 name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<enchant1 name="magicLvl" val="#enchMagicLvl" />
|
||||
<enchant2 name="abnormalTime" val="15" />
|
||||
<enchant2 name="activateRate" val="#ench2ActivateRates" />
|
||||
@@ -1338,6 +1339,7 @@
|
||||
<enchant3 name="isDebuff" val="true" />
|
||||
<enchant3 name="lvlBonusRate" val="1" />
|
||||
<enchant3 name="magicLvl" val="#enchMagicLvl" />
|
||||
<enchant3 name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<for>
|
||||
<effect name="Spoil" />
|
||||
</for>
|
||||
|
@@ -72,6 +72,7 @@
|
||||
<enchant1 name="element" val="3" /> <!-- Earth -->
|
||||
<enchant1 name="elementPower" val="20" />
|
||||
<enchant1 name="isDebuff" val="true" />
|
||||
<enchant1 name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<enchant1 name="lvlBonusRate" val="1" />
|
||||
<enchant1 name="magicLvl" val="#enchMagicLvl" />
|
||||
<enchant1 name="offensive" val="true" />
|
||||
@@ -81,6 +82,7 @@
|
||||
<enchant2 name="element" val="3" /> <!-- Earth -->
|
||||
<enchant2 name="elementPower" val="20" />
|
||||
<enchant2 name="isDebuff" val="true" />
|
||||
<enchant2 name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<enchant2 name="lvlBonusRate" val="1" />
|
||||
<enchant2 name="magicLvl" val="#enchMagicLvl" />
|
||||
<enchant2 name="offensive" val="true" />
|
||||
@@ -90,6 +92,7 @@
|
||||
<enchant3 name="element" val="3" /> <!-- Earth -->
|
||||
<enchant3 name="elementPower" val="20" />
|
||||
<enchant3 name="isDebuff" val="true" />
|
||||
<enchant3 name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<enchant3 name="lvlBonusRate" val="1" />
|
||||
<enchant3 name="magicLvl" val="#enchMagicLvl" />
|
||||
<enchant3 name="offensive" val="true" />
|
||||
|
@@ -887,6 +887,7 @@
|
||||
<enchant2 name="power" val="#ench2Power" />
|
||||
<enchant3 name="basicProperty" val="MEN" />
|
||||
<enchant3 name="magicLvl" val="#enchMagicLvl" />
|
||||
<enchant3 name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<enchant3 name="isDebuff" val="true" />
|
||||
<enchant4 name="elementPower" val="#ench4ElementPower" />
|
||||
<enchant4 name="magicLvl" val="#enchMagicLvl" />
|
||||
@@ -1129,6 +1130,7 @@
|
||||
<enchant2 name="power" val="#ench2Power" />
|
||||
<enchant3 name="basicProperty" val="MEN" />
|
||||
<enchant3 name="isDebuff" val="true" />
|
||||
<enchant3 name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<enchant3 name="magicLvl" val="#enchMagicLvl" />
|
||||
<enchant4 name="elementPower" val="#ench4ElementPower" />
|
||||
<enchant4 name="magicLvl" val="#enchMagicLvl" />
|
||||
@@ -1353,6 +1355,7 @@
|
||||
<enchant1 name="power" val="#ench1Power" />
|
||||
<enchant2 name="elementPower" val="#ench2elementPower" />
|
||||
<enchant2 name="magicLvl" val="#enchMagicLvl" />
|
||||
<enchant3 name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<enchant3 name="basicProperty" val="MEN" />
|
||||
<enchant3 name="magicLvl" val="#enchMagicLvl" />
|
||||
<enchant3 name="isDebuff" val="true" />
|
||||
|
@@ -1101,7 +1101,7 @@
|
||||
<set name="isDebuff" val="true" />
|
||||
<set name="lvlBonusRate" val="2" />
|
||||
<set name="magicLvl" val="85" />
|
||||
<set name="operateType" val="ACTIVE_INSTANT" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="2000" />
|
||||
<set name="rideState" val="NONE" />
|
||||
<set name="targetType" val="ONE" />
|
||||
|
191
trunk/dist/game/data/stats/skills/22100-22199.xml
vendored
191
trunk/dist/game/data/stats/skills/22100-22199.xml
vendored
@@ -1688,85 +1688,220 @@
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22191" levels="1" name="Transformation Scroll: Onyx Beast">
|
||||
<skill id="22191" levels="1" name="Transformation Scroll - Onyx Beast Event">
|
||||
<!-- Transformed into an Onyx Beast. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21172" /> <!-- Transformation Scroll: Onyx Beast Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="1" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22192" levels="1" name="Transformation Scroll: Doom Wraith">
|
||||
<skill id="22192" levels="1" name="Transformation Scroll - Death Blader Event">
|
||||
<!-- Transformed into a Death Blader. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21173" /> <!-- Transformation Scroll: Death Blader Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="2" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22193" levels="1" name="Transformation Scroll: Grail Apostle">
|
||||
<skill id="22193" levels="1" name="Transformation Scroll - Grail Apostle Event">
|
||||
<!-- Transformed into a Grail Apostle. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21174" /> <!-- Transformation Scroll: Grail Apostle Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="202" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22194" levels="1" name="Transformation Scroll: Unicorn">
|
||||
<skill id="22194" levels="1" name="Transformation Scroll - Unicorn Event">
|
||||
<!-- Transformed into a Unicorn. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21175" /> <!-- Transformation Scroll: Unicorn Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="205" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22195" levels="1" name="Transformation Scroll: Lilim Knight">
|
||||
<skill id="22195" levels="1" name="Transformation Scroll - Lilim Knight Event">
|
||||
<!-- Transformed into a Lilim Knight. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21176" /> <!-- Transformation Scroll: Lilim Knight Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="208" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22196" levels="1" name="Transformation Scroll: Golem Guardian">
|
||||
<skill id="22196" levels="1" name="Transformation Scroll - Golem Guardian Event">
|
||||
<!-- Transformed into a Golem Guardian. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21177" /> <!-- Transformation Scroll: Golem Guardian Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="211" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22197" levels="1" name="Transformation Scroll: Inferno Drake">
|
||||
<skill id="22197" levels="1" name="Transformation Scroll - Inferno Drake Event">
|
||||
<!-- Transformed into an Inferno Drake. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21178" /> <!-- Transformation Scroll: Inferno Drake Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="214" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22198" levels="1" name="Transformation Scroll: Dragon Bomber">
|
||||
<skill id="22198" levels="1" name="Transformation Scroll - Dragon Bomber Event">
|
||||
<!-- Transformed into a Dragon Bomber. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21179" /> <!-- Transformation Scroll: Dragon Bomber Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="217" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22199" levels="1" name="Transformation Scroll: Heretic">
|
||||
<skill id="22199" levels="1" name="Transformation Scroll - Heretic Event">
|
||||
<!-- Transformed into a Heretic. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21180" /> <!-- Transformation Scroll: Heretic Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="3" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
</list>
|
||||
</list>
|
||||
|
235
trunk/dist/game/data/stats/skills/22200-22299.xml
vendored
235
trunk/dist/game/data/stats/skills/22200-22299.xml
vendored
@@ -1,103 +1,268 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/skills.xsd">
|
||||
<skill id="22200" levels="1" name="Transformation Scroll: Veil Master">
|
||||
<skill id="22200" levels="1" name="Transformation Scroll - Veil Master Event">
|
||||
<!-- Transformed into a Veil Master. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21181" /> <!-- Transformation Scroll: Veil Master Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="4" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22201" levels="1" name="Transformation Scroll: Saber Tooth Tiger">
|
||||
<skill id="22201" levels="1" name="Transformation Scroll - Saber Tooth Tiger Event">
|
||||
<!-- Transformed into a Saber Tooth Tiger. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21182" /> <!-- Transformation Scroll: Saber Tooth Tiger Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="5" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22202" levels="1" name="Transformation Scroll: Oel Mahum">
|
||||
<skill id="22202" levels="1" name="Transformation Scroll - Ol Mahum Event">
|
||||
<!-- Transformed into an Ol Mahum. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21183" /> <!-- Transformation Scroll: Ol Mahum Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="6" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22203" levels="1" name="Transformation Scroll: Doll Blader">
|
||||
<skill id="22203" levels="1" name="Transformation Scroll - Doll Blader Event">
|
||||
<!-- Transformed into a Doll Blader. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21184" /> <!-- Transformation Scroll: Doll Blader Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="7" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22204" levels="1" name="Transformation Scroll: Zaken">
|
||||
<skill id="22204" levels="1" name="Transformation Scroll - Zaken Event">
|
||||
<!-- Transformed into Zaken. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21185" /> <!-- Transformation Scroll: Zaken Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="305" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22205" levels="1" name="Transformation Scroll: Anakim">
|
||||
<skill id="22205" levels="1" name="Transformation Scroll - Anakim Event">
|
||||
<!-- Transformed into Anakim. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21186" /> <!-- Transformation Scroll: Anakim Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="306" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22206" levels="1" name="Transformation Scroll: Venom">
|
||||
<skill id="22206" levels="1" name="Transformation Scroll - Venom Event">
|
||||
<!-- Transformed into Venom. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21187" /> <!-- Transformation Scroll: Venom Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="307" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22207" levels="1" name="Transformation Scroll: Gordon">
|
||||
<skill id="22207" levels="1" name="Transformation Scroll - Gordon Event">
|
||||
<!-- Transformed into Gordon. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21188" /> <!-- Transformation Scroll: Gordon Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="308" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22208" levels="1" name="Transformation Scroll: Ranku">
|
||||
<skill id="22208" levels="1" name="Transformation Scroll - Ranku Event">
|
||||
<!-- Transformed into Ranku. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21189" /> <!-- Transformation Scroll: Ranku Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="309" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22209" levels="1" name="Transformation Scroll: Kechi">
|
||||
<!-- Transformed into Kietch. -->
|
||||
<skill id="22209" levels="1" name="Transformation Scroll - Kechi Event">
|
||||
<!-- Transformed into Kechi. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21190" /> <!-- Transformation Scroll: Kechi Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="310" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22210" levels="1" name="Transformation Scroll: Demon Prince">
|
||||
<!-- Transformed into Duke Devil. -->
|
||||
<skill id="22210" levels="1" name="Transformation Scroll - Demon Prince Event">
|
||||
<!-- Transformed into Demon Prince. -->
|
||||
<set name="abnormalLvl" val="1" />
|
||||
<set name="abnormalTime" val="1800" />
|
||||
<set name="abnormalType" val="TRANSFORM" />
|
||||
<set name="blockedInOlympiad" val="true" />
|
||||
<set name="effectPoint" val="1" />
|
||||
<set name="icon" val="icon.skilltransform1" />
|
||||
<set name="operateType" val="PASSIVE" />
|
||||
<set name="targetType" val="NONE" />
|
||||
<set name="isMagic" val="2" /> <!-- Static Skill -->
|
||||
<set name="itemConsumeCount" val="1" />
|
||||
<set name="itemConsumeId" val="21191" /> <!-- Transformation Scroll: Demon Prince Event -->
|
||||
<set name="magicLvl" val="-1" />
|
||||
<set name="operateType" val="ACTIVE_CONTINUOUS" />
|
||||
<set name="reuseDelay" val="14400000" />
|
||||
<set name="targetType" val="SELF" />
|
||||
<cond>
|
||||
<player canTransform="true" />
|
||||
</cond>
|
||||
<for>
|
||||
<effect name="Transformation">
|
||||
<param id="311" />
|
||||
</effect>
|
||||
</for>
|
||||
</skill>
|
||||
<skill id="22211" levels="1" name="Blessed Scroll of Escape">
|
||||
<!-- none -->
|
||||
|
2
trunk/dist/game/data/xsd/instance.xsd
vendored
2
trunk/dist/game/data/xsd/instance.xsd
vendored
@@ -158,6 +158,8 @@
|
||||
<xs:attribute name="x" type="xs:integer" use="required" />
|
||||
<xs:attribute name="y" type="xs:integer" use="required" />
|
||||
<xs:attribute name="z" type="xs:integer" use="required" />
|
||||
<xs:attribute name="areaName" type="xs:normalizedString" />
|
||||
<xs:attribute name="globalMapId" type="xs:positiveInteger" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
|
@@ -30,7 +30,6 @@ import com.l2jserver.gameserver.data.xml.impl.DoorData;
|
||||
import com.l2jserver.gameserver.model.L2Object;
|
||||
import com.l2jserver.gameserver.model.L2World;
|
||||
import com.l2jserver.gameserver.model.Location;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
|
||||
import com.l2jserver.gameserver.model.interfaces.ILocational;
|
||||
import com.l2jserver.gameserver.util.GeoUtils;
|
||||
import com.l2jserver.gameserver.util.LinePointIterator;
|
||||
@@ -223,7 +222,11 @@ public class GeoData
|
||||
*/
|
||||
public boolean canSeeTarget(L2Object cha, L2Object target)
|
||||
{
|
||||
if (target instanceof L2DoorInstance)
|
||||
if (target == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (target.isDoor())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@@ -1076,7 +1076,31 @@ public class L2CharacterAI extends AbstractAI
|
||||
offset += ((L2Character) target).getTemplate().getCollisionRadius();
|
||||
}
|
||||
|
||||
if (!_actor.isInsideRadius(target, offset, false, false))
|
||||
final boolean needToMove;
|
||||
|
||||
if (target.isDoor())
|
||||
{
|
||||
L2DoorInstance dor = (L2DoorInstance) target;
|
||||
int xPoint = 0;
|
||||
int yPoint = 0;
|
||||
for (int i : dor.getTemplate().getNodeX())
|
||||
{
|
||||
xPoint += i;
|
||||
}
|
||||
for (int i : dor.getTemplate().getNodeY())
|
||||
{
|
||||
yPoint += i;
|
||||
}
|
||||
xPoint /= 4;
|
||||
yPoint /= 4;
|
||||
needToMove = !_actor.isInsideRadius(xPoint, yPoint, dor.getTemplate().getNodeZ(), offset, false, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
needToMove = !_actor.isInsideRadius(target, offset, false, false);
|
||||
}
|
||||
|
||||
if (needToMove)
|
||||
{
|
||||
// Caller should be L2Playable and thinkAttack/thinkCast/thinkInteract/thinkPickUp
|
||||
if (getFollowTarget() != null)
|
||||
|
@@ -86,6 +86,8 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
|
||||
private final Deque<L2Npc> _spawnedNpcs = new ConcurrentLinkedDeque<>();
|
||||
private Map<Integer, Location> _lastSpawnPoints;
|
||||
private boolean _isNoRndWalk = false; // Is no random walk
|
||||
private String _areaName;
|
||||
private int _globalMapId;
|
||||
|
||||
/** The task launching the function doSpawn() */
|
||||
class SpawnTask implements Runnable
|
||||
@@ -305,7 +307,6 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
|
||||
public void setXYZ(ILocational loc)
|
||||
{
|
||||
setXYZ(loc.getX(), loc.getY(), loc.getZ());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -830,12 +831,6 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
|
||||
_location.setInstanceId(instanceId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "L2Spawn ID: " + getId() + " " + getLocation();
|
||||
}
|
||||
|
||||
public final boolean isNoRndWalk()
|
||||
{
|
||||
return _isNoRndWalk;
|
||||
@@ -845,4 +840,30 @@ public class L2Spawn implements IPositionable, IIdentifiable, INamable
|
||||
{
|
||||
_isNoRndWalk = value;
|
||||
}
|
||||
|
||||
public String getAreaName()
|
||||
{
|
||||
return _areaName;
|
||||
}
|
||||
|
||||
public void setAreaName(String areaName)
|
||||
{
|
||||
_areaName = areaName;
|
||||
}
|
||||
|
||||
public int getGlobalMapId()
|
||||
{
|
||||
return _globalMapId;
|
||||
}
|
||||
|
||||
public void setGlobalMapId(int globalMapId)
|
||||
{
|
||||
_globalMapId = globalMapId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "L2Spawn ID: " + getId() + " " + getLocation();
|
||||
}
|
||||
}
|
||||
|
@@ -53,6 +53,7 @@ import com.l2jserver.gameserver.data.xml.impl.CategoryData;
|
||||
import com.l2jserver.gameserver.data.xml.impl.DoorData;
|
||||
import com.l2jserver.gameserver.datatables.ItemTable;
|
||||
import com.l2jserver.gameserver.enums.CategoryType;
|
||||
import com.l2jserver.gameserver.enums.ChatType;
|
||||
import com.l2jserver.gameserver.enums.InstanceType;
|
||||
import com.l2jserver.gameserver.enums.Race;
|
||||
import com.l2jserver.gameserver.enums.ShotType;
|
||||
@@ -134,6 +135,7 @@ import com.l2jserver.gameserver.model.stats.Formulas;
|
||||
import com.l2jserver.gameserver.model.stats.Stats;
|
||||
import com.l2jserver.gameserver.model.stats.functions.AbstractFunction;
|
||||
import com.l2jserver.gameserver.model.zone.ZoneId;
|
||||
import com.l2jserver.gameserver.network.NpcStringId;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
|
||||
import com.l2jserver.gameserver.network.serverpackets.Attack;
|
||||
@@ -149,6 +151,7 @@ import com.l2jserver.gameserver.network.serverpackets.MagicSkillLaunched;
|
||||
import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
|
||||
import com.l2jserver.gameserver.network.serverpackets.MoveToLocation;
|
||||
import com.l2jserver.gameserver.network.serverpackets.NpcInfo;
|
||||
import com.l2jserver.gameserver.network.serverpackets.NpcSay;
|
||||
import com.l2jserver.gameserver.network.serverpackets.Revive;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ServerObjectInfo;
|
||||
import com.l2jserver.gameserver.network.serverpackets.SetupGauge;
|
||||
@@ -1404,12 +1407,12 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
|
||||
|
||||
for (L2Object obj : objs)
|
||||
{
|
||||
if (obj == target)
|
||||
if ((obj == target) || (obj == null))
|
||||
{
|
||||
continue; // do not hit twice
|
||||
}
|
||||
// Check if the L2Object is a L2Character
|
||||
if (obj instanceof L2Character)
|
||||
if (obj.isCharacter())
|
||||
{
|
||||
if (obj.isPet() && isPlayer() && (((L2PetInstance) obj).getOwner() == getActingPlayer()))
|
||||
{
|
||||
@@ -5386,7 +5389,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
|
||||
if (cancelEffect || oldSkill.isToggle() || oldSkill.isPassive())
|
||||
{
|
||||
removeStatsOwner(oldSkill);
|
||||
stopSkillEffects(true, oldSkill.getId());
|
||||
stopSkillEffects(false, oldSkill.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7059,6 +7062,42 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a normal message to all L2PcInstance in the known list.<br>
|
||||
* @param msg String with message
|
||||
*/
|
||||
public void say(String msg)
|
||||
{
|
||||
broadcastPacket(new NpcSay(getObjectId(), ChatType.NPC_GENERAL, getId(), msg));
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a client message to all L2PcInstance in the known list.<br>
|
||||
* @param msg NpcString from client
|
||||
*/
|
||||
public void say(NpcStringId msg)
|
||||
{
|
||||
broadcastPacket(new NpcSay(getObjectId(), ChatType.NPC_GENERAL, getId(), msg));
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a shout message (orange chat) to all L2PcInstance in the known list.<br>
|
||||
* @param msg String with message
|
||||
*/
|
||||
public void shout(String msg)
|
||||
{
|
||||
broadcastPacket(new NpcSay(getObjectId(), ChatType.NPC_SHOUT, getId(), msg));
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a shout message (orange chat) to all L2PcInstance in the known list.<br>
|
||||
* @param msg NpcString from client
|
||||
*/
|
||||
public void shout(NpcStringId msg)
|
||||
{
|
||||
broadcastPacket(new NpcSay(getObjectId(), ChatType.NPC_SHOUT, getId(), msg));
|
||||
}
|
||||
|
||||
public int getMinShopDistance()
|
||||
{
|
||||
return 0;
|
||||
|
@@ -1471,17 +1471,21 @@ public final class L2PcInstance extends L2Playable
|
||||
}
|
||||
|
||||
/**
|
||||
* @return a table containing all Quest in progress from the table _quests.
|
||||
* Gets all the active quests.
|
||||
* @return a list of active quests
|
||||
*/
|
||||
|
||||
public List<Quest> getAllActiveQuests()
|
||||
{
|
||||
List<Quest> quests = new ArrayList<>();
|
||||
final List<Quest> quests = new LinkedList<>();
|
||||
for (QuestState qs : _quests.values())
|
||||
{
|
||||
if ((qs == null) || (qs.getQuest() == null) || (!qs.isStarted() && !Config.DEVELOPER))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Ignore other scripts.
|
||||
final int questId = qs.getQuest().getId();
|
||||
if ((questId > 19999) || (questId < 1))
|
||||
{
|
||||
@@ -1494,13 +1498,15 @@ public final class L2PcInstance extends L2Playable
|
||||
|
||||
public List<Quest> getAllCompletedQuests()
|
||||
{
|
||||
List<Quest> quests = new ArrayList<>();
|
||||
final List<Quest> quests = new LinkedList<>();
|
||||
for (QuestState qs : _quests.values())
|
||||
{
|
||||
if ((qs == null) || (qs.getQuest() == null) || (!qs.isCompleted()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Ignore other scripts.
|
||||
final int questId = qs.getQuest().getId();
|
||||
if ((questId > 19999) || (questId < 1))
|
||||
{
|
||||
|
@@ -510,6 +510,12 @@ public class L2ServitorInstance extends L2Summon implements Runnable
|
||||
return (int) (super.getMaxHp() + (getActingPlayer().getMaxHp() * (getActingPlayer().getServitorShareBonus(Stats.MAX_HP) - 1.0)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxMp()
|
||||
{
|
||||
return (int) (super.getMaxMp() + (getActingPlayer().getMaxMp() * (getActingPlayer().getServitorShareBonus(Stats.MAX_MP) - 1.0)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCriticalHit(L2Character target, Skill skill)
|
||||
{
|
||||
@@ -521,4 +527,16 @@ public class L2ServitorInstance extends L2Summon implements Runnable
|
||||
{
|
||||
return super.getPAtkSpd() + (getActingPlayer().getPAtkSpd() * (getActingPlayer().getServitorShareBonus(Stats.POWER_ATTACK_SPEED) - 1.0));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxRecoverableHp()
|
||||
{
|
||||
return (int) calcStat(Stats.MAX_RECOVERABLE_HP, getMaxHp());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxRecoverableMp()
|
||||
{
|
||||
return (int) calcStat(Stats.MAX_RECOVERABLE_MP, getMaxMp());
|
||||
}
|
||||
}
|
||||
|
@@ -28,7 +28,6 @@ import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||
import com.l2jserver.gameserver.model.actor.L2Character;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.actor.stat.CharStat;
|
||||
import com.l2jserver.gameserver.model.stats.Formulas;
|
||||
import com.l2jserver.util.Rnd;
|
||||
|
||||
@@ -270,7 +269,7 @@ public class CharStatus
|
||||
{
|
||||
// Get the Max HP of the L2Character
|
||||
int currentHp = (int) getCurrentHp();
|
||||
final double maxHp = getActiveChar().getStat().getMaxHp();
|
||||
final double maxHp = getActiveChar().getMaxHp();
|
||||
|
||||
synchronized (this)
|
||||
{
|
||||
@@ -343,7 +342,7 @@ public class CharStatus
|
||||
{
|
||||
// Get the Max MP of the L2Character
|
||||
int currentMp = (int) getCurrentMp();
|
||||
final int maxMp = getActiveChar().getStat().getMaxMp();
|
||||
final int maxMp = getActiveChar().getMaxMp();
|
||||
|
||||
synchronized (this)
|
||||
{
|
||||
@@ -388,32 +387,26 @@ public class CharStatus
|
||||
|
||||
protected void doRegeneration()
|
||||
{
|
||||
final CharStat charstat = getActiveChar().getStat();
|
||||
|
||||
// Modify the current HP of the L2Character and broadcast Server->Client packet StatusUpdate
|
||||
if (getCurrentHp() < charstat.getMaxRecoverableHp())
|
||||
if (getCurrentHp() < getActiveChar().getMaxRecoverableHp())
|
||||
{
|
||||
setCurrentHp(getCurrentHp() + Formulas.calcHpRegen(getActiveChar()), false);
|
||||
}
|
||||
|
||||
// Modify the current MP of the L2Character and broadcast Server->Client packet StatusUpdate
|
||||
if (getCurrentMp() < charstat.getMaxRecoverableMp())
|
||||
if (getCurrentMp() < getActiveChar().getMaxRecoverableMp())
|
||||
{
|
||||
setCurrentMp(getCurrentMp() + Formulas.calcMpRegen(getActiveChar()), false);
|
||||
}
|
||||
|
||||
if (!getActiveChar().isInActiveRegion())
|
||||
if ((getCurrentHp() >= getActiveChar().getMaxRecoverableHp()) && (getCurrentMp() >= getActiveChar().getMaxMp()))
|
||||
{
|
||||
// no broadcast necessary for characters that are in inactive regions.
|
||||
// stop regeneration for characters who are filled up and in an inactive region.
|
||||
if ((getCurrentHp() == charstat.getMaxRecoverableHp()) && (getCurrentMp() == charstat.getMaxMp()))
|
||||
{
|
||||
stopHpMpRegeneration();
|
||||
}
|
||||
stopHpMpRegeneration();
|
||||
}
|
||||
else
|
||||
|
||||
if (getActiveChar().isInActiveRegion())
|
||||
{
|
||||
getActiveChar().broadcastStatusUpdate(); // send the StatusUpdate packet
|
||||
getActiveChar().broadcastStatusUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -591,26 +591,46 @@ public final class Instance
|
||||
{
|
||||
int npcId = 0, x = 0, y = 0, z = 0, heading = 0, respawn = 0, respawnRandom = 0, delay = -1;
|
||||
Boolean allowRandomWalk = null;
|
||||
String areaName = null;
|
||||
int globalMapId = 0;
|
||||
|
||||
if ("spawn".equalsIgnoreCase(d.getNodeName()))
|
||||
{
|
||||
|
||||
npcId = Integer.parseInt(d.getAttributes().getNamedItem("npcId").getNodeValue());
|
||||
x = Integer.parseInt(d.getAttributes().getNamedItem("x").getNodeValue());
|
||||
y = Integer.parseInt(d.getAttributes().getNamedItem("y").getNodeValue());
|
||||
z = Integer.parseInt(d.getAttributes().getNamedItem("z").getNodeValue());
|
||||
heading = Integer.parseInt(d.getAttributes().getNamedItem("heading").getNodeValue());
|
||||
respawn = Integer.parseInt(d.getAttributes().getNamedItem("respawn").getNodeValue());
|
||||
if (d.getAttributes().getNamedItem("onKillDelay") != null)
|
||||
|
||||
Node node = d.getAttributes().getNamedItem("onKillDelay");
|
||||
if (node != null)
|
||||
{
|
||||
delay = Integer.parseInt(d.getAttributes().getNamedItem("onKillDelay").getNodeValue());
|
||||
delay = Integer.parseInt(node.getNodeValue());
|
||||
}
|
||||
if (d.getAttributes().getNamedItem("respawnRandom") != null)
|
||||
|
||||
node = d.getAttributes().getNamedItem("respawnRandom");
|
||||
if (node != null)
|
||||
{
|
||||
respawnRandom = Integer.parseInt(d.getAttributes().getNamedItem("respawnRandom").getNodeValue());
|
||||
respawnRandom = Integer.parseInt(node.getNodeValue());
|
||||
}
|
||||
|
||||
node = d.getAttributes().getNamedItem("allowRandomWalk");
|
||||
if (d.getAttributes().getNamedItem("allowRandomWalk") != null)
|
||||
{
|
||||
allowRandomWalk = Boolean.valueOf(d.getAttributes().getNamedItem("allowRandomWalk").getNodeValue());
|
||||
allowRandomWalk = Boolean.valueOf(node.getNodeValue());
|
||||
}
|
||||
|
||||
node = d.getAttributes().getNamedItem("areaName");
|
||||
if (d.getAttributes().getNamedItem("areaName") != null)
|
||||
{
|
||||
areaName = node.getNodeValue();
|
||||
}
|
||||
|
||||
node = d.getAttributes().getNamedItem("globalMapId");
|
||||
if (node != null)
|
||||
{
|
||||
globalMapId = Integer.parseInt(node.getNodeValue());
|
||||
}
|
||||
|
||||
final L2Spawn spawnDat = new L2Spawn(npcId);
|
||||
@@ -637,9 +657,13 @@ public final class Instance
|
||||
{
|
||||
spawnDat.setIsNoRndWalk(!allowRandomWalk);
|
||||
}
|
||||
|
||||
spawnDat.setAreaName(areaName);
|
||||
spawnDat.setGlobalMapId(globalMapId);
|
||||
|
||||
if (spawnGroup.equals("general"))
|
||||
{
|
||||
L2Npc spawned = spawnDat.doSpawn();
|
||||
final L2Npc spawned = spawnDat.doSpawn();
|
||||
if ((delay >= 0) && (spawned instanceof L2Attackable))
|
||||
{
|
||||
((L2Attackable) spawned).setOnKillDelay(delay);
|
||||
@@ -651,6 +675,7 @@ public final class Instance
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!manualSpawn.isEmpty())
|
||||
{
|
||||
_manualSpawn.put(spawnGroup, manualSpawn);
|
||||
|
@@ -374,6 +374,7 @@ public abstract class Inventory extends ItemContainer
|
||||
item.getAugmentation().removeBonus(player);
|
||||
}
|
||||
|
||||
item.unChargeAllShots();
|
||||
item.removeElementAttrBonus(player);
|
||||
|
||||
// Remove skills bestowed from +4 armor
|
||||
@@ -502,7 +503,7 @@ public abstract class Inventory extends ItemContainer
|
||||
{
|
||||
item.getAugmentation().applyBonus(player);
|
||||
}
|
||||
|
||||
item.rechargeShots(true, true);
|
||||
item.updateElementAttrBonus(player);
|
||||
|
||||
// Add skills bestowed from +4 armor
|
||||
|
@@ -1759,7 +1759,7 @@ public class Quest extends AbstractScript implements IIdentifiable
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_log.log(Level.WARNING, "could not delete char quest:", e);
|
||||
_log.log(Level.WARNING, "Unable to delete char quest!", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -29,7 +29,6 @@ import com.l2jserver.gameserver.model.quest.QuestState;
|
||||
*/
|
||||
public class GmViewQuestInfo extends L2GameServerPacket
|
||||
{
|
||||
|
||||
private final L2PcInstance _activeChar;
|
||||
|
||||
public GmViewQuestInfo(L2PcInstance cha)
|
||||
@@ -43,18 +42,31 @@ public class GmViewQuestInfo extends L2GameServerPacket
|
||||
writeC(0x99);
|
||||
writeS(_activeChar.getName());
|
||||
|
||||
List<Quest> questList = _activeChar.getAllActiveQuests();
|
||||
final List<Quest> questList = _activeChar.getAllActiveQuests();
|
||||
|
||||
if (questList.size() == 0)
|
||||
{
|
||||
writeC(0);
|
||||
writeH(0);
|
||||
writeH(0);
|
||||
return;
|
||||
}
|
||||
|
||||
writeH(questList.size()); // quest count
|
||||
|
||||
for (Quest q : questList)
|
||||
{
|
||||
final QuestState qs = _activeChar.getQuestState(q.getName());
|
||||
|
||||
writeD(q.getId());
|
||||
writeD(qs == null ? 0 : qs.getInt("cond"));
|
||||
|
||||
QuestState qs = _activeChar.getQuestState(q.getName());
|
||||
|
||||
if (qs == null)
|
||||
{
|
||||
writeD(0);
|
||||
continue;
|
||||
}
|
||||
|
||||
writeD(qs.getInt("cond")); // stage of quest progress
|
||||
}
|
||||
writeH(0x00); // some size
|
||||
// for size; ddQQ
|
||||
}
|
||||
}
|
||||
|
@@ -84,34 +84,26 @@ public class QuestList extends L2GameServerPacket
|
||||
*/
|
||||
|
||||
writeC(0x86);
|
||||
if (_activeQuests != null)
|
||||
writeH(_activeQuests.size());
|
||||
for (Quest q : _activeQuests)
|
||||
{
|
||||
writeH(_activeQuests.size());
|
||||
for (Quest q : _activeQuests)
|
||||
writeD(q.getId());
|
||||
QuestState qs = _activeChar.getQuestState(q.getName());
|
||||
if (qs == null)
|
||||
{
|
||||
writeD(q.getId());
|
||||
QuestState qs = _activeChar.getQuestState(q.getName());
|
||||
if (qs == null)
|
||||
{
|
||||
writeD(0);
|
||||
continue;
|
||||
}
|
||||
|
||||
int states = qs.getInt("__compltdStateFlags");
|
||||
if (states != 0)
|
||||
{
|
||||
writeD(states);
|
||||
}
|
||||
else
|
||||
{
|
||||
writeD(qs.getInt("cond"));
|
||||
}
|
||||
writeD(0);
|
||||
continue;
|
||||
}
|
||||
|
||||
int states = qs.getInt("__compltdStateFlags");
|
||||
if (states != 0)
|
||||
{
|
||||
writeD(states);
|
||||
}
|
||||
else
|
||||
{
|
||||
writeD(qs.getInt("cond"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// write empty size
|
||||
writeH(0x00);
|
||||
}
|
||||
|
||||
for (Quest q : _completedQuests)
|
||||
|
Reference in New Issue
Block a user