Adjustments for luxury shop and pet manager NPCs.

This commit is contained in:
MobiusDevelopment 2022-05-04 21:36:43 +00:00
parent 5103871cce
commit bc2b11ca49
46 changed files with 496 additions and 909 deletions

View File

@ -373,10 +373,6 @@ AllowRace = True
# Default: True
AllowWater = True
# Enable pets for rent (wyvern & strider) from pet managers.
# Default: False
AllowRentPet = False
# Default: True
AllowFishing = True

View File

@ -150,11 +150,6 @@ EnableGuardReturn = True
# Default: False
AllowWyvernUpgrader = False
# Pets that can be rented.
# Example: 30827, 32471, 34486, 36547
# Default: 30827
ListPetRentNpc = 30827
# This will control the inventory space limit for pets (NOT WEIGHT LIMIT).
# Default: 12
MaximumSlotsForPet = 12

View File

@ -0,0 +1,3 @@
<html><body>Trader Galladucci:<br>
I tell you, I can see you're up to no good. Get out of my sight, I tell you.
</body></html>

View File

@ -1,7 +1,7 @@
<html><body>Trader Galladuchi:<br>
To be a legendary warrior, you need a one-of-a-kind weapon, the sort of thing bards will sing about for generations!<br>
We can provide you that, but I'm sorry to say that we cannot accept Adena as payment. We only accept <font color="LEVEL">crystals</font>.<br>
If you require new armor or other rare items, please speak with my wife.<br>
<a action="bypass -h npc_%objectId%_multisell 300974001">Purchase weapons.</a><br>
<html><body>Trader Galladucci:<br>
Our high-end shop has opened again and there are many precious weapons. I hope you find something you like.<br>
I'm sorry but we don't accept adena anymore, only <font color="LEVEL">crystals.</font> I hope that's not too inconvenient.<br>
If you're looking for armor, just ask my wife next to me.<br>
<a action="bypass -h npc_%objectId%_multisell 300974001">Buy weapon.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Trader Alexandria:<br>
Look here, just who do you think you are, daring to come into this place? If you don't leave at once, I will call the guards.
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>Trader Alexandria:<br>
Greetings! Welcome to our luxury shop! Here you will find rare and precious items. Feel free to look around and pick out what you like.<br>
Remember, we only accept <font color="LEVEL">crystals</font> as payment.<br>
If you wish to buy a weapon, my husband will help you.<br>
<a action="bypass -h npc_%objectId%_multisell 300984001">Buy armor.</a><br>
<a action="bypass -h npc_%objectId%_multisell 300984002">Buy miscellaneous goods.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>

View File

@ -1,11 +1,10 @@
<html><body>Pet Manager Martin:<br>
Glad to see you! I love pets so much that I became a pet manager. What can I do for you?<br>
<a action="bypass -h npc_%objectId%_Link petmanager/instructions.htm">Listen to instructions for raising a pet.</a><br>
<a action="bypass -h npc_%objectId%_Buy 3073100">Buy pet equipment.</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Exchange pet equipment for higher grade equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange Hatchling equipment for Strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/evolve.htm">Evolve pet.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/exchange.htm">Exchange pet exchange ticket for a pet.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">View information about the local lord and tax rate.</a><br>
Nice to meet you! My name is Martin. I became a pet manager because of my big love for animals. So, what brings you here to me?<br>
<a action="bypass -h npc_%objectId%_Buy 3073100">Buy a pet product</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Upgrade Pet Equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange the hatchling equipment with the strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 101">Exchange the pet trade ticket with a pet.</a><br>
<a action="bypass -h npc_%objectId%_Sell">Sell your item.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">See the lord and get the tax rate information.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>

View File

@ -1,11 +1,10 @@
<html><body>Pet Manager Lundy:<br>
Pets are precious followers and friends for us adventurers. Any adventurer who has spent a night with a pet out in the wilderness knows what I mean.<br>
<a action="bypass -h npc_%objectId%_Link petmanager/instructions.htm">Listen to instructions for raising a pet.</a><br>
<a action="bypass -h npc_%objectId%_Buy 3082700">Buy pet equipment.</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Exchange pet equipment for higher grade equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange Hatchling equipment for Strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/evolve.htm">Evolve pet.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/exchange.htm">Exchange pet exchange ticket for a pet.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">View information about the local lord and tax rate.</a><br>
Pets are indispensable companions of adventurers. Anyone who has spent the night in the wilderness with their pet will know what I mean.<br>
<a action="bypass -h npc_%objectId%_Buy 3082700">Buy a pet product</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Upgrade Pet Equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange the hatchling equipment with the strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 101">Exchange the pet trade ticket with a pet.</a><br>
<a action="bypass -h npc_%objectId%_Sell">Sell your item.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">See the lord and get the tax rate information.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>

View File

@ -1,11 +1,10 @@
<html><body>Pet Manager Waters:<br>
Here, try this delicious new Wolf food. With this, even a Turek War Hound will go down in one bite! And here are the Steel Teeth that a Dwarven knife sharpener spent weeks making. Ah, and see these new Hatchling items! Look around -- a good pet owner always comes to the Dion Pet Center!<br>
<a action="bypass -h npc_%objectId%_Link petmanager/instructions.htm">Listen to instructions for raising a pet.</a><br>
<a action="bypass -h npc_%objectId%_Buy 3082800">Buy pet equipment.</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Exchange pet equipment for higher grade equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange Hatchling equipment for Strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/evolve.htm">Evolve pet.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/exchange.htm">Exchange pet exchange ticket for a pet.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">View information about the local lord and tax rate.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest.</a>
We've got a special food that wolves absolutely love. If you feed this to your wolf, it will tear even a turek war hound to shreds! We also have Steel teeth made by Dwarven hooligans! And hatchling products! Feel free to look around! Good owners always come to this Pet Kennel of Dion Castle Town.<br>
<a action="bypass -h npc_%objectId%_Buy 3082800">Buy a pet product</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Upgrade Pet Equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange the hatchling equipment with the strider equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 101">Exchange the pet trade ticket with a pet</a><br>
<a action="bypass -h npc_%objectId%_Sell">Sell your item</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">See the lord and get the tax rate information</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>

View File

@ -1,11 +1,10 @@
<html><body>Pet Manager Cooper:<br>
Welcome to Giran Castle Town Pet Center. To be honest, this kind of busy environment isn't particularly good for the pets. I'm thinking about moving one day to a nice quiet place on the village outskirts.<br>
<a action="bypass -h npc_%objectId%_Link petmanager/instructions.htm">Listen to instructions for raising a pet.</a><br>
<a action="bypass -h npc_%objectId%_Buy 3082900">Buy pet equipment.</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Exchange pet equipment for higher grade equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange Hatchling equipment for Strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/evolve.htm">Evolve pet.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/exchange.htm">Exchange pet exchange ticket for a pet.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">View information about the local lord and tax rate.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest.</a>
Welcome to the Pet Kennel of Giran Castle Town. This location is good for business but bad for the pets. I hope to move the shop to a quieter location in the country sometime in the future.<br>
<a action="bypass -h npc_%objectId%_Buy 3082900">Buy a pet product</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Upgrade Pet Equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange the hatchling equipment with the strider equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 101">Exchange the pet trade ticket with a pet</a><br>
<a action="bypass -h npc_%objectId%_Sell">Sell your item</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">See the lord and get the tax rate information</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>

View File

