diff --git a/New Text Document.txt b/New Text Document.txt
index 3667316..ab76566 100644
--- a/New Text Document.txt
+++ b/New Text Document.txt
@@ -1 +1 @@
-next: 17538
\ No newline at end of file
+next: 17541
\ No newline at end of file
diff --git a/data/actions/actions.xml b/data/actions/actions.xml
index 3e360fa..a735460 100644
--- a/data/actions/actions.xml
+++ b/data/actions/actions.xml
@@ -85,9 +85,14 @@
+
+
+
+
+
@@ -189,6 +194,7 @@
+
diff --git a/data/actions/scripts/liberty_bay/cult_hymn.lua b/data/actions/scripts/liberty_bay/cult_hymn.lua
new file mode 100644
index 0000000..0a87948
--- /dev/null
+++ b/data/actions/scripts/liberty_bay/cult_hymn.lua
@@ -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
\ No newline at end of file
diff --git a/data/actions/scripts/liberty_bay/cult_piano_teleport.lua b/data/actions/scripts/liberty_bay/cult_piano_teleport.lua
new file mode 100644
index 0000000..791a58a
--- /dev/null
+++ b/data/actions/scripts/liberty_bay/cult_piano_teleport.lua
@@ -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
\ No newline at end of file
diff --git a/data/movements/movements.xml b/data/movements/movements.xml
index 0092325..2df3eb6 100644
--- a/data/movements/movements.xml
+++ b/data/movements/movements.xml
@@ -423,6 +423,11 @@
+
+
+
+
+
diff --git a/data/movements/scripts/liberty_bay/back_cult_piano.lua b/data/movements/scripts/liberty_bay/back_cult_piano.lua
new file mode 100644
index 0000000..3fc72c2
--- /dev/null
+++ b/data/movements/scripts/liberty_bay/back_cult_piano.lua
@@ -0,0 +1,11 @@
+function onStepIn(creature, item, position, fromPosition)
+ doRelocate(item:getPosition(),{x = 32410, y = 32794, z = 9})
+ item:getPosition():sendMagicEffect(11)
+ Game.sendMagicEffect({x = 32410, y = 32794, z = 9}, 11)
+end
+
+function onAddItem(item, tileitem, position)
+ doRelocate(item:getPosition(),{x = 32410, y = 32794, z = 9})
+ item:getPosition():sendMagicEffect(11)
+ Game.sendMagicEffect({x = 32410, y = 32794, z = 9}, 11)
+end
diff --git a/data/npc/ajax.npc b/data/npc/ajax.npc
index 804e44b..151bfd2 100644
--- a/data/npc/ajax.npc
+++ b/data/npc/ajax.npc
@@ -50,31 +50,31 @@ Topic=7 -> "Maybe later."
"iron","ore",QuestValue(17532)=13 -> Type=5880, Amount=100, "You bring 100 iron ore?", Topic=8
Topic=8,"yes",Count(Type)>=Amount -> "Good! Now bring crude iron.", Delete(Type), SetQuestValue(17532,14)
-Topic=8,"yes" -> "You do not have that many."
-Topic=8 -> "Maybe another time."
+Topic=8,"yes" -> "You do not have that many."
+Topic=8 -> "Maybe another time."
"crude","iron",QuestValue(17532)=14 -> Type=5892, Amount=1, "You bring crude iron?", Topic=9
Topic=9,"yes",Count(Type)>=Amount -> "Good! Now bring 50 behemoth fangs.", Delete(Type), SetQuestValue(17532,14)
-Topic=9,"yes" -> "You do not have it."
-Topic=9 -> "Maybe another time."
+Topic=9,"yes" -> "You do not have it."
+Topic=9 -> "Maybe another time."
"behemoth","fang",QuestValue(17532)=14 -> Type=5893, Amount=50, "You bring 50 behemoth fangs?", Topic=10
Topic=10,"yes",Count(Type)>=Amount -> "Good! Now bring 50 lizard leather.", Delete(Type), SetQuestValue(17532,15)
-Topic=10,"yes" -> "You do not have that many."
-Topic=10 -> "Maybe another time."
+Topic=10,"yes" -> "You do not have that many."
+Topic=10 -> "Maybe another time."
"lizard","leather",QuestValue(17532)=15 -> Type=5876, Amount=50, "You bring 50 lizard leather?", Topic=11
Topic=11,"yes",Count(Type)>=Amount -> "Ah! All stuff there. I will start making axes now. Come later and ask me for axe.", Delete(Type), SetQuestValue(17532,16), SetExpiringQuestValue(17534, 7200000)
-Topic=11,"yes" -> "You do not have that many."
-Topic=11 -> "Maybe another time."
+Topic=11,"yes" -> "You do not have that many."
+Topic=11 -> "Maybe another time."
-"addon",ExpiringQuestValue(17534)>0 -> "Wait! I making axes now. Come later, okey?"
-"axe",ExpiringQuestValue(17534)>0 -> *
+"addon",ExpiringQuestValue(17534)>0 -> "Wait! I making axes now. Come later, okey?"
+"axe",ExpiringQuestValue(17534)>0 -> *
-"addon",ExpiringQuestValue(17534)<0,QuestValue(17532)=16 -> "Axe is done! For you. Take. Wear like me.", SetQuestValue(17532,17), AddOutfitAddon(147,1), AddOutfitAddon(143,1)
-"axe",ExpiringQuestValue(17534)<0,QuestValue(17532)=16 -> *
+"addon",ExpiringQuestValue(17534)<0,QuestValue(17532)=16 -> "Axe is done! For you. Take. Wear like me.", SetQuestValue(17532,17), AddOutfitAddon(147,1), AddOutfitAddon(143,1)
+"axe",ExpiringQuestValue(17534)<0,QuestValue(17532)=16 -> *
-"addon",QuestValue(17532)=17 -> "Nice axe. Nice axe."
-"axe",QuestValue(17532)=17 -> *
+"addon",QuestValue(17532)=17 -> "Nice axe. Nice axe."
+"axe",QuestValue(17532)=17 -> *
}
diff --git a/data/npc/elane.npc b/data/npc/elane.npc
index 92cf4df..059d7e3 100644
--- a/data/npc/elane.npc
+++ b/data/npc/elane.npc
@@ -47,7 +47,6 @@ VANISH,! -> "Bye."
"lugri" -> "A follower of evil that will get what he deserves one day."
"excalibug" -> "A weapon of myth. I don't believe that this weapon exists."
"news" -> "I am a paladin, not a storyteller."
-"Sniper gloves" -> "We are always looking for sniper gloves. They are supposed to raise accuracy. If you find a pair, bring them here. Maybe I can offer you a nice trade."
"member" -> "Every paladin profits from his vocation. It has many advantages to be a paladin."
"profit" -> "We will help you to improve your skills. Besides I offer spells for paladins."
@@ -113,4 +112,65 @@ Topic=3,"yes",Level Amount=SpellLevel(String), "You mus
Topic=3,"yes",CountMoney "Oh. You do not have enough money."
Topic=3,"yes" -> "Here you are. Look in your spellbook for the pronunciation of this spell.", DeleteMoney, EffectOpp(13), TeachSpell(String)
Topic=3 -> "Ok. Then not."
+
+"sniper","gloves",Count(5875)<=0 -> "We are always looking for sniper gloves. They are supposed to raise accuracy. If you find a pair, bring them here. Maybe I can offer you a nice trade."
+"sniper","gloves",QuestValue(17538)=0 -> Type=5875, Amount=1, "You found sniper gloves?! Incredible! Listen, if you give them to me, I will grant you the right to wear the sniper gloves accessory. How about it?", Topic=4
+Topic=4,"yes",Count(Type)>=Amount -> "Great! I hereby grant you the right to wear the sniper gloves as accessory. Congratulations!", Delete(Type), SetQuestValue(17538,1), AddOutfitAddon(137,1), AddOutfitAddon(129,1), EffectOpp(13)
+Topic=4,"yes" -> "You don't have it."
+Topic=4 -> "Maybe another time."
+
+"sniper","gloves",QuestValue(17538)=1 -> Type=5875, Amount=1, Price=2000, "You found sniper gloves?! Incredible! I would pay you 2000 gold pieces for them. How about it?", Topic=5
+Topic=5,"yes",Count(Type)>=Amount -> "Congratulations.", Delete(Type), CreateMoney
+Topic=5,"yes" -> "You don't have it."
+Topic=5 -> "Maybe another time."
+
+"outfit" -> "Oh, my winged tiara? Those are traditionally awarded after having completed a difficult task for our guild, only to female aspirants though. Male warriors will receive a hooded cloak."
+"addon" -> *
+
+"task",QuestValue(17539)=0,male -> "So you are saying that you would like to prove that you deserve to wear such a hooded cloak?", Topic=6
+"mission",QuestValue(17539)=0,male -> *
+"task",QuestValue(17539)=0,female -> "So you are saying that you would like to prove that you deserve to wear such a winged tiara?", Topic=6
+"mission",QuestValue(17539)=0,female -> *
+Topic=6,"yes" -> "Alright, I will give you a chance. Pay close attention to what I'm going to tell you now. ...",
+ "Recently, one of our members moved to Liberty Bay out of nowhere, talking about some strange cult. That is not the problem, but he took my favourite crossbow with him. ...",
+ "Please find my crossbow. It has my name engraved on it and is very special to me. ...",
+ "Secondly, we need a lot of leather for new quivers. 100 pieces of lizard leather and 100 pieces of red dragon leather should suffice. ...",
+ "Third, since we are giving out tiaras, we are always in need of enchanted chicken wings. Please bring me 5, that would help us tremendously. ...",
+ "Lastly, for our arrow heads we need a lot of steel. Best would be one piece of royal steel, one piece of draconian steel and one piece of hell steel. ...",
+ "Did you understand everything I told you and are willing to handle this task?", Topic=7
+Topic=6 -> "However."
+Topic=7,"yes" -> "That's the spirit! I hope you will find my crossbow, %N.", SetQuestValue(17539,1)
+Topic=7 -> "Maybe another time."
+
+"crossbow",QuestValue(17539)=1 -> Type=5947, Amount=1, "I'm so excited! Have you really found my crossbow?", Topic=8
+"mission",QuestValue(17539)=1 -> *
+"task",QuestValue(17539)=1 -> *
+Topic=8,"yes",Count(Type)>=Amount,male -> "Yeah! I could kiss you right here and there! Besides, you're a handsome one. Please bring me 100 pieces of lizard leather and 100 pieces of red dragon leather now!", Delete(Type), SetQuestValue(17539,2)
+Topic=8,"yes",Count(Type)>=Amount,female -> "Good work, %N! Please bring me 100 pieces of lizard leather and 100 pieces of red dragon leather now!", Delete(Type), SetQuestValue(17539,2)
+Topic=8,"yes" -> "You don't have it."
+Topic=8 -> "Maybe another time."
+
+"leather",QuestValue(17539)=2 -> "Did you bring me 100 pieces of lizard leather and 100 pieces of red dragon leather?", Topic=9
+"mission",QuestValue(17539)=2 -> *
+"task",QuestValue(17539)=2 -> *
+Topic=9,"yes",Count(5948)>=100,Count(5876)>=100 -> "Good work, %N! That is enough leather for a lot of sturdy quivers. Now, please bring me 5 enchanted chicken wings.", DeleteAmount(5948,100), DeleteAmount(5876,100), SetQuestValue(17539,3)
+Topic=9,"yes" -> "You don't have that many."
+Topic=9 -> "Maybe another time."
+
+"enchanted","chicken","wing",QuestValue(17539)=3 -> Type=5891, Amount=5, "Were you able to get hold of 5 enchanted chicken wings?", Topic=10
+"mission",QuestValue(17539)=3 -> *
+"task",QuestValue(17539)=3 -> *
+Topic=10,"yes",Count(Type)>=Amount -> "Great! Now we can create a few more Tiaras. If only they weren't that expensive... Well anyway, please obtain one piece of royal steel, draconian steel and hell steel each.", Delete(Type), SetQuestValue(17539,4)
+Topic=10,"yes" -> "You don't have that many."
+Topic=10 -> "Maybe another time."
+
+"steel",QuestValue(17539)=4 -> "Ah, have you brought one piece of royal steel, draconian steel and hell steel each?", Topic=11
+"mission",QuestValue(17539)=4 -> *
+"task",QuestValue(17539)=4 -> *
+Topic=11,"yes",Count(5888)>=1,Count(5889)>=1,Count(5887)>=1 -> "Wow, I'm impressed, %N. Your really are a valuable member of our paladin guild. I shall grant you your reward now. Wear it proudly!", DeleteAmount(5888,1), DeleteAmount(5889,1), DeleteAmount(5887,1), SetQuestValue(17539,5), AddOutfitAddon(137,2), AddOutfitAddon(129,2), EffectOpp(13)
+Topic=11,"yes" -> "You don't have that many."
+Topic=11 -> "Maybe another time."
+
+"mission",QuestValue(17539)=5 -> "Paladin guild has no more tasks for you our loyal %N."
+"task",QuestValue(17539)=5 -> *
}
diff --git a/data/world/map.otbm b/data/world/map.otbm
index 4f2d055..9b0744e 100644
Binary files a/data/world/map.otbm and b/data/world/map.otbm differ