First commit
This commit is contained in:
6
app/SabrehavenServer/data/XML/commands.xml
Normal file
6
app/SabrehavenServer/data/XML/commands.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<commands>
|
||||
<command cmd="/reload" group="2" acctype="5" log="yes" />
|
||||
<command cmd="/raid" group="2" acctype="4" log="yes" />
|
||||
<command cmd="!sellhouse" group="1" acctype="1" log="no" />
|
||||
</commands>
|
||||
6
app/SabrehavenServer/data/XML/groups.xml
Normal file
6
app/SabrehavenServer/data/XML/groups.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<groups>
|
||||
<group id="1" name="player" flags="0" maxdepotitems="0" maxvipentries="0" access="0" />
|
||||
<group id="2" name="gamemaster" flags="412316860415" maxdeoptitems="0" maxvipentries="0" access="1" />
|
||||
<group id="3" name="god" flags="547608305658" maxdepotitems="0" maxvipentries="0" access="1" />
|
||||
</groups>
|
||||
38
app/SabrehavenServer/data/XML/outfits.xml
Normal file
38
app/SabrehavenServer/data/XML/outfits.xml
Normal file
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<outfits>
|
||||
<!-- Female outfits -->
|
||||
<outfit type="0" looktype="136" name="Citizen" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="137" name="Hunter" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="138" name="Mage" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="139" name="Knight" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="140" name="Noblewoman" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="141" name="Summoner" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="142" name="Warrior" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="147" name="Barbarian" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="148" name="Druid" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="149" name="Wizard" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="150" name="Oriental" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="155" name="Pirate" premium="no" unlocked="no" enabled="yes" />
|
||||
<outfit type="0" looktype="156" name="Assassin" premium="no" unlocked="no" enabled="yes" />
|
||||
<outfit type="0" looktype="157" name="Beggar" premium="no" unlocked="no" enabled="yes" />
|
||||
<outfit type="0" looktype="158" name="Shaman" premium="no" unlocked="no" enabled="yes" />
|
||||
<outfit type="0" looktype="161" name="Witch" premium="yes" unlocked="yes" enabled="yes" />
|
||||
|
||||
<!-- Male outfits -->
|
||||
<outfit type="1" looktype="128" name="Citizen" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="129" name="Hunter" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="130" name="Mage" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="131" name="Knight" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="132" name="Nobleman" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="133" name="Summoner" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="134" name="Warrior" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="143" name="Barbarian" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="144" name="Druid" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="145" name="Wizard" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="146" name="Oriental" premium="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="151" name="Pirate" premium="no" unlocked="no" enabled="yes" />
|
||||
<outfit type="1" looktype="152" name="Assassin" premium="no" unlocked="no" enabled="yes" />
|
||||
<outfit type="1" looktype="153" name="Beggar" premium="no" unlocked="no" enabled="yes" />
|
||||
<outfit type="1" looktype="154" name="Shaman" premium="no" unlocked="no" enabled="yes" />
|
||||
<outfit type="1" looktype="162" name="Monk" premium="yes" unlocked="yes" enabled="yes" />
|
||||
</outfits>
|
||||
542
app/SabrehavenServer/data/XML/quests.xml
Normal file
542
app/SabrehavenServer/data/XML/quests.xml
Normal file
@@ -0,0 +1,542 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<quests>
|
||||
<quest name="Factions" startstorageid="278" startstoragevalue="1">
|
||||
<mission name="The Marid and the Efreet - Djinn Greeting" storageid="278" startvalue="1" endvalue="1" ignoreendvalue="true">
|
||||
<missionstate id="1" description="Melchior told you the word "Djanni'hah" which can be used to talk to Djinns. Be aware that once you become an ally of one Djinn race, you cannot switch sides anymore." />
|
||||
</mission>
|
||||
<mission name="The Marid and the Efreet - Marid Faction" storageid="278" startvalue="2" endvalue="2">
|
||||
<missionstate id="2" description="You have joined the Marid. These friendly, blue Djinns are honest and fair allies. You have pledged eternal loyalty to King Gabel and may enter Asha'daramai freely. Djanni'hah!" />
|
||||
</mission>
|
||||
<mission name="The Marid and the Efreet - Efreet Faction" storageid="278" startvalue="3" endvalue="3">
|
||||
<missionstate id="3" description="You have joined the Efreet. These evil, green Djinns are always up to mischievous pranks. You have pledged eternal loyalty to King Malor and may enter Mal'ouquah freely. Djanni'hah!" />
|
||||
</mission>
|
||||
</quest>
|
||||
<quest name="Friends and Traders" startstorageid="17595" startstoragevalue="1">
|
||||
<mission name="The Sweaty Cyclops" storageid="17500" startvalue="1" endvalue="2">
|
||||
<missionstate id="1" description="Big Ben, the cyclops in Ab'Dendriel sends you to bring him 3 bast skirts for his woman. After this he will help you to forge different steel." />
|
||||
<missionstate id="2" description="Big Ben, the cyclops in Ab'Dendriel will help you to forge different steel now. Just ask him if you need something." />
|
||||
</mission>
|
||||
<mission name="The Mermaid Marina" storageid="17504" startvalue="1" endvalue="2">
|
||||
<missionstate id="1" description="Marina, the mermaid north of Sabrehaven sends you to bring her 50 honeycombs. After this she will help you create spool of yarn." />
|
||||
<missionstate id="2" description="Marina, the mermaid north of Sabrehaven will help you to create a spool of yarn from 10 pieces of spider silk. Just ask her if you need something." />
|
||||
</mission>
|
||||
<mission name="The Blessed Stake" storageid="17576" startvalue="1" endvalue="12">
|
||||
<missionstate id="1" description="Quentin told you about an old prayer which can bind holy energy to an object. Each of its ten lines has to be recited by a different priest though. Bring Quentin a wooden stake from Gamon to start." />
|
||||
<missionstate id="2" description="You received Quentin's prayer: "Light shall be near - and darkness afar". Now, bring your stake to Tibra in the Carlin church for the next line of the prayer." />
|
||||
<missionstate id="3" description="You received Tibra's prayer: "Hope may fill your heart - doubt shall be banned". Now, bring your stake to Maealil in the Elven settlement for the next line of the prayer." />
|
||||
<missionstate id="4" description="You received Maealil's prayer: "Peace may fill your soul - evil shall be cleansed". Now, bring your stake to Yberius in the Venore temple for the next line of the prayer." />
|
||||
<missionstate id="5" description="You received Yberius' prayer: "Protection will be granted - from dangers at hand". Now, bring your stake to Isimov in the dwarven settlement for the next line of the prayer." />
|
||||
<missionstate id="6" description="You received Isimov's prayer: "Unclean spirits shall be repelled". Now, bring your stake to Amanda in Edron for the next line of the prayer." />
|
||||
<missionstate id="7" description="You received Amanda's prayer: "Wicked curses shall be broken". Now, bring your stake to Kasmir in Darashia for the next line of the prayer." />
|
||||
<missionstate id="8" description="You received Kasmir's prayer: "Let there be honour and humility". Now, bring your stake to Rahkem in Ankrahmun for the next line of the prayer." />
|
||||
<missionstate id="9" description="You received Rahkem's prayer: "Let there be power and compassion". Now, bring your stake to Brewster in Port Hope for the next line of the prayer." />
|
||||
<missionstate id="10" description="You received Brewster's prayer: "Your hand shall be guided - your feet shall walk in harmony". Now, bring your stake to Tyrias in Liberty Bay for the next line of the prayer." />
|
||||
<missionstate id="11" description="You received Tyrias' prayer: "Your mind shall be a vessel for joy, light and wisdom". He wasn't exactly happy though and said that if you need some mumbo jumbo again, you should rather go to Chondur." />
|
||||
<missionstate id="12" description="Chondur was surprised to hear that you had to travel through all of Tibia to have your wooden stake blessed. He offered you help with the blessing if you should need one again in the future." />
|
||||
</mission>
|
||||
</quest>
|
||||
<quest name="Outfit and Addon Quests" startstorageid="17594" startstoragevalue="1">
|
||||
<mission name="Assassin Addon: The Red Death" storageid="17562" startvalue="18" endvalue="19" ignoreendvalue="true">
|
||||
<missionstate id="18" description="Atrad wants only two items from you for his old katana: a behemoth claw and a nose ring, both at the same time. He also told you about a "horned fox" who wears such as nose ring" />
|
||||
<missionstate id="19" description="You have received the second assassin addon." />
|
||||
</mission>
|
||||
<mission name="Citizen Addon: Backpack" storageid="18502" startvalue="1" endvalue="3">
|
||||
<missionstate id="1" description="Collect 100 pieces of minotaur leather and bring it to either Amber or Lubo to have them make a backpack addon for you." />
|
||||
<missionstate id="2" description="You delivered 100 pieces of minotaur leather. Some time is needed to make the backpack for you though. You should check back later and ask either Amber or Lubo for your backpack." />
|
||||
<missionstate id="3" description="You got the outfit!" />
|
||||
</mission>
|
||||
<mission name="Citizen Addon: Feather Hat" storageid="18501" startvalue="1" endvalue="2">
|
||||
<missionstate id="1" description="Collect a legion helmet, 100 chicken feathers and 50 honeycombs and bring them to either Hanna or Norma to have them make a feather hat addon for you." />
|
||||
<missionstate id="2" description="You got the outfit!" />
|
||||
</mission>
|
||||
<mission name="Barbarian Outfit Quest" storageid="17532" startvalue="1" endvalue="17">
|
||||
<missionstate id="1" description="Bron told you that his brother Ajax in Northport needs to learn that violence is not always the answer. He told you to make his brother angry, then show him that all he needed to do was say 'please' to fix the situation." />
|
||||
<missionstate id="2" description="You will need to leave Ajax alone for an hour, then return to him." />
|
||||
<missionstate id="3" description="Ajax told you that he has thought about it, and that violence is not always good. Return to Bron now, and tell him that Ajax said fist not always good" />
|
||||
<missionstate id="4" description="Bron mentioned that he has someone in his house that he doesn't like, and he wants you to get advice from Ajax about how to handle the situation. Go back to Ajax and ask him about Gelagos" />
|
||||
<missionstate id="5" description="Ajax told you his brother needs Fighting Spirit, and that you should get some from a Djinn and give it to him." />
|
||||
<missionstate id="6" description="You brought Bron the Fighting Spirit. He acted a little strange." />
|
||||
<missionstate id="7" description="In order to make a shirt as a present for Ajax, Bron wants you to bring him 50 Pieces of Red Cloth and 50 Pieces of Green Cloth." />
|
||||
<missionstate id="8" description="Bron wants you to bring him 10 Spider Silk Yarn." />
|
||||
<missionstate id="9" description="Bron wants you to bring him the Warrior's Sweat." />
|
||||
<missionstate id="10" description="You brought him all required items! accept it!" />
|
||||
<missionstate id="11" description="You got the Barbarian Wig Addon! Bring now the present from Bron to Ajax!" />
|
||||
<missionstate id="12" description="Bring Ajax in Northport 100 Iron Ore." />
|
||||
<missionstate id="13" description="Bring Ajax 1 Huge Chunk of Crude Iron." />
|
||||
<missionstate id="14" description="Bring Ajax 50 Perfect Behemoth Fang" />
|
||||
<missionstate id="15" description="Bring Ajax 50 Lizard Leather" />
|
||||
<missionstate id="16" description="Come later in 2 hours and ask Ajax for the axe." />
|
||||
<missionstate id="17" description="You got the Axe Addon!" />
|
||||
</mission>
|
||||
<mission name="Beggar Outfit: The Newest Fashion" storageid="17563" startvalue="1" endvalue="6">
|
||||
<missionstate id="1" description="Your current task is to bring Hugo 20 pieces of brown cloth, like the worn and ragged ghoul clothing." />
|
||||
<missionstate id="2" description="Your current task is to bring 50 pieces of minotaur leather to Hugo. If you don't know how to get leather, you should ask Kalvin." />
|
||||
<missionstate id="3" description="Your current task is to bring 10 bat wings to Hugo." />
|
||||
<missionstate id="4" description="Your current task is to bring 30 heaven blossoms to Hugo. Elves are said to cultivate these flowers." />
|
||||
<missionstate id="5" description="You brought all items required for the "poor man's look" to Hugo. He told you to come back to him after a whole day has passed, then the outfit should be finished." />
|
||||
<missionstate id="6" description="You got the outfit!" />
|
||||
</mission>
|
||||
<mission name="Druid Outfit Quest" storageid="17535" startvalue="1" endvalue="10">
|
||||
<missionstate id="1" description="Ceiron sends you to collect a sample of the blooming Griffinclaw." />
|
||||
<missionstate id="2" description="Ask Ceiron for task." />
|
||||
<missionstate id="3" description="Take Ceirons waterskin and try to fill it with water from this special trickle. In the mountains between Ankrahmun and Tiquanda are two hydra lairs." />
|
||||
<missionstate id="4" description="Ask Ceiron for task." />
|
||||
<missionstate id="5" description="Bring Ceiron 100 ounces of demon dust." />
|
||||
<missionstate id="6" description="Ask Ceiron for task." />
|
||||
<missionstate id="7" description="The last mission is to find and retrieve Ceiron's Wolf Tooth Chain lost inside the Orc Fortress." />
|
||||
<missionstate id="8" description="Ask Ceiron for Faolan." />
|
||||
<missionstate id="9" description="Head over to Cormaya, find A Majestic Warwolf's Cave and ask her about an addon." />
|
||||
<missionstate id="10" description="You got the Outfit!" />
|
||||
</mission>
|
||||
<mission name="Hunter Outfit Quest" storageid="17539" startvalue="1" endvalue="5">
|
||||
<missionstate id="1" description="Elane sends you to Liberty Bay to bring her the Crossbow from the Cult." />
|
||||
<missionstate id="2" description="Bring Elane 100 pieces of lizard leather and 100 pieces of red dragon leather." />
|
||||
<missionstate id="3" description="Bring Elane 5 enchanted chicken wings." />
|
||||
<missionstate id="4" description="Bring Elane one piece of royal steel, draconian steel and hell steel each." />
|
||||
<missionstate id="5" description="You got the Outfit!" />
|
||||
</mission>
|
||||
<mission name="Knight Addon: Helmet" storageid="17542" startvalue="1" endvalue="6">
|
||||
<missionstate id="1" description="Your current task is to bring 100 perfect behemoth fangs to Gregor in Thais." />
|
||||
<missionstate id="2" description="Your current task is to retrieve the helmet of Ramsay the Reckless from Banuta. These pesky apes steal everything they can get their dirty hands on." />
|
||||
<missionstate id="3" description="Your current task is to obtain a flask of warrior's sweat, which can be magicially extracted from headgear worn by a true warrior, but only in small amounts. Djinns are said to be good at this." />
|
||||
<missionstate id="4" description="Your current task is to bring royal steel to Gregor in Thais. Royal steel can only be refined by very skilled smiths." />
|
||||
<missionstate id="5" description="You have delivered all items required for the helmet addon. Go talk to Sam and tell him Gregor sent you. He will be glad to refine your helmet." />
|
||||
<missionstate id="6" description="You got the Outfit!" />
|
||||
</mission>
|
||||
<mission name="Mage & Summoner Addon: Wand" storageid="17549" startvalue="1" endvalue="7">
|
||||
<missionstate id="1" description="You found Angelina in a Prison. She told you a secret: Lynda in Thais can create a blessed wand. Greet her from Angelina, maybe she will aid you." />
|
||||
<missionstate id="2" description="Lynda send you to bring her a sample of all five wands and five rods (Snakebite, Moonlight, Volcanic, Quagmire, Tempest, Vortex, Dragonbreath, Plague, Cosmic Energy and Inferno)" />
|
||||
<missionstate id="3" description="Bring Lynda 10 ounces of magic sulphur" />
|
||||
<missionstate id="4" description="Bring Lynda the Necromancer's soul stone" />
|
||||
<missionstate id="5" description="Bring Lynda 20 ankhs now to complete the ritual." />
|
||||
<missionstate id="6" description="Lynda is currently preparing a ritual for you. Be patient and don't forget to check on it later!" />
|
||||
<missionstate id="7" description="You got the Outfit!" />
|
||||
</mission>
|
||||
<mission name="Mage & Summoner Addon: Fluid Belt" storageid="17546" startvalue="1" endvalue="1">
|
||||
<missionstate id="1" description="You got the Outfit!" />
|
||||
</mission>
|
||||
<mission name="Mage Tiara and Summoner Cloak" storageid="17547" startvalue="1" endvalue="12">
|
||||
<missionstate id="1" description="Your current task is to bring 70 bat wings to Myra in Port Hope." />
|
||||
<missionstate id="2" description="Your current task is to bring 20 pieces of red cloth to Myra in Port Hope. These are said to make an excellent material for a cape." />
|
||||
<missionstate id="3" description="Your current task is to bring 40 pieces of ape fur to Myra in Port Hope." />
|
||||
<missionstate id="4" description="Your current task is to bring 35 holy orchids to Myra in Port Hope. Elves are said to cultivate these." />
|
||||
<missionstate id="5" description="Your current task is to bring 10 spools of spider silk yarn to Myra in Port Hope. Only very large spiders produce silk which is strong enough to be yarned by mermaids." />
|
||||
<missionstate id="6" description="Your current task is to bring 60 lizard scales to Myra in Port Hope. Lizard scales are great for all sort of magical potions." />
|
||||
<missionstate id="7" description="Your current task is to bring 40 red dragon scales to Myra in Port Hope." />
|
||||
<missionstate id="8" description="Your current task is to bring 15 ounces of magic sulphur to Myra in Port Hope. Djinns are said to be good at extracting magic sulphur." />
|
||||
<missionstate id="9" description="Your current task is to bring 30 ounces of vampire dusts to Myra in Port Hope. You might need to ask a priest for a special blessed stake to turn vampires into dust." />
|
||||
<missionstate id="10" description="You finally collected all of the items which Myra asked for. You should ask about reward from her." />
|
||||
<missionstate id="11" description="Go talk to Zoltan in Edron and tell him that Myra nominated you for an award." />
|
||||
<missionstate id="12" description="You got the Outfit!" />
|
||||
</mission>
|
||||
<mission name="Warrior Addon: Shoulder Spike" storageid="17558" startvalue="1" endvalue="7">
|
||||
<missionstate id="1" description="Your current task is to bring 100 hardened bones to Trisha in Carlin. They can sometimes be extracted from creatures that consist only of - you guessed it, bones. You need an obsidian knife though." />
|
||||
<missionstate id="2" description="Your current task is to bring 100 turtle shells to Trisha in Carlin. Turtles can be found on some idyllic islands which have recently been discovered." />
|
||||
<missionstate id="3" description="Your current task is to show that you have fighting spirit. Maybe someone grants you a wish...?" />
|
||||
<missionstate id="4" description="Your current task is to obtain a dragon claw. You cannot get this special claw from any common dragons in Tibia. It requires a special one, a lord among the lords." />
|
||||
<missionstate id="5" description="You have delivered all items requried for the shoulder spike addon. Go talk to Cornelia and tell her Trisha sent you. She will be glad to create the should spikes." />
|
||||
<missionstate id="6" description="Cornelia is currently creating the should spikes for you. Be patient and don't forget to check on it later!" />
|
||||
<missionstate id="7" description="You have obtained the shoulder spike addon." />
|
||||
</mission>
|
||||
<mission name="Wizard Outfits Quest" storageid="17561" startvalue="1" endvalue="7">
|
||||
<missionstate id="1" description="Bring Lugri the Medusa shield!" />
|
||||
<missionstate id="2" description="Bring Lugri the Dragon Scale Mail!" />
|
||||
<missionstate id="3" description="Bring Lugri the Crown Legs!" />
|
||||
<missionstate id="4" description="Bring Lugri the Ring of the Sky!" />
|
||||
<missionstate id="5" description="You got the first Outfit Addon!" />
|
||||
<missionstate id="6" description="Bring The Queen Of The Banshees 50 Holy Orchids and she will reward you with the second addon." />
|
||||
<missionstate id="7" description="You got the second Outfit Addon!" />
|
||||
</mission>
|
||||
<mission name="Pirate Outfit Quest (Sabre)" storageid="17567" startvalue="1" endvalue="5">
|
||||
<missionstate id="1" description="Bring Duncan 100 Eye Patches from pirates!" />
|
||||
<missionstate id="2" description="Bring Duncan 100 peg legs from pirates!" />
|
||||
<missionstate id="3" description="Bring Duncan 100 pirate hooks from pirates!" />
|
||||
<missionstate id="4" description="Go to Morgan and tell him this codeword: 'firebird' to get the outfit addon!" />
|
||||
<missionstate id="5" description="You got the Outfit Addon!" />
|
||||
</mission>
|
||||
<mission name="Oriental Addon: Hipwear" storageid="17555" startvalue="1" endvalue="2">
|
||||
<missionstate id="1" description="Your current task is to find a mermaid's comb. If you have ever encountered a mermaid, you should ask her. Bring the comb to Habdel if you are male or to Ishina if you are female." />
|
||||
<missionstate id="2" description="You have received the first oriental addon." />
|
||||
</mission>
|
||||
<mission name="Oriental Addon: Headgear" storageid="17557" startvalue="1" endvalue="5">
|
||||
<missionstate id="1" description="Your current task is to bring 100 pieces of ape fur to Razan if you are male, or to Miraia if you are female." />
|
||||
<missionstate id="2" description="Your current task is to bring 100 fish fins to Razan if you are male, or to Miraia if you are female." />
|
||||
<missionstate id="3" description="Your current task is to bring 2 enchanted chicken wings to Razan if you are male, or to Miraia if you are female." />
|
||||
<missionstate id="4" description="Your current task is to bring 100 pieces of blue cloth to Razan if you are male, or to Miraia if you are female." />
|
||||
<missionstate id="5" description="You have received the second oriental addon." />
|
||||
</mission>
|
||||
<mission name="Shaman Addon: Staff" storageid="17570" startvalue="2" endvalue="3" ignoreendvalue="true">
|
||||
<missionstate id="2" description="Try to find a monster which sometimes lurks in the Tiquandian jungle as the revenge of the jungle against mankind. Bring the rare root it carries to Chondur as well as 5 voodoo dolls." />
|
||||
<missionstate id="3" description="You have received the first shaman addon." />
|
||||
</mission>
|
||||
<mission name="Shaman Addon: Mask" storageid="17570" startvalue="4" endvalue="5" ignoreendvalue="true">
|
||||
<missionstate id="4" description="Your current task is to collect 5 tribal masks from the dworcs and 5 banana staves from the apes. Bring them to Chondur to earn your shamanic mask." />
|
||||
<missionstate id="5" description="You have received the second shaman addon." />
|
||||
</mission>
|
||||
</quest>
|
||||
<quest name="Sam's Old Backpack" startstorageid="289" startstoragevalue="1">
|
||||
<mission name="Old And Used Backpack Quest" storageid="289" startvalue="1" endvalue="2">
|
||||
<missionstate id="1" description="Sam sends you to see Kroox in Kazordoon to get a special dwarven armor. Just tell him, his old buddy Sam is sending you." />
|
||||
<missionstate id="2" description="You have the permission to retrive a dwarven armor from the mines. The problem is, some giant spiders made the tunnels where the storage is their new home." />
|
||||
</mission>
|
||||
<mission name="Dwarven Armor Quest" storageid="290" startvalue="1" endvalue="1" description="You have completed Dwarven Armor Quest!" />
|
||||
</quest>
|
||||
<quest name="The Ancient Tombs" startstorageid="267" startstoragevalue="1">
|
||||
<mission name="Omruc's Treasure" storageid="267" startvalue="1" endvalue="1" description="You defeated Omruc and received a helmet adornment" />
|
||||
<mission name="Thalas' Treasure" storageid="262" startvalue="1" endvalue="1" description="You defeated Thalas and received a Gem Holder" />
|
||||
<mission name="Diphtrah's Treasure" storageid="265" startvalue="1" endvalue="1" description="You defeated Dipthrah and received a Damaged Helmet" />
|
||||
<mission name="Mahrdis' Treasure" storageid="261" startvalue="1" endvalue="1" description="You defeated Mahrdis and received a Helmet Ornament" />
|
||||
<mission name="Vashresamun's Treasure" storageid="264" startvalue="1" endvalue="1" description="You solved the musical riddles of Vashresamun's Tomb and received a left horn." />
|
||||
<mission name="Morguthis' Treasure" storageid="263" startvalue="1" endvalue="1" description="You defeated Morguthis and received a Right Horn" />
|
||||
<mission name="Rahemos' Treasure" storageid="266" startvalue="1" endvalue="1" description="You defeated Rahemos and received a Helmet Piece" />
|
||||
</quest>
|
||||
<quest name="The Ape City" startstorageid="293" startstoragevalue="1">
|
||||
<mission name="Hairycles' Missions" storageid="293" startvalue="1" endvalue="18">
|
||||
<missionstate id="1" description="Find whisper moss in the dworc settlement south of Port Hope and bring it back to Hairycles." />
|
||||
<missionstate id="2" description="You have completed the first mission. Hairycles was happy about the whisper moss you gave to him. He might have another mission for you." />
|
||||
<missionstate id="3" description="Hairycles asked you to bring him cough syrup from a human settlement. A healer might know more about this medicine." />
|
||||
<missionstate id="4" description="You have completed the second mission. Hairycles was happy about the cough syrup you gave to him. He might have another mission for you." />
|
||||
<missionstate id="5" description="Hairycles asked you to bring him a magical scroll from the lizard settlement Chor." />
|
||||
<missionstate id="6" description="You have completed the third mission. Hairycles appreciated that you brought the scroll to him and will try to read it. Maybe he has another mission for you later." />
|
||||
<missionstate id="7" description="Since Hairycles was not able to read the scroll you brought him, he asked you dig for a tomb in the desert to the east. Proceed in this tomb until you find an obelisk between red stones and read it." />
|
||||
<missionstate id="8" description="You have completed the fourth mission. Hairycles read your mind and can now translate the lizard scroll. He might have another mission for you." />
|
||||
<missionstate id="9" description="Hairycles wants to create a life charm for the ape people. He needs a hydra egg since it has strong regenerating powers." />
|
||||
<missionstate id="10" description="You have completed the fifth mission. Hairycles attempts to create a might charm for the protection of the ape people. He might have another mission for you later." />
|
||||
<missionstate id="11" description="Hairycles need a witches' cap mushroom which is supposed to be hidden in a dungeon deep under Fibula." />
|
||||
<missionstate id="12" description="You have completed the sixth mission. You brought the witches' cap mushroom back to Hairycles. He might have another mission for you." />
|
||||
<missionstate id="13" description="Hairycles is worried about an ape cult which drinks some strange fluid that the lizards left behind. Go to the old lizard temple under Banuta and destroy three of the casks there with a crowbar." />
|
||||
<missionstate id="14" description="You have completed the seventh mission. You found the old lizard ruins under Banuta and destroyed three of the casks with snake blood. Hairycles might have another mission for you." />
|
||||
<missionstate id="15" description="The apes now need a symbol of their faith. Speak with the blind prophet in a cave to the northeast and go to the Forbidden Land. Find a hair of the giant, holy ape Bong and bring it back." />
|
||||
<missionstate id="16" description="You completed the eighth mission. Hairycles gladly accepted the hair of the ape god which you brought him. He told you to have one final mission for you." />
|
||||
<missionstate id="17" description="Go into the deepest catacombs under Banuta and destroy the monument of the snake god with the hammer that Hairycles gave to you." />
|
||||
<missionstate id="18" description="You successfully destroyed the monument of the snake god. As reward, you can buy sacred statues from Hairycles. If you haven't done so yet, you should also ask him for a shaman outfit." />
|
||||
</mission>
|
||||
</quest>
|
||||
<quest name="The Djinn War - Efreet Faction" startstorageid="286" startstoragevalue="1">
|
||||
<mission name="Efreet Mission 1: The Supply Thief" storageid="286" startvalue="1" endvalue="3">
|
||||
<missionstate id="1" description="Travel to Thais and keep your eyes open for something that might give you a clue on the supply thief." />
|
||||
<missionstate id="2" description="You have found the potential supply thief - Partos in Thais seemed very suspicious. Baa'leal might be interested in this matter." />
|
||||
<missionstate id="3" description="You have reported the case to Baa'leal. He seemed very satisfied and told you that Alesar might have another mission for you." />
|
||||
</mission>
|
||||
<mission name="Efreet Mission 2: The Tear of Daraman" storageid="287" startvalue="1" endvalue="3">
|
||||
<missionstate id="1" description="Sneak into Ashta'daramai and steal a "Tear of Daraman". For more information about these gems visit the Efreet library." />
|
||||
<missionstate id="2" description="You have successfully managed to steal a Tear of Daraman from Ashta'daramai. Bring it to Alesar." />
|
||||
<missionstate id="3" description="You have delivered Daraman's Tear. Alesar seemed very satisfied and told you that Malor himself might have another mission for you." />
|
||||
</mission>
|
||||
<mission name="Efreet Mission 3: The Sleeping Lamp" storageid="288" startvalue="1" endvalue="3">
|
||||
<missionstate id="1" description="Malor asked you to find Fa'hradin's sleeping lamp in the orc fortress at Ulderek's Rock. Then, sneak into Ashta'daramai and exchange Gabel's sleeping lamp with Fa'hradin's lamp." />
|
||||
<missionstate id="2" description="You successfully exchanged the lamps. Malor will be happy to hear about this." />
|
||||
<missionstate id="3" description="The Efreet are very satisfied with your help. King Malor allowed you to trade with Yaman and Alesar." />
|
||||
</mission>
|
||||
</quest>
|
||||
<quest name="The Djinn War - Marid Faction" startstorageid="280" startstoragevalue="1">
|
||||
<mission name="Marid Mission 1: The Dwarven Kitchen" storageid="280" startvalue="1" endvalue="2">
|
||||
<missionstate id="1" description="Bring a cookbook of the dwarven kitchen to Bo'ques." />
|
||||
<missionstate id="2" description="You have delivered the cookbook. Bo'ques seemed very satisfied and told you that Fa'hradin might have another mission for you." />
|
||||
</mission>
|
||||
<mission name="Marid Mission 2: The Spyreport" storageid="281" startvalue="1" endvalue="2">
|
||||
<missionstate id="1" description="Fa'hradin asked you to sneak into the Efreet fortress Mal'ouqhah and find their undercover spy. The codeword is PIEDPIPER." />
|
||||
<missionstate id="2" description="You have delivered the spyreport. Fa'hradin seemed impressed and told you that Gabel himself might have another mission for you." />
|
||||
</mission>
|
||||
<mission name="Rata'Mari and the Cheese" storageid="282" startvalue="1" endvalue="2">
|
||||
<missionstate id="1" description="You have promised Rata'Mari cheese. Once you deliver some to him, he will hand over his spyreport." />
|
||||
<missionstate id="2" description="You got Rata'Mari's spyreport. He seems to be quite happy with the cheese you brought him." />
|
||||
</mission>
|
||||
<mission name="Marid Mission 3: The Sleeping Lamp" storageid="283" startvalue="1" endvalue="3">
|
||||
<missionstate id="1" description="Gabel asked you to find Fa'hradin's sleeping lamp in the orc fortress at Ulderek's Rock. Then, sneak into Mal'ouqhah and exchange Malor's sleeping lamp with Fa'hradin's lamp." />
|
||||
<missionstate id="2" description="You successfully exchanged the lamps. Gabel will be happy to hear about this." />
|
||||
<missionstate id="3" description="The Marid deeply appreciate your help. King Gabel allowed you to trade with Haroun and Nah'bob." />
|
||||
</mission>
|
||||
</quest>
|
||||
<quest name="The Postman Missions" startstorageid="227" startstoragevalue="1">
|
||||
<mission name="Mission 1 - Check Postal Routes" storageid="227" startvalue="1" endvalue="6">
|
||||
<missionstate id="1" description="Kevin wants you to travel with Captain Bluebear to Carlin." />
|
||||
<missionstate id="2" description="Kevin wants you to travel with Uzon in Femor Hills to Edron." />
|
||||
<missionstate id="3" description="Kevin wants you to travel with Captain Seahorse to Venore." />
|
||||
<missionstate id="4" description="Kevin wants you to travel with Brodrosch to Cormaya" />
|
||||
<missionstate id="5" description="You have checked the Postal Routes, report back to Kevin!" />
|
||||
<missionstate id="6" description="You have reported back that you have completed the mission." />
|
||||
</mission>
|
||||
<mission name="Mission 2 - Fix Mailbox" storageid="228" startvalue="1" endvalue="3">
|
||||
<missionstate id="1" description="Kevin wants you to fix one of their Mailboxes located on Folda with a crowbar." />
|
||||
<missionstate id="2" description="You have fixed the mailbox, report back to Kevin!" />
|
||||
<missionstate id="3" description="You have reported back that you have completed the mission." />
|
||||
</mission>
|
||||
<mission name="Mission 3 - Bill Delivery" storageid="229" startvalue="1" endvalue="4">
|
||||
<missionstate id="1" description="Kevin wants you to deliver a bill to the stage magician David Brassacres. He's hiding from his creditors somewhere in Venore." />
|
||||
<missionstate id="2" description="You have found the David Brassacres, deliver him the bill!" />
|
||||
<missionstate id="3" description="You have delivered the bill to the stage magician David Brassacres, report back to Kevin!" />
|
||||
<missionstate id="4" description="You have reported back that you have completed the mission." />
|
||||
</mission>
|
||||
<mission name="Mission 4 - Aggressive Dogs" storageid="230" startvalue="1" endvalue="21">
|
||||
<missionstate id="1" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="2" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="3" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="4" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="5" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="6" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="7" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="8" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="9" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="10" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="11" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="12" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="13" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="14" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="15" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="16" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="17" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="18" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="19" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="20" description="Kevin has asked you to deliver 20 Bones to him." />
|
||||
<missionstate id="21" description="You have delivered 20 Bones to Kevin." />
|
||||
</mission>
|
||||
<mission name="Mission 5 - Present Delivery" storageid="231" startvalue="1" endvalue="3">
|
||||
<missionstate id="1" description="Kevin has asked you to retrieve the present behind the door on the lower right side of his room and deliver it to Dermot in Fibula." />
|
||||
<missionstate id="2" description="You have delivered the present to Dermot, report back to Kevin!" />
|
||||
<missionstate id="3" description="You have reported back that you have completed the mission." />
|
||||
</mission>
|
||||
<mission name="Mission 6 - New Uniforms" storageid="233" startvalue="1" endvalue="11">
|
||||
<missionstate id="1" description="Kevin has asked you to travel to Venore and negotiate with Hugo for new uniforms." />
|
||||
<missionstate id="2" description="Hugo said that his dog ate the last dress pattern they used and he has no clue where Kevin Postner got it from, go ask Kevin." />
|
||||
<missionstate id="3" description="Kevin wants you to ask the great Technomancer Talphion in Kazordoon for the technical details." />
|
||||
<missionstate id="4" description="Talphion will send a copy to Kevin, report back to Kevin." />
|
||||
<missionstate id="5" description="Kevin wants you tk ask Queen Eloise of Carlin for the perfect colours." />
|
||||
<missionstate id="6" description="Queen Eloise said she will send some color samples via mail to Kevin, report back to Kevin." />
|
||||
<missionstate id="7" description="Kevin has asked you to go to Noodles and find out what he dislikes the most: mouldy cheese, a piece of fur or a banana skin." />
|
||||
<missionstate id="8" description="You have found out what Noodles dislike! Report back to Kevin." />
|
||||
<missionstate id="9" description="Kevin wants you to tell Hugo that they order those uniforms." />
|
||||
<missionstate id="10" description="Hugo has agreed to make the uniforms, report back to Kevin!" />
|
||||
<missionstate id="11" description="You have reported back that you have completed the mission." />
|
||||
</mission>
|
||||
<mission name="Mission 7 - Measurements" storageid="234" startvalue="1" endvalue="8">
|
||||
<missionstate id="1" description="Kevin wants you to bring him the measurements of Ben, Lokur, Dove, Liane, Chrystal and Olrik." />
|
||||
<missionstate id="2" description="You have received the measurements from 1 of 6 postofficers." />
|
||||
<missionstate id="3" description="You have received the measurements from 2 of 6 postofficers." />
|
||||
<missionstate id="4" description="You have received the measurements from 3 of 6 postofficers." />
|
||||
<missionstate id="5" description="You have received the measurements from 4 of 6 postofficers." />
|
||||
<missionstate id="6" description="You have received the measurements from 5 of 6 postofficers." />
|
||||
<missionstate id="7" description="You have received all measurements, report back to Kevin!" />
|
||||
<missionstate id="8" description="You have reported back that you have completed the mission." />
|
||||
</mission>
|
||||
<mission name="Mission 8 - Missing Courier" storageid="242" startvalue="1" endvalue="2">
|
||||
<missionstate id="1" description="Kevin wants you to find the missing courier Waldo or at least his posthorn." />
|
||||
<missionstate id="2" description="You have reported back that you have completed the mission." />
|
||||
</mission>
|
||||
<mission name="Mission 9 - Dear Santa" storageid="244" startvalue="1" endvalue="3">
|
||||
<missionstate id="1" description="Kevin wants you to deliver som letters to Santa Claus on Vega." />
|
||||
<missionstate id="2" description="You have delivered the letters to Santa Claus on Vega." />
|
||||
<missionstate id="3" description="You have reported back that you have completed the mission." />
|
||||
</mission>
|
||||
<mission name="Mission 10 - Mintwallin" storageid="245" startvalue="1" endvalue="3">
|
||||
<missionstate id="1" description="Kevin wants you to deliver a letter to Markwin, king of Mintwallin from his mother." />
|
||||
<missionstate id="2" description="You have delivered the letter to Markwin." />
|
||||
<missionstate id="3" description="You have reported back that you have completed the mission." />
|
||||
</mission>
|
||||
<mission name="Postman Rank" storageid="250" startvalue="1" endvalue="5">
|
||||
<missionstate id="1" description="Assistant Postman" />
|
||||
<missionstate id="2" description="Postman" />
|
||||
<missionstate id="3" description="Grand Postman" />
|
||||
<missionstate id="4" description="Grand Postman for Special Operations" />
|
||||
<missionstate id="5" description="Arch Postman" />
|
||||
</mission>
|
||||
</quest>
|
||||
<quest name="The Shattered Isles" startstorageid="17593" startstoragevalue="1">
|
||||
<mission name="A Djinn in Love" storageid="17502" startvalue="9" endvalue="13" ignoreendvalue="true">
|
||||
<missionstate id="9" description="You need to return to Marina and ask her for a date with Ocelus." />
|
||||
<missionstate id="10" description="You need to return to Ocelus with the bad news." />
|
||||
<missionstate id="11" description="Ocelus told you to get a poem for him, if you didn't buy one already, head to Ab'Dendriel and buy a Love Poem from Elvith." />
|
||||
<missionstate id="12" description="You need to go recite the poem to Marina and impress her with the Djinn's romantic and poetic abilities." />
|
||||
<missionstate id="13" description="After reciting the poem to Marina, she decided to date Ocelus and release Ray Striker from her spell." />
|
||||
</mission>
|
||||
<mission name="A Poem for the Mermaid" storageid="17502" startvalue="7" endvalue="9" ignoreendvalue="true">
|
||||
<missionstate id="7" description="You need to find the man-stealing mermaid and try to break her spell over poor Raymond, the mermaid Marina is near the northern coast of the island." />
|
||||
<missionstate id="8" description="You discovered that she does in fact have a spell on him, and will not release him unless someone better comes along." />
|
||||
<missionstate id="9" description="You are a true master in reciting love poems now. No mermaid will be able to resist if you ask for a date!" />
|
||||
</mission>
|
||||
<mission name="Access to Goroma" storageid="17501" startvalue="2" endvalue="2" description="After helping Jack Fate to collect the 30 woodpieces, Jack Fate in Liberty Bay will bring you to Goroma." />
|
||||
<mission name="Access to Laguna Island" storageid="17502" startvalue="13" endvalue="13" ignoreendvalue="true" description="After arranging a date for Marina and Ocelus, you are allowed to use Marina's sea turtles. They will bring you to the idyllic Laguna Islands." />
|
||||
<mission name="Access to Meriana" storageid="17502" startvalue="6" endvalue="6" ignoreendvalue="true" description="After earning the trust of the governor's daughter Eleonore, Captain Waverider in Liberty Bay will bring you to Meriana if you tell him the secret codeword 'peg leg'." />
|
||||
<mission name="The Counterspell" storageid="17509" startvalue="2" endvalue="5">
|
||||
<missionstate id="2" description="You have begun Chondur's ritual. Bring him a fresh dead chicken so that he can begin to create a counterspell which will allow you to pass the magical barrier on Goroma." />
|
||||
<missionstate id="3" description="You have begun Chondur's ritual. Bring him a fresh dead rat so that he can continue creating a counterspell which will allow you to pass the magical barrier on Goroma." />
|
||||
<missionstate id="4" description="You have begun Chondur's ritual. Bring him a fresh dead black sheep so that he can complete his counterspell which will allow you to pass the magical barrier on Goroma." />
|
||||
<missionstate id="5" description="You may pass the energy barrier on Goroma. The counterspell Chondur created for you with his ritual will allow you to withstand the evil magic of the cultist." />
|
||||
</mission>
|
||||
<mission name="The Errand" storageid="17502" startvalue="3" endvalue="4" ignoreendvalue="true">
|
||||
<missionstate id="3" description="You told Eleonore to run a small errand. Deliver the 200 gold pieces she gave to the herbalist Charlotta in the south-western part of Liberty Bay." />
|
||||
<missionstate id="4" description="You delivered the gold to Charlotta. Return to Eleonore and tell her the secret password: peg leg" />
|
||||
</mission>
|
||||
<mission name="The Governor's Daughter" storageid="17502" startvalue="1" endvalue="2" ignoreendvalue="true">
|
||||
<missionstate id="1" description="You promised to find Eleonore's lost ring. She told you that a parrot stole it from her dressing table and flew to the nearby mountains. You might need a rake to retrieve the ring." />
|
||||
<missionstate id="2" description="You returned the ring to Eleonore." />
|
||||
</mission>
|
||||
</quest>
|
||||
<quest name="The Queen of the Banshees" startstorageid="5" startstoragevalue="1">
|
||||
<mission name="The Hidden Seal" storageid="5" startvalue="1" endvalue="1" description="You broke the first seal." />
|
||||
<mission name="The Seal of Logic" storageid="10" startvalue="1" endvalue="1" description="You broke the sixth seal." />
|
||||
<mission name="The Seal of True Path" storageid="9" startvalue="1" endvalue="1" description="You broke the fifth seal." />
|
||||
<mission name="The Seal of Sacrifice" storageid="4" startvalue="1" endvalue="1" description="You broke the fourth seal." />
|
||||
<mission name="The Seal of Demonrage" storageid="7" startvalue="1" endvalue="1" description="You broke the third seal." />
|
||||
<mission name="The Plague Seal" storageid="6" startvalue="1" endvalue="1" description="You broke the second seal." />
|
||||
<mission name="All Seals" storageid="11" startvalue="1" endvalue="1" description="You broke all the seals." />
|
||||
</quest>
|
||||
<quest name="The White Raven Monastery" startstorageid="62" startstoragevalue="2">
|
||||
<mission name="Access to the Isle of Kings" storageid="62" endvalue="2">
|
||||
<missionstate id="2" description="You are a friend of Dalbrect. Since you returned his family brooch he will sail you to the Isle of Kings unless you do something stupid." />
|
||||
</mission>
|
||||
<mission name="The Investigation" storageid="17584" startvalue="1" endvalue="2">
|
||||
<missionstate id="1" description="Investigate the catacombs. Abbot Costello should be interested in information about brother Fugio." />
|
||||
<missionstate id="2" description="You returned Fugio's Diary. Costello was very thankful about your help and gave you a blessed ankh as reward." />
|
||||
</mission>
|
||||
</quest>
|
||||
<quest name="The Serpentine Tower" startstorageid="17596" startstoragevalue="1">
|
||||
<mission name="The Academy of Magic Arts Disaster" storageid="17596" endvalue="2">
|
||||
<missionstate id="1" description="The evil ancient gods teleported you to the Serpentine Tower. You must survive the disaster!" />
|
||||
<missionstate id="2" description="The earthquake destroyed the Serpentine Tower. There must be a way to get in the undergrounds." />
|
||||
</mission>
|
||||
<mission name="The Reward of The Serpentine Tower" storageid="17604" endvalue="1">
|
||||
<missionstate id="1" description="You have solved The Serpentine Tower live event quest!" />
|
||||
</mission>
|
||||
</quest>
|
||||
<quest name="Killing in the Name of..." startstorageid="17607" startstoragevalue="1">
|
||||
<!-- Daniel Steelsoul: level 6 to 49 -->
|
||||
<mission name="Daniel Steelsoul: Trolls" storageid="17633" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 trolls." />
|
||||
<mission name="Daniel Steelsoul: Trolls" storageid="17633" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Daniel Steelsoul: Goblins" storageid="17634" startvalue="0" endvalue="150" description="You already hunted |STATE|/150 goblins." />
|
||||
<mission name="Daniel Steelsoul: Goblins" storageid="17634" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Daniel Steelsoul: Rotworms" storageid="17635" startvalue="0" endvalue="150" description="You already hunted |STATE|/150 rotworms." />
|
||||
<mission name="Daniel Steelsoul: Rotworms" storageid="17635" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Daniel Steelsoul: Cyclopes" storageid="17636" startvalue="0" endvalue="150" description="You already hunted |STATE|/150 cyclopes." />
|
||||
<mission name="Daniel Steelsoul: Cyclopes" storageid="17636" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
|
||||
<!-- killing in the name of rank -->
|
||||
<mission name="Paw and Fur: Member" storageid="17615" startvalue="0" endvalue="10" description="You are member of the Paw and Fur hunting elite. You currently have |STATE| Paw & Fur points." />
|
||||
<mission name="Paw and Fur: Ranger" storageid="17615" startvalue="11" endvalue="20" description="You are Ranger of the Paw and Fur hunting elite. You currently have |STATE| Paw & Fur points." />
|
||||
<mission name="Paw and Fur: Big Game Hunter" storageid="17615" startvalue="21" endvalue="40" description="You are Big Game Hunter in the Paw and Fur hunting elite. You currently have |STATE| Paw & Fur points." />
|
||||
<mission name="Paw and Fur: Trophy Hunter" storageid="17615" startvalue="41" endvalue="70" description="You are Trophy Hunter in the Paw and Fur hunting elite. You currently have |STATE| Paw & Fur points. Ask Grizzly Adams for 'special task' he might have something for you." />
|
||||
<mission name="Paw and Fur: Elite Hunter" storageid="17615" startvalue="71" endvalue="100" description="You have obtained the highest possible rank in the Paw and Fur hunting elite, you are Elite Hunter. You currently have |STATE| Paw & Fur points. Ask Grizzly Adams for 'special task' he might have something for you." />
|
||||
|
||||
<!-- Grizzly Adams: level 6 to 49 -->
|
||||
<mission name="Paw and Fur: Crocodiles" storageid="17609" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 crocodiles." />
|
||||
<mission name="Paw and Fur: Crocodiles" storageid="17609" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Tarantulas" storageid="17610" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 tarantulas." />
|
||||
<mission name="Paw and Fur: Tarantulas" storageid="17610" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Carniphilas" storageid="17611" startvalue="0" endvalue="50" description="You already hunted |STATE|/50 carniphilas." />
|
||||
<mission name="Paw and Fur: Carniphilas" storageid="17611" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Apes" storageid="17612" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 apes." />
|
||||
<mission name="Paw and Fur: Apes" storageid="17612" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Thornback Tortoises" storageid="17613" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 thornback tortoises." />
|
||||
<mission name="Paw and Fur: Thornback Tortoises" storageid="17613" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Gargoyles" storageid="17614" startvalue="0" endvalue="65" description="You already hunted |STATE|/65 gargoyles." />
|
||||
<mission name="Paw and Fur: Gargoyles" storageid="17614" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Frost Trolls" storageid="17697" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 frost trolls." />
|
||||
<mission name="Paw and Fur: Frost Trolls" storageid="17697" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Swamp Trolls" storageid="17698" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 swamp trolls." />
|
||||
<mission name="Paw and Fur: Swamp Trolls" storageid="17698" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Rats" storageid="17699" startvalue="0" endvalue="25" description="You already hunted |STATE|/25 rats." />
|
||||
<mission name="Paw and Fur: Rats" storageid="17699" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Wolves" storageid="17700" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 wolves." />
|
||||
<mission name="Paw and Fur: Wolves" storageid="17700" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Wasps" storageid="17701" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 wasps." />
|
||||
<mission name="Paw and Fur: Wasps" storageid="17701" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Larvas" storageid="17702" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 larvas." />
|
||||
<mission name="Paw and Fur: Larvas" storageid="17702" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Dwarfs" storageid="17703" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 dwarfs." />
|
||||
<mission name="Paw and Fur: Dwarfs" storageid="17703" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Low Undeads" storageid="17704" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 undeads." />
|
||||
<mission name="Paw and Fur: Low Undeads" storageid="17704" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Elves" storageid="17729" startvalue="0" endvalue="200" description="You already hunted |STATE|/200 elves." />
|
||||
<mission name="Paw and Fur: Elves" storageid="17729" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Bugs" storageid="17730" startvalue="0" endvalue="40" description="You already hunted |STATE|/40 bugs." />
|
||||
<mission name="Paw and Fur: Bugs" storageid="17730" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Outlaws" storageid="17731" startvalue="0" endvalue="250" description="You already hunted |STATE|/250 outlaws." />
|
||||
<mission name="Paw and Fur: Outlaws" storageid="17731" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Hyaenas" storageid="17732" startvalue="0" endvalue="30" description="You already hunted |STATE|/30 hyaenas." />
|
||||
<mission name="Paw and Fur: Hyaenas" storageid="17732" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Lions" storageid="17733" startvalue="0" endvalue="20" description="You already hunted |STATE|/20 lions." />
|
||||
<mission name="Paw and Fur: Lions" storageid="17733" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Bears" storageid="17734" startvalue="0" endvalue="35" description="You already hunted |STATE|/35 bears." />
|
||||
<mission name="Paw and Fur: Bears" storageid="17734" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Slimes" storageid="17735" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 slimes." />
|
||||
<mission name="Paw and Fur: Slimes" storageid="17735" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Beholders" storageid="17736" startvalue="0" endvalue="250" description="You already hunted |STATE|/250 beholders." />
|
||||
<mission name="Paw and Fur: Beholders" storageid="17736" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Djinns" storageid="17737" startvalue="0" endvalue="500" description="You already hunted |STATE|/500 djinns." />
|
||||
<mission name="Paw and Fur: Djinns" storageid="17737" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Pirates" storageid="17738" startvalue="0" endvalue="600" description="You already hunted |STATE|/600 pirates." />
|
||||
<mission name="Paw and Fur: Pirates" storageid="17738" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
|
||||
<!--Grizzly Adams: level 50 to 79 -->
|
||||
<mission name="Paw and Fur: Quara Scouts" storageid="17616" startvalue="0" endvalue="200" description="You already hunted |STATE|/200 quara scouts." />
|
||||
<mission name="Paw and Fur: Quara Scouts" storageid="17616" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Ancient Scarabs" storageid="17617" startvalue="0" endvalue="125" description="You already hunted |STATE|/125 ancient scarabs." />
|
||||
<mission name="Paw and Fur: Ancient Scarabs" storageid="17617" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Wyverns" storageid="17618" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 wyverns." />
|
||||
<mission name="Paw and Fur: Wyverns" storageid="17618" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Bonebeasts" storageid="17619" startvalue="0" endvalue="100" description="You already hunted |STATE|/100 bonebeasts." />
|
||||
<mission name="Paw and Fur: Bonebeasts" storageid="17619" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Dragons" storageid="17620" startvalue="0" endvalue="200" description="You already hunted |STATE|/200 dragons." />
|
||||
<mission name="Paw and Fur: Dragons" storageid="17620" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Medium Class Orcs" storageid="17712" startvalue="0" endvalue="300" description="You already hunted |STATE|/300 orcs." />
|
||||
<mission name="Paw and Fur: Medium Class Orcs" storageid="17712" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: High Class Minotaurs" storageid="17713" startvalue="0" endvalue="300" description="You already hunted |STATE|/300 minotaurs." />
|
||||
<mission name="Paw and Fur: High Class Minotaurs" storageid="17713" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Lizards" storageid="17714" startvalue="0" endvalue="300" description="You already hunted |STATE|/300 lizards." />
|
||||
<mission name="Paw and Fur: Lizards" storageid="17714" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: High Class Dwarfs" storageid="17715" startvalue="0" endvalue="300" description="You already hunted |STATE|/300 dwarfs." />
|
||||
<mission name="Paw and Fur: High Class Dwarfs" storageid="17715" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Medium Undeads" storageid="17716" startvalue="0" endvalue="200" description="You already hunted |STATE|/200 undeads." />
|
||||
<mission name="Paw and Fur: Medium Undeads" storageid="17716" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
|
||||
<!--Grizzly Adams: level 80 to 129 -->
|
||||
<mission name="Paw and Fur: Quara" storageid="17621" startvalue="0" endvalue="600" description="You already hunted |STATE|/600 quara." />
|
||||
<mission name="Paw and Fur: Quara" storageid="17621" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Giant Spiders" storageid="17622" startvalue="0" endvalue="500" description="You already hunted |STATE|/500 giant spiders." />
|
||||
<mission name="Paw and Fur: Giant Spiders" storageid="17622" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Banshees" storageid="17623" startvalue="0" endvalue="300" description="You already hunted |STATE|/300 banshees." />
|
||||
<mission name="Paw and Fur: Banshees" storageid="17623" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Lichs" storageid="17624" startvalue="0" endvalue="500" description="You already hunted |STATE|/500 lichs." />
|
||||
<mission name="Paw and Fur: Lichs" storageid="17624" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Cults" storageid="17625" startvalue="0" endvalue="500" description="You already hunted |STATE|/500 cults." />
|
||||
<mission name="Paw and Fur: Cults" storageid="17625" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: High Class Orcs" storageid="17717" startvalue="0" endvalue="125" description="You already hunted |STATE|/125 orcs." />
|
||||
<mission name="Paw and Fur: High Class Orcs" storageid="17717" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Heros" storageid="17718" startvalue="0" endvalue="150" description="You already hunted |STATE|/150 heros." />
|
||||
<mission name="Paw and Fur: Heros" storageid="17718" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Necromancers" storageid="17719" startvalue="0" endvalue="300" description="You already hunted |STATE|/300 necromancers." />
|
||||
<mission name="Paw and Fur: Necromancers" storageid="17719" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
|
||||
<!--Grizzly Adams: level 130+ -->
|
||||
<mission name="Paw and Fur: Hydras" storageid="17626" startvalue="0" endvalue="650" description="You already hunted |STATE|/650 hydras." />
|
||||
<mission name="Paw and Fur: Hydras" storageid="17626" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Serpent Spawns" storageid="17627" startvalue="0" endvalue="800" description="You already hunted |STATE|/800 serpent spawns." />
|
||||
<mission name="Paw and Fur: Serpent Spawns" storageid="17627" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Behemoths" storageid="17628" startvalue="0" endvalue="700" description="You already hunted |STATE|/700 behemoths." />
|
||||
<mission name="Paw and Fur: Behemoths" storageid="17628" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Dragon Lords" storageid="17629" startvalue="0" endvalue="600" description="You already hunted |STATE|/600 dragon lords." />
|
||||
<mission name="Paw and Fur: Dragon Lords" storageid="17629" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Hand of Cursed Fates" storageid="17630" startvalue="0" endvalue="200" description="You already hunted |STATE|/200 hand of cursed fates." />
|
||||
<mission name="Paw and Fur: Hand of Cursed Fates" storageid="17630" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Juggernauts" storageid="17631" startvalue="0" endvalue="200" description="You already hunted |STATE|/200 juggernauts." />
|
||||
<mission name="Paw and Fur: Juggernauts" storageid="17631" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Nightmares" storageid="17720" startvalue="0" endvalue="150" description="You already hunted |STATE|/150 nightmares." />
|
||||
<mission name="Paw and Fur: Nightmares" storageid="17720" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Warlocks" storageid="17721" startvalue="0" endvalue="300" description="You already hunted |STATE|/300 warlocks." />
|
||||
<mission name="Paw and Fur: Warlocks" storageid="17721" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
<mission name="Paw and Fur: Demons" storageid="17722" startvalue="0" endvalue="6666" description="You already hunted |STATE|/6666 demons." />
|
||||
<mission name="Paw and Fur: Demons" storageid="17722" startvalue="99999" endvalue="99999" description="You have finished the task." />
|
||||
</quest>
|
||||
<quest name="Young Mage Tasks" startstorageid="17646" startstoragevalue="1">
|
||||
<mission name="Proof of the trustworthy" storageid="17645" startvalue="0" endvalue="50" description="You already hunted |STATE|/50 amazons." />
|
||||
<mission name="Reward of the trustworthy" storageid="17646" startvalue="2" endvalue="2" description="You have proved your trustworthy and claimed the reward." />
|
||||
</quest>
|
||||
<quest name="Young Paladin Tasks" startstorageid="17647" startstoragevalue="1">
|
||||
<mission name="Proof of the trustworthy" storageid="17648" startvalue="0" endvalue="50" description="You already hunted |STATE|/50 minotaurs." />
|
||||
<mission name="Reward of the trustworthy" storageid="17647" startvalue="2" endvalue="2" description="You have proved your trustworthy and claimed the reward." />
|
||||
</quest>
|
||||
<quest name="Young Knight Tasks" startstorageid="17650" startstoragevalue="1">
|
||||
<mission name="Proof of the trustworthy" storageid="17651" startvalue="0" endvalue="50" description="You already hunted |STATE|/50 orcs." />
|
||||
<mission name="Reward of the trustworthy" storageid="17650" startvalue="2" endvalue="2" description="You have proved your trustworthy and claimed the reward." />
|
||||
</quest>
|
||||
</quests>
|
||||
13
app/SabrehavenServer/data/XML/stages.xml
Normal file
13
app/SabrehavenServer/data/XML/stages.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<stages>
|
||||
<config enabled="1"/>
|
||||
<stage minlevel="1" maxlevel="10" multiplier="10" />
|
||||
<stage minlevel="11" maxlevel="20" multiplier="9" />
|
||||
<stage minlevel="21" maxlevel="30" multiplier="8" />
|
||||
<stage minlevel="31" maxlevel="40" multiplier="7" />
|
||||
<stage minlevel="41" maxlevel="50" multiplier="6" />
|
||||
<stage minlevel="51" maxlevel="60" multiplier="5" />
|
||||
<stage minlevel="61" maxlevel="70" multiplier="4" />
|
||||
<stage minlevel="71" maxlevel="80" multiplier="3" />
|
||||
<stage minlevel="81" multiplier="2" />
|
||||
</stages>
|
||||
84
app/SabrehavenServer/data/XML/vocations.xml
Normal file
84
app/SabrehavenServer/data/XML/vocations.xml
Normal file
@@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<vocations>
|
||||
<vocation id="0" flagid="0" name="None" description="none" gaincap="10" gainhp="5" gainmana="5" gainhpticks="6" gainhpamount="1" gainmanaticks="6" gainmanaamount="1" manamultiplier="4.0" attackspeed="2000" basespeed="70" soulmax="100" gainsoulticks="120" fromvoc="0">
|
||||
<skill id="0" multiplier="1.5"/>
|
||||
<skill id="1" multiplier="2.0"/>
|
||||
<skill id="2" multiplier="2.0"/>
|
||||
<skill id="3" multiplier="2.0"/>
|
||||
<skill id="4" multiplier="2.0"/>
|
||||
<skill id="5" multiplier="1.5"/>
|
||||
<skill id="6" multiplier="1.1"/>
|
||||
</vocation>
|
||||
<vocation id="1" flagid="1" name="Sorcerer" description="a sorcerer" gaincap="10" gainhp="5" gainmana="30" gainhpticks="12" gainhpamount="1" gainmanaticks="3" gainmanaamount="2" manamultiplier="1.1" attackspeed="2000" basespeed="70" soulmax="100" gainsoulticks="120" fromvoc="1">
|
||||
<skill id="0" multiplier="1.5"/>
|
||||
<skill id="1" multiplier="2.0"/>
|
||||
<skill id="2" multiplier="2.0"/>
|
||||
<skill id="3" multiplier="2.0"/>
|
||||
<skill id="4" multiplier="2.0"/>
|
||||
<skill id="5" multiplier="1.5"/>
|
||||
<skill id="6" multiplier="1.1"/>
|
||||
</vocation>
|
||||
<vocation id="2" flagid="2" name="Druid" description="a druid" gaincap="10" gainhp="5" gainmana="30" gainhpticks="12" gainhpamount="1" gainmanaticks="3" gainmanaamount="2" manamultiplier="1.1" attackspeed="2000" basespeed="70" soulmax="100" gainsoulticks="120" fromvoc="2">
|
||||
<skill id="0" multiplier="1.5"/>
|
||||
<skill id="1" multiplier="1.8"/>
|
||||
<skill id="2" multiplier="1.8"/>
|
||||
<skill id="3" multiplier="1.8"/>
|
||||
<skill id="4" multiplier="1.8"/>
|
||||
<skill id="5" multiplier="1.5"/>
|
||||
<skill id="6" multiplier="1.1"/>
|
||||
</vocation>
|
||||
<vocation id="3" flagid="4" name="Paladin" description="a paladin" gaincap="20" gainhp="10" gainmana="15" gainhpticks="8" gainhpamount="1" gainmanaticks="4" gainmanaamount="2" manamultiplier="1.4" attackspeed="2000" basespeed="70" soulmax="100" gainsoulticks="120" fromvoc="3">
|
||||
<skill id="0" multiplier="1.2"/>
|
||||
<skill id="1" multiplier="1.2"/>
|
||||
<skill id="2" multiplier="1.2"/>
|
||||
<skill id="3" multiplier="1.2"/>
|
||||
<skill id="4" multiplier="1.1"/>
|
||||
<skill id="5" multiplier="1.1"/>
|
||||
<skill id="6" multiplier="1.1"/>
|
||||
</vocation>
|
||||
<vocation id="4" flagid="8" name="Knight" description="a knight" gaincap="25" gainhp="15" gainmana="5" gainhpticks="6" gainhpamount="1" gainmanaticks="6" gainmanaamount="2" manamultiplier="3.0" attackspeed="2000" basespeed="70" soulmax="100" gainsoulticks="120" fromvoc="4">
|
||||
<skill id="0" multiplier="1.1"/>
|
||||
<skill id="1" multiplier="1.1"/>
|
||||
<skill id="2" multiplier="1.1"/>
|
||||
<skill id="3" multiplier="1.1"/>
|
||||
<skill id="4" multiplier="1.4"/>
|
||||
<skill id="5" multiplier="1.1"/>
|
||||
<skill id="6" multiplier="1.1"/>
|
||||
</vocation>
|
||||
<vocation id="5" flagid="1" name="Master Sorcerer" description="a master sorcerer" gaincap="10" gainhp="5" gainmana="30" gainhpticks="12" gainhpamount="1" gainmanaticks="2" gainmanaamount="2" manamultiplier="1.1" attackspeed="2000" basespeed="70" soulmax="200" gainsoulticks="15" fromvoc="1">
|
||||
<skill id="0" multiplier="1.5"/>
|
||||
<skill id="1" multiplier="2.0"/>
|
||||
<skill id="2" multiplier="2.0"/>
|
||||
<skill id="3" multiplier="2.0"/>
|
||||
<skill id="4" multiplier="2.0"/>
|
||||
<skill id="5" multiplier="1.5"/>
|
||||
<skill id="6" multiplier="1.1"/>
|
||||
</vocation>
|
||||
<vocation id="6" flagid="2" name="Elder Druid" description="an elder druid" gaincap="10" gainhp="5" gainmana="30" gainhpticks="12" gainhpamount="1" gainmanaticks="2" gainmanaamount="2" manamultiplier="1.1" attackspeed="2000" basespeed="70" soulmax="200" gainsoulticks="15" fromvoc="2">
|
||||
<skill id="0" multiplier="1.5"/>
|
||||
<skill id="1" multiplier="1.8"/>
|
||||
<skill id="2" multiplier="1.8"/>
|
||||
<skill id="3" multiplier="1.8"/>
|
||||
<skill id="4" multiplier="1.8"/>
|
||||
<skill id="5" multiplier="1.5"/>
|
||||
<skill id="6" multiplier="1.1"/>
|
||||
</vocation>
|
||||
<vocation id="7" flagid="4" name="Royal Paladin" description="a royal paladin" gaincap="20" gainhp="10" gainmana="15" gainhpticks="6" gainhpamount="1" gainmanaticks="3" gainmanaamount="2" manamultiplier="1.4" attackspeed="2000" basespeed="70" soulmax="200" gainsoulticks="15" fromvoc="3">
|
||||
<skill id="0" multiplier="1.2"/>
|
||||
<skill id="1" multiplier="1.2"/>
|
||||
<skill id="2" multiplier="1.2"/>
|
||||
<skill id="3" multiplier="1.2"/>
|
||||
<skill id="4" multiplier="1.1"/>
|
||||
<skill id="5" multiplier="1.1"/>
|
||||
<skill id="6" multiplier="1.1"/>
|
||||
</vocation>
|
||||
<vocation id="8" flagid="8" name="Elite Knight" description="an elite knight" gaincap="25" gainhp="15" gainmana="5" gainhpticks="4" gainhpamount="1" gainmanaticks="6" gainmanaamount="2" manamultiplier="3.0" attackspeed="2000" basespeed="70" soulmax="200" gainsoulticks="15" fromvoc="4">
|
||||
<skill id="0" multiplier="1.1"/>
|
||||
<skill id="1" multiplier="1.1"/>
|
||||
<skill id="2" multiplier="1.1"/>
|
||||
<skill id="3" multiplier="1.1"/>
|
||||
<skill id="4" multiplier="1.4"/>
|
||||
<skill id="5" multiplier="1.1"/>
|
||||
<skill id="6" multiplier="1.1"/>
|
||||
</vocation>
|
||||
</vocations>
|
||||
571
app/SabrehavenServer/data/actions/actions.xml
Normal file
571
app/SabrehavenServer/data/actions/actions.xml
Normal file
@@ -0,0 +1,571 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<actions>
|
||||
<!-- Nostalrius Tibia Map Related Actions -->
|
||||
<action actionid="1" script="nostalrius/1.lua" />
|
||||
<action actionid="2" script="nostalrius/2.lua" />
|
||||
<action actionid="3" script="nostalrius/3.lua" />
|
||||
<action actionid="4" script="nostalrius/4.lua" />
|
||||
<action actionid="5" script="nostalrius/5.lua" />
|
||||
<action actionid="6" script="nostalrius/6.lua" />
|
||||
<action actionid="7" script="nostalrius/7.lua" />
|
||||
<action actionid="8" script="nostalrius/8.lua" />
|
||||
<action actionid="9" script="nostalrius/9.lua" />
|
||||
<action actionid="10" script="nostalrius/10.lua" />
|
||||
<action actionid="11" script="nostalrius/11.lua" />
|
||||
<action actionid="12" script="nostalrius/12.lua" />
|
||||
<action actionid="13" script="nostalrius/13.lua" />
|
||||
<action actionid="14" script="nostalrius/14.lua" />
|
||||
<action actionid="15" script="nostalrius/15.lua" />
|
||||
<action actionid="16" script="nostalrius/16.lua" />
|
||||
<action actionid="17" script="nostalrius/17.lua" />
|
||||
<action actionid="18" script="nostalrius/18.lua" />
|
||||
<action actionid="19" script="nostalrius/19.lua" />
|
||||
<action actionid="20" script="nostalrius/20.lua" />
|
||||
<action actionid="21" script="nostalrius/21.lua" />
|
||||
<action actionid="22" script="nostalrius/22.lua" />
|
||||
<action actionid="23" script="nostalrius/23.lua" />
|
||||
<action actionid="24" script="nostalrius/24.lua" />
|
||||
<action actionid="25" script="nostalrius/25.lua" />
|
||||
<action actionid="26" script="nostalrius/26.lua" />
|
||||
<action actionid="27" script="nostalrius/27.lua" />
|
||||
<action actionid="28" script="nostalrius/28.lua" />
|
||||
<action actionid="29" script="nostalrius/29.lua" />
|
||||
<action actionid="30" script="nostalrius/30.lua" />
|
||||
<action actionid="31" script="nostalrius/31.lua" />
|
||||
<action actionid="32" script="nostalrius/32.lua" />
|
||||
<action actionid="33" script="nostalrius/33.lua" />
|
||||
<action actionid="34" script="nostalrius/34.lua" />
|
||||
<action actionid="35" script="nostalrius/35.lua" />
|
||||
<action actionid="36" script="nostalrius/36.lua" />
|
||||
<action actionid="37" script="nostalrius/37.lua" />
|
||||
<action actionid="38" script="nostalrius/38.lua" />
|
||||
<action actionid="39" script="nostalrius/39.lua" />
|
||||
<action actionid="40" script="nostalrius/40.lua" />
|
||||
<action actionid="41" script="nostalrius/41.lua" />
|
||||
<action actionid="42" script="nostalrius/42.lua" />
|
||||
<action actionid="43" script="nostalrius/43.lua" />
|
||||
<action actionid="44" script="nostalrius/44.lua" />
|
||||
<action actionid="45" script="nostalrius/45.lua" />
|
||||
<action actionid="46" script="nostalrius/46.lua" />
|
||||
<action actionid="47" script="nostalrius/47.lua" />
|
||||
<action actionid="48" script="nostalrius/48.lua" />
|
||||
<action actionid="49" script="nostalrius/49.lua" />
|
||||
<action actionid="50" script="nostalrius/50.lua" />
|
||||
<action actionid="51" script="nostalrius/51.lua" />
|
||||
<action actionid="52" script="nostalrius/52.lua" />
|
||||
<action actionid="53" script="nostalrius/53.lua" />
|
||||
<action actionid="54" script="nostalrius/54.lua" />
|
||||
<action actionid="55" script="nostalrius/55.lua" />
|
||||
<action actionid="56" script="nostalrius/56.lua" />
|
||||
<action actionid="57" script="nostalrius/57.lua" />
|
||||
<action actionid="58" script="nostalrius/58.lua" />
|
||||
<action actionid="59" script="nostalrius/59.lua" />
|
||||
<action actionid="60" script="nostalrius/60.lua" />
|
||||
<action actionid="61" script="nostalrius/61.lua" />
|
||||
<action actionid="62" script="nostalrius/62.lua" />
|
||||
<action actionid="63" script="nostalrius/63.lua" />
|
||||
<action actionid="64" script="nostalrius/64.lua" />
|
||||
<action actionid="65" script="nostalrius/65.lua" />
|
||||
<action actionid="66" script="nostalrius/66.lua" />
|
||||
<action actionid="67" script="nostalrius/67.lua" />
|
||||
<action actionid="68" script="nostalrius/68.lua" />
|
||||
<action actionid="69" script="nostalrius/69.lua" />
|
||||
<action actionid="70" script="nostalrius/70.lua" />
|
||||
<action actionid="71" script="nostalrius/71.lua" />
|
||||
<action actionid="72" script="nostalrius/72.lua" />
|
||||
<action actionid="73" script="nostalrius/73.lua" />
|
||||
<action actionid="74" script="nostalrius/74.lua" />
|
||||
<action actionid="75" script="nostalrius/75.lua" />
|
||||
<action actionid="76" script="nostalrius/76.lua" />
|
||||
<action actionid="77" script="nostalrius/77.lua" />
|
||||
<action actionid="78" script="nostalrius/78.lua" />
|
||||
<action actionid="79" script="nostalrius/79.lua" />
|
||||
<action actionid="80" script="nostalrius/80.lua" />
|
||||
<action actionid="81" script="nostalrius/81.lua" />
|
||||
<action actionid="82" script="nostalrius/82.lua" />
|
||||
<action actionid="83" script="nostalrius/83.lua" />
|
||||
|
||||
<!-- Pits of Inferno -->
|
||||
<action actionid="17642" script="pits_of_inferno/oil.lua" />
|
||||
<action fromaid="17653" toaid="17656" script="pits_of_inferno/hall_of_the_four_ways.lua" />
|
||||
<action fromaid="2050" toaid="2065" script="pits_of_inferno/levers.lua" />
|
||||
<action fromaid="3301" toaid="3302" script="pits_of_inferno/ladderLevers.lua" />
|
||||
<action actionid="50160" script="pits_of_inferno/mazeStone.lua" />
|
||||
<action actionid="3300" script="pits_of_inferno/stoneLever.lua" />
|
||||
<action actionid="3304" script="pits_of_inferno/trapLever.lua" />
|
||||
<action actionid="50106" script="pits_of_inferno/fireThroneLever.lua" />
|
||||
<action fromaid="50095" toaid="50104" script="pits_of_inferno/bazirWrongLevers.lua" />
|
||||
<action actionid="50105" script="pits_of_inferno/bazirMazeLever.lua" />
|
||||
<action fromaid="39511" toaid="39512" script="pits_of_inferno/bazirMirror.lua" />
|
||||
|
||||
<!-- Serpentine Tower -->
|
||||
<action actionid="17597" script="serpentine_tower/release_fire_elemental.lua" />
|
||||
<action actionid="17598" script="serpentine_tower/release_vampire.lua" />
|
||||
<action actionid="17599" script="serpentine_tower/release_behemoth.lua" />
|
||||
<action actionid="17600" script="serpentine_tower/behemoth_lever.lua" />
|
||||
<action actionid="17601" script="serpentine_tower/vampire_lever.lua" />
|
||||
|
||||
<!-- Meriana Quest -->
|
||||
<action actionid="17525" script="meriana_quest/tortoise_egg.lua" />
|
||||
<action fromaid="17528" toaid="17530" script="meriana_quest/pirate_map.lua" />
|
||||
|
||||
<!-- Liberty Bay -->
|
||||
<action fromid="6087" toid="6090" script="liberty_bay/cult_hymn.lua"/>
|
||||
<action actionid="33216" script="liberty_bay/cult_piano_teleport.lua"/>
|
||||
|
||||
<!-- Sabrehaven Default Actions -->
|
||||
<!-- Furniture Parcels -->
|
||||
<action fromid="2775" toid="2812" script="misc/furniture_parcels.lua" />
|
||||
<action fromid="5086" toid="5088" script="misc/furniture_parcels.lua" />
|
||||
<action fromid="6114" toid="6115" script="misc/furniture_parcels.lua" />
|
||||
<action fromid="6371" toid="6372" script="misc/furniture_parcels.lua" />
|
||||
|
||||
<!-- Instruments -->
|
||||
<action fromid="2948" toid="2950" script="misc/instruments.lua" />
|
||||
<action fromid="2952" toid="2965" script="misc/instruments.lua" />
|
||||
<action itemid="3219" script="misc/instruments.lua" />
|
||||
<action itemid="5786" script="misc/instruments.lua" />
|
||||
<action itemid="6572" script="misc/instruments.lua" />
|
||||
|
||||
<!-- Strange Levers -->
|
||||
<action fromid="2566" toid="2567" script="misc/strange_lever.lua" />
|
||||
<action fromid="2569" toid="2570" script="misc/strange_lever.lua" />
|
||||
|
||||
<!-- Teleporters -->
|
||||
<action itemid="435" script="misc/teleporters.lua" />
|
||||
<action itemid="1948" script="misc/teleporters.lua" />
|
||||
<action itemid="1968" script="misc/teleporters.lua" />
|
||||
<action itemid="5542" script="misc/teleporters.lua" />
|
||||
|
||||
<!-- Special Right -->
|
||||
<action itemid="372" script="misc/special_rights.lua" />
|
||||
<action itemid="386" script="misc/special_rights.lua" />
|
||||
<action itemid="421" script="misc/special_rights.lua" />
|
||||
<action itemid="593" script="misc/special_rights.lua" />
|
||||
<action itemid="606" script="misc/special_rights.lua" />
|
||||
<action itemid="608" script="misc/special_rights.lua" />
|
||||
<action itemid="614" script="misc/special_rights.lua" />
|
||||
<action itemid="3653" script="misc/special_rights.lua" />
|
||||
<action itemid="3696" script="misc/special_rights.lua" />
|
||||
<action itemid="3702" script="misc/special_rights.lua" />
|
||||
|
||||
<!-- Fun -->
|
||||
<action actionid="17572" script="misc/rookgard_skip.lua" />
|
||||
<action itemid="611" script="misc/snowheap.lua" />
|
||||
<action itemid="2974" script="misc/water_pipe.lua" />
|
||||
<action itemid="2976" script="misc/birdcage.lua" />
|
||||
<action itemid="3103" script="misc/cornucopia.lua" />
|
||||
<action itemid="3699" script="misc/blueberry_bush.lua" />
|
||||
<action itemid="3481" script="misc/closed_trap.lua" />
|
||||
<action itemid="3482" script="misc/open_trap.lua" />
|
||||
<action itemid="3218" script="misc/present.lua" />
|
||||
<action itemid="2977" script="misc/pumpkin_head.lua" />
|
||||
<action itemid="2916" script="misc/used_lamp.lua" />
|
||||
<action itemid="3229" script="misc/helmet_of_the_ancients.lua" />
|
||||
<action itemid="4835" script="misc/snake_destroyer.lua" />
|
||||
<action itemid="4840" script="misc/spectral_stone.lua" />
|
||||
<action itemid="4842" script="misc/sheet_of_tracing_paper.lua" />
|
||||
<action itemid="4852" script="misc/ectoplasm_container.lua" />
|
||||
<action itemid="3217" script="misc/letter_bag.lua" />
|
||||
<action fromid="3603" toid="3605" script="misc/baking.lua" />
|
||||
<action itemid="6276" script="misc/baking.lua" />
|
||||
<action itemid="5466" script="misc/distilling_rum.lua" />
|
||||
<action fromid="3264" toid="3276" script="misc/weapons.lua" />
|
||||
<action fromid="3278" toid="3286" script="misc/weapons.lua" />
|
||||
<action fromid="3288" toid="3297" script="misc/weapons.lua" />
|
||||
<action fromid="3299" toid="3303" script="misc/weapons.lua" />
|
||||
<action fromid="3305" toid="3307" script="misc/weapons.lua" />
|
||||
<action fromid="3309" toid="3329" script="misc/weapons.lua" />
|
||||
<action fromid="3331" toid="3348" script="misc/weapons.lua" />
|
||||
<action itemid="3208" script="misc/weapons.lua" />
|
||||
<action itemid="6101" script="misc/weapons.lua" />
|
||||
<action itemid="6527" script="misc/weapons.lua" />
|
||||
<action itemid="6553" script="misc/weapons.lua" />
|
||||
<action itemid="3059" script="misc/spellbook.lua" />
|
||||
<action fromid="5792" toid="5797" script="misc/dice.lua" />
|
||||
<action itemid="3114" script="misc/skull_candle.lua" />
|
||||
<action itemid="5957" script="misc/lottery_ticket.lua" />
|
||||
<action itemid="5776" script="misc/sabrehaven_talon.lua" />
|
||||
<action itemid="5928" script="misc/catch_fish.lua" />
|
||||
<action itemid="6279" script="misc/party_cake.lua" />
|
||||
<action itemid="6387" script="misc/christmas_card.lua" />
|
||||
<action itemid="6558" script="misc/concentrated_demonic_blood.lua" />
|
||||
<action itemid="6561" script="misc/ceremonial_ankh.lua" />
|
||||
<action itemid="6576" script="misc/fireworks_rocket.lua" />
|
||||
<action itemid="6578" script="misc/party_hat.lua" />
|
||||
<action itemid="6549" script="misc/djinn_quest_pass.lua" />
|
||||
<action itemid="6551" script="misc/djinn_quest_pass.lua" />
|
||||
<action itemid="3252" script="misc/postman_quest_pass.lua" />
|
||||
<action itemid="6554" script="misc/shop_points_scroll.lua" />
|
||||
<action itemid="6555" script="misc/shop_points_scroll.lua" />
|
||||
|
||||
<!-- Dolls -->
|
||||
<action itemid="5080" script="misc/dolls.lua" />
|
||||
<action itemid="5668" script="misc/dolls.lua" />
|
||||
<action itemid="5791" script="misc/dolls.lua" />
|
||||
<action itemid="6511" script="misc/dolls.lua" />
|
||||
|
||||
<!-- Keys -->
|
||||
<action fromid="2967" toid="2973" script="misc/key.lua" />
|
||||
|
||||
<!-- Time -->
|
||||
<action fromid="2445" toid="2448" script="misc/time.lua" />
|
||||
<action fromid="2660" toid="2664" script="misc/time.lua" />
|
||||
<action itemid="2668" script="misc/time.lua" />
|
||||
<action itemid="2771" script="misc/time.lua" />
|
||||
<action itemid="2906" script="misc/time.lua" />
|
||||
<action itemid="6092" script="misc/time.lua" />
|
||||
|
||||
<!-- Tools -->
|
||||
<action itemid="3003" script="misc/rope.lua" />
|
||||
<action itemid="3304" script="misc/crowbar.lua" />
|
||||
<action itemid="3469" script="misc/knife.lua" />
|
||||
<action itemid="3308" script="misc/machete.lua" />
|
||||
<action itemid="3330" script="misc/machete.lua" />
|
||||
<action itemid="3453" script="misc/scythe.lua" />
|
||||
<action itemid="4872" script="misc/ice_pick.lua" />
|
||||
<action itemid="3456" script="misc/pick.lua" />
|
||||
<action itemid="3457" script="misc/shovel.lua" />
|
||||
<action itemid="3452" script="misc/rake.lua" />
|
||||
<action itemid="5710" script="misc/shovel.lua" />
|
||||
<action itemid="3483" allowfaruse="1" script="misc/fishing_rod.lua" />
|
||||
<action itemid="5865" script="misc/juice_squeezer.lua" />
|
||||
<action itemid="5908" script="misc/skinning_dusting.lua"/>
|
||||
<action itemid="5942" script="misc/skinning_dusting.lua"/>
|
||||
|
||||
<!-- Miscellaneous -->
|
||||
<action itemid="4867" script="misc/botanist_container.lua" />
|
||||
<action itemid="4863" script="misc/butterfly_conservation_kit.lua" />
|
||||
<action itemid="5467" script="misc/fire_bug.lua" />
|
||||
<action itemid="5938" script="misc/ceirons_waterskin.lua" />
|
||||
<action itemid="3031" script="misc/changegold.lua" />
|
||||
<action itemid="3035" script="misc/changegold.lua" />
|
||||
<action itemid="3043" script="misc/changegold.lua" />
|
||||
<action fromaid="17724" toaid="17728" script="misc/skill_trainer.lua" />
|
||||
<action fromid="6506" toid="6508" script="misc/christmas_bundle.lua" />
|
||||
|
||||
<!-- Chests -->
|
||||
<action itemid="2479" script="misc/chests.lua" />
|
||||
<action itemid="2543" script="misc/chests.lua" />
|
||||
<action itemid="2544" script="misc/chests.lua" />
|
||||
<action itemid="2545" script="misc/chests.lua" />
|
||||
<action itemid="2546" script="misc/chests.lua" />
|
||||
<action itemid="2547" script="misc/chests.lua" />
|
||||
<action itemid="2548" script="misc/chests.lua" />
|
||||
<action itemid="2549" script="misc/chests.lua" />
|
||||
<action itemid="2550" script="misc/chests.lua" />
|
||||
<action itemid="2551" script="misc/chests.lua" />
|
||||
<action itemid="2552" script="misc/chests.lua" />
|
||||
<action itemid="2553" script="misc/chests.lua" />
|
||||
<action itemid="2554" script="misc/chests.lua" />
|
||||
<action itemid="2555" script="misc/chests.lua" />
|
||||
<action itemid="2556" script="misc/chests.lua" />
|
||||
<action itemid="2557" script="misc/chests.lua" />
|
||||
<action itemid="2558" script="misc/chests.lua" />
|
||||
<action itemid="2559" script="misc/chests.lua" />
|
||||
<action itemid="2560" script="misc/chests.lua" />
|
||||
<action itemid="2561" script="misc/chests.lua" />
|
||||
<action itemid="2562" script="misc/chests.lua" />
|
||||
<action itemid="2564" script="misc/chests.lua" />
|
||||
<action itemid="2565" script="misc/chests.lua" />
|
||||
<action itemid="4830" script="misc/chests.lua" />
|
||||
<action itemid="4833" script="misc/chests.lua" />
|
||||
<action itemid="4873" script="misc/chests.lua" />
|
||||
<action itemid="5730" script="misc/chests.lua" />
|
||||
<action itemid="5742" script="misc/chests.lua" />
|
||||
<action itemid="5775" script="misc/chests.lua" />
|
||||
|
||||
<!-- Fluids -->
|
||||
<action itemid="2524" script="misc/fluids.lua" />
|
||||
<action itemid="2873" script="misc/fluids.lua" />
|
||||
<action itemid="2874" script="misc/fluids.lua" />
|
||||
<action itemid="2875" script="misc/fluids.lua" />
|
||||
<action itemid="2876" script="misc/fluids.lua" />
|
||||
<action itemid="2877" script="misc/fluids.lua" />
|
||||
<action itemid="2879" script="misc/fluids.lua" />
|
||||
<action itemid="2880" script="misc/fluids.lua" />
|
||||
<action itemid="2881" script="misc/fluids.lua" />
|
||||
<action itemid="2882" script="misc/fluids.lua" />
|
||||
<action itemid="2883" script="misc/fluids.lua" />
|
||||
<action itemid="2884" script="misc/fluids.lua" />
|
||||
<action itemid="2885" script="misc/fluids.lua" />
|
||||
<action itemid="2893" script="misc/fluids.lua" />
|
||||
<action itemid="2901" script="misc/fluids.lua" />
|
||||
<action itemid="2902" script="misc/fluids.lua" />
|
||||
<action itemid="2903" script="misc/fluids.lua" />
|
||||
<action itemid="2904" script="misc/fluids.lua" />
|
||||
<action itemid="3465" script="misc/fluids.lua" />
|
||||
<action itemid="3477" script="misc/fluids.lua" />
|
||||
<action itemid="3478" script="misc/fluids.lua" />
|
||||
<action itemid="3479" script="misc/fluids.lua" />
|
||||
<action itemid="3480" script="misc/fluids.lua" />
|
||||
<action itemid="5552" script="misc/fluids.lua" />
|
||||
|
||||
<!-- Food -->
|
||||
<action itemid="3250" script="misc/food.lua" />
|
||||
<action itemid="3577" script="misc/food.lua" />
|
||||
<action itemid="3578" script="misc/food.lua" />
|
||||
<action itemid="3579" script="misc/food.lua" />
|
||||
<action itemid="3580" script="misc/food.lua" />
|
||||
<action itemid="3581" script="misc/food.lua" />
|
||||
<action itemid="3582" script="misc/food.lua" />
|
||||
<action itemid="3583" script="misc/food.lua" />
|
||||
<action itemid="3584" script="misc/food.lua" />
|
||||
<action itemid="3585" script="misc/food.lua" />
|
||||
<action itemid="3586" script="misc/food.lua" />
|
||||
<action itemid="3587" script="misc/food.lua" />
|
||||
<action itemid="3588" script="misc/food.lua" />
|
||||
<action itemid="3589" script="misc/food.lua" />
|
||||
<action itemid="3590" script="misc/food.lua" />
|
||||
<action itemid="3591" script="misc/food.lua" />
|
||||
<action itemid="3592" script="misc/food.lua" />
|
||||
<action itemid="3593" script="misc/food.lua" />
|
||||
<action itemid="3594" script="misc/food.lua" />
|
||||
<action itemid="3595" script="misc/food.lua" />
|
||||
<action itemid="3596" script="misc/food.lua" />
|
||||
<action itemid="3597" script="misc/food.lua" />
|
||||
<action itemid="3598" script="misc/food.lua" />
|
||||
<action itemid="3599" script="misc/food.lua" />
|
||||
<action itemid="3600" script="misc/food.lua" />
|
||||
<action itemid="3601" script="misc/food.lua" />
|
||||
<action itemid="3602" script="misc/food.lua" />
|
||||
<action itemid="3606" script="misc/food.lua" />
|
||||
<action itemid="3607" script="misc/food.lua" />
|
||||
<action itemid="3723" script="misc/food.lua" />
|
||||
<action itemid="3724" script="misc/food.lua" />
|
||||
<action itemid="3725" script="misc/food.lua" />
|
||||
<action itemid="3726" script="misc/food.lua" />
|
||||
<action itemid="3727" script="misc/food.lua" />
|
||||
<action itemid="3728" script="misc/food.lua" />
|
||||
<action itemid="3729" script="misc/food.lua" />
|
||||
<action itemid="3730" script="misc/food.lua" />
|
||||
<action itemid="3731" script="misc/food.lua" />
|
||||
<action itemid="3732" script="misc/food.lua" />
|
||||
<action itemid="5096" script="misc/food.lua" />
|
||||
<action itemid="5678" script="misc/food.lua" />
|
||||
<action itemid="6125" script="misc/food.lua" />
|
||||
<action itemid="6277" script="misc/food.lua" />
|
||||
<action itemid="6278" script="misc/food.lua" />
|
||||
<action itemid="6392" script="misc/food.lua" />
|
||||
<action itemid="6393" script="misc/food.lua" />
|
||||
<action itemid="6500" script="misc/food.lua" />
|
||||
<action itemid="6541" script="misc/food.lua" />
|
||||
<action itemid="6542" script="misc/food.lua" />
|
||||
<action itemid="6543" script="misc/food.lua" />
|
||||
<action itemid="6544" script="misc/food.lua" />
|
||||
<action itemid="6545" script="misc/food.lua" />
|
||||
<action itemid="6569" script="misc/food.lua" />
|
||||
<action itemid="6574" script="misc/food.lua" />
|
||||
|
||||
<!-- Passthrough -->
|
||||
<action fromid="2334" toid="2341" script="misc/doors.lua" />
|
||||
|
||||
<!-- Locked Doors -->
|
||||
<action itemid="1628" script="misc/doors.lua" />
|
||||
<action itemid="1631" script="misc/doors.lua" />
|
||||
<action itemid="1650" script="misc/doors.lua" />
|
||||
<action itemid="1653" script="misc/doors.lua" />
|
||||
<action itemid="1668" script="misc/doors.lua" />
|
||||
<action itemid="1671" script="misc/doors.lua" />
|
||||
<action itemid="1682" script="misc/doors.lua" />
|
||||
<action itemid="1691" script="misc/doors.lua" />
|
||||
<action itemid="5006" script="misc/doors.lua" />
|
||||
<action itemid="5007" script="misc/doors.lua" />
|
||||
<action itemid="5097" script="misc/doors.lua" />
|
||||
<action itemid="5106" script="misc/doors.lua" />
|
||||
<action itemid="5115" script="misc/doors.lua" />
|
||||
<action itemid="5124" script="misc/doors.lua" />
|
||||
<action itemid="5133" script="misc/doors.lua" />
|
||||
<action itemid="5136" script="misc/doors.lua" />
|
||||
<action itemid="5139" script="misc/doors.lua" />
|
||||
<action itemid="5142" script="misc/doors.lua" />
|
||||
<action itemid="5277" script="misc/doors.lua" />
|
||||
<action itemid="5280" script="misc/doors.lua" />
|
||||
<action itemid="5732" script="misc/doors.lua" />
|
||||
<action itemid="5735" script="misc/doors.lua" />
|
||||
<action itemid="6191" script="misc/doors.lua" />
|
||||
<action itemid="6194" script="misc/doors.lua" />
|
||||
<action itemid="6248" script="misc/doors.lua" />
|
||||
<action itemid="6251" script="misc/doors.lua" />
|
||||
|
||||
<!-- Level Doors -->
|
||||
<action itemid="1646" script="misc/doors.lua" />
|
||||
<action itemid="1648" script="misc/doors.lua" />
|
||||
<action itemid="1664" script="misc/doors.lua" />
|
||||
<action itemid="1666" script="misc/doors.lua" />
|
||||
<action itemid="1678" script="misc/doors.lua" />
|
||||
<action itemid="1680" script="misc/doors.lua" />
|
||||
<action itemid="1687" script="misc/doors.lua" />
|
||||
<action itemid="1696" script="misc/doors.lua" />
|
||||
<action itemid="5102" script="misc/doors.lua" />
|
||||
<action itemid="5111" script="misc/doors.lua" />
|
||||
<action itemid="5120" script="misc/doors.lua" />
|
||||
<action itemid="5129" script="misc/doors.lua" />
|
||||
<action itemid="5291" script="misc/doors.lua" />
|
||||
<action itemid="5293" script="misc/doors.lua" />
|
||||
<action itemid="6205" script="misc/doors.lua" />
|
||||
<action itemid="6207" script="misc/doors.lua" />
|
||||
<action itemid="6262" script="misc/doors.lua" />
|
||||
<action itemid="6264" script="misc/doors.lua" />
|
||||
|
||||
<!-- Quest Doors -->
|
||||
<action itemid="1642" script="misc/doors.lua" />
|
||||
<action itemid="1644" script="misc/doors.lua" />
|
||||
<action itemid="1660" script="misc/doors.lua" />
|
||||
<action itemid="1662" script="misc/doors.lua" />
|
||||
<action itemid="1674" script="misc/doors.lua" />
|
||||
<action itemid="1676" script="misc/doors.lua" />
|
||||
<action itemid="1689" script="misc/doors.lua" />
|
||||
<action itemid="1698" script="misc/doors.lua" />
|
||||
<action itemid="5104" script="misc/doors.lua" />
|
||||
<action itemid="5113" script="misc/doors.lua" />
|
||||
<action itemid="5122" script="misc/doors.lua" />
|
||||
<action itemid="5131" script="misc/doors.lua" />
|
||||
<action itemid="5287" script="misc/doors.lua" />
|
||||
<action itemid="5289" script="misc/doors.lua" />
|
||||
<action itemid="5745" script="misc/doors.lua" />
|
||||
<action itemid="5749" script="misc/doors.lua" />
|
||||
<action itemid="6201" script="misc/doors.lua" />
|
||||
<action itemid="6203" script="misc/doors.lua" />
|
||||
<action itemid="6258" script="misc/doors.lua" />
|
||||
<action itemid="6260" script="misc/doors.lua" />
|
||||
|
||||
<!-- Closed Normal Doors -->
|
||||
<action itemid="2177" script="misc/doors.lua" />
|
||||
<action itemid="2179" script="misc/doors.lua" />
|
||||
<action itemid="1629" script="misc/doors.lua" />
|
||||
<action itemid="1632" script="misc/doors.lua" />
|
||||
<action itemid="1638" script="misc/doors.lua" />
|
||||
<action itemid="1640" script="misc/doors.lua" />
|
||||
<action itemid="1651" script="misc/doors.lua" />
|
||||
<action itemid="1654" script="misc/doors.lua" />
|
||||
<action itemid="1656" script="misc/doors.lua" />
|
||||
<action itemid="1658" script="misc/doors.lua" />
|
||||
<action itemid="1669" script="misc/doors.lua" />
|
||||
<action itemid="1672" script="misc/doors.lua" />
|
||||
<action itemid="1683" script="misc/doors.lua" />
|
||||
<action itemid="1685" script="misc/doors.lua" />
|
||||
<action itemid="1692" script="misc/doors.lua" />
|
||||
<action itemid="1694" script="misc/doors.lua" />
|
||||
<action itemid="4912" script="misc/doors.lua" />
|
||||
<action itemid="4913" script="misc/doors.lua" />
|
||||
<action itemid="5082" script="misc/doors.lua" />
|
||||
<action itemid="5098" script="misc/doors.lua" />
|
||||
<action itemid="5100" script="misc/doors.lua" />
|
||||
<action itemid="5107" script="misc/doors.lua" />
|
||||
<action itemid="5109" script="misc/doors.lua" />
|
||||
<action itemid="5116" script="misc/doors.lua" />
|
||||
<action itemid="5118" script="misc/doors.lua" />
|
||||
<action itemid="5125" script="misc/doors.lua" />
|
||||
<action itemid="5127" script="misc/doors.lua" />
|
||||
<action itemid="5134" script="misc/doors.lua" />
|
||||
<action itemid="5137" script="misc/doors.lua" />
|
||||
<action itemid="5140" script="misc/doors.lua" />
|
||||
<action itemid="5143" script="misc/doors.lua" />
|
||||
<action itemid="5278" script="misc/doors.lua" />
|
||||
<action itemid="5281" script="misc/doors.lua" />
|
||||
<action itemid="5283" script="misc/doors.lua" />
|
||||
<action itemid="5285" script="misc/doors.lua" />
|
||||
<action itemid="5514" script="misc/doors.lua" />
|
||||
<action itemid="5516" script="misc/doors.lua" />
|
||||
<action itemid="5733" script="misc/doors.lua" />
|
||||
<action itemid="5736" script="misc/doors.lua" />
|
||||
<action itemid="6192" script="misc/doors.lua" />
|
||||
<action itemid="6195" script="misc/doors.lua" />
|
||||
<action itemid="6197" script="misc/doors.lua" />
|
||||
<action itemid="6199" script="misc/doors.lua" />
|
||||
<action itemid="6249" script="misc/doors.lua" />
|
||||
<action itemid="6252" script="misc/doors.lua" />
|
||||
<action itemid="6254" script="misc/doors.lua" />
|
||||
<action itemid="6256" script="misc/doors.lua" />
|
||||
|
||||
<!-- Open Vertical Doors -->
|
||||
<action itemid="1630" script="misc/doors.lua" />
|
||||
<action itemid="1639" script="misc/doors.lua" />
|
||||
<action itemid="1643" script="misc/doors.lua" />
|
||||
<action itemid="1647" script="misc/doors.lua" />
|
||||
<action itemid="1652" script="misc/doors.lua" />
|
||||
<action itemid="1657" script="misc/doors.lua" />
|
||||
<action itemid="1661" script="misc/doors.lua" />
|
||||
<action itemid="1665" script="misc/doors.lua" />
|
||||
<action itemid="1670" script="misc/doors.lua" />
|
||||
<action itemid="1675" script="misc/doors.lua" />
|
||||
<action itemid="1679" script="misc/doors.lua" />
|
||||
<action itemid="1693" script="misc/doors.lua" />
|
||||
<action itemid="1695" script="misc/doors.lua" />
|
||||
<action itemid="1697" script="misc/doors.lua" />
|
||||
<action itemid="1699" script="misc/doors.lua" />
|
||||
<action itemid="4914" script="misc/doors.lua" />
|
||||
<action itemid="5083" script="misc/doors.lua" />
|
||||
<action itemid="2178" script="misc/doors.lua" />
|
||||
<action itemid="5108" script="misc/doors.lua" />
|
||||
<action itemid="5110" script="misc/doors.lua" />
|
||||
<action itemid="5112" script="misc/doors.lua" />
|
||||
<action itemid="5114" script="misc/doors.lua" />
|
||||
<action itemid="5126" script="misc/doors.lua" />
|
||||
<action itemid="5128" script="misc/doors.lua" />
|
||||
<action itemid="5130" script="misc/doors.lua" />
|
||||
<action itemid="5132" script="misc/doors.lua" />
|
||||
<action itemid="5141" script="misc/doors.lua" />
|
||||
<action itemid="5144" script="misc/doors.lua" />
|
||||
<action itemid="5282" script="misc/doors.lua" />
|
||||
<action itemid="5284" script="misc/doors.lua" />
|
||||
<action itemid="5288" script="misc/doors.lua" />
|
||||
<action itemid="5292" script="misc/doors.lua" />
|
||||
<action itemid="5515" script="misc/doors.lua" />
|
||||
<action itemid="5737" script="misc/doors.lua" />
|
||||
<action itemid="5748" script="misc/doors.lua" />
|
||||
<action itemid="6193" script="misc/doors.lua" />
|
||||
<action itemid="6198" script="misc/doors.lua" />
|
||||
<action itemid="6202" script="misc/doors.lua" />
|
||||
<action itemid="6206" script="misc/doors.lua" />
|
||||
<action itemid="6250" script="misc/doors.lua" />
|
||||
<action itemid="6255" script="misc/doors.lua" />
|
||||
<action itemid="6259" script="misc/doors.lua" />
|
||||
<action itemid="6263" script="misc/doors.lua" />
|
||||
|
||||
<!-- Open Horizontal Doors -->
|
||||
<action itemid="1633" script="misc/doors.lua" />
|
||||
<action itemid="1641" script="misc/doors.lua" />
|
||||
<action itemid="1645" script="misc/doors.lua" />
|
||||
<action itemid="1649" script="misc/doors.lua" />
|
||||
<action itemid="1655" script="misc/doors.lua" />
|
||||
<action itemid="1659" script="misc/doors.lua" />
|
||||
<action itemid="1663" script="misc/doors.lua" />
|
||||
<action itemid="1667" script="misc/doors.lua" />
|
||||
<action itemid="1673" script="misc/doors.lua" />
|
||||
<action itemid="1677" script="misc/doors.lua" />
|
||||
<action itemid="1681" script="misc/doors.lua" />
|
||||
<action itemid="1684" script="misc/doors.lua" />
|
||||
<action itemid="1686" script="misc/doors.lua" />
|
||||
<action itemid="1688" script="misc/doors.lua" />
|
||||
<action itemid="1690" script="misc/doors.lua" />
|
||||
<action itemid="4911" script="misc/doors.lua" />
|
||||
<action itemid="5085" script="misc/doors.lua" />
|
||||
<action itemid="2180" script="misc/doors.lua" />
|
||||
<action itemid="5099" script="misc/doors.lua" />
|
||||
<action itemid="5101" script="misc/doors.lua" />
|
||||
<action itemid="5103" script="misc/doors.lua" />
|
||||
<action itemid="5105" script="misc/doors.lua" />
|
||||
<action itemid="5117" script="misc/doors.lua" />
|
||||
<action itemid="5119" script="misc/doors.lua" />
|
||||
<action itemid="5121" script="misc/doors.lua" />
|
||||
<action itemid="5123" script="misc/doors.lua" />
|
||||
<action itemid="5135" script="misc/doors.lua" />
|
||||
<action itemid="5138" script="misc/doors.lua" />
|
||||
<action itemid="5279" script="misc/doors.lua" />
|
||||
<action itemid="5286" script="misc/doors.lua" />
|
||||
<action itemid="5290" script="misc/doors.lua" />
|
||||
<action itemid="5294" script="misc/doors.lua" />
|
||||
<action itemid="5517" script="misc/doors.lua" />
|
||||
<action itemid="5734" script="misc/doors.lua" />
|
||||
<action itemid="5746" script="misc/doors.lua" />
|
||||
<action itemid="6196" script="misc/doors.lua" />
|
||||
<action itemid="6200" script="misc/doors.lua" />
|
||||
<action itemid="6204" script="misc/doors.lua" />
|
||||
<action itemid="6208" script="misc/doors.lua" />
|
||||
<action itemid="6253" script="misc/doors.lua" />
|
||||
<action itemid="6257" script="misc/doors.lua" />
|
||||
<action itemid="6261" script="misc/doors.lua" />
|
||||
<action itemid="6265" script="misc/doors.lua" />
|
||||
</actions>
|
||||
20
app/SabrehavenServer/data/actions/lib/actions.lua
Normal file
20
app/SabrehavenServer/data/actions/lib/actions.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
function doDestroyItem(target)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
local itemType = ItemType(target:getId())
|
||||
if not itemType:isDestroyable() then
|
||||
return false
|
||||
end
|
||||
|
||||
if math.random(1,10) <= 3 then
|
||||
target:transform(itemType:getDestroyTarget())
|
||||
target:decay()
|
||||
target:getPosition():sendMagicEffect(CONST_ME_BLOCKHIT)
|
||||
else
|
||||
target:getPosition():sendMagicEffect(CONST_ME_POFF)
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,21 @@
|
||||
local config = {
|
||||
[6087] = {storage = 1053, text = 'first', effect = CONST_ME_SOUND_GREEN},
|
||||
[6088] = {storage = 1054, text = 'second', effect = CONST_ME_SOUND_RED},
|
||||
[6089] = {storage = 1055, text = 'third', effect = CONST_ME_SOUND_YELLOW},
|
||||
[6090] = {storage = 1056, text = 'fourth', effect = CONST_ME_SOUND_BLUE}
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
local playerPosition = player:getPosition()
|
||||
local useItem = config[item.itemid]
|
||||
if player:getStorageValue(useItem.storage) ~= 1 then
|
||||
player:setStorageValue(useItem.storage, 1)
|
||||
player:say("You have learned the ".. useItem.text .." part of a hymn.", TALKTYPE_MONSTER_SAY, false, 0, playerPosition)
|
||||
playerPosition:sendMagicEffect(useItem.effect)
|
||||
item:remove(1)
|
||||
else
|
||||
player:say("You already know the ".. useItem.text .." verse of the hymn.", TALKTYPE_MONSTER_SAY, false, 0, playerPosition)
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,18 @@
|
||||
local storages = {1053, 1054, 1055, 1056}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
local playerPosition = player:getPosition()
|
||||
|
||||
for i = 1, #storages do
|
||||
if player:getStorageValue(storages[i]) ~= 1 then
|
||||
player:say("You have not learned all the verses of the hymn.", TALKTYPE_MONSTER_SAY, false, 0, toPosition)
|
||||
playerPosition:sendMagicEffect(CONST_ME_POFF)
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
player:teleportTo(Position(32402, 32794, 9))
|
||||
player:say("You have sucessfully played the secret hymn of the cult.", TALKTYPE_MONSTER_SAY)
|
||||
Game.sendMagicEffect({x = 32402, y = 32794, z = 9}, CONST_ME_SOUND_PURPLE)
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,28 @@
|
||||
local maps = {
|
||||
[17528] = "You have successfully read plan A.",
|
||||
[17529] = "You have successfully read plan B.",
|
||||
[17530] = "You have successfully read plan C."
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
local mapActionId = item:getActionId()
|
||||
local map = maps[mapActionId]
|
||||
if not map then
|
||||
return false
|
||||
end
|
||||
|
||||
local playerPosition = player:getPosition()
|
||||
if player:getStorageValue(17520) < 8 then
|
||||
player:say("You shouldn't touch these maps because someone might see you.", TALKTYPE_MONSTER_SAY, false, 0, playerPosition)
|
||||
return true
|
||||
end
|
||||
|
||||
if player:getStorageValue(mapActionId) ~= 1 then
|
||||
player:say(map, TALKTYPE_MONSTER_SAY, false, 0, playerPosition)
|
||||
player:setStorageValue(mapActionId, 1)
|
||||
else
|
||||
player:say("You have already read this map.", TALKTYPE_MONSTER_SAY, false, 0, playerPosition)
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,10 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if player:getStorageValue(17526) < os.time() then
|
||||
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a tortoise egg from Nargor.")
|
||||
player:setStorageValue(17526, os.time() + 24 * 60 * 60) -- 24 hour
|
||||
player:addItem(6125,1)
|
||||
else
|
||||
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You shoud not take any more today.")
|
||||
end
|
||||
return true
|
||||
end
|
||||
51
app/SabrehavenServer/data/actions/scripts/misc/baking.lua
Normal file
51
app/SabrehavenServer/data/actions/scripts/misc/baking.lua
Normal file
@@ -0,0 +1,51 @@
|
||||
local ovens = {
|
||||
2535, 2537, 2539, 2541, 3510, 6355, 6357, 6359, 6361
|
||||
}
|
||||
|
||||
local milestone = {
|
||||
1943, 1944, 1945, 1946
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if item:getId() == 3603 then
|
||||
if (target:getId() == 2524 or target:getId() == 2873) and target:getFluidType() == FLUID_WATER then
|
||||
target:transform(target:getId(), FLUID_NONE)
|
||||
local parent = item:getParent()
|
||||
if parent:isContainer() or parent:isPlayer() then
|
||||
parent:addItem(3604, 1):decay()
|
||||
else
|
||||
Game.createItem(3604, 1, item:getPosition()):decay()
|
||||
end
|
||||
item:remove(1)
|
||||
return true
|
||||
end
|
||||
elseif item:getId() == 3604 then
|
||||
if table.contains(ovens, target:getId()) then
|
||||
Game.createItem(3600, 1, target:getPosition())
|
||||
item:remove(1)
|
||||
return true
|
||||
end
|
||||
elseif item:getId() == 6276 then
|
||||
if table.contains(ovens, target:getId()) then
|
||||
Game.createItem(6277, 1, target:getPosition())
|
||||
item:remove(1)
|
||||
return true
|
||||
end
|
||||
elseif item:getId() == 3605 then
|
||||
if table.contains(milestone, target:getId()) then
|
||||
local parent = item:getParent()
|
||||
if parent:isContainer() or parent:isPlayer() then
|
||||
parent:addItem(3603, 1):decay()
|
||||
else
|
||||
Game.createItem(3603, 1, item:getPosition()):decay()
|
||||
end
|
||||
item:remove(1)
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if math.random(1, 100) <= 1 and math.random(1, 100) <= 10 then
|
||||
item:transform(2975, 0)
|
||||
item:decay()
|
||||
else
|
||||
item:getPosition():sendMagicEffect(22)
|
||||
end
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,6 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
item:transform(3700, 1)
|
||||
item:decay()
|
||||
Game.createItem(3588, 3, fromPosition)
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,30 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if target:getId() == 3874 and player:getStorageValue(305) == 1 then
|
||||
item:transform(4868, 1)
|
||||
target:getPosition():sendMagicEffect(10)
|
||||
return true
|
||||
elseif target:getId() == 3885 and player:getStorageValue(305) == 3 then
|
||||
item:transform(4870, 1)
|
||||
target:getPosition():sendMagicEffect(10)
|
||||
return true
|
||||
elseif target:getId() == 3878 and player:getStorageValue(305) == 5 then
|
||||
item:transform(4869, 1)
|
||||
target:getPosition():sendMagicEffect(10)
|
||||
return true
|
||||
elseif target:getId() == 5658 and player:getStorageValue(17535) == 1 then
|
||||
if player:getStorageValue(17536) < os.time() then
|
||||
item:transform(5937, 1)
|
||||
target:getPosition():sendMagicEffect(10)
|
||||
player:setStorageValue(17536, os.time() + 20 * 60 * 60) -- 20 hour
|
||||
return true
|
||||
else
|
||||
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You just collected a fragile griffinclaw. At least wait for the rest of the plant to recover a bit before gathering more.")
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,28 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if target:getId() == 4992 and player:getStorageValue(304) == 1 then
|
||||
target:getPosition():sendMagicEffect(17)
|
||||
item:transform(4865, 1)
|
||||
item:decay()
|
||||
target:remove()
|
||||
elseif target:getId() == 4993 and player:getStorageValue(304) == 3 then
|
||||
target:getPosition():sendMagicEffect(17)
|
||||
item:transform(4866, 1)
|
||||
item:decay()
|
||||
target:remove()
|
||||
elseif target:getId() == 4991 and player:getStorageValue(304) == 5 then
|
||||
target:getPosition():sendMagicEffect(17)
|
||||
item:transform(4864, 1)
|
||||
item:decay()
|
||||
target:remove()
|
||||
elseif target:getId() == 5013 and player:getStorageValue(304) == 5 then
|
||||
target:getPosition():sendMagicEffect(17)
|
||||
item:transform(5089, 1)
|
||||
item:decay()
|
||||
target:remove()
|
||||
end
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,16 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
if target.itemid ~= 5553 then
|
||||
return false
|
||||
end
|
||||
|
||||
if math.random(2) ~= 1 then
|
||||
player:say("The golden fish escaped.", TALKTYPE_MONSTER_SAY)
|
||||
return true
|
||||
end
|
||||
|
||||
player:say("You catch a golden fish in the bowl.", TALKTYPE_MONSTER_SAY)
|
||||
item:transform(5929)
|
||||
target:remove()
|
||||
toPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE)
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if target:getId() == 5662 and Game.isItemThere({x = 33024, y = 32672, z = 6}, 5662) then
|
||||
item:transform(5939, 1)
|
||||
target:getPosition():sendMagicEffect(2)
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,18 @@
|
||||
local blessings = {
|
||||
{key = 101, value = 1, name = 'Wisdom of Solitude'},
|
||||
{key = 102, value = 1, name = 'Spark of the Phoenix'},
|
||||
{key = 103, value = 3, name = 'Fire of the Suns'},
|
||||
{key = 104, value = 1, name = 'Spiritual Shielding'},
|
||||
{key = 105, value = 1, name = 'Embrace of Tibia'}
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
local result, bless = 'Received blessings:'
|
||||
for i = 1, #blessings do
|
||||
bless = blessings[i]
|
||||
result = (player:getStorageValue(bless.key) == bless.value) and result .. '\n' .. bless.name or result
|
||||
end
|
||||
|
||||
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 20 > result:len() and 'No blessings received.' or result)
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,35 @@
|
||||
local config = {
|
||||
[3031] = {changeTo = 3035},
|
||||
[3035] = {changeBack = 3031, changeTo = 3043},
|
||||
[3043] = {changeBack = 3035}
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
local ring = player:getSlotItem(CONST_SLOT_RING)
|
||||
if ring == nil or ring:getId() ~= 3007 then
|
||||
return false
|
||||
end
|
||||
|
||||
local ringCharges = ring:getAttribute(ITEM_ATTRIBUTE_CHARGES)
|
||||
local coin = config[item:getId()]
|
||||
if coin.changeTo and item.type == 100 then
|
||||
item:remove()
|
||||
player:addItem(coin.changeTo, 1)
|
||||
if ringCharges > 1 then
|
||||
ring:setAttribute(ITEM_ATTRIBUTE_CHARGES,(ringCharges-1))
|
||||
else
|
||||
ring:remove(1)
|
||||
end
|
||||
elseif coin.changeBack then
|
||||
item:remove(1)
|
||||
player:addItem(coin.changeBack, 100)
|
||||
if ringCharges > 1 then
|
||||
ring:setAttribute(ITEM_ATTRIBUTE_CHARGES,(ringCharges-1))
|
||||
else
|
||||
ring:remove(1)
|
||||
end
|
||||
else
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
115
app/SabrehavenServer/data/actions/scripts/misc/chests.lua
Normal file
115
app/SabrehavenServer/data/actions/scripts/misc/chests.lua
Normal file
@@ -0,0 +1,115 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
local chestQuestNumber = item:getAttribute(ITEM_ATTRIBUTE_CHESTQUESTNUMBER)
|
||||
|
||||
if chestQuestNumber == 0 then
|
||||
return false
|
||||
end
|
||||
|
||||
if player:getStorageValue(chestQuestNumber) > 0 then
|
||||
player:sendTextMessage(MESSAGE_INFO_DESCR, "The " .. item:getName() .. " is empty.")
|
||||
return true
|
||||
end
|
||||
|
||||
local playerCapacity = player:getFreeCapacity()
|
||||
|
||||
if item:getSize() <= 0 then
|
||||
player:sendTextMessage(MESSAGE_INFO_DESCR, "The chest is empty. This is a bug, report it to a gamemaster.")
|
||||
return true
|
||||
end
|
||||
|
||||
local reward = item:getItem(0)
|
||||
local stackable = reward:getType():isStackable()
|
||||
local rewardName = reward:getName()
|
||||
local rewardWeight = reward:getWeight()
|
||||
|
||||
if stackable then
|
||||
if reward:getCount() > 1 then
|
||||
rewardName = reward:getCount() .. " " .. reward:getPluralName()
|
||||
else
|
||||
rewardName = reward:getName()
|
||||
end
|
||||
end
|
||||
|
||||
if reward:getArticle():len() > 0 and reward:getCount() <= 1 then
|
||||
rewardName = reward:getArticle() .. " " .. rewardName
|
||||
end
|
||||
|
||||
if rewardWeight > playerCapacity and not getPlayerFlagValue(player, layerFlag_HasInfiniteCapacity) then
|
||||
local term = "it is"
|
||||
if stackable and reward:getCount() > 1 then
|
||||
term = "they are"
|
||||
end
|
||||
|
||||
player:sendTextMessage(MESSAGE_INFO_DESCR, string.format("You have found %s. Weighing %d.%02d oz %s too heavy.", rewardName, rewardWeight / 100, rewardWeight % 100, term))
|
||||
return true
|
||||
end
|
||||
|
||||
player:sendTextMessage(MESSAGE_INFO_DESCR, "You have found " .. rewardName .. ".")
|
||||
|
||||
local attackAttribute = math.random(-2, 5)
|
||||
local rewardClone = reward:clone()
|
||||
if rewardClone:getType():getAttack() > 0 then
|
||||
rewardClone:setAttribute(ITEM_ATTRIBUTE_ATTACK, rewardClone:getType():getAttack() + attackAttribute)
|
||||
local description = rewardClone:hasAttribute(ITEM_ATTRIBUTE_DESCRIPTION) and rewardClone:getAttribute(ITEM_ATTRIBUTE_DESCRIPTION) or rewardClone:getType():getDescription()
|
||||
if description ~= nil and description ~= '' then
|
||||
description = description .. ". "
|
||||
end
|
||||
|
||||
if attackAttribute == 5 then
|
||||
rewardClone:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, description .. "Enchanted with perfect attack.")
|
||||
else
|
||||
if attackAttribute ~= 0 then
|
||||
rewardClone:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, description .. "Enchanted with " .. attackAttribute .. " attack.")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local defenseAttribute = math.random(-2, 5)
|
||||
if rewardClone:getType():getDefense() > 0 then
|
||||
rewardClone:setAttribute(ITEM_ATTRIBUTE_DEFENSE, rewardClone:getType():getDefense() + defenseAttribute)
|
||||
local description = rewardClone:hasAttribute(ITEM_ATTRIBUTE_DESCRIPTION) and rewardClone:getAttribute(ITEM_ATTRIBUTE_DESCRIPTION) or rewardClone:getType():getDescription()
|
||||
|
||||
if rewardClone:getType():getAttack() > 0 and attackAttribute ~= 0 then
|
||||
if defenseAttribute == 5 then
|
||||
rewardClone:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, description .. " Enchanted with perfect defense.")
|
||||
else
|
||||
if defenseAttribute ~= 0 then
|
||||
rewardClone:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, description .. " Enchanted with " .. defenseAttribute .. " defense.")
|
||||
end
|
||||
end
|
||||
else
|
||||
if description ~= nil and description ~= '' then
|
||||
description = description .. ". "
|
||||
end
|
||||
|
||||
if defenseAttribute == 5 then
|
||||
rewardClone:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, description .. "Enchanted with perfect defense.")
|
||||
else
|
||||
if defenseAttribute ~= 0 then
|
||||
rewardClone:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, description .. "Enchanted with " .. defenseAttribute .. " defense.")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local armorAttribute = math.random(-1, 2)
|
||||
if rewardClone:getType():getArmor() > 0 then
|
||||
rewardClone:setAttribute(ITEM_ATTRIBUTE_ARMOR, rewardClone:getType():getArmor() + armorAttribute)
|
||||
local description = rewardClone:hasAttribute(ITEM_ATTRIBUTE_DESCRIPTION) and rewardClone:getAttribute(ITEM_ATTRIBUTE_DESCRIPTION) or rewardClone:getType():getDescription()
|
||||
if description ~= nil and description ~= '' then
|
||||
description = description .. ". "
|
||||
end
|
||||
|
||||
if armorAttribute == 2 then
|
||||
rewardClone:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, description .. "Enchanted with perfect armor protection.")
|
||||
else
|
||||
if armorAttribute ~= 0 then
|
||||
rewardClone:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, description .. "Enchanted with " .. armorAttribute .. " armor protection.")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
player:addItemEx(rewardClone, true)
|
||||
player:setStorageValue(chestQuestNumber, 1)
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,50 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
|
||||
local bundleTypes = {
|
||||
[6506] = { -- red christmas bundle
|
||||
6503
|
||||
},
|
||||
[6507] = { -- blue christmas bundle
|
||||
6504
|
||||
},
|
||||
[6508] = { -- green christmas bundle
|
||||
6502
|
||||
}
|
||||
}
|
||||
|
||||
local common = {
|
||||
{6569, 15}, {3598, 20}, {3599, 10}, {3586, 10}, {3585, 5}, 6500, 6501, 6489, 6387
|
||||
}
|
||||
|
||||
local targetItem = bundleTypes[item.itemid]
|
||||
if not targetItem then
|
||||
return true
|
||||
end
|
||||
|
||||
targetItem = common
|
||||
|
||||
-- In case there's going to be more than one unique item per bundle
|
||||
for i = 1, #bundleTypes[item.itemid] do
|
||||
table.insert(targetItem, bundleTypes[item.itemid][i])
|
||||
end
|
||||
|
||||
local rewards = {}
|
||||
repeat
|
||||
local count = 1
|
||||
local rand = math.random(#targetItem)
|
||||
local gift = targetItem[rand]
|
||||
if type(gift) == "table" then
|
||||
count = gift[2]
|
||||
gift = gift[1]
|
||||
end
|
||||
rewards[#rewards + 1] = {gift, count}
|
||||
table.remove(targetItem, rand)
|
||||
until #rewards == 7
|
||||
|
||||
for i = 1, #rewards do
|
||||
player:addItem(rewards[i][1], rewards[i][2])
|
||||
end
|
||||
item:remove(1)
|
||||
fromPosition:sendMagicEffect(CONST_ME_GIFT_WRAPS)
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
item:getPosition():sendMagicEffect(CONST_ME_SOUND_YELLOW)
|
||||
item:getPosition():sendMonsterSay("Merry Christmas, " .. player:getName() .. "!")
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if Tile(item:getPosition()):hasFlag(TILESTATE_PROTECTIONZONE) then
|
||||
item:getPosition():sendMagicEffect(3)
|
||||
else
|
||||
item:transform(3482, 1)
|
||||
item:decay()
|
||||
end
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
item:getPosition():sendMagicEffect(CONST_ME_DRAWBLOOD)
|
||||
item:transform(2874, math.random(10, 11))
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,61 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if math.random(1, 100) <= 95 then
|
||||
item:getPosition():sendMagicEffect(19)
|
||||
local parent = item:getParent()
|
||||
if parent:isContainer() or parent:isPlayer() then
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
else
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
end
|
||||
else
|
||||
item:getPosition():sendMagicEffect(19)
|
||||
local parent = item:getParent()
|
||||
if parent:isContainer() or parent:isPlayer() then
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
parent:addItem(3592, 1)
|
||||
else
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
Game.createItem(3592, 1, fromPosition)
|
||||
end
|
||||
item:transform(3592, 1)
|
||||
item:decay()
|
||||
end
|
||||
return true
|
||||
end
|
||||
36
app/SabrehavenServer/data/actions/scripts/misc/crowbar.lua
Normal file
36
app/SabrehavenServer/data/actions/scripts/misc/crowbar.lua
Normal file
@@ -0,0 +1,36 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if target:getId() == 4848 and player:getStorageValue(297) == 0 then
|
||||
player:setStorageValue(297, 1)
|
||||
target:getPosition():sendMagicEffect(1)
|
||||
target:transform(4849, 1)
|
||||
target:decay()
|
||||
return true
|
||||
elseif target:getId() == 4848 and player:getStorageValue(297) == 1 then
|
||||
player:setStorageValue(297, 2)
|
||||
target:getPosition():sendMagicEffect(1)
|
||||
target:transform(4849, 1)
|
||||
target:decay()
|
||||
return true
|
||||
elseif target:getId() == 4848 and player:getStorageValue(297) == 2 then
|
||||
player:setStorageValue(297, 3)
|
||||
target:getPosition():sendMagicEffect(1)
|
||||
target:transform(4849, 3)
|
||||
target:decay()
|
||||
return true
|
||||
elseif target:getId() == 1628 and toPosition.x == 32680 and toPosition.y == 32083 and toPosition.z == 09 then
|
||||
Game.transformItemOnMap({x = 32680, y = 32083, z = 09}, 1628, 1630)
|
||||
return true
|
||||
elseif target:getId() == 3501 and toPosition.x == 32013 and toPosition.y == 31562 and toPosition.z == 04 and player:getStorageValue(228) == 1 then
|
||||
Game.sendMagicEffect({x = 32013, y = 31562, z = 04}, 15)
|
||||
player:setStorageValue(228, 2)
|
||||
return true
|
||||
elseif target:getId() == 3501 and toPosition.x == 32013 and toPosition.y == 31562 and toPosition.z == 04 then
|
||||
Game.sendMagicEffect({x = 32013, y = 31562, z = 04}, 3)
|
||||
return true
|
||||
end
|
||||
return doDestroyItem(target)
|
||||
end
|
||||
31
app/SabrehavenServer/data/actions/scripts/misc/dice.lua
Normal file
31
app/SabrehavenServer/data/actions/scripts/misc/dice.lua
Normal file
@@ -0,0 +1,31 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
local playerPosition = player:getPosition()
|
||||
local afrompos = {x=playerPosition.x - 1, y=playerPosition.y - 1, z=playerPosition.z}
|
||||
local atopos = {x=playerPosition.x + 1, y=playerPosition.y + 1, z=playerPosition.z}
|
||||
for xa = afrompos.x,atopos.x do
|
||||
for ya = afrompos.y,atopos.y do
|
||||
for za = afrompos.z,atopos.z do
|
||||
local npos = {x = xa,y = ya,z = za}
|
||||
local depotItem = Tile(npos):getItemByType(ITEM_TYPE_DEPOT)
|
||||
if depotItem ~= nil then
|
||||
player:sendCancelMessage("You cannot use this object.")
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local dicePosition = item:getPosition()
|
||||
local value = math.random(6)
|
||||
local isInGhostMode = player:isInGhostMode()
|
||||
|
||||
dicePosition:sendMagicEffect(CONST_ME_CRAPS, isInGhostMode and player)
|
||||
|
||||
local spectators = Game.getSpectators(dicePosition, false, true, 3, 3)
|
||||
for i = 1, #spectators do
|
||||
player:say(player:getName() .. " rolled a " .. value .. ".", TALKTYPE_MONSTER_SAY, isInGhostMode, spectators[i], dicePosition)
|
||||
end
|
||||
|
||||
item:transform(5791 + value)
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,20 @@
|
||||
local distillingMachines = {
|
||||
[5468] = 5512,
|
||||
[5469] = 5513
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
local machine = distillingMachines[target:getId()]
|
||||
if machine then
|
||||
target:transform(machine, 1)
|
||||
target:decay()
|
||||
item:remove(1)
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,26 @@
|
||||
local greenDjinnItem = 6549
|
||||
local blueDjinnItem = 6551
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if player:getStorageValue(278) > 1 then
|
||||
player:sendTextMessage(MESSAGE_INFO_DESCR, "You have already finished one of the djinn quest or your quest is in-progress.")
|
||||
return true
|
||||
end
|
||||
|
||||
if item:getId() == greenDjinnItem then
|
||||
player:setStorageValue(278, 3)
|
||||
player:setStorageValue(286, 3)
|
||||
player:setStorageValue(287, 3)
|
||||
player:setStorageValue(288, 3)
|
||||
elseif item:getId() == blueDjinnItem then
|
||||
player:setStorageValue(278, 2)
|
||||
player:setStorageValue(280, 2)
|
||||
player:setStorageValue(281, 2)
|
||||
player:setStorageValue(282, 2)
|
||||
player:setStorageValue(283, 3)
|
||||
end
|
||||
|
||||
item:getPosition():sendMagicEffect(3)
|
||||
item:remove()
|
||||
return true
|
||||
end
|
||||
74
app/SabrehavenServer/data/actions/scripts/misc/dolls.lua
Normal file
74
app/SabrehavenServer/data/actions/scripts/misc/dolls.lua
Normal file
@@ -0,0 +1,74 @@
|
||||
local dolls = {
|
||||
[5080] = {"Hug me."},
|
||||
[5668] = {
|
||||
"It's not winning that matters, but winning in style.",
|
||||
"Today's your lucky day. Probably.",
|
||||
"Do not meddle in the affairs of dragons, for you are crunchy and taste good with ketchup.",
|
||||
"That is one stupid question.",
|
||||
"You'll need more rum for that.",
|
||||
"Do or do not. There is no try.",
|
||||
"You should do something you always wanted to.",
|
||||
"If you walk under a ladder and it falls down on you it probably means bad luck.",
|
||||
"Never say 'oops'. Always say 'Ah, interesting!'",
|
||||
"Five steps east, fourteen steps south, two steps north and seventeen steps west!"
|
||||
},
|
||||
[5791] = {
|
||||
"Fchhhhhh!",
|
||||
"Zchhhhhh!",
|
||||
"Grooaaaaar*cough*",
|
||||
"Aaa... CHOO!",
|
||||
"You... will.... burn!!"
|
||||
},
|
||||
[6511] = {
|
||||
"Ho ho ho",
|
||||
"Jingle bells, jingle bells...",
|
||||
"Have you been naughty?",
|
||||
"Have you been nice?",
|
||||
"Merry Christmas!",
|
||||
"Can you stop squeezing me now... I'm starting to feel a little sick."
|
||||
}
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
local sounds = dolls[item.itemid]
|
||||
if not sounds then
|
||||
return false
|
||||
end
|
||||
|
||||
if fromPosition.x == CONTAINER_POSITION then
|
||||
fromPosition = player:getPosition()
|
||||
end
|
||||
|
||||
local random = math.random(#sounds)
|
||||
local sound = sounds[random]
|
||||
if item.itemid == 5791 then
|
||||
if random == 3 then
|
||||
fromPosition:sendMagicEffect(CONST_ME_POFF)
|
||||
elseif random == 4 then
|
||||
fromPosition:sendMagicEffect(CONST_ME_FIREAREA)
|
||||
elseif random == 5 then
|
||||
doTargetCombatHealth(0, player, COMBAT_PHYSICALDAMAGE, -1, -1, CONST_ME_EXPLOSIONHIT)
|
||||
end
|
||||
|
||||
if configManager.getNumber(configKeys.CLIENT_VERSION) >= 790 then
|
||||
item:transform(6566)
|
||||
item:decay()
|
||||
end
|
||||
elseif item.itemid == 5668 then
|
||||
fromPosition:sendMagicEffect(CONST_ME_MAGIC_RED)
|
||||
item:transform(item.itemid + 1)
|
||||
item:decay()
|
||||
elseif item.itemid == 5080 then
|
||||
if configManager.getNumber(configKeys.CLIENT_VERSION) >= 790 then
|
||||
item:transform(6568)
|
||||
item:decay()
|
||||
end
|
||||
elseif item.itemid == 6511 then
|
||||
item:transform(6567)
|
||||
item:decay()
|
||||
end
|
||||
|
||||
sound = sound:gsub('|PLAYERNAME|', player:getName())
|
||||
player:say(sound, TALKTYPE_MONSTER_SAY, false, 0, fromPosition)
|
||||
return true
|
||||
end
|
||||
275
app/SabrehavenServer/data/actions/scripts/misc/doors.lua
Normal file
275
app/SabrehavenServer/data/actions/scripts/misc/doors.lua
Normal file
@@ -0,0 +1,275 @@
|
||||
local lockedDoors = {
|
||||
1628, 1631, 1650, 1653, 1668, 1671, 1682, 1691, 5006, 5007, 5097, 5106, 5115, 5124, 5133, 5136, 5139, 5142, 5277, 5280, 5732, 5735, 6191, 6194, 6248, 6251
|
||||
}
|
||||
|
||||
local closedNormalDoors = {
|
||||
[1629] = 1630,
|
||||
[1632] = 1633,
|
||||
[1638] = 1639,
|
||||
[1640] = 1641,
|
||||
[1651] = 1652,
|
||||
[1654] = 1655,
|
||||
[1656] = 1657,
|
||||
[1658] = 1659,
|
||||
[1669] = 1670,
|
||||
[1672] = 1673,
|
||||
[1683] = 1684,
|
||||
[1685] = 1686,
|
||||
[1692] = 1693,
|
||||
[1694] = 1695,
|
||||
[4912] = 4911,
|
||||
[4913] = 4914,
|
||||
[5082] = 5083,
|
||||
[5084] = 5085,
|
||||
[2177] = 2178,
|
||||
[2179] = 2180,
|
||||
[5098] = 5099,
|
||||
[5100] = 5101,
|
||||
[5107] = 5108,
|
||||
[5109] = 5110,
|
||||
[5116] = 5117,
|
||||
[5118] = 5119,
|
||||
[5125] = 5126,
|
||||
[5127] = 5128,
|
||||
[5134] = 5135,
|
||||
[5137] = 5138,
|
||||
[5140] = 5141,
|
||||
[5143] = 5144,
|
||||
[5278] = 5279,
|
||||
[5281] = 5282,
|
||||
[5283] = 5284,
|
||||
[5285] = 5286,
|
||||
[5514] = 5515,
|
||||
[5516] = 5517,
|
||||
[5733] = 5734,
|
||||
[5736] = 5737,
|
||||
[6192] = 6193,
|
||||
[6195] = 6196,
|
||||
[6197] = 6198,
|
||||
[6199] = 6200,
|
||||
[6249] = 6250,
|
||||
[6252] = 6253,
|
||||
[6254] = 6255,
|
||||
[6256] = 6257,
|
||||
}
|
||||
|
||||
local openVerticalDoors = {
|
||||
[1630] = 1629,
|
||||
[1639] = 1638,
|
||||
[1643] = 1642,
|
||||
[1647] = 1646,
|
||||
[1652] = 1651,
|
||||
[1657] = 1656,
|
||||
[1661] = 1660,
|
||||
[1665] = 1664,
|
||||
[1670] = 1669,
|
||||
[1675] = 1674,
|
||||
[1679] = 1678,
|
||||
[1693] = 1692,
|
||||
[1695] = 1694,
|
||||
[1697] = 1696,
|
||||
[1699] = 1698,
|
||||
[4914] = 4913,
|
||||
[5083] = 5082,
|
||||
[2178] = 2177,
|
||||
[5108] = 5107,
|
||||
[5110] = 5109,
|
||||
[5112] = 5111,
|
||||
[5114] = 5113,
|
||||
[5126] = 5125,
|
||||
[5128] = 5127,
|
||||
[5130] = 5129,
|
||||
[5132] = 5131,
|
||||
[5141] = 5140,
|
||||
[5144] = 5143,
|
||||
[5282] = 5281,
|
||||
[5284] = 5283,
|
||||
[5288] = 5287,
|
||||
[5292] = 5291,
|
||||
[5515] = 5514,
|
||||
[5737] = 5736,
|
||||
[5748] = 5749,
|
||||
[6193] = 6192,
|
||||
[6198] = 6197,
|
||||
[6202] = 6201,
|
||||
[6206] = 6205,
|
||||
[6250] = 6249,
|
||||
[6255] = 6254,
|
||||
[6259] = 6258,
|
||||
[6263] = 6262,
|
||||
}
|
||||
|
||||
local openHorizontalDoors = {
|
||||
[1633] = 1632,
|
||||
[1641] = 1640,
|
||||
[1645] = 1644,
|
||||
[1649] = 1648,
|
||||
[1655] = 1654,
|
||||
[1659] = 1658,
|
||||
[1663] = 1662,
|
||||
[1667] = 1666,
|
||||
[1673] = 1672,
|
||||
[1677] = 1676,
|
||||
[1681] = 1680,
|
||||
[1684] = 1683,
|
||||
[1686] = 1685,
|
||||
[1688] = 1687,
|
||||
[1690] = 1689,
|
||||
[4911] = 4912,
|
||||
[5085] = 5084,
|
||||
[2180] = 2179,
|
||||
[5099] = 5098,
|
||||
[5101] = 5100,
|
||||
[5103] = 5102,
|
||||
[5105] = 5104,
|
||||
[5117] = 5116,
|
||||
[5119] = 5118,
|
||||
[5121] = 5120,
|
||||
[5123] = 5122,
|
||||
[5135] = 5134,
|
||||
[5138] = 5137,
|
||||
[5279] = 5278,
|
||||
[5286] = 5285,
|
||||
[5290] = 5289,
|
||||
[5294] = 5293,
|
||||
[5517] = 5516,
|
||||
[5734] = 5733,
|
||||
[5746] = 5745,
|
||||
[6196] = 6195,
|
||||
[6200] = 6199,
|
||||
[6204] = 6203,
|
||||
[6208] = 6207,
|
||||
[6253] = 6252,
|
||||
[6257] = 6256,
|
||||
[6261] = 6260,
|
||||
[6265] = 6264,
|
||||
}
|
||||
|
||||
local levelDoors = {
|
||||
[1646] = 1647,
|
||||
[1648] = 1649,
|
||||
[1664] = 1665,
|
||||
[1666] = 1667,
|
||||
[1678] = 1679,
|
||||
[1680] = 1681,
|
||||
[1687] = 1688,
|
||||
[1696] = 1697,
|
||||
[5102] = 5103,
|
||||
[5111] = 5112,
|
||||
[5120] = 5121,
|
||||
[5129] = 5130,
|
||||
[5291] = 5292,
|
||||
[5293] = 5294,
|
||||
[6205] = 6206,
|
||||
[6207] = 6208,
|
||||
[6262] = 6263,
|
||||
[6264] = 6265,
|
||||
}
|
||||
|
||||
local questDoors = {
|
||||
[1642] = 1643,
|
||||
[1644] = 1645,
|
||||
[1660] = 1661,
|
||||
[1662] = 1663,
|
||||
[1674] = 1675,
|
||||
[1676] = 1677,
|
||||
[1689] = 1690,
|
||||
[1698] = 1699,
|
||||
[5104] = 5105,
|
||||
[5113] = 5114,
|
||||
[5122] = 5123,
|
||||
[5131] = 5132,
|
||||
[5287] = 5288,
|
||||
[5289] = 5290,
|
||||
[5745] = 5746,
|
||||
[5749] = 5748,
|
||||
[6201] = 6202,
|
||||
[6203] = 6204,
|
||||
[6258] = 6259,
|
||||
[6260] = 6261,
|
||||
}
|
||||
|
||||
local passthrough = {
|
||||
[2334] = 2335,
|
||||
[2335] = 2334,
|
||||
[2336] = 2337,
|
||||
[2337] = 2336,
|
||||
[2338] = 2339,
|
||||
[2339] = 2338,
|
||||
[2340] = 2341,
|
||||
[2341] = 2340,
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if table.contains(lockedDoors, item:getId()) then
|
||||
player:sendTextMessage(MESSAGE_INFO_DESCR, "It is locked.")
|
||||
return true
|
||||
end
|
||||
|
||||
local door = closedNormalDoors[item:getId()]
|
||||
if door then
|
||||
item:transform(door, 1)
|
||||
item:decay()
|
||||
return true
|
||||
end
|
||||
|
||||
door = openVerticalDoors[item:getId()]
|
||||
if door then
|
||||
local doorCreature = Tile(item:getPosition()):getTopCreature()
|
||||
if doorCreature then
|
||||
doorCreature:teleportTo(item:getPosition():moveRel(1, 0, 0), true)
|
||||
end
|
||||
item:transform(door, 1)
|
||||
item:decay()
|
||||
return true
|
||||
end
|
||||
|
||||
door = openHorizontalDoors[item:getId()]
|
||||
if door then
|
||||
local doorCreature = Tile(item:getPosition()):getTopCreature()
|
||||
if doorCreature then
|
||||
doorCreature:teleportTo(item:getPosition():moveRel(0, 1, 0), true)
|
||||
end
|
||||
item:transform(door, 1)
|
||||
item:decay()
|
||||
return true
|
||||
end
|
||||
|
||||
door = levelDoors[item:getId()]
|
||||
if door then
|
||||
if player:getLevel() < item:getAttribute(ITEM_ATTRIBUTE_DOORLEVEL) then
|
||||
player:sendTextMessage(MESSAGE_INFO_DESCR, item:getType():getDescription() .. ".")
|
||||
return true
|
||||
end
|
||||
|
||||
player:teleportTo(item:getPosition(), true)
|
||||
item:transform(door, 1)
|
||||
item:decay()
|
||||
return true
|
||||
end
|
||||
|
||||
door = questDoors[item:getId()]
|
||||
if door then
|
||||
local questNumber = item:getAttribute(ITEM_ATTRIBUTE_DOORQUESTNUMBER)
|
||||
local questValue = item:getAttribute(ITEM_ATTRIBUTE_DOORQUESTVALUE)
|
||||
if questNumber > 0 then
|
||||
if player:getStorageValue(questNumber) ~= questValue then
|
||||
player:sendTextMessage(MESSAGE_INFO_DESCR, "The door seems to be sealed against unwanted intruders.")
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
player:teleportTo(item:getPosition(), true)
|
||||
item:transform(door, 1)
|
||||
item:decay()
|
||||
return true
|
||||
end
|
||||
|
||||
door = passthrough[item:getId()]
|
||||
if door then
|
||||
item:transform(door, 1)
|
||||
item:decay()
|
||||
return true
|
||||
end
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,14 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if target:getId() == 4094 then
|
||||
item:transform(4853, 1)
|
||||
item:decay()
|
||||
target:getPosition():sendMagicEffect(12)
|
||||
item:getPosition():sendMagicEffect(13)
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
32
app/SabrehavenServer/data/actions/scripts/misc/fire_bug.lua
Normal file
32
app/SabrehavenServer/data/actions/scripts/misc/fire_bug.lua
Normal file
@@ -0,0 +1,32 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
if player:getStorageValue(17520) == 5 and target.itemid == 5601 then
|
||||
player:setStorageValue(17520, 6)
|
||||
toPosition:sendMagicEffect(CONST_ME_FIREAREA)
|
||||
return true
|
||||
end
|
||||
|
||||
local random = math.random(10)
|
||||
if random >= 4 then --success 6% chance
|
||||
if target.itemid == 5465 then --Burn Sugar Cane
|
||||
toPosition:sendMagicEffect(CONST_ME_FIREAREA)
|
||||
target:transform(5464)
|
||||
target:decay()
|
||||
elseif target.itemid == 3514 then --Light Up empty coal basins
|
||||
toPosition:sendMagicEffect(CONST_ME_HITBYFIRE)
|
||||
target:transform(3513)
|
||||
elseif target.itemid == 2114 then --Light Up empty coal basins
|
||||
toPosition:sendMagicEffect(CONST_ME_HITBYFIRE)
|
||||
target:transform(2113)
|
||||
end
|
||||
elseif random == 2 then --it remove the fire bug 2% chance
|
||||
item:remove(1)
|
||||
toPosition:sendMagicEffect(CONST_ME_POFF)
|
||||
elseif random == 1 then --it explode on the user 1% chance
|
||||
doTargetCombatHealth(0, player, COMBAT_FIREDAMAGE, -5, -5, CONST_ME_HITBYFIRE)
|
||||
player:say('OUCH!', TALKTYPE_MONSTER_SAY)
|
||||
item:remove(1)
|
||||
else
|
||||
toPosition:sendMagicEffect(CONST_ME_POFF) --it fails, but dont get removed 3% chance
|
||||
end
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,17 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
if fromPosition.x ~= CONTAINER_POSITION then
|
||||
fromPosition:sendMagicEffect(math.random(CONST_ME_FIREWORK_YELLOW, CONST_ME_FIREWORK_BLUE))
|
||||
else
|
||||
local pos = player:getPosition()
|
||||
pos:sendMagicEffect(CONST_ME_HITBYFIRE)
|
||||
pos:sendMagicEffect(CONST_ME_EXPLOSIONAREA)
|
||||
player:say("Ouch! Rather place it on the ground next time.", TALKTYPE_MONSTER_SAY)
|
||||
if (player:getHealth() > 10) then
|
||||
player:addHealth(-10)
|
||||
end
|
||||
end
|
||||
|
||||
item:remove()
|
||||
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,36 @@
|
||||
local water = {
|
||||
4597, 4598, 4599, 4600, 4601, 4602,
|
||||
4609, 4610, 4611, 4612, 4613, 4614,
|
||||
4615, 4616, 4617, 4618, 4619, 4620,
|
||||
622
|
||||
}
|
||||
|
||||
local fishableWater = {
|
||||
4597, 4598, 4599, 4600, 4601, 4602
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if not table.contains(water, target:getId()) then
|
||||
return false
|
||||
end
|
||||
|
||||
if not Tile(player:getPosition()):hasFlag(TILESTATE_PROTECTIONZONE) then
|
||||
player:addSkillTries(SKILL_FISHING, 1)
|
||||
if math.random(1, 100) <= math.min(math.max(10 + (player:getEffectiveSkillLevel(SKILL_FISHING) - 10) * 0.597, 10), 50) then
|
||||
player:addItem(3578, 1)
|
||||
|
||||
if target:getId() ~= 622 then
|
||||
target:transform(4609, 1)
|
||||
end
|
||||
|
||||
target:decay()
|
||||
end
|
||||
end
|
||||
|
||||
target:getPosition():sendMagicEffect(2)
|
||||
return true
|
||||
end
|
||||
120
app/SabrehavenServer/data/actions/scripts/misc/fluids.lua
Normal file
120
app/SabrehavenServer/data/actions/scripts/misc/fluids.lua
Normal file
@@ -0,0 +1,120 @@
|
||||
local drunk = Condition(CONDITION_DRUNK)
|
||||
drunk:setParameter(CONDITION_PARAM_TICKS, 60000)
|
||||
|
||||
local poison = Condition(CONDITION_POISON)
|
||||
poison:setTiming(100)
|
||||
|
||||
local messages = {
|
||||
[FLUID_WATER] = "Gulp.",
|
||||
[FLUID_WINE] = "Aah...",
|
||||
[FLUID_BEER] = "Aah...",
|
||||
[FLUID_MUD] = "Gulp.",
|
||||
[FLUID_BLOOD] = "Gulp.",
|
||||
[FLUID_SLIME] = "Urgh!",
|
||||
[FLUID_OIL] = "Gulp.",
|
||||
[FLUID_URINE] = "Urgh!",
|
||||
[FLUID_MILK] = "Mmmh.",
|
||||
[FLUID_MANAFLUID] = "Aaaah...",
|
||||
[FLUID_LIFEFLUID] = "Aaaah...",
|
||||
[FLUID_LEMONADE] = "Mmmh.",
|
||||
[FLUID_RUM] = "Aah...",
|
||||
[FLUID_COCONUTMILK] = "Mmmh.",
|
||||
[FLUID_FRUITJUICE] = "Mmmh."
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
local targetItemType = ItemType(target:getId())
|
||||
if targetItemType and targetItemType:isFluidContainer() then
|
||||
if target:getFluidType() == 0 and item:getFluidType() ~= 0 then
|
||||
target:transform(target:getId(), item:getFluidType())
|
||||
item:transform(item:getId(), 0)
|
||||
return true
|
||||
elseif target:getFluidType() ~= 0 and item:getFluidType() == 0 then
|
||||
player:sendCancelMessage("You cannot use this object.")
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
if (configManager.getBoolean(configKeys.UH_TRAP)) then
|
||||
local tile = Tile(toPosition)
|
||||
local creature = tile:getBottomCreature()
|
||||
if creature and creature:isPlayer() then
|
||||
target = creature
|
||||
end
|
||||
else
|
||||
-- monsters do not use mana also I do not know if you can use life fluid on monsters
|
||||
-- if you can just want to use life fluids on monster then change isPlayer to isCreature
|
||||
target = target:isPlayer() and target
|
||||
end
|
||||
|
||||
if target:isCreature() and target:getPlayer() ~= nil then
|
||||
if item:getFluidType() == FLUID_NONE then
|
||||
player:sendCancelMessage("It is empty.")
|
||||
else
|
||||
local self = target == player
|
||||
if self and item:getFluidType() == FLUID_BEER or item:getFluidType() == FLUID_WINE or item:getFluidType() == FLUID_RUM then
|
||||
player:addCondition(drunk)
|
||||
elseif self and item:getFluidType() == FLUID_SLIME then
|
||||
player:addCondition(poison)
|
||||
elseif item:getFluidType() == FLUID_MANAFLUID then
|
||||
target:addMana(math.random(50, 100))
|
||||
target:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
|
||||
elseif item:getFluidType() == FLUID_LIFEFLUID then
|
||||
target:addHealth(math.random(25, 50))
|
||||
target:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
|
||||
end
|
||||
|
||||
if not self then
|
||||
if item:getFluidType() ~= FLUID_MANAFLUID and item:getFluidType() ~= FLUID_LIFEFLUID then
|
||||
if toPosition.x == CONTAINER_POSITION then
|
||||
toPosition = player:getPosition()
|
||||
end
|
||||
Game.createItem(2886, item:getFluidType(), toPosition):decay()
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local message = messages[item:getFluidType()]
|
||||
if message then
|
||||
target:say(message, TALKTYPE_MONSTER_SAY)
|
||||
else
|
||||
target:say("Gulp.", TALKTYPE_MONSTER_SAY)
|
||||
end
|
||||
|
||||
if player:getStorageValue(17742) ~= 1 then
|
||||
item:transform(item:getId(), FLUID_NONE)
|
||||
else
|
||||
item:remove()
|
||||
end
|
||||
end
|
||||
else
|
||||
if toPosition.x == CONTAINER_POSITION then
|
||||
toPosition = player:getPosition()
|
||||
end
|
||||
|
||||
local tile = Tile(toPosition)
|
||||
if not tile then
|
||||
return false
|
||||
end
|
||||
|
||||
if item:getFluidType() ~= FLUID_NONE and tile:hasFlag(TILESTATE_IMMOVABLEBLOCKSOLID) then
|
||||
return false
|
||||
end
|
||||
|
||||
local fluidSource = targetItemType and targetItemType:getFluidSource() or FLUID_NONE
|
||||
if fluidSource ~= FLUID_NONE then
|
||||
item:transform(item:getId(), fluidSource)
|
||||
elseif item:getFluidType() == FLUID_NONE then
|
||||
player:sendTextMessage(MESSAGE_STATUS_SMALL, "It is empty.")
|
||||
else
|
||||
if item:getFluidType() == FLUID_BLOOD and target:getActionId() == 17639 then
|
||||
doRelocate({x = 32791, y = 32334, z = 09}, {x = 32791, y = 32332, z = 10})
|
||||
Position({x = 32791, y = 32332, z = 10}):sendMonsterSay("Muahahahaha...")
|
||||
end
|
||||
|
||||
Game.createItem(2886, item.type, toPosition):decay()
|
||||
item:transform(item:getId(), 0)
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
73
app/SabrehavenServer/data/actions/scripts/misc/food.lua
Normal file
73
app/SabrehavenServer/data/actions/scripts/misc/food.lua
Normal file
@@ -0,0 +1,73 @@
|
||||
local foods = {
|
||||
[3250] = "Crunch.", -- the carrot of doom
|
||||
[3577] = "Munch.", -- meat
|
||||
[3578] = "Munch.", -- fish
|
||||
[3579] = "Mmmm.", -- salmon
|
||||
[3580] = "Munch.", -- fish
|
||||
[3581] = "Gulp.", -- shrimp
|
||||
[3582] = "Chomp.", -- ham
|
||||
[3583] = "Chomp.", -- dragon ham
|
||||
[3584] = "Yum.", -- pear
|
||||
[3585] = "Yum.", -- red apple
|
||||
[3586] = "Yum.", -- orange
|
||||
[3587] = "Yum.", -- banana
|
||||
[3588] = "Yum.", -- blueberry
|
||||
[3589] = "Slurp.", -- coconut
|
||||
[3590] = "Yum.", -- cherry
|
||||
[3591] = "Yum.", -- strawberry
|
||||
[3592] = "Yum.", -- grapes
|
||||
[3593] = "Yum.", -- melon
|
||||
[3594] = "Munch.", -- pumpkin
|
||||
[3595] = "Crunch.", -- carrot
|
||||
[3596] = "Munch.", -- tomato
|
||||
[3597] = "Crunch.", -- corncob
|
||||
[3598] = "Crunch.", -- cookie
|
||||
[3599] = "Munch.", -- candy cane
|
||||
[3600] = "Crunch.", -- bread
|
||||
[3601] = "Crunch.", -- roll
|
||||
[3602] = "Crunch.", -- brown bread
|
||||
[3606] = "Gulp.", -- egg
|
||||
[3607] = "Smack.", -- cheese
|
||||
[3723] = "Munch.", -- white mushroom
|
||||
[3724] = "Munch.", -- red mushroom
|
||||
[3725] = "Munch.", -- brown mushroom
|
||||
[3726] = "Munch.", -- orange mushroom
|
||||
[3727] = "Munch.", -- wood mushroom
|
||||
[3728] = "Munch.", -- dark mushroom
|
||||
[3729] = "Munch.", -- some mushrooms
|
||||
[3730] = "Munch.", -- some mushrooms
|
||||
[3731] = "Munch.", -- fire mushroom
|
||||
[3732] = "Munch.", -- green mushroom
|
||||
[5096] = "Yum.", -- mango
|
||||
[5678] = "Gulp.", -- tortoise egg
|
||||
[6125] = "Gulp.", -- tortoise egg from Nargor
|
||||
[6277] = "Mmmm.", -- cake
|
||||
[6278] = "Mmmm.", -- cake
|
||||
[6392] = "Mmmm.", -- valentine's cake
|
||||
[6393] = "Mmmm.", -- cream cake
|
||||
[6500] = "Mmmm.", -- gingerbreadman
|
||||
[6541] = "Gulp.", -- coloured egg
|
||||
[6542] = "Gulp.", -- coloured egg
|
||||
[6543] = "Gulp.", -- coloured egg
|
||||
[6544] = "Gulp.", -- coloured egg
|
||||
[6545] = "Gulp.", -- coloured egg
|
||||
[6569] = "Mmmm.", -- candy
|
||||
[6574] = "Mmmm.", -- bar of chocolate
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
local itemType = ItemType(item:getId())
|
||||
local condition = player:getCondition(CONDITION_REGENERATION, CONDITIONID_DEFAULT)
|
||||
if condition and math.floor(condition:getTicks() / 1000 + (itemType:getNutrition() * 12)) >= 1200 then
|
||||
player:sendTextMessage(MESSAGE_STATUS_SMALL, "You are full.")
|
||||
else
|
||||
player:feed(itemType:getNutrition() * 12)
|
||||
item:remove(1)
|
||||
|
||||
if configManager.getNumber(configKeys.CLIENT_VERSION) >= 790 then
|
||||
player:say(foods[item:getId()] or "Munch.", TALKTYPE_MONSTER_SAY)
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,65 @@
|
||||
local parcels = {
|
||||
[2775] = 2374,
|
||||
[2776] = 2378,
|
||||
[2777] = 2358,
|
||||
[2778] = 2382,
|
||||
[2779] = 2366,
|
||||
[2780] = 2418,
|
||||
[2781] = 2422,
|
||||
[2782] = 2319,
|
||||
[2783] = 2316,
|
||||
[2784] = 2315,
|
||||
[2785] = 2314,
|
||||
[2786] = 2346,
|
||||
[2787] = 2349,
|
||||
[2788] = 2351,
|
||||
[2789] = 2433,
|
||||
[2790] = 2441,
|
||||
[2791] = 2449,
|
||||
[2792] = 2524,
|
||||
[2793] = 2523,
|
||||
[2794] = 2483,
|
||||
[2795] = 2465,
|
||||
[2796] = 2976,
|
||||
[2797] = 2979,
|
||||
[2798] = 2934,
|
||||
[2799] = 3485,
|
||||
[2800] = 2998,
|
||||
[2801] = 2445,
|
||||
[2802] = 2025,
|
||||
[2803] = 2029,
|
||||
[2804] = 2030,
|
||||
[2805] = 2904,
|
||||
[2806] = 3510,
|
||||
[2807] = 2959,
|
||||
[2808] = 2963,
|
||||
[2809] = 2426,
|
||||
[2810] = 2352,
|
||||
[2811] = 2982,
|
||||
[2812] = 2986,
|
||||
[5086] = 5046,
|
||||
[5087] = 5055,
|
||||
[5088] = 5056,
|
||||
[6114] = 6111,
|
||||
[6115] = 6109,
|
||||
[6371] = 6355,
|
||||
[6372] = 6367,
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
local parcel = parcels[item:getId()]
|
||||
if not parcel then
|
||||
return false
|
||||
end
|
||||
|
||||
if not item:getParent():isTile() then
|
||||
item:getPosition():sendMagicEffect(CONST_ME_POFF)
|
||||
elseif not Tile(fromPosition):getHouse() then
|
||||
item:getPosition():sendMagicEffect(CONST_ME_POFF)
|
||||
else
|
||||
item:transform(parcel)
|
||||
item:getPosition():sendMagicEffect(CONST_ME_POFF)
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,14 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if target:getId() == 3030 then
|
||||
item:getPosition():sendMagicEffect(14)
|
||||
item:transform(3230, 1)
|
||||
item:decay()
|
||||
target:remove(1)
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
18
app/SabrehavenServer/data/actions/scripts/misc/ice_pick.lua
Normal file
18
app/SabrehavenServer/data/actions/scripts/misc/ice_pick.lua
Normal file
@@ -0,0 +1,18 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if target:getId() == 4994 and player:getStorageValue(306) == 1 and player:getStorageValue(307) == 0 then
|
||||
local parent = item:getParent()
|
||||
if parent:isContainer() or parent:isPlayer() then
|
||||
parent:addItem(4837, 1)
|
||||
else
|
||||
Game.createItem(4837, 1, item:getPosition())
|
||||
end
|
||||
target:getPosition():sendMagicEffect(2)
|
||||
player:setStorageValue(307, 1)
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,28 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() >= 2948 and item:getId() <= 2950 or item:getId() >= 2952 and item:getId() <= 2958 or
|
||||
item:getId() >= 2963 and item:getId() <= 2964 then
|
||||
item:getPosition():sendMagicEffect(CONST_ME_SOUND_GREEN)
|
||||
elseif (item:getId() >= 2959 and item:getId() <= 2962 or item:getId() == 2965) and math.random(1, 100) <= 50 then
|
||||
item:getPosition():sendMagicEffect(CONST_ME_SOUND_GREEN)
|
||||
elseif item:getId() >= 2959 and item:getId() <= 2962 or item:getId() == 2965 then
|
||||
item:getPosition():sendMagicEffect(CONST_ME_SOUND_PURPLE)
|
||||
elseif item:getId() == 3219 then
|
||||
item:getPosition():sendMagicEffect(19)
|
||||
elseif item:getId() == 5786 then
|
||||
Game.createMonster("wolf", player:getPosition())
|
||||
local random = math.random(1,10)
|
||||
if random > 3 then -- destroy 70% chance
|
||||
item:getPosition():sendMagicEffect(CONST_ME_SOUND_RED)
|
||||
item:remove(1)
|
||||
else
|
||||
item:getPosition():sendMagicEffect(CONST_ME_SOUND_YELLOW)
|
||||
end
|
||||
elseif item:getId() == 6572 then
|
||||
item:getPosition():sendMagicEffect(CONST_ME_SOUND_GREEN)
|
||||
item:getPosition():sendMonsterSay("TOOOOOOT")
|
||||
item:transform(6573)
|
||||
item:decay()
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
local fruits = {3584, 3585, 3586, 3587, 3588, 3589, 3590, 3591, 3592, 3593, 3595, 3596, 5096}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
if isInArray(fruits, target.itemid) and player:removeItem(2874, 1, 0) then
|
||||
target:remove(1)
|
||||
player:addItem(2874, target.itemid == 3589 and 14 or 15)
|
||||
return true
|
||||
end
|
||||
end
|
||||
104
app/SabrehavenServer/data/actions/scripts/misc/key.lua
Normal file
104
app/SabrehavenServer/data/actions/scripts/misc/key.lua
Normal file
@@ -0,0 +1,104 @@
|
||||
local closedDoors = {
|
||||
[1628] = 1630,
|
||||
[1629] = 1628,
|
||||
[1631] = 1633,
|
||||
[1632] = 1631,
|
||||
[1650] = 1652,
|
||||
[1651] = 1650,
|
||||
[1653] = 1655,
|
||||
[1654] = 1653,
|
||||
[1668] = 1670,
|
||||
[1669] = 1668,
|
||||
[1671] = 1673,
|
||||
[1672] = 1671,
|
||||
[1682] = 1684,
|
||||
[1683] = 1682,
|
||||
[1691] = 1693,
|
||||
[1692] = 1691,
|
||||
[5097] = 5099,
|
||||
[5098] = 5097,
|
||||
[5106] = 5108,
|
||||
[5107] = 5106,
|
||||
[5115] = 5117,
|
||||
[5116] = 5115,
|
||||
[5124] = 5126,
|
||||
[5125] = 5124,
|
||||
[5133] = 5135,
|
||||
[5134] = 5133,
|
||||
[5136] = 5138,
|
||||
[5137] = 5136,
|
||||
[5139] = 5141,
|
||||
[5140] = 5139,
|
||||
[5142] = 5144,
|
||||
[5143] = 5142,
|
||||
[5277] = 5279,
|
||||
[5278] = 5277,
|
||||
[5280] = 5282,
|
||||
[5281] = 5280,
|
||||
[5732] = 5734,
|
||||
[5733] = 5732,
|
||||
[5735] = 5737,
|
||||
[5736] = 5735,
|
||||
[6191] = 6193,
|
||||
[6192] = 6191,
|
||||
[6194] = 6196,
|
||||
[6195] = 6194,
|
||||
[6248] = 6250,
|
||||
[6249] = 6248,
|
||||
[6251] = 6253,
|
||||
[6252] = 6251,
|
||||
}
|
||||
|
||||
local openDoors = {
|
||||
[1630] = 1628,
|
||||
[1633] = 1631,
|
||||
[1652] = 1650,
|
||||
[1655] = 1653,
|
||||
[1670] = 1668,
|
||||
[1673] = 1671,
|
||||
[1684] = 1682,
|
||||
[1693] = 1691,
|
||||
[5099] = 5097,
|
||||
[5108] = 5106,
|
||||
[5117] = 5115,
|
||||
[5126] = 5124,
|
||||
[5135] = 5133,
|
||||
[5138] = 5136,
|
||||
[5141] = 5139,
|
||||
[5144] = 5142,
|
||||
[5279] = 5277,
|
||||
[5282] = 5280,
|
||||
[5734] = 5732,
|
||||
[5737] = 5735,
|
||||
[6193] = 6191,
|
||||
[6196] = 6194,
|
||||
[6250] = 6248,
|
||||
[6253] = 6251,
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
local door = closedDoors[target:getId()]
|
||||
if not door then
|
||||
door = openDoors[target:getId()]
|
||||
end
|
||||
|
||||
if not door then
|
||||
return false
|
||||
end
|
||||
|
||||
local keyNumber = item:getAttribute(ITEM_ATTRIBUTE_KEYNUMBER)
|
||||
local keyHoleNumber = target:getAttribute(ITEM_ATTRIBUTE_KEYHOLENUMBER)
|
||||
|
||||
if keyHoleNumber == 0 or keyNumber ~= keyHoleNumber then
|
||||
player:sendCancelMessage("The key does not match.")
|
||||
return true
|
||||
end
|
||||
|
||||
target:transform(door)
|
||||
target:decay()
|
||||
return true
|
||||
end
|
||||
19
app/SabrehavenServer/data/actions/scripts/misc/knife.lua
Normal file
19
app/SabrehavenServer/data/actions/scripts/misc/knife.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
local fruits = {3584, 3585, 3586, 3587, 3588, 3589, 3590, 3591, 3592, 3593, 3595, 3596, 5096}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if target:getId() == 3594 then
|
||||
target:transform(2977, 1)
|
||||
target:decay()
|
||||
return true
|
||||
elseif isInArray(fruits, target:getId()) and player:removeItem(6277, 1) then
|
||||
target:remove(1)
|
||||
player:addItem(6278, 1)
|
||||
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,10 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if target:getId() == 3221 and toPosition.x == 31948 and toPosition.y == 31711 and toPosition.z == 06 then
|
||||
item:transform(2859, 1)
|
||||
item:decay()
|
||||
player:setStorageValue(244, 2)
|
||||
Game.sendMagicEffect({x = 31948, y = 31711, z = 06}, 19)
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
if math.random(100) == 1 then
|
||||
player:getPosition():sendMagicEffect(CONST_ME_SOUND_YELLOW)
|
||||
player:say("Congratulations! You won a prize!", TALKTYPE_MONSTER_SAY)
|
||||
item:transform(5958)
|
||||
else
|
||||
player:getPosition():sendMagicEffect(CONST_ME_POFF)
|
||||
player:say("Sorry, but you drew a blank.", TALKTYPE_MONSTER_SAY)
|
||||
item:remove(1)
|
||||
end
|
||||
return true
|
||||
end
|
||||
19
app/SabrehavenServer/data/actions/scripts/misc/machete.lua
Normal file
19
app/SabrehavenServer/data/actions/scripts/misc/machete.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if target:getId() == 3696 then
|
||||
target:transform(3695, 1)
|
||||
target:decay()
|
||||
return true
|
||||
elseif target:getId() == 3702 then
|
||||
target:transform(3701, 1)
|
||||
target:decay()
|
||||
return true
|
||||
elseif target:getId() == 2130 then
|
||||
target:remove()
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,6 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
item:transform(3481, 1)
|
||||
item:decay()
|
||||
item:getPosition():sendMagicEffect(3)
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,6 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
item:getPosition():sendMagicEffect(CONST_ME_POFF)
|
||||
item:transform(6278, 1)
|
||||
item:getPosition():sendMonsterSay(player:getName() .. " blew out the candle.")
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
local slot = player:getSlotItem(CONST_SLOT_HEAD)
|
||||
if slot and item.uid == slot.uid then
|
||||
player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS)
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
89
app/SabrehavenServer/data/actions/scripts/misc/pick.lua
Normal file
89
app/SabrehavenServer/data/actions/scripts/misc/pick.lua
Normal file
@@ -0,0 +1,89 @@
|
||||
local pitsOfInfernoLava = {
|
||||
Position(32808, 32336, 11),
|
||||
Position(32809, 32336, 11),
|
||||
Position(32810, 32336, 11),
|
||||
Position(32808, 32334, 11),
|
||||
Position(32807, 32334, 11),
|
||||
Position(32807, 32335, 11),
|
||||
Position(32807, 32336, 11),
|
||||
Position(32807, 32337, 11),
|
||||
Position(32806, 32337, 11),
|
||||
Position(32805, 32337, 11),
|
||||
Position(32805, 32338, 11),
|
||||
Position(32805, 32339, 11),
|
||||
Position(32806, 32339, 11),
|
||||
Position(32806, 32338, 11),
|
||||
Position(32807, 32338, 11),
|
||||
Position(32808, 32338, 11),
|
||||
Position(32808, 32337, 11),
|
||||
Position(32809, 32337, 11),
|
||||
Position(32810, 32337, 11),
|
||||
Position(32811, 32337, 11),
|
||||
Position(32811, 32338, 11),
|
||||
Position(32806, 32338, 11),
|
||||
Position(32810, 32338, 11),
|
||||
Position(32810, 32339, 11),
|
||||
Position(32809, 32339, 11),
|
||||
Position(32809, 32338, 11),
|
||||
Position(32811, 32336, 11),
|
||||
Position(32811, 32335, 11),
|
||||
Position(32810, 32335, 11),
|
||||
Position(32809, 32335, 11),
|
||||
Position(32808, 32335, 11),
|
||||
Position(32809, 32334, 11),
|
||||
Position(32809, 32333, 11),
|
||||
Position(32810, 32333, 11),
|
||||
Position(32811, 32333, 11),
|
||||
Position(32806, 32338, 11),
|
||||
Position(32810, 32334, 11),
|
||||
Position(32811, 32334, 11),
|
||||
Position(32812, 32334, 11),
|
||||
Position(32813, 32334, 11),
|
||||
Position(32812, 32333, 11),
|
||||
Position(32810, 32334, 11),
|
||||
Position(32812, 32335, 11),
|
||||
Position(32813, 32335, 11),
|
||||
Position(32813, 32333, 11)
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
local tile = Tile(toPosition)
|
||||
if not tile then
|
||||
return false
|
||||
end
|
||||
|
||||
local ground = tile:getGround()
|
||||
if not ground then
|
||||
return false
|
||||
end
|
||||
|
||||
if ground:getId() == 372 then
|
||||
ground:transform(394, 1)
|
||||
ground:decay()
|
||||
return true
|
||||
elseif target:getId() == 1772 and toPosition.x == 32648 and toPosition.y == 32134 and toPosition.z == 10 and math.random(1, 100) <= 40 then
|
||||
Game.sendMagicEffect({x = 32648, y = 32134, z = 10}, 3)
|
||||
Game.removeItemOnMap({x = 32648, y = 32134, z = 10}, 1772)
|
||||
return true
|
||||
elseif target:getId() == 1772 and toPosition.x == 32648 and toPosition.y == 32134 and toPosition.z == 10 then
|
||||
Game.sendMagicEffect({x = 32648, y = 32134, z = 10}, 3)
|
||||
doTargetCombatHealth(0, player, COMBAT_PHYSICALDAMAGE, -40, -40)
|
||||
return true
|
||||
elseif target:getId() == 1791 and toPosition.x == 32356 and toPosition.y == 32074 and toPosition.z == 10 and math.random(1, 100) <= 40 then
|
||||
Game.sendMagicEffect({x = 32356, y = 32074, z = 10}, 3)
|
||||
Game.removeItemOnMap({x = 32356, y = 32074, z = 10}, 1791)
|
||||
return true
|
||||
elseif target:getId() == 1791 and toPosition.x == 32356 and toPosition.y == 32074 and toPosition.z == 10 then
|
||||
Game.sendMagicEffect({x = 32356, y = 32074, z = 10}, 3)
|
||||
doTargetCombatHealth(0, player, COMBAT_PHYSICALDAMAGE, -50, -50)
|
||||
return true
|
||||
elseif target:getActionId() == 17643 then
|
||||
for i = 1, #pitsOfInfernoLava do
|
||||
Game.createItem(5815, 1, pitsOfInfernoLava[i])
|
||||
end
|
||||
target:transform(3141)
|
||||
toPosition:sendMagicEffect(CONST_ME_POFF)
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,22 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if player:getStorageValue(250) == 5 then
|
||||
player:sendTextMessage(MESSAGE_INFO_DESCR, "You have already finished The Postman Missions.")
|
||||
return true
|
||||
end
|
||||
|
||||
player:setStorageValue(227, 6)
|
||||
player:setStorageValue(228, 3)
|
||||
player:setStorageValue(229, 4)
|
||||
player:setStorageValue(230, 21)
|
||||
player:setStorageValue(231, 3)
|
||||
player:setStorageValue(233, 11)
|
||||
player:setStorageValue(234, 8)
|
||||
player:setStorageValue(242, 2)
|
||||
player:setStorageValue(244, 3)
|
||||
player:setStorageValue(245, 3)
|
||||
player:setStorageValue(250, 5)
|
||||
|
||||
item:getPosition():sendMagicEffect(CONST_ME_SOUND_GREEN)
|
||||
item:remove()
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
item:getPosition():sendMagicEffect(3)
|
||||
item:remove()
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,13 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if target:getId() == 2917 then
|
||||
item:transform(2978, 1)
|
||||
item:decay()
|
||||
target:remove()
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
12
app/SabrehavenServer/data/actions/scripts/misc/rake.lua
Normal file
12
app/SabrehavenServer/data/actions/scripts/misc/rake.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
-- The Shattered Isles Parrot ring
|
||||
if target:getId() == 6094 then
|
||||
if player:getStorageValue(17502) == 1 and player:getStorageValue(17503) ~= 1 then
|
||||
toPosition:sendMagicEffect(CONST_ME_POFF)
|
||||
Game.createItem(6093, 1, Position(32422, 32770, 1))
|
||||
player:say("You have found a ring.", TALKTYPE_MONSTER_SAY)
|
||||
player:setStorageValue(17503, 1)
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,21 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
if player:getStorageValue(17572) ~= 1 and player:getLevel() <= 7 then
|
||||
player:setStorageValue(17572, 1)
|
||||
player:addHealth(-math.random(player:getHealth()-20, player:getHealth()-1))
|
||||
item:getPosition():sendMagicEffect(CONST_ME_HITBYFIRE)
|
||||
player:say('OUCH!', TALKTYPE_MONSTER_SAY)
|
||||
player:addExperience(4200 - player:getExperience())
|
||||
|
||||
player:addItem(3355,1)
|
||||
player:addItem(3361,1)
|
||||
player:addItem(3559,1)
|
||||
player:addItem(3552,1)
|
||||
player:addItem(3412,1)
|
||||
player:addItem(3273,1)
|
||||
player:addItem(3031,25)
|
||||
player:addItem(3582,3)
|
||||
player:addItem(3003,1)
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
76
app/SabrehavenServer/data/actions/scripts/misc/rope.lua
Normal file
76
app/SabrehavenServer/data/actions/scripts/misc/rope.lua
Normal file
@@ -0,0 +1,76 @@
|
||||
local ropeSpots = {
|
||||
386, 421
|
||||
}
|
||||
|
||||
local holeSpots = {
|
||||
293, 294, 369, 370, 385, 394, 411, 412,
|
||||
421, 432, 433, 435, 482, 5081, 483, 594,
|
||||
595, 607, 609, 610, 615, 1066, 1067, 1080
|
||||
}
|
||||
|
||||
local pools = {2886, 2887, 2888, 2889, 2890, 2891, 2895, 2896, 2897, 2898, 2899, 2900}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if (configManager.getBoolean(configKeys.ROPE_SPOT_BLOCK)) then
|
||||
-- Rope for 7.4 protocol.
|
||||
local newPos = {x = toPosition.x, y = toPosition.y, z = toPosition.z, stackpos = 0}
|
||||
local groundItem = getThingfromPos(newPos)
|
||||
local blockingItem = getThingfromPos({x = toPosition.x, y = toPosition.y, z = toPosition.z, stackpos = 255})
|
||||
if table.contains(ropeSpots, groundItem.itemid) then
|
||||
newPos.y = newPos.y + 1
|
||||
newPos.z = newPos.z - 1
|
||||
if((blockingItem.itemid > 0 and not isInArray(pools, blockingItem.itemid)) or isCreature(blockingItem.uid)) then
|
||||
doPlayerSendCancel(player, "You cannot use this object.")
|
||||
else
|
||||
doTeleportThing(player, newPos)
|
||||
end
|
||||
elseif table.contains(holeSpots, groundItem.itemid) then
|
||||
newPos.y = newPos.y + 1
|
||||
local downPos = {x = toPosition.x, y = toPosition.y, z = toPosition.z + 1, stackpos = 255}
|
||||
local downItem = getThingfromPos(downPos)
|
||||
if(downItem.itemid > 0) then
|
||||
doTeleportThing(downItem.uid, newPos)
|
||||
else
|
||||
doPlayerSendCancel(player, "You cannot use this object.")
|
||||
end
|
||||
end
|
||||
return true
|
||||
else
|
||||
local tile = Tile(toPosition)
|
||||
if not tile then
|
||||
return false
|
||||
end
|
||||
|
||||
if not tile:getGround() then
|
||||
return false
|
||||
end
|
||||
|
||||
if table.contains(ropeSpots, tile:getGround():getId()) then
|
||||
player:teleportTo(target:getPosition():moveRel(0, 1, -1))
|
||||
return true
|
||||
elseif table.contains(holeSpots, tile:getGround():getId()) or target:getId() == 435 then
|
||||
local tile = Tile(target:getPosition():moveRel(0, 0, 1))
|
||||
if not tile then
|
||||
return false
|
||||
end
|
||||
|
||||
local thing = tile:getTopCreature()
|
||||
if not thing then
|
||||
thing = tile:getTopVisibleThing()
|
||||
end
|
||||
|
||||
if thing:isCreature() then
|
||||
thing:teleportTo(target:getPosition():moveRel(0, 1, 0), false)
|
||||
return true
|
||||
end
|
||||
if thing:isItem() and thing:getType():isMovable() then
|
||||
thing:moveTo(target:getPosition():moveRel(0, 1, 0))
|
||||
return true
|
||||
end
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,10 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
if player:getStorageValue(17582) < os.time() then
|
||||
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your experience earnings have been enchanted by the Tibianus Gods.")
|
||||
player:setStorageValue(17582, os.time() + 24 * 60 * 60) -- 24 hour
|
||||
item:remove(1)
|
||||
else
|
||||
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You shoud not take any more today.")
|
||||
end
|
||||
return true
|
||||
end
|
||||
21
app/SabrehavenServer/data/actions/scripts/misc/scythe.lua
Normal file
21
app/SabrehavenServer/data/actions/scripts/misc/scythe.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if target:getId() == 3652 then
|
||||
player:sendCancelMessage(target:getType():getDescription() .. ".")
|
||||
return true
|
||||
elseif target:getId() == 3653 then
|
||||
target:transform(3651, 1)
|
||||
target:decay()
|
||||
Game.createItem(3605, 1, target:getPosition())
|
||||
return true
|
||||
elseif target:getId() == 5463 then
|
||||
target:transform(5462, 1)
|
||||
target:decay()
|
||||
Game.createItem(5466, 1, target:getPosition())
|
||||
return true
|
||||
end
|
||||
return doDestroyItem(target)
|
||||
end
|
||||
@@ -0,0 +1,10 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if target:getId() == 2199 and toPosition.x == 32754 and toPosition.y == 32559 and toPosition.z == 09 and player:getStorageValue(315) == 1 then
|
||||
item:transform(4843, 1)
|
||||
item:decay()
|
||||
player:setStorageValue(316, 1)
|
||||
target:getPosition():sendMagicEffect(4)
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,15 @@
|
||||
local hundredPoints = 6554
|
||||
local fiftyPoints = 6555
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == hundredPoints then
|
||||
db.query("UPDATE znote_accounts SET points = points + 100 WHERE account_id = ".. player:getAccountId() .."")
|
||||
elseif item:getId() == fiftyPoints then
|
||||
db.query("UPDATE znote_accounts SET points = points + 50 WHERE account_id = ".. player:getAccountId() .."")
|
||||
end
|
||||
|
||||
item:getPosition():sendMagicEffect(3)
|
||||
item:remove()
|
||||
player:save()
|
||||
return true
|
||||
end
|
||||
57
app/SabrehavenServer/data/actions/scripts/misc/shovel.lua
Normal file
57
app/SabrehavenServer/data/actions/scripts/misc/shovel.lua
Normal file
@@ -0,0 +1,57 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
local tile = Tile(toPosition)
|
||||
if not tile then
|
||||
return false
|
||||
end
|
||||
|
||||
local ground = tile:getGround()
|
||||
if not ground then
|
||||
return false
|
||||
end
|
||||
|
||||
local toTarget = target;
|
||||
|
||||
local itemType = ItemType(target:getId())
|
||||
if itemType:isSplash() then
|
||||
toTarget = ground
|
||||
end
|
||||
|
||||
if toTarget:getId() == 231 then
|
||||
toTarget:getPosition():sendMagicEffect(3)
|
||||
return true
|
||||
elseif toTarget:getId() == 593 then
|
||||
toTarget:transform(594, 1)
|
||||
toTarget:decay()
|
||||
doRelocate(toTarget:getPosition(), toTarget:getPosition():moveRel(0,0,1))
|
||||
return true
|
||||
elseif toTarget:getId() == 606 then
|
||||
toTarget:transform(607, 1)
|
||||
toTarget:decay()
|
||||
doRelocate(toTarget:getPosition(), toTarget:getPosition():moveRel(0,0,1))
|
||||
return true
|
||||
elseif toTarget:getId() == 608 then
|
||||
toTarget:transform(609, 1)
|
||||
toTarget:decay()
|
||||
doRelocate(toTarget:getPosition(), toTarget:getPosition():moveRel(0,0,1))
|
||||
elseif toTarget:getId() == 614 and math.random(1, 100) <= 50 then
|
||||
toTarget:transform(615, 1)
|
||||
toTarget:decay()
|
||||
toTarget:getPosition():sendMagicEffect(3)
|
||||
doRelocate(toTarget:getPosition(), toTarget:getPosition():moveRel(0,0,1))
|
||||
elseif toTarget:getId() == 614 then
|
||||
toTarget:getPosition():sendMagicEffect(3)
|
||||
elseif toTarget:getId() == 616 and math.random(1, 100) <= 95 then
|
||||
toTarget:transform(617, 1)
|
||||
toTarget:decay()
|
||||
toTarget:getPosition():sendMagicEffect(3)
|
||||
Game.createMonster("scarab", toTarget:getPosition())
|
||||
elseif toTarget:getId() == 616 then
|
||||
toTarget:getPosition():sendMagicEffect(3)
|
||||
Game.createItem(3042, 1, toTarget:getPosition())
|
||||
toTarget:transform(617, 1)
|
||||
toTarget:decay()
|
||||
elseif toTarget:getId() == 617 then
|
||||
toTarget:getPosition():sendMagicEffect(3)
|
||||
end
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,30 @@
|
||||
local statues = {
|
||||
[17725] = SKILL_SWORD,
|
||||
[17724] = SKILL_AXE,
|
||||
[17726] = SKILL_CLUB,
|
||||
[17727] = SKILL_DISTANCE,
|
||||
[17728] = SKILL_MAGLEVEL
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
-- local skill = statues[item:getActionId()]
|
||||
-- if not player:isPremium() then
|
||||
-- player:sendCancelMessage(RETURNVALUE_YOUNEEDPREMIUMACCOUNT)
|
||||
-- return true
|
||||
-- end
|
||||
|
||||
-- if player:isPzLocked() then
|
||||
-- return false
|
||||
-- end
|
||||
|
||||
-- local entreePrice = 1000
|
||||
-- if player:getBankBalance() < entreePrice then
|
||||
-- player:sendCancelMessage("You do not have 1000 gold coins in your bank account balance to participate in offline training.")
|
||||
-- return true
|
||||
-- end
|
||||
|
||||
-- player:setOfflineTrainingSkill(skill)
|
||||
-- player:setBankBalance(player:getBankBalance() - entreePrice)
|
||||
-- player:remove()
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,80 @@
|
||||
local config = {
|
||||
[5908] = {
|
||||
-- Minotaurs
|
||||
[4011] = {value = 25000, newItem = 5878},
|
||||
[4047] = {value = 25000, newItem = 5878},
|
||||
[4057] = {value = 25000, newItem = 5878},
|
||||
[4052] = {value = 25000, newItem = 5878},
|
||||
|
||||
-- Low Class Lizards
|
||||
[4321] = {value = 25000, newItem = 5876},
|
||||
[4327] = {value = 25000, newItem = 5876},
|
||||
[4324] = {value = 25000, newItem = 5876},
|
||||
|
||||
-- Dragons
|
||||
[4025] = {value = 25000, newItem = 5877},
|
||||
|
||||
-- Dragon Lords
|
||||
[4062] = {value = 25000, newItem = 5948},
|
||||
|
||||
-- Behemoths
|
||||
[4112] = {value = 35000, newItem = 5893},
|
||||
|
||||
-- Bone Beasts
|
||||
[4212] = {value = 25000, newItem = 5925},
|
||||
},
|
||||
[5942] = {
|
||||
-- Demon
|
||||
[4097] = {value = 25000, newItem = 5906},
|
||||
|
||||
-- Vampires
|
||||
[4137] = {value = 25000, newItem = 5905}
|
||||
}
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
local skin = config[item.itemid][target.itemid]
|
||||
if not skin then
|
||||
return false
|
||||
end
|
||||
|
||||
local random, effect, transform = math.random(1, 100000), CONST_ME_MAGIC_GREEN, true
|
||||
if type(skin[1]) == 'table' then
|
||||
local _skin
|
||||
for i = 1, #skin do
|
||||
_skin = skin[i]
|
||||
if random <= _skin.value then
|
||||
if isInArray({7441, 7442, 7444, 7445}, target.itemid) then
|
||||
player:addItem(_skin.newItem, _skin.amount or 1)
|
||||
effect = CONST_ME_HITAREA
|
||||
else
|
||||
player:addItem(_skin.newItem, _skin.amount or 1)
|
||||
end
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
elseif random <= skin.value then
|
||||
if isInArray({7441, 7442, 7444, 7445}, target.itemid) then
|
||||
player:addItem(skin.newItem, skin.amount or 1)
|
||||
effect = CONST_ME_HITAREA
|
||||
else
|
||||
player:addItem(skin.newItem, skin.amount or 1)
|
||||
end
|
||||
else
|
||||
if isInArray({7441, 7442, 7444, 7445}, target.itemid) then
|
||||
player:say('The attempt of sculpting failed miserably.', TALKTYPE_MONSTER_SAY)
|
||||
effect = CONST_ME_HITAREA
|
||||
else
|
||||
effect = CONST_ME_POFF
|
||||
end
|
||||
end
|
||||
|
||||
toPosition:sendMagicEffect(effect)
|
||||
if transform then
|
||||
target:transform(skin.after or target.itemid + 1)
|
||||
target:decay()
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,14 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if target:getId() == 2917 then
|
||||
player:addItem(5813, 1)
|
||||
item:remove(1)
|
||||
target:remove(1)
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,15 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if target:getId() == 4850 and player:getStorageValue(293) == 17 then
|
||||
target:transform(4851, 1)
|
||||
target:decay()
|
||||
player:setStorageValue(299, 1)
|
||||
item:remove()
|
||||
target:getPosition():sendMagicEffect(7)
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,4 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
Game.createItem(2992, 1, fromPosition)
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,37 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if player:hasFlag(PlayerFlag_SpecialMoveUse) then
|
||||
if item:getId() == 372 then
|
||||
item:transform(394, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 386 or item:getId() == 421 then
|
||||
local relPos = item:getPosition():moveRel(0, 1, -1)
|
||||
player:teleportTo(relPos)
|
||||
elseif item:getId() == 593 then
|
||||
item:transform(594, 1)
|
||||
item:decay()
|
||||
doRelocate(item:getPosition(),item:getPosition():moveRel(0, 0, 1))
|
||||
elseif item:getId() == 606 or item:getId() == 608 then
|
||||
item:transform(607, 1)
|
||||
item:decay()
|
||||
doRelocate(item:getPosition(), item:getPosition():moveRel(0, 0, 1))
|
||||
elseif item:getId() == 614 then
|
||||
item:transform(615, 1)
|
||||
item:decay()
|
||||
item:getPosition():sendMagicEffect(3)
|
||||
doRelocate(item:getPosition(), item:getPosition():moveRel(0, 0, 1))
|
||||
elseif item:getId() == 3653 then
|
||||
item:transform(3651, 1)
|
||||
item:decay()
|
||||
Game.createItem(3605, 1, item:getPosition())
|
||||
elseif item:getId() == 3696 then
|
||||
item:transform(3695, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 3702 then
|
||||
item:transform(3701, 1)
|
||||
item:decay()
|
||||
end
|
||||
else
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if target:getId() == 599 and toPosition.x == 32665 and toPosition.y == 32736 and toPosition.z == 06 and player:getStorageValue(320) == 5 then
|
||||
player:setStorageValue(321,1)
|
||||
target:getPosition():sendMagicEffect(13)
|
||||
return true
|
||||
elseif target:getId() == 599 and toPosition.x == 32497 and toPosition.y == 31622 and toPosition.z == 06 and player:getStorageValue(320) == 5 then
|
||||
player:setStorageValue(322,1)
|
||||
target:getPosition():sendMagicEffect(13)
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
32
app/SabrehavenServer/data/actions/scripts/misc/spellbook.lua
Normal file
32
app/SabrehavenServer/data/actions/scripts/misc/spellbook.lua
Normal file
@@ -0,0 +1,32 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
|
||||
local count = getPlayerInstantSpellCount(player)
|
||||
local text = ""
|
||||
local spells = {}
|
||||
for i = 0, count - 1 do
|
||||
local spell = getPlayerInstantSpellInfo(player, i)
|
||||
if spell.level ~= 0 then
|
||||
if spell.manapercent > 0 then
|
||||
spell.mana = spell.manapercent .. "%"
|
||||
end
|
||||
spells[#spells + 1] = spell
|
||||
end
|
||||
end
|
||||
|
||||
table.sort(spells, function(a, b) return a.level < b.level end)
|
||||
|
||||
local prevLevel = -1
|
||||
for i, spell in ipairs(spells) do
|
||||
local line = ""
|
||||
if prevLevel ~= spell.level then
|
||||
if i ~= 1 then
|
||||
line = "\n"
|
||||
end
|
||||
line = line .. "Spells for Level " .. spell.level .. "\n"
|
||||
prevLevel = spell.level
|
||||
end
|
||||
text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n"
|
||||
end
|
||||
|
||||
player:showTextDialog(item:getId(), text)
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,15 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2566 then
|
||||
item:transform(2567, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2567 then
|
||||
player:sendCancelMessage("It doesn't move.")
|
||||
elseif item:getId() == 2569 then
|
||||
item:transform(2570, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2570 then
|
||||
item:transform(2569, 1)
|
||||
item:decay()
|
||||
end
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,16 @@
|
||||
local downstairs = {
|
||||
435
|
||||
}
|
||||
|
||||
local upstairs = {
|
||||
1948, 1968, 5542
|
||||
}
|
||||
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if table.contains(downstairs, item:getId()) then
|
||||
player:teleportTo(item:getPosition():moveRel(0, 0, 1))
|
||||
elseif table.contains(upstairs, item:getId()) then
|
||||
player:teleportTo(item:getPosition():moveRel(0, 1, -1))
|
||||
end
|
||||
return true
|
||||
end
|
||||
4
app/SabrehavenServer/data/actions/scripts/misc/time.lua
Normal file
4
app/SabrehavenServer/data/actions/scripts/misc/time.lua
Normal file
@@ -0,0 +1,4 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
player:sendTextMessage(MESSAGE_INFO_DESCR, "The time is " .. getFormattedWorldTime() .. ".")
|
||||
return true
|
||||
end
|
||||
13
app/SabrehavenServer/data/actions/scripts/misc/used_lamp.lua
Normal file
13
app/SabrehavenServer/data/actions/scripts/misc/used_lamp.lua
Normal file
@@ -0,0 +1,13 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if not target:isItem() then
|
||||
return false
|
||||
end
|
||||
|
||||
if target:getId() == 2874 and target:getFluidType() == FLUID_OIL then
|
||||
target:transform(target:getId(), FLUID_NONE)
|
||||
item:transform(2914, 1)
|
||||
item:decay()
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if math.random(1, 100) <= 90 then
|
||||
item:getPosition():sendMagicEffect(3)
|
||||
return true
|
||||
else
|
||||
player:getPosition():sendMagicEffect(3)
|
||||
end
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
return doDestroyItem(target)
|
||||
end
|
||||
26
app/SabrehavenServer/data/actions/scripts/nostalrius/1.lua
Normal file
26
app/SabrehavenServer/data/actions/scripts/nostalrius/1.lua
Normal file
@@ -0,0 +1,26 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 32627, y = 31699, z = 10}, 1771) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
doRelocate({x = 32627, y = 31699, z = 10},{x = 32626, y = 31699, z = 10})
|
||||
doRelocate({x = 32628, y = 31699, z = 10},{x = 32626, y = 31699, z = 10})
|
||||
doRelocate({x = 32629, y = 31699, z = 10},{x = 32626, y = 31699, z = 10})
|
||||
Game.transformItemOnMap({x = 32627, y = 31699, z = 10}, 1771, 622)
|
||||
Game.createItem(4788, 1, {x = 32627, y = 31699, z = 10})
|
||||
Game.transformItemOnMap({x = 32628, y = 31699, z = 10}, 1771, 622)
|
||||
Game.transformItemOnMap({x = 32629, y = 31699, z = 10}, 1771, 622)
|
||||
Game.createItem(4786, 1, {x = 32629, y = 31699, z = 10})
|
||||
elseif item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 and Game.isItemThere({x = 32628, y = 31699, z = 10}, 622) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32627, y = 31699, z = 10}, 622, 1771)
|
||||
Game.transformItemOnMap({x = 32628, y = 31699, z = 10}, 622, 1771)
|
||||
Game.transformItemOnMap({x = 32629, y = 31699, z = 10}, 622, 1771)
|
||||
Game.removeItemOnMap({x = 32627, y = 31699, z = 10}, 4788)
|
||||
Game.removeItemOnMap({x = 32629, y = 31699, z = 10}, 4786)
|
||||
end
|
||||
return true
|
||||
end
|
||||
19
app/SabrehavenServer/data/actions/scripts/nostalrius/10.lua
Normal file
19
app/SabrehavenServer/data/actions/scripts/nostalrius/10.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 32792, y = 31581, z = 07},1282) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.removeItemOnMap({x = 32792, y = 31581, z = 07}, 1282)
|
||||
elseif item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 and Game.isItemThere({x = 32792, y = 31581, z = 07}, 1282) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
doRelocate({x = 32792, y = 31581, z = 07},{x = 32792, y = 31582, z = 07})
|
||||
Game.createItem(1282, 1, {x = 32792, y = 31581, z = 07})
|
||||
end
|
||||
return true
|
||||
end
|
||||
32
app/SabrehavenServer/data/actions/scripts/nostalrius/11.lua
Normal file
32
app/SabrehavenServer/data/actions/scripts/nostalrius/11.lua
Normal file
@@ -0,0 +1,32 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2773 and Game.isItemThere({x = 32685, y = 32084, z = 09}, 1771) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
doRelocate({x = 32687, y = 32084, z = 09},{x = 32683, y = 32084, z = 09})
|
||||
doRelocate({x = 32686, y = 32084, z = 09},{x = 32683, y = 32084, z = 09})
|
||||
doRelocate({x = 32685, y = 32084, z = 09},{x = 32683, y = 32084, z = 09})
|
||||
doRelocate({x = 32684, y = 32084, z = 09},{x = 32683, y = 32084, z = 09})
|
||||
Game.transformItemOnMap({x = 32687, y = 32084, z = 09}, 1771, 727)
|
||||
Game.createItem(4798, 1, {x = 32687, y = 32084, z = 09})
|
||||
Game.transformItemOnMap({x = 32686, y = 32084, z = 09}, 1771, 727)
|
||||
Game.transformItemOnMap({x = 32685, y = 32084, z = 09}, 1771, 727)
|
||||
Game.transformItemOnMap({x = 32684, y = 32084, z = 09}, 1771, 727)
|
||||
Game.createItem(4800, 1, {x = 32684, y = 32084, z = 09})
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2772 and Game.isItemThere({x = 32685, y = 32084, z = 09},727) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.removeItemOnMap({x = 32684, y = 32084, z = 09}, 4800)
|
||||
Game.transformItemOnMap({x = 32684, y = 32084, z = 09}, 727, 1771)
|
||||
Game.transformItemOnMap({x = 32685, y = 32084, z = 09}, 727, 1771)
|
||||
Game.removeItemOnMap({x = 32687, y = 32084, z = 09}, 4798)
|
||||
Game.transformItemOnMap({x = 32687, y = 32084, z = 09}, 727, 1771)
|
||||
Game.transformItemOnMap({x = 32686, y = 32084, z = 09}, 727, 1771)
|
||||
elseif item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
end
|
||||
return true
|
||||
end
|
||||
26
app/SabrehavenServer/data/actions/scripts/nostalrius/12.lua
Normal file
26
app/SabrehavenServer/data/actions/scripts/nostalrius/12.lua
Normal file
@@ -0,0 +1,26 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 32673, y = 32085, z = 08},430) and Game.isItemThere ({x = 32669, y = 32089, z = 08},430) and Game.isItemThere ({x = 32673, y = 32093, z = 08},430) and Game.isItemThere ({x = 32677, y = 32089, z = 08},430) and Game.isItemThere ({x = 32673, y = 32083, z = 08},3349) and Game.isItemThere ({x = 32667, y = 32089, z = 08},3585) and Game.isItemThere ({x = 32673, y = 32094, z = 08},3264) and Game.isItemThere ({x = 32679, y = 32089, z = 08},3059) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.removeItemOnMap({x = 32673, y = 32083, z = 08}, 3349)
|
||||
Game.removeItemOnMap({x = 32667, y = 32089, z = 08}, 3585)
|
||||
Game.removeItemOnMap({x = 32673, y = 32094, z = 08}, 3264)
|
||||
Game.removeItemOnMap({x = 32679, y = 32089, z = 08}, 3059)
|
||||
Game.sendMagicEffect({x = 32673, y = 32083, z = 08}, 11)
|
||||
Game.sendMagicEffect({x = 32667, y = 32089, z = 08}, 11)
|
||||
Game.sendMagicEffect({x = 32673, y = 32094, z = 08}, 11)
|
||||
Game.sendMagicEffect({x = 32679, y = 32089, z = 08}, 11)
|
||||
doRelocate({x = 32673, y = 32093, z = 08},{x = 32671, y = 32069, z = 08})
|
||||
doRelocate({x = 32669, y = 32089, z = 08},{x = 32672, y = 32069, z = 08})
|
||||
doRelocate({x = 32673, y = 32085, z = 08},{x = 32671, y = 32070, z = 08})
|
||||
doRelocate({x = 32677, y = 32089, z = 08},{x = 32672, y = 32070, z = 08})
|
||||
Game.sendMagicEffect({x = 32671, y = 32069, z = 08}, 11)
|
||||
Game.sendMagicEffect({x = 32672, y = 32069, z = 08}, 11)
|
||||
Game.sendMagicEffect({x = 32671, y = 32070, z = 08}, 11)
|
||||
Game.sendMagicEffect({x = 32672, y = 32070, z = 08}, 11)
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
end
|
||||
return true
|
||||
end
|
||||
17
app/SabrehavenServer/data/actions/scripts/nostalrius/13.lua
Normal file
17
app/SabrehavenServer/data/actions/scripts/nostalrius/13.lua
Normal file
@@ -0,0 +1,17 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 32568, y = 32078, z = 12},2185) and Game.isItemThere ({x = 32569, y = 32078, z = 12},2185) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.removeItemOnMap({x = 32568, y = 32078, z = 12}, 2185)
|
||||
Game.removeItemOnMap({x = 32569, y = 32078, z = 12}, 2185)
|
||||
elseif item:getId() == 2773 and Game.isItemThere({x = 32568, y = 32078, z = 12},2185) and Game.isItemThere ({x = 32569, y = 32078, z = 12}, 2185) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
Game.createItem(2185, 1, {x = 32568, y = 32078, z = 12})
|
||||
Game.createItem(2185, 1, {x = 32569, y = 32078, z = 12})
|
||||
end
|
||||
return true
|
||||
end
|
||||
16
app/SabrehavenServer/data/actions/scripts/nostalrius/14.lua
Normal file
16
app/SabrehavenServer/data/actions/scripts/nostalrius/14.lua
Normal file
@@ -0,0 +1,16 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.removeItemOnMap({x = 33314, y = 31592, z = 15}, 1842)
|
||||
doRelocate({x = 33316, y = 31591, z = 15},{x = 33317, y = 31591, z = 15})
|
||||
Game.createItem(1949, 1, {x = 33316, y = 31591, z = 15})
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
doRelocate({x = 33314, y = 31592, z = 15},{x = 33315, y = 31592, z = 15})
|
||||
Game.createItem(1842, 1, {x = 33314, y = 31592, z = 15})
|
||||
Game.removeItemOnMap({x = 33316, y = 31591, z = 15}, 1949)
|
||||
end
|
||||
return true
|
||||
end
|
||||
31
app/SabrehavenServer/data/actions/scripts/nostalrius/15.lua
Normal file
31
app/SabrehavenServer/data/actions/scripts/nostalrius/15.lua
Normal file
@@ -0,0 +1,31 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 33295, y = 31677, z = 15},1791) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.removeItemOnMap({x = 33295, y = 31677, z = 15}, 1791)
|
||||
Game.removeItemOnMap({x = 33296, y = 31677, z = 15}, 1791)
|
||||
Game.removeItemOnMap({x = 33297, y = 31677, z = 15}, 1791)
|
||||
Game.removeItemOnMap({x = 33298, y = 31677, z = 15}, 1791)
|
||||
Game.removeItemOnMap({x = 33299, y = 31677, z = 15}, 1791)
|
||||
elseif item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 and Game.isItemThere({x = 33295, y = 31677, z = 15}, 1791) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
doRelocate({x = 33295, y = 31677, z = 15},{x = 33295, y = 31678, z = 15})
|
||||
doRelocate({x = 33296, y = 31677, z = 15},{x = 33296, y = 31678, z = 15})
|
||||
doRelocate({x = 33297, y = 31677, z = 15},{x = 33297, y = 31678, z = 15})
|
||||
doRelocate({x = 33298, y = 31677, z = 15},{x = 33298, y = 31678, z = 15})
|
||||
doRelocate({x = 33299, y = 31677, z = 15},{x = 33299, y = 31678, z = 15})
|
||||
Game.createItem(1791, 1, {x = 33295, y = 31677, z = 15})
|
||||
Game.createItem(1791, 1, {x = 33296, y = 31677, z = 15})
|
||||
Game.createItem(1791, 1, {x = 33297, y = 31677, z = 15})
|
||||
Game.createItem(1791, 1, {x = 33298, y = 31677, z = 15})
|
||||
Game.createItem(1791, 1, {x = 33299, y = 31677, z = 15})
|
||||
end
|
||||
return true
|
||||
end
|
||||
13
app/SabrehavenServer/data/actions/scripts/nostalrius/16.lua
Normal file
13
app/SabrehavenServer/data/actions/scripts/nostalrius/16.lua
Normal file
@@ -0,0 +1,13 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.removeItemOnMap({x = 33171, y = 31897, z = 08}, 1772)
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
doRelocate({x = 33171, y = 31897, z = 08},{x = 33171, y = 31898, z = 08})
|
||||
Game.createItem(1772, 1, {x = 33171, y = 31897, z = 08})
|
||||
end
|
||||
return true
|
||||
end
|
||||
31
app/SabrehavenServer/data/actions/scripts/nostalrius/17.lua
Normal file
31
app/SabrehavenServer/data/actions/scripts/nostalrius/17.lua
Normal file
@@ -0,0 +1,31 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2773 and Game.isItemThere({x = 33222, y = 31671, z = 13},430) and Game.isItemThere ({x = 33223, y = 31671, z = 13},430) and Game.isItemThere ({x = 33224, y = 31671, z = 13},430) and Game.isItemThere ({x = 33225, y = 31671, z = 13},430) and Game.isItemThere ({x = 33220, y = 31659, z = 13},1772) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
Game.removeItemOnMap({x = 33220, y = 31659, z = 13}, 1772)
|
||||
Game.removeItemOnMap({x = 33221, y = 31659, z = 13}, 1772)
|
||||
Game.removeItemOnMap({x = 33222, y = 31659, z = 13}, 1772)
|
||||
Game.removeItemOnMap({x = 33223, y = 31659, z = 13}, 1772)
|
||||
Game.removeItemOnMap({x = 33224, y = 31659, z = 13}, 1772)
|
||||
Game.removeItemOnMap({x = 33219, y = 31659, z = 13}, 1772)
|
||||
Game.removeItemOnMap({x = 33219, y = 31657, z = 13}, 1772)
|
||||
Game.removeItemOnMap({x = 33221, y = 31657, z = 13}, 1772)
|
||||
Game.removeItemOnMap({x = 33220, y = 31661, z = 13}, 1772)
|
||||
Game.removeItemOnMap({x = 33222, y = 31661, z = 13}, 1772)
|
||||
Game.createMonster("Demon", {x = 33224, y = 31659, z = 13})
|
||||
Game.createMonster("Demon", {x = 33223, y = 31659, z = 13})
|
||||
Game.createMonster("Demon", {x = 33219, y = 31657, z = 13})
|
||||
Game.createMonster("Demon", {x = 33221, y = 31657, z = 13})
|
||||
Game.createMonster("Demon", {x = 33220, y = 31661, z = 13})
|
||||
Game.createMonster("Demon", {x = 33222, y = 31661, z = 13})
|
||||
doRelocate({x = 33222, y = 31671, z = 13},{x = 33219, y = 31659, z = 13})
|
||||
doRelocate({x = 33223, y = 31671, z = 13},{x = 33220, y = 31659, z = 13})
|
||||
doRelocate({x = 33224, y = 31671, z = 13},{x = 33221, y = 31659, z = 13})
|
||||
doRelocate({x = 33225, y = 31671, z = 13},{x = 33222, y = 31659, z = 13})
|
||||
Game.sendMagicEffect({x = 33219, y = 31659, z = 13}, 11)
|
||||
Game.sendMagicEffect({x = 33220, y = 31659, z = 13}, 11)
|
||||
Game.sendMagicEffect({x = 33221, y = 31659, z = 13}, 11)
|
||||
Game.sendMagicEffect({x = 33222, y = 31659, z = 13}, 11)
|
||||
end
|
||||
return true
|
||||
end
|
||||
14
app/SabrehavenServer/data/actions/scripts/nostalrius/18.lua
Normal file
14
app/SabrehavenServer/data/actions/scripts/nostalrius/18.lua
Normal file
@@ -0,0 +1,14 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 32483, y = 31633, z = 09}, 385) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32483, y = 31633, z = 09}, 355, 385)
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
end
|
||||
return true
|
||||
end
|
||||
20
app/SabrehavenServer/data/actions/scripts/nostalrius/19.lua
Normal file
20
app/SabrehavenServer/data/actions/scripts/nostalrius/19.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 then
|
||||
item:remove()
|
||||
Game.createItem(2126, 1, {x = 32487, y = 31628, z = 13})
|
||||
Game.createItem(2126, 1, {x = 32487, y = 31629, z = 13})
|
||||
Game.createItem(2126, 1, {x = 32488, y = 31629, z = 13})
|
||||
Game.createItem(2126, 1, {x = 32487, y = 31627, z = 13})
|
||||
Game.createItem(2126, 1, {x = 32486, y = 31627, z = 13})
|
||||
Game.createItem(2126, 1, {x = 32486, y = 31628, z = 13})
|
||||
Game.createItem(2126, 1, {x = 32486, y = 31629, z = 13})
|
||||
Game.createItem(2126, 1, {x = 32486, y = 31630, z = 13})
|
||||
Game.createItem(2126, 1, {x = 32487, y = 31630, z = 13})
|
||||
Game.createItem(2126, 1, {x = 32488, y = 31630, z = 13})
|
||||
Game.createItem(2126, 1, {x = 32486, y = 31626, z = 13})
|
||||
Game.createItem(2126, 1, {x = 32487, y = 31626, z = 13})
|
||||
Game.createItem(2126, 1, {x = 32488, y = 31626, z = 13})
|
||||
Game.sendMagicEffect({x = 32488, y = 31628, z = 13}, 3)
|
||||
end
|
||||
return true
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if Game.isItemThere({x = 33211, y = 32698, z = 13}, 1306) then
|
||||
Game.removeItemOnMap({x = 33211, y = 32698, z = 13}, 1306)
|
||||
else
|
||||
doRelocate({x = 33211, y = 32698, z = 13}, {x = 33211, y = 32697, z = 13})
|
||||
Game.createItem(1306, 1, {x = 33211, y = 32698, z = 13})
|
||||
end
|
||||
return true
|
||||
end
|
||||
19
app/SabrehavenServer/data/actions/scripts/nostalrius/20.lua
Normal file
19
app/SabrehavenServer/data/actions/scripts/nostalrius/20.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 32259, y = 31891, z = 10},2129) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.removeItemOnMap({x = 32259, y = 31891, z = 10}, 2129)
|
||||
elseif item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 and Game.isItemThere({x = 32259, y = 31891, z = 10}, 2129) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
doRelocate({x = 32259, y = 31891, z = 10},{x = 32259, y = 31892, z = 10})
|
||||
Game.createItem(2129, 1, {x = 32259, y = 31891, z = 10})
|
||||
end
|
||||
return true
|
||||
end
|
||||
18
app/SabrehavenServer/data/actions/scripts/nostalrius/21.lua
Normal file
18
app/SabrehavenServer/data/actions/scripts/nostalrius/21.lua
Normal file
@@ -0,0 +1,18 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 32313, y = 31975, z = 13}, 1998) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32313, y = 31975, z = 13}, 1998, 1996)
|
||||
elseif item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 and Game.isItemThere({x = 32313, y = 31975, z = 13}, 1996) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32313, y = 31975, z = 13}, 1996, 1998)
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
end
|
||||
return true
|
||||
end
|
||||
18
app/SabrehavenServer/data/actions/scripts/nostalrius/22.lua
Normal file
18
app/SabrehavenServer/data/actions/scripts/nostalrius/22.lua
Normal file
@@ -0,0 +1,18 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 32313, y = 31976, z = 13}, 1998) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32313, y = 31976, z = 13}, 1998, 1996)
|
||||
elseif item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 and Game.isItemThere({x = 32313, y = 31976, z = 13}, 1996) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32313, y = 31976, z = 13}, 1996, 1998)
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
end
|
||||
return true
|
||||
end
|
||||
18
app/SabrehavenServer/data/actions/scripts/nostalrius/23.lua
Normal file
18
app/SabrehavenServer/data/actions/scripts/nostalrius/23.lua
Normal file
@@ -0,0 +1,18 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 32311, y = 31976, z = 13}, 1998) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32311, y = 31976, z = 13}, 1998, 1996)
|
||||
elseif item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 and Game.isItemThere({x = 32311, y = 31976, z = 13}, 1996) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32311, y = 31976, z = 13}, 1996, 1998)
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
end
|
||||
return true
|
||||
end
|
||||
18
app/SabrehavenServer/data/actions/scripts/nostalrius/24.lua
Normal file
18
app/SabrehavenServer/data/actions/scripts/nostalrius/24.lua
Normal file
@@ -0,0 +1,18 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 32311, y = 31975, z = 13}, 1998) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32311, y = 31975, z = 13}, 1998, 1996)
|
||||
elseif item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 and Game.isItemThere({x = 32311, y = 31975, z = 13}, 1996) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32311, y = 31975, z = 13}, 1996, 1998)
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
end
|
||||
return true
|
||||
end
|
||||
18
app/SabrehavenServer/data/actions/scripts/nostalrius/25.lua
Normal file
18
app/SabrehavenServer/data/actions/scripts/nostalrius/25.lua
Normal file
@@ -0,0 +1,18 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 32309, y = 31976, z = 13}, 1998) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32309, y = 31976, z = 13}, 1998, 1996)
|
||||
elseif item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 and Game.isItemThere({x = 32309, y = 31976, z = 13}, 1996) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32309, y = 31976, z = 13}, 1996, 1998)
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
end
|
||||
return true
|
||||
end
|
||||
18
app/SabrehavenServer/data/actions/scripts/nostalrius/26.lua
Normal file
18
app/SabrehavenServer/data/actions/scripts/nostalrius/26.lua
Normal file
@@ -0,0 +1,18 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 32309, y = 31975, z = 13}, 1998) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32309, y = 31975, z = 13}, 1998, 1996)
|
||||
elseif item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 and Game.isItemThere({x = 32309, y = 31975, z = 13}, 1996) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32309, y = 31975, z = 13}, 1996, 1998)
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
end
|
||||
return true
|
||||
end
|
||||
20
app/SabrehavenServer/data/actions/scripts/nostalrius/27.lua
Normal file
20
app/SabrehavenServer/data/actions/scripts/nostalrius/27.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 32266, y = 31860, z = 11},2129) then
|
||||
Game.removeItemOnMap({x = 32266, y = 31860, z = 11}, 2129)
|
||||
Game.transformItemOnMap({x = 32266, y = 31860, z = 11}, 410, 411)
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 and Game.isItemThere({x = 32266, y = 31860, z = 11}, 2129) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
Game.transformItemOnMap({x = 32266, y = 31860, z = 11}, 411, 410)
|
||||
Game.createItem(2129, 1, {x = 32266, y = 31860, z = 11})
|
||||
end
|
||||
return true
|
||||
end
|
||||
19
app/SabrehavenServer/data/actions/scripts/nostalrius/28.lua
Normal file
19
app/SabrehavenServer/data/actions/scripts/nostalrius/28.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2772 and Game.isItemThere({x = 32259, y = 31890, z = 10},2129) then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
Game.removeItemOnMap({x = 32259, y = 31890, z = 10}, 2129)
|
||||
elseif item:getId() == 2772 then
|
||||
item:transform(2773, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 and Game.isItemThere({x = 32259, y = 31890, z = 10}, 2129) then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
elseif item:getId() == 2773 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
doRelocate({x = 32259, y = 31890, z = 10},{x = 32259, y = 31889, z = 10})
|
||||
Game.createItem(2129, 1, {x = 32259, y = 31890, z = 10})
|
||||
end
|
||||
return true
|
||||
end
|
||||
17
app/SabrehavenServer/data/actions/scripts/nostalrius/29.lua
Normal file
17
app/SabrehavenServer/data/actions/scripts/nostalrius/29.lua
Normal file
@@ -0,0 +1,17 @@
|
||||
function onUse(player, item, fromPosition, target, toPosition)
|
||||
if item:getId() == 2773 and Game.isItemThere({x = 32220, y = 31845, z = 15}, 2772) and player:getStorageValue(7) ~= 1 then
|
||||
item:transform(2772, 1)
|
||||
item:decay()
|
||||
item:getPosition():sendMagicEffect(13)
|
||||
Game.sendMagicEffect({x = 32217, y = 31842, z = 14}, 12)
|
||||
Game.sendMagicEffect({x = 32217, y = 31844, z = 14}, 12)
|
||||
Game.sendMagicEffect({x = 32217, y = 31845, z = 14}, 12)
|
||||
Game.sendMagicEffect({x = 32218, y = 31844, z = 14}, 12)
|
||||
Game.sendMagicEffect({x = 32219, y = 31843, z = 14}, 12)
|
||||
Game.sendMagicEffect({x = 32219, y = 31845, z = 14}, 12)
|
||||
elseif item:getId() == 2773 then
|
||||
item:getPosition():sendMagicEffect(12)
|
||||
doTargetCombatHealth(0, player, COMBAT_FIREDAMAGE, -170, -170)
|
||||
end
|
||||
return true
|
||||
end
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user