@ -1,11 +1,10 @@
<html><body>Pet Manager Joa:<br>
The most important thing to preserve your pet's health is love. For a loving master, a pet will carry immense burdens, fight ferociously and prove its loyalty in a thousand ways...<br>
<a action="bypass -h npc_%objectId%_Link petmanager/instructions.htm">Listen to instructions for raising a pet.</a><br>
<a action="bypass -h npc_%objectId%_Buy 3083000">Buy pet equipment.</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Exchange pet equipment for higher grade equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange Hatchling equipment for Strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/evolve.htm">Evolve pet.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/exchange.htm">Exchange pet exchange ticket for a pet.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">View information about the local lord and tax rate.</a><br>
<html><body>Pet Manager Joey:<br>
Raising your pet with love and affection will result in its undying loyalty and devotion.<br>
<a action="bypass -h npc_%objectId%_Buy 3083000">Buy a pet product</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Upgrade Pet Equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange the hatchling equipment with the strider equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 101">Exchange the pet trade ticket with a pet</a><br>
<a action="bypass -h npc_%objectId%_Sell">Sell your item</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">See the lord and get the tax rate information</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>

View File

@ -1,11 +1,10 @@
<html><body>Pet Manager Nelson:<br>
I heard it was popular to raise pets these days, and it sure seems that Pet Centers are opening up in the larger towns. Our Hunters Village is no exception -- it may be small, but how can you talk about anything related to animals without thinking of this place?<br>
<a action="bypass -h npc_%objectId%_Link petmanager/instructions.htm">Listen to instructions for raising a pet.</a><br>
<a action="bypass -h npc_%objectId%_Buy 3083100">Buy pet equipment.</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Exchange pet equipment for higher grade equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange Hatchling equipment for Strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/evolve.htm">Evolve pet.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/exchange.htm">Exchange pet exchange ticket for a pet.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">View information about the local lord and tax rate.</a><br>
Pet ownership is definitely on the increase. Kennels are opening in every large town. Hunters Village is no exception. Even though this is a relatively small town, there are many pets to choose from here.<br>
<a action="bypass -h npc_%objectId%_Buy 3083100">Buy a pet product</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Upgrade Pet Equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange the hatchling equipment with the strider equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 101">Exchange the pet trade ticket with a pet</a><br>
<a action="bypass -h npc_%objectId%_Sell">Sell your item</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">See the lord and get the tax rate information</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>

View File

@ -1,11 +1,10 @@
<html><body>Pet Manager Ramper:<br>
Hmm... Recently I heard a rumor that some group is organizing in order to collect Drake and Wyrm eggs. Tsk! Sure, Hatchlings are fine pets, but it's a different story they become Striders. Only one thing that I can think of that makes sense: somebody is trying to create a cavalry unit composed of Striders!<br>
<a action="bypass -h npc_%objectId%_Link petmanager/instructions.htm">Listen to instructions for raising a pet.</a><br>
<a action="bypass -h npc_%objectId%_Buy 3086900">Buy pet equipment.</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Exchange pet equipment for higher grade equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange Hatchling equipment for Strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/evolve.htm">Evolve pet.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/exchange.htm">Exchange pet exchange ticket for a pet.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">View information about the local lord and tax rate.</a><br>
<html><body>Pet Manager Lemper:<br>
This is probably just a rumor, but I've heard that someone is methodically collecting drake and wyrm eggs. Hatchlings make cute pets but that changes dramatically if they are transformed into striders. It could be disastrous if someone formed an army of striders! <br>
<a action="bypass -h npc_%objectId%_Buy 3086900">Buy Pet Supplies</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Upgrade Pet Equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange the hatchling equipment with the strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 101">Exchange the pet trade ticket with a pet.</a><br>
<a action="bypass -h npc_%objectId%_Sell">Sell your item.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">See the lord and get the tax rate information</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>

View File

@ -1,11 +1,10 @@
<html><body>Pet Manager Lude:<br>
Welcome! What are you looking for? Our Heinness Pet Center has better quality pet food and equipment than anywhere else in the land. Our business is meeting your expectations.<br>
<a action="bypass -h npc_%objectId%_Link petmanager/instructions.htm">Listen to instructions for raising a pet.</a><br>
<a action="bypass -h npc_%objectId%_Buy 3106700">Buy pet equipment.</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Exchange pet equipment for higher grade equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange Hatchling equipment for Strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/evolve.htm">Evolve pet.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/exchange.htm">Exchange pet exchange ticket for a pet.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">View information about the local lord and tax rate.</a><br>
<html><body>Pet Manager Rood:<br>
Welcome to the best pet store in Heine! Hello, my dear customer. We have the highest quality pet food and accessories in town. Can I help you?<br>
<a action="bypass -h npc_%objectId%_Buy 3106700">Buy Pet Supplies</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Upgrade Pet Equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange the hatchling equipment with the strider equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 101">Exchange the pet trade ticket with a pet</a><br>
<a action="bypass -h npc_%objectId%_Sell">Sell your item</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">See the lord and get the tax rate information</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>

View File

@ -1,12 +1,11 @@
<html><body>Pet Manager Annette:<br>
People too easily ignore the benefits Striders have provided to civilization. Think about it! Because of Striders, battle tactics for siege warfares and large-scale blood alliance wars have changed greatly. And transportation of goods between towns has become easier, helping accelerate the flow of trade.<br>
Perhaps I should write a book, eh? "The Impact of Striders on the History of the Continent." Heh!<br>
<a action="bypass -h npc_%objectId%_Link petmanager/instructions.htm">Listen to instructions for raising a pet.</a><br>
<a action="bypass -h npc_%objectId%_Buy 3126500">Buy pet equipment.</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Exchange pet equipment for higher grade equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange Hatchling equipment for Strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/evolve.htm">Evolve pet.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/exchange.htm">Exchange pet exchange ticket for a pet.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">View information about the local lord and tax rate.</a><br>
Humans are overlooking benefits that striders gave to the civilization! Think about it! Strategies at the siege or large-scaled pledge war have changed because of striders, haven't they? The trade has been also stimulated since it became easier to deliver cargos between towns.<br>
Ah, ah~! Should I write a book or something? I'll title it, "Swift Horse and History of the Continent," huh?<br>
<a action="bypass -h npc_%objectId%_Buy 3126500">Buy Pet Supplies</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Upgrade Pet Equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange the hatchling equipment with the strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 101">Exchange the pet trade ticket with a pet.</a><br>
<a action="bypass -h npc_%objectId%_Sell">Sell your item.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">See the lord and get the tax rate information.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>

View File

@ -1,12 +1,11 @@
<html><body>Pet Manager Woods:<br>
Kaiser! Come here...yes...good boy.<br>
Oh, hello. Ah, you noticed my pure-bred black-striped Alpen Cougar, eh? It is naturally a violent beast, but if you raise right from birth you can train it to be as gentle as a lamb. Just remember to feed it on time!<br>
<a action="bypass -h npc_%objectId%_Link petmanager/instructions.htm">Listen to instructions for raising a pet.</a><br>
<a action="bypass -h npc_%objectId%_Buy 3130900">Buy pet equipment.</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Exchange pet equipment for higher grade equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange Hatchling equipment for Strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/evolve.htm">Evolve pet.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/exchange.htm">Exchange pet exchange ticket for a pet.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">View information about the local lord and tax rate.</a><br>
Kaiser! Come here... So... good boy!<br>
Oh, hello? Yes, that's right... Isn't it so cute? It is the pure-bred black-striped Alpen Kuger. It is originally a violent beast, but you can raise it to become gentle like this if you trained it since it was a baby. You just need to remember feeding it on time.<br>
<a action="bypass -h npc_%objectId%_Buy 3130900">Buy Pet Supplies</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Upgrade Pet Equipment</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange the hatchling equipment with the strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 101">Exchange the pet trade ticket with a pet.</a><br>
<a action="bypass -h npc_%objectId%_Sell">Sell your item.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">See the lord and get the tax rate information.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>

View File

@ -1,12 +1,11 @@
<html><body>Pet Manager Sharoyan:<br>
Did you want a pet? Sorry, didn't mean to startle you! I just have a habit of observing my customers' expressions carefully.<br>
As the number of people who interested in raising pets increases these days, the number of people who neglect or abuse their pets is also increasing. I simply want to examine my customers carefully for the sake of the animals. Please don't take it personally.<br>
<a action="bypass -h npc_%objectId%_Link petmanager/instructions.htm">Listen to instructions for raising a pet.</a><br>
<a action="bypass -h npc_%objectId%_Buy 3195400">Buy pet equipment.</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">Exchange pet equipment for higher grade equipment.</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">Exchange Hatchling equipment for Strider equipment.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/evolve.htm">Evolve pet.</a><br>
<a action="bypass -h npc_%objectId%_Link petmanager/exchange.htm">Exchange pet exchange ticket for a pet.</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">View information about the local lord and tax rate.</a><br>
<html><body>Pet Manager Saroyan:<br>
Are you interested in a pet? Let's see... Oh, forgive my staring! Sorry. I can't resist examining my customers' faces.<br>
I know it seems peculiar... It's just that many people want pets these days, but too often these animals wind up abused or abandoned. So I must scrutinize people before I feel comfortable with selling them a pet. No offense.<br>
<a action="bypass -h npc_%objectId%_Buy 3195400">"I wish to buy a pet item."</a><br>
<a action="bypass -h npc_%objectId%_exc_multisell 1000">"I want to upgrade my pet equipment."</a><br>
<a action="bypass -h npc_%objectId%_multisell 999">"I want to exchange my Hatchling equipment for Strider equipment."</a><br>
<a action="bypass -h npc_%objectId%_multisell 101">"I want to exchange a ticket for a pet."</a><br>
<a action="bypass -h npc_%objectId%_Sell">"I want to sell an item."</a><br>
<a action="bypass -h npc_%objectId%_TerritoryStatus">"Who is the lord of the manor and what is the tax rate?"</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>

View File

@ -1,10 +0,0 @@
<html><body><br>
Depending on its type, you may be able to evolve your pet. Evolution is only possible when the pet is summoned. Also, since the process transfers the experience value, evolving a high level pet might actually result in a decrease in the pet's level.<br>
Any items in the pet's inventory will be transferred to the owner's inventory.<br>
Which pet do you want to evolve?<br>
<a action="bypass -h npc_%objectId%_evolve 1">Evolve a Wolf into a Great Wolf.</a><br>
<a action="bypass -h npc_%objectId%_evolve 2">Evolve a Great Wolf into a Fenrir.</a><br>
<a action="bypass -h npc_%objectId%_evolve 3">Evolve a Baby Buffalo into an Improved Baby Buffalo (for Warriors).</a><br>
<a action="bypass -h npc_%objectId%_evolve 4">Evolve a Baby Kookaburra into an Improved Baby Kookaburra (for Mystics).</a><br>
<a action="bypass -h npc_%objectId%_evolve 5">Evolve a Baby Cougar into an Improved Baby Cougar (for mixed professions).</a>
</body></html>

View File

@ -1,5 +0,0 @@
<html><body><br>
To evolve a pet, first summon an appropriate pet and then bring it close to me so that I can see it.<br>
If the pet is inappropriate or too far from me, we will not be successful.<br>
Remember also that the pet's level must to be above a specified minimum level.
</body></html>

View File

@ -1,6 +0,0 @@
<html><body><br>
Pet exchange tickets allow their bearer to purchase pets, such as Kookaburra, Buffaloes or Cougars. Sales of the tickets are strictly limited to members. What kind of ticket would you like?<br>
<a action="bypass -h npc_%objectId%_exchange 1">Pet Exchange Ticket: Kookaburra</a><br>
<a action="bypass -h npc_%objectId%_exchange 2">Pet Exchange Ticket: Buffalo</a><br>
<a action="bypass -h npc_%objectId%_exchange 3">Pet Exchange Ticket: Cougar</a>
</body></html>

View File

@ -1,4 +0,0 @@
<html><body><br>
I can't give you a pet unless you have the right trade ticket. Regulations are strict.<br>
How to get the ticket? Well...? I hear they basically accept members based on a large clan hall..., but there may be another way. I'm not sure.
</body></html>

View File

@ -1,8 +0,0 @@
<html><body><br>
There are a few things you should know before deciding to raise a pet. Let me tell you what they are.<br>
First, you should know how to acquire a pet's experience. A pet gains a portion of the experience that its master obtains. The specific amount will vary depending on whether the master's own level is higher or lower than the pet's level.<br>
If a pet dies, you must resurrect it within 24 hours or lose it forever. Don't waste any time!<br>
A pet needs pet food to thrive and grow. If it becomes hungry, it will not move normally.<br>
If the hunger gauge falls below 50%, the pet becomes very hungry. In this condition, its movement and attack speed will decrease. Also, a hungry pet cannot be returned to its pre-summon condition.<br>
If the hunger gauge falls to 0, the pet is starving. Should this happen, it will lose faith in you and soon leave you. Good owners don't allow their pets to starve, remember! To prevent a pet from deserting you, you must maintain its hunger gauge at a minimum of 10%.
</body></html>

View File

@ -1,3 +0,0 @@
<html><body><br>
If you can't use the recently evolved pet, I'll return it to its original state. However, to do so requires the pet's summoning item, so dismiss your pet for a moment.
</body></html>

View File

@ -1,3 +0,0 @@
<html><body><br>
You don't have any pet here that can be restored. There must be at least one evolved pet for me to be able to restore it. That makes sense, doesn't it?
</body></html>

View File

@ -1,5 +1,5 @@
<html><body>Warehouse Keeper Pochi:<br>
Welcome! Do you want to deposit some of your items? Or perhaps reclaim some of them? Well, well. Have you been to the shop near here which sells only the finest luxury goods? If you haven't yet, you should. Dwarf Galladucci, a member of my clan, runs the shop. He may seem a little eccentric, but he really has an eye for quality. Go see for yourself!<br>
Come on in. Have you come to deposit something? Or make a withdrawal? By the way, have you been to the high-end shop near here? If not, you should give it a try. It s run by a Dwarven brother of mine, named Galladucci. He's a bit of an odd ball, but he s got a good heart. You should pay him a visit. There are quite a few quality goods there.<br>
<center>
<a action="bypass -h npc_%objectId%_Chat 1">Private Warehouse</a><br>
<a action="bypass -h npc_%objectId%_Chat 2">Clan Warehouse</a><br>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/multisell.xsd">
<npcs>
<npc>30731</npc> <!-- Martin (Pet Manager) -->
<npc>30827</npc> <!-- Lundy (Pet Manager ) -->
<npc>30828</npc> <!-- Waters (Pet Manager ) -->
<npc>30829</npc> <!-- Cooper (Pet Manager ) -->
<npc>30830</npc> <!-- Joey (Pet Manager ) -->
<npc>30831</npc> <!-- Nelson (Pet Manager ) -->
<npc>30869</npc> <!-- Lemper (Pet Manager) -->
<npc>31067</npc> <!-- Rood (Pet Manager) -->
<npc>31265</npc> <!-- Annette (Pet Manager) -->
<npc>31309</npc> <!-- Woods (Pet Manager) -->
<npc>31954</npc> <!-- Saroyan (Pet Manager) -->
</npcs>
<!-- Baby cougar chime for Pet Exchange Ticket: Cougar -->
<item>
<ingredient id="7584" count="1"/>
<production id="6649" count="1"/>
</item>
<!-- Baby buffalo Panpipe for Pet Exchange Ticket: Buffalo -->
<item>
<ingredient id="7583" count="1"/>
<production id="6648" count="1"/>
</item>
<!-- Baby Kookaburra Ocarina for Pet Exchange Ticket: Kookaburra -->
<item>
<ingredient id="7585" count="1"/>
<production id="6650" count="1"/>
</item>
</list>

