Skip to content

Commit

Permalink
The Gravedigger of Drefia Quest - part 1
Browse files Browse the repository at this point in the history
  • Loading branch information
htc16 committed Sep 2, 2024
1 parent 3e579bc commit 9aba63f
Show file tree
Hide file tree
Showing 42 changed files with 719 additions and 386 deletions.
175 changes: 89 additions & 86 deletions data-otservbr-global/lib/core/storages.lua
Original file line number Diff line number Diff line change
Expand Up @@ -505,91 +505,6 @@ Storage = {
AmuletTimer = 50520,
AmuletStatus = 50521,
},
GravediggerOfDrefia = {
-- Reserved storage from 50760 - 50849
QuestStart = 50760,
Mission01 = 50761,
Mission02 = 50762,
Mission03 = 50763,
Mission04 = 50764,
Mission05 = 50765,
Mission06 = 50766,
Mission07 = 50767,
Mission08 = 50768,
Mission09 = 50769,
Mission10 = 50770,
Mission11 = 50771,
Mission12 = 50772,
Mission13 = 50773,
Mission14 = 50774,
Mission15 = 50775,
Mission16 = 50776,
Mission17 = 50777,
Mission18 = 50778,
Mission19 = 50779,
Mission20 = 50780,
Mission21 = 50781,
Mission22 = 50782,
Mission23 = 50783,
Mission24 = 50784,
Mission25 = 50785,
Mission26 = 50786,
Mission27 = 50787,
Mission28 = 50788,
Mission29 = 50789,
Mission30 = 50790,
Mission31 = 50791,
Mission32 = 50792,
Mission32a = 50793,
Mission32b = 50794,
Mission33 = 50795,
Mission34 = 50796,
Mission35 = 50797,
Mission36 = 50798,
Mission36a = 50799,
Mission37 = 50800,
Mission38 = 50801,
Mission38a = 50802,
Mission38b = 50803,
Mission38c = 50804,
Mission39 = 50805,
Mission40 = 50806,
Mission41 = 50807,
Mission42 = 50808,
Mission43 = 50809,
Mission44 = 50810,
Mission45 = 50811,
Mission46 = 50812,
Mission47 = 50813,
Mission48 = 50814,
Mission49 = 50815,
Mission50 = 50816,
Mission51 = 50817,
Mission52 = 50818,
Mission53 = 50819,
Mission54 = 50820,
Mission55 = 50821,
Mission56 = 50822,
Mission57 = 50823,
Mission58 = 50824,
Mission59 = 50825,
Mission60 = 50826,
Mission61 = 50827,
Mission62 = 50828,
Mission63 = 50829,
Mission64 = 50830,
Mission65 = 50831,
Mission66 = 50832,
Mission67 = 50833,
Mission68 = 50834,
Mission69 = 50835,
Mission70 = 50836,
Mission71 = 50837,
Mission72 = 50838,
Mission73 = 50839,
Mission74 = 50840,
Bookcase = 50841,
},
Oramond = {
-- Reserved storage from 50850 - 50879
QuestLine = 50850,
Expand Down Expand Up @@ -2392,7 +2307,95 @@ Storage = {
HuntingForTokens = {},
OpticordingSphere = {},
SmallSapphire = {},
TheGravediggerOfDrefia = {},
TheGravediggerOfDrefia = {
QuestStart = 44200,
Mission01 = 44201,
Mission02 = 44203,
Mission03 = 44204,
Mission04 = 44205,
Mission05 = 44206,
Mission06 = 44207,
Mission07 = 44208,
Mission08 = 44209,
Mission09 = 44210,
Mission10 = 44211,
Mission11 = 44212,
Mission12 = 44213,
Mission13 = 44214,
Mission14 = 44215,
Mission15 = 44216,
Mission16 = 44217,
Mission17 = 44218,
Mission18 = 44219,
Mission19 = 44220,
Mission20 = 44221,
Mission21 = 44222,
Mission22 = 44223,
Mission23 = 44224,
Mission24 = 44225,
Mission25 = 44226,
Mission26 = 44227,
Mission27 = 44228,
Mission28 = 44229,
Mission29 = 44230,
Mission30 = 44231,
Mission31 = 44232,
Mission32 = 44233,
Mission32a = 44234,
Mission32b = 44235,
Mission33 = 44236,
Mission34 = 44237,
Mission35 = 44238,
Mission36 = 44239,
Mission36a = 44240,
Mission37 = 44241,
Mission38 = 44242,
Mission38a = 44243,
Mission38b = 44244,
Mission38c = 44245,
Mission39 = 44246,
Mission40 = 44247,
Mission41 = 44248,
Mission42 = 44249,
Mission43 = 44250,
Mission44 = 44251,
Mission45 = 44252,
Mission46 = 44253,
Mission47 = 44254,
Mission48 = 44255,
Mission49 = 44256,
Mission50 = 44257,
Mission51 = 44258,
Mission52 = 44259,
Mission53 = 44260,
Mission54 = 44261,
Mission55 = 44262,
Mission56 = 44263,
Mission57 = 44264,
Mission58 = 44265,
Mission59 = 44266,
Mission60 = 44267,
Mission61 = 44268,
Mission62 = 44269,
Mission63 = 44270,
Mission64 = 44271,
Mission65 = 44272,
Mission66 = 44273,
Mission67 = 44274,
Mission68 = 44275,
Mission69 = 44276,
Mission70 = 44277,
Mission71 = 44278,
Mission72 = 44279,
Mission73 = 44280,
Mission74 = 44281,
Mission75 = 44282,
Mission76 = 44283,
Bookcase = 44284,
SmallDragonTears1 = 44285,
SmallDragonTears2 = 44286,
SmallDragonTears3 = 44287,
},
TheRepenters = {},
},
U10_20 = { -- update 10.20 - Reserved Storages 44301 - 44400
Expand Down
9 changes: 8 additions & 1 deletion data-otservbr-global/monster/humans/necromancer_servant.lua
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,14 @@ monster.voices = {
chance = 10,
}

monster.loot = {}
monster.loot = {
{ name = "gold coin", chance = 74230, maxCount = 70 },
{ name = "poison arrow", chance = 74230, maxCount = 5 },
{ name = "book of necromantic rituals", chance = 74230 },
{ name = "incantation fragment", chance = 100000 },
{ name = "necromantic robe", chance = 54230 },
{ name = "boots of haste", chance = 5000 },
}

monster.attacks = {
{ name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -45 },
Expand Down
20 changes: 10 additions & 10 deletions data-otservbr-global/npc/elyen_ravenlock.lua
Original file line number Diff line number Diff line change
Expand Up @@ -61,43 +61,43 @@ local function creatureSayCallback(npc, creature, type, message)
return false
end

if (MsgContains(message, "scroll") or MsgContains(message, "mission")) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission60) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission61) < 1 then
if (MsgContains(message, "scroll") or MsgContains(message, "mission")) and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission60) == 1 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission61) < 1 then
npcHandler:say("Hello, brother. You come with a question to me, I believe?", npc, creature)
npcHandler:setTopic(playerId, 1)
elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission60) == 1 then
elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission60) == 1 then
npcHandler:say("And what is it you want? Do you bring news from the undead, or do you seek a dark {artefact}?", npc, creature)
player:setStorageValue(Storage.GravediggerOfDrefia.Mission45, 1)
player:setStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission45, 1)
npcHandler:setTopic(playerId, 2)
elseif (MsgContains(message, "artefact") or MsgContains(message, "yes")) and npcHandler:getTopic(playerId) == 2 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission60) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission61) < 1 then
elseif (MsgContains(message, "artefact") or MsgContains(message, "yes")) and npcHandler:getTopic(playerId) == 2 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission60) == 1 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission61) < 1 then
npcHandler:say({
"The scroll piece there? The symbols look promising, but it is incomplete. ...",
"It is of little use to us. But it seems to be of interest to you ...",
"In exchange for the scroll piece, you must assist me with something. {Agreed}?",
}, npc, creature)
npcHandler:setTopic(playerId, 3)
elseif (MsgContains(message, "agreed") or MsgContains(message, "yes")) and npcHandler:getTopic(playerId) == 3 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission60) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission61) < 1 then
elseif (MsgContains(message, "agreed") or MsgContains(message, "yes")) and npcHandler:getTopic(playerId) == 3 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission60) == 1 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission61) < 1 then
npcHandler:say({
"I would have to sing to the Dark Shrines, but I cannot. ...",
"I... cannot bear Urgith's breed. Everywhere, I hear them - scrabbling, squeaking ...",
"Take this bone flute and play it in front of the five Dark Shrines so that they answer with song in return. You will find them in the Gardens of Night. ...",
"If you have done that, you may have the scroll piece. Now go.",
}, npc, creature)
player:setStorageValue(Storage.GravediggerOfDrefia.Mission61, 1)
player:setStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission61, 1)
player:addItem(18932, 1)
npcHandler:setTopic(playerId, 0)
elseif MsgContains(message, "mission") and player:getStorageValue(Storage.GravediggerOfDrefia.Mission66) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission67) < 1 then
elseif MsgContains(message, "mission") and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission66) == 1 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission67) < 1 then
npcHandler:say("Hello, brother. You have finished the dance?", npc, creature)
npcHandler:setTopic(playerId, 4)
elseif (MsgContains(message, "yes")) and npcHandler:getTopic(playerId) == 4 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission66) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission67) < 1 then
elseif (MsgContains(message, "yes")) and npcHandler:getTopic(playerId) == 4 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission66) == 1 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission67) < 1 then
npcHandler:say({
"You have indeed. The shrines have sung back to you. Well done, brother. Not many men take such an interest in our art. ...",
"I will take the flute back. Our bargain stands. You may take the scroll.",
}, npc, creature)
player:removeItem(18932, 1)
player:setStorageValue(Storage.GravediggerOfDrefia.Mission67, 1)
player:setStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission67, 1)
npcHandler:setTopic(playerId, 0)
else
npcHandler:say({ "Time is money, hurry." }, npc, creature)
npcHandler:say("Time is money, hurry.", npc, creature)
end
return true
end
Expand Down
20 changes: 10 additions & 10 deletions data-otservbr-global/npc/oblivion.lua
Original file line number Diff line number Diff line change
Expand Up @@ -62,44 +62,44 @@ local function creatureSayCallback(npc, creature, type, message)
return false
end

