__init__.py 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559
  1. # version 0.1
  2. # by DrLecter
  3. import sys
  4. from net.sf.l2j.gameserver.model.quest import State
  5. from net.sf.l2j.gameserver.model.quest import QuestState
  6. from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
  7. # variables section
  8. REQUIRED_EGGS = 20
  9. #Drop rates in %
  10. BACK_DROP = 30
  11. EGG_DROP = 50
  12. #Quest items
  13. FRY_STN,FRY_STN_DLX,FSN_LIST,FSN_LIST_DLX,TD_BCK_SKN,JUICE,SCALE_1,EX_EGG,\
  14. SCALE_2,ZW_EGG,SCALE_3,KA_EGG,SCALE_4,SU_EGG,SCALE_5,SH_EGG,FRY_DUST = range(3816,3832)+[3499]
  15. #NPCs
  16. PM_COOPER,SG_CRONOS,GD_BYRON,MC_MARIA,FR_MYMYU = 7829,7610,7711,7608,7747
  17. DK_EXARION,DK_ZWOV,DK_KALIBRAN,WM_SUZET,WM_SHAMHAI = range(7748,7753)
  18. #mobs
  19. TD_LORD = 231 #toad lord
  20. LO_LZRD_W = 580 #exarion's
  21. MS_SPIDER = 233 #zwov's
  22. RD_SCVNGR = 551 #kalibran's
  23. BO_OVERLD = 270 #suzet's
  24. DD_SEEKER = 202 #shamhai's
  25. #Rewards
  26. FOOD = 4038
  27. ARMOR = 3912
  28. # helper functions section
  29. def check_level(st) :
  30. if st.getPlayer().getLevel() < 35 :
  31. st.exitQuest(True)
  32. return "420_low_level.htm"
  33. return "Start.htm"
  34. def check_stone(st) :
  35. progress = int(st.get("progress"))
  36. if st.getQuestItemsCount(FRY_STN) == 1 :
  37. st.set("cond","3")
  38. if progress == 1 :
  39. st.set("progress","3")
  40. return "420_cronos_8.htm"
  41. elif progress == 8 :
  42. st.set("progress","10")
  43. return "420_cronos_14.htm"
  44. elif st.getQuestItemsCount(FRY_STN_DLX) == 1 :
  45. if progress == 2 :
  46. st.set("progress","4")
  47. return "420_cronos_8.htm"
  48. elif progress == 9 :
  49. st.set("progress","11")
  50. return "420_cronos_14.htm"
  51. else :
  52. return "420_cronos_7.htm"
  53. def check_elements(st) :
  54. progress = int(st.get("progress"))
  55. coal = st.getQuestItemsCount(1870)
  56. char = st.getQuestItemsCount(1871)
  57. gemd = st.getQuestItemsCount(2130)
  58. gemc = st.getQuestItemsCount(2131)
  59. snug = st.getQuestItemsCount(1873)
  60. sofp = st.getQuestItemsCount(1875)
  61. tdbk = st.getQuestItemsCount(TD_BCK_SKN)
  62. if progress in [1,8] :
  63. if coal >= 10 and char >= 10 and gemd >= 1 and snug >= 3 and tdbk >= 10 :
  64. return "420_maria_2.htm"
  65. else :
  66. return "420_maria_1.htm"
  67. elif progress in [2,9] :
  68. if coal >= 10 and char >= 10 and gemc >= 1 and snug >= 5 and sofp >= 1 and tdbk >= 20 :
  69. return "420_maria_4.htm"
  70. else :
  71. return "420_maria_1.htm"
  72. def craft_stone(st) :
  73. progress = int(st.get("progress"))
  74. if progress in [1,8]:
  75. st.takeItems(1870,10)
  76. st.takeItems(1871,10)
  77. st.takeItems(2130,1)
  78. st.takeItems(1873,3)
  79. st.takeItems(TD_BCK_SKN,10)
  80. st.takeItems(FSN_LIST,1)
  81. st.giveItems(FRY_STN,1)
  82. st.playSound("ItemSound.quest_itemget")
  83. return "420_maria_3.htm"
  84. elif progress in [2,9]:
  85. st.takeItems(1870,10)
  86. st.takeItems(1871,10)
  87. st.takeItems(2131,1)
  88. st.takeItems(1873,5)
  89. st.takeItems(1875,1)
  90. st.takeItems(TD_BCK_SKN,20)
  91. st.takeItems(FSN_LIST_DLX,1)
  92. st.giveItems(FRY_STN_DLX,1)
  93. st.playSound("ItemSound.quest_itemget")
  94. return "420_maria_5.htm"
  95. def check_eggs(st, npc) :
  96. progress = int(st.get("progress"))
  97. whom = int(st.get("dragon"))
  98. if whom == 1 : eggs = EX_EGG
  99. elif whom == 2 : eggs = ZW_EGG
  100. elif whom == 3 : eggs = KA_EGG
  101. elif whom == 4 : eggs = SU_EGG
  102. elif whom == 5 : eggs = SH_EGG
  103. if npc == "mymyu" :
  104. if progress in [19,20] and st.getQuestItemsCount(eggs) == 1 :
  105. return "420_"+npc+"_10.htm"
  106. else :
  107. if st.getQuestItemsCount(eggs) >= 20 :
  108. return "420_"+npc+"_9.htm"
  109. else :
  110. return "420_"+npc+"_8.htm"
  111. elif npc == "exarion" and whom == 1 :
  112. if st.getQuestItemsCount(eggs) < 20 :
  113. return "420_"+npc+"_3.htm"
  114. else :
  115. st.takeItems(eggs,20)
  116. st.takeItems(SCALE_1,1)
  117. if progress in [14,21] :
  118. st.set("progress","19")
  119. elif progress in [15,22] :
  120. st.set("progress","20")
  121. st.giveItems(eggs,1)
  122. st.playSound("ItemSound.quest_itemget")
  123. st.set("cond","7")
  124. return "420_"+npc+"_4.htm"
  125. elif npc == "zwov" and whom == 2 :
  126. if st.getQuestItemsCount(eggs) < 20 :
  127. return "420_"+npc+"_3.htm"
  128. else :
  129. st.takeItems(eggs,20)
  130. st.takeItems(SCALE_2,1)
  131. if progress in [14,21] :
  132. st.set("progress","19")
  133. elif progress in [15,22] :
  134. st.set("progress","20")
  135. st.giveItems(eggs,1)
  136. st.set("cond","7")
  137. st.playSound("ItemSound.quest_itemget")
  138. return "420_"+npc+"_4.htm"
  139. elif npc == "kalibran" and whom == 3 :
  140. if st.getQuestItemsCount(eggs) < 20 :
  141. return "420_"+npc+"_3.htm"
  142. else :
  143. st.takeItems(eggs,20)
  144. # st.takeItems(SCALE_3,1)
  145. return "420_"+npc+"_4.htm"
  146. elif npc == "suzet" and whom == 4 :
  147. if st.getQuestItemsCount(eggs) < 20 :
  148. return "420_"+npc+"_4.htm"
  149. else :
  150. st.takeItems(eggs,20)
  151. st.takeItems(SCALE_4,1)
  152. if progress in [14,21] :
  153. st.set("progress","19")
  154. elif progress in [15,22] :
  155. st.set("progress","20")
  156. st.giveItems(eggs,1)
  157. st.set("cond","7")
  158. st.playSound("ItemSound.quest_itemget")
  159. return "420_"+npc+"_5.htm"
  160. elif npc == "shamhai" and whom == 5 :
  161. if st.getQuestItemsCount(eggs) < 20 :
  162. return "420_"+npc+"_3.htm"
  163. else :
  164. st.takeItems(eggs,20)
  165. st.takeItems(SCALE_5,1)
  166. if progress in [14,21] :
  167. st.set("progress","19")
  168. elif progress in [15,22] :
  169. st.set("progress","20")
  170. st.giveItems(eggs,1)
  171. st.set("cond","7")
  172. st.playSound("ItemSound.quest_itemget")
  173. return "420_"+npc+"_4.htm"
  174. return "check_eggs sux"
  175. # Main Quest Code
  176. class Quest (JQuest):
  177. def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
  178. def onEvent (self,event,st):
  179. id = st.getState()
  180. if id != CREATED : progress = int(st.get("progress"))
  181. if id == CREATED :
  182. st.set("cond","0")
  183. if event == "ido" :
  184. st.setState(STARTING)
  185. st.set("progress","0")
  186. st.set("cond","1")
  187. st.set("dragon","0")
  188. st.playSound("ItemSound.quest_accept")
  189. return "Starting.htm"
  190. elif id == STARTING :
  191. if event == "wait" :
  192. return craft_stone(st)
  193. elif event == "cronos_2" :
  194. return "420_cronos_2.htm"
  195. elif event == "cronos_3" :
  196. return "420_cronos_3.htm"
  197. elif event == "cronos_4" :
  198. return "420_cronos_4.htm"
  199. elif event == "fsn" :
  200. st.set("cond","2")
  201. if progress == 0:
  202. st.set("progress","1")
  203. st.giveItems(FSN_LIST,1)
  204. st.playSound("ItemSound.quest_itemget")
  205. return "420_cronos_5.htm"
  206. elif progress == 7:
  207. st.set("progress","8")
  208. st.giveItems(FSN_LIST,1)
  209. st.playSound("ItemSound.quest_itemget")
  210. return "420_cronos_12.htm"
  211. elif event == "fsn_dlx" :
  212. st.set("cond","2")
  213. if progress == 0:
  214. st.set("progress","2")
  215. st.giveItems(FSN_LIST_DLX,1)
  216. st.playSound("ItemSound.quest_itemget")
  217. return "420_cronos_6.htm"
  218. if progress == 7:
  219. st.set("progress","9")
  220. st.giveItems(FSN_LIST_DLX,1)
  221. st.playSound("ItemSound.quest_itemget")
  222. return "420_cronos_13.htm"
  223. elif event == "showfsn" :
  224. return "420_byron_2.htm"
  225. elif event == "askmore" :
  226. st.set("cond","4")
  227. if progress == 3 :
  228. st.set("progress","5")
  229. return "420_byron_3.htm"
  230. elif progress == 4 :
  231. st.set("progress","6")
  232. return "420_byron_4.htm"
  233. elif event == "give_fsn" :
  234. st.takeItems(FRY_STN,1)
  235. return "420_mymyu_2.htm"
  236. elif event == "give_fsn_dlx" :
  237. st.takeItems(FRY_STN_DLX,1)
  238. st.giveItems(FRY_DUST,1)
  239. st.playSound("ItemSound.quest_itemget")
  240. return "420_mymyu_4.htm"
  241. elif event == "fry_ask" :
  242. return "420_mymyu_5.htm"
  243. elif event == "ask_abt" :
  244. st.setState(STARTED)
  245. st.set("cond","5")
  246. st.giveItems(JUICE,1)
  247. st.playSound("ItemSound.quest_itemget")
  248. return "420_mymyu_6.htm"
  249. elif id == STARTED :
  250. if event == "exarion_1" :
  251. st.giveItems(SCALE_1,1)
  252. st.playSound("ItemSound.quest_itemget")
  253. st.set("dragon","1")
  254. st.set("cond","6")
  255. st.set("progress",str(progress+9))
  256. return "420_exarion_2.htm"
  257. elif event == "kalibran_1" :
  258. st.set("dragon","3")
  259. st.set("cond","6")
  260. st.giveItems(SCALE_3,1)
  261. st.playSound("ItemSound.quest_itemget")
  262. st.set("progress",str(progress+9))
  263. return "420_kalibran_2.htm"
  264. elif event == "kalibran_2" :
  265. if st.getQuestItemsCount(SCALE_3) :
  266. if progress in [14,21] :
  267. st.set("progress","19")
  268. elif progress in [15,22] :
  269. st.set("progress","20")
  270. st.takeItems(SCALE_3,1)
  271. st.giveItems(KA_EGG,1)
  272. st.set("cond","7")
  273. st.playSound("ItemSound.quest_itemget")
  274. return "420_kalibran_5.htm"
  275. elif event == "zwov_1" :
  276. st.set("dragon","2")
  277. st.set("cond","6")
  278. st.giveItems(SCALE_2,1)
  279. st.playSound("ItemSound.quest_itemget")
  280. st.set("progress",str(progress+9))
  281. return "420_zwov_2.htm"
  282. elif event == "shamhai_1" :
  283. st.set("dragon","5")
  284. st.set("cond","6")
  285. st.giveItems(SCALE_5,1)
  286. st.playSound("ItemSound.quest_itemget")
  287. st.set("progress",str(progress+9))
  288. return "420_shamhai_2.htm"
  289. elif event == "suzet_1" :
  290. return "420_suzet_2.htm"
  291. elif event == "suzet_2" :
  292. st.set("dragon","4")
  293. st.set("cond","6")
  294. st.giveItems(SCALE_4,1)
  295. st.playSound("ItemSound.quest_itemget")
  296. st.set("progress",str(progress+9))
  297. return "420_suzet_3.htm"
  298. elif event == "hatch" :
  299. whom = int(st.get("dragon"))
  300. if whom == 1 : eggs = EX_EGG
  301. elif whom == 2 : eggs = ZW_EGG
  302. elif whom == 3 : eggs = KA_EGG
  303. elif whom == 4 : eggs = SU_EGG
  304. elif whom == 5 : eggs = SH_EGG
  305. if st.getQuestItemsCount(eggs) and progress in [19,20] :
  306. st.takeItems(eggs,1)
  307. st.set("cond","8")
  308. if progress == 19 :
  309. st.giveItems(3500+st.getRandom(3),1)
  310. st.setState(COMPLETED)
  311. st.clearQuestDrops()
  312. st.exitQuest(True)
  313. st.playSound("ItemSound.quest_finish")
  314. return "420_mymyu_15.htm"
  315. elif progress == 20 :
  316. return "420_mymyu_11.htm"
  317. elif event == "give_dust" :
  318. if st.getQuestItemsCount(FRY_DUST):
  319. st.takeItems(FRY_DUST,1)
  320. luck = st.getRandom(2)
  321. if luck == 0 :
  322. extra = ARMOR
  323. qty = 1
  324. htmltext = "420_mymyu_13.htm"
  325. else :
  326. extra = FOOD
  327. qty = 100
  328. htmltext = "420_mymyu_14.htm"
  329. st.giveItems(3500+st.getRandom(3),1)
  330. st.giveItems(extra,qty)
  331. st.setState(COMPLETED)
  332. st.clearQuestDrops()
  333. st.exitQuest(True)
  334. st.playSound("ItemSound.quest_finish")
  335. return htmltext
  336. elif event == "no_dust" :
  337. st.giveItems(3500+st.getRandom(3),1)
  338. st.setState(COMPLETED)
  339. st.clearQuestDrops()
  340. st.exitQuest(True)
  341. st.playSound("ItemSound.quest_finish")
  342. return "420_mymyu_12.htm"
  343. def onTalk (self,npc,st):
  344. id = st.getState()
  345. npcid = npc.getNpcId()
  346. if id != CREATED : progress = int(st.get("progress"))
  347. if npcid == PM_COOPER :
  348. if id == CREATED :
  349. return check_level(st)
  350. elif id == STARTING and progress == 0 :
  351. return "Starting.htm"
  352. else :
  353. return "Started.htm"
  354. elif npcid == SG_CRONOS :
  355. if id == STARTING :
  356. if progress == 0 :
  357. return "420_cronos_1.htm"
  358. elif progress in [ 1,2,8,9 ] :
  359. return check_stone(st)
  360. elif progress in [ 3,4,10,11 ] :
  361. return "420_cronos_9.htm"
  362. elif progress in [5,6,12,13 ]:
  363. return "420_cronos_11.htm"
  364. elif progress == 7 :
  365. return "420_cronos_10.htm"
  366. elif npcid == MC_MARIA :
  367. if id == STARTING :
  368. if ((progress in [ 1,8 ] ) and st.getQuestItemsCount(FSN_LIST)==1) or ((progress in [ 2,9 ] ) and st.getQuestItemsCount(FSN_LIST_DLX)==1):
  369. return check_elements(st)
  370. elif progress in [ 3,4,5,6,7,10,11 ] :
  371. return "420_maria_6.htm"
  372. elif npcid == GD_BYRON :
  373. if id == STARTING :
  374. if ((progress in [ 1,8 ] ) and st.getQuestItemsCount(FSN_LIST)==1) or ((progress in [ 2,9 ] ) and st.getQuestItemsCount(FSN_LIST_DLX)==1):
  375. return "420_byron_10.htm"
  376. elif progress == 7 :
  377. return "420_byron_9.htm"
  378. elif (progress == 3 and st.getQuestItemsCount(FRY_STN)==1) or (progress == 4 and st.getQuestItemsCount(FRY_STN_DLX)==1):
  379. return "420_byron_1.htm"
  380. elif progress == 10 and st.getQuestItemsCount(FRY_STN)==1 :
  381. st.set("progress","12")
  382. return "420_byron_5.htm"
  383. elif progress == 11 and st.getQuestItemsCount(FRY_STN_DLX)==1 :
  384. st.set("progress","13")
  385. return "420_byron_6.htm"
  386. elif progress in [5,12] :
  387. return "420_byron_7.htm"
  388. elif progress in [6,13] :
  389. return "420_byron_8.htm"
  390. elif npcid == FR_MYMYU :
  391. if id == STARTING :
  392. if ( progress in [5,12] ) and st.getQuestItemsCount(FRY_STN) == 1 :
  393. return "420_mymyu_1.htm"
  394. elif ( progress in [6,13] ) and st.getQuestItemsCount(FRY_STN_DLX) == 1 :
  395. return "420_mymyu_3.htm"
  396. elif id == STARTED :
  397. if progress < 14 and st.getQuestItemsCount(JUICE) == 1 :
  398. return "420_mymyu_7.htm"
  399. elif progress > 13 :
  400. return check_eggs(st,"mymyu")
  401. elif npcid == DK_EXARION :
  402. if id == STARTED :
  403. if progress in [ 5,6,12,13 ] and st.getQuestItemsCount(JUICE) == 1:
  404. st.takeItems(JUICE,1)
  405. return "420_exarion_1.htm"
  406. elif progress > 13 and st.getQuestItemsCount(SCALE_1) == 1:
  407. return check_eggs(st,"exarion")
  408. elif progress in [ 19,20 ] and st.getQuestItemsCount(EX_EGG) == 1 :
  409. return "420_exarion_5.htm"
  410. elif npcid == DK_ZWOV :
  411. if id == STARTED :
  412. if progress in [ 5,6,12,13 ] and st.getQuestItemsCount(JUICE) == 1:
  413. st.takeItems(JUICE,1)
  414. return "420_zwov_1.htm"
  415. elif progress > 13 and st.getQuestItemsCount(SCALE_2) == 1:
  416. return check_eggs(st,"zwov")
  417. elif progress in [ 19,20 ] and st.getQuestItemsCount(ZW_EGG) == 1 :
  418. return "420_zwov_5.htm"
  419. elif npcid == DK_KALIBRAN :
  420. if id == STARTED :
  421. if progress in [ 5,6,12,13 ] and st.getQuestItemsCount(JUICE) == 1:
  422. st.takeItems(JUICE,1)
  423. return "420_kalibran_1.htm"
  424. elif progress > 13 and st.getQuestItemsCount(SCALE_3) == 1:
  425. return check_eggs(st,"kalibran")
  426. elif progress in [ 19,20 ] and st.getQuestItemsCount(KA_EGG) == 1 :
  427. return "420_kalibran_6.htm"
  428. elif npcid == WM_SUZET :
  429. if id == STARTED :
  430. if progress in [ 5,6,12,13 ] and st.getQuestItemsCount(JUICE) == 1:
  431. st.takeItems(JUICE,1)
  432. return "420_suzet_1.htm"
  433. elif progress > 13 and st.getQuestItemsCount(SCALE_4) == 1:
  434. return check_eggs(st,"suzet")
  435. elif progress in [ 19,20 ] and st.getQuestItemsCount(SU_EGG) == 1 :
  436. return "420_suzet_6.htm"
  437. elif npcid == WM_SHAMHAI :
  438. if id == STARTED :
  439. if progress in [ 5,6,12,13 ] and st.getQuestItemsCount(JUICE) == 1:
  440. st.takeItems(JUICE,1)
  441. return "420_shamhai_1.htm"
  442. elif progress > 13 and st.getQuestItemsCount(SCALE_5) == 1:
  443. return check_eggs(st,"shamhai")
  444. elif progress in [ 19,20 ] and st.getQuestItemsCount(SH_EGG) == 1 :
  445. return "420_shamhai_5.htm"
  446. return "<html><head><body>I have nothing to say to you</body></html>"
  447. def onKill (self,npc,st):
  448. id = st.getState()
  449. npcid = npc.getNpcId()
  450. #incipios drop
  451. if id == STARTING and (st.getQuestItemsCount(FSN_LIST) == 1 and st.getQuestItemsCount(TD_BCK_SKN) < 10) or (st.getQuestItemsCount(FSN_LIST_DLX) == 1 and st.getQuestItemsCount(TD_BCK_SKN) < 20) :
  452. if npcid == TD_LORD :
  453. if st.getRandom(100) < BACK_DROP :
  454. st.giveItems(TD_BCK_SKN,1)
  455. if (st.getQuestItemsCount(FSN_LIST) and st.getQuestItemsCount(TD_BCK_SKN) == 10) or (st.getQuestItemsCount(FSN_LIST_DLX) and st.getQuestItemsCount(TD_BCK_SKN) == 20) :
  456. st.playSound("ItemSound.quest_middle")
  457. else :
  458. st.playSound("ItemSound.quest_itemget")
  459. #dragon detection
  460. elif id == STARTED and (st.get("progress") in [ "14","15","21","22" ]) :
  461. whom = int(st.get("dragon"))
  462. if whom == 1 :
  463. eggs = EX_EGG
  464. scale = SCALE_1
  465. eggdropper = LO_LZRD_W
  466. elif whom == 2 :
  467. eggs = ZW_EGG
  468. scale = SCALE_2
  469. eggdropper = MS_SPIDER
  470. elif whom == 3 :
  471. eggs = KA_EGG
  472. scale = SCALE_3
  473. eggdropper = RD_SCVNGR
  474. elif whom == 4 :
  475. eggs = SU_EGG
  476. scale = SCALE_4
  477. eggdropper = BO_OVERLD
  478. elif whom == 5 :
  479. eggs = SH_EGG
  480. scale = SCALE_5
  481. eggdropper = DD_SEEKER
  482. if st.getQuestItemsCount(scale) == 1 and st.getQuestItemsCount(eggs) < REQUIRED_EGGS :
  483. if npcid == eggdropper :
  484. if st.getRandom(100) < EGG_DROP :
  485. st.giveItems(eggs,1)
  486. if st.getQuestItemsCount(eggs) < REQUIRED_EGGS :
  487. st.playSound("ItemSound.quest_itemget")
  488. else :
  489. st.playSound("ItemSound.quest_middle")
  490. #fairy stone destruction
  491. elif id == STARTING and st.getQuestItemsCount(FRY_STN_DLX) == 1 :
  492. if npcid in range(589,600)+[719]:
  493. st.takeItems(FRY_STN_DLX,1)
  494. st.set("progress","7")
  495. return "you lost fairy stone deluxe!"
  496. # Quest class and state definition
  497. QUEST = Quest(420, "420_LittleWings", "Little Wings")
  498. CREATED = State('Start', QUEST)
  499. STARTING = State('Starting', QUEST)
  500. STARTED = State('Started', QUEST)
  501. COMPLETED = State('Completed', QUEST)
  502. # Quest initialization
  503. QUEST.setInitialState(CREATED)
  504. # Quest NPC starter initialization
  505. QUEST.addStartNpc(PM_COOPER)
  506. # Quest Item Drop initialization
  507. for i in [3499]+range(3816,3832):
  508. STARTING.addQuestDrop(PM_COOPER,i,1)
  509. # Quest mob initialization
  510. #back skins
  511. STARTING.addKillId(TD_LORD)
  512. #fairy stone dlx destroyers
  513. for i in range(589,600)+[719]:
  514. STARTING.addKillId(i)
  515. #eggs
  516. STARTED.addKillId(LO_LZRD_W)
  517. STARTED.addKillId(RD_SCVNGR)
  518. STARTED.addKillId(MS_SPIDER)
  519. STARTED.addKillId(DD_SEEKER)
  520. STARTED.addKillId(BO_OVERLD)
  521. # Quest NPC initialization
  522. CREATED.addTalkId(PM_COOPER)
  523. STARTING.addTalkId(PM_COOPER)
  524. STARTING.addTalkId(SG_CRONOS)
  525. STARTING.addTalkId(GD_BYRON)
  526. STARTING.addTalkId(MC_MARIA)
  527. STARTING.addTalkId(FR_MYMYU)
  528. STARTED.addTalkId(FR_MYMYU)
  529. for i in range(7748,7753):
  530. STARTED.addTalkId(i)
  531. print "importing quests: 420: Little Wings"