View File

@ -3,100 +3,94 @@
<npcs>
<npc>30097</npc> <!-- Galladucci (Weapon Merchant) -->
</npcs>
<!-- Flamberge -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="579" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="1737" id="1459" />
<!-- Great Sword -->
<production count="1" id="78" />
<ingredient id="1459" count="573"/>
<ingredient id="1458" count="2865"/>
<production id="71" count="1"/>
</item>
<!-- Stormbringer -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="579" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="1737" id="1459" />
<!-- Heavy War Axe -->
<production count="1" id="91" />
<ingredient id="1459" count="573"/>
<ingredient id="1458" count="2865"/>
<production id="72" count="1"/>
</item>
<!-- Sword of Delusion -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="579" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="1737" id="1459" />
<!-- Sprite's Staff -->
<production count="1" id="92" />
<ingredient id="1459" count="1075"/>
<ingredient id="1458" count="5375"/>
<production id="76" count="1"/>
</item>
<!-- Silver Axe -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="579" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="1737" id="1459" />
<!-- Keshanberk -->
<production count="1" id="142" />
<ingredient id="1459" count="573"/>
<ingredient id="1458" count="2865"/>
<production id="161" count="1"/>
</item>
<!-- War Axe -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="579" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="1737" id="1459" />
<!-- Sword of Valhalla -->
<production count="1" id="148" />
<ingredient id="1459" count="1075"/>
<ingredient id="1458" count="5375"/>
<production id="162" count="1"/>
</item>
<!-- Crystal Staff -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="579" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="1737" id="1459" />
<!-- Kris -->
<production count="1" id="229" />
<ingredient id="1459" count="573"/>
<ingredient id="1458" count="2865"/>
<production id="192" count="1"/>
</item>
<!-- Sages Staff -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="579" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="1737" id="1459" />
<!-- Hell Knife -->
<production count="1" id="243" />
<ingredient id="1459" count="1075"/>
<ingredient id="1458" count="5375"/>
<production id="200" count="1"/>
</item>
<!-- Cursed Dagger -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="579" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="1737" id="1459" />
<!-- Arthro Nail -->
<production count="1" id="267" />
<ingredient id="1459" count="573"/>
<ingredient id="1458" count="2865"/>
<production id="226" count="1"/>
</item>
<!-- Dark Screamer -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="579" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="1737" id="1459" />
<!-- Dark Elven Long Bow -->
<production count="1" id="284" />
<ingredient id="1459" count="1075"/>
<ingredient id="1458" count="5375"/>
<production id="233" count="1"/>
</item>
<!-- Chakram -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="579" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="1737" id="1459" />
<!-- Great Axe -->
<production count="1" id="300" />
<ingredient id="1459" count="573"/>
<ingredient id="1458" count="2865"/>
<production id="263" count="1"/>
</item>
<!-- Fist Blade -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="579" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="1737" id="1459" />
<!-- Spell Breaker -->
<production count="1" id="7892" />
<ingredient id="1459" count="1075"/>
<ingredient id="1458" count="5375"/>
<production id="265" count="1"/>
</item>
<!-- Crystallized Ice Bow -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="579" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="1737" id="1459" />
<!-- Ice Storm Hammer -->
<production count="1" id="7900" />
<ingredient id="1459" count="573"/>
<ingredient id="1458" count="2865"/>
<production id="281" count="1"/>
</item>
<!-- Akat Long Bow -->
<item>
<ingredient id="1459" count="1075"/>
<ingredient id="1458" count="5375"/>
<production id="283" count="1"/>
</item>
<!-- Orcish Glaive -->
<item>
<ingredient id="1459" count="573"/>
<ingredient id="1458" count="2865"/>
<production id="298" count="1"/>
</item>
<!-- Poleaxe -->
<item>
<ingredient id="1459" count="1075"/>
<ingredient id="1458" count="5375"/>
<production id="95" count="1"/>
</item>
</list>

View File

@ -3,148 +3,142 @@
<npcs>
<npc>30098</npc> <!-- Alexandria (Armor Merchant) -->
</npcs>
<!-- Chain Mail Shirt -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="138" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="415" id="1459" />
<!-- Zubei's Breastplate -->
<production count="1" id="357" />
<ingredient id="1459" count="127"/>
<ingredient id="1458" count="635"/>
<production id="354" count="1"/>
</item>
<!-- Chain Gaiters -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="86" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="259" id="1459" />
<!-- Zubei's Gaiters -->
<production count="1" id="383" />
<ingredient id="1459" count="79"/>
<ingredient id="1458" count="395"/>
<production id="381" count="1"/>
</item>
<!-- Composite Armor -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="52" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="156" id="1459" />
<!-- Zubei's Helmet -->
<production count="1" id="503" />
<ingredient id="1459" count="360"/>
<ingredient id="1458" count="1800"/>
<production id="60" count="1"/>
</item>
<!-- Mithril Shirt -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="35" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="104" id="1459" />
<!-- Sealed Zubei's Boots -->
<production count="1" id="554" />
<ingredient id="1459" count="95"/>
<ingredient id="1458" count="475"/>
<production id="397" count="1"/>
</item>
<!-- Tempered Mithril Gaiters -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="35" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="104" id="1459" />
<!-- Sealed Avadon Boots -->
<production count="1" id="600" />
<ingredient id="1459" count="59"/>
<ingredient id="1458" count="295"/>
<production id="2387" count="1"/>
</item>
<!-- Theca Leather Armor -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="35" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="104" id="1459" />
<!-- Sealed Zubei's Gauntlets -->
<production count="1" id="612" />
<ingredient id="1459" count="207"/>
<ingredient id="1458" count="1035"/>
<production id="400" count="1"/>
</item>
<!-- Theca Leather Gaiters -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="36" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="109" id="1459" />
<!-- Zubei's Shield -->
<production count="1" id="633" />
<ingredient id="1459" count="129"/>
<ingredient id="1458" count="645"/>
<production id="420" count="1"/>
</item>
<!-- Karmian Tunic -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="36" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="109" id="1459" />
<!-- Avadon Shield -->
<production count="1" id="673" />
<ingredient id="1459" count="95"/>
<ingredient id="1458" count="475"/>
<production id="439" count="1"/>
</item>
<!-- Demons Tunic -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="138" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="415" id="1459" />
<!-- Avadon Breastplate -->
<production count="1" id="2376" />
<ingredient id="1459" count="184"/>
<ingredient id="1458" count="920"/>
<production id="441" count="1"/>
</item>
<!-- Karmian Stockings -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="86" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="259" id="1459" />
<!-- Avadon Gaiters -->
<production count="1" id="2379" />
<ingredient id="1459" count="59"/>
<ingredient id="1458" count="295"/>
<production id="471" count="1"/>
</item>
<!-- Demons Stockings -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="104" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="311" id="1459" />
<!-- Zubei's Leather Shirt -->
<production count="1" id="2384" />
<ingredient id="1459" count="115"/>
<ingredient id="1458" count="575"/>
<production id="472" count="1"/>
</item>
<!-- Chain Boots -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="65" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="195" id="1459" />
<!-- Zubei's Leather Gaiters -->
<production count="1" id="2388" />
<ingredient id="1459" count="32"/>
<ingredient id="1458" count="160"/>
<production id="2429" count="1"/>
</item>
<!-- Composite Boots -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="169" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="506" id="1459" />
<!-- Avadon Leather Armor -->
<production count="1" id="2390" />
<ingredient id="1459" count="62"/>
<ingredient id="1458" count="310"/>
<production id="64" count="1"/>
</item>
<!-- Reinforced Mithril Gloves -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="104" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="311" id="1459" />
<!-- Tunic of Zubei -->
<production count="1" id="2397" />
<ingredient id="1459" count="32"/>
<ingredient id="1458" count="160"/>
<production id="2452" count="1"/>
</item>
<!-- Mithril Gauntlets -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="65" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="195" id="1459" />
<!-- Stockings of Zubei -->
<production count="1" id="2402" />
<ingredient id="1459" count="62"/>
<ingredient id="1458" count="310"/>
<production id="608" count="1"/>
</item>
<!-- Eldarake -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="169" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="506" id="1459" />
<!-- Avadon Robe -->
<production count="1" id="2406" />
<ingredient id="1459" count="34"/>
<ingredient id="1458" count="170"/>
<production id="631" count="1"/>
</item>
<!-- Tower Shield -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="52" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="156" id="1459" />
<!-- Avadon Circlet -->
<production count="1" id="2415" />
<ingredient id="1459" count="65"/>
<ingredient id="1458" count="325"/>
<production id="103" count="1"/>
</item>
<!-- Moonstone Earring -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="35" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="104" id="1459" />
<!-- Sealed Avadon Gloves -->
<production count="1" id="2464" />
<ingredient id="1459" count="39"/>
<ingredient id="1458" count="195"/>
<production id="852" count="1"/>
</item>
<!-- Earring of Binding -->
<item>
<ingredient id="1459" count="74"/>
<ingredient id="1458" count="370"/>
<production id="854" count="1"/>
</item>
<!-- Aquastone Ring -->
<item>
<ingredient id="1459" count="26"/>
<ingredient id="1458" count="130"/>
<production id="883" count="1"/>
</item>
<!-- Ring of Ages -->
<item>
<ingredient id="1459" count="49"/>
<ingredient id="1458" count="245"/>
<production id="885" count="1"/>
</item>
<!-- Aquastone Necklace -->
<item>
<ingredient id="1459" count="52"/>
<ingredient id="1458" count="260"/>
<production id="915" count="1"/>
</item>
<!-- Necklace of Mermaid -->
<item>
<ingredient id="1459" count="99"/>
<ingredient id="1458" count="495"/>
<production id="917" count="1"/>
</item>
</list>

