Skip to content
Snippets Groups Projects
Commit 2291df6b authored by Adry_85's avatar Adry_85
Browse files

BETA: Retail-like quests:

	* '''Illegitimate Child of the Goddess''' (358)
	* '''For a Sleepless Deadman''' (359)
parent 5b8b2799
No related branches found
No related tags found
No related merge requests found
Showing
with 7 additions and 279 deletions
......@@ -496,8 +496,8 @@ quests/Q00354_ConquestOfAlligatorIsland/Q00354_ConquestOfAlligatorIsland.java
quests/355_FamilyHonor/__init__.py
quests/356_DigUpTheSeaOfSpores/__init__.py
quests/357_WarehouseKeepersAmbition/__init__.py
quests/358_IllegitimateChildOfAGoddess/__init__.py
quests/359_ForSleeplessDeadmen/__init__.py
quests/Q00358_IllegitimateChildOfTheGoddess/Q00358_IllegitimateChildOfTheGoddess.java
quests/Q00359_ForASleeplessDeadman/Q00359_ForASleeplessDeadman.java
quests/Q00360_PlunderTheirSupplies/Q00360_PlunderTheirSupplies.java
quests/Q00362_BardsMandolin/Q00362_BardsMandolin.java
quests/Q00363_SorrowfulSoundOfFlute/Q00363_SorrowfulSoundOfFlute.java
......
<html><body>Grand Master Oltlin:<br><br>
I think it is too early for you to help me. Come back after you have gained some more experience.<br>
<font color="LEVEL">(Quest for characters level 63 and above.)</font></body></html>
\ No newline at end of file
<html><body>Grand Master Oltlin:<br><br>
To protect Shilen's reputation, we need to destroy the evil creatures that are evidence of her descent into madness.<br><br>
<a action="bypass -h Quest 358_IllegitimateChildOfAGoddess 30862-5.htm">"I'll protect her reputation as if i were his son"</a><br><br>
<a action="bypass -h Quest 358_IllegitimateChildOfAGoddess 30862-6.htm">"Honestly i don't care about your goddess' problems"</a>
</body></html>
\ No newline at end of file
<html><body>Grand Master Oltlin:<br><br>
It seems you're really commited with your task, did you slayed enough monsters to protect our goddess image?<br><br>
<a action="bypass -h Quest 358_IllegitimateChildOfAGoddess 30862-7.htm">"The lunacy of our mother is hidden now"</a><br>
</body></html>
\ No newline at end of file
<html><body>Grand Master Oltlin:<br><br>
Shilen's reputation can't be safe with so many monsters out there! We need to slay them to keep her doctrine strong. How do you think that killing just a few of them will suffice to honor our mother?<br><br>
<a action="bypass -h Quest 358_IllegitimateChildOfAGoddess 30862-5.htm">"You're right, i'll double my efforts"</a><br><br>
<a action="bypass -h Quest 358_IllegitimateChildOfAGoddess 30862-6.htm">"I will quit, Shillen's doctrine is not my businness"</a>
</body></html>
\ No newline at end of file
<html><body>Grand Master Oltlin:<br><br>
Then in the name of our mother, collect<font color="LEVEL"> 108 Snake Scales</font> from the evil creatures that look like her and take them back to me. Those creatures are known as<font color="LEVEL"> Falibati and Trives</font>.
</body></html>
\ No newline at end of file
<html><body>Grand Master Oltlin:<br><br>
Get off my sight then, and never come back again into our guild.
</body></html>
\ No newline at end of file
<html><body>Grand Master Oltlin:<br><br>
Well done! You've proved yourself as a brother in the Shillen's Light. Come back here whenever you feel willing to serve our mother again. Take this reward as a token of empathy.</body></html>
\ No newline at end of file
# Illegitimate Child Of A Goddess version 0.1
# by DrLecter
import sys
from com.l2jserver import Config
from com.l2jserver.gameserver.model.quest import State
from com.l2jserver.gameserver.model.quest import QuestState
from com.l2jserver.gameserver.model.quest import Quest as JQuest
#Quest info
QUEST_NUMBER,QUEST_NAME,QUEST_DESCRIPTION = 358,"IllegitimateChildOfAGoddess","Illegitimate Child Of A Goddess"
qn = "358_IllegitimateChildOfAGoddess"
#Variables
DROP_RATE=12*Config.RATE_QUEST_DROP #in %
REQUIRED=108 #how many items will be paid for a reward (affects onkill sounds too)
#Quest items
SN_SCALE = 5868
#Rewards
REWARDS=range(6329,6340,2)+range(5364,5367,2)
#Changing this value to non-zero, will turn recipes to 100% instead of 70/60%
ALT_RP_100 = 0
#NPCs
OLTLIN = 30862
#Mobs
MOBS = [ 20672,20673 ]
class Quest (JQuest) :
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
self.questItemIds = [SN_SCALE]
def onEvent (self,event,st) :
htmltext = event
if event == "30862-5.htm" :
st.setState(State.STARTED)
st.set("cond","1")
st.playSound("ItemSound.quest_accept")
elif event == "30862-6.htm" :
st.exitQuest(1)
elif event == "30862-7.htm" :
if st.getQuestItemsCount(SN_SCALE) >= REQUIRED :
st.takeItems(SN_SCALE,REQUIRED)
item=REWARDS[self.getRandom(len(REWARDS))]
if ALT_RP_100: item +=1
st.rewardItems(item ,1)
st.exitQuest(1)
st.playSound("ItemSound.quest_finish")
else :
htmltext = "30862-4.htm"
return htmltext
def onTalk (self,npc,player):
htmltext = Quest.getNoQuestMsg(player)
st = player.getQuestState(qn)
if not st : return htmltext
npcId = npc.getId()
id = st.getState()
if id == State.CREATED :
st.set("cond","0")
if player.getLevel() < 63 :
st.exitQuest(1)
htmltext = "30862-1.htm"
else :
htmltext = "30862-2.htm"
elif id == State.STARTED :
if st.getQuestItemsCount(SN_SCALE) >= REQUIRED :
htmltext = "30862-3.htm"
else :
htmltext = "30862-4.htm"
return htmltext
def onKill(self,npc,player,isPet):
st = player.getQuestState(qn)
if not st : return
if st.getState() != State.STARTED : return
count = st.getQuestItemsCount(SN_SCALE)
numItems, chance = divmod(DROP_RATE,100)
if self.getRandom(100) < chance :
numItems += 1
if numItems != 0 :
if count + numItems >= REQUIRED :
numItems = REQUIRED - count
if numItems != 0 :
st.playSound("ItemSound.quest_middle")
st.set("cond","2")
else :
st.playSound("ItemSound.quest_itemget")
st.giveItems(SN_SCALE,int(numItems))
return
# Quest class and state definition
QUEST = Quest(QUEST_NUMBER, str(QUEST_NUMBER)+"_"+QUEST_NAME, QUEST_DESCRIPTION)
# Quest NPC starter initialization
QUEST.addStartNpc(OLTLIN)
# Quest initialization
QUEST.addTalkId(OLTLIN)
for i in MOBS :
QUEST.addKillId(i)
\ No newline at end of file
<html><body>High Priest Orven:<br><br>
I think it is too early for you to help me. Come back after you have gained some more experience.<br>
<font color="LEVEL">(Quest for characters level 60 and above.)</font></body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br><br>
Knight Gustav of Elmore has resurrected the dead heroes of Aden to serve his evil purposes. If i could just recover their corpses i would be able to put them to rest again.<br><br>
<a action="bypass -h Quest 359_ForSleeplessDeadmen 30857-6.htm">"I will help you"</a><br><br>
<a action="bypass -h Quest 359_ForSleeplessDeadmen 30857-7.htm">"I'm not interested"</a>
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br><br>
I'm almost finished with my prayers....<br><br>.<br><br>.<br><br>.<br><br>.<br><br>.<br><br>.<br><br>It's done, these sixty dead men can be laid back to rest...
<a action="bypass -h Quest 359_ForSleeplessDeadmen 30857-8.htm">"But, don't you think i deserve some reward as well?"</a><br>
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br><br>
Fine. Just what i asked.. sixty corpses. Thank you very much! Now i'll be able to prepare a ceremony and purify these remains. I need to do this as quick as possible, so if you don't mind...<br><br>
Ah... sure we can talk but not now... I really need to focus all my attention into this purification...<br><br>Give me some minutes and we will discuss whatever you like to.
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br><br>
You came back that fast? It seems that this errand wasn't what you expected huh?<br>
Remember that i need<font color="LEVEL"> 60</font> corpses in order to proceed with my ritual...Am i clear?<br><br>
<a action="bypass -h Quest 359_ForSleeplessDeadmen 30857-9.htm">"Sure, i'll continue searching"</a><br><br>
<a action="bypass -h Quest 359_ForSleeplessDeadmen 30857-7.htm">"Sorry, I would like to quit now"</a><br>
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br><br>
Wonderful! I can perform a ceremony of purification in order to put our heroes' souls back to rest. I'll need you to bring me <font color="LEVEL"> Aden Residents Remains</font> from the undead around<font color="LEVEL"> Devastated Castle.</font> Our dead brothers came back from death in the form of<font color="LEVEL"> doom archers, doom guards and doom servants.</font> Given the power i can concentrate in a single ceremony you should take exactly<font color="LEVEL"> 60 corpses</font> before you come back. Now please hurry, our brave soldiers deserve a proper rest!
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br><br>
Well, if i have no other choice i guess i'll have to let you go. Thanks for your time anyhow, of course you can come back whenever you like.
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br><br>
Of course you do... Here, take some materials that will hopefully make your pass for this world more grateful.<br>
Unfortunately, there are so many heroes that won't find it's rest yet until we help them as we just did now! Can i ask you to keep your efforts so we can save more Aden residents' souls?<br><br>
<a action="bypass -h Quest 359_ForSleeplessDeadmen 30857-9.htm">"OK i will continue"</a><br><br>
<a action="bypass -h Quest 359_ForSleeplessDeadmen 30857-7.htm">"No thanks, i've seen enough dead people"</a><br>
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br><br>
Great! You already know what to do. I'll need you to bring me <font color="LEVEL"> Aden Residents Remains</font> from the undead around<font color="LEVEL"> Devastated Castle.</font> Our dead brothers came back from death in the form of<font color="LEVEL"> doom archers, doom guards and doom servants.</font> Given the power i can concentrate in a single ceremony you should take exactly<font color="LEVEL"> 60 corpses</font> before you come back. Now please hurry, our brave soldiers deserve a proper rest!
</body></html>
\ No newline at end of file
# For Sleepless Deadmen version 0.1
# by DrLecter
import sys
from com.l2jserver import Config
from com.l2jserver.gameserver.model.quest import State
from com.l2jserver.gameserver.model.quest import QuestState
from com.l2jserver.gameserver.model.quest import Quest as JQuest
#Quest info
QUEST_NUMBER,QUEST_NAME,QUEST_DESCRIPTION = 359,"ForSleeplessDeadmen","For Sleepless Deadmen"
qn = "359_ForSleeplessDeadmen"
#Variables
DROP_RATE = 10 #in %
DROP_MAX = 100 #unless you change this
REQUIRED=60 #how many items will be paid for a reward
#Quest items
REMAINS = 5869
#Rewards
REWARDS=range(6341,6347)+range(5494,5496)
#NPCs
ORVEN = 30857
#Mobs
MOBS = range(21006,21009)
class Quest (JQuest) :
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
self.questItemIds = [REMAINS]
def onEvent (self,event,st) :
htmltext = event
if event == "30857-6.htm" :
st.setState(State.STARTED)
st.set("cond","1")
st.playSound("ItemSound.quest_accept")
elif event == "30857-7.htm" :
st.exitQuest(1)
st.playSound("ItemSound.quest_finish")
elif event == "30857-8.htm" :
st.set("cond","1")
st.giveItems(REWARDS[self.getRandom(len(REWARDS))] ,4)
return htmltext
def onTalk (self,npc,player):
htmltext = Quest.getNoQuestMsg(player)
st = player.getQuestState(qn)
if not st : return htmltext
npcId = npc.getId()
id = st.getState()
if id == State.CREATED :
st.set("cond","0")
if player.getLevel() < 60 :
st.exitQuest(1)
htmltext = "30857-1.htm"
else :
htmltext = "30857-2.htm"
elif id == State.STARTED :
cond=st.getInt("cond")
if cond == 3 :
htmltext = "30857-3.htm"
elif cond == 2 and st.getQuestItemsCount(REMAINS) >= REQUIRED :
st.takeItems(REMAINS,REQUIRED)
st.set("cond","3")
htmltext = "30857-4.htm"
else :
htmltext = "30857-5.htm"
return htmltext
def onKill(self,npc,player,isPet):
st = player.getQuestState(qn)
if not st : return
if st.getState() != State.STARTED : return
count = st.getQuestItemsCount(REMAINS)
if count < REQUIRED :
chance = DROP_RATE * Config.RATE_QUEST_DROP
numItems, chance = divmod(chance,100)
if self.getRandom(DROP_MAX) < chance :
numItems += 1
if numItems :
if count + numItems >= REQUIRED :
numItems = REQUIRED - count
st.playSound("ItemSound.quest_middle")
st.set("cond","2")
else:
st.playSound("ItemSound.quest_itemget")
st.giveItems(REMAINS,int(numItems))
return
# Quest class and state definition
QUEST = Quest(QUEST_NUMBER, str(QUEST_NUMBER)+"_"+QUEST_NAME, QUEST_DESCRIPTION)
# Quest NPC starter initialization
QUEST.addStartNpc(ORVEN)
# Quest initialization
QUEST.addTalkId(ORVEN)
for i in MOBS :
QUEST.addKillId(i)
\ No newline at end of file
<html><body>Grand Master Oltlin:<br>
Have you seen the sights of the city? The wonderful castles built by humans, in spite of countless errors and obstacles. Do you have any idea what is beneath them? Often, long shadows are cast under the glow of glory.<br>
You always find the darkest shadows under strong light. Those who pursue glory are wary of shadows. Where there is pure achievement, there is always absence.<br>
<a action="bypass -h Quest Q00358_IllegitimateChildOfTheGoddess 30862-02.htm">"Gee, I didn't expect to hear this sort of thing from someone like you!"</a>
</body></html>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment