From e415a533a4d110db8dd0bd129e02a43d8f3764f5 Mon Sep 17 00:00:00 2001 From: ErikasKontenis Date: Thu, 12 Dec 2019 15:47:57 +0200 Subject: [PATCH] finish shatted isles quest --- data/monster/781/lavahole.xml | 1 + data/monster/781/magic pillar.xml | 39 ++++++++++++++++++ data/monster/magicthrower.xml | 3 +- data/monster/monsters.xml | 1 + data/movements/movements.xml | 28 +++++++++++++ .../scripts/goroma/back_ferumbras_floor.lua | 21 ++++++++++ data/movements/scripts/goroma/back_kharos.lua | 16 +++++++ data/movements/scripts/goroma/back_malada.lua | 21 ++++++++++ data/movements/scripts/goroma/back_ramoa.lua | 21 ++++++++++ .../goroma/back_sacrifice_mushroom_talahu.lua | 11 +++++ data/movements/scripts/goroma/back_talahu.lua | 21 ++++++++++ .../scripts/goroma/energy_barrier.lua | 16 +++++++ .../scripts/goroma/energy_barrier_kharos.lua | 25 +++++++++++ .../scripts/goroma/entrance_kharos.lua | 11 +++++ .../scripts/goroma/final_ferumbras_floor.lua | 16 +++++++ .../goroma/sacrifice_mushroom_talahu.lua | 31 ++++++++++++++ .../scripts/goroma/second_ferumbras_floor.lua | 16 +++++++ data/movements/scripts/goroma/to_malada.lua | 22 ++++++++++ data/movements/scripts/goroma/to_ramoa.lua | 22 ++++++++++ data/movements/scripts/goroma/to_talahu.lua | 22 ++++++++++ data/npc/chondur.npc | 35 +++++++++++++++- data/npc/marina.npc | 2 + data/npc/zoltan.npc | 25 ++++++++++- data/world/map.otbm | Bin 79803786 -> 79804071 bytes data/world/spawns.xml | 18 ++++++++ 25 files changed, 440 insertions(+), 4 deletions(-) create mode 100644 data/monster/781/magic pillar.xml create mode 100644 data/movements/scripts/goroma/back_ferumbras_floor.lua create mode 100644 data/movements/scripts/goroma/back_kharos.lua create mode 100644 data/movements/scripts/goroma/back_malada.lua create mode 100644 data/movements/scripts/goroma/back_ramoa.lua create mode 100644 data/movements/scripts/goroma/back_sacrifice_mushroom_talahu.lua create mode 100644 data/movements/scripts/goroma/back_talahu.lua create mode 100644 data/movements/scripts/goroma/energy_barrier.lua create mode 100644 data/movements/scripts/goroma/energy_barrier_kharos.lua create mode 100644 data/movements/scripts/goroma/entrance_kharos.lua create mode 100644 data/movements/scripts/goroma/final_ferumbras_floor.lua create mode 100644 data/movements/scripts/goroma/sacrifice_mushroom_talahu.lua create mode 100644 data/movements/scripts/goroma/second_ferumbras_floor.lua create mode 100644 data/movements/scripts/goroma/to_malada.lua create mode 100644 data/movements/scripts/goroma/to_ramoa.lua create mode 100644 data/movements/scripts/goroma/to_talahu.lua diff --git a/data/monster/781/lavahole.xml b/data/monster/781/lavahole.xml index b806384..57ba857 100644 --- a/data/monster/781/lavahole.xml +++ b/data/monster/781/lavahole.xml @@ -14,6 +14,7 @@ + diff --git a/data/monster/781/magic pillar.xml b/data/monster/781/magic pillar.xml new file mode 100644 index 0000000..e3b7a56 --- /dev/null +++ b/data/monster/781/magic pillar.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/monster/magicthrower.xml b/data/monster/magicthrower.xml index c5e8b11..d4e5554 100644 --- a/data/monster/magicthrower.xml +++ b/data/monster/magicthrower.xml @@ -1,7 +1,7 @@ - + @@ -15,6 +15,7 @@ + diff --git a/data/monster/monsters.xml b/data/monster/monsters.xml index cb9aa3f..7debe5d 100644 --- a/data/monster/monsters.xml +++ b/data/monster/monsters.xml @@ -207,4 +207,5 @@ + \ No newline at end of file diff --git a/data/movements/movements.xml b/data/movements/movements.xml index 480069c..0092325 100644 --- a/data/movements/movements.xml +++ b/data/movements/movements.xml @@ -395,6 +395,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/movements/scripts/goroma/back_ferumbras_floor.lua b/data/movements/scripts/goroma/back_ferumbras_floor.lua new file mode 100644 index 0000000..5875468 --- /dev/null +++ b/data/movements/scripts/goroma/back_ferumbras_floor.lua @@ -0,0 +1,21 @@ +function onStepIn(creature, item, position, fromPosition) + local player = creature:getPlayer() + if not player then + return true + end + + doRelocate(item:getPosition(),{x = 32121, y = 32709, z = 7}) + Game.sendMagicEffect({x = 32121, y = 32709, z = 7}, 11) + + local isInGhostMode = player:isInGhostMode() + local spectators = Game.getSpectators(player:getPosition(), false, true, 3, 3) + for i = 1, #spectators do + player:say("This entrance has been sealed by the Edron Academy.", TALKTYPE_MONSTER_SAY, isInGhostMode, spectators[i], player:getPosition()) + end +end + +function onAddItem(item, tileitem, position) + doRelocate(item:getPosition(),{x = 32121, y = 32709, z = 7}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 32121, y = 32709, z = 7}, 11) +end diff --git a/data/movements/scripts/goroma/back_kharos.lua b/data/movements/scripts/goroma/back_kharos.lua new file mode 100644 index 0000000..81db255 --- /dev/null +++ b/data/movements/scripts/goroma/back_kharos.lua @@ -0,0 +1,16 @@ +function onStepIn(creature, item, position, fromPosition) + local player = creature:getPlayer() + if not player then + return true + end + + doRelocate(item:getPosition(),{x = 32101, y = 32545, z = 07}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 32101, y = 32545, z = 07}, 11) +end + +function onAddItem(item, tileitem, position) + doRelocate(item:getPosition(),{x = 32101, y = 32545, z = 07}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 32101, y = 32545, z = 07}, 11) +end diff --git a/data/movements/scripts/goroma/back_malada.lua b/data/movements/scripts/goroma/back_malada.lua new file mode 100644 index 0000000..119173b --- /dev/null +++ b/data/movements/scripts/goroma/back_malada.lua @@ -0,0 +1,21 @@ +function onStepIn(creature, item, position, fromPosition) + local player = creature:getPlayer() + if not player then + return true + end + + if player:getStorageValue(17512) ~= 1 then + player:setStorageValue(17512, 1) + return true + end + + doRelocate(item:getPosition(),{x = 31919, y = 32659, z = 08}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 31919, y = 32659, z = 08}, 11) +end + +function onAddItem(item, tileitem, position) + doRelocate(item:getPosition(),{x = 31919, y = 32659, z = 08}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 31919, y = 32659, z = 08}, 11) +end diff --git a/data/movements/scripts/goroma/back_ramoa.lua b/data/movements/scripts/goroma/back_ramoa.lua new file mode 100644 index 0000000..f23fe0c --- /dev/null +++ b/data/movements/scripts/goroma/back_ramoa.lua @@ -0,0 +1,21 @@ +function onStepIn(creature, item, position, fromPosition) + local player = creature:getPlayer() + if not player then + return true + end + + if player:getStorageValue(17510) ~= 1 then + player:setStorageValue(17510, 1) + return true + end + + doRelocate(item:getPosition(),{x = 32036, y = 32558, z = 08}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 32036, y = 32558, z = 08}, 11) +end + +function onAddItem(item, tileitem, position) + doRelocate(item:getPosition(),{x = 32036, y = 32558, z = 08}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 32036, y = 32558, z = 08}, 11) +end diff --git a/data/movements/scripts/goroma/back_sacrifice_mushroom_talahu.lua b/data/movements/scripts/goroma/back_sacrifice_mushroom_talahu.lua new file mode 100644 index 0000000..7606cd2 --- /dev/null +++ b/data/movements/scripts/goroma/back_sacrifice_mushroom_talahu.lua @@ -0,0 +1,11 @@ +function onStepIn(creature, item, position, fromPosition) + doRelocate(item:getPosition(),{x = 31919, y = 32594, z = 10}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 31919, y = 32594, z = 10}, 11) +end + +function onAddItem(item, tileitem, position) + doRelocate(item:getPosition(),{x = 31919, y = 32594, z = 10}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 31919, y = 32594, z = 10}, 11) +end diff --git a/data/movements/scripts/goroma/back_talahu.lua b/data/movements/scripts/goroma/back_talahu.lua new file mode 100644 index 0000000..29dc695 --- /dev/null +++ b/data/movements/scripts/goroma/back_talahu.lua @@ -0,0 +1,21 @@ +function onStepIn(creature, item, position, fromPosition) + local player = creature:getPlayer() + if not player then + return true + end + + if player:getStorageValue(17511) ~= 1 then + player:setStorageValue(17511, 1) + return true + end + + doRelocate(item:getPosition(),{x = 31948, y = 32554, z = 08}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 31948, y = 32554, z = 08}, 11) +end + +function onAddItem(item, tileitem, position) + doRelocate(item:getPosition(),{x = 31948, y = 32554, z = 08}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 31948, y = 32554, z = 08}, 11) +end diff --git a/data/movements/scripts/goroma/energy_barrier.lua b/data/movements/scripts/goroma/energy_barrier.lua new file mode 100644 index 0000000..6ddc959 --- /dev/null +++ b/data/movements/scripts/goroma/energy_barrier.lua @@ -0,0 +1,16 @@ +function onStepIn(creature, item, position, fromPosition) + local player = creature:getPlayer() + if not player then + return true + end + + if player:getStorageValue(17509) < 5 then + position:sendMagicEffect(CONST_ME_ENERGYHIT) + + position.x = position.x + 2 + player:teleportTo(position) + return true + end + + return true +end diff --git a/data/movements/scripts/goroma/energy_barrier_kharos.lua b/data/movements/scripts/goroma/energy_barrier_kharos.lua new file mode 100644 index 0000000..22623be --- /dev/null +++ b/data/movements/scripts/goroma/energy_barrier_kharos.lua @@ -0,0 +1,25 @@ +function onStepIn(creature, item, position, fromPosition) + local player = creature:getPlayer() + if not player then + return true + end + + if player:getStorageValue(17513) ~= 2 then + player:setStorageValue(17513, 1) + doRelocate(item:getPosition(),{x = 32121, y = 32709, z = 7}) + Game.sendMagicEffect({x = 32121, y = 32709, z = 7}, 11) + + local isInGhostMode = player:isInGhostMode() + local spectators = Game.getSpectators(player:getPosition(), false, true, 3, 3) + for i = 1, #spectators do + player:say("This entrance has been sealed by the Edron Academy.", TALKTYPE_MONSTER_SAY, isInGhostMode, spectators[i], player:getPosition()) + end + return true + end + + doRelocate(item:getPosition(),{x = 32121, y = 32703, z = 7}) + Game.sendMagicEffect({x = 32121, y = 32703, z = 7}, 11) + player:setStorageValue(17513, 1) + + return true +end diff --git a/data/movements/scripts/goroma/entrance_kharos.lua b/data/movements/scripts/goroma/entrance_kharos.lua new file mode 100644 index 0000000..35f8156 --- /dev/null +++ b/data/movements/scripts/goroma/entrance_kharos.lua @@ -0,0 +1,11 @@ +function onStepIn(creature, item, position, fromPosition) + local player = creature:getPlayer() + if not player then + return true + end + + position.y = position.y - 1 + player:teleportTo(position) + + return true +end diff --git a/data/movements/scripts/goroma/final_ferumbras_floor.lua b/data/movements/scripts/goroma/final_ferumbras_floor.lua new file mode 100644 index 0000000..3d8f5db --- /dev/null +++ b/data/movements/scripts/goroma/final_ferumbras_floor.lua @@ -0,0 +1,16 @@ +function onStepIn(creature, item, position, fromPosition) + local player = creature:getPlayer() + if not player then + return true + end + + doRelocate(item:getPosition(),{x = 32121, y = 32693, z = 04}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 32121, y = 32693, z = 04}, 11) +end + +function onAddItem(item, tileitem, position) + doRelocate(item:getPosition(),{x = 32121, y = 32693, z = 04}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 32121, y = 32693, z = 04}, 11) +end diff --git a/data/movements/scripts/goroma/sacrifice_mushroom_talahu.lua b/data/movements/scripts/goroma/sacrifice_mushroom_talahu.lua new file mode 100644 index 0000000..9f94e4f --- /dev/null +++ b/data/movements/scripts/goroma/sacrifice_mushroom_talahu.lua @@ -0,0 +1,31 @@ +function onStepIn(creature, item, position, fromPosition) + local player = creature:getPlayer() + if not player then + return true + end + + if Game.isItemThere({x = 31918, y = 32598, z = 10},3723) and Game.isItemThere({x = 31918, y = 32599, z = 10},3725) and Game.isItemThere({x = 31920, y = 32598, z = 10},3732) and Game.isItemThere({x = 31920, y = 32599, z = 10},3728) then + Game.sendMagicEffect({x = 31918, y = 32598, z = 10}, 15) + Game.removeItemOnMap({x = 31918, y = 32598, z = 10}, 3723) + Game.sendMagicEffect({x = 31918, y = 32599, z = 10}, 15) + Game.removeItemOnMap({x = 31918, y = 32599, z = 10}, 3725) + Game.sendMagicEffect({x = 31920, y = 32598, z = 10}, 15) + Game.removeItemOnMap({x = 31920, y = 32598, z = 10}, 3732) + Game.sendMagicEffect({x = 31920, y = 32599, z = 10}, 15) + Game.removeItemOnMap({x = 31920, y = 32599, z = 10}, 3728) + + doRelocate(item:getPosition(),{x = 31914, y = 32605, z = 10}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 31914, y = 32605, z = 10}, 11) + else + doRelocate(item:getPosition(),{x = 31919, y = 32597, z = 10}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 31919, y = 32597, z = 10}, 11) + end +end + +function onAddItem(item, tileitem, position) + doRelocate(item:getPosition(),{x = 31915, y = 32606, z = 10}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 31915, y = 32606, z = 10}, 11) +end diff --git a/data/movements/scripts/goroma/second_ferumbras_floor.lua b/data/movements/scripts/goroma/second_ferumbras_floor.lua new file mode 100644 index 0000000..e0085c3 --- /dev/null +++ b/data/movements/scripts/goroma/second_ferumbras_floor.lua @@ -0,0 +1,16 @@ +function onStepIn(creature, item, position, fromPosition) + local player = creature:getPlayer() + if not player then + return true + end + + doRelocate(item:getPosition(),{x = 32124, y = 32694, z = 05}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 32124, y = 32694, z = 05}, 11) +end + +function onAddItem(item, tileitem, position) + doRelocate(item:getPosition(),{x = 32124, y = 32694, z = 05}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 32124, y = 32694, z = 05}, 11) +end diff --git a/data/movements/scripts/goroma/to_malada.lua b/data/movements/scripts/goroma/to_malada.lua new file mode 100644 index 0000000..ea1ca4d --- /dev/null +++ b/data/movements/scripts/goroma/to_malada.lua @@ -0,0 +1,22 @@ +function onStepIn(creature, item, position, fromPosition) + local player = creature:getPlayer() + if not player then + return true + end + + if player:getStorageValue(17512) ~= 1 then + Game.sendMagicEffect({x = 31926, y = 32656, z = 08}, 11) + player:teleportTo({x = 31926, y = 32656, z = 08}) + return true + end + + doRelocate(item:getPosition(),{x = 32021, y = 32680, z = 08}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 32021, y = 32680, z = 08}, 11) +end + +function onAddItem(item, tileitem, position) + doRelocate(item:getPosition(),{x = 32021, y = 32680, z = 08}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 32021, y = 32680, z = 08}, 11) +end diff --git a/data/movements/scripts/goroma/to_ramoa.lua b/data/movements/scripts/goroma/to_ramoa.lua new file mode 100644 index 0000000..b11c46e --- /dev/null +++ b/data/movements/scripts/goroma/to_ramoa.lua @@ -0,0 +1,22 @@ +function onStepIn(creature, item, position, fromPosition) + local player = creature:getPlayer() + if not player then + return true + end + + if player:getStorageValue(17510) ~= 1 then + Game.sendMagicEffect({x = 32043, y = 32559, z = 08}, 11) + player:teleportTo({x = 32043, y = 32559, z = 08}) + return true + end + + doRelocate(item:getPosition(),{x = 31948, y = 32554, z = 08}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 31948, y = 32554, z = 08}, 11) +end + +function onAddItem(item, tileitem, position) + doRelocate(item:getPosition(),{x = 31948, y = 32554, z = 08}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 31948, y = 32554, z = 08}, 11) +end diff --git a/data/movements/scripts/goroma/to_talahu.lua b/data/movements/scripts/goroma/to_talahu.lua new file mode 100644 index 0000000..8c1a25f --- /dev/null +++ b/data/movements/scripts/goroma/to_talahu.lua @@ -0,0 +1,22 @@ +function onStepIn(creature, item, position, fromPosition) + local player = creature:getPlayer() + if not player then + return true + end + + if player:getStorageValue(17511) ~= 1 then + Game.sendMagicEffect({x = 31951, y = 32555, z = 08}, 11) + player:teleportTo({x = 31951, y = 32555, z = 08}) + return true + end + + doRelocate(item:getPosition(),{x = 31919, y = 32659, z = 08}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 31919, y = 32659, z = 08}, 11) +end + +function onAddItem(item, tileitem, position) + doRelocate(item:getPosition(),{x = 31919, y = 32659, z = 08}) + item:getPosition():sendMagicEffect(11) + Game.sendMagicEffect({x = 31919, y = 32659, z = 08}, 11) +end diff --git a/data/npc/chondur.npc b/data/npc/chondur.npc index f506018..1f356f2 100644 --- a/data/npc/chondur.npc +++ b/data/npc/chondur.npc @@ -47,6 +47,37 @@ VANISH,! -> "Good bye." "banana" -> "A banana staff is the sign of a high ape magician." "pirates" -> "You have to understand that there are two groups of people that are called pirates. One consists of evil thieves and murderers for whom the word pirate actually stands for. ...", "The others are resistance fighters for whom old ideals are hold true and that are the assertors of the native people." - -# everything starts from taking the book of dragha no need meriana shit + +"spellbook",QuestValue(17509)=0,Count(6120)>=1 -> "Ah, thank you very much! I will honour his memory.", Amount=1, Delete(6120), SetQuestValue(17509,1) +"counterspell",QuestValue(17509)=0 -> "You should not talk about things you don't know anything about." +"energy","field",QuestValue(17509)=0 -> * +"spellbook",QuestValue(17509)=0 -> * +"energy","field",QuestValue(17509)>0 -> "Ah, the energy barrier set up by the cult is maintained by lousy magic, but is still effective. Without a proper counterspell you won't be able to pass it." + +"counterspell",QuestValue(17509)=1 -> "You mean, you are interested in a counterspell to cross the energy barrier on Goroma?", Topic=1 +Topic=1,"yes" -> "This is really not advisable. Behind this barrier, strong forces are raging violently. Are you sure that you want to go there?", Topic=2 +Topic=1 -> "It's much safer for you to stay here anyway, trust me." +Topic=2,"yes" -> "I guess I cannot stop you then. Since you told me about my apprentice, it is my turn to help you. I will perform a ritual for you, but I need a few ingredients. ...", + "Bring me one fresh dead chicken, one fresh dead rat and one fresh dead black sheep, in that order. Summoned ones will do as well as natural ones.", SetQuestValue(17509,2) +Topic=2 -> "It's much safer for you to stay here anyway, trust me." + +"counterspell",QuestValue(17509)=2 -> Type=4330, Amount=1, "Did you bring the fresh dead chicken?", Topic=3 +"chicken",QuestValue(17509)=2 -> * +Topic=3,"yes",Count(Type)>=Amount -> "Very good! 'Your soul shall be protected!' Now, I need a fresh dead rat.", Delete(Type), SetQuestValue(17509,3) +Topic=3,"yes" -> "You don't have any dead chicken with you don't you?" +Topic=3 -> "Maybe another time." + +"counterspell",QuestValue(17509)=3 -> Type=3994, Amount=1, "Did you bring the fresh dead rat?", Topic=4 +"rat",QuestValue(17509)=3 -> * +Topic=4,"yes",Count(Type)>=Amount -> "Very good! 'You shall face black magic without fear!' Now, I need a fresh dead black sheep.", Delete(Type), SetQuestValue(17509,4) +Topic=4,"yes" -> "You don't have any dead rat with you don't you?" +Topic=4 -> "Maybe another time." + +"counterspell",QuestValue(17509)=4 -> Type=4095, Amount=1, "Did you bring the fresh dead black sheep?", Topic=5 +"sheep",QuestValue(17509)=4 -> * +Topic=5,"yes",Count(Type)>=Amount -> "Very good! 'EVIL POWERS SHALL NOT KEEP YOU ANYMORE! SO BE IT!'", Delete(Type), SetQuestValue(17509,5) +Topic=5,"yes" -> "You don't have any dead black sheep with you don't you?" +Topic=5 -> "Maybe another time." + +"counterspell",QuestValue(17509)>4 -> "Hm. I don't think you need another one of my counterspells to cross the barrier on Goroma." } diff --git a/data/npc/marina.npc b/data/npc/marina.npc index cefbe7d..6f707f7 100644 --- a/data/npc/marina.npc +++ b/data/npc/marina.npc @@ -19,9 +19,11 @@ VANISH,! -> "How rude." # The Mermaid Marina Quest "silk","yarn",QuestValue(17504)=0 -> "Um. You mean, you really want me to touch that gooey spider silk just because you need yarn? Well... do you think that I'm pretty?", Topic=1 Topic=1,"yes" -> "Well, everyone would say that in your position. Do you think that I'm really, absolutely the most stunning being that you have ever seen?", Topic=2 +Topic=1 -> "Get out of there!" Topic=2,"yes" -> " It's funny how easy it is to get humans to say what you want. Now, proving it will be even more fun! ...", "You want me to touch something gooey, so you have to touch something gooey for me too. ...", "I love honey and I haven't eaten it in a while, so bring me 50 honeycombs and worship my beauty a little more, then we will see.", SetQuestValue(17504,1) +Topic=2 -> "Get out of there!" "honeycomb",QuestValue(17504)=1 -> Type=5902, Amount=50, "Did you bring me the 50 honeycombs I requested and do you absolutely admire my beauty?", Topic=3 Topic=3,"yes",Count(Type)>=Amount -> "Oh goodie! Thank you! Okay... I guess since my fingers are sticky now anyway, I will help you. From now on, if you bring me 10 pieces of spider silk, I will create one spool of yarn.", Delete(Type), SetQuestValue(17504,2) diff --git a/data/npc/zoltan.npc b/data/npc/zoltan.npc index 7de24a2..0fa3345 100644 --- a/data/npc/zoltan.npc +++ b/data/npc/zoltan.npc @@ -22,7 +22,6 @@ VANISH,! -> "Use your knowledge wisely." "king" -> "King Tibianus III was the founder of our academy." "tibianus" -> * "army" -> "They rely too much on their brawn instead of their brain." -"ferumbras" -> "A fallen sorcerer, indeed. What a shame." "excalibug" -> "You will need no weapon if you manipulate the essence of magic." "thais" -> "Thais is a place of barbary." "tibia" -> "There is still much left to be explored in this world." @@ -59,4 +58,28 @@ Topic=1,"yes",Level Amount=SpellLevel(String), "Don't be i Topic=1,"yes",CountMoney "Want to learn one of the most powerful spells, and don't even know how much money you have?" Topic=1,"yes" -> "Congratulations. You now know one of the most powerful spells. Use it wisely.", DeleteMoney, EffectOpp(13), TeachSpell(String) Topic=1 -> "Lost your heart?" + +"ferumbras", QuestValue(17513)>0 -> "I see, you managed to reach Kharos, the harbinger isle, and discovered the gates to Ferumbras' citadel, and now you are here full of questions. Are you ready to listen?", Topic=3 +Topic=3,"yes" -> "So know that destroying the mortal shell of the being called Ferumbras was the best we were able to achieve with our combined efforts in the past. ...", + "He was destroyed not only once but several times. Eventually we were able to figure out the secret of his seeming immortality. ...", + "On one of the most remote islands of the Shattered Isles, he built a citadel with demonic aid right around a powerful magical nexus. ...", + "The only reason for the whole complex was to establish a point of return into our world. Whenever he is slain, his soul retreats to some demonic dimension to regain enough strength to re-enter the world. ...", + "We were not able to destroy his citadel, this unholy construct. To make matters worse, the nexus makes it easy for demons of all kind to pass into our world. ...", + "The best thing we could do was to seal the citadel and to install a device that will alarm us whenever Ferumbras tries to re-enter our world. ...", + "We grant heroes like you the permission to pass our seals and enter Ferumbras' citadel. ...", + "Just ask for the permission if you are ready to go there. Be warned that the citadel is no holiday place though. You will encounter large amounts of demons and traps that scare off most adventurers. ...", + "On the other hand, WHEN Ferumbras re-enters the world we need heroes like you to face him on his very own ground before he can escape. ...", + "His return is not very likely but it can happen each and every day. If you should manage to defeat him, bring a proof of his death here and you will be rewarded." +Topic=3 -> "Lost your heart?" +"ferumbras", QuestValue(17513)=0 -> "A fallen sorcerer, indeed. What a shame." + +"permission",QuestValue(17513)=0 -> "I see no reason to discuss this matter with you." +"permission",QuestValue(17513)=1 -> Price=500, "The attuning to our seals is a costly process and it will grant you access to the citadel ONLY ONCE. Each time you want to enter, you will need a new attuning. Are you willing to pay 500 gold pieces to become attuned to the seal of the citadel?", Topic=2 +Topic=2,"yes",CountMoney>=Price -> "SO BE IT!", DeleteMoney, SetQuestValue(17513,2), EffectOpp(15) +Topic=2,"yes" -> "Don't even know how much money you have?" +Topic=2 -> "Lost your heart?" + +"permission",QuestValue(17513)=2 -> "You already have the permission to enter the citadel." + + } diff --git a/data/world/map.otbm b/data/world/map.otbm index dc7d7caf63a13be727352bcd110122fa9558e722..bdb0d731ba229c46ea6f7d1029b0c083752f1a50 100644 GIT binary patch delta 9224 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 delta 8547 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 diff --git a/data/world/spawns.xml b/data/world/spawns.xml index 1eb2919..473ab58 100644 --- a/data/world/spawns.xml +++ b/data/world/spawns.xml @@ -852,6 +852,18 @@ + + + + + + + + + + + + @@ -863,6 +875,12 @@ + + + + + +