View File

@ -3,116 +3,76 @@
<npcs>
<npc>30098</npc> <!-- Alexandria (Armor Merchant) -->
</npcs>
<!-- Red Soul Crystal - Stage 7 -->
<item>
<!-- Crystal (C-Grade) -->
<ingredient count="200" id="1459" />
<!-- Crystal (D-Grade) -->
<ingredient count="1000" id="1458" />
<!-- Luxurious Gold Circlet -->
<production count="1" id="8914" />
<ingredient id="1459" count="100"/>
<ingredient id="1458" count="500"/>
<production id="4636" count="1"/>
</item>
<!-- Green Soul Crystal - Stage 7 -->
<item>
<!-- Crystal (C-Grade) -->
<ingredient count="200" id="1459" />
<!-- Crystal (D-Grade) -->
<ingredient count="1000" id="1458" />
<!-- Luxurious Silver Circlet -->
<production count="1" id="8915" />
<ingredient id="1459" count="100"/>
<ingredient id="1458" count="500"/>
<production id="4647" count="1"/>
</item>
<!-- Blue Soul Crystal - Stage 7 -->
<item>
<!-- Crystal (C-Grade) -->
<ingredient count="100" id="1459" />
<!-- Crystal (D-Grade) -->
<ingredient count="500" id="1458" />
<!-- Red Soul Crystal - Stage 7 -->
<production count="1" id="4636" />
<ingredient id="1459" count="100"/>
<ingredient id="1458" count="500"/>
<production id="4658" count="1"/>
</item>
<!-- Red Soul Crystal - Stage 8 -->
<item>
<!-- Crystal (C-Grade) -->
<ingredient count="100" id="1459" />
<!-- Crystal (D-Grade) -->
<ingredient count="500" id="1458" />
<!-- Green Soul Crystal - Stage 7 -->
<production count="1" id="4647" />
<ingredient id="1459" count="120"/>
<ingredient id="1458" count="567"/>
<production id="4637" count="1"/>
</item>
<!-- Green Soul Crystal - Stage 8 -->
<item>
<!-- Crystal (C-Grade) -->
<ingredient count="100" id="1459" />
<!-- Crystal (D-Grade) -->
<ingredient count="500" id="1458" />
<!-- Blue Soul Crystal - Stage 7 -->
<production count="1" id="4658" />
<ingredient id="1459" count="120"/>
<ingredient id="1458" count="567"/>
<production id="4648" count="1"/>
</item>
<!-- Blue Soul Crystal - Stage 8 -->
<item>
<!-- Crystal (C-Grade) -->
<ingredient count="120" id="1459" />
<!-- Crystal (D-Grade) -->
<ingredient count="567" id="1458" />
<!-- Red Soul Crystal - Stage 8 -->
<production count="1" id="4637" />
<ingredient id="1459" count="120"/>
<ingredient id="1458" count="567"/>
<production id="4659" count="1"/>
</item>
<!-- Red Soul Crystal - Stage 9 -->
<item>
<!-- Crystal (C-Grade) -->
<ingredient count="120" id="1459" />
<!-- Crystal (D-Grade) -->
<ingredient count="567" id="1458" />
<!-- Green Soul Crystal - Stage 8 -->
<production count="1" id="4648" />
<ingredient id="1460" count="44"/>
<ingredient id="1459" count="135"/>
<production id="4638" count="1"/>
</item>
<!-- Green Soul Crystal - Stage 9 -->
<item>
<!-- Crystal (C-Grade) -->
<ingredient count="120" id="1459" />
<!-- Crystal (D-Grade) -->
<ingredient count="567" id="1458" />
<!-- Blue Soul Crystal - Stage 8 -->
<production count="1" id="4659" />
<ingredient id="1460" count="44"/>
<ingredient id="1459" count="135"/>
<production id="4649" count="1"/>
</item>
<!-- Blue Soul Crystal - Stage 9 -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="44" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="135" id="1459" />
<!-- Red Soul Crystal - Stage 9 -->
<production count="1" id="4638" />
<ingredient id="1460" count="44"/>
<ingredient id="1459" count="135"/>
<production id="4660" count="1"/>
</item>
<!-- Red Soul Crystal - Stage 10 -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="44" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="135" id="1459" />
<!-- Green Soul Crystal - Stage 9 -->
<production count="1" id="4649" />
<ingredient id="1460" count="50"/>
<ingredient id="1459" count="150"/>
<production id="4639" count="1"/>
</item>
<!-- Green Soul Crystal - Stage 10 -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="44" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="135" id="1459" />
<!-- Blue Soul Crystal - Stage 9 -->
<production count="1" id="4660" />
<ingredient id="1460" count="50"/>
<ingredient id="1459" count="150"/>
<production id="4650" count="1"/>
</item>
<!-- Blue Soul Crystal - Stage 10 -->
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="50" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="150" id="1459" />
<!-- Red Soul Crystal - Stage 10 -->
<production count="1" id="4639" />
</item>
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="50" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="150" id="1459" />
<!-- Green Soul Crystal - Stage 10 -->
<production count="1" id="4650" />
</item>
<item>
<!-- Crystal (B-Grade) -->
<ingredient count="50" id="1460" />
<!-- Crystal (C-Grade) -->
<ingredient count="150" id="1459" />
<!-- Blue Soul Crystal - Stage 10 -->
<production count="1" id="4661" />
<ingredient id="1460" count="50"/>
<ingredient id="1459" count="150"/>
<production id="4661" count="1"/>
</item>
</list>

View File

@ -1,8 +0,0 @@
<html><body>Trader Alexandria:<br>
Ah, you have excellent taste! This bracelet is truly unique. In fact, it is said that it contains an <font color="LEVEL">Agathion</font>. Quite a find, eh? Wondering if it is for sale? Of course it is -- that's why I'm here!<br>
Both this <font color="LEVEL">Little Angel Agathion Bracelet</font> and this <font color="LEVEL">Little Devil Agathion Bracelet</font> were discovered by another group of adventurers while exploring some ancient ruins. I am positive that they contain Agathions! Of course, no one knows for sure the power an Agathion possesses or how long it lasts. I have been reluctant to experiment on them because it's clear that some of the bracelets possess only limited magic power.<br>
Others have more, however. What you get will depend on your luck, I'm afraid.<br>
If you wish to buy either the Little Angel Bracelet or the Little Devil Bracelet, bring me <font color="LEVEL">25 Big Red Nimble Fish, 50 Great Codrans, 4 Messengers' Skeletons in Crystals of Life, 5 Earth Eggs and 5 Nonliving Nuclei, 3 Dragon Hearts</font>, and <font color="LEVEL">7,500,000 Adena</font>. I wish I could part with them in exchange for crystals as normally would, but the adventurers who delivered the bracelets here insisted on these other items for payment. Even so, I still believe this is a reasonable price. After all, an Agathion isn't something you run across every day, eh? So, would you like to buy one?<br>
<a action="bypass -h Quest Alexandria littleAngel">Purchase the Little Angel Agathion Bracelet.</a><br>
<a action="bypass -h Quest Alexandria littleDevil">Purchase the Little Devil Agathion Bracelet.</a>
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Trader Alexandria:<br>
Yes, I've checked the necessary items. Thank you for your hard work.<br>
I'm telling you ahead that I don't know for sure what kind of power each bracelet has. I only can tell you that the angel-engraved bracelet has an angel-type Agathion, and the devil-engraved one has a devil-type Agathion. You can find out the capability and magic power of each Agathion on your own.
</body></html>

View File

@ -1,6 +0,0 @@
<html><body>Trader Alexandria:<br>
Yes, I checked the necessary items. It must have been difficult to obtain them all!<br>
I must warn you that I do not know for sure what kind of power posessed by each bracelet. I only can tell you that the Angel's Bracelet contains an angel-type Agathion, while the Devil's Bracelet contains a devil-type Agathion. You must discover the capability and magic power of each on your own.<br>
Here, please take this as an extra token of my appreciation for your business...<br>
(I have a strange feeling about that bracelet -- I hope this adventurer will simply take this and leave here immediately.)
</body></html>

View File

@ -1,3 +0,0 @@
<html><body>Trader Alexandria:<br>
Oh, you don't have the items required to buy either the Angel's Bracelet or the Devil's Bracelet. In order to obtain one, you must first bring me <font color="LEVEL">25 Big Red Nimble Fish</font>, <font color="LEVEL">50 Great Codrans</font>, and <font color="LEVEL">4 Memento Moris, 5 Earth Eggs, 5 Nonliving Nuclei, 3 Dragon Hearts</font>, and <font color="LEVEL">7,500,000 Adena</font>.
</body></html>

View File

@ -1,8 +0,0 @@
<html><body>Trader Alexandria:<br>
Welcome! Thank you so much for visiting our boutique. We sell precious and valuable things that you would never find anywhere else. We've also added some luxury accessories this time. Look around see if you can find anything you like.<br>
If you would like to purchase a weapon, please ask my husband.<br>
<a action="bypass -h npc_%objectId%_multisell 300984001">Purchase Armor.</a><br>
<a action="bypass -h npc_%objectId%_multisell 300984002">Purchase Specialty Items.</a><br>
<a action="bypass -h Quest Alexandria 30098-02.html">Purchase Agathion Bracelet.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest</a>
</body></html>

View File

@ -1,143 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package ai.areas.Giran.Alexandria;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.holders.ItemChanceHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import ai.AbstractNpcAI;
/**
* Alexandria (Armor Merchant) AI.
* @author xban1x
*/
public class Alexandria extends AbstractNpcAI
{
// NPC
private static final int ALEXANDRIA = 30098;
// Items
private static final ItemHolder[] REQUIRED_ITEMS = new ItemHolder[]
{
new ItemHolder(57, 3550000),
new ItemHolder(5094, 400),
new ItemHolder(6471, 200),
new ItemHolder(9814, 40),
new ItemHolder(9815, 30),
new ItemHolder(9816, 50),
new ItemHolder(9817, 50),
};
// Agathions
private static final ItemChanceHolder[] LITTLE_DEVILS = new ItemChanceHolder[]
{
new AdditionalItemChanceHolder(10321, 600, 1, 10408),
new ItemChanceHolder(10322, 10),
new ItemChanceHolder(10323, 10),
new ItemChanceHolder(10324, 5),
new ItemChanceHolder(10325, 5),
new ItemChanceHolder(10326, 370),
};
private static final ItemChanceHolder[] LITTLE_ANGELS = new ItemChanceHolder[]
{
new AdditionalItemChanceHolder(10315, 600, 1, 10408),
new ItemChanceHolder(10316, 10),
new ItemChanceHolder(10317, 10),
new ItemChanceHolder(10318, 5),
new ItemChanceHolder(10319, 5),
new ItemChanceHolder(10320, 370),
};
private static final Map<String, List<ItemChanceHolder>> AGATHIONS = new HashMap<>();
static
{
AGATHIONS.put("littleAngel", Arrays.asList(LITTLE_ANGELS));
AGATHIONS.put("littleDevil", Arrays.asList(LITTLE_DEVILS));
}
private Alexandria()
{
addStartNpc(ALEXANDRIA);
addTalkId(ALEXANDRIA);
addFirstTalkId(ALEXANDRIA);
}
@Override
public String onAdvEvent(String event, Npc npc, Player player)
{
String htmltext = null;
if (event.equals("30098-02.html"))
{
htmltext = event;
}
else if (AGATHIONS.containsKey(event))
{
final int chance = getRandom(1000);
int chance2 = 0;
int chance3 = 0;
for (ItemChanceHolder agathion : AGATHIONS.get(event))
{
chance3 += agathion.getChance();
if ((chance2 <= chance) && (chance < chance3))
{
if (takeAllItems(player, REQUIRED_ITEMS))
{
giveItems(player, agathion);
htmltext = "30098-03.html";
if (agathion instanceof AdditionalItemChanceHolder)
{
giveItems(player, ((AdditionalItemChanceHolder) agathion).getAdditionalId(), 1);
htmltext = "30098-03a.html";
}
}
else
{
htmltext = "30098-04.html";
}
break;
}
chance2 += agathion.getChance();
}
}
return htmltext;
}
private static class AdditionalItemChanceHolder extends ItemChanceHolder
{
private final int _additionalId;
AdditionalItemChanceHolder(int id, int chance, int count, int additionalId)
{
super(id, chance, count);
_additionalId = additionalId;
}
public int getAdditionalId()
{
return _additionalId;
}
}
public static void main(String[] args)
{
new Alexandria();
}
}

View File

@ -145,8 +145,8 @@ import handlers.bypasshandlers.PlayerHelp;
import handlers.bypasshandlers.PrivateWarehouse;
import handlers.bypasshandlers.QuestLink;
import handlers.bypasshandlers.QuestList;
import handlers.bypasshandlers.RentPet;
import handlers.bypasshandlers.Rift;
import handlers.bypasshandlers.Sell;
import handlers.bypasshandlers.SkillList;
import handlers.bypasshandlers.SupportBlessing;
import handlers.bypasshandlers.SupportMagic;
@ -426,8 +426,8 @@ public class MasterHandler
PlayerHelp.class,
PrivateWarehouse.class,
QuestList.class,
RentPet.class,
Rift.class,
Sell.class,
SkillList.class,
SupportBlessing.class,
SupportMagic.class,

View File

@ -59,9 +59,6 @@ public class Link implements IBypassHandler
VALID_LINKS.add("fisherman/fishing_championship.htm");
VALID_LINKS.add("fortress/foreman.htm");
VALID_LINKS.add("olympiad/hero_main2.htm");
VALID_LINKS.add("petmanager/evolve.htm");
VALID_LINKS.add("petmanager/exchange.htm");
VALID_LINKS.add("petmanager/instructions.htm");
VALID_LINKS.add("seven_signs/blkmrkt_1.htm");
VALID_LINKS.add("seven_signs/blkmrkt_2.htm");
VALID_LINKS.add("seven_signs/mammblack_1a.htm");

View File

@ -1,143 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.bypasshandlers;
import java.util.StringTokenizer;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.handler.IBypassHandler;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Merchant;
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import org.l2jmobius.gameserver.network.serverpackets.SetupGauge;
public class RentPet implements IBypassHandler
{
private static final String[] COMMANDS =
{
"RentPet"
};
@Override
public boolean useBypass(String command, Player player, Creature target)
{
if (!(target instanceof Merchant))
{
return false;
}
if (!Config.ALLOW_RENTPET)
{
return false;
}
if (!Config.LIST_PET_RENT_NPC.contains(target.getId()))
{
return false;
}
try
{
final StringTokenizer st = new StringTokenizer(command, " ");
st.nextToken();
if (st.countTokens() < 1)
{
final NpcHtmlMessage msg = new NpcHtmlMessage(((Npc) target).getObjectId());
msg.setHtml("<html><body>Pet Manager:<br>You can rent a wyvern or strider for adena.<br>My prices:<br1><table border=0><tr><td>Ride</td></tr><tr><td>Wyvern</td><td>Strider</td></tr><tr><td><a action=\"bypass -h npc_%objectId%_RentPet 1\">30 sec/1800 adena</a></td><td><a action=\"bypass -h npc_%objectId%_RentPet 11\">30 sec/900 adena</a></td></tr><tr><td><a action=\"bypass -h npc_%objectId%_RentPet 2\">1 min/7200 adena</a></td><td><a action=\"bypass -h npc_%objectId%_RentPet 12\">1 min/3600 adena</a></td></tr><tr><td><a action=\"bypass -h npc_%objectId%_RentPet 3\">10 min/720000 adena</a></td><td><a action=\"bypass -h npc_%objectId%_RentPet 13\">10 min/360000 adena</a></td></tr><tr><td><a action=\"bypass -h npc_%objectId%_RentPet 4\">30 min/6480000 adena</a></td><td><a action=\"bypass -h npc_%objectId%_RentPet 14\">30 min/3240000 adena</a></td></tr></table></body></html>");
msg.replace("%objectId%", String.valueOf(((Npc) target).getObjectId()));
player.sendPacket(msg);
}
else
{
tryRentPet(player, Integer.parseInt(st.nextToken()));
}
return true;
}
catch (Exception e)
{
LOGGER.info("Exception in " + getClass().getSimpleName());
}
return false;
}
public static void tryRentPet(Player player, int petValue)
{
if ((player == null) || player.hasSummon() || player.isMounted() || player.isRentedPet() || player.isCursedWeaponEquipped())
{
return;
}
if (!player.disarmWeapons())
{
return;
}
int petId;
int price = 1;
final int[] cost =
{
1800,
7200,
720000,
6480000
};
final int[] ridetime =
{
30,
60,
600,
1800
};
int value = petValue;
if (value > 10)
{
petId = 12526;
value -= 10;
price /= 2;
}
else
{
petId = 12621;
}
if ((value < 1) || (value > 4))
{
return;
}
price *= cost[value - 1];
final int time = ridetime[value - 1];
if (!player.reduceAdena("Rent", price, player.getLastFolkNPC(), true))
{
return;
}
player.mount(petId, 0, false);
player.sendPacket(new SetupGauge(player.getObjectId(), 3, time * 1000));
player.startRentPet(time);
}
@Override
public String[] getBypassList()
{
return COMMANDS;
}
}

View File

@ -0,0 +1,55 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.bypasshandlers;
import org.l2jmobius.gameserver.handler.IBypassHandler;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Merchant;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.SellList;
/**
* @author Mobius
*/
public class Sell implements IBypassHandler
{
private static final String[] COMMANDS =
{
"Sell"
};
@Override
public boolean useBypass(String command, Player player, Creature target)
{
if (!(target instanceof Merchant))
{
return false;
}
player.sendPacket(new SellList(player));
player.sendPacket(ActionFailed.STATIC_PACKET);
return true;
}
@Override
public String[] getBypassList()
{
return COMMANDS;
}
}

View File

@ -2842,7 +2842,7 @@
<height normal="17" />
</collision>
</npc>
<npc id="30098" level="70" type="Folk" name="Alexandria" title="Trader">
<npc id="30098" level="70" type="Merchant" name="Alexandria" title="Trader">
<parameters>
<param name="MoveAroundSocial" value="0" />
<param name="MoveAroundSocial1" value="90" />

View File

@ -557,7 +557,6 @@ public class Config
public static boolean ALLOW_LOTTERY;
public static boolean ALLOW_RACE;
public static boolean ALLOW_WATER;
public static boolean ALLOW_RENTPET;
public static boolean ALLOW_FISHING;
public static boolean ALLOW_BOAT;
public static int BOAT_BROADCAST_RADIUS;
@ -718,7 +717,6 @@ public class Config
public static boolean GUARD_ATTACK_AGGRO_MOB;
public static boolean ENABLE_GUARD_RETURN;
public static boolean ALLOW_WYVERN_UPGRADER;
public static List<Integer> LIST_PET_RENT_NPC;
public static double RAID_HP_REGEN_MULTIPLIER;
public static double RAID_MP_REGEN_MULTIPLIER;
public static double RAID_PDEFENCE_MULTIPLIER;
@ -2012,7 +2010,6 @@ public class Config
ALLOW_LOTTERY = generalConfig.getBoolean("AllowLottery", true);
ALLOW_RACE = generalConfig.getBoolean("AllowRace", true);
ALLOW_WATER = generalConfig.getBoolean("AllowWater", true);
ALLOW_RENTPET = generalConfig.getBoolean("AllowRentPet", false);
ALLOW_FISHING = generalConfig.getBoolean("AllowFishing", true);
ALLOW_MANOR = generalConfig.getBoolean("AllowManor", true);
ALLOW_BOAT = generalConfig.getBoolean("AllowBoat", true);
@ -2148,12 +2145,6 @@ public class Config
GUARD_ATTACK_AGGRO_MOB = npcConfig.getBoolean("GuardAttackAggroMob", false);
ENABLE_GUARD_RETURN = npcConfig.getBoolean("EnableGuardReturn", false);
ALLOW_WYVERN_UPGRADER = npcConfig.getBoolean("AllowWyvernUpgrader", false);
final String[] listPetRentNpc = npcConfig.getString("ListPetRentNpc", "30827").split(",");
LIST_PET_RENT_NPC = new ArrayList<>(listPetRentNpc.length);
for (String id : listPetRentNpc)
{
LIST_PET_RENT_NPC.add(Integer.parseInt(id));
}
RAID_HP_REGEN_MULTIPLIER = npcConfig.getDouble("RaidHpRegenMultiplier", 100) / 100;
RAID_MP_REGEN_MULTIPLIER = npcConfig.getDouble("RaidMpRegenMultiplier", 100) / 100;
RAID_PDEFENCE_MULTIPLIER = npcConfig.getDouble("RaidPDefenceMultiplier", 100) / 100;

View File

@ -1032,14 +1032,6 @@ public class Npc extends Creature
// Send a Server->Client NpcHtmlMessage containing the text of the Npc to the Player
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
html.setFile(player, filename);
if (this instanceof Merchant)
{
if (Config.LIST_PET_RENT_NPC.contains(npcId))
{
html.replace("_Quest", "_RentPet\">Rent Pet</a><br><a action=\"bypass -h npc_%objectId%_Quest");
}
}
html.replace("%npcname%", String.valueOf(getName()));
html.replace("%objectId%", String.valueOf(getObjectId()));
html.replace("%festivalMins%", SevenSignsFestival.getInstance().getTimeToNextFestivalStr());

View File

@ -16,12 +16,10 @@
*/
package org.l2jmobius.gameserver.model.actor.instance;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.enums.InstanceType;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import org.l2jmobius.gameserver.util.Evolve;
public class PetManager extends Merchant
{
@ -54,150 +52,10 @@ public class PetManager extends Merchant
public void showChatWindow(Player player)
{
String filename = "data/html/petmanager/" + getId() + ".htm";
if ((getId() == 36478) && player.hasSummon())
{
filename = "data/html/petmanager/restore-unsummonpet.htm";
}
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
html.setFile(player, filename);
if (Config.ALLOW_RENTPET && Config.LIST_PET_RENT_NPC.contains(getId()))
{
html.replace("_Quest", "_RentPet\">Rent Pet</a><br><a action=\"bypass -h npc_%objectId%_Quest");
}
html.replace("%objectId%", String.valueOf(getObjectId()));
html.replace("%npcname%", getName());
player.sendPacket(html);
}
@Override
public void onBypassFeedback(Player player, String command)
{
if (command.startsWith("exchange"))
{
final String[] params = command.split(" ");
final int val = Integer.parseInt(params[1]);
switch (val)
{
case 1:
{
exchange(player, 7585, 6650);
break;
}
case 2:
{
exchange(player, 7583, 6648);
break;
}
case 3:
{
exchange(player, 7584, 6649);
break;
}
}
}
else if (command.startsWith("evolve"))
{
final String[] params = command.split(" ");
final int val = Integer.parseInt(params[1]);
boolean ok = false;
switch (val)
{
// Info evolve(player, "curent pet summon item", "new pet summon item", "level required to evolve")
// To ignore evolve just put value 0 where do you like example: evolve(player, 0, 9882, 55);
case 1:
{
ok = Evolve.doEvolve(player, this, 2375, 9882, 55);
break;
}
case 2:
{
ok = Evolve.doEvolve(player, this, 9882, 10426, 70);
break;
}
case 3:
{
ok = Evolve.doEvolve(player, this, 6648, 10311, 55);
break;
}
case 4:
{
ok = Evolve.doEvolve(player, this, 6650, 10313, 55);
break;
}
case 5:
{
ok = Evolve.doEvolve(player, this, 6649, 10312, 55);
break;
}
}
if (!ok)
{
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
html.setFile(player, "data/html/petmanager/evolve_no.htm");
player.sendPacket(html);
}
}
else if (command.startsWith("restore"))
{
final String[] params = command.split(" ");
final int val = Integer.parseInt(params[1]);
boolean ok = false;
switch (val)
{
// Info evolve(player, "curent pet summon item", "new pet summon item", "level required to evolve")
case 1:
{
ok = Evolve.doRestore(player, this, 10307, 9882, 55);
break;
}
case 2:
{
ok = Evolve.doRestore(player, this, 10611, 10426, 70);
break;
}
case 3:
{
ok = Evolve.doRestore(player, this, 10308, 4422, 55);
break;
}
case 4:
{
ok = Evolve.doRestore(player, this, 10309, 4423, 55);
break;
}
case 5:
{
ok = Evolve.doRestore(player, this, 10310, 4424, 55);
break;
}
}
if (!ok)
{
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
html.setFile(player, "data/html/petmanager/restore_no.htm");
player.sendPacket(html);
}
}
else
{
super.onBypassFeedback(player, command);
}
}
public void exchange(Player player, int itemIdtake, int itemIdgive)
{
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
if (player.destroyItemByItemId("Consume", itemIdtake, 1, this, true))
{
player.addItem("", itemIdgive, 1, this, true);
html.setFile(player, "data/html/petmanager/" + getId() + ".htm");
player.sendPacket(html);
}
else
{
html.setFile(player, "data/html/petmanager/exchange_no.htm");
player.sendPacket(html);
}
}
}

View File

@ -128,17 +128,20 @@ public class RequestSellItem implements IClientIncomingPacket
return;
}
final BuyListHolder buyList = BuyListData.getInstance().getBuyList(_listId);
if (buyList == null)
if (_listId != 0) // Sell.
{
Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " sent a false BuyList list_id " + _listId, Config.DEFAULT_PUNISH);
return;
}
if ((merchant != null) && !buyList.isNpcAllowed(merchant.getId()))
{
player.sendPacket(ActionFailed.STATIC_PACKET);
return;
final BuyListHolder buyList = BuyListData.getInstance().getBuyList(_listId);
if (buyList == null)
{
Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " sent a false BuyList list_id " + _listId, Config.DEFAULT_PUNISH);
return;
}
if ((merchant != null) && !buyList.isNpcAllowed(merchant.getId()))
{
player.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
}
int totalPrice = 0;

View File

@ -0,0 +1,70 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.l2jmobius.gameserver.network.serverpackets;
import java.util.ArrayList;
import java.util.List;
import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.network.OutgoingPackets;
/**
* @author Mobius
*/
public class SellList implements IClientOutgoingPacket
{
private final int _money;
private final List<Item> _items = new ArrayList<>();
public SellList(Player player)
{
_money = player.getAdena();
for (Item item : player.getInventory().getItems())
{
if (!item.isEquipped() && item.getTemplate().isSellable() && ((player.getSummon() == null) || (item.getObjectId() != player.getSummon().getControlObjectId())))
{
_items.add(item);
}
}
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.SELL_LIST.writeId(packet);
packet.writeD(_money);
packet.writeD(0);
packet.writeH(_items.size());
for (Item item : _items)
{
packet.writeH(item.getTemplate().getType1());
packet.writeD(item.getObjectId());
packet.writeD(item.getId());
packet.writeD(item.getCount());
packet.writeH(item.getTemplate().getType2());
packet.writeH(item.getCustomType1());
packet.writeD(item.getTemplate().getBodyPart());
packet.writeH(item.getEnchantLevel());
packet.writeH(item.getCustomType2());
packet.writeH(0);
packet.writeD(item.getTemplate().getReferencePrice() / 2);
}
return true;
}
}

View File

@ -96,6 +96,8 @@ What is done
-Added quests 353, 374, 375 and 505.
-Removed Kamael class ids from hennas.
-Changed item count to integer.
-Adjusted luxury shop merchants.
-Added support for merchant sell bypass.
TODO: Important (project unusable due to the following)
-Adjust all skills according to Interlude description.