if (MsgContains(message, "scroll") or MsgContains(message, "mission")) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission44) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission45) < 1 then
if (MsgContains(message, "scroll") or MsgContains(message, "mission")) and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission44) == 1 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission45) < 1 then
npcHandler:say("Lost. Hidden. The keys are shadow names. Find them, they will talk to me and reveal what is hidden. Will you go on that quest?", npc, creature)
npcHandler:setTopic(playerId, 1)
elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission44) == 1 then
elseif MsgContains(message, "yes") and npcHandler:getTopic(playerId) == 1 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission44) == 1 then
npcHandler:say({
"Then into the vampire crypts, deep down, you must go. ...",
"There... three graves where the shadows swirl, unseen. The first one: name the colour of the silent gong. Then ...",
"The second: the name that is silent now in the halls of Darkstone ...",
"The third: the lost beauty of Dunesea. It must be remembered, the shadows command it. Go now.",
}, npc, creature)
player:setStorageValue(Storage.GravediggerOfDrefia.Mission45, 1)
player:setStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission45, 1)
npcHandler:setTopic(playerId, 0)
elseif (MsgContains(message, "scroll") or MsgContains(message, "mission")) and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then
elseif (MsgContains(message, "scroll") or MsgContains(message, "mission")) and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission49) < 1 then
npcHandler:say("Yes. Have you gone there and found what you sought?", npc, creature)
npcHandler:setTopic(playerId, 2)
elseif (MsgContains(message, "yes")) and npcHandler:getTopic(playerId) == 2 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then
elseif (MsgContains(message, "yes")) and npcHandler:getTopic(playerId) == 2 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission49) < 1 then
npcHandler:say("Tell me. Begin with the colour.", npc, creature)
npcHandler:setTopic(playerId, 3)
elseif (MsgContains(message, "bronze")) and npcHandler:getTopic(playerId) == 3 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then
elseif (MsgContains(message, "bronze")) and npcHandler:getTopic(playerId) == 3 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission49) < 1 then
npcHandler:say("Yes. The shadows say this is true. The beauty of House Dunesea, name it.", npc, creature)
npcHandler:setTopic(playerId, 4)
elseif (MsgContains(message, "floating")) and npcHandler:getTopic(playerId) == 4 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then
elseif (MsgContains(message, "floating")) and npcHandler:getTopic(playerId) == 4 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission49) < 1 then
npcHandler:say("The floating gardens. Too beautiful to lie asleep in the memory of men. Yes. The name that is no more in Darkstone?", npc, creature)
npcHandler:setTopic(playerId, 5)
elseif (MsgContains(message, "Takesha Antishu")) and npcHandler:getTopic(playerId) == 5 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.GravediggerOfDrefia.Mission49) < 1 then
elseif (MsgContains(message, "Takesha Antishu")) and npcHandler:getTopic(playerId) == 5 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission48) == 1 and player:getStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission49) < 1 then
npcHandler:say({
"Ah, the Lady of Darkstone. You have done well to remember her name. ...",
"Now, the shadows say the thing you seek lies next to Akab, the Quarrelsome. ...",
"No coal is burned in his honour. Find his resting place and dig near it. Now go.",
}, npc, creature)
player:setStorageValue(Storage.GravediggerOfDrefia.Mission49, 1)
player:setStorageValue(Storage.Quest.U10_10.TheGravediggerOfDrefia.Mission49, 1)
npcHandler:setTopic(playerId, 0)
end
return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:setMessage(MESSAGE_GREET, "Be greeted.")
npcHandler:setMessage(MESSAGE_GREET, "A shadow preceded you. You wish?")
npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true)

-- npcType registering the npcConfig table
Expand Down
Loading

0 comments on commit 9aba63f

Please sign in to comment.