Code:
import sys
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from net.sf.l2j.gameserver import SkillTable
from net.sf.l2j import L2DatabaseFactory
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
NPC=[35461]
ADENA_ID=57
MIN_LEVEL=40
QuestId = 9999
QuestName = "NPCBuffer"
QuestDesc = "custom"
InitialHtml = "1.htm"
print "importing " + QuestDesc + ": " + str(QuestId) + ": " + QuestName + ": " + QuestName,
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent(self,event,st):
htmltext = event
count=st.getQuestItemsCount(ADENA_ID)
level=st.getPlayer().getLevel()
if count < 400000 or level < MIN_LEVEL :
htmltext = "<html><head><body>You adena's lower than 400k or your level's lower than 40.</body></html>"
else:
st.getPlayer().setTarget(st.getPlayer())
if event == "2" and count >= 160000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,160000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4360,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4359,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4358,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4357,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4354,4),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4353,6),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4350,4),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4347,6),False,False)
st.getPlayer().restoreHPMP()
return "4.htm"
st.setState(COMPLETED)
if event == "3" and count >= 80000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,80000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4352,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4351,6),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4355,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4356,3),False,False)
st.getPlayer().restoreHPMP()
return "4.htm"
st.setState(COMPLETED)
if event == "4" and count >= 140000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,140000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4346,4),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4342,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4343,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4344,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4345,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4349,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4348,6),False,False)
st.getPlayer().restoreHPMP()
return "4.htm"
st.setState(COMPLETED)
if event == "5" and count >= 400000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,400000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4360,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4359,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4358,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4357,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4354,4),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4353,6),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4350,4),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4348,6),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4352,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4351,6),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4355,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4356,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4346,4),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4342,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4343,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4344,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4345,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4349,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4347,6),False,False)
st.getPlayer().restoreHPMP()
return "4.htm"
st.setState(COMPLETED)
if event == "6" and count >= 1000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,1000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(1218,33),False,False)
st.getPlayer().restoreHPMP()
return "1.htm"
st.setState(COMPLETED)
#Wind Walk
if event == "7" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4342,2),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Decrease Weight
if event == "8" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4343,3),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Shield
if event == "9" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4344,3),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Might
if event == "10" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4345,3),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Mental Shield
if event == "11" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4346,4),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Bless the Body
if event == "12" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4347,6),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Bless the Soul
if event == "13" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4348,6),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Magic Barrier
if event == "14" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4349,2),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Resist Shock
if event == "15" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4350,4),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Concentration
if event == "16" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4351,6),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Berserker Spirit
if event == "17" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4352,2),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Bless Shield
if event == "18" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4353,6),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Vampiric Rage
if event == "19" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4354,4),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Acumen
if event == "20" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4355,3),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Empower
if event == "21" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4356,3),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Haste
if event == "22" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4357,2),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Guidance
if event == "23" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4358,3),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Focus
if event == "24" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4359,3),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
#Death Whisper
if event == "25" and count >= 15000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,15000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4360,3),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
if event == "26" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(271,1),False,False)
st.getPlayer().restoreHPMP()
return "2.htm"
st.setState(COMPLETED)
if event == "27" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(272,1),False,False)
st.getPlayer().restoreHPMP()
return "2.htm"
st.setState(COMPLETED)
if event == "28" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(273,1),False,False)
st.getPlayer().restoreHPMP()
return "2.htm"
st.setState(COMPLETED)
if event == "29" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(274,1),False,False)
st.getPlayer().restoreHPMP()
return "2.htm"
st.setState(COMPLETED)
if event == "30" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(275,1),False,False)
st.getPlayer().restoreHPMP()
return "2.htm"
st.setState(COMPLETED)
if event == "31" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(276,1),False,False)
st.getPlayer().restoreHPMP()
return "2.htm"
st.setState(COMPLETED)
if event == "32" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(277,1),False,False)
st.getPlayer().restoreHPMP()
return "2.htm"
st.setState(COMPLETED)
if event == "33" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(307,1),False,False)
st.getPlayer().restoreHPMP()
return "2.htm"
st.setState(COMPLETED)
if event == "34" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(309,1),False,False)
st.getPlayer().restoreHPMP()
return "2.htm"
st.setState(COMPLETED)
if event == "35" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(310,1),False,False)
st.getPlayer().restoreHPMP()
return "2.htm"
st.setState(COMPLETED)
if event == "36" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(311,1),False,False)
st.getPlayer().restoreHPMP()
return "2.htm"
st.setState(COMPLETED)
if event == "37" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(366,1),False,False)
st.getPlayer().restoreHPMP()
return "2.htm"
st.setState(COMPLETED)
if event == "38" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(365,1),False,False)
st.getPlayer().restoreHPMP()
return "2.htm"
st.setState(COMPLETED)
if event == "39" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(264,1),False,False)
st.getPlayer().restoreHPMP()
return "3.htm"
st.setState(COMPLETED)
if event == "40" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(265,1),False,False)
st.getPlayer().restoreHPMP()
return "3.htm"
st.setState(COMPLETED)
if event == "41" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(266,1),False,False)
st.getPlayer().restoreHPMP()
return "3.htm"
st.setState(COMPLETED)
if event == "42" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(267,1),False,False)
st.getPlayer().restoreHPMP()
return "3.htm"
st.setState(COMPLETED)
if event == "43" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(268,1),False,False)
st.getPlayer().restoreHPMP()
return "3.htm"
st.setState(COMPLETED)
if event == "44" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(269,1),False,False)
st.getPlayer().restoreHPMP()
return "3.htm"
st.setState(COMPLETED)
if event == "45" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(270,1),False,False)
st.getPlayer().restoreHPMP()
return "3.htm"
st.setState(COMPLETED)
if event == "46" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(304,1),False,False)
st.getPlayer().restoreHPMP()
return "3.htm"
st.setState(COMPLETED)
if event == "47" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(305,1),False,False)
st.getPlayer().restoreHPMP()
return "3.htm"
st.setState(COMPLETED)
if event == "48" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(306,1),False,False)
st.getPlayer().restoreHPMP()
return "3.htm"
st.setState(COMPLETED)
if event == "49" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(308,1),False,False)
st.getPlayer().restoreHPMP()
return "3.htm"
st.setState(COMPLETED)
if event == "50" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(363,1),False,False)
st.getPlayer().restoreHPMP()
return "3.htm"
st.setState(COMPLETED)
if event == "51" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(364,1),False,False)
st.getPlayer().restoreHPMP()
return "3.htm"
st.setState(COMPLETED)
if event == "52" and count >= 20000 and level >= MIN_LEVEL:
st.takeItems(ADENA_ID,20000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(349,1),False,False)
st.getPlayer().restoreHPMP()
return "3.htm"
st.setState(COMPLETED)
if htmltext != event:
st.setState(COMPLETED)
st.exitQuest(1)
return htmltext
def onTalk (self,npc,st):
htmltext = "<html><head><body>I have nothing to say to you</body></html>"
st.setState(STARTED)
return InitialHtml
QUEST = Quest(QuestId,str(QuestId) + "_" + QuestName,QuestDesc)
CREATED=State('Start',QUEST)
STARTED=State('Started',QUEST)
COMPLETED=State('Completed',QUEST)
QUEST.setInitialState(CREATED)
for npcId in NPC:
QUEST.addStartNpc(npcId)
STARTED.addTalkId(npcId)
print